]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
socket-util: add sockopt helper for controlling IP_RECVFRAGSIZE
authorLennart Poettering <lennart@poettering.net>
Mon, 16 Nov 2020 11:41:23 +0000 (12:41 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 7 Dec 2020 12:46:35 +0000 (13:46 +0100)
src/basic/missing_socket.h
src/basic/socket-util.h

index 17bc1a5a0188f9b622d78239221da79c8ddebe2a..30ac297e171716519b748de8f9a752a967785223 100644 (file)
@@ -67,6 +67,14 @@ struct sockaddr_vm {
 #define IPV6_FREEBIND 78
 #endif
 
+#ifndef IP_RECVFRAGSIZE
+#define IP_RECVFRAGSIZE 25
+#endif
+
+#ifndef IPV6_RECVFRAGSIZE
+#define IPV6_RECVFRAGSIZE 77
+#endif
+
 /* linux/sockios.h */
 #ifndef SIOCGSKNS
 #define SIOCGSKNS 0x894C
index e353f82a42124437068d650caaa91876bc30d202..7d77144f43608075652dfea7d6180507890a423e 100644 (file)
@@ -266,6 +266,7 @@ ssize_t recvmsg_safe(int sockfd, struct msghdr *msg, int flags);
 int socket_get_family(int fd, int *ret);
 int socket_set_recvpktinfo(int fd, int af, bool b);
 int socket_set_unicast_if(int fd, int af, int ifi);
+
 int socket_set_option(int fd, int af, int opt_ipv4, int opt_ipv6, int val);
 static inline int socket_set_recverr(int fd, int af, bool b) {
         return socket_set_option(fd, af, IP_RECVERR, IPV6_RECVERR, b);
@@ -282,3 +283,6 @@ static inline int socket_set_freebind(int fd, int af, bool b) {
 static inline int socket_set_transparent(int fd, int af, bool b) {
         return socket_set_option(fd, af, IP_TRANSPARENT, IPV6_TRANSPARENT, b);
 }
+static inline int socket_set_recvfragsize(int fd, int af, bool b) {
+        return socket_set_option(fd, af, IP_RECVFRAGSIZE, IPV6_RECVFRAGSIZE, b);
+}