diff options
| author | Martin Winter <mwinter@opensourcerouting.org> | 2017-01-24 22:42:11 +0700 |
|---|---|---|
| committer | Martin Winter <mwinter@opensourcerouting.org> | 2017-01-26 00:40:55 +0700 |
| commit | 950765ba1034f125ae8106f1f554bb362abfa108 (patch) | |
| tree | 32a5f1810e77c23a5ecfb029df6081e267207435 /lib/sockopt.c | |
| parent | 780cff2f08530e449fb3bec45483e753a3ce2189 (diff) | |
lib: Add set_socket_path() to sockopt.c to override the path element of a (vty) socket (but keep filename)
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
Diffstat (limited to 'lib/sockopt.c')
| -rw-r--r-- | lib/sockopt.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/sockopt.c b/lib/sockopt.c index 461e1f7f54..570b575a7a 100644 --- a/lib/sockopt.c +++ b/lib/sockopt.c @@ -29,6 +29,29 @@ #include "sockopt.h" #include "sockunion.h" +/* Replace the path of given defaultpath with newpath, but keep filename */ +void +set_socket_path (char *path, char *defaultpath, char *newpath, int maxsize) +{ + char *sock_name; + + sock_name = strrchr(defaultpath, '/'); + if (sock_name) + /* skip '/' */ + sock_name++; + else + /* + * VTYSH_PATH configured as relative path + * during config? Should really never happen for + * sensible config + */ + sock_name = defaultpath; + + strlcpy (path, newpath, maxsize); + strlcat (path, "/", maxsize); + strlcat (path, sock_name, maxsize); +} + void setsockopt_so_recvbuf (int sock, int size) { |
