2 * $Id: scanner.l,v 1.20 2010/12/14 11:58:21 psavola Exp $
5 * Pedro Roque <roque@di.fc.ul.pt>
6 * Lars Fenneberg <lf@elemental.net>
8 * This software is Copyright 1996-2000 by the above mentioned author(s),
11 * The license which is distributed with this software in the file COPYRIGHT
12 * applies to this software. If your distribution is missing this file, you
13 * may request it from <pekkas@netcore.fi>.
25 extern char *conf_file;
35 decimal ({number}"."{number})
36 hexdigit ([a-f]|[A-F]|[0-9])
37 addr1 {hexdigit}{1,4}":"({hexdigit}{1,4}":")*(":"{hexdigit}{1,4})+
38 addr2 {hexdigit}{1,4}(":"{hexdigit}{1,4})*"::"
39 addr3 ({hexdigit}{1,4}":"){7}{hexdigit}{1,4}
40 addr ({addr1}|{addr2}|{addr3}|"::")
42 string ([a-zA-Z0-9`~!@#$%\^&*()_\-+=:\[\]<>,\.?\\])+
45 #.*$ {/* ignore comments */}
49 interface { return T_INTERFACE; }
50 prefix { return T_PREFIX; }
51 route { return T_ROUTE; }
52 RDNSS { return T_RDNSS; }
53 DNSSL { return T_DNSSL; }
54 clients { return T_CLIENTS; }
56 IgnoreIfMissing { return T_IgnoreIfMissing; }
57 AdvSendAdvert { return T_AdvSendAdvert; }
58 MaxRtrAdvInterval { return T_MaxRtrAdvInterval; }
59 MinRtrAdvInterval { return T_MinRtrAdvInterval; }
60 AdvManagedFlag { return T_AdvManagedFlag; }
61 AdvOtherConfigFlag { return T_AdvOtherConfigFlag; }
62 AdvLinkMTU { return T_AdvLinkMTU; }
63 AdvReachableTime { return T_AdvReachableTime; }
64 AdvRetransTimer { return T_AdvRetransTimer; }
65 AdvCurHopLimit { return T_AdvCurHopLimit; }
66 AdvDefaultLifetime { return T_AdvDefaultLifetime; }
67 AdvDefaultPreference { return T_AdvDefaultPreference; }
68 AdvSourceLLAddress { return T_AdvSourceLLAddress; }
70 AdvOnLink { return T_AdvOnLink; }
71 AdvAutonomous { return T_AdvAutonomous; }
72 AdvValidLifetime { return T_AdvValidLifetime; }
73 AdvPreferredLifetime { return T_AdvPreferredLifetime; }
75 AdvRouterAddr { return T_AdvRouterAddr; }
76 AdvHomeAgentFlag { return T_AdvHomeAgentFlag; }
77 AdvIntervalOpt { return T_AdvIntervalOpt; }
78 AdvHomeAgentInfo { return T_AdvHomeAgentInfo; }
79 UnicastOnly { return T_UnicastOnly; }
81 Base6to4Interface { return T_Base6to4Interface; }
83 HomeAgentPreference { return T_HomeAgentPreference; }
84 HomeAgentLifetime { return T_HomeAgentLifetime; }
86 AdvRoutePreference { return T_AdvRoutePreference; }
87 AdvRouteLifetime { return T_AdvRouteLifetime; }
89 AdvRDNSSPreference { return T_AdvRDNSSPreference; }
90 AdvRDNSSOpen { return T_AdvRDNSSOpenFlag; }
91 AdvRDNSSLifetime { return T_AdvRDNSSLifetime; }
93 AdvDNSSLLifetime { return T_AdvDNSSLLifetime; }
95 MinDelayBetweenRAs { return T_MinDelayBetweenRAs; }
97 AdvMobRtrSupportFlag { return T_AdvMobRtrSupportFlag; }
100 static struct in6_addr addr;
101 if (inet_pton(AF_INET6, yytext, &addr) < 1) {
102 flog(LOG_ERR, "invalid address in %s, line %d", conf_file,
114 lnum = strtoul(yytext, &endp, 10);
115 if (*yytext == '\0' || *endp != '\0')
117 if (lnum > 0xFFFFFFFFUL)
118 return T_BAD_TOKEN; /* XXX */
123 {snum} { yylval.snum = atoi(yytext); return SIGNEDNUMBER; }
125 {decimal} { yylval.dec = atof(yytext); return DECIMAL; }
127 infinity { return INFINITY; }
129 on { yylval.num = 1; return SWITCH; }
131 off { yylval.num = 0; return SWITCH; }
133 low { yylval.snum = -1; return SIGNEDNUMBER; }
135 medium { yylval.snum = 0; return SIGNEDNUMBER; }
137 high { yylval.snum = 1; return SIGNEDNUMBER; }
140 static char string[256];
142 strncpy(string, yytext, sizeof(string));
143 string[sizeof(string)-1] = '\0';
148 "{"|"}"|";"|"/" { return *yytext; }
150 . { return T_BAD_TOKEN; }