diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-02-05 01:35:15 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:32:25 -0700 |
commit | 872344c41094f636fd667b9e619f8f219d814605 (patch) | |
tree | 474af8cb42f203db83c39847d3a6bd11b2b7c8a2 /udevsend.c | |
parent | 86590cd590a9f2fcc5917e8f5c85e024af1e58e0 (diff) | |
download | systemd-872344c41094f636fd667b9e619f8f219d814605.tar.gz systemd-872344c41094f636fd667b9e619f8f219d814605.tar.bz2 systemd-872344c41094f636fd667b9e619f8f219d814605.zip |
[PATCH] udevd - switch socket path to abstract namespace
As Chris Friesen <chris_friesen@sympatico.ca> suggested, here we switch
the unix domains socket path to abstract namespace and get rid of the
socket file in the filesystem.
Hey, this was new to me today. So here a few words:
Linux supports a abstract namespace for sockets. We don't need a
physical file on the filesystem but only a unique string magically
starting with the '\0' character.
strace with real file:
connect(3, {sa_family=AF_UNIX, path="/udev/.udevd.sock"}, 110)
strace with abstract namespace:
connect(3, {sa_family=AF_UNIX, path=@udevd}, 110)
Diffstat (limited to 'udevsend.c')
-rw-r--r-- | udevsend.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/udevsend.c b/udevsend.c index 9dc2b2e841..223647785d 100644 --- a/udevsend.c +++ b/udevsend.c @@ -161,7 +161,8 @@ int main(int argc, char* argv[]) memset(&saddr, 0x00, sizeof(saddr)); saddr.sun_family = AF_LOCAL; - strcpy(saddr.sun_path, UDEVD_SOCK); + /* use abstract namespace for socket path */ + strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH); /* try to connect, if it fails start daemon */ retval = connect(sock, (struct sockaddr *) &saddr, sizeof(saddr)); |