chiark / gitweb /
basic SO_REUSEPORT support
[elogind.git] / src / core / socket.h
index f099520dcef1015164dc9b4067c4d40752a0f4a7..8f9dfdbfb0f8c58300a3b7713320d834e207d59d 100644 (file)
@@ -102,6 +102,7 @@ struct Socket {
         ExecCommand* exec_command[_SOCKET_EXEC_COMMAND_MAX];
         ExecContext exec_context;
         KillContext kill_context;
+        CGroupContext cgroup_context;
 
         /* For Accept=no sockets refers to the one service we'll
         activate. For Accept=yes sockets is either NULL, or filled
@@ -130,6 +131,10 @@ struct Socket {
         bool broadcast;
         bool pass_cred;
         bool pass_sec;
+
+        /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
+        SocketAddressBindIPv6Only bind_ipv6_only;
+
         int priority;
         int mark;
         size_t receive_buffer;
@@ -139,12 +144,10 @@ struct Socket {
         size_t pipe_size;
         char *bind_to_device;
         char *tcp_congestion;
+        bool reuseport;
         long mq_maxmsg;
         long mq_msgsize;
 
-        /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
-        SocketAddressBindIPv6Only bind_ipv6_only;
-
         char *smack;
         char *smack_ip_in;
         char *smack_ip_out;
@@ -163,13 +166,17 @@ int socket_add_one_mount_link(Socket *s, Mount *m);
 /* Called from the service code when a per-connection service ended */
 void socket_connection_unref(Socket *s);
 
+void socket_free_ports(Socket *s);
+
 extern const UnitVTable socket_vtable;
 
-const char* socket_state_to_string(SocketState i);
-SocketState socket_state_from_string(const char *s);
+const char* socket_state_to_string(SocketState i) _const_;
+SocketState socket_state_from_string(const char *s) _pure_;
+
+const char* socket_exec_command_to_string(SocketExecCommand i) _const_;
+SocketExecCommand socket_exec_command_from_string(const char *s) _pure_;
 
-const char* socket_exec_command_to_string(SocketExecCommand i);
-SocketExecCommand socket_exec_command_from_string(const char *s);
+const char* socket_result_to_string(SocketResult i) _const_;
+SocketResult socket_result_from_string(const char *s) _pure_;
 
-const char* socket_result_to_string(SocketResult i);
-SocketResult socket_result_from_string(const char *s);
+const char* socket_port_type_to_string(SocketPort *p) _pure_;