chiark / gitweb /
unit: remove union Unit
[elogind.git] / src / socket.h
index 01ea48d62f7b82460f0d944b9fdf735bd1e03c97..b6df83aee557eb1f8d3ffcd490109941cc9ff409 100644 (file)
@@ -28,6 +28,7 @@ typedef struct Socket Socket;
 #include "unit.h"
 #include "socket-util.h"
 #include "mount.h"
+#include "service.h"
 
 typedef enum SocketState {
         SOCKET_DEAD,
@@ -76,7 +77,7 @@ typedef struct SocketPort {
 } SocketPort;
 
 struct Socket {
-        Meta meta;
+        Unit meta;
 
         LIST_HEAD(SocketPort, ports);
 
@@ -93,7 +94,7 @@ struct Socket {
         /* For Accept=no sockets refers to the one service we'll
         activate. For Accept=yes sockets is either NULL, or filled
         when the next service we spawn. */
-        Service *service;
+        UnitRef service;
 
         SocketState state, deserialized_state;
 
@@ -103,9 +104,6 @@ struct Socket {
         SocketExecCommand control_command_id;
         pid_t control_pid;
 
-        /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
-        SocketAddressBindIPv6Only bind_ipv6_only;
-
         mode_t directory_mode;
         mode_t socket_mode;
 
@@ -116,6 +114,9 @@ struct Socket {
         /* Socket options */
         bool keep_alive;
         bool free_bind;
+        bool transparent;
+        bool broadcast;
+        bool pass_cred;
         int priority;
         int mark;
         size_t receive_buffer;
@@ -127,6 +128,9 @@ struct Socket {
         char *tcp_congestion;
         long mq_maxmsg;
         long mq_msgsize;
+
+        /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */
+        SocketAddressBindIPv6Only bind_ipv6_only;
 };
 
 /* Called from the service code when collecting fds */