/* * Generic lease properties */ static dbus_bool_t __ni_objectmodel_addrconf_generic_get_lease(const ni_dbus_object_t *object, ni_addrconf_mode_t mode, unsigned int addrfamily, ni_dbus_variant_t *dict, DBusError *error) { ni_netdev_t *dev; const ni_addrconf_lease_t *lease; if (!(dev = ni_objectmodel_unwrap_netif(object, error))) return FALSE; #if 0 NI_TRACE_ENTER_ARGS("dev=%s, af=%s, mode=%s", dev->name, ni_addrfamily_type_to_name(addrfamily), ni_addrconf_type_to_name(mode)); #endif if (!(lease = ni_netdev_get_lease(dev, addrfamily, mode))) return FALSE; ni_dbus_dict_add_uint32(dict, "state", lease->state); if (lease->flags) ni_dbus_dict_add_uint32(dict, "flags", lease->flags); if (!ni_uuid_is_null(&lease->uuid)) ni_dbus_dict_add_uuid(dict, "uuid", &lease->uuid); return TRUE; }
/* * Constructor for DBus client handle */ ni_dbus_client_t * ni_dbus_client_open(const char *bus_type, const char *bus_name) { ni_dbus_connection_t *busconn; ni_dbus_client_t *dbc; NI_TRACE_ENTER_ARGS("bus_type=%s, bus_name=%s", bus_type, bus_name); busconn = ni_dbus_connection_open(bus_type, NULL); if (busconn == NULL) return NULL; dbc = xcalloc(1, sizeof(*dbc)); ni_string_dup(&dbc->bus_name, bus_name); dbc->connection = busconn; dbc->call_timeout = 1000 * 60; return dbc; }
/* * OVSBridge.shutdown method */ static dbus_bool_t __ni_objectmodel_ovs_bridge_shutdown(ni_dbus_object_t *object, const ni_dbus_method_t *method, unsigned int argc, const ni_dbus_variant_t *argv, ni_dbus_message_t *reply, DBusError *error) { ni_netdev_t *dev; if (!(dev = ni_objectmodel_unwrap_netif(object, error))) return FALSE; NI_TRACE_ENTER_ARGS("dev=%s", dev->name); if (ni_system_ovs_bridge_shutdown(dev) < 0) { dbus_set_error(error, DBUS_ERROR_FAILED, "Error shutting down ovs bridge interface %s", dev->name); return FALSE; } return TRUE; }
/* * PPP.delete method */ static dbus_bool_t ni_objectmodel_ppp_device_delete(ni_dbus_object_t *object, const ni_dbus_method_t *method, unsigned int argc, const ni_dbus_variant_t *argv, ni_dbus_message_t *reply, DBusError *error) { ni_netconfig_t *nc = ni_global_state_handle(0); ni_netdev_t *dev; if (!(dev = ni_objectmodel_unwrap_netif(object, error))) return FALSE; NI_TRACE_ENTER_ARGS("dev=%s", dev->name); if (ni_system_ppp_delete(nc, dev) < 0) { dbus_set_error(error, DBUS_ERROR_FAILED, "Error deleting ppp interface %s", dev->name); return FALSE; } ni_client_state_drop(dev->link.ifindex); return TRUE; }
/* * InfinibandChild.delete method */ static dbus_bool_t ni_objectmodel_ib_delete(ni_dbus_object_t *object, const ni_dbus_method_t *method, unsigned int argc, const ni_dbus_variant_t *argv, ni_dbus_message_t *reply, DBusError *error) { ni_netdev_t *ifp; if (!(ifp = ni_objectmodel_unwrap_netif(object, error))) return FALSE; NI_TRACE_ENTER_ARGS("ifp=%s", ifp->name); if (ni_system_infiniband_child_delete(ifp) < 0) { dbus_set_error(error, DBUS_ERROR_FAILED, "Unable to delete infiniband child interface", ifp->name); return FALSE; } ni_client_state_drop(ifp->link.ifindex); ni_dbus_object_free(object); return TRUE; }
static dbus_bool_t __ni_objectmodel_macvlan_delete(ni_dbus_object_t *object, const ni_dbus_method_t *method, unsigned int argc, const ni_dbus_variant_t *argv, ni_dbus_message_t *reply, DBusError *error) { ni_netdev_t *dev; int rv; if (!(dev = ni_objectmodel_unwrap_netif(object, error))) return FALSE; NI_TRACE_ENTER_ARGS("dev=%s", dev->name); if ((rv = ni_system_macvlan_delete(dev)) < 0) { dbus_set_error(error, DBUS_ERROR_FAILED, "Error deleting macvlan interface %s: %s", dev->name, ni_strerror(rv)); return FALSE; } ni_client_state_drop(dev->link.ifindex); return TRUE; }
/* * Delete a PPP interface */ dbus_bool_t ni_objectmodel_ppp_delete(ni_dbus_object_t *object, const ni_dbus_method_t *method, unsigned int argc, const ni_dbus_variant_t *argv, ni_dbus_message_t *reply, DBusError *error) { ni_netdev_t *dev; int rv; if (!(dev = ni_objectmodel_unwrap_netif(object, error))) return FALSE; NI_TRACE_ENTER_ARGS("dev=%s", dev->name); if ((rv = ni_system_ppp_delete(dev)) < 0) { ni_dbus_set_error_from_code(error, rv, "Unable to delete PPP interface %s: %s", dev->name, ni_strerror(rv)); return FALSE; } ni_dbus_object_free(object); return TRUE; }