7 typedef struct Hdr Hdr;
10 uchar sum[2]; /* Checksum including header */
11 uchar len[2]; /* Packet length */
12 uchar type; /* Packet type */
13 uchar spec; /* Special */
14 uchar sport[2]; /* Src port */
15 uchar dport[2]; /* Dst port */
16 uchar id[4]; /* Sequence id */
17 uchar ack[4]; /* Acked sequence */
32 static Field p_fields[] =
34 {"s", Fnum, Os, "source port", } ,
35 {"d", Fnum, Od, "dest port", } ,
36 {"a", Fnum, Osd, "source/dest port", } ,
37 {"sd", Fnum, Osd, "source/dest port", } ,
43 {"ninep", 17007, }, /* exportfs */
44 {"ninep", 17008, }, /* 9fs */
45 {"ninep", 17005, }, /* ocpu */
46 {"ninep", 17010, }, /* ncpu */
47 {"ninep", 17013, }, /* cpu */
57 compile_cmp(udp.name, f, p_fields);
60 for(m = p_mux; m->name != nil; m++)
61 if(strcmp(f->s, m->name) == 0){
67 sysfatal("unknown il field or protocol: %s", f->s);
71 p_filter(Filter *f, Msg *m)
75 if(m->pe - m->ps < ILLEN)
82 return NetS(h->sport) == f->ulv;
84 return NetS(h->dport) == f->ulv;
86 return NetS(h->sport) == f->ulv || NetS(h->dport) == f->ulv;
120 if(m->pe - m->ps < ILLEN)
125 dport = NetS(h->dport);
126 sport = NetS(h->sport);
127 demux(p_mux, sport, dport, m, &dump);
129 m->p = seprint(m->p, m->e, "s=%d d=%d t=%s id=%lud ack=%lud spec=%d ck=%4.4ux ln=%d",
130 sport, dport, pkttype(h->type),
131 (ulong)NetL(h->id), (ulong)NetL(h->ack),
133 NetS(h->sum), NetS(h->len));