}
ret = sitnl_send(&req.n, 0, 0, NULL, NULL);
- if (ret == -EEXIST)
- {
- ret = 0;
- }
err:
return ret;
}
scope = RT_SCOPE_LINK;
}
- return sitnl_route_set(RTM_NEWROUTE, NLM_F_CREATE | NLM_F_REPLACE, ifindex,
+ return sitnl_route_set(RTM_NEWROUTE, NLM_F_CREATE, ifindex,
af_family, dst, prefixlen, gw, table, metric, scope,
RTPROT_BOOT, RTN_UNICAST);
}
}
status = RTA_SUCCESS;
- if (net_route_v4_add(ctx, &r->network, netmask_to_netbits2(r->netmask),
- &r->gateway, iface, 0, metric) < 0)
+ int ret = net_route_v4_add(ctx, &r->network, netmask_to_netbits2(r->netmask),
+ &r->gateway, iface, 0, metric);
+ if (ret == -EEXIST)
+ {
+ msg(D_ROUTE, "NOTE: Linux route add command failed because route exists");
+ status = RTA_EEXIST;
+ }
+ else if (ret < 0)
{
msg(M_WARN, "ERROR: Linux route add command failed");
status = RTA_ERROR;
}
status = RTA_SUCCESS;
- if (net_route_v6_add(ctx, &r6->network, r6->netbits,
- gateway_needed ? &r6->gateway : NULL, device, 0,
- metric) < 0)
+ int ret = net_route_v6_add(ctx, &r6->network, r6->netbits,
+ gateway_needed ? &r6->gateway : NULL,
+ device, 0, metric);
+ if (ret == -EEXIST)
{
- msg(M_WARN, "ERROR: Linux IPv6 route can't be added");
+ msg(D_ROUTE, "NOTE: Linux route add command failed because route exists");
+ status = RTA_EEXIST;
+ }
+ else if (ret < 0)
+ {
+ msg(M_WARN, "ERROR: Linux route add command failed");
status = RTA_ERROR;
}