diff options
author | Tom Gundersen <teg@jklm.no> | 2014-09-09 11:15:37 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-09-09 15:30:10 +0200 |
commit | 4c83d994566718043e61e568cc214bdc4587f869 (patch) | |
tree | 19d720648aee971cc588171d887e1bd4dff889db /src/libsystemd/sd-rtnl/rtnl-util.c | |
parent | b081b27e1433cdc7ac72b25ae8b4db887d79187f (diff) |
udev: event - keep one rtnl per worker, rather than per event
Creating the rtnl context is cheap, but freeing it may not be, due to
synchronous close().
Also drop some excessive logging. We now log about the changing ifname
exactly once.
Diffstat (limited to 'src/libsystemd/sd-rtnl/rtnl-util.c')
-rw-r--r-- | src/libsystemd/sd-rtnl/rtnl-util.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/libsystemd/sd-rtnl/rtnl-util.c b/src/libsystemd/sd-rtnl/rtnl-util.c index 0bc2c9b1f5..fe0f34e125 100644 --- a/src/libsystemd/sd-rtnl/rtnl-util.c +++ b/src/libsystemd/sd-rtnl/rtnl-util.c @@ -26,7 +26,7 @@ #include "rtnl-util.h" #include "rtnl-internal.h" -int rtnl_set_link_name(sd_rtnl *rtnl, int ifindex, const char *name) { +int rtnl_set_link_name(sd_rtnl **rtnl, int ifindex, const char *name) { _cleanup_rtnl_message_unref_ sd_rtnl_message *message = NULL; int r; @@ -34,7 +34,13 @@ int rtnl_set_link_name(sd_rtnl *rtnl, int ifindex, const char *name) { assert(ifindex > 0); assert(name); - r = sd_rtnl_message_new_link(rtnl, &message, RTM_SETLINK, ifindex); + if (!*rtnl) { + r = sd_rtnl_open(rtnl, 0); + if (r < 0) + return r; + } + + r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex); if (r < 0) return r; @@ -42,7 +48,7 @@ int rtnl_set_link_name(sd_rtnl *rtnl, int ifindex, const char *name) { if (r < 0) return r; - r = sd_rtnl_call(rtnl, message, 0, NULL); + r = sd_rtnl_call(*rtnl, message, 0, NULL); if (r < 0) return r; |