lib, test: fix display ipv4 mapped ipv6 addresses

Display ipv4 mapped ipv6 addresses in the format ::ffff:A.B.C.D.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
Louis Scalbert 2024-07-22 16:15:26 +02:00
parent 40dce0be6a
commit 84ab0213fc
21 changed files with 91 additions and 80 deletions

View file

@ -116,7 +116,18 @@ inet4:
best = i - curlen; best = i - curlen;
bestlen = curlen; bestlen = curlen;
} }
/* do we want ::ffff:A.B.C.D? */ if (best == 0 && bestlen == 5 && b[10] == 0xff && b[11] == 0xff) {
/* ::ffff:A.B.C.D */
*o++ = ':';
*o++ = ':';
*o++ = 'f';
*o++ = 'f';
*o++ = 'f';
*o++ = 'f';
*o++ = ':';
b += 12;
goto inet4;
}
if (best == 0 && bestlen == 6) { if (best == 0 && bestlen == 6) {
*o++ = ':'; *o++ = ':';
*o++ = ':'; *o++ = ':';

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis", "protocol":"isis",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -10,7 +10,7 @@ hostname rt1
! !
interface lo interface lo
ip address 1.1.1.1/32 ip address 1.1.1.1/32
ipv6 address ::ffff:0101:0101/128 ipv6 address ::ffff:1.1.1.1/128
! !
interface eth-rt2 interface eth-rt2
ip address 10.0.1.1/24 ip address 10.0.1.1/24

View file

@ -7,7 +7,7 @@ hostname rt2
! !
interface lo interface lo
ip address 2.2.2.2/32 ip address 2.2.2.2/32
ipv6 address ::ffff:0202:0202/128 ipv6 address ::ffff:2.2.2.2/128
! !
interface eth-rt1 interface eth-rt1
ip address 10.0.1.2/24 ip address 10.0.1.2/24

View file

@ -7,7 +7,7 @@ hostname rt3
! !
interface lo interface lo
ip address 3.3.3.3/32 ip address 3.3.3.3/32
ipv6 address ::ffff:0303:0303/128 ipv6 address ::ffff:3.3.3.3/128
! !
interface eth-rt1 interface eth-rt1
ip address 10.0.2.2/24 ip address 10.0.2.2/24

View file

@ -7,7 +7,7 @@ hostname rt4
! !
interface lo interface lo
ip address 4.4.4.4/32 ip address 4.4.4.4/32
ipv6 address ::ffff:0404:0404/128 ipv6 address ::ffff:4.4.4.4/128
! !
interface eth-rt3 interface eth-rt3
ip address 10.0.4.2/24 ip address 10.0.4.2/24

View file

@ -7,7 +7,7 @@ hostname rt5
! !
interface lo interface lo
ip address 5.5.5.5/32 ip address 5.5.5.5/32
ipv6 address ::ffff:0505:0505/128 ipv6 address ::ffff:5.5.5.5/128
! !
interface eth-rt2 interface eth-rt2
ip address 10.0.3.2/24 ip address 10.0.3.2/24

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -1,7 +1,7 @@
{ {
"::ffff:202:202\/128":[ "::ffff:2.2.2.2\/128":[
{ {
"prefix":"::ffff:202:202\/128", "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -16,9 +16,9 @@
] ]
} }
], ],
"::ffff:303:303\/128":[ "::ffff:3.3.3.3\/128":[
{ {
"prefix":"::ffff:303:303\/128", "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -33,9 +33,9 @@
] ]
} }
], ],
"::ffff:404:404\/128":[ "::ffff:4.4.4.4\/128":[
{ {
"prefix":"::ffff:404:404\/128", "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,
@ -50,9 +50,9 @@
] ]
} }
], ],
"::ffff:505:505\/128":[ "::ffff:5.5.5.5\/128":[
{ {
"prefix":"::ffff:505:505\/128", "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6", "protocol":"ospf6",
"selected":true, "selected":true,
"destSelected":true, "destSelected":true,

View file

@ -10,7 +10,7 @@ hostname rt1
! !
interface lo interface lo
ip address 1.1.1.1/32 ip address 1.1.1.1/32
ipv6 address ::ffff:0101:0101/128 ipv6 address ::ffff:1.1.1.1/128
! !
interface eth-rt2 interface eth-rt2
ip address 10.0.1.1/24 ip address 10.0.1.1/24

View file

@ -7,7 +7,7 @@ hostname rt2
! !
interface lo interface lo
ip address 2.2.2.2/32 ip address 2.2.2.2/32
ipv6 address ::ffff:0202:0202/128 ipv6 address ::ffff:2.2.2.2/128
! !
interface eth-rt1 interface eth-rt1
ip address 10.0.1.2/24 ip address 10.0.1.2/24

View file

@ -7,7 +7,7 @@ hostname rt3
! !
interface lo interface lo
ip address 3.3.3.3/32 ip address 3.3.3.3/32
ipv6 address ::ffff:0303:0303/128 ipv6 address ::ffff:3.3.3.3/128
! !
interface eth-rt1 interface eth-rt1
ip address 10.0.2.2/24 ip address 10.0.2.2/24

View file

@ -7,7 +7,7 @@ hostname rt4
! !
interface lo interface lo
ip address 4.4.4.4/32 ip address 4.4.4.4/32
ipv6 address ::ffff:0404:0404/128 ipv6 address ::ffff:4.4.4.4/128
! !
interface eth-rt3 interface eth-rt3
ip address 10.0.4.2/24 ip address 10.0.4.2/24

View file

@ -7,7 +7,7 @@ hostname rt5
! !
interface lo interface lo
ip address 5.5.5.5/32 ip address 5.5.5.5/32
ipv6 address ::ffff:0505:0505/128 ipv6 address ::ffff:5.5.5.5/128
! !
interface eth-rt2 interface eth-rt2
ip address 10.0.3.2/24 ip address 10.0.3.2/24

View file

@ -210,7 +210,7 @@ def test_protocols_convergence():
"vrfName": "r1-vrf-101", "vrfName": "r1-vrf-101",
"nexthops": [ "nexthops": [
{ {
"ip": "::ffff:c0a8:6429", "ip": "::ffff:192.168.100.41",
} }
], ],
} }
@ -227,8 +227,8 @@ def test_protocols_convergence():
"192.168.100.41": { "192.168.100.41": {
"nexthopIp": "192.168.100.41", "nexthopIp": "192.168.100.41",
}, },
"::ffff:c0a8:6429": { "::ffff:192.168.100.41": {
"nexthopIp": "::ffff:c0a8:6429", "nexthopIp": "::ffff:192.168.100.41",
}, },
} }
} }

View file

@ -670,7 +670,7 @@ def test_configure_gua_on_unnumbered_intf(request):
{ {
"nexthops": [ "nexthops": [
{ {
"ip": "::ffff:a00:501", "ip": "::ffff:10.0.5.1",
"hostname": "r1", "hostname": "r1",
"afi": "ipv6", "afi": "ipv6",
"scope": "global", "scope": "global",
@ -754,7 +754,7 @@ def test_configure_gua_on_unnumbered_intf(request):
assert ( assert (
result is None result is None
), "Testcase {} : Failed \n Error: Nexthop for prefix 11.0.20.1 \ ), "Testcase {} : Failed \n Error: Nexthop for prefix 11.0.20.1 \
is not ::ffff:a00:501".format( is not ::ffff:10.0.5.1".format(
tc_name tc_name
) )