rfe2636157 - bring in missing submission for 3.0
This commit is contained in:
parent
4542a7822d
commit
0c08446338
34
cfg_file.y
34
cfg_file.y
@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Id: cfg_file.y,v 1.8.2.3 2008/12/08 13:01:23 mtbishop Exp $
|
* $Id: cfg_file.y,v 1.8.2.4 2010/04/14 08:48:09 mtbishop Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -74,7 +74,7 @@ int yyerror(char *s);
|
|||||||
%token K_OPTIONS K_DEFAULT K_PORT K_BINDADDR K_PERSIST K_TIMEOUT
|
%token K_OPTIONS K_DEFAULT K_PORT K_BINDADDR K_PERSIST K_TIMEOUT
|
||||||
%token K_PASSWD K_PROG K_PPP K_SPEED K_IFCFG K_FWALL K_ROUTE K_DEVICE
|
%token K_PASSWD K_PROG K_PPP K_SPEED K_IFCFG K_FWALL K_ROUTE K_DEVICE
|
||||||
%token K_MULTI K_SRCADDR K_IFACE K_ADDR
|
%token K_MULTI K_SRCADDR K_IFACE K_ADDR
|
||||||
%token K_TYPE K_PROT K_COMPRESS K_ENCRYPT K_KALIVE K_STAT
|
%token K_TYPE K_PROT K_NAT_HACK K_COMPRESS K_ENCRYPT K_KALIVE K_STAT
|
||||||
%token K_UP K_DOWN K_SYSLOG K_IPROUTE
|
%token K_UP K_DOWN K_SYSLOG K_IPROUTE
|
||||||
|
|
||||||
%token <str> K_HOST K_ERROR
|
%token <str> K_HOST K_ERROR
|
||||||
@ -320,6 +320,15 @@ host_option: '\n'
|
|||||||
parse_host->flags &= ~VTUN_PROT_MASK;
|
parse_host->flags &= ~VTUN_PROT_MASK;
|
||||||
parse_host->flags |= $2;
|
parse_host->flags |= $2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
| K_NAT_HACK NUM {
|
||||||
|
#ifdef ENABLE_NAT_HACK
|
||||||
|
parse_host->flags &= ~VTUN_NAT_HACK_MASK;
|
||||||
|
parse_host->flags |= $2;
|
||||||
|
#else
|
||||||
|
cfg_error("This vtund binary was built with the NAT hack disabled for security purposes.");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
| K_SRCADDR '{' srcaddr_options '}'
|
| K_SRCADDR '{' srcaddr_options '}'
|
||||||
|
|
||||||
@ -587,6 +596,27 @@ inline struct vtun_host* find_host(char *host)
|
|||||||
return (struct vtun_host *)llist_free(&host_list, free_host, host);
|
return (struct vtun_host *)llist_free(&host_list, free_host, host);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int clear_nat_hack_server(void *d, void *u)
|
||||||
|
{
|
||||||
|
((struct vtun_host*)d)->flags &= ~VTUN_NAT_HACK_CLIENT;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int clear_nat_hack_client(void *d, void *u)
|
||||||
|
{
|
||||||
|
((struct vtun_host*)d)->flags &= ~VTUN_NAT_HACK_SERVER;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear the VTUN_NAT_HACK flag which are not relevant to the current operation mode */
|
||||||
|
inline void clear_nat_hack_flags(int svr)
|
||||||
|
{
|
||||||
|
if (svr)
|
||||||
|
llist_trav(&host_list,clear_nat_hack_server,NULL);
|
||||||
|
else
|
||||||
|
llist_trav(&host_list,clear_nat_hack_client,NULL);
|
||||||
|
}
|
||||||
|
|
||||||
inline void free_host_list(void)
|
inline void free_host_list(void)
|
||||||
{
|
{
|
||||||
llist_free(&host_list, free_host, NULL);
|
llist_free(&host_list, free_host, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user