Last time I enabled this code, I forgot to whitelist the extension for
SADB_GET.  Thanks to the help from Mark Patruck, who originally reported
the regression with iked(8) via bugs@, I came up with the diff below.

ok to enable it again?

Index: net/pfkeyv2.c
===================================================================
RCS file: /cvs/src/sys/net/pfkeyv2.c,v
retrieving revision 1.194
diff -u -p -r1.194 pfkeyv2.c
--- net/pfkeyv2.c       13 Jan 2019 14:31:55 -0000      1.194
+++ net/pfkeyv2.c       26 Jan 2019 17:23:59 -0000
@@ -793,7 +793,8 @@ pfkeyv2_get(struct tdb *tdb, void **head
        void *p;
 
        /* Find how much space we need */
-       i = sizeof(struct sadb_sa) + sizeof(struct sadb_lifetime);
+       i = sizeof(struct sadb_sa) + sizeof(struct sadb_lifetime) +
+           sizeof(struct sadb_x_counter);
 
        if (tdb->tdb_soft_allocations || tdb->tdb_soft_bytes ||
            tdb->tdb_soft_timeout || tdb->tdb_soft_first_use)
@@ -954,6 +955,9 @@ pfkeyv2_get(struct tdb *tdb, void **head
                export_tap(&p, tdb);
        }
 #endif
+
+       headers[SADB_X_EXT_COUNTER] = p;
+       export_counter(&p, tdb);
 
        rval = 0;
 
Index: net/pfkeyv2_parsemessage.c
===================================================================
RCS file: /cvs/src/sys/net/pfkeyv2_parsemessage.c,v
retrieving revision 1.53
diff -u -p -r1.53 pfkeyv2_parsemessage.c
--- net/pfkeyv2_parsemessage.c  14 Jul 2017 16:50:41 -0000      1.53
+++ net/pfkeyv2_parsemessage.c  26 Jan 2019 17:23:21 -0000
@@ -126,6 +126,7 @@
 #define BITMAP_X_TAG                   (1LL << SADB_X_EXT_TAG)
 #define BITMAP_X_TAP                   (1LL << SADB_X_EXT_TAP)
 #define BITMAP_X_SATYPE2               (1LL << SADB_X_EXT_SATYPE2)
+#define BITMAP_X_COUNTER               (1LL << SADB_X_EXT_COUNTER)
 
 uint64_t sadb_exts_allowed_in[SADB_MAX+1] =
 {
@@ -212,7 +213,7 @@ uint64_t sadb_exts_allowed_out[SADB_MAX+
        /* DELETE */
        BITMAP_SA | BITMAP_ADDRESS_SRC | BITMAP_ADDRESS_DST,
        /* GET */
-       BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_KEY | 
BITMAP_IDENTITY | BITMAP_X_UDPENCAP | BITMAP_X_LIFETIME_LASTUSE | 
BITMAP_X_SRC_MASK | BITMAP_X_DST_MASK | BITMAP_X_PROTOCOL | BITMAP_X_FLOW_TYPE 
| BITMAP_X_SRC_FLOW | BITMAP_X_DST_FLOW | BITMAP_X_TAG | BITMAP_X_TAP,
+       BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_KEY | 
BITMAP_IDENTITY | BITMAP_X_UDPENCAP | BITMAP_X_LIFETIME_LASTUSE | 
BITMAP_X_SRC_MASK | BITMAP_X_DST_MASK | BITMAP_X_PROTOCOL | BITMAP_X_FLOW_TYPE 
| BITMAP_X_SRC_FLOW | BITMAP_X_DST_FLOW | BITMAP_X_TAG | BITMAP_X_TAP | 
BITMAP_X_COUNTER,
        /* ACQUIRE */
        BITMAP_ADDRESS_SRC | BITMAP_ADDRESS_DST | BITMAP_IDENTITY | 
BITMAP_PROPOSAL,
        /* REGISTER */

Reply via email to