X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Froute.c;h=92dc1cd0a6755a62cc067821c157a3516dff3d4a;hb=bdeba3f9c26f9225c17c097ca490dc651cd40b90;hp=a130e690d50f2b6cf14ef95160330c2592afe97e;hpb=f6e87ab476a0faf8b124ecaaa27f967d825e6457;p=tinc diff --git a/src/route.c b/src/route.c index a130e690..92dc1cd0 100644 --- a/src/route.c +++ b/src/route.c @@ -406,6 +406,15 @@ static void clamp_mss(const node_t *source, const node_t *via, vpn_packet_t *pac type = DATA(packet)[16] << 8 | DATA(packet)[17]; } + /* IP in IP (RFC 2003) packet */ + if(type == ETH_P_IP && DATA(packet)[start + 9] == 4) { + start += 20; + } + + if(packet->len <= start + 20) { + return; + } + if(type == ETH_P_IP && DATA(packet)[start + 9] == 6) { start += (DATA(packet)[start] & 0xf) * 4; } else if(type == ETH_P_IPV6 && DATA(packet)[start + 6] == 6) {