extern struct ServerConf* serverConfList;
extern struct s_map* GlobalServiceMapList;
extern struct qline* GlobalQuarantineList;
- extern struct irc_sockaddr ResolverAddr;
int yylex(void);
/* Now all the globals we need :/... */
%token NO
%token OPER
%token VHOST
-%token RESOLVER
%token HIDDEN
%token MOTD
%token JUPE
parse_error("Your General block must contain a numeric (between 1 and 4095).");
} ';' ;
generalitems: generalitem generalitems | generalitem;
-generalitem: generalnumeric | generalname | generalvhost | generalresolver | generaldesc | error;
+generalitem: generalnumeric | generalname | generalvhost | generaldesc | error;
generalnumeric: NUMERIC '=' NUMBER ';'
{
if (localConf.numeric == 0)
generalvhost: VHOST '=' QSTRING ';'
{
- ircd_aton(&VirtualHost.addr, $3);
-};
-
-generalresolver: RESOLVER '=' QSTRING ';'
-{
- ircd_aton(&ResolverAddr.addr, $3);
+ struct irc_in_addr addr;
+ if (!ircd_aton(&addr, $3))
+ parse_error("Invalid virtual host '%s'.", $3);
+ else if (irc_in_addr_is_ipv4(&addr))
+ memcpy(&VirtualHost_v4.addr, &addr, sizeof(addr));
+ else
+ memcpy(&VirtualHost_v6.addr, &addr, sizeof(addr));
};
adminblock: ADMIN '{' adminitems '}'