return sd_varlink_reply(vlink, NULL);
}
+
+int vl_method_link_reconfigure(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata) {
+ Manager *manager = ASSERT_PTR(userdata);
+ Link *link;
+ int r;
+
+ assert(vlink);
+
+ r = dispatch_link(vlink, parameters, manager, DISPATCH_LINK_POLKIT | DISPATCH_LINK_MANDATORY, &link);
+ if (r != 0)
+ return r;
+
+ r = varlink_verify_polkit_async(
+ vlink,
+ manager->bus,
+ "org.freedesktop.network1.reconfigure",
+ /* details= */ NULL,
+ &manager->polkit_registry);
+ if (r <= 0)
+ return r;
+
+ r = link_reconfigure_full(link,
+ LINK_RECONFIGURE_UNCONDITIONALLY | LINK_RECONFIGURE_CLEANLY,
+ /* message= */ NULL,
+ /* varlink= */ vlink,
+ /* counter= */ NULL);
+ if (r < 0)
+ return log_link_warning_errno(link, r, "Failed to reconfigure link: %m");
+ if (r > 0)
+ return 0; /* Reply will be sent asynchronously via vlink */
+
+ return sd_varlink_reply(vlink, NULL);
+}
int vl_method_link_down(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
int vl_method_link_renew(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
int vl_method_link_force_renew(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
+int vl_method_link_reconfigure(sd_varlink *vlink, sd_json_variant *parameters, sd_varlink_method_flags_t flags, void *userdata);
"io.systemd.Network.Link.Down", vl_method_link_down,
"io.systemd.Network.Link.Renew", vl_method_link_renew,
"io.systemd.Network.Link.ForceRenew", vl_method_link_force_renew,
+ "io.systemd.Network.Link.Reconfigure", vl_method_link_reconfigure,
"io.systemd.service.Ping", varlink_method_ping,
"io.systemd.service.SetLogLevel", varlink_method_set_log_level,
"io.systemd.service.GetEnvironment", varlink_method_get_environment);
VARLINK_NETWORK_INTERFACE_INPUTS,
VARLINK_DEFINE_POLKIT_INPUT);
+static SD_VARLINK_DEFINE_METHOD(
+ Reconfigure,
+ VARLINK_NETWORK_INTERFACE_INPUTS,
+ VARLINK_DEFINE_POLKIT_INPUT);
+
SD_VARLINK_DEFINE_INTERFACE(
io_systemd_Network_Link,
"io.systemd.Network.Link",
SD_VARLINK_SYMBOL_COMMENT("Renew DHCP leases on the specified link."),
&vl_method_Renew,
SD_VARLINK_SYMBOL_COMMENT("Force-renew DHCP server leases on the specified link."),
- &vl_method_ForceRenew);
+ &vl_method_ForceRenew,
+ SD_VARLINK_SYMBOL_COMMENT("Unconditionally reconfigure the specified link."),
+ &vl_method_Reconfigure);