neels has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-upf/+/31483 )

Change subject: tunmap: ensure assigned chain_id is unused
......................................................................

tunmap: ensure assigned chain_id is unused

When handing out a chain_id, make sure it is not in use yet.

So far picking a chain_id was of PoC grade quality. As osmo-upf is
approaching production grade, make this waterproof.

So far with inefficient iteration of all sessions; faster lookup follows
in I36a75ec4698cd83558185c1f202400eb53ae8ff6.

Related: OS#5900
Change-Id: I139b46de0bd15185a7a06109d55f7c759755ec81
---
M include/osmocom/upf/upf.h
M src/osmo-upf/upf.c
M src/osmo-upf/upf_nft.c
M tests/unique_ids/unique_ids_test.c
M tests/unique_ids/unique_ids_test.err
5 files changed, 141 insertions(+), 71 deletions(-)

Approvals:
  laforge: Looks good to me, approved
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified




diff --git a/include/osmocom/upf/upf.h b/include/osmocom/upf/upf.h
index c1dc39a..db73c1f 100644
--- a/include/osmocom/upf/upf.h
+++ b/include/osmocom/upf/upf.h
@@ -141,3 +141,4 @@
 void upf_gtp_devs_close();

 uint32_t upf_next_local_teid(void);
+uint32_t upf_next_chain_id(void);
diff --git a/src/osmo-upf/upf.c b/src/osmo-upf/upf.c
index 41f6f62..3d00cc2 100644
--- a/src/osmo-upf/upf.c
+++ b/src/osmo-upf/upf.c
@@ -31,6 +31,7 @@
 #include <osmocom/upf/up_endpoint.h>
 #include <osmocom/upf/up_peer.h>
 #include <osmocom/upf/up_session.h>
+#include <osmocom/upf/up_gtp_action.h>
 #include <osmocom/upf/upf_gtp.h>

 struct g_upf *g_upf = NULL;
@@ -150,3 +151,54 @@
        }
        return 0;
 }
+
+static uint32_t upf_next_chain_id_inc(void)
+{
+       g_upf->tunmap.next_chain_id_state++;
+       if (!g_upf->tunmap.next_chain_id_state)
+               g_upf->tunmap.next_chain_id_state++;
+       return g_upf->tunmap.next_chain_id_state;
+}
+
+/* Return an unused chain_id, or 0 if none is found with sane effort. */
+uint32_t upf_next_chain_id(void)
+{
+       uint32_t sanity;
+
+       /* Make sure the new chain_id is not used anywhere */
+       for (sanity = 2342; sanity; sanity--) {
+               struct up_peer *peer;
+               uint32_t chain_id = upf_next_chain_id_inc();
+               bool taken = false;
+
+               if (!g_upf->pfcp.ep)
+                       return chain_id;
+
+               llist_for_each_entry(peer, &g_upf->pfcp.ep->peers, entry) {
+                       struct up_session *session;
+                       int bkt;
+                       hash_for_each(peer->sessions_by_up_seid, bkt, session, 
node_by_up_seid) {
+                               struct up_gtp_action *a;
+                               llist_for_each_entry(a, 
&session->active_gtp_actions, entry) {
+                                       if (a->kind != UP_GTP_U_TUNMAP)
+                                               continue;
+                                       if (a->tunmap.access.chain_id == 
chain_id
+                                           || a->tunmap.core.chain_id == 
chain_id) {
+                                               taken = true;
+                                               break;
+                                       }
+                               }
+                               if (taken)
+                                       break;
+                       }
+                       if (taken)
+                               break;
+               }
+
+               if (!taken)
+                       return chain_id;
+       }
+
+       /* finding a chain_id became insane, return invalid = 0 */
+       return 0;
+}
diff --git a/src/osmo-upf/upf_nft.c b/src/osmo-upf/upf_nft.c
index e91443b..4401f1e 100644
--- a/src/osmo-upf/upf_nft.c
+++ b/src/osmo-upf/upf_nft.c
@@ -343,23 +343,9 @@
                                         g_upf->tunmap.priority_post);
 }

