]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Filter: Add access function for ASN for NET_ASPA
authorIgor Putovny <igor.putovny@nic.cz>
Tue, 24 Mar 2026 17:29:08 +0000 (18:29 +0100)
committerMaria Matejka <mq@ucw.cz>
Sat, 16 May 2026 15:43:53 +0000 (17:43 +0200)
Fixes: #369
filter/f-inst.c
filter/test.conf

index c0880678e4d897ba3c87dad8657ba4d1d5804ed4..872757a323287f00f2702e2d7db89e61da763847 100644 (file)
       ((net_addr_roa6 *) v1.val.net)->max_pxlen);
   ]]);
 
-  /* Get ROA ASN */
+  /* Get ROA or ASPA ASN */
   METHOD(T_NET, asn, 0, [[
-        if (!net_is_roa(v1.val.net))
-          runtime( "ROA expected" );
+    const net_addr_union *net = (void *) v1.val.net;
+    int asn = 0;
+
+    switch (net->n.type)
+    {
+    case NET_ROA4:
+      asn = net->roa4.asn;
+      break;
+
+    case NET_ROA6:
+      asn = net->roa6.asn;
+      break;
+
+    case NET_ASPA:
+      asn = net->aspa.asn;
+      break;
+
+    default:
+      runtime("ROA or ASPA expected");
+      break;
+    }
 
-        RESULT(T_INT, i, (v1.val.net->type == NET_ROA4) ?
-          ((net_addr_roa4 *) v1.val.net)->asn :
-          ((net_addr_roa6 *) v1.val.net)->asn);
+    RESULT(T_INT, i, asn);
   ]]);
 
   /* Convert prefix to IP */
index d5626f722937f03fba272a6b886b2d5d122718cd..2c2e4e643bcaa230d7e55828c19d18d6161115ab 100644 (file)
@@ -2134,6 +2134,26 @@ bt_test_suite(t_net_eth, "Testing Ethernet nets");
 
 
 
+/*
+ *     Testing ASPA nets
+ *     -----------------
+ */
+
+function t_net_aspa()
+{
+         prefix p;
+
+         p = aspa 42;
+         bt_assert(format(p) = "42");
+         bt_assert(p.type = NET_ASPA);
+         bt_assert(p.asn = 42);
+}
+
+bt_test_suite(t_net_aspa, "Testing ASPA nets");
+
+
+
+
 /*
  *     Testing EVPN nets
  *     -----------------