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 '}'
connectmaxhops: MAXHOPS '=' expr ';'
{
maxlinks = $3;
-}
+};
uworldblock: UWORLD '{' uworlditems '}' ';'
{
if (name)
{
struct ConfItem *aconf = make_conf(CONF_UWORLD);
- aconf->name = name;
+ aconf->host = name;
}
else
{
{
MyFree(ip);
DupString(ip, $3);
-}
+};
clientusername: USERNAME '=' QSTRING ';'
{
MyFree(username);
DupString(username, $3);
-}
+};
clientclass: CLASS '=' QSTRING ';'
{
c_class = find_class($3);