7 typedef struct Hdr Hdr;
10 uchar vi; /* version */
12 uchar len[2]; /* length of data following this header */
17 EAPOLHDR= 4, /* sizeof(Hdr) */
35 { "eapol_start", Start, },
36 { "eapol_logoff", Logoff, },
37 { "eapol_key", Key, },
38 { "asf_alert", AsfAlert, },
47 for(m = p_mux; m->name != nil; m++)
48 if(strcmp(f->s, m->name) == 0){
54 sysfatal("unknown eapol field or type: %s", f->s);
58 p_filter(Filter *f, Msg *m)
62 if(m->pe - m->ps < EAPOLHDR)
67 /* len does not include header */
72 return h->type == f->ulv;
105 if(m->pe - m->ps < EAPOLHDR)
110 /* len does not include header */
113 /* truncate the message if there's extra */
115 if(m->ps + len < m->pe)
117 else if(m->ps+len > m->pe)
120 /* next protocol depending on type*/
121 demux(p_mux, h->type, h->type, m, &dump);
123 m->p = seprint(m->p, m->e, "type=%s version=%1d datalen=%1d",
124 op(h->type), h->vi, len);