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;