Module Name:    src
Committed By:   knakahara
Date:           Tue Oct 11 09:51:47 UTC 2022

Modified Files:
        src/sys/net: if_ipsec.c pfkeyv2.h
        src/sys/netipsec: key.c key_debug.c

Log Message:
Add sadb_x_policy_flags to inform SP origination.

This extension(struct sadb_x_policy) is *not* defined by RFC2367.

OpenBSD does not have reserved fields in struct sadb_x_policy.
Linux does not use this field yet.
FreeBSD uses this field as "sadb_x_policy_scope"; the value range is
from 0x00 to 0x04.

We use from most significant bit to avoid the above usage.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/net/if_ipsec.c src/sys/net/pfkeyv2.h
cvs rdiff -u -r1.276 -r1.277 src/sys/netipsec/key.c
cvs rdiff -u -r1.24 -r1.25 src/sys/netipsec/key_debug.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/if_ipsec.c
diff -u src/sys/net/if_ipsec.c:1.33 src/sys/net/if_ipsec.c:1.34
--- src/sys/net/if_ipsec.c:1.33	Thu Oct  6 06:59:24 2022
+++ src/sys/net/if_ipsec.c	Tue Oct 11 09:51:47 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ipsec.c,v 1.33 2022/10/06 06:59:24 knakahara Exp $  */
+/*	$NetBSD: if_ipsec.c,v 1.34 2022/10/11 09:51:47 knakahara Exp $  */
 
 /*
  * Copyright (c) 2017 Internet Initiative Japan Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ipsec.c,v 1.33 2022/10/06 06:59:24 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ipsec.c,v 1.34 2022/10/11 09:51:47 knakahara Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -1706,7 +1706,7 @@ if_ipsec_set_sadb_x_policy(struct sadb_x
 	xpl->sadb_x_policy_exttype = SADB_X_EXT_POLICY;
 	xpl->sadb_x_policy_type = policy;
 	xpl->sadb_x_policy_dir = dir;
-	xpl->sadb_x_policy_reserved = 0;
+	xpl->sadb_x_policy_flags = 0;
 	xpl->sadb_x_policy_id = id;
 	xpl->sadb_x_policy_reserved2 = 0;
 
Index: src/sys/net/pfkeyv2.h
diff -u src/sys/net/pfkeyv2.h:1.33 src/sys/net/pfkeyv2.h:1.34
--- src/sys/net/pfkeyv2.h:1.33	Sat Apr 16 18:15:22 2022
+++ src/sys/net/pfkeyv2.h	Tue Oct 11 09:51:47 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: pfkeyv2.h,v 1.33 2022/04/16 18:15:22 andvar Exp $	*/
+/*	$NetBSD: pfkeyv2.h,v 1.34 2022/10/11 09:51:47 knakahara Exp $	*/
 /*	$KAME: pfkeyv2.h,v 1.36 2003/07/25 09:33:37 itojun Exp $	*/
 
 /*
@@ -228,7 +228,8 @@ struct sadb_x_policy {
   uint16_t sadb_x_policy_exttype;
   uint16_t sadb_x_policy_type;		/* See policy type of ipsec.h */
   uint8_t sadb_x_policy_dir;		/* direction, see ipsec.h */
-  uint8_t sadb_x_policy_reserved;
+  uint8_t sadb_x_policy_flags;
+#define IPSEC_POLICY_FLAG_ORIGIN_KERNEL 0x80	/* policy is generated by kernel */
   uint32_t sadb_x_policy_id;
   uint32_t sadb_x_policy_reserved2;
 };

Index: src/sys/netipsec/key.c
diff -u src/sys/netipsec/key.c:1.276 src/sys/netipsec/key.c:1.277
--- src/sys/netipsec/key.c:1.276	Tue Aug  9 08:03:22 2022
+++ src/sys/netipsec/key.c	Tue Oct 11 09:51:47 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: key.c,v 1.276 2022/08/09 08:03:22 knakahara Exp $	*/
+/*	$NetBSD: key.c,v 1.277 2022/10/11 09:51:47 knakahara Exp $	*/
 /*	$FreeBSD: key.c,v 1.3.2.3 2004/02/14 22:23:23 bms Exp $	*/
 /*	$KAME: key.c,v 1.191 2001/06/27 10:46:49 sakane Exp $	*/
 
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.276 2022/08/09 08:03:22 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: key.c,v 1.277 2022/10/11 09:51:47 knakahara Exp $");
 
 /*
  * This code is referred to RFC 2367
@@ -2089,6 +2089,8 @@ key_sp2msg(const struct secpolicy *sp, i
 	xpl->sadb_x_policy_type = sp->policy;
 	xpl->sadb_x_policy_dir = sp->spidx.dir;
 	xpl->sadb_x_policy_id = sp->id;
+	if (sp->origin == IPSEC_SPORIGIN_KERNEL)
+		xpl->sadb_x_policy_flags |= IPSEC_POLICY_FLAG_ORIGIN_KERNEL;
 	p = (char *)xpl + sizeof(*xpl);
 
 	/* if is the policy for ipsec ? */

Index: src/sys/netipsec/key_debug.c
diff -u src/sys/netipsec/key_debug.c:1.24 src/sys/netipsec/key_debug.c:1.25
--- src/sys/netipsec/key_debug.c:1.24	Wed May 18 15:20:18 2022
+++ src/sys/netipsec/key_debug.c	Tue Oct 11 09:51:47 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: key_debug.c,v 1.24 2022/05/18 15:20:18 christos Exp $	*/
+/*	$NetBSD: key_debug.c,v 1.25 2022/10/11 09:51:47 knakahara Exp $	*/
 /*	$FreeBSD: key_debug.c,v 1.1.4.1 2003/01/24 05:11:36 sam Exp $	*/
 /*	$KAME: key_debug.c,v 1.26 2001/06/27 10:46:50 sakane Exp $	*/
 
@@ -33,7 +33,7 @@
 
 #ifdef _KERNEL
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: key_debug.c,v 1.24 2022/05/18 15:20:18 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: key_debug.c,v 1.25 2022/10/11 09:51:47 knakahara Exp $");
 #endif
 
 #if defined(_KERNEL_OPT)
@@ -377,9 +377,9 @@ kdebug_sadb_x_policy(const struct sadb_e
 	if (ext == NULL)
 		panic("%s: NULL pointer was passed", __func__);
 
-	printf(" sadb_x_policy { type=%u dir=%u id=%x }",
+	printf(" sadb_x_policy { type=%u dir=%u flags=0x%02x id=%x }",
 		xpl->sadb_x_policy_type, xpl->sadb_x_policy_dir,
-		xpl->sadb_x_policy_id);
+		xpl->sadb_x_policy_flags, xpl->sadb_x_policy_id);
 
 	if (xpl->sadb_x_policy_type == IPSEC_POLICY_IPSEC) {
 		int tlen;

Reply via email to