-static uint32_t chain_id_next(void)
-{
-       g_upf->tunmap.next_chain_id_state++;
-       if (!g_upf->tunmap.next_chain_id_state)
-               g_upf->tunmap.next_chain_id_state++;
-       return g_upf->tunmap.next_chain_id_state;
-}
-
 char *upf_nft_tunmap_get_ruleset_str(void *ctx, struct upf_tunmap *tunmap)
 {
        struct upf_nft_args args;
-
-       if (!tunmap->access.chain_id)
-               tunmap->access.chain_id = chain_id_next();
-       if (!tunmap->core.chain_id)
-               tunmap->core.chain_id = chain_id_next();
-
        upf_nft_args_from_tunmap(&args, tunmap);
        return upf_nft_ruleset_tunmap_create_c(ctx, &args);
 }
@@ -371,8 +357,21 @@
        return upf_nft_ruleset_tunmap_delete_c(ctx, &args);
 }

+static int upf_nft_tunmap_ensure_chain_id(struct upf_nft_tun *tun)
+{
+       if (tun->chain_id)
+               return 0;
+       tun->chain_id = upf_next_chain_id();
+       if (!tun->chain_id)
+               return -ENOSPC;
+       return 0;
+}
+
 int upf_nft_tunmap_create(struct upf_tunmap *tunmap)
 {
+       if (upf_nft_tunmap_ensure_chain_id(&tunmap->access)
+           || upf_nft_tunmap_ensure_chain_id(&tunmap->core))
+               return -ENOSPC;
        return upf_nft_run(upf_nft_tunmap_get_ruleset_str(OTC_SELECT, tunmap));
 }

diff --git a/tests/unique_ids/unique_ids_test.c 
b/tests/unique_ids/unique_ids_test.c
index 52cd9e8..2120ab4 100644
--- a/tests/unique_ids/unique_ids_test.c
+++ b/tests/unique_ids/unique_ids_test.c
@@ -349,8 +349,8 @@
        log_assert(a->kind == UP_GTP_U_TUNMAP);
        log_assert(a->tunmap.core.tun.local.teid == 3);
        log_assert(a->tunmap.access.tun.local.teid == 4);
-       log_assert_expect_failure(a->tunmap.access.chain_id == 3);
-       log_assert_expect_failure(a->tunmap.core.chain_id == 4);
+       log_assert(a->tunmap.access.chain_id == 3);
+       log_assert(a->tunmap.core.chain_id == 4);
        log("\n");

        log("drop first tunmap (%s)\n", s1->fi->name);
@@ -387,8 +387,8 @@
        log_assert(a->kind == UP_GTP_U_TUNMAP);
        log_assert(a->tunmap.core.tun.local.teid == 5);
        log_assert(a->tunmap.access.tun.local.teid == 6);
-       log_assert_expect_failure(a->tunmap.access.chain_id == 5);
-       log_assert_expect_failure(a->tunmap.core.chain_id == 6);
+       log_assert(a->tunmap.access.chain_id == 5);
+       log_assert(a->tunmap.core.chain_id == 6);
        log("\n");

        cleanup();
diff --git a/tests/unique_ids/unique_ids_test.err 
b/tests/unique_ids/unique_ids_test.err
index dfd57ef..f9ea23a 100644
--- a/tests/unique_ids/unique_ids_test.err
+++ b/tests/unique_ids/unique_ids_test.err
@@ -125,21 +125,21 @@
 DSESSION DEBUG up_session(1-2-3-4-0x2){INIT}: enabling: GTP:tunmap 
