Deleted Added
sdiff udiff text old ( 34739 ) new ( 37074 )
full compact
1%e 1500
2%p 4000
3%a 4000
4%o 6000
5%{
6/*
7 * Copyright (C) 1997 by Darren Reed.
8 *
9 * Redistribution and use in source and binary forms are permitted
10 * provided that this notice is preserved and due credit is given
11 * to the original author and the contributors.
12 *
13 * $Id: iplang_l.l,v 2.0.2.15.2.2 1997/12/10 09:54:15 darrenr Exp $
14 */
15#include <stdio.h>
16#include <string.h>
17#include <sys/param.h>
18#if defined(__SVR4) || defined(__sysv__)
19#include <sys/stream.h>
20#endif
21#include <sys/types.h>

--- 19 unchanged lines hidden (view full) ---

41void yyerror __P((char *));
42void push_proto __P((void));
43void pop_proto __P((void));
44int next_state __P((int, int));
45int next_item __P((int));
46int save_token __P((void));
47void swallow __P((void));
48int yylex __P((void));
49%}
50
51%%
52[ \t\r] ;
53\n { lineNum++; swallow(); }
54interface |
55iface { return next_state(IL_INTERFACE, -1); }
56name |
57ifname { return next_state(IL_IFNAME, IL_TOKEN); }
58router { return next_state(IL_DEFROUTER, IL_TOKEN); }
59mtu { return next_state(IL_MTU, IL_NUMBER); }
60eaddr { return next_state(IL_EADDR, IL_TOKEN); }
61v4addr { return next_state(IL_V4ADDR, IL_TOKEN); }
62ipv4 { return next_state(IL_IPV4, -1); }
63v { return next_state(IL_V4V, IL_TOKEN); }
64proto { return next_state(IL_V4PROTO, IL_TOKEN); }
65hl { return next_state(IL_V4HL, IL_TOKEN); }
66id { return next_state(IL_V4ID, IL_TOKEN); }
67ttl { return next_state(IL_V4TTL, IL_TOKEN); }
68tos { return next_state(IL_V4TOS, IL_TOKEN); }
69src { return next_state(IL_V4SRC, IL_TOKEN); }
70dst { return next_state(IL_V4DST, IL_TOKEN); }
71opt { return next_state(IL_OPT, -1); }
72len { return next_state(IL_LEN, IL_TOKEN); }
73off { return next_state(IL_OFF, IL_TOKEN); }
74sum { return next_state(IL_SUM, IL_TOKEN); }
75tcp { return next_state(IL_TCP, -1); }
76sport { return next_state(IL_SPORT, IL_TOKEN); }
77dport { return next_state(IL_DPORT, IL_TOKEN); }
78seq { return next_state(IL_TCPSEQ, IL_TOKEN); }
79ack { return next_state(IL_TCPACK, IL_TOKEN); }
80flags { return next_state(IL_TCPFL, IL_TOKEN); }
81urp { return next_state(IL_TCPURP, IL_TOKEN); }
82win { return next_state(IL_TCPWIN, IL_TOKEN); }
83udp { return next_state(IL_UDP, -1); }
84send { return next_state(IL_SEND, -1); }
85via { return next_state(IL_VIA, IL_TOKEN); }
86arp { return next_state(IL_ARP, -1); }
87data { return next_state(IL_DATA, -1); }
88value { return next_state(IL_DVALUE, IL_TOKEN); }
89file { return next_state(IL_DFILE, IL_TOKEN); }
90nop { return next_state(IL_IPO_NOP, -1); }
91eol { return next_state(IL_IPO_EOL, -1); }
92rr { return next_state(IL_IPO_RR, -1); }
93zsu { return next_state(IL_IPO_ZSU, -1); }
94mtup { return next_state(IL_IPO_MTUP, -1); }
95mtur { return next_state(IL_IPO_MTUR, -1); }
96encode { return next_state(IL_IPO_ENCODE, -1); }
97ts { return next_state(IL_IPO_TS, -1); }
98tr { return next_state(IL_IPO_TR, -1); }
99sec { return next_state(IL_IPO_SEC, -1); }
100secclass { return next_state(IL_IPO_SECCLASS, IL_TOKEN); }
101lsrr { return next_state(IL_IPO_LSRR, -1); }
102esec { return next_state(IL_IPO_ESEC, -1); }
103cipso { return next_state(IL_IPO_CIPSO, -1); }
104satid { return next_state(IL_IPO_SATID, -1); }
105ssrr { return next_state(IL_IPO_SSRR, -1); }
106addext { return next_state(IL_IPO_ADDEXT, -1); }
107visa { return next_state(IL_IPO_VISA, -1); }
108imitd { return next_state(IL_IPO_IMITD, -1); }
109eip { return next_state(IL_IPO_EIP, -1); }
110finn { return next_state(IL_IPO_FINN, -1); }
111mss { return next_state(IL_TCPO_MSS, IL_TOKEN); }
112wscale { return next_state(IL_TCPO_MSS, IL_TOKEN); }
113reserv-4 { return next_state(IL_IPS_RESERV4, -1); }
114topsecret { return next_state(IL_IPS_TOPSECRET, -1); }
115secret { return next_state(IL_IPS_SECRET, -1); }
116reserv-3 { return next_state(IL_IPS_RESERV3, -1); }
117confid { return next_state(IL_IPS_CONFID, -1); }
118unclass { return next_state(IL_IPS_UNCLASS, -1); }
119reserv-2 { return next_state(IL_IPS_RESERV2, -1); }
120reserv-1 { return next_state(IL_IPS_RESERV1, -1); }
121icmp { return next_state(IL_ICMP, -1); }
122type { return next_state(IL_ICMPTYPE, -1); }
123code { return next_state(IL_ICMPCODE, -1); }
124echorep { return next_state(IL_ICMP_ECHOREPLY, -1); }
125unreach { return next_state(IL_ICMP_UNREACH, -1); }
126squench { return next_state(IL_ICMP_SOURCEQUENCH, -1); }
127redir { return next_state(IL_ICMP_REDIRECT, -1); }
128echo { return next_state(IL_ICMP_ECHO, -1); }
129routerad { return next_state(IL_ICMP_ROUTERADVERT, -1); }
130routersol { return next_state(IL_ICMP_ROUTERSOLICIT, -1); }
131timex { return next_state(IL_ICMP_TIMXCEED, -1); }
132paramprob { return next_state(IL_ICMP_PARAMPROB, -1); }
133timest { return next_state(IL_ICMP_TSTAMP, -1); }
134timestrep { return next_state(IL_ICMP_TSTAMPREPLY, -1); }
135inforeq { return next_state(IL_ICMP_IREQ, -1); }
136inforep { return next_state(IL_ICMP_IREQREPLY, -1); }
137maskreq { return next_state(IL_ICMP_MASKREQ, -1); }
138maskrep { return next_state(IL_ICMP_MASKREPLY, -1); }
139net-unr { return next_state(IL_ICMP_UNREACH_NET, -1); }
140host-unr { return next_state(IL_ICMP_UNREACH_HOST, -1); }
141proto-unr { return next_state(IL_ICMP_UNREACH_PROTOCOL, -1); }
142port-unr { return next_state(IL_ICMP_UNREACH_PORT, -1); }
143needfrag { return next_state(IL_ICMP_UNREACH_NEEDFRAG, -1); }
144srcfail { return next_state(IL_ICMP_UNREACH_SRCFAIL, -1); }
145net-unk { return next_state(IL_ICMP_UNREACH_NET_UNKNOWN, -1); }
146host-unk { return next_state(IL_ICMP_UNREACH_HOST_UNKNOWN, -1); }
147isolate { return next_state(IL_ICMP_UNREACH_ISOLATED, -1); }
148net-prohib { return next_state(IL_ICMP_UNREACH_NET_PROHIB, -1); }
149host-prohib { return next_state(IL_ICMP_UNREACH_HOST_PROHIB, -1); }
150net-tos { return next_state(IL_ICMP_UNREACH_TOSNET, -1); }
151host-tos { return next_state(IL_ICMP_UNREACH_TOSHOST, -1); }
152filter-prohib { return next_state(IL_ICMP_UNREACH_FILTER_PROHIB, -1); }
153host-preced { return next_state(IL_ICMP_UNREACH_HOST_PRECEDENCE, -1); }
154cutoff-preced { return next_state(IL_ICMP_UNREACH_PRECEDENCE_CUTOFF, -1); }
155net-redir { return next_state(IL_ICMP_REDIRECT_NET, -1); }
156host-redir { return next_state(IL_ICMP_REDIRECT_HOST, -1); }
157tos-net-redir { return next_state(IL_ICMP_REDIRECT_TOSNET, -1); }
158tos-host-redir { return next_state(IL_ICMP_REDIRECT_TOSHOST, -1); }
159intrans { return next_state(IL_ICMP_TIMXCEED_INTRANS, -1); }
160reass { return next_state(IL_ICMP_TIMXCEED_REASS, -1); }
161optabsent { return next_state(IL_ICMP_PARAMPROB_OPTABSENT, -1); }
162otime { return next_state(IL_ICMP_OTIME, -1); }
163rtime { return next_state(IL_ICMP_RTIME, -1); }
164ttime { return next_state(IL_ICMP_TTIME, -1); }
165icmpseq { return next_state(IL_ICMP_SEQ, -1); }
166icmpid { return next_state(IL_ICMP_SEQ, -1); }
167\377 { return 0; } /* EOF */
168\{ { push_proto(); return next_item('{'); }
169\} { pop_proto(); return next_item('}'); }
170\. { return next_item(IL_DOT); }
171; { return next_item(';'); }
172[0-9]+ { return next_item(IL_NUMBER); }
173[0-9a-fA-F] { return next_item(IL_HEXDIGIT); }
174: { return next_item(IL_COLON); }
175#[^\n]* { return next_item(IL_COMMENT); }
176[^ {}\n\t;]* { return next_item(IL_TOKEN); }
177\"[^\"]*\" { return next_item(IL_TOKEN); }
178%%
179void yyerror(msg)
180char *msg;
181{
182 fprintf(stderr, "%s error at \"%s\", line %d\n", msg, yytext,
183 lineNum + 1);
184 exit(1);

--- 30 unchanged lines hidden (view full) ---

215 yylval.str = strdup(yytext);
216 return IL_TOKEN;
217}
218
219
220int next_item(nstate)
221int nstate;
222{
223 if (next == IL_TOKEN) {
224 next = -1;
225 return save_token();
226 }
227 next = -1;
228 if (nstate == IL_NUMBER)
229 yylval.num = atoi(yytext);
230 token++;
231 return nstate;
232}
233
234
235int next_state(nstate, fornext)
236int nstate, fornext;
237{
238 token++;
239
240 if (next == IL_TOKEN) {
241 next = -1;
242 return save_token();
243 }
244
245 next = fornext;
246
247 switch (nstate)
248 {
249 case IL_IPV4 :
250 case IL_TCP :
251 case IL_UDP :
252 case IL_ICMP :

--- 59 unchanged lines hidden ---