diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-05 09:37:27 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-08-05 09:46:34 +0200 |
commit | dcd2b0e077ff2995660f15ef28580e8a002c5c5f (patch) | |
tree | a1e67a24467e5c9600fe738994cb7090ba6917d4 /pingu_iface.h | |
parent | aff9e3e9c991544a8ade2b576da3690dc0dbb071 (diff) | |
download | pingu-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.h | 7 |
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); |