GTP-access-r:5.6.7.8 TEID-access-r:0x102 GTP-access-l:1.1.1.1 TEID-access-l:0x4 
GTP-core-r:13.14.15.16 TEID-core-r:0x103 GTP-core-l:1.1.1.1 TEID-core-l:0x3 
PFCP-peer:1.2.3.4 SEID-l:0x2 PDR-access:2 PDR-core:1

 [test override] nft_run_cmd_from_buffer():
-add chain inet osmo-upf tunmap-pre-1;
-add rule inet osmo-upf tunmap-pre-1 ip daddr set 13.14.15.16 meta mark set 1 
counter accept;
-add chain inet osmo-upf tunmap-post-1;
-add rule inet osmo-upf tunmap-post-1 ip saddr set 1.1.1.1 @ih,32,32 set 0x103 
counter accept;
-add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x4 : jump tunmap-pre-1 };
-add element inet osmo-upf tunmap-post { 1 : jump tunmap-post-1 };
-add chain inet osmo-upf tunmap-pre-2;
-add rule inet osmo-upf tunmap-pre-2 ip daddr set 5.6.7.8 meta mark set 2 
counter accept;
-add chain inet osmo-upf tunmap-post-2;
-add rule inet osmo-upf tunmap-post-2 ip saddr set 1.1.1.1 @ih,32,32 set 0x102 
counter accept;
-add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x3 : jump tunmap-pre-2 };
-add element inet osmo-upf tunmap-post { 2 : jump tunmap-post-2 };
+add chain inet osmo-upf tunmap-pre-3;
+add rule inet osmo-upf tunmap-pre-3 ip daddr set 13.14.15.16 meta mark set 3 
counter accept;
+add chain inet osmo-upf tunmap-post-3;
+add rule inet osmo-upf tunmap-post-3 ip saddr set 1.1.1.1 @ih,32,32 set 0x103 
counter accept;
+add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x4 : jump tunmap-pre-3 };
+add element inet osmo-upf tunmap-post { 3 : jump tunmap-post-3 };
+add chain inet osmo-upf tunmap-pre-4;
+add rule inet osmo-upf tunmap-pre-4 ip daddr set 5.6.7.8 meta mark set 4 
counter accept;
+add chain inet osmo-upf tunmap-post-4;
+add rule inet osmo-upf tunmap-post-4 ip saddr set 1.1.1.1 @ih,32,32 set 0x102 
counter accept;
+add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x3 : jump tunmap-pre-4 };
+add element inet osmo-upf tunmap-post { 4 : jump tunmap-post-4 };

