Skip to content

Commit 1d10678

Browse files
drakenclimberpcmoore
authored andcommitted
all: Promote kernel version enum to a public header file
Promote the scmp_kver enumeration to a public header file via a new header, seccomp-kvers.h. Add enumerations for all kernel versions from 3.0 to 6.17. Signed-off-by: Tom Hromatka <[email protected]> [PM: added v6.17 enum] Signed-off-by: Paul Moore <[email protected]>
1 parent bbd421a commit 1d10678

File tree

6 files changed

+279
-9
lines changed

6 files changed

+279
-9
lines changed

include/Makefile.am

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@
1616
# along with this library; if not, see <http://www.gnu.org/licenses>.
1717
#
1818

19-
include_HEADERS = seccomp.h seccomp-syscalls.h
19+
include_HEADERS = seccomp.h seccomp-syscalls.h seccomp-kvers.h

include/seccomp-kvers.h

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
/**
2+
* Seccomp Library
3+
*
4+
* Copyright (c) 2025 Oracle and/or its affiliates.
5+
* Author: Tom Hromatka <[email protected]>
6+
*/
7+
8+
/*
9+
* This library is free software; you can redistribute it and/or modify it
10+
* under the terms of version 2.1 of the GNU Lesser General Public License as
11+
* published by the Free Software Foundation.
12+
*
13+
* This library is distributed in the hope that it will be useful, but WITHOUT
14+
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15+
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
16+
* for more details.
17+
*
18+
* You should have received a copy of the GNU Lesser General Public License
19+
* along with this library; if not, see <http://www.gnu.org/licenses>.
20+
*/
21+
22+
#ifndef _SECCOMP_H
23+
#error "do not include seccomp-kvers.h directly, use seccomp.h instead"
24+
#endif
25+
26+
/**
27+
* Kernel versions
28+
*/
29+
enum scmp_kver {
30+
__SCMP_KV_NULL = 0,
31+
SCMP_KV_UNDEF = 1,
32+
SCMP_KV_3_0 = 2,
33+
SCMP_KV_3_1 = 3,
34+
SCMP_KV_3_2 = 4,
35+
SCMP_KV_3_3 = 5,
36+
SCMP_KV_3_4 = 6,
37+
SCMP_KV_3_5 = 7,
38+
SCMP_KV_3_6 = 8,
39+
SCMP_KV_3_7 = 9,
40+
SCMP_KV_3_8 = 10,
41+
SCMP_KV_3_9 = 11,
42+
SCMP_KV_3_10 = 12,
43+
SCMP_KV_3_11 = 13,
44+
SCMP_KV_3_12 = 14,
45+
SCMP_KV_3_13 = 15,
46+
SCMP_KV_3_14 = 16,
47+
SCMP_KV_3_15 = 17,
48+
SCMP_KV_3_16 = 18,
49+
SCMP_KV_3_17 = 19,
50+
SCMP_KV_3_18 = 20,
51+
SCMP_KV_3_19 = 21,
52+
SCMP_KV_4_0 = 22,
53+
SCMP_KV_4_1 = 23,
54+
SCMP_KV_4_2 = 24,
55+
SCMP_KV_4_3 = 25,
56+
SCMP_KV_4_4 = 26,
57+
SCMP_KV_4_5 = 27,
58+
SCMP_KV_4_6 = 28,
59+
SCMP_KV_4_7 = 29,
60+
SCMP_KV_4_8 = 30,
61+
SCMP_KV_4_9 = 31,
62+
SCMP_KV_4_10 = 32,
63+
SCMP_KV_4_11 = 33,
64+
SCMP_KV_4_12 = 34,
65+
SCMP_KV_4_13 = 35,
66+
SCMP_KV_4_14 = 36,
67+
SCMP_KV_4_15 = 37,
68+
SCMP_KV_4_16 = 38,
69+
SCMP_KV_4_17 = 39,
70+
SCMP_KV_4_18 = 40,
71+
SCMP_KV_4_19 = 41,
72+
SCMP_KV_4_20 = 42,
73+
SCMP_KV_5_0 = 43,
74+
SCMP_KV_5_1 = 44,
75+
SCMP_KV_5_2 = 45,
76+
SCMP_KV_5_3 = 46,
77+
SCMP_KV_5_4 = 47,
78+
SCMP_KV_5_5 = 48,
79+
SCMP_KV_5_6 = 49,
80+
SCMP_KV_5_7 = 50,
81+
SCMP_KV_5_8 = 51,
82+
SCMP_KV_5_9 = 52,
83+
SCMP_KV_5_10 = 53,
84+
SCMP_KV_5_11 = 54,
85+
SCMP_KV_5_12 = 55,
86+
SCMP_KV_5_13 = 56,
87+
SCMP_KV_5_14 = 57,
88+
SCMP_KV_5_15 = 58,
89+
SCMP_KV_5_16 = 59,
90+
SCMP_KV_5_17 = 60,
91+
SCMP_KV_5_18 = 61,
92+
SCMP_KV_5_19 = 62,
93+
SCMP_KV_6_0 = 63,
94+
SCMP_KV_6_1 = 64,
95+
SCMP_KV_6_2 = 65,
96+
SCMP_KV_6_3 = 66,
97+
SCMP_KV_6_4 = 67,
98+
SCMP_KV_6_5 = 68,
99+
SCMP_KV_6_6 = 69,
100+
SCMP_KV_6_7 = 70,
101+
SCMP_KV_6_8 = 71,
102+
SCMP_KV_6_9 = 72,
103+
SCMP_KV_6_10 = 73,
104+
SCMP_KV_6_11 = 74,
105+
SCMP_KV_6_12 = 75,
106+
SCMP_KV_6_13 = 76,
107+
SCMP_KV_6_14 = 77,
108+
SCMP_KV_6_15 = 78,
109+
SCMP_KV_6_16 = 79,
110+
SCMP_KV_6_17 = 80,
111+
__SCMP_KV_MAX,
112+
};

