allow cs to lookup mac/ip/ip6 addresses for us. Notes: Tue Aug 21 15:39:40 EDT 2007 geoff Under consideration. Reference: /n/sources/patch/applied/snoopy-ndb Date: Thu Aug 16 17:50:02 CES 2007 Signed-off-by: quanstro@quanstro.net Reviewed-by: geoff --- /sys/src/cmd/ip/snoopy/main.c Thu Aug 16 17:45:43 2007 +++ /sys/src/cmd/ip/snoopy/main.c Thu Aug 16 17:50:30 2007 @@ -4,6 +4,7 @@ #include #include #include +#include #include "dat.h" #include "protos.h" #include "y.tab.h" @@ -735,6 +736,7 @@ compile_cmp(char *proto, Filter *f, Field *fld) { uchar x[IPaddrlen]; + char *v; if(f->op != '=') sysfatal("internal error: compile_cmp %s: not a cmp", proto); @@ -748,13 +750,28 @@ f->ulv = atoi(f->r->s); break; case Fether: - parseether(f->a, f->r->s); + v = csgetvalue(nil, "sys", (char*)f->r->s, "ether", 0); + if(v){ + parseether(f->a, v); + free(v); + } else + parseether(f->a, f->r->s); break; case Fv4ip: - f->ulv = parseip(x, f->r->s); + v = csgetvalue(nil, "sys", (char*)f->r->s, "ip", 0); + if(v){ + f->ulv = parseip(x, v); + free(v); + }else + f->ulv = parseip(x, f->r->s); break; case Fv6ip: - parseip(f->a, f->r->s); + v = csgetvalue(nil, "sys", (char*)f->r->s, "ip6", 0); + if(v){ + parseip(f->a, v); + free(v); + }else + parseip(f->a, f->r->s); break; case Fba: parseba(f->a, f->r->s);