]>
git.ipfire.org Git - thirdparty/systemd.git/blob - socket.c
1 /*-*- Mode: C; c-basic-offset: 8 -*-*/
6 static int socket_load(Name
*n
) {
9 exec_context_defaults(&s
->exec_context
);
11 return name_load_fragment_and_dropin(n
);
14 static void socket_dump(Name
*n
, FILE *f
, const char *prefix
) {
16 static const char* const state_table
[_SOCKET_STATE_MAX
] = {
17 [SOCKET_DEAD
] = "dead",
18 [SOCKET_START_PRE
] = "start-pre",
19 [SOCKET_START_POST
] = "start-post",
20 [SOCKET_LISTENING
] = "listening",
21 [SOCKET_RUNNING
] = "running",
22 [SOCKET_STOP_PRE
] = "stop-pre",
23 [SOCKET_STOP_POST
] = "stop-post",
24 [SOCKET_MAINTAINANCE
] = "maintainance"
27 static const char* const command_table
[_SOCKET_EXEC_MAX
] = {
28 [SOCKET_EXEC_START_PRE
] = "StartPre",
29 [SOCKET_EXEC_START_POST
] = "StartPost",
30 [SOCKET_EXEC_STOP_PRE
] = "StopPre",
31 [SOCKET_EXEC_STOP_POST
] = "StopPost"
35 Socket
*s
= SOCKET(n
);
42 if ((r
= address_print(&n
->socket
.address
, &k
)) < 0)
48 "%sSocket State: %s\n"
50 prefix
, state_table
[s
->state
],
55 exec_context_dump(&s
->exec_context
, f
, prefix
);
57 for (c
= 0; c
< _SOCKET_EXEC_MAX
; c
++) {
60 LIST_FOREACH(i
, s
->exec_command
[c
])
61 fprintf(f
, "%s%s: %s\n", prefix
, command_table
[c
], i
->path
);
65 static NameActiveState
socket_active_state(Name
*n
) {
67 static const NameActiveState table
[_SOCKET_STATE_MAX
] = {
68 [SOCKET_DEAD
] = NAME_INACTIVE
,
69 [SOCKET_START_PRE
] = NAME_ACTIVATING
,
70 [SOCKET_START_POST
] = NAME_ACTIVATING
,
71 [SOCKET_LISTENING
] = NAME_ACTIVE
,
72 [SOCKET_RUNNING
] = NAME_ACTIVE
,
73 [SOCKET_STOP_PRE
] = NAME_DEACTIVATING
,
74 [SOCKET_STOP_POST
] = NAME_DEACTIVATING
,
75 [SOCKET_MAINTAINANCE
] = NAME_INACTIVE
,
78 return table
[SOCKET(n
)->state
];
81 static void socket_free_hook(Name
*n
) {
84 Socket
*s
= SOCKET(n
);
88 for (i
= 0; i
< s
->n_fds
; i
++)
89 close_nointr(s
->fds
[i
]);
91 exec_context_free(&s
->exec_context
);
93 for (c
= 0; c
< _SOCKET_EXEC_MAX
; c
++)
94 exec_command_free_list(s
->exec_command
[c
]);
97 s
->service
->socket
= NULL
;
100 const NameVTable socket_vtable
= {
110 .active_state
= socket_active_state
,
112 .free_hook
= socket_free_hook