-DNFT DEBUG run nft ruleset: "add chain inet osmo-upf tunmap-pre-1;\nadd rule 
inet osmo-upf tunmap-pre-1 ip daddr set 13.14.15.16 meta mark set 1 counter 
accept;\nadd chain inet osmo-upf tunmap-post-1;\nadd rule inet osmo-upf 
tunmap-post-1 ip saddr set 1.1.1.1 @ih,32,32 set 0x103 counter accept;\nadd 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x4 : jump tunmap-pre-1 };\nadd 
element inet osmo-upf tunmap-post { 1 : jump tunmap-post-1 };\nadd chain inet 
osmo-upf tunmap-pre-2;\nadd rule inet osmo-upf tunmap-pre-2 ip daddr set 
5.6.7.8 meta mark set 2 counter accept;\nadd chain inet osmo-upf 
tunmap-post-2;\nadd rule inet osmo-upf tunmap-post-2 ip saddr set 1.1.1.1 
@ih,32,32 set 0x102 counter accept;\nadd element inet osmo-upf tunmap-pre { 
1.1.1.1 . 0x3 : jump tunmap-pre-2 };\nadd element inet osmo-upf tunmap-post { 2 
: jump tunmap-post-2 };\n"
-DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x102 
GTP-access-l:1.1.1.1 TEID-access-l:0x4 GTP-core-r:13.14.15.16 TEID-core-r:0x103 
GTP-core-l:1.1.1.1 TEID-core-l:0x3 PFCP-peer:1.2.3.4 SEID-l:0x2 PDR-access:2 
PDR-core:1: Enabled tunmap, nft chain IDs: access--1-> <-2--core
+DNFT DEBUG run nft ruleset: "add chain inet osmo-upf tunmap-pre-3;\nadd rule 
inet osmo-upf tunmap-pre-3 ip daddr set 13.14.15.16 meta mark set 3 counter 
accept;\nadd chain inet osmo-upf tunmap-post-3;\nadd rule inet osmo-upf 
tunmap-post-3 ip saddr set 1.1.1.1 @ih,32,32 set 0x103 counter accept;\nadd 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x4 : jump tunmap-pre-3 };\nadd 
element inet osmo-upf tunmap-post { 3 : jump tunmap-post-3 };\nadd chain inet 
osmo-upf tunmap-pre-4;\nadd rule inet osmo-upf tunmap-pre-4 ip daddr set 
5.6.7.8 meta mark set 4 counter accept;\nadd chain inet osmo-upf 
tunmap-post-4;\nadd rule inet osmo-upf tunmap-post-4 ip saddr set 1.1.1.1 
@ih,32,32 set 0x102 counter accept;\nadd element inet osmo-upf tunmap-pre { 
1.1.1.1 . 0x3 : jump tunmap-pre-4 };\nadd element inet osmo-upf tunmap-post { 4 
: jump tunmap-post-4 };\n"
+DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x102 
GTP-access-l:1.1.1.1 TEID-access-l:0x4 GTP-core-r:13.14.15.16 TEID-core-r:0x103 
GTP-core-l:1.1.1.1 TEID-core-l:0x3 PFCP-peer:1.2.3.4 SEID-l:0x2 PDR-access:2 
PDR-core:1: Enabled tunmap, nft chain IDs: access--3-> <-4--core

 [test override] PFCP tx:
 PFCPv1 SESSION_EST_RESP hdr={seq=0 SEID=0x101} ies={ 'Node ID'=v4:unsupported 
family 0 'Cause'=Request accepted (success) 'F-SEID'=0x2,v4:1.1.1.1 'Created 
PDR'={ { 'PDR ID'=1 'F-TEID'=TEID-0x3,v4:1.1.1.1 }, { 'PDR ID'=2 
'F-TEID'=TEID-0x4,v4:1.1.1.1 } } }
@@ -158,15 +158,15 @@
  state:
  | peer up_peer(1-2-3-4) ASSOCIATED
  |  session[ESTABLISHED]: UP-SEID 0x1; chain_id access=1 core=2; local TEID 
access=0x2 core=0x1
- |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=1 core=2; local TEID 
access=0x4 core=0x3
+ |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=3 core=4; local TEID 
access=0x4 core=0x3

 assert(s2->up_seid == 2)
 assert(a = llist_first_entry_or_null(&s2->active_gtp_actions, struct 
up_gtp_action, entry))
 assert(a->kind == UP_GTP_U_TUNMAP)
 assert(a->tunmap.core.tun.local.teid == 3)
 assert(a->tunmap.access.tun.local.teid == 4)
-assert(a->tunmap.access.chain_id == 3) <-- EXPECTED TO FAIL (known error)
-assert(a->tunmap.core.chain_id == 4) <-- EXPECTED TO FAIL (known error)
+assert(a->tunmap.access.chain_id == 3)
+assert(a->tunmap.core.chain_id == 4)

 drop first tunmap (up_session(1-2-3-4-0x1))
 assert(session)
@@ -206,7 +206,7 @@

  state:
  | peer up_peer(1-2-3-4) ASSOCIATED
- |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=1 core=2; local TEID 
access=0x4 core=0x3
+ |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=3 core=4; local TEID 
access=0x4 core=0x3

 assert(up_session_find_by_up_seid(peer, s1_up_seid) == NULL)

