diff --git a/src/conf.c b/src/conf.c index 6f949f56..90ad58fc 100644 --- a/src/conf.c +++ b/src/conf.c @@ -59,6 +59,7 @@ static internal_config_t hazahaza[] = { { "PingTimeout", pingtimeout, TYPE_INT }, { "TapDevice", tapdevice, TYPE_NAME }, { "KeyExpire", keyexpire, TYPE_INT }, + { "ProxyMode", proxymode, TYPE_BOOL }, { NULL, 0, 0 } }; diff --git a/src/conf.h b/src/conf.h index 2d83092d..673573b3 100644 --- a/src/conf.h +++ b/src/conf.h @@ -41,6 +41,7 @@ typedef enum which_t { allowconnect, pingtimeout, keyexpire, + proxymode } which_t; typedef struct config_t { diff --git a/src/net.c b/src/net.c index 7b9133e0..58f3e02f 100644 --- a/src/net.c +++ b/src/net.c @@ -258,8 +258,14 @@ cp */ int send_packet(ip_t to, vpn_packet_t *packet) { + config_t const *cfg; conn_list_t *cl; cp + if(!(cfg = get_config_val(proxymode))) /* In case we are in proxy mode, just send everything to our uplink. */ + cl = conn_list; + else + cl = lookup_conn(to); + if((cl = lookup_conn(to)) == NULL) { if(debug_lvl > 2)