kernel-netlink: Routes don't require a gateway/nexthop
This commit is contained in:
parent
1b3b7ba54d
commit
3cd7ba4960
|
@ -265,7 +265,7 @@ static route_entry_t *route_entry_clone(route_entry_t *this)
|
||||||
INIT(route,
|
INIT(route,
|
||||||
.if_name = strdup(this->if_name),
|
.if_name = strdup(this->if_name),
|
||||||
.src_ip = this->src_ip->clone(this->src_ip),
|
.src_ip = this->src_ip->clone(this->src_ip),
|
||||||
.gateway = this->gateway->clone(this->gateway),
|
.gateway = this->gateway ? this->gateway->clone(this->gateway) : NULL,
|
||||||
.dst_net = chunk_clone(this->dst_net),
|
.dst_net = chunk_clone(this->dst_net),
|
||||||
.prefixlen = this->prefixlen,
|
.prefixlen = this->prefixlen,
|
||||||
);
|
);
|
||||||
|
@ -298,10 +298,14 @@ static u_int route_entry_hash(route_entry_t *this)
|
||||||
*/
|
*/
|
||||||
static bool route_entry_equals(route_entry_t *a, route_entry_t *b)
|
static bool route_entry_equals(route_entry_t *a, route_entry_t *b)
|
||||||
{
|
{
|
||||||
return a->if_name && b->if_name && streq(a->if_name, b->if_name) &&
|
if (a->if_name && b->if_name && streq(a->if_name, b->if_name) &&
|
||||||
a->src_ip->ip_equals(a->src_ip, b->src_ip) &&
|
a->src_ip->ip_equals(a->src_ip, b->src_ip) &&
|
||||||
a->gateway->ip_equals(a->gateway, b->gateway) &&
|
chunk_equals(a->dst_net, b->dst_net) && a->prefixlen == b->prefixlen)
|
||||||
chunk_equals(a->dst_net, b->dst_net) && a->prefixlen == b->prefixlen;
|
{
|
||||||
|
return (!a->gateway && !b->gateway) || (a->gateway && b->gateway &&
|
||||||
|
a->gateway->ip_equals(a->gateway, b->gateway));
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct net_change_t net_change_t;
|
typedef struct net_change_t net_change_t;
|
||||||
|
|
Loading…
Reference in New Issue