#include "set.h"
#include "condition-util.h"
+#define CACHE_INFO_INFINITY_LIFE_TIME 0xFFFFFFFFU
+
typedef struct NetDev NetDev;
typedef struct Network Network;
typedef struct Link Link;
char *label;
struct in_addr broadcast;
+ struct ifa_cacheinfo cinfo;
union {
struct in_addr in;
};
typedef enum LinkState {
+ LINK_STATE_INITIALIZING,
LINK_STATE_ENSLAVING,
LINK_STATE_SETTING_ADDRESSES,
LINK_STATE_SETTING_ROUTES,
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,
int address_new_dynamic(Address **ret);
void address_free(Address *address);
int address_configure(Address *address, Link *link, sd_rtnl_message_handler_t callback);
+int address_update(Address *address, Link *link, sd_rtnl_message_handler_t callback);
int address_drop(Address *address, Link *link, sd_rtnl_message_handler_t callback);
DEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);
/* 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_;