X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fload-fragment.c;h=6ec5090197736d510c129a461e05cfd57821aa74;hb=a96257af783f1d2c35a957466856e62ebf82bcad;hp=3440d9158f1c91df0b94c7eb4cec9305426fa06a;hpb=7a22745ac3c267edf89a23a920a28d86df5d0f9a;p=elogind.git diff --git a/src/load-fragment.c b/src/load-fragment.c index 3440d9158..6ec509019 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -198,7 +198,7 @@ static int config_parse_listen( void *data, void *userdata) { - SocketPort *p; + SocketPort *p, *tail; Socket *s; assert(filename); @@ -220,6 +220,17 @@ static int config_parse_listen( } path_kill_slashes(p->path); + + } else if (streq(lvalue, "ListenSpecial")) { + p->type = SOCKET_SPECIAL; + + if (!(p->path = strdup(rvalue))) { + free(p); + return -ENOMEM; + } + + path_kill_slashes(p->path); + } else if (streq(lvalue, "ListenNetlink")) { p->type = SOCKET_SOCKET; @@ -255,7 +266,12 @@ static int config_parse_listen( } p->fd = -1; - LIST_PREPEND(SocketPort, port, s->ports, p); + + if (s->ports) { + LIST_FIND_TAIL(SocketPort, port, s->ports, tail); + LIST_INSERT_AFTER(SocketPort, port, s->ports, tail, p); + } else + LIST_PREPEND(SocketPort, port, s->ports, p); return 0; } @@ -1861,6 +1877,7 @@ static int load_from_path(Unit *u, const char *path) { { "AllowIsolate", config_parse_bool, 0, &u->meta.allow_isolate, "Unit" }, { "DefaultDependencies", config_parse_bool, 0, &u->meta.default_dependencies, "Unit" }, { "OnFailureIsolate", config_parse_bool, 0, &u->meta.on_failure_isolate, "Unit" }, + { "IgnoreOnIsolate", config_parse_bool, 0, &u->meta.ignore_on_isolate, "Unit" }, { "JobTimeoutSec", config_parse_usec, 0, &u->meta.job_timeout, "Unit" }, { "ConditionPathExists", config_parse_condition_path, CONDITION_PATH_EXISTS, u, "Unit" }, { "ConditionPathIsDirectory", config_parse_condition_path, CONDITION_PATH_IS_DIRECTORY, u, "Unit" }, @@ -1902,6 +1919,7 @@ static int load_from_path(Unit *u, const char *path) { { "ListenSequentialPacket", config_parse_listen, 0, &u->socket, "Socket" }, { "ListenFIFO", config_parse_listen, 0, &u->socket, "Socket" }, { "ListenNetlink", config_parse_listen, 0, &u->socket, "Socket" }, + { "ListenSpecial", config_parse_listen, 0, &u->socket, "Socket" }, { "BindIPv6Only", config_parse_socket_bind, 0, &u->socket, "Socket" }, { "Backlog", config_parse_unsigned, 0, &u->socket.backlog, "Socket" }, { "BindToDevice", config_parse_bindtodevice, 0, &u->socket, "Socket" },