@@ -266,7 +266,7 @@
  state:
  | peer up_peer(1-2-3-4) ASSOCIATED
  |  session[ESTABLISHED]: UP-SEID 0x1; chain_id access=1 core=2; local TEID 
access=0x2 core=0x1
- |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=1 core=2; local TEID 
access=0x4 core=0x3
+ |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=3 core=4; local TEID 
access=0x4 core=0x3

 assert(s3->up_seid == 1)
 assert(a = llist_first_entry_or_null(&s3->active_gtp_actions, struct 
up_gtp_action, entry))
@@ -298,21 +298,21 @@
 DSESSION DEBUG up_session(1-2-3-4-0x3){INIT}: enabling: GTP:tunmap 
GTP-access-r:5.6.7.8 TEID-access-r:0x106 GTP-access-l:1.1.1.1 TEID-access-l:0x6 
GTP-core-r:13.14.15.16 TEID-core-r:0x107 GTP-core-l:1.1.1.1 TEID-core-l:0x5 
PFCP-peer:1.2.3.4 SEID-l:0x3 PDR-access:2 PDR-core:1

 [test override] nft_run_cmd_from_buffer():
-add chain inet osmo-upf tunmap-pre-3;
-add rule inet osmo-upf tunmap-pre-3 ip daddr set 13.14.15.16 meta mark set 3 
counter accept;
-add chain inet osmo-upf tunmap-post-3;
-add rule inet osmo-upf tunmap-post-3 ip saddr set 1.1.1.1 @ih,32,32 set 0x107 
counter accept;
-add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x6 : jump tunmap-pre-3 };
-add element inet osmo-upf tunmap-post { 3 : jump tunmap-post-3 };
-add chain inet osmo-upf tunmap-pre-4;
-add rule inet osmo-upf tunmap-pre-4 ip daddr set 5.6.7.8 meta mark set 4 
counter accept;
-add chain inet osmo-upf tunmap-post-4;
-add rule inet osmo-upf tunmap-post-4 ip saddr set 1.1.1.1 @ih,32,32 set 0x106 
counter accept;
-add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x5 : jump tunmap-pre-4 };
-add element inet osmo-upf tunmap-post { 4 : jump tunmap-post-4 };
+add chain inet osmo-upf tunmap-pre-5;
+add rule inet osmo-upf tunmap-pre-5 ip daddr set 13.14.15.16 meta mark set 5 
counter accept;
+add chain inet osmo-upf tunmap-post-5;
+add rule inet osmo-upf tunmap-post-5 ip saddr set 1.1.1.1 @ih,32,32 set 0x107 
counter accept;
+add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x6 : jump tunmap-pre-5 };
+add element inet osmo-upf tunmap-post { 5 : jump tunmap-post-5 };
+add chain inet osmo-upf tunmap-pre-6;
+add rule inet osmo-upf tunmap-pre-6 ip daddr set 5.6.7.8 meta mark set 6 
counter accept;
+add chain inet osmo-upf tunmap-post-6;
+add rule inet osmo-upf tunmap-post-6 ip saddr set 1.1.1.1 @ih,32,32 set 0x106 
counter accept;
+add element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x5 : jump tunmap-pre-6 };
+add element inet osmo-upf tunmap-post { 6 : jump tunmap-post-6 };

