summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/basic/generate-socket-protocol-list.sh5
-rw-r--r--src/basic/meson.build12
-rw-r--r--src/basic/socket-protocol-to-name.awk9
3 files changed, 25 insertions, 1 deletions
diff --git a/src/basic/generate-socket-protocol-list.sh b/src/basic/generate-socket-protocol-list.sh
new file mode 100644
index 000000000..18a540f32
--- /dev/null
+++ b/src/basic/generate-socket-protocol-list.sh
@@ -0,0 +1,5 @@
+#!/bin/sh -eu
+
+$1 -dM -include netinet/in.h - </dev/null | \
+ awk '/^#define[ \t]+IPPROTO_[^ \t]+[ \t]+[^ \t]/ { print $2; }' | \
+ sed -e 's/IPPROTO_//'
diff --git a/src/basic/meson.build b/src/basic/meson.build
index 3ea5e059a..5d9780e94 100644
--- a/src/basic/meson.build
+++ b/src/basic/meson.build
@@ -177,6 +177,8 @@
# smack-util.c
# smack-util.h
# socket-label.c
+# socket-protocol-list.c
+# socket-protocol-list.h
# socket-util.c
# socket-util.h
# sparse-endian.h
@@ -404,12 +406,20 @@ errno_list_txt = custom_target(
command : [generate_errno_list, cpp],
capture : true)
+generate_socket_protocol_list = find_program('generate-socket-protocol-list.sh')
+socket_protocol_list_txt = custom_target(
+ 'socket-protocol-list.txt',
+ output : 'socket-protocol-list.txt',
+ command : [generate_socket_protocol_list, cpp],
+ capture : true)
+
generated_gperf_headers = []
#if 0 /// elogind has only the cap and errno list.
# foreach item : [['af', af_list_txt, 'af', ''],
# ['arphrd', arphrd_list_txt, 'arphrd', 'ARPHRD_'],
# ['cap', cap_list_txt, 'capability', ''],
-# ['errno', errno_list_txt, 'errno', '']]
+# ['errno', errno_list_txt, 'errno', ''],
+# ['socket-protocol', socket_protocol_list_txt, 'socket_protocol', 'IPPROTO_']]
#else
foreach item : [['cap', cap_list_txt, 'capability', ''],
['errno', errno_list_txt, 'errno', '']]
diff --git a/src/basic/socket-protocol-to-name.awk b/src/basic/socket-protocol-to-name.awk
new file mode 100644
index 000000000..4848a7631
--- /dev/null
+++ b/src/basic/socket-protocol-to-name.awk
@@ -0,0 +1,9 @@
+BEGIN{
+ print "static const char* const socket_protocol_names[] = { "
+}
+!/HOPOPTS/ {
+ printf " [IPPROTO_%s] = \"%s\",\n", $1, tolower($1)
+}
+END{
+ print "};"
+}