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:
parent
054f0db487
commit
91b5f99731
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue