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;
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) {
*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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":true,
"destSelected":true,

View file

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

View file

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

View file

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

View file

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

View file

@ -7,7 +7,7 @@ hostname rt5
!
interface lo
ip address 5.5.5.5/32
ipv6 address ::ffff:0505:0505/128
ipv6 address ::ffff:5.5.5.5/128
!
interface eth-rt2
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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":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",
"selected":true,
"destSelected":true,

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -670,7 +670,7 @@ def test_configure_gua_on_unnumbered_intf(request):
{
"nexthops": [
{
"ip": "::ffff:a00:501",
"ip": "::ffff:10.0.5.1",
"hostname": "r1",
"afi": "ipv6",
"scope": "global",
@ -754,7 +754,7 @@ def test_configure_gua_on_unnumbered_intf(request):
assert (
result is None
), "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
)