aboutsummaryrefslogtreecommitdiffstats
path: root/pingu_iface.h
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-08-05 09:37:27 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2011-08-05 09:46:34 +0200
commitdcd2b0e077ff2995660f15ef28580e8a002c5c5f (patch)
treea1e67a24467e5c9600fe738994cb7090ba6917d4 /pingu_iface.h
parentaff9e3e9c991544a8ade2b576da3690dc0dbb071 (diff)
downloadpingu-dcd2b0e077ff2995660f15ef28580e8a002c5c5f.tar.bz2
pingu-dcd2b0e077ff2995660f15ef28580e8a002c5c5f.tar.xz
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 }
Diffstat (limited to 'pingu_iface.h')
-rw-r--r--pingu_iface.h7
1 files changed, 5 insertions, 2 deletions
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);