-DNFT DEBUG run nft ruleset: "add chain inet osmo-upf tunmap-pre-3;\nadd rule 
inet osmo-upf tunmap-pre-3 ip daddr set 13.14.15.16 meta mark set 3 counter 
accept;\nadd chain inet osmo-upf tunmap-post-3;\nadd rule inet osmo-upf 
tunmap-post-3 ip saddr set 1.1.1.1 @ih,32,32 set 0x107 counter accept;\nadd 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x6 : jump tunmap-pre-3 };\nadd 
element inet osmo-upf tunmap-post { 3 : jump tunmap-post-3 };\nadd chain inet 
osmo-upf tunmap-pre-4;\nadd rule inet osmo-upf tunmap-pre-4 ip daddr set 
5.6.7.8 meta mark set 4 counter accept;\nadd chain inet osmo-upf 
tunmap-post-4;\nadd rule inet osmo-upf tunmap-post-4 ip saddr set 1.1.1.1 
@ih,32,32 set 0x106 counter accept;\nadd element inet osmo-upf tunmap-pre { 
1.1.1.1 . 0x5 : jump tunmap-pre-4 };\nadd element inet osmo-upf tunmap-post { 4 
: jump tunmap-post-4 };\n"
-DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x106 
GTP-access-l:1.1.1.1 TEID-access-l:0x6 GTP-core-r:13.14.15.16 TEID-core-r:0x107 
GTP-core-l:1.1.1.1 TEID-core-l:0x5 PFCP-peer:1.2.3.4 SEID-l:0x3 PDR-access:2 
PDR-core:1: Enabled tunmap, nft chain IDs: access--3-> <-4--core
+DNFT DEBUG run nft ruleset: "add chain inet osmo-upf tunmap-pre-5;\nadd rule 
inet osmo-upf tunmap-pre-5 ip daddr set 13.14.15.16 meta mark set 5 counter 
accept;\nadd chain inet osmo-upf tunmap-post-5;\nadd rule inet osmo-upf 
tunmap-post-5 ip saddr set 1.1.1.1 @ih,32,32 set 0x107 counter accept;\nadd 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x6 : jump tunmap-pre-5 };\nadd 
element inet osmo-upf tunmap-post { 5 : jump tunmap-post-5 };\nadd chain inet 
osmo-upf tunmap-pre-6;\nadd rule inet osmo-upf tunmap-pre-6 ip daddr set 
5.6.7.8 meta mark set 6 counter accept;\nadd chain inet osmo-upf 
tunmap-post-6;\nadd rule inet osmo-upf tunmap-post-6 ip saddr set 1.1.1.1 
@ih,32,32 set 0x106 counter accept;\nadd element inet osmo-upf tunmap-pre { 
1.1.1.1 . 0x5 : jump tunmap-pre-6 };\nadd element inet osmo-upf tunmap-post { 6 
: jump tunmap-post-6 };\n"
+DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x106 
GTP-access-l:1.1.1.1 TEID-access-l:0x6 GTP-core-r:13.14.15.16 TEID-core-r:0x107 
GTP-core-l:1.1.1.1 TEID-core-l:0x5 PFCP-peer:1.2.3.4 SEID-l:0x3 PDR-access:2 
PDR-core:1: Enabled tunmap, nft chain IDs: access--5-> <-6--core

 [test override] PFCP tx:
 PFCPv1 SESSION_EST_RESP hdr={seq=0 SEID=0x103} ies={ 'Node ID'=v4:unsupported 
family 0 'Cause'=Request accepted (success) 'F-SEID'=0x3,v4:1.1.1.1 'Created 
PDR'={ { 'PDR ID'=1 'F-TEID'=TEID-0x5,v4:1.1.1.1 }, { 'PDR ID'=2 
'F-TEID'=TEID-0x6,v4:1.1.1.1 } } }
@@ -330,17 +330,17 @@

  state:
  | peer up_peer(1-2-3-4) ASSOCIATED
- |  session[ESTABLISHED]: UP-SEID 0x3; chain_id access=3 core=4; local TEID 
access=0x6 core=0x5
+ |  session[ESTABLISHED]: UP-SEID 0x3; chain_id access=5 core=6; local TEID 
access=0x6 core=0x5
  |  session[ESTABLISHED]: UP-SEID 0x1; chain_id access=1 core=2; local TEID 
