mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
networkctl: rename check_netns_match() -> varlink_connect_networkd()
Then optionally return the varlink connection to the caller.
This commit is contained in:
parent
c48ca17aa8
commit
1dbd2cc72a
@ -93,11 +93,10 @@ JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF;
|
||||
|
||||
STATIC_DESTRUCTOR_REGISTER(arg_drop_in, freep);
|
||||
|
||||
static int check_netns_match(void) {
|
||||
struct stat st;
|
||||
uint64_t id;
|
||||
JsonVariant *reply = NULL;
|
||||
static int varlink_connect_networkd(Varlink **ret_varlink) {
|
||||
_cleanup_(varlink_unrefp) Varlink *vl = NULL;
|
||||
JsonVariant *reply;
|
||||
uint64_t id;
|
||||
int r;
|
||||
|
||||
r = varlink_connect_address(&vl, "/run/systemd/netif/io.systemd.Network");
|
||||
@ -117,18 +116,21 @@ static int check_netns_match(void) {
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (id == 0) {
|
||||
if (id == 0)
|
||||
log_debug("systemd-networkd.service not running in a network namespace (?), skipping netns check.");
|
||||
return 0;
|
||||
else {
|
||||
struct stat st;
|
||||
|
||||
if (stat("/proc/self/ns/net", &st) < 0)
|
||||
return log_error_errno(errno, "Failed to determine our own network namespace ID: %m");
|
||||
|
||||
if (id != st.st_ino)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EREMOTE),
|
||||
"networkctl must be invoked in same network namespace as systemd-networkd.service.");
|
||||
}
|
||||
|
||||
if (stat("/proc/self/ns/net", &st) < 0)
|
||||
return log_error_errno(errno, "Failed to determine our own network namespace ID: %m");
|
||||
|
||||
if (id != st.st_ino)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EREMOTE),
|
||||
"networkctl must be invoked in same network namespace as systemd-networkd.service.");
|
||||
|
||||
if (ret_varlink)
|
||||
*ret_varlink = TAKE_PTR(vl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -162,7 +164,7 @@ int acquire_bus(sd_bus **ret) {
|
||||
return log_error_errno(r, "Failed to connect to system bus: %m");
|
||||
|
||||
if (networkd_is_running()) {
|
||||
r = check_netns_match();
|
||||
r = varlink_connect_networkd(/* ret_varlink = */ NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
} else
|
||||
|
Loading…
x
Reference in New Issue
Block a user