aboutsummaryrefslogtreecommitdiffstats
path: root/pingu_netlink.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-07-28 17:43:12 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-07-28 17:43:12 +0200
commit39eb92db66600bd1bf8a63f24145c9ff1fd7f966 (patch)
tree085e39909fd173de5a57b625231032d0e98fb800 /pingu_netlink.c
parenta6ed4816fa8c39484dfa5f763efff7d8d7291d9e (diff)
downloadpingu-39eb92db66600bd1bf8a63f24145c9ff1fd7f966.tar.bz2
pingu-39eb92db66600bd1bf8a63f24145c9ff1fd7f966.tar.xz
pingu: add gw to list and minor cleanup
- add default gateways to our gw list - use sockaddr_init to init our gw - implement sockaddr_to_string TODO: delete default gateways from list
Diffstat (limited to 'pingu_netlink.c')
-rw-r--r--pingu_netlink.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pingu_netlink.c b/pingu_netlink.c
index 18d5082..9e670ed 100644
--- a/pingu_netlink.c
+++ b/pingu_netlink.c
@@ -383,7 +383,7 @@ static void netlink_addr_del_cb(struct nlmsghdr *nlmsg)
pingu_iface_set_addr(iface, 0, NULL, 0);
}
-static void netlink_route_cb_action(struct nlmsghdr *msg, int action)
+static void netlink_route_cb_action(struct nlmsghdr *msg, int action)
{
struct pingu_iface *iface;
struct rtmsg *rtm = NLMSG_DATA(msg);
@@ -426,7 +426,11 @@ static void netlink_route_cb_action(struct nlmsghdr *msg, int action)
netlink_route_modify(&talk_fd, action, destination,
rtm->rtm_dst_len, gateway, metric,
- iface->index, rtm->rtm_table);
+ iface->index, rtm->rtm_table);
+
+ if (destination == 0 && gateway != 0)
+ pingu_iface_gateway(iface, rtm->rtm_family, &gateway,
+ metric, action);
}
static void netlink_route_new_cb(struct nlmsghdr *msg)