networkd: make address_{establish,release}() static

No need to expose these functions, but rather call them from address_{add,drop}.
This commit is contained in:
Tom Gundersen 2015-09-24 15:25:20 +02:00
parent 054f0db487
commit 91b5f99731
9 changed files with 86 additions and 77 deletions

View file

@ -198,59 +198,7 @@ bool address_equal(Address *a1, Address *a2) {
return address_compare_func(a1, a2) == 0;
}
int address_add(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret) {
_cleanup_address_free_ Address *address = NULL;
int r;
assert(link);
assert(in_addr);
assert(ret);
r = address_new(&address);
if (r < 0)
return r;
address->family = family;
address->in_addr = *in_addr;
address->prefixlen = prefixlen;
r = set_ensure_allocated(&link->addresses, &address_hash_ops);
if (r < 0)
return r;
r = set_put(link->addresses, address);
if (r < 0)
return r;
address->link = link;
*ret = address;
address = NULL;
return 0;
}
int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret) {
Address address = {}, *existing;
assert(link);
assert(in_addr);
assert(ret);
address.family = family;
address.in_addr = *in_addr;
address.prefixlen = prefixlen;
existing = set_get(link->addresses, &address);
if (!existing)
return -ENOENT;
*ret = existing;
return 0;
}
int address_establish(Address *address, Link *link) {
static int address_establish(Address *address, Link *link) {
bool masq;
int r;
@ -277,7 +225,43 @@ int address_establish(Address *address, Link *link) {
return 0;
}
int address_release(Address *address, Link *link) {
int address_add(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret) {
_cleanup_address_free_ Address *address = NULL;
int r;
assert(link);
assert(in_addr);
assert(ret);
r = address_new(&address);
if (r < 0)
return r;
address->family = family;
address->in_addr = *in_addr;
address->prefixlen = prefixlen;
r = set_ensure_allocated(&link->addresses, &address_hash_ops);
if (r < 0)
return r;
r = set_put(link->addresses, address);
if (r < 0)
return r;
address->link = link;
r = address_establish(address, link);
if (r < 0)
return r;
*ret = address;
address = NULL;
return 0;
}
static int address_release(Address *address, Link *link) {
int r;
assert(address);
@ -298,7 +282,36 @@ int address_release(Address *address, Link *link) {
return 0;
}
int address_drop(Address *address, Link *link,
int address_drop(Address *address) {
assert(address);
address_release(address, address->link);
address_free(address);
return 0;
}
int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret) {
Address address = {}, *existing;
assert(link);
assert(in_addr);
assert(ret);
address.family = family;
address.in_addr = *in_addr;
address.prefixlen = prefixlen;
existing = set_get(link->addresses, &address);
if (!existing)
return -ENOENT;
*ret = existing;
return 0;
}
int address_remove(Address *address, Link *link,
sd_netlink_message_handler_t callback) {
_cleanup_netlink_message_unref_ sd_netlink_message *req = NULL;
int r;

View file

@ -62,11 +62,10 @@ int address_new(Address **ret);
void address_free(Address *address);
int address_add(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
int address_get(Link *link, int family, const union in_addr_union *in_addr, unsigned char prefixlen, Address **ret);
int address_drop(Address *address);
int address_configure(Address *address, Link *link, sd_netlink_message_handler_t callback);
int address_update(Address *address, Link *link, sd_netlink_message_handler_t callback);
int address_drop(Address *address, Link *link, sd_netlink_message_handler_t callback);
int address_establish(Address *address, Link *link);
int address_release(Address *address, Link *link);
int address_remove(Address *address, Link *link, sd_netlink_message_handler_t callback);
bool address_equal(Address *a1, Address *a2);
DEFINE_TRIVIAL_CLEANUP_FUNC(Address*, address_free);

View file

@ -169,8 +169,8 @@ static int dhcp_lease_lost(Link *link) {
route->dst_addr.in = routes[i].dst_addr;
route->dst_prefixlen = routes[i].dst_prefixlen;
route_drop(route, link,
&link_route_drop_handler);
route_remove(route, link,
&link_route_remove_handler);
}
}
}
@ -190,8 +190,8 @@ static int dhcp_lease_lost(Link *link) {
route_gw->dst_prefixlen = 32;
route_gw->scope = RT_SCOPE_LINK;
route_drop(route_gw, link,
&link_route_drop_handler);
route_remove(route_gw, link,
&link_route_remove_handler);
}
r = route_new(&route, RTPROT_UNSPEC);
@ -199,8 +199,8 @@ static int dhcp_lease_lost(Link *link) {
route->family = AF_INET;
route->in_addr.in = gateway;
route_drop(route, link,
&link_route_drop_handler);
route_remove(route, link,
&link_route_remove_handler);
}
}
@ -214,7 +214,7 @@ static int dhcp_lease_lost(Link *link) {
address->in_addr.in = addr;
address->prefixlen = prefixlen;
address_drop(address, link, &link_address_drop_handler);
address_remove(address, link, &link_address_remove_handler);
}
}

View file

@ -53,7 +53,7 @@ static int ipv4ll_address_lost(Link *link) {
address->prefixlen = 16;
address->scope = RT_SCOPE_LINK;
address_drop(address, link, &link_address_drop_handler);
address_remove(address, link, &link_address_remove_handler);
r = route_new(&route, RTPROT_UNSPEC);
if (r < 0) {
@ -65,7 +65,7 @@ static int ipv4ll_address_lost(Link *link) {
route->scope = RT_SCOPE_LINK;
route->metrics = IPV4LL_ROUTE_METRIC;
route_drop(route, link, &link_route_drop_handler);
route_remove(route, link, &link_route_remove_handler);
link_client_handler(link);

View file

@ -586,7 +586,7 @@ static int link_enter_set_routes(Link *link) {
return 0;
}
int link_route_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
_cleanup_link_unref_ Link *link = userdata;
int r;
@ -868,7 +868,7 @@ static int link_enter_set_addresses(Link *link) {
return 0;
}
int link_address_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) {
_cleanup_link_unref_ Link *link = userdata;
int r;

View file

@ -120,8 +120,8 @@ int link_get(Manager *m, int ifindex, Link **ret);
int link_add(Manager *manager, sd_netlink_message *message, Link **ret);
void link_drop(Link *link);
int link_address_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
int link_route_drop_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
int link_address_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
int link_route_remove_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata);
void link_enter_failed(Link *link);
int link_initialized(Link *link, struct udev_device *device);

View file

@ -416,8 +416,6 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
address->flags = flags;
address->cinfo = cinfo;
address_establish(address, link);
link_save(link);
}
@ -427,8 +425,7 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
if (address) {
log_link_debug(link, "Removing address: %s/%u (valid for %s)", buf, prefixlen, valid_str);
address_release(address, link);
address_free(address);
address_drop(address);
} else
log_link_warning(link, "Removing non-existent address: %s/%u (valid for %s)", buf, prefixlen, valid_str);

View file

@ -93,7 +93,7 @@ void route_free(Route *route) {
free(route);
}
int route_drop(Route *route, Link *link,
int route_remove(Route *route, Link *link,
sd_netlink_message_handler_t callback) {
_cleanup_netlink_message_unref_ sd_netlink_message *req = NULL;
int r;

View file

@ -49,7 +49,7 @@ int route_new_static(Network *network, unsigned section, Route **ret);
int route_new(Route **ret, unsigned char rtm_protocol);
void route_free(Route *route);
int route_configure(Route *route, Link *link, sd_netlink_message_handler_t callback);
int route_drop(Route *route, Link *link, sd_netlink_message_handler_t callback);
int route_remove(Route *route, Link *link, sd_netlink_message_handler_t callback);
DEFINE_TRIVIAL_CLEANUP_FUNC(Route*, route_free);
#define _cleanup_route_free_ _cleanup_(route_freep)