]> Kevux Git Server - fll/commitdiff
Update: Ensure sockets defines exist, add more defines, and remove redundancy.
authorKevin Day <Kevin@kevux.org>
Sun, 14 Dec 2025 23:31:47 +0000 (17:31 -0600)
committerKevin Day <Kevin@kevux.org>
Sun, 14 Dec 2025 23:31:47 +0000 (17:31 -0600)
Make sure each standard define exists.
If they do not, then create them.
This provides a new disable define called `_di_f_socket_defines_d_`.

Add a lot of missing defines.
This especially includes a lot of protocols.

The `f_socket_message_flag_e` enums are redundant, so remove them.

build/disable/level_0/f_socket.h
level_0/f_socket/c/socket/common.h

index d65d27cfa979ed75ef48d1a3b073680fe4352877..4ad90efd8b91464aec47e4668d0afc6c2c9878a0 100644 (file)
@@ -12,6 +12,7 @@
 #define _di_f_socket_create_
 #define _di_f_socket_create_pair_
 #define _di_f_socket_default_d_
+#define _di_f_socket_defines_d_
 #define _di_f_socket_disconnect_
 #define _di_f_socket_flag_e_
 #define _di_f_socket_level_e_
index c7d78035bfb6ec34ec2d22c463a3b8326e7c6cbf..f852df2d71cf9264b9a3559af49be4bdd199b56c 100644 (file)
@@ -31,6 +31,940 @@ extern "C" {
 #endif // _di_f_socket_default_d_
 
 /**
+ * Provide socket define helpers in case the host system / libc fails to provide them.
+ */
+#ifndef _di_f_socket_defines_d_
+
+  // The PF_* defines.
+  #ifndef PF_UNSPEC
+    #define PF_UNSPEC 0
+  #endif // PF_UNSPEC
+
+  #ifndef PF_LOCAL
+    #define PF_LOCAL 1
+  #endif // PF_LOCAL
+
+  #ifndef PF_UNIX
+    #define PF_UNIX PF_LOCAL
+  #endif // PF_UNIX
+
+  #ifndef PF_UNIX
+    #define PF_UNIX PF_LOCAL
+  #endif // PF_UNIX
+
+  #ifndef PF_INET
+    #define PF_INET 2
+  #endif // PF_INET
+
+  #ifndef PF_AX25
+    #define PF_AX25 3
+  #endif // PF_AX25
+
+  #ifndef PF_IPX
+    #define PF_IPX 4
+  #endif // PF_IPX
+
+  #ifndef PF_APPLETALK
+    #define PF_APPLETALK 5
+  #endif // PF_APPLETALK
+
+  #ifndef PF_NETROM
+    #define PF_NETROM 6
+  #endif // PF_NETROM
+
+  #ifndef PF_BRIDGE
+    #define PF_BRIDGE 7
+  #endif // PF_BRIDGE
+
+  #ifndef PF_ATMPVC
+    #define PF_ATMPVC 8
+  #endif // PF_ATMPVC
+
+  #ifndef PF_X25
+    #define PF_X25 9
+  #endif // PF_X25
+
+  #ifndef PF_INET6
+    #define PF_INET6 10
+  #endif // PF_INET6
+
+  #ifndef PF_ROSE
+    #define PF_ROSE 11
+  #endif // PF_ROSE
+
+  #ifndef PF_DECnet
+    #define PF_DECnet 12
+  #endif // PF_DECnet
+
+  #ifndef PF_NETBEUI
+    #define PF_NETBEUI 13
+  #endif // PF_NETBEUI
+
+  #ifndef PF_SECURITY
+    #define PF_SECURITY 14
+  #endif // PF_SECURITY
+
+  #ifndef PF_KEY
+    #define PF_KEY 15
+  #endif // PF_KEY
+
+  #ifndef PF_NETLINK
+    #define PF_NETLINK 16
+  #endif // PF_NETLINK
+
+  #ifndef PF_ROUTE
+    #define PF_ROUTE PF_NETLINK
+  #endif // PF_ROUTE
+
+  #ifndef PF_PACKET
+    #define PF_PACKET 17
+  #endif // PF_PACKET
+
+  #ifndef PF_ASH
+    #define PF_ASH 18
+  #endif // PF_ASH
+
+  #ifndef PF_ECONET
+    #define PF_ECONET 19
+  #endif // PF_ECONET
+
+  #ifndef PF_ATMSVC
+    #define PF_ATMSVC 20
+  #endif // PF_ATMSVC
+
+  #ifndef PF_RDS
+    #define PF_RDS 21
+  #endif // PF_RDS
+
+  #ifndef PF_SNA
+    #define PF_SNA 22
+  #endif // PF_SNA
+
+  #ifndef PF_IRDA
+    #define PF_IRDA 23
+  #endif // PF_IRDA
+
+  #ifndef PF_PPPOX
+    #define PF_PPPOX 24
+  #endif // PF_PPPOX
+
+  #ifndef PF_WANPIPE
+    #define PF_WANPIPE 25
+  #endif // PF_WANPIPE
+
+  #ifndef PF_LLC
+    #define PF_LLC 26
+  #endif // PF_LLC
+
+  #ifndef PF_IB
+    #define PF_IB 27
+  #endif // PF_IB
+
+  #ifndef PF_MPLS
+    #define PF_MPLS 28
+  #endif // PF_MPLS
+
+  #ifndef PF_CAN
+    #define PF_CAN 29
+  #endif // PF_CAN
+
+  #ifndef PF_TIPC
+    #define PF_TIPC 30
+  #endif // PF_TIPC
+
+  #ifndef PF_BLUETOOTH
+    #define PF_BLUETOOTH 31
+  #endif // PF_BLUETOOTH
+
+  #ifndef PF_IUCV
+    #define PF_IUCV 32
+  #endif // PF_IUCV
+
+  #ifndef PF_RXRPC
+    #define PF_RXRPC 33
+  #endif // PF_RXRPC
+
+  #ifndef PF_ISDN
+    #define PF_ISDN 34
+  #endif // PF_ISDN
+
+  #ifndef PF_PHONET
+    #define PF_PHONET 35
+  #endif // PF_PHONET
+
+  #ifndef PF_IEEE802154
+    #define PF_IEEE802154 36
+  #endif // PF_IEEE802154
+
+  #ifndef PF_CAIF
+    #define PF_CAIF 37
+  #endif // PF_CAIF
+
+  #ifndef PF_ALG
+    #define PF_ALG 38
+  #endif // PF_ALG
+
+  #ifndef PF_NFC
+    #define PF_NFC 39
+  #endif // PF_NFC
+
+  #ifndef PF_VSOCK
+    #define PF_VSOCK 40
+  #endif // PF_VSOCK
+
+  #ifndef PF_KCM
+    #define PF_KCM 41
+  #endif // PF_KCM
+
+  #ifndef PF_QIPCRTR
+    #define PF_QIPCRTR 42
+  #endif // PF_QIPCRTR
+
+  #ifndef PF_SMC
+    #define PF_SMC 43
+  #endif // PF_SMC
+
+  #ifndef PF_XDP
+    #define PF_XDP 44
+  #endif // PF_XDP
+
+  #ifndef PF_MCTP
+    #define PF_MCTP 45
+  #endif // PF_MCTP
+
+  #ifndef PF_MAX
+    #define PF_MAX 46
+  #endif // PF_MAX
+
+
+  // The AF_* defines.
+  #ifndef AF_LOCAL
+    #define AF_LOCAL PF_LOCAL
+  #endif // AF_LOCAL
+
+  #ifndef AF_UNIX
+    #define AF_UNIX PF_UNIX
+  #endif // AF_UNIX
+
+  #ifndef AF_FILE
+    #define AF_FILE AF_LOCAL
+  #endif // AF_FILE
+
+  #ifndef AF_INET
+    #define AF_INET PF_INET
+  #endif // AF_INET
+
+  #ifndef AF_AX25
+    #define AF_AX25 PF_AX25
+  #endif // AF_AX25
+
+  #ifndef AF_IPX
+    #define AF_IPX PF_IPX
+  #endif // AF_IPX
+
+  #ifndef AF_APPLETALK
+    #define AF_APPLETALK PF_APPLETALK
+  #endif // AF_APPLETALK
+
+  #ifndef AF_NETROM
+    #define AF_NETROM PF_NETROM
+  #endif // AF_NETROM
+
+  #ifndef AF_BRIDGE
+    #define AF_BRIDGE PF_BRIDGE
+  #endif // AF_BRIDGE
+
+  #ifndef AF_ATMPVC
+    #define AF_ATMPVC PF_ATMPVC
+  #endif // AF_ATMPVC
+
+  #ifndef AF_X25
+    #define AF_X25 PF_X25
+  #endif // AF_X25
+
+  #ifndef AF_ROSE
+    #define AF_ROSE PF_ROSE
+  #endif // AF_ROSE
+
+  #ifndef AF_DECnet
+    #define AF_DECnet PF_DECnet
+  #endif // AF_DECnet
+
+  #ifndef AF_NETBEUI
+    #define AF_NETBEUI PF_NETBEUI
+  #endif // AF_NETBEUI
+
+  #ifndef AF_SECURITY
+    #define AF_SECURITY PF_SECURITY
+  #endif // AF_SECURITY
+
+  #ifndef AF_KEY
+    #define AF_KEY PF_KEY
+  #endif // AF_KEY
+
+  #ifndef AF_NETLINK
+    #define AF_NETLINK PF_NETLINK
+  #endif // AF_NETLINK
+
+  #ifndef AF_ROUTE
+    #define AF_ROUTE PF_ROUTE
+  #endif // AF_ROUTE
+
+  #ifndef AF_PACKET
+    #define AF_PACKET PF_PACKET
+  #endif // AF_PACKET
+
+  #ifndef AF_ASH
+    #define AF_ASH PF_ASH
+  #endif // AF_ASH
+
+  #ifndef AF_ECONET
+    #define AF_ECONET PF_ECONET
+  #endif // AF_ECONET
+
+  #ifndef AF_ATMSVC
+    #define AF_ATMSVC PF_ATMSVC
+  #endif // AF_ATMSVC
+
+  #ifndef AF_RDS
+    #define AF_RDS PF_RDS
+  #endif // AF_RDS
+
+  #ifndef AF_SNA
+    #define AF_SNA PF_SNA
+  #endif // AF_SNA
+
+  #ifndef AF_IRDA
+    #define AF_IRDA PF_IRDA
+  #endif // AF_IRDA
+
+  #ifndef AF_PPPOX
+    #define AF_PPPOX PF_PPPOX
+  #endif // AF_PPPOX
+
+  #ifndef AF_WANPIPE
+    #define AF_WANPIPE PF_WANPIPE
+  #endif // AF_WANPIPE
+
+  #ifndef AF_LLC
+    #define AF_LLC PF_LLC
+  #endif // AF_LLC
+
+  #ifndef AF_IB
+    #define AF_IB PF_IB
+  #endif // AF_IB
+
+  #ifndef AF_MPLS
+    #define AF_MPLS PF_MPLS
+  #endif // AF_MPLS
+
+  #ifndef AF_CAN
+    #define AF_CAN PF_CAN
+  #endif // AF_CAN
+
+  #ifndef AF_TIPC
+    #define AF_TIPC PF_TIPC
+  #endif // AF_TIPC
+
+  #ifndef AF_BLUETOOTH
+    #define AF_BLUETOOTH PF_BLUETOOTH
+  #endif // AF_BLUETOOTH
+
+  #ifndef AF_IUCV
+    #define AF_IUCV PF_IUCV
+  #endif // AF_IUCV
+
+  #ifndef AF_RXRPC
+    #define AF_RXRPC PF_RXRPC
+  #endif // AF_RXRPC
+
+  #ifndef AF_ISDN
+    #define AF_ISDN PF_ISDN
+  #endif // AF_ISDN
+
+  #ifndef AF_PHONET
+    #define AF_PHONET PF_PHONET
+  #endif // AF_PHONET
+
+  #ifndef AF_IEEE802154
+    #define AF_IEEE802154 PF_IEEE802154
+  #endif // AF_IEEE802154
+
+  #ifndef AF_CAIF
+    #define AF_CAIF PF_CAIF
+  #endif // AF_CAIF
+
+  #ifndef PF_ALG
+    #define PF_ALG 38
+  #endif // PF_ALG
+
+  #ifndef AF_ALG
+    #define AF_ALG PF_NFC
+  #endif // AF_ALG
+
+  #ifndef AF_VSOCK
+    #define AF_VSOCK PF_VSOCK
+  #endif // AF_VSOCK
+
+  #ifndef AF_KCM
+    #define AF_KCM PF_KCM
+  #endif // AF_KCM
+
+  #ifndef AF_QIPCRTR
+    #define AF_QIPCRTR PF_QIPCRTR
+  #endif // AF_QIPCRTR
+
+  #ifndef AF_SMC
+    #define AF_SMC PF_SMC
+  #endif // AF_SMC
+
+  #ifndef AF_XDP
+    #define AF_XDP PF_XDP
+  #endif // AF_XDP
+
+  #ifndef AF_MCTP
+    #define AF_MCTP PF_MCTP
+  #endif // AF_MCTP
+
+  #ifndef AF_MAX
+    #define AF_MAX PF_MAX
+  #endif // AF_MAX
+
+
+  // The MSG_* defines.
+  #ifndef MSG_OOB
+    #define MSG_OOB 0x01
+  #endif // MSG_OOB
+
+  #ifndef MSG_PEEK
+    #define MSG_PEEK 0x02
+  #endif // MSG_PEEK
+
+  #ifndef MSG_TRYHARD
+    #define MSG_TRYHARD 0x04
+  #endif // MSG_TRYHARD
+
+  #ifndef MSG_CTRUNC
+    #define MSG_CTRUNC 0x08
+  #endif // MSG_CTRUNC
+
+  #ifndef MSG_PROXY
+    #define MSG_PROXY 0x10
+  #endif // MSG_PROXY
+
+  #ifndef MSG_TRUNC
+    #define MSG_TRUNC 0x20
+  #endif // MSG_TRUNC
+
+  #ifndef MSG_DONTWAIT
+    #define MSG_DONTWAIT 0x40
+  #endif // MSG_DONTWAIT
+
+  #ifndef MSG_EOR
+    #define MSG_EOR 0x80
+  #endif // MSG_EOR
+
+  #ifndef MSG_FIN
+    #define MSG_FIN 0x200
+  #endif // MSG_FIN
+
+  #ifndef MSG_SYN
+    #define MSG_SYN 0x400
+  #endif // MSG_SYN
+
+  #ifndef MSG_CONFIRM
+    #define MSG_CONFIRM 0x800
+  #endif // MSG_CONFIRM
+
+  #ifndef MSG_RST
+    #define MSG_RST 0x1000
+  #endif // MSG_RST
+
+  #ifndef MSG_ERRQUEUE
+    #define MSG_ERRQUEUE 0x2000
+  #endif // MSG_ERRQUEUE
+
+  #ifndef MSG_MORE
+    #define MSG_MORE 0x8000
+  #endif // MSG_MORE
+
+  #ifndef MSG_WAITFORONE
+    #define MSG_WAITFORONE 0x10000
+  #endif // MSG_WAITFORONE
+
+  #ifndef MSG_BATCH
+    #define MSG_BATCH 0x40000
+  #endif // MSG_BATCH
+
+  #ifndef MSG_ZEROCOPY
+    #define MSG_ZEROCOPY 0x4000000
+  #endif // MSG_ZEROCOPY
+
+  #ifndef MSG_FASTOPEN
+    #define MSG_FASTOPEN 0x20000000
+  #endif // MSG_FASTOPEN
+
+  #ifndef MSG_CMSG_CLOEXEC
+    #define MSG_CMSG_CLOEXEC 0x40000000
+  #endif // MSG_CMSG_CLOEXEC
+
+  // The SO_* defines.
+  #ifndef SOL_SOCKET
+    #define SOL_SOCKET 1
+  #endif // SOL_SOCKET
+
+  #ifndef SO_DEBUG
+    #define SO_DEBUG 1
+  #endif // SO_DEBUG
+
+  #ifndef SO_REUSEADDR
+    #define SO_REUSEADDR 2
+  #endif // SO_REUSEADDR
+
+  #ifndef SO_TYPE
+    #define SO_TYPE 3
+  #endif // SO_TYPE
+
+  #ifndef SO_ERROR
+    #define SO_ERROR 4
+  #endif // SO_ERROR
+
+  #ifndef SO_ERROR
+    #define SO_ERROR 5
+  #endif // SO_ERROR
+
+  #ifndef SO_BROADCAST
+    #define SO_BROADCAST 6
+  #endif // SO_BROADCAST
+
+  #ifndef SO_SNDBUF
+    #define SO_SNDBUF 7
+  #endif // SO_SNDBUF
+
+  #ifndef SO_RCVBUF
+    #define SO_RCVBUF 8
+  #endif // SO_RCVBUF
+
+  #ifndef SO_KEEPALIVE
+    #define SO_KEEPALIVE 9
+  #endif // SO_KEEPALIVE
+
+  #ifndef SO_OOBINLINE
+    #define SO_OOBINLINE 10
+  #endif // SO_OOBINLINE
+
+  #ifndef SO_NO_CHECK
+    #define SO_NO_CHECK 11
+  #endif // SO_NO_CHECK
+
+  #ifndef SO_PRIORITY
+    #define SO_PRIORITY 12
+  #endif // SO_PRIORITY
+
+  #ifndef SO_LINGER
+    #define SO_LINGER 13
+  #endif // SO_LINGER
+
+  #ifndef SO_BSDCOMPAT
+    #define SO_BSDCOMPAT 14
+  #endif // SO_BSDCOMPAT
+
+  #ifndef SO_REUSEPORT
+    #define SO_REUSEPORT 15
+  #endif // SO_REUSEPORT
+
+  #ifndef SO_PASSCRED
+    #define SO_PASSCRED 16
+  #endif // SO_PASSCRED
+
+  #ifndef SO_PEERCRED
+    #define SO_PEERCRED 17
+  #endif // SO_PEERCRED
+
+  #ifndef SO_RCVLOWAT
+    #define SO_RCVLOWAT 18
+  #endif // SO_RCVLOWAT
+
+  #ifndef SO_SNDLOWAT
+    #define SO_SNDLOWAT 19
+  #endif // SO_SNDLOWAT
+
+  #ifndef SO_RCVTIMEO_OLD
+    #define SO_RCVTIMEO_OLD 20
+  #endif // SO_RCVTIMEO_OLD
+
+  #ifndef SO_SNDTIMEO_OLD
+    #define SO_SNDTIMEO_OLD 21
+  #endif // SO_SNDTIMEO_OLD
+
+  #ifndef SO_SECURITY_AUTHENTICATION
+    #define SO_SECURITY_AUTHENTICATION 22
+  #endif // SO_SECURITY_AUTHENTICATION
+
+  #ifndef SO_SECURITY_ENCRYPTION_TRANSPORT
+    #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+  #endif // SO_SECURITY_ENCRYPTION_TRANSPORT
+
+  #ifndef SO_SECURITY_ENCRYPTION_NETWORK
+    #define SO_SECURITY_ENCRYPTION_NETWORK 24
+  #endif // SO_SECURITY_ENCRYPTION_NETWORK
+
+  #ifndef SO_BINDTODEVICE
+    #define SO_BINDTODEVICE 25
+  #endif // SO_BINDTODEVICE
+
+  #ifndef SO_ATTACH_FILTER
+    #define SO_ATTACH_FILTER 26
+  #endif // SO_ATTACH_FILTER
+
+  #ifndef SO_GET_FILTER
+    #define SO_GET_FILTER SO_ATTACH_FILTER
+  #endif // SO_GET_FILTER
+
+  #ifndef SO_DETACH_FILTER
+    #define SO_DETACH_FILTER 27
+  #endif // SO_DETACH_FILTER
+
+  #ifndef SO_PEERNAME
+    #define SO_PEERNAME 28
+  #endif // SO_PEERNAME
+
+  #ifndef SO_TIMESTAMP_OLD
+    #define SO_TIMESTAMP_OLD 20
+  #endif // SO_TIMESTAMP_OLD
+
+  #ifndef SO_ACCEPTCONN
+    #define SO_ACCEPTCONN 30
+  #endif // SO_ACCEPTCONN
+
+  #ifndef SO_PEERSEC
+    #define SO_PEERSEC 31
+  #endif // SO_PEERSEC
+
+  #ifndef SO_SNDBUFFORCE
+    #define SO_SNDBUFFORCE 32
+  #endif // SO_SNDBUFFORCE
+
+  #ifndef SO_RCVBUFFORCE
+    #define SO_RCVBUFFORCE 33
+  #endif // SO_RCVBUFFORCE
+
+  #ifndef SO_PASSSEC
+    #define SO_PASSSEC 34
+  #endif // SO_PASSSEC
+
+  #ifndef SO_TIMESTAMPNS_OLD
+    #define SO_TIMESTAMPNS_OLD 35
+  #endif // SO_TIMESTAMPNS_OLD
+
+  #ifndef SO_MARK
+    #define SO_MARK 36
+  #endif // SO_MARK
+
+  #ifndef SO_TIMESTAMPING_OLD
+    #define SO_TIMESTAMPING_OLD 37
+  #endif // SO_TIMESTAMPING_OLD
+
+  #ifndef SO_PROTOCOL
+    #define SO_PROTOCOL 38
+  #endif // SO_PROTOCOL
+
+  #ifndef SO_DOMAIN
+    #define SO_DOMAIN 39
+  #endif // SO_DOMAIN
+
+  #ifndef SO_RXQ_OVFL
+    #define SO_RXQ_OVFL 40
+  #endif // SO_RXQ_OVFL
+
+  #ifndef SO_WIFI_STATUS
+    #define SO_WIFI_STATUS 41
+  #endif // SO_WIFI_STATUS
+
+  #ifndef SO_PEEK_OFF
+    #define SO_PEEK_OFF 42
+  #endif // SO_PEEK_OFF
+
+  #ifndef SO_NOFCS
+    #define SO_NOFCS 43
+  #endif // SO_NOFCS
+
+  #ifndef SO_LOCK_FILTER
+    #define SO_LOCK_FILTER 44
+  #endif // SO_LOCK_FILTER
+
+  #ifndef SO_SELECT_ERR_QUEUE
+    #define SO_SELECT_ERR_QUEUE 45
+  #endif // SO_SELECT_ERR_QUEUE
+
+  #ifndef SO_BUSY_POLL
+    #define SO_BUSY_POLL 46
+  #endif // SO_BUSY_POLL
+
+  #ifndef SO_MAX_PACING_RATE
+    #define SO_MAX_PACING_RATE 47
+  #endif // SO_MAX_PACING_RATE
+
+  #ifndef SO_BPF_EXTENSIONS
+    #define SO_BPF_EXTENSIONS 48
+  #endif // SO_BPF_EXTENSIONS
+
+  #ifndef SO_INCOMING_CPU
+    #define SO_INCOMING_CPU 49
+  #endif // SO_INCOMING_CPU
+
+  #ifndef SO_ATTACH_BPF
+    #define SO_ATTACH_BPF 50
+  #endif // SO_ATTACH_BPF
+
+  #ifndef SO_DETACH_BPF
+    #define SO_DETACH_BPF SO_DETACH_FILTER
+  #endif // SO_DETACH_BPF
+
+  #ifndef SO_ATTACH_REUSEPORT_CBPF
+    #define SO_ATTACH_REUSEPORT_CBPF 51
+  #endif // SO_ATTACH_REUSEPORT_CBPF
+
+  #ifndef SO_ATTACH_REUSEPORT_EBPF
+    #define SO_ATTACH_REUSEPORT_EBPF 52
+  #endif // SO_ATTACH_REUSEPORT_EBPF
+
+  #ifndef SO_CNX_ADVICE
+    #define SO_CNX_ADVICE 53
+  #endif // SO_CNX_ADVICE
+
+  #ifndef SCM_TIMESTAMPING_OPT_STATS
+    #define SCM_TIMESTAMPING_OPT_STATS 54
+  #endif // SCM_TIMESTAMPING_OPT_STATS
+
+  #ifndef SO_MEMINFO
+    #define SO_MEMINFO 55
+  #endif // SO_MEMINFO
+
+  #ifndef SO_INCOMING_NAPI_ID
+    #define SO_INCOMING_NAPI_ID 56
+  #endif // SO_INCOMING_NAPI_ID
+
+  #ifndef SO_COOKIE
+    #define SO_COOKIE 57
+  #endif // SO_COOKIE
+
+  #ifndef SCM_TIMESTAMPING_PKTINFO
+    #define SCM_TIMESTAMPING_PKTINFO 58
+  #endif // SCM_TIMESTAMPING_PKTINFO
+
+  #ifndef SO_PEERGROUPS
+    #define SO_PEERGROUPS 59
+  #endif // SO_PEERGROUPS
+
+  #ifndef SO_ZEROCOPY
+    #define SO_ZEROCOPY 60
+  #endif // SO_ZEROCOPY
+
+  #ifndef SO_TXTIME
+    #define SO_TXTIME 61
+  #endif // SO_TXTIME
+
+  #ifndef SO_BINDTOIFINDEX
+    #define SO_BINDTOIFINDEX 62
+  #endif // SO_BINDTOIFINDEX
+
+  #ifndef SO_TIMESTAMP_NEW
+    #define SO_TIMESTAMP_NEW 63
+  #endif // SO_TIMESTAMP_NEW
+
+  #ifndef SO_TIMESTAMPNS_NEW
+    #define SO_TIMESTAMPNS_NEW 64
+  #endif // SO_TIMESTAMPNS_NEW
+
+  #ifndef SO_TIMESTAMPING_NEW
+    #define SO_TIMESTAMPING_NEW 65
+  #endif // SO_TIMESTAMPING_NEW
+
+  #ifndef SO_RCVTIMEO_NEW
+    #define SO_RCVTIMEO_NEW 66
+  #endif // SO_RCVTIMEO_NEW
+
+  #ifndef SO_SNDTIMEO_NEW
+    #define SO_SNDTIMEO_NEW 67
+  #endif // SO_SNDTIMEO_NEW
+
+  #ifndef SO_DETACH_REUSEPORT_BPF
+    #define SO_DETACH_REUSEPORT_BPF 68
+  #endif // SO_DETACH_REUSEPORT_BPF
+
+  #ifndef SO_PREFER_BUSY_POLL
+    #define SO_PREFER_BUSY_POLL 69
+  #endif // SO_PREFER_BUSY_POLL
+
+  #ifndef SO_BUSY_POLL_BUDGET
+    #define SO_BUSY_POLL_BUDGET 70
+  #endif // SO_BUSY_POLL_BUDGET
+
+  #ifndef SO_NETNS_COOKIE
+    #define SO_NETNS_COOKIE 71
+  #endif // SO_NETNS_COOKIE
+
+  #ifndef SO_BUF_LOCK
+    #define SO_BUF_LOCK 72
+  #endif // SO_BUF_LOCK
+
+  #ifndef SO_RESERVE_MEM
+    #define SO_RESERVE_MEM 73
+  #endif // SO_RESERVE_MEM
+
+  #ifndef SO_TXREHASH
+    #define SO_TXREHASH 74
+  #endif // SO_TXREHASH
+
+  #ifndef SO_RCVMARK
+    #define SO_RCVMARK 75
+  #endif // SO_RCVMARK
+
+  #ifndef SO_PASSPIDFD
+    #define SO_PASSPIDFD 76
+  #endif // SO_PASSPIDFD
+
+  #ifndef SO_PEERPIDFD
+    #define SO_PEERPIDFD 77
+  #endif // SO_PEERPIDFD
+
+  #ifndef SO_DEVMEM_LINEAR
+    #define SO_DEVMEM_LINEAR 78
+  #endif // SO_DEVMEM_LINEAR
+
+  #ifndef SO_DEVMEM_DMABUF
+    #define SO_DEVMEM_DMABUF 79
+  #endif // SO_DEVMEM_DMABUF
+
+  #ifndef SO_DEVMEM_DONTNEED
+    #define SO_DEVMEM_DONTNEED 80
+  #endif // SO_DEVMEM_DONTNEED
+
+  #ifndef SCM_TS_OPT_ID
+    #define SCM_TS_OPT_ID 81
+  #endif // SCM_TS_OPT_ID
+
+  #ifndef SO_RCVPRIORITY
+    #define SO_RCVPRIORITY 82
+  #endif // SO_RCVPRIORITY
+
+
+  // The SOL_* defines.
+  #ifndef SOL_RAW
+    #define SOL_RAW 255
+  #endif // SOL_RAW
+
+  #ifndef SOL_DECNET
+    #define SOL_DECNET 261
+  #endif // SOL_DECNET
+
+  #ifndef SOL_X25
+    #define SOL_X25 262
+  #endif // SOL_X25
+
+  #ifndef SOL_PACKET
+    #define SOL_PACKET 263
+  #endif // SOL_PACKET
+
+  #ifndef SOL_ATM
+    #define SOL_ATM 264
+  #endif // SOL_ATM
+
+  #ifndef SOL_AAL
+    #define SOL_AAL 265
+  #endif // SOL_AAL
+
+  #ifndef SOL_IRDA
+    #define SOL_IRDA 266
+  #endif // SOL_IRDA
+
+  #ifndef SOL_NETBEUI
+    #define SOL_NETBEUI 267
+  #endif // SOL_NETBEUI
+
+  #ifndef SOL_LLC
+    #define SOL_LLC 268
+  #endif // SOL_LLC
+
+  #ifndef SOL_DCCP
+    #define SOL_DCCP 269
+  #endif // SOL_DCCP
+
+  #ifndef SOL_NETLINK
+    #define SOL_NETLINK 270
+  #endif // SOL_NETLINK
+
+  #ifndef SOL_TIPC
+    #define SOL_TIPC 271
+  #endif // SOL_TIPC
+
+  #ifndef SOL_RXRPC
+    #define SOL_RXRPC 272
+  #endif // SOL_RXRPC
+
+  #ifndef SOL_PPPOL2TP
+    #define SOL_PPPOL2TP 273
+  #endif // SOL_PPPOL2TP
+
+  #ifndef SOL_BLUETOOTH
+    #define SOL_BLUETOOTH 274
+  #endif // SOL_BLUETOOTH
+
+  #ifndef SOL_PNPIPE
+    #define SOL_PNPIPE 275
+  #endif // SOL_PNPIPE
+
+  #ifndef SOL_RDS
+    #define SOL_RDS 276
+  #endif // SOL_RDS
+
+  #ifndef SOL_IUCV
+    #define SOL_IUCV 277
+  #endif // SOL_IUCV
+
+  #ifndef SOL_CAIF
+    #define SOL_CAIF 278
+  #endif // SOL_CAIF
+
+  #ifndef SOL_ALG
+    #define SOL_ALG 279
+  #endif // SOL_ALG
+
+  #ifndef SOL_NFC
+    #define SOL_NFC 280
+  #endif // SOL_NFC
+
+  #ifndef SOL_KCM
+    #define SOL_KCM 281
+  #endif // SOL_KCM
+
+  #ifndef SOL_TLS
+    #define SOL_TLS 282
+  #endif // SOL_TLS
+
+  #ifndef SOL_XDP
+    #define SOL_XDP 283
+  #endif // SOL_XDP
+
+  #ifndef SOL_MPTCP
+    #define SOL_MPTCP 284
+  #endif // SOL_MPTCP
+
+  #ifndef SOL_MCTP
+    #define SOL_MCTP 285
+  #endif // SOL_MCTP
+
+  #ifndef SOL_SMC
+    #define SOL_SMC 286
+  #endif // SOL_SMC
+
+  #ifndef SOL_VSOCK
+    #define SOL_VSOCK 287
+  #endif // SOL_VSOCK
+#endif // _di_f_socket_defines_d_
+
+/**
  * Socket address families.
  *
  * Many libc implementations have the AF_* directly map to PF_*.
@@ -61,6 +995,8 @@ extern "C" {
  *   - key:         PF_KEY key management API.
  *   - llc:         Linux LLC.
  *   - local:       Localhost, pipes, Unix sockets, or file sockets (PF_LOCAL, PF_UNIX, PF_FILE).
+ *   - max:         The maximum value for known protocol families (this is not a protocol family).
+ *   - mctp:        MCTP.
  *   - mpls:        MPLS.
  *   - netbeui:     Reserved for 802.2LLC project.
  *   - netlink:     Netlink and BSD (PF_NETLINK and PF_ROUTE).
@@ -79,8 +1015,8 @@ extern "C" {
  *   - tipc:        TIPC sockets.
  *   - vsock:       vSockets.
  *   - wanpipe:     Wanpipe API sockets.
+ *   - xdp:         XDP.
  *   - x25:         Reserved for X.25 project.
- *   - max:         The maximum value for known protocol families (this is not a protocol family).
  */
 #ifndef _di_f_socket_address_family_e_
   enum {
@@ -109,6 +1045,8 @@ extern "C" {
     f_socket_address_family_key_e         = AF_KEY,
     f_socket_address_family_llc_e         = AF_LLC,
     f_socket_address_family_local_e       = AF_LOCAL,
+    f_socket_address_family_max_e         = AF_MAX,
+    f_socket_address_family_mctp_e        = AF_MCTP,
     f_socket_address_family_mpls_e        = AF_MPLS,
     f_socket_address_family_netbeui_e     = AF_NETBEUI,
     f_socket_address_family_netlink_e     = AF_NETLINK,
@@ -128,7 +1066,7 @@ extern "C" {
     f_socket_address_family_vsock_e       = AF_VSOCK,
     f_socket_address_family_wanpipe_e     = AF_WANPIPE,
     f_socket_address_family_x25_e         = AF_X25,
-    f_socket_address_family_max_e         = AF_MAX,
+    f_socket_address_family_xdp_e         = AF_XDP,
   }; // enum
 #endif // _di_f_socket_address_family_e_
 
@@ -158,33 +1096,51 @@ extern "C" {
  * These are flags to pass to either socket receive or socket send functions.
  *
  * f_socket_flag_*_e:
- *   - close_on_exit: Set the close on exit flag for a UNIX socket.
- *   - confirm:       Inform the network layer that "forward process" happened.
- *   - error_queue:   Designate that queue errors should be received from the socket error queue.
- *   - more:          Designate that there is more data to send.
- *   - out_of_band:   Enable receiving out of band data.
- *   - peek:          Process data from the queue without popping it off the stack.
- *   - record_end:    Designate end of record, terminating a sequence.
- *   - route_not:     Do not use a gateway to send this packet.
- *   - signal_not:    Do not send SIGPIPE signal if remote end closed the connection in a stream oriented connection.
- *   - truncate:      Return real length of the packet even if it is truncated to fit into the buffer.
- *   - wait_all:      Block until the full request is satisfied.
- *   - wait_not:      Use non-blocking.
+ *   - batch:            More messages are coming.
+ *   - close_on_exit:    Set the close on exit flag for a UNIX socket.
+ *   - confirm:          Inform the network layer that "forward process" happened.
+ *   - error_queue:      Designate that queue errors should be received from the socket error queue or no data received but extended error from the socket error queue is received..
+ *   - finish:           Finish.
+ *   - more:             Designate that there is more data to send.
+ *   - out_of_band:      Enable receiving out of band data or the message is expedited or out of band data is received.
+ *   - peek:             Process data from the queue without popping it off the stack.
+ *   - proxy:            Supply or ask for additional address.
+ *   - receive_memory:   Receive device memory "skbs" as control message.
+ *   - record_end:       Designate end of record, terminating a sequence or end of record reached.
+ *   - reset:            Reset.
+ *   - route_not:        Do not use a gateway to send this packet.
+ *   - signal_not:       Do not send SIGPIPE signal if remote end closed the connection in a stream oriented connection.
+ *   - synchronize:      Synchronize.
+ *   - truncate:         Return real length of the packet even if it is truncated to fit into the buffer or the data has been truncated due to lack of space in the buffer.
+ *   - truncate_control: Control data lost before delivery or the control data has been truncated due to lack of space in the buffer.
+ *   - wait_all:         Block until the full request is satisfied.
+ *   - wait_not:         Use non-blocking.
+ *   - wait_one:         Wait for at least one packet to return.
+ *   - zero_copy:        User data in kernel path.
  */
 #ifndef _di_f_socket_flag_e_
   enum {
-    f_socket_flag_close_on_exit_e = MSG_CMSG_CLOEXEC,
-    f_socket_flag_confirm_e       = MSG_CONFIRM,
-    f_socket_flag_error_queue_e   = MSG_ERRQUEUE,
-    f_socket_flag_more_e          = MSG_MORE,
-    f_socket_flag_out_of_band_e   = MSG_OOB,
-    f_socket_flag_peek_e          = MSG_PEEK,
-    f_socket_flag_record_end_e    = MSG_EOR,
-    f_socket_flag_route_not_e     = MSG_DONTROUTE,
-    f_socket_flag_signal_not_e    = MSG_NOSIGNAL,
-    f_socket_flag_truncate_e      = MSG_TRUNC,
-    f_socket_flag_wait_all_e      = MSG_WAITALL,
-    f_socket_flag_wait_not_e      = MSG_DONTWAIT,
+    f_socket_flag_batch_e            = MSG_BATCH,
+    f_socket_flag_close_on_exit_e    = MSG_CMSG_CLOEXEC,
+    f_socket_flag_confirm_e          = MSG_CONFIRM,
+    f_socket_flag_error_queue_e      = MSG_ERRQUEUE,
+    f_socket_flag_finish_e           = MSG_FIN,
+    f_socket_flag_more_e             = MSG_MORE,
+    f_socket_flag_out_of_band_e      = MSG_OOB,
+    f_socket_flag_peek_e             = MSG_PEEK,
+    f_socket_flag_proxy_e            = MSG_PROXY,
+    f_socket_flag_receive_memory_e   = MSG_SOCK_DEVMEM,
+    f_socket_flag_record_end_e       = MSG_EOR,
+    f_socket_flag_reset_e            = MSG_RST,
+    f_socket_flag_route_not_e        = MSG_DONTROUTE,
+    f_socket_flag_signal_not_e       = MSG_NOSIGNAL,
+    f_socket_flag_synchronize_e      = MSG_SYN,
+    f_socket_flag_truncate_e         = MSG_TRUNC,
+    f_socket_flag_truncate_control_e = MSG_CTRUNC,
+    f_socket_flag_wait_all_e         = MSG_WAITALL,
+    f_socket_flag_wait_not_e         = MSG_DONTWAIT,
+    f_socket_flag_wait_one_e         = MSG_WAITFORONE,
+    f_socket_flag_zero_copy_e        = MSG_ZEROCOPY,
   }; // enum
 #endif // _di_f_socket_flag_e_
 
@@ -205,6 +1161,8 @@ extern "C" {
  *   - iucv:      Iucv.
  *   - kcm:       Kcm.
  *   - llc:       Llc.
+ *   - mctp:      Mctp.
+ *   - mptcp:     MPTCP.
  *   - netbeui:   Netbeui.
  *   - netlink:   Netlink.
  *   - nfc:       Nfc.
@@ -214,9 +1172,12 @@ extern "C" {
  *   - raw:       Raw.
  *   - rds:       Rds.
  *   - rxrpc:     Rxrpc.
+ *   - smc:       Smc.
  *   - tipc:      Tipc.
  *   - tls:       Tls.
+ *   - vsock:     vSockets.
  *   - x25:       X25.
+ *   - xdp:       xdp.
  */
 #ifndef _di_f_socket_level_e_
   enum {
@@ -231,6 +1192,8 @@ extern "C" {
     f_socket_level_iucv_e      = SOL_IUCV,
     f_socket_level_kcm_e       = SOL_KCM,
     f_socket_level_llc_e       = SOL_LLC,
+    f_socket_level_mctp_e      = SOL_MCTP,
+    f_socket_level_mptcp_e     = SOL_MPTCP,
     f_socket_level_netbeui_e   = SOL_NETBEUI,
     f_socket_level_netlink_e   = SOL_NETLINK,
     f_socket_level_nfc_e       = SOL_NFC,
@@ -240,44 +1203,28 @@ extern "C" {
     f_socket_level_raw_e       = SOL_RAW,
     f_socket_level_rds_e       = SOL_RDS,
     f_socket_level_rxrpc_e     = SOL_RXRPC,
+    f_socket_level_smc_e       = SOL_SMC,
     f_socket_level_tipc_e      = SOL_TIPC,
     f_socket_level_tls_e       = SOL_TLS,
+    f_socket_level_vsock_e     = SOL_VSOCK,
     f_socket_level_x25_e       = SOL_X25,
+    f_socket_level_xdp_e       = SOL_XDP,
   }; // enum
 #endif // _di_f_socket_level_e_
 
 /**
- * Socket Message Flags.
- *
- * These represent responses from socket messages (see recvmsg()).
- *
- * f_socket_message_flag_*_e:
- *   - error_queue:      No data received but extended error from the socket error queue is received.
- *   - out_of_band:      The message is expedited or out of band data is received.
- *   - record_end:       End of record reached.
- *   - truncate:         The data has been truncated due to lack of space in the buffer.
- *   - truncate_control: The control data has been truncated due to lack of space in the buffer.
- */
-#ifndef _di_f_socket_message_flag_e_
-  enum {
-    f_socket_message_flag_error_queue_e      = MSG_ERRQUEUE,
-    f_socket_message_flag_out_of_band_e      = MSG_OOB,
-    f_socket_message_flag_record_end_e       = MSG_EOR,
-    f_socket_message_flag_truncate_e         = MSG_TRUNC,
-    f_socket_message_flag_truncate_control_e = MSG_CTRUNC,
-  }; // enum
-#endif // _di_f_socket_message_flag_e_
-
-/**
  * Socket Options.
  *
  * f_socket_option_*:
  *   - address_reuse:            Re-use address.
  *   - advice_cnx:               CNX Advice.
+ *   - bind_index:               Bind to index.
  *   - bpf_attach:               Attach Berkeley Packet Filter.
  *   - bpf_detach:               Detach Berkeley Packet Filter.
+ *   - bpf_detach_reuse:         Detach Berkeley Packet Filter, re-use port.
  *   - bpf_extensions:           Berkeley Packet Filter extensions.
  *   - broadcast:                broadcast
+ *   - buffer_lock:              Lock buffer.
  *   - buffer_receive:           Receive buffer.
  *   - buffer_receive_force:     Receive buffer (forced).
  *   - buffer_send:              Send buffer.
@@ -287,12 +1234,15 @@ extern "C" {
  *   - compatibility_bsd:        BSD compatibility.
  *   - connection_accept:        Accept connection.
  *   - cookie:                   Cookie.
+ *   - cookie_namespace:         Network namespace cookie.
  *   - cpu_incoming:             Incomming CPU.
  *   - credentials_pass:         Pass credentials.
  *   - credentials_peer:         Peer credentials.
  *   - debug:                    Debug setting.
- *   - device_bind:              Bind device.
  *   - domain:                   Domain.
+ *   - descriptor_pass:          Pass process id file descriptor.
+ *   - descriptor_peer:          Peer process id file descriptor.
+ *   - device_bind:              Bind device.
  *   - ebpf_port_reuse_attach:   Re-use port in E-Berkeley Packet Filter.
  *   - error:                    Error.
  *   - filter_attach:            Attach filter.
@@ -306,18 +1256,26 @@ extern "C" {
  *   - low_at_receive:           Low at receive.
  *   - low_at_send:              Low at send.
  *   - mark:                     Mark.
+ *   - memory_device_buffer_e:   DMA buffered device memory.
+ *   - memory_device_linear_e:   Linear device memory.
+ *   - memory_device_need_not_e: Device memory not needed.
  *   - memory_information:       Memory information.
+ *   - memory_reserve:           Reserve memory.
  *   - name_peer:                Peer name.
  *   - napi_id_incoming:         Incomming NAPI identifier.
  *   - out_of_band_inline:       Inline Out of Band.
  *   - pacing_rate_max:          Max pacing rate.
  *   - peek_off:                 Peek off.
  *   - poll_busy:                Busy poll.
+ *   - poll_busy_prefer:         Busy poll (prefer).
  *   - port_reuse:               Re-use port.
  *   - priority:                 Priority.
  *   - protocol:                 Protocol.
+ *   - receive_mark:             Receive mark.
  *   - receive_overflow:         Receive Overflow.
+ *   - receive_priority:         Receive Priority.
  *   - route_not:                Don't Route.
+ *   - scm_option:               SCM Option identifier.
  *   - security_authentication:  Authentication security.
  *   - security_network:         Network security.
  *   - security_pass:            Pass security.
@@ -325,25 +1283,37 @@ extern "C" {
  *   - security_transport:       Security transport.
  *   - select_error_queue:       Select error queue.
  *   - time_out_receive:         Receive time out.
+ *   - time_out_receive_new:     Receive time out (new).
+ *   - time_out_receive_old:     Receive time out (old).
  *   - time_out_send:            Send time out.
+ *   - time_out_send_new:        Send time out (new).
+ *   - time_out_send_old:        Send time out (old).
  *   - time_stamp:               Time stamp.
  *   - time_stamp_namespace:     Time stamp namespace.
+ *   - time_stamp_namespace_new: Time stamp namespace (new).
+ *   - time_stamp_namespace_old: Time stamp namespace (old).
  *   - time_stamping:            Time stamping.
+ *   - time_stamping_new:        Time stamping (new).
+ *   - time_stamping_old:        Time stamping (old).
  *   - time_stamping_packet:     Time stamping packet.
  *   - time_stamping_stats:      Time stamping statistics.
  *   - time_transmit:            Transmission time.
+ *   - transmit_rehash:          Re-hash transmission.
  *   - type:                     Type.
  *   - wifi_status:              Wifi status.
- *   - zero_copy_d               Zero copy.
+ *   - zero_copy               Zero copy.
  */
 #ifndef _di_f_socket_option_e_
   enum {
     f_socket_option_address_reuse_e            = SO_REUSEADDR,
     f_socket_option_advice_cnx_e               = SO_CNX_ADVICE,
+    f_socket_option_bind_index_e               = SO_BINDTOIFINDEX,
     f_socket_option_bpf_attach_e               = SO_ATTACH_BPF,
     f_socket_option_bpf_detach_e               = SO_DETACH_BPF,
+    f_socket_option_bpf_detach_reuse_e         = SO_DETACH_REUSEPORT_BPF,
     f_socket_option_bpf_extensions_e           = SO_BPF_EXTENSIONS,
     f_socket_option_broadcast_e                = SO_BROADCAST,
+    f_socket_option_buffer_lock_e              = SO_BUF_LOCK,
     f_socket_option_buffer_receive_e           = SO_RCVBUF,
     f_socket_option_buffer_receive_force_e     = SO_RCVBUFFORCE,
     f_socket_option_buffer_send_e              = SO_SNDBUF,
@@ -353,12 +1323,15 @@ extern "C" {
     f_socket_option_compatibility_bsd_e        = SO_BSDCOMPAT,
     f_socket_option_connection_accept_e        = SO_ACCEPTCONN,
     f_socket_option_cookie_e                   = SO_COOKIE,
+    f_socket_option_cookie_namespace_e         = SO_NETNS_COOKIE,
     f_socket_option_cpu_incoming_e             = SO_INCOMING_CPU,
     f_socket_option_credentials_pass_e         = SO_PASSCRED,
     f_socket_option_credentials_peer_e         = SO_PEERCRED,
     f_socket_option_debug_e                    = SO_DEBUG,
-    f_socket_option_device_bind_e              = SO_BINDTODEVICE,
     f_socket_option_domain_e                   = SO_DOMAIN,
+    f_socket_option_descriptor_pass_e          = SO_PASSPIDFD,
+    f_socket_option_descriptor_peer_e          = SO_PEERPIDFD,
+    f_socket_option_device_bind_e              = SO_BINDTODEVICE,
     f_socket_option_ebpf_port_reuse_attach_e   = SO_ATTACH_REUSEPORT_EBPF,
     f_socket_option_error_e                    = SO_ERROR,
     f_socket_option_filter_attach_e            = SO_ATTACH_FILTER,
@@ -372,18 +1345,26 @@ extern "C" {
     f_socket_option_low_at_receive_e           = SO_RCVLOWAT,
     f_socket_option_low_at_send_e              = SO_SNDLOWAT,
     f_socket_option_mark_e                     = SO_MARK,
+    f_socket_option_memory_device_buffer_e     = SO_DEVMEM_DMABUF,
+    f_socket_option_memory_device_linear_e     = SO_DEVMEM_LINEAR,
+    f_socket_option_memory_device_need_not_e   = SO_DEVMEM_DONTNEED,
     f_socket_option_memory_information_e       = SO_MEMINFO,
+    f_socket_option_memory_reserve_e           = SO_RESERVE_MEM,
     f_socket_option_name_peer_e                = SO_PEERNAME,
     f_socket_option_napi_id_incoming_e         = SO_INCOMING_NAPI_ID,
     f_socket_option_out_of_band_inline_e       = SO_OOBINLINE,
     f_socket_option_pacing_rate_max_e          = SO_MAX_PACING_RATE,
     f_socket_option_peek_off_e                 = SO_PEEK_OFF,
     f_socket_option_poll_busy_e                = SO_BUSY_POLL,
+    f_socket_option_poll_busy_prefer_e         = SO_PREFER_BUSY_POLL,
     f_socket_option_port_reuse_e               = SO_REUSEPORT,
     f_socket_option_priority_e                 = SO_PRIORITY,
     f_socket_option_protocol_e                 = SO_PROTOCOL,
+    f_socket_option_receive_mark_e             = SO_RCVMARK,
     f_socket_option_receive_overflow_e         = SO_RXQ_OVFL,
+    f_socket_option_receive_priority_e         = SO_RCVPRIORITY,
     f_socket_option_route_not_e                = SO_DONTROUTE,
+    f_socket_option_scm_option_id              = SCM_TS_OPT_ID,
     f_socket_option_security_authentication_e  = SO_SECURITY_AUTHENTICATION,
     f_socket_option_security_network_e         = SO_SECURITY_ENCRYPTION_NETWORK,
     f_socket_option_security_pass_e            = SO_PASSSEC,
@@ -391,13 +1372,22 @@ extern "C" {
     f_socket_option_security_transport_e       = SO_SECURITY_ENCRYPTION_TRANSPORT,
     f_socket_option_select_error_queue_e       = SO_SELECT_ERR_QUEUE,
     f_socket_option_time_out_receive_e         = SO_RCVTIMEO,
+    f_socket_option_time_out_receive_new_e     = SO_RCVTIMEO_NEW,
+    f_socket_option_time_out_receive_old_e     = SO_RCVTIMEO_OLD,
     f_socket_option_time_out_send_e            = SO_SNDTIMEO,
+    f_socket_option_time_out_send_new_e        = SO_SNDTIMEO_NEW,
+    f_socket_option_time_out_send_old_e        = SO_SNDTIMEO_OLD,
     f_socket_option_time_stamp_e               = SO_TIMESTAMP,
     f_socket_option_time_stamp_namespace_e     = SO_TIMESTAMPNS,
+    f_socket_option_time_stamp_namespace_new_e = SO_TIMESTAMPNS_NEW,
+    f_socket_option_time_stamp_namespace_old_e = SO_TIMESTAMPNS_OLD,
     f_socket_option_time_stamping_e            = SO_TIMESTAMPING,
+    f_socket_option_time_stamping_new_e        = SO_TIMESTAMPING_NEW,
+    f_socket_option_time_stamping_old_e        = SO_TIMESTAMPING_OLD,
     f_socket_option_time_stamping_packet_e     = SCM_TIMESTAMPING_PKTINFO,
     f_socket_option_time_stamping_stats_e      = SCM_TIMESTAMPING_OPT_STATS,
     f_socket_option_time_transmit_e            = SO_TXTIME,
+    f_socket_option_transmit_rehash_e          = SO_TXREHASH,
     f_socket_option_type_e                     = SO_TYPE,
     f_socket_option_wifi_status_e              = SO_WIFI_STATUS,
     f_socket_option_zero_copy_e                = SO_ZEROCOPY,
@@ -410,30 +1400,51 @@ extern "C" {
  * Disclaimer: This may be different from system to system depending on the libc and other factors.
  *
  * f_socket_protocol_*_e:
- *  - ip:              Internet Protocol and pseudo protocol number or IPv6 Hop by Hop Option (RFC1883).
+ *  - adfs:            ADFS.
  *  - ah:              Authentication Header (RFC2402).
+ *  - ahip:            AHIP.
+ *  - argus:           Argus.
  *  - ax25:            AX.25 Frames.
+ *  - bha:             BHA.
+ *  - brsatmon:        BRSATMON.
+ *  - cftp:            CFTP.
+ *  - chaos:           Chaos.
+ *  - cphb:            CPHB.
+ *  - cpnx:            CPNX.
  *  - dccp:            Datagram Congestion Control Prot. (RFC4340).
  *  - ddp:             Datagram Delivery Protocol.
+ *  - dgp:             DGP.
+ *  - done:            DONE.
+ *  - dstopts:         DSTOPTS.
  *  - egp:             Exterior Gateway Protocol
- *  - eigrp:           Enhanced Interior Routing Protocol.
+ *  - emcon:           EMCON.
  *  - encap:           Yet Another IP Encapsulation (RFC1241).
  *  - encryption:      Any private encryption scheme.
+ *  - eon:             EON.
  *  - esp:             Encapsulated Security Payload (RFC2406).
  *  - etherip:         Ethernet within IP Encapsulation (RFC3378).
  *  - fc:              Fibre Channel.
  *  - ggp:             Gateway-Gateway Protocol.
+ *  - gmtp:            GMTP.
  *  - gre:             General Routing Encapsulation.
+ *  - hello:           Hello.
  *  - hip:             Host Identity Protocol.
  *  - hmp:             Host Monitoring Protocol.
  *  - icmp:            internet control message protocol.
  *  - idpr_cmtp:       IDPR Control Message Transport.
+ *  - idpr:            IDPR.
  *  - idrp:            Inter-Domain Routing Protocol.
  *  - igmp:            Internet Group Management.
  *  - igp:             Any private Interior Gateway Protocol.
+ *  - igrp:            Enhanced Interior Routing Protocol.
+ *  - inlsp:           INLSP.
+ *  - ip:              Internet Protocol and pseudo protocol number or IPv6 Hop by Hop Option (RFC1883).
  *  - ipcomp:          IP Payload Compression Protocol.
+ *  - ipcv:            IPCV.
  *  - ipencap:         IP Encapsulated in IP.
- *  - ipip:            IP within IP Encapsulation Protocol
+ *  - ipeip:           IP within IP Encapsulation Protocol
+ *  - ippc:            IPPC.
+ *  - ipv4:            Internet Protocol Version 4.
  *  - ipv6:            Internet Protocol Version 6.
  *  - ipv6_frag:       Internet Protocol Version 6 Fragment Header.
  *  - ipv6_icmp:       ICMP for IPv6.
@@ -442,56 +1453,115 @@ extern "C" {
  *  - ipv6_route:      Internet Protocol Version 6 Routing Header.
  *  - isis:            IS-IS over IPv4.
  *  - iso_tp4:         ISO Transport Protocol class 4 (RFC905).
+ *  - kryptolan:       Krypto LAN.
+ *  - larp:            LARP.
+ *  - leaf_1:          LEAF 1.
+ *  - leaf_2:          LEAF 2.
  *  - l2tp:            Layer Two Tunneling Protocol (RFC2661).
  *  - manet:           MANET Protocols (RFC5498).
+ *  - meas:            MEAS.
+ *  - mhrp:            MHRP.
+ *  - micp:            MICP.
+ *  - mobile:          Mobile.
  *  - mobility_header: Mobility Support for IPv6 (RFC3775).
  *  - mpls_in_ip:      MPLS-in-IP (RFC4023).
- *  - ospf:            Open Shortest Path First IGP.
+ *  - mtp:             MTP.
+ *  - mux:             MUX.
+ *  - nhrp:            NHRP.
+ *  - none:            NONE.
+ *  - nsp:             NSP.
+ *  - nvpii:           NVPII.
+ *  - ospfigp:         Open Shortest Path First IGP.
+ *  - pfsync:          PFSYNC.
+ *  - pgm:             PGM.
+ *  - pigp:            PIGP.
  *  - pim:             Protocol Independent Multicast.
+ *  - prm:             PRM.
  *  - pup:             PARC Universal Packet.
+ *  - pvp:             PVP.
+ *  - rccmon:          RCCMON.
  *  - rdp:             Reliable Datagram Protocol.
  *  - rohc:            Robust Header Compression.
  *  - rspf:            Radio Shortest Path First.
  *  - rsvp:            Reservation Protocol.
+ *  - rvd:             RVD.
+ *  - satexpak:        SATEXPAK.
+ *  - satmon:          SATMON.
+ *  - sccsp:           SCCSP.
  *  - sctp:            Stream Control Transmission Protocol.
  *  - shim6:           Shim6 Protocol (RFC5533).
  *  - skip:            SKIP.
+ *  - srpc:            SRPC.
  *  - st:              ST datagram mode.
+ *  - svmtp:           SVMTP.
+ *  - swipe:           Swipe.
+ *  - tcf:             TCF.
  *  - tcp:             Transmission Control Protocol
+ *  - tlsp:            TLSP.
+ *  - trunc_1:         Trunc 1.
+ *  - trunc_2:         Trunc 2.
+ *  - ttp:             TTP.
  *  - udp:             User Datagram Protocol.
  *  - udplite:         UDP-Lite (RFC3828).
+ *  - vines:           VINES.
+ *  - visa:            VISA.
  *  - vmtp:            Versatile Message Transport.
  *  - vrrp:            Virtual Router Redundancy Protocol (RFC5798).
+ *  - wbexpak:         WBEXPAK.
+ *  - wbmon:           WBMON.
  *  - wesp:            Wrapped Encapsulating Security Payload.
+ *  - wsn:             WSN.
+ *  - xnet:            XNET.
  *  - xns_idp:         Xerox NS IDP.
  *  - xtp:             Xpress Transfer Protocol.
  */
 #ifndef _di_f_socket_protocol_e_
   enum {
-    f_socket_protocol_ip_e              = 0,
+    f_socket_protocol_adfs_e            = 68,
     f_socket_protocol_ah_e              = 51,
+    f_socket_protocol_ahip_e            = 61,
+    f_socket_protocol_argus_e           = 13,
     f_socket_protocol_ax25_e            = 93,
+    f_socket_protocol_bha_e             = 49,
+    f_socket_protocol_brsatmon_e        = 76,
+    f_socket_protocol_cftp_e            = 62,
+    f_socket_protocol_chaos_e           = 16,
+    f_socket_protocol_cphb_e            = 73,
+    f_socket_protocol_cpnx_e            = 72,
     f_socket_protocol_dccp_e            = 33,
     f_socket_protocol_ddp_e             = 37,
+    f_socket_protocol_dgp_e             = 86,
+    f_socket_protocol_done_e            = 257,
+    f_socket_protocol_dstopts_e         = 60,
     f_socket_protocol_egp_e             = 8,
-    f_socket_protocol_eigrp_e           = 88,
+    f_socket_protocol_emcon_e           = 14,
     f_socket_protocol_encap_e           = 98,
     f_socket_protocol_encryption_e      = 99,
+    f_socket_protocol_eon_e             = 80,
     f_socket_protocol_esp_e             = 50,
     f_socket_protocol_etherip_e         = 97,
     f_socket_protocol_fc_e              = 133,
     f_socket_protocol_ggp_e             = 3,
+    f_socket_protocol_gmtp_e            = 100,
     f_socket_protocol_gre_e             = 47,
+    f_socket_protocol_hello_e           = 63,
     f_socket_protocol_hip_e             = 139,
     f_socket_protocol_hmp_e             = 20,
     f_socket_protocol_icmp_e            = 1,
     f_socket_protocol_idpr_cmtp_e       = 38,
+    f_socket_protocol_idpr_e            = 35,
     f_socket_protocol_idrp_e            = 45,
     f_socket_protocol_igmp_e            = 2,
     f_socket_protocol_igp_e             = 9,
+    f_socket_protocol_igrp_e            = 88,
+    f_socket_protocol_inlsp_e           = 52,
+    f_socket_protocol_ip_e              = 0,
     f_socket_protocol_ipcomp_e          = 108,
+    f_socket_protocol_ipcv_e            = 71,
     f_socket_protocol_ipencap_e         = 4,
-    f_socket_protocol_ipip_e            = 94,
+    f_socket_protocol_ipeip_e           = 94,
+    f_socket_protocol_ippc_e            = 67,
+    f_socket_protocol_ipv4_e            = 4,
     f_socket_protocol_ipv6_e            = 41,
     f_socket_protocol_ipv6_frag_e       = 44,
     f_socket_protocol_ipv6_icmp_e       = 58,
@@ -500,27 +1570,65 @@ extern "C" {
     f_socket_protocol_ipv6_route_e      = 43,
     f_socket_protocol_isis_e            = 124,
     f_socket_protocol_iso_tp4_e         = 29,
+    f_socket_protocol_kryptolan_e       = 65,
+    f_socket_protocol_larp_e            = 91,
+    f_socket_protocol_leaf_1_e          = 25,
+    f_socket_protocol_leaf_2_e          = 26,
     f_socket_protocol_l2tp_e            = 115,
     f_socket_protocol_manet_e           = 138,
+    f_socket_protocol_meas_e            = 19,
+    f_socket_protocol_mhrp_e            = 49,
+    f_socket_protocol_micp_e            = 95,
+    f_socket_protocol_mobile_e          = 55,
     f_socket_protocol_mobility_header_e = 135,
     f_socket_protocol_mpls_in_ip_e      = 137,
-    f_socket_protocol_ospf_e            = 89,
+    f_socket_protocol_mtp_e             = 92,
+    f_socket_protocol_mux_e             = 18,
+    f_socket_protocol_nhrp_e            = 54,
+    f_socket_protocol_none_e            = 59,
+    f_socket_protocol_nsp_e             = 31,
+    f_socket_protocol_nvpii_e           = 11,
+    f_socket_protocol_ospfigp_e         = 89,
+    f_socket_protocol_pfsync_e          = 240,
+    f_socket_protocol_pgm_e             = 113,
+    f_socket_protocol_pigp_e            = 9,
     f_socket_protocol_pim_e             = 103,
+    f_socket_protocol_prm_e             = 21,
     f_socket_protocol_pup_e             = 12,
+    f_socket_protocol_pvp_e             = 75,
+    f_socket_protocol_rccmon_e          = 10,
     f_socket_protocol_rdp_e             = 27,
     f_socket_protocol_rohc_e            = 142,
     f_socket_protocol_rspf_e            = 73,
     f_socket_protocol_rsvp_e            = 46,
+    f_socket_protocol_rvd_e             = 66,
+    f_socket_protocol_satexpak_e        = 64,
+    f_socket_protocol_satmon_e          = 69,
+    f_socket_protocol_sccsp_e           = 96,
     f_socket_protocol_sctp_e            = 132,
     f_socket_protocol_shim6_e           = 140,
     f_socket_protocol_skip_e            = 57,
+    f_socket_protocol_srpc_e            = 90,
     f_socket_protocol_st_e              = 5,
+    f_socket_protocol_svmtp_e           = 82,
+    f_socket_protocol_swipe_e           = 53,
+    f_socket_protocol_tcf_e             = 87,
     f_socket_protocol_tcp_e             = 6,
+    f_socket_protocol_tlsp_e            = 56,
+    f_socket_protocol_trunc_1_e         = 23,
+    f_socket_protocol_trunc_2_e         = 24,
+    f_socket_protocol_ttp_e             = 84,
     f_socket_protocol_udp_e             = 17,
     f_socket_protocol_udplite_e         = 136,
+    f_socket_protocol_vines_e           = 83,
+    f_socket_protocol_visa_e            = 70,
     f_socket_protocol_vmtp_e            = 81,
     f_socket_protocol_vrrp_e            = 112,
+    f_socket_protocol_wbexpak_e         = 79,
+    f_socket_protocol_wbmon_e           = 78,
     f_socket_protocol_wesp_e            = 141,
+    f_socket_protocol_wsn_e             = 74,
+    f_socket_protocol_xnet_e            = 15,
     f_socket_protocol_xns_idp_e         = 22,
     f_socket_protocol_xtp_e             = 36,
   }; // enum
@@ -555,6 +1663,8 @@ extern "C" {
  *   - key:         PF_KEY key management API.
  *   - llc:         Linux LLC.
  *   - local:       Localhost, pipes, Unix sockets, or file sockets (PF_LOCAL, PF_UNIX, PF_FILE).
+ *   - max:         The maximum value for known protocol families (this is not a protocol family).
+ *   - mctp:        MCTP.
  *   - mpls:        MPLS.
  *   - netbeui:     Reserved for 802.2LLC project.
  *   - netlink:     Netlink and BSD (PF_NETLINK and PF_ROUTE).
@@ -574,7 +1684,7 @@ extern "C" {
  *   - vsock:       vSockets.
  *   - wanpipe:     Wanpipe API sockets.
  *   - x25:         Reserved for X.25 project.
- *   - max:         The maximum value for known protocol families (this is not a protocol family).
+ *   - xdp:         XDP.
  */
 #ifndef _di_f_socket_protocol_family_e_
   enum {
@@ -603,6 +1713,8 @@ extern "C" {
     f_socket_protocol_family_key_e         = PF_KEY,
     f_socket_protocol_family_llc_e         = PF_LLC,
     f_socket_protocol_family_local_e       = PF_LOCAL,
+    f_socket_protocol_family_max_e         = PF_MAX,
+    f_socket_protocol_family_mctp_e        = PF_MCTP,
     f_socket_protocol_family_mpls_e        = PF_MPLS,
     f_socket_protocol_family_netbeui_e     = PF_NETBEUI,
     f_socket_protocol_family_netlink_e     = PF_NETLINK,
@@ -622,7 +1734,7 @@ extern "C" {
     f_socket_protocol_family_vsock_e       = PF_VSOCK,
     f_socket_protocol_family_wanpipe_e     = PF_WANPIPE,
     f_socket_protocol_family_x25_e         = PF_X25,
-    f_socket_protocol_family_max_e         = PF_MAX,
+    f_socket_protocol_family_xDP_e         = PF_XDP,
   }; // enum
 #endif // _di_f_socket_protocol_family_e_