test parse ext. communities form openbgpd

This commit is contained in:
Annika Hannig 2022-11-17 14:34:58 +01:00
parent 11e1508a16
commit 8b4b14b7a9
3 changed files with 28 additions and 1 deletions

View File

@ -243,11 +243,13 @@ func decodeExtendedCommunities(c interface{}) api.ExtCommunities {
for _, com := range details {
tokens := strings.SplitN(com, " ", 2)
if len(tokens) != 2 {
log.Println("can not decode ext. community:", com)
continue
}
nums := decoders.IntListFromStrings(
strings.SplitN(tokens[1], ":", 2))
if len(nums) != 2 {
log.Println("can not decode ext. community:", com)
continue
}
comms = append(comms, []interface{}{tokens[0], nums[0], nums[1]})

View File

@ -76,6 +76,7 @@ func TestDecodeRoutes(t *testing.T) {
if r.BGP.ExtCommunities[1][2] != 11000 {
t.Error("unexpected community:", r.BGP.ExtCommunities[0])
}
t.Log(r.BGP.ExtCommunities)
if r.BGP.AsPath[0] != 1111 {
t.Error("unexpected as_path:", r.BGP.AsPath)
@ -93,3 +94,26 @@ func TestDecodeExtendedCommunities(t *testing.T) {
t.Fatal("unexpected result:", comms[0])
}
}
func TestDecodeMalformedExtendedCommunities(t *testing.T) {
data := []interface{}{
"0x8000000000000000",
"8000000000000000",
"rt 1239", "generic :123", "generic ro-23:123",
"generic 123123192399281398193489:asd",
"[0] 0x8000000000000000",
"[0] 0x800000000:0000000",
"foo bar:23:42",
"foo 2342:bar",
"foo 23:bar:42",
"foo",
"b 9223372036854775808",
922337203685477580,
"ro 2::42",
"generic rt a:b"}
comms := decodeExtendedCommunities(data)
t.Log(comms)
if len(comms) > 0 {
t.Error("expected empty communities")
}
}

View File

@ -25,7 +25,8 @@
],
"extended_communities": [
"[0] 11000:0",
"rt 65000:11000"
"rt 65000:11000",
"[0] 0x8000000000000000"
]
},
{