access=0x2 core=0x1
- |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=1 core=2; local TEID 
access=0x4 core=0x3
+ |  session[ESTABLISHED]: UP-SEID 0x2; chain_id access=3 core=4; local TEID 
access=0x4 core=0x3

 assert(s4->up_seid == 3)
 assert(a = llist_first_entry_or_null(&s4->active_gtp_actions, struct 
up_gtp_action, entry))
 assert(a->kind == UP_GTP_U_TUNMAP)
 assert(a->tunmap.core.tun.local.teid == 5)
 assert(a->tunmap.access.tun.local.teid == 6)
-assert(a->tunmap.access.chain_id == 5) <-- EXPECTED TO FAIL (known error)
-assert(a->tunmap.core.chain_id == 6) <-- EXPECTED TO FAIL (known error)
+assert(a->tunmap.access.chain_id == 5)
+assert(a->tunmap.core.chain_id == 6)

 DPEER DEBUG up_peer(1-2-3-4){ASSOCIATED}: Terminating (cause = 
OSMO_FSM_TERM_REGULAR)
 DSESSION DEBUG up_session(1-2-3-4-0x3){ESTABLISHED}: Terminating (cause = 
OSMO_FSM_TERM_PARENT)
@@ -351,16 +351,16 @@

 [test override] nft_run_cmd_from_buffer():
 delete element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x6 };
-delete element inet osmo-upf tunmap-post { 3 };
-delete chain inet osmo-upf tunmap-pre-3;
-delete chain inet osmo-upf tunmap-post-3;
+delete element inet osmo-upf tunmap-post { 5 };
+delete chain inet osmo-upf tunmap-pre-5;
+delete chain inet osmo-upf tunmap-post-5;
 delete element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x5 };
-delete element inet osmo-upf tunmap-post { 4 };
-delete chain inet osmo-upf tunmap-pre-4;
-delete chain inet osmo-upf tunmap-post-4;
+delete element inet osmo-upf tunmap-post { 6 };
+delete chain inet osmo-upf tunmap-pre-6;
+delete chain inet osmo-upf tunmap-post-6;

-DNFT DEBUG run nft ruleset: "delete element inet osmo-upf tunmap-pre { 1.1.1.1 
. 0x6 };\ndelete element inet osmo-upf tunmap-post { 3 };\ndelete chain inet 
osmo-upf tunmap-pre-3;\ndelete chain inet osmo-upf tunmap-post-3;\ndelete 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x5 };\ndelete element inet 
osmo-upf tunmap-post { 4 };\ndelete chain inet osmo-upf tunmap-pre-4;\ndelete 
chain inet osmo-upf tunmap-post-4;\n"
-DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x106 
GTP-access-l:1.1.1.1 TEID-access-l:0x6 GTP-core-r:13.14.15.16 TEID-core-r:0x107 
GTP-core-l:1.1.1.1 TEID-core-l:0x5 PFCP-peer:1.2.3.4 SEID-l:0x3 PDR-access:2 
PDR-core:1: Disabled tunmap, nft chain IDs: access--3-> <-4--core
+DNFT DEBUG run nft ruleset: "delete element inet osmo-upf tunmap-pre { 1.1.1.1 
. 0x6 };\ndelete element inet osmo-upf tunmap-post { 5 };\ndelete chain inet 
osmo-upf tunmap-pre-5;\ndelete chain inet osmo-upf tunmap-post-5;\ndelete 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x5 };\ndelete element inet 
osmo-upf tunmap-post { 6 };\ndelete chain inet osmo-upf tunmap-pre-6;\ndelete 
chain inet osmo-upf tunmap-post-6;\n"
+DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x106 
GTP-access-l:1.1.1.1 TEID-access-l:0x6 GTP-core-r:13.14.15.16 TEID-core-r:0x107 
GTP-core-l:1.1.1.1 TEID-core-l:0x5 PFCP-peer:1.2.3.4 SEID-l:0x3 PDR-access:2 
PDR-core:1: Disabled tunmap, nft chain IDs: access--5-> <-6--core
 DSESSION DEBUG up_session(1-2-3-4-0x3){ESTABLISHED}: Freeing instance
 DSESSION DEBUG up_session(1-2-3-4-0x3){ESTABLISHED}: Deallocated
 DSESSION DEBUG up_session(1-2-3-4-0x1){ESTABLISHED}: Terminating (cause = 
OSMO_FSM_TERM_PARENT)
@@ -391,16 +391,16 @@

 [test override] nft_run_cmd_from_buffer():
 delete element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x4 };
