aboutsummaryrefslogtreecommitdiffstats
path: root/pingu_iface.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-07-29 14:27:46 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-07-29 14:27:46 +0200
commitc761f12b0a67412cde8a4693f1e8d6aa14c0b70e (patch)
treed35341aacd1b42c9d5fe6aa85bf79b6d5022f9e0 /pingu_iface.c
parent71a6bff30fae70332488863a621b0b22590398f0 (diff)
downloadpingu-c761f12b0a67412cde8a4693f1e8d6aa14c0b70e.tar.bz2
pingu-c761f12b0a67412cde8a4693f1e8d6aa14c0b70e.tar.xz
pingu: remove default gw from main route table when isp goes down
Diffstat (limited to 'pingu_iface.c')
-rw-r--r--pingu_iface.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/pingu_iface.c b/pingu_iface.c
index 30cbe9a..78d8e9a 100644
--- a/pingu_iface.c
+++ b/pingu_iface.c
@@ -17,6 +17,7 @@
#include "pingu_host.h"
#include "pingu_iface.h"
#include "pingu_ping.h"
+#include "pingu_netlink.h"
#include "sockaddr_util.h"
static struct list_head iface_list = LIST_INITIALIZER(iface_list);
@@ -245,6 +246,14 @@ void pingu_iface_gw_action(struct pingu_iface *iface,
pingu_iface_gateway_dump(iface);
}
+void pingu_iface_update_routes(struct pingu_iface *iface, int action)
+{
+ struct pingu_gateway *route;
+ list_for_each_entry(route, &iface->gateway_list, gateway_list_entry) {
+ kernel_route_modify(action, route, iface, RT_TABLE_MAIN);
+ }
+}
+
int pingu_iface_init(struct ev_loop *loop, struct list_head *host_list)
{
struct pingu_host *host;