stop processing v6 when matching for nat64 session

This commit is contained in:
Nico Schottelius 2019-05-06 12:50:45 +02:00
parent 677e50d81b
commit 7be9c01b48
2 changed files with 23 additions and 6 deletions

View file

@ -1873,6 +1873,19 @@ libnanomsg-dev libjudy-dev
***** DONE Create ipv6 session in the controller ***** DONE Create ipv6 session in the controller
***** Create ipv4 session in the controller ***** Create ipv4 session in the controller
***** TODO Ensure translation code works ***** TODO Ensure translation code works
>>> ipaddress.IPv6Network("2001:db8:100::/96")[int(ipaddress.IPv4Address("10.0.0.1"))]
IPv6Address('2001:db8:100::a00:1')
****** DONE Status: syn sent, neighbor solicitation working, nothing received on other side
INFO:main:unhandled reassambled=<Ether dst=33:33:ff:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=0 plen=32 nh=ICMPv6 hlim=255 src=2001:db8::1 dst=ff02::1:ff00:42 |<ICMPv6ND_NS type=Neighbor Solicitation code=0 cksum=0x13a7 res=0 tgt=2001:db8::42 |<ICMPv6NDOptSrcLLAddr type=1 len=1 lladdr=00:00:0a:00:00:01 |>>>> from table TABLE_NAT64_SESSION
INFO:main:unhandled reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=667225 plen=40 nh=TCP hlim=64 src=2001:db8::1 dst=2001:db8:100::a00:1 |<TCP sport=36458 dport=2342 seq=1287954527 ack=0 dataofs=10 reserved=0 flags=S window=28320 chksum=0xdfd6 urgptr=0 options=[('MSS', 9440), ('SAckOK', ''), ('Timestamp', (795131854, 0)), ('NOP', None), ('WScale', 9)] |>>> from table TABLE_V6_NETWORKS
INFO:main:unhandled reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=667225 plen=40 nh=TCP hlim=64 src=2001:db8::1 dst=2001:db8:100::a00:1 |<TCP sport=36458 dport=2342 seq=1287954527 ack=0 dataofs=10 reserved=0 flags=S window=28320 chksum=0xdedc urgptr=0 options=[('MSS', 9440), ('SAckOK', ''), ('Timestamp', (795132104, 0)), ('NOP', None), ('WScale', 9)] |>>> from table TABLE_V6_NETWORKS
INFO:main:unhandled reassambled=<Ether dst=00:00:0a:00:00:42 src=00:00:0a:00:00:01 type=0x86dd |<IPv6 version=6 tc=0 fl=765494 plen=40 nh=TCP hlim=64 src=2001:db8::1 dst=2001:db8:100::a00:1 |<TCP sport=36458 dport=2342 seq=1287954527 ack=0 dataofs=10 reserved=0 flags=S window=28320 chksum=0xdce7 urgptr=0 options=[('MSS', 9440), ('SAckOK', ''), ('Timestamp', (795132605, 0)), ('NOP', None), ('WScale', 9)] |>>> from table TABLE_V6_NETWORKS
****** DONE action nat64_tcp_session_create is called
**** TODO tcp session **** TODO tcp session
**** TODO udp session **** TODO udp session
**** TODO tcp session **** TODO tcp session

View file

@ -499,6 +499,7 @@ Echo or Echo Reply Message
NoAction; NoAction;
} }
size = ROUTING_TABLE_SIZE; size = ROUTING_TABLE_SIZE;
default_action = controller_debug_table_id(TABLE_V6_NETWORKS); default_action = controller_debug_table_id(TABLE_V6_NETWORKS);
} }
@ -522,6 +523,11 @@ Echo or Echo Reply Message
if(hdr.ipv6.isValid()) { if(hdr.ipv6.isValid()) {
/* We hit an entry in the dynamic IPv6 range */ /* We hit an entry in the dynamic IPv6 range */
if(nat64_session.apply().hit) { if(nat64_session.apply().hit) {
if(hdr.tcp.isValid()) {
if(nat64_tcp_session.apply().hit) {
meta.chk_tcp_v4 = 1;
}
}
// if(hdr.icmp6.isValid()) { // if(hdr.icmp6.isValid()) {
// /* If this is not a hit => will escalate to controller // /* If this is not a hit => will escalate to controller
// * If this is a hit, it has a mapping */ // * If this is a hit, it has a mapping */
@ -531,11 +537,9 @@ Echo or Echo Reply Message
// nat64_udp_session.apply(); // nat64_udp_session.apply();
// meta.chk_udp_v4 = 1; // meta.chk_udp_v4 = 1;
// } // }
if(hdr.tcp.isValid()) {
if(nat64_tcp_session.apply().hit) {
meta.chk_tcp_v4 = 1; exit; /* no further v6 processing */
}
}
} }
if(nat64.apply().hit) { /* generic / static nat64 done */ if(nat64.apply().hit) { /* generic / static nat64 done */