include/seccomp.h.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,7 @@ int seccomp_precompute(const scmp_filter_ctx ctx);
898898
#define __NR_SCMP_UNDEF -2
899899

900900
#include <seccomp-syscalls.h>
901+
#include <seccomp-kvers.h>
901902

902903
#ifdef __cplusplus
903904
}

src/python/libseccomp.pxd

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,88 @@ cdef extern from "seccomp.h":
8686
unsigned int SCMP_ACT_ERRNO(int errno)
8787
unsigned int SCMP_ACT_TRACE(int value)
8888

89+
cdef enum scmp_kver:
90+
SCMP_KV_UNDEF
91+
SCMP_KV_3_0
92+
SCMP_KV_3_1
93+
SCMP_KV_3_2
94+
SCMP_KV_3_3
95+
SCMP_KV_3_4
96+
SCMP_KV_3_5
97+
SCMP_KV_3_6
98+
SCMP_KV_3_7
99+
SCMP_KV_3_8
100+
SCMP_KV_3_9
101+
SCMP_KV_3_10
102+
SCMP_KV_3_11
103+
SCMP_KV_3_12
104+
SCMP_KV_3_13
105+
SCMP_KV_3_14
106+
SCMP_KV_3_15
107+
SCMP_KV_3_16
108+
SCMP_KV_3_17
109+
SCMP_KV_3_18
110+
SCMP_KV_3_19
111+
SCMP_KV_4_0
112+
SCMP_KV_4_1
113+
SCMP_KV_4_2
114+
SCMP_KV_4_3
115+
SCMP_KV_4_4
116+
SCMP_KV_4_5
117+
SCMP_KV_4_6
118+
SCMP_KV_4_7
119+
SCMP_KV_4_8
120+
SCMP_KV_4_9
121+
SCMP_KV_4_10
122+
SCMP_KV_4_11
123+
SCMP_KV_4_12
124+
SCMP_KV_4_13
125+
SCMP_KV_4_14
126+
SCMP_KV_4_15
127+
SCMP_KV_4_16
128+
SCMP_KV_4_17
129+
SCMP_KV_4_18
130+
SCMP_KV_4_19
131+
SCMP_KV_4_20
132+
SCMP_KV_5_0
133+
SCMP_KV_5_1
134+
SCMP_KV_5_2
135+
SCMP_KV_5_3
136+
SCMP_KV_5_4
137+
SCMP_KV_5_5
138+
SCMP_KV_5_6
139+
SCMP_KV_5_7
140+
SCMP_KV_5_8
141+
SCMP_KV_5_9
142+
SCMP_KV_5_10
143+
SCMP_KV_5_11
144+
SCMP_KV_5_12
145+
SCMP_KV_5_13
146+
SCMP_KV_5_14
147+
SCMP_KV_5_15
148+
SCMP_KV_5_16
149+
SCMP_KV_5_17
150+
SCMP_KV_5_18
151+
SCMP_KV_5_19
152+
SCMP_KV_6_0
153+
SCMP_KV_6_1
154+
SCMP_KV_6_2
155+
SCMP_KV_6_3
156+
SCMP_KV_6_4
157+
SCMP_KV_6_5
158+
SCMP_KV_6_6
159+
SCMP_KV_6_7
160+
SCMP_KV_6_8
161+
SCMP_KV_6_9
162+
SCMP_KV_6_10
163+
SCMP_KV_6_11
164+
SCMP_KV_6_12
165+
SCMP_KV_6_13
166+
SCMP_KV_6_14
167+
SCMP_KV_6_15
168+
SCMP_KV_6_16
169+
SCMP_KV_6_17
170+
89171
ctypedef uint64_t scmp_datum_t
90172

