};
typedef enum LinkState {
+ LINK_STATE_INITIALIZING,
LINK_STATE_ENSLAVING,
LINK_STATE_SETTING_ADDRESSES,
LINK_STATE_SETTING_ROUTES,
LINK_STATE_CONFIGURED,
+ LINK_STATE_UNMANAGED,
LINK_STATE_FAILED,
_LINK_STATE_MAX,
_LINK_STATE_INVALID = -1
struct udev_device *udev_device;
unsigned flags;
+ uint8_t operstate;
Network *network;
int manager_load_config(Manager *m);
bool manager_should_reload(Manager *m);
-int manager_udev_enumerate_links(Manager *m);
-int manager_udev_listen(Manager *m);
+int manager_rtnl_enumerate_links(Manager *m);
int manager_rtnl_listen(Manager *m);
+int manager_udev_listen(Manager *m);
int manager_bus_listen(Manager *m);
int manager_update_resolv_conf(Manager *m);
DEFINE_TRIVIAL_CLEANUP_FUNC(Network*, network_free);
#define _cleanup_network_free_ _cleanup_(network_freep)
-int network_get(Manager *manager, struct udev_device *device, Network **ret);
+int network_get(Manager *manager, struct udev_device *device,
+ const char *ifname, const struct ether_addr *mac,
+ Network **ret);
int network_apply(Manager *manager, Network *network, Link *link);
int config_parse_bridge(const char *unit, const char *filename, unsigned line,
/* Link */
-int link_new(Manager *manager, struct udev_device *device, Link **ret);
void link_free(Link *link);
int link_get(Manager *m, int ifindex, Link **ret);
-int link_add(Manager *manager, struct udev_device *device, Link **ret);
+int link_add(Manager *manager, sd_rtnl_message *message, Link **ret);
int link_update(Link *link, sd_rtnl_message *message);
+int link_initialized(Link *link, struct udev_device *device);
+
int link_save(Link *link);
const char* link_state_to_string(LinkState s) _const_;