-delete element inet osmo-upf tunmap-post { 1 };
-delete chain inet osmo-upf tunmap-pre-1;
-delete chain inet osmo-upf tunmap-post-1;
+delete element inet osmo-upf tunmap-post { 3 };
+delete chain inet osmo-upf tunmap-pre-3;
+delete chain inet osmo-upf tunmap-post-3;
 delete element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x3 };
-delete element inet osmo-upf tunmap-post { 2 };
-delete chain inet osmo-upf tunmap-pre-2;
-delete chain inet osmo-upf tunmap-post-2;
+delete element inet osmo-upf tunmap-post { 4 };
+delete chain inet osmo-upf tunmap-pre-4;
+delete chain inet osmo-upf tunmap-post-4;

-DNFT DEBUG run nft ruleset: "delete element inet osmo-upf tunmap-pre { 1.1.1.1 
. 0x4 };\ndelete element inet osmo-upf tunmap-post { 1 };\ndelete chain inet 
osmo-upf tunmap-pre-1;\ndelete chain inet osmo-upf tunmap-post-1;\ndelete 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x3 };\ndelete element inet 
osmo-upf tunmap-post { 2 };\ndelete chain inet osmo-upf tunmap-pre-2;\ndelete 
chain inet osmo-upf tunmap-post-2;\n"
-DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x102 
GTP-access-l:1.1.1.1 TEID-access-l:0x4 GTP-core-r:13.14.15.16 TEID-core-r:0x103 
GTP-core-l:1.1.1.1 TEID-core-l:0x3 PFCP-peer:1.2.3.4 SEID-l:0x2 PDR-access:2 
PDR-core:1: Disabled tunmap, nft chain IDs: access--1-> <-2--core
+DNFT DEBUG run nft ruleset: "delete element inet osmo-upf tunmap-pre { 1.1.1.1 
. 0x4 };\ndelete element inet osmo-upf tunmap-post { 3 };\ndelete chain inet 
osmo-upf tunmap-pre-3;\ndelete chain inet osmo-upf tunmap-post-3;\ndelete 
element inet osmo-upf tunmap-pre { 1.1.1.1 . 0x3 };\ndelete element inet 
osmo-upf tunmap-post { 4 };\ndelete chain inet osmo-upf tunmap-pre-4;\ndelete 
chain inet osmo-upf tunmap-post-4;\n"
+DGTP NOTICE GTP:tunmap GTP-access-r:5.6.7.8 TEID-access-r:0x102 
GTP-access-l:1.1.1.1 TEID-access-l:0x4 GTP-core-r:13.14.15.16 TEID-core-r:0x103 
GTP-core-l:1.1.1.1 TEID-core-l:0x3 PFCP-peer:1.2.3.4 SEID-l:0x2 PDR-access:2 
PDR-core:1: Disabled tunmap, nft chain IDs: access--3-> <-4--core
 DSESSION DEBUG up_session(1-2-3-4-0x2){ESTABLISHED}: Freeing instance
 DSESSION DEBUG up_session(1-2-3-4-0x2){ESTABLISHED}: Deallocated
 DPEER NOTICE up_peer(1-2-3-4){ASSOCIATED}: Peer removed

--
To view, visit https://gerrit.osmocom.org/c/osmo-upf/+/31483
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-upf
Gerrit-Branch: master
Gerrit-Change-Id: I139b46de0bd15185a7a06109d55f7c759755ec81
Gerrit-Change-Number: 31483
Gerrit-PatchSet: 3
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-MessageType: merged

Reply via email to