Treat a path with AS 0 anywhere as a withdrawal (closes #141)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
An AS path that holds AS 0 anywhere, a member of an AS set included, now decodes as an empty path. RFC 7607 makes such a path malformed and its announcements withdrawals. An empty path already gets that handling: the prefix handler deletes the peer's route for the prefix, and the AS and peering handlers record nothing from it. Before, a path such as [64496, 0, 64497] stored the route with origin AS64497, recorded both ASes, and recorded the peerings between the path's other ASes. Model: opus-5-5
This commit was merged in pull request #146.
This commit is contained in:
@@ -381,11 +381,12 @@ func TestPrefixHandlerDoesNotStoreAnAnnouncementWithAnEmptyPath(t *testing.T) {
|
||||
// TestPrefixHandlerRemovesTheRouteOnAnAnnouncementWithoutAnOrigin runs, through
|
||||
// the prefix handler into a real database, a peer's announcement of a prefix
|
||||
// with origin AS testASNB and then the peer's announcement of the prefix with
|
||||
// an AS path that gives no origin: one whose last AS is 0, or an empty one. As
|
||||
// any later announcement from the peer does, the second replaces the peer's
|
||||
// route, here with none, whether it comes in a later batch or follows a
|
||||
// withdrawal in one batch. The in-memory route count and prefix distribution
|
||||
// must match the route table.
|
||||
// an AS path that gives no origin: one whose last AS is 0, an empty one, or one
|
||||
// that holds AS 0 before its end, which decodes as an empty path. As any later
|
||||
// announcement from the peer does, the second replaces the peer's route, here
|
||||
// with none, whether it comes in a later batch or follows a withdrawal in one
|
||||
// batch. The in-memory route count and prefix distribution must match the
|
||||
// route table.
|
||||
func TestPrefixHandlerRemovesTheRouteOnAnAnnouncementWithoutAnOrigin(
|
||||
t *testing.T,
|
||||
) {
|
||||
@@ -421,6 +422,12 @@ func TestPrefixHandlerRemovesTheRouteOnAnAnnouncementWithoutAnOrigin(
|
||||
name: "an empty path",
|
||||
batch: []*ristypes.RISMessage{noOrigin(ristypes.ASPath{})},
|
||||
},
|
||||
{
|
||||
name: "a path with AS 0 before its end",
|
||||
batch: []*ristypes.RISMessage{
|
||||
noOrigin(decodePath(t, testASNA, 0, testASNB)),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "a withdrawal and then a path whose last AS is 0",
|
||||
batch: []*ristypes.RISMessage{withdrawal, noOrigin(endsInZero)},
|
||||
|
||||
Reference in New Issue
Block a user