91173
cdef struct scmp_arg_cmp:

src/python/seccomp.pyx

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1119,5 +1119,88 @@ cdef class SyscallFilter:
11191119
if rc != 0:
11201120
raise RuntimeError(str.format("Library error (errno = {0})", rc))
11211121

1122+
cdef class Kver:
1123+
""" Python object representing the Kernel Version enumeration. """
1124+
UNDEF = libseccomp.SCMP_KV_UNDEF
1125+
v3_0 = libseccomp.SCMP_KV_3_0
1126+
v3_1 = libseccomp.SCMP_KV_3_1
1127+
v3_2 = libseccomp.SCMP_KV_3_2
1128+
v3_3 = libseccomp.SCMP_KV_3_3
1129+
v3_4 = libseccomp.SCMP_KV_3_4
1130+
v3_5 = libseccomp.SCMP_KV_3_5
1131+
v3_6 = libseccomp.SCMP_KV_3_6
1132+
v3_7 = libseccomp.SCMP_KV_3_7
1133+
v3_8 = libseccomp.SCMP_KV_3_8
1134+
v3_9 = libseccomp.SCMP_KV_3_9
1135+
v3_10 = libseccomp.SCMP_KV_3_10
1136+
v3_11 = libseccomp.SCMP_KV_3_11
1137+
v3_12 = libseccomp.SCMP_KV_3_12
1138+
v3_13 = libseccomp.SCMP_KV_3_13
1139+
v3_14 = libseccomp.SCMP_KV_3_14
1140+
v3_15 = libseccomp.SCMP_KV_3_15
1141+
v3_16 = libseccomp.SCMP_KV_3_16
1142+
v3_17 = libseccomp.SCMP_KV_3_17
1143+
v3_18 = libseccomp.SCMP_KV_3_18
1144+
v3_19 = libseccomp.SCMP_KV_3_19
1145+
v4_0 = libseccomp.SCMP_KV_4_0
1146+
v4_1 = libseccomp.SCMP_KV_4_1
1147+
v4_2 = libseccomp.SCMP_KV_4_2
1148+
v4_3 = libseccomp.SCMP_KV_4_3
1149+
v4_4 = libseccomp.SCMP_KV_4_4
1150+
v4_5 = libseccomp.SCMP_KV_4_5
1151+
v4_6 = libseccomp.SCMP_KV_4_6
1152+
v4_7 = libseccomp.SCMP_KV_4_7
1153+
v4_8 = libseccomp.SCMP_KV_4_8
1154+
v4_9 = libseccomp.SCMP_KV_4_9
1155+
v4_10 = libseccomp.SCMP_KV_4_10
1156+
v4_11 = libseccomp.SCMP_KV_4_11
1157+
v4_12 = libseccomp.SCMP_KV_4_12
1158+
v4_13 = libseccomp.SCMP_KV_4_13
1159+
v4_14 = libseccomp.SCMP_KV_4_14
1160+
v4_15 = libseccomp.SCMP_KV_4_15
1161+
v4_16 = libseccomp.SCMP_KV_4_16
1162+
v4_17 = libseccomp.SCMP_KV_4_17
1163+
v4_18 = libseccomp.SCMP_KV_4_18
1164+
v4_19 = libseccomp.SCMP_KV_4_19
1165+
v4_20 = libseccomp.SCMP_KV_4_20
1166+
v5_0 = libseccomp.SCMP_KV_5_0
1167+
v5_1 = libseccomp.SCMP_KV_5_1
1168+
v5_2 = libseccomp.SCMP_KV_5_2
1169+
v5_3 = libseccomp.SCMP_KV_5_3
1170+
v5_4 = libseccomp.SCMP_KV_5_4
1171+
v5_5 = libseccomp.SCMP_KV_5_5
1172+
v5_6 = libseccomp.SCMP_KV_5_6
1173+
v5_7 = libseccomp.SCMP_KV_5_7
1174+
v5_8 = libseccomp.SCMP_KV_5_8
1175+
v5_9 = libseccomp.SCMP_KV_5_9
1176+
v5_10 = libseccomp.SCMP_KV_5_10
1177+
v5_11 = libseccomp.SCMP_KV_5_11
1178+
v5_12 = libseccomp.SCMP_KV_5_12
1179+
v5_13 = libseccomp.SCMP_KV_5_13
1180+
v5_14 = libseccomp.SCMP_KV_5_14
1181+
v5_15 = libseccomp.SCMP_KV_5_15
1182+
v5_16 = libseccomp.SCMP_KV_5_16
1183+
v5_17 = libseccomp.SCMP_KV_5_17
1184+
v5_18 = libseccomp.SCMP_KV_5_18
1185+
v5_19 = libseccomp.SCMP_KV_5_19
1186+
v6_0 = libseccomp.SCMP_KV_6_0
1187+
v6_1 = libseccomp.SCMP_KV_6_1
1188+
v6_2 = libseccomp.SCMP_KV_6_2
1189+
v6_3 = libseccomp.SCMP_KV_6_3
1190+
v6_4 = libseccomp.SCMP_KV_6_4
1191+
v6_5 = libseccomp.SCMP_KV_6_5
1192+
v6_6 = libseccomp.SCMP_KV_6_6
1193+
v6_7 = libseccomp.SCMP_KV_6_7
1194+
v6_8 = libseccomp.SCMP_KV_6_8
1195+
v6_9 = libseccomp.SCMP_KV_6_9
1196+
v6_10 = libseccomp.SCMP_KV_6_10
1197+
v6_11 = libseccomp.SCMP_KV_6_11
1198+
v6_12 = libseccomp.SCMP_KV_6_12
1199+
v6_13 = libseccomp.SCMP_KV_6_13
1200+
v6_14 = libseccomp.SCMP_KV_6_14
1201+
v6_15 = libseccomp.SCMP_KV_6_15
1202+
v6_16 = libseccomp.SCMP_KV_6_16
1203+
v6_17 = libseccomp.SCMP_KV_6_17
1204+
11221205
# kate: syntax python;
11231206
# kate: indent-mode python; space-indent on; indent-width 4; mixedindent off;

src/system.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,6 @@
3535

3636
struct db_filter_col;
3737

38-
/* NOTE: temporary location, move to include/seccomp.h.in when complete */
39-
enum scmp_kver {
40-
__SCMP_KV_NULL = 0,
41-
SCMP_KV_UNDEF = 1,
42-
/* TODO: add SCMP_KV_X_YY values as the syscall table is populated */
43-
__SCMP_KV_MAX,
44-
};
45-
4638
#ifdef HAVE_LINUX_SECCOMP_H
4739

4840
/* system header file */

0 commit comments

Comments
 (0)