From dcd2b0e077ff2995660f15ef28580e8a002c5c5f Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Fri, 5 Aug 2011 09:37:27 +0200 Subject: pingu: implement new config format New format allows users to define interfaces and ping hosts separately. This means we can run pingu in routing-only mode to set up and manage route tables for multi-isp. We allow the user config a preferred alternate route table for each interface. If not configured, pingu will pick one. Example interface definition looks like: interface eth0 { route-table 10 } Example host definition looks like: host 192.168.0.1 { bind-interface eth0 } --- pingu_iface.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'pingu_iface.h') diff --git a/pingu_iface.h b/pingu_iface.h index 68d4b32..8107601 100644 --- a/pingu_iface.h +++ b/pingu_iface.h @@ -7,6 +7,8 @@ #include "sockaddr_util.h" #include "list.h" +#define PINGU_ROUTE_TABLE_AUTO -1 + struct pingu_gateway { union sockaddr_any gw_addr; union sockaddr_any dest; @@ -37,13 +39,14 @@ struct pingu_iface { struct pingu_iface *pingu_iface_get_by_name(const char *name); struct pingu_iface *pingu_iface_get_by_index(int index); -struct pingu_iface *pingu_iface_new(const char *name); +struct pingu_iface *pingu_iface_get_by_name_or_new(const char *name); int pingu_iface_bind_socket(struct pingu_iface *iface, int log_error); int pingu_iface_usable(struct pingu_iface *iface); -int pingu_iface_init(struct ev_loop *loop, struct list_head *host_list); +int pingu_iface_init(struct ev_loop *loop); void pingu_iface_set_addr(struct pingu_iface *iface, int family, void *data, int len); +int pingu_iface_set_route_table(struct pingu_iface *iface, int table); void pingu_iface_gw_action(struct pingu_iface *iface, struct pingu_gateway *gw, int action); -- cgit v1.2.3