From 0d8330b5c3c9c56f705cc21916f207311dc65d2a Mon Sep 17 00:00:00 2001 From: "Troy D. Hanson" Date: Tue, 5 Jul 2016 20:53:36 -0400 Subject: [PATCH] mac as cast.cfg type --- utils/kvsp-bconfig.h | 2 +- utils/kvsp-bpub.c | 15 ++++++++++++++- utils/kvsp-npub.c | 15 ++++++++++++++- utils/kvsp-tpub.c | 15 ++++++++++++++- 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/utils/kvsp-bconfig.h b/utils/kvsp-bconfig.h index 7f5086c..6e87757 100644 --- a/utils/kvsp-bconfig.h +++ b/utils/kvsp-bconfig.h @@ -9,7 +9,7 @@ extern UT_array /* of int */ *output_types; extern char *supported_types_str[]; -#define TYPES x(i16) x(i32) x(ipv4) x(str) x(i8) x(d64) +#define TYPES x(i16) x(i32) x(ipv4) x(str) x(i8) x(d64) x(mac) #define x(t) t, enum supported_types { TYPES }; #undef x diff --git a/utils/kvsp-bpub.c b/utils/kvsp-bpub.c index 96031e9..8e939b6 100644 --- a/utils/kvsp-bpub.c +++ b/utils/kvsp-bpub.c @@ -43,7 +43,7 @@ void usage(char *prog) { } int set_to_binary(void *set, zmq_msg_t *part) { - uint32_t l, u, a,b,c,d, abcd; + uint32_t l, u, a,b,c,d,e,f, abcd; uint16_t s; uint8_t g; double h; @@ -73,6 +73,19 @@ int set_to_binary(void *set, zmq_msg_t *part) { l=kv->vlen; utstring_bincpy(tmp,&l,sizeof(l)); /* length prefix */ utstring_bincpy(tmp,kv->val,kv->vlen); /* string itself */ break; + case mac: + if ((sscanf(kv->val,"%u:%u:%u:%u:%u:%u",&a,&b,&c,&d,&e,&f) != 6) || + (a > 255 || b > 255 || c > 255 || d > 255 || e > 255 || f > 255)) { + fprintf(stderr,"invalid MAC for key %s: %s\n",*k,kv->val); + goto done; + } + utstring_bincpy(tmp,&a,sizeof(a)); + utstring_bincpy(tmp,&b,sizeof(b)); + utstring_bincpy(tmp,&c,sizeof(c)); + utstring_bincpy(tmp,&d,sizeof(d)); + utstring_bincpy(tmp,&e,sizeof(e)); + utstring_bincpy(tmp,&f,sizeof(f)); + break; case ipv4: if ((sscanf(kv->val,"%u.%u.%u.%u",&a,&b,&c,&d) != 4) || (a > 255 || b > 255 || c > 255 || d > 255)) { diff --git a/utils/kvsp-npub.c b/utils/kvsp-npub.c index 3385301..ee6a548 100644 --- a/utils/kvsp-npub.c +++ b/utils/kvsp-npub.c @@ -34,7 +34,7 @@ void usage(char *prog) { } int set_to_binary(void *set) { - uint32_t l, u, a,b,c,d, abcd; + uint32_t l, u, a,b,c,d,e,f, abcd; uint16_t s; uint8_t g; double h; @@ -64,6 +64,19 @@ int set_to_binary(void *set) { l=kv->vlen; utstring_bincpy(tmp,&l,sizeof(l)); /* length prefix */ utstring_bincpy(tmp,kv->val,kv->vlen); /* string itself */ break; + case mac: + if ((sscanf(kv->val,"%u:%u:%u:%u:%u:%u",&a,&b,&c,&d,&e,&f) != 6) || + (a > 255 || b > 255 || c > 255 || d > 255 || e > 255 || f > 255)) { + fprintf(stderr,"invalid MAC for key %s: %s\n",*k,kv->val); + goto done; + } + utstring_bincpy(tmp,&a,sizeof(a)); + utstring_bincpy(tmp,&b,sizeof(b)); + utstring_bincpy(tmp,&c,sizeof(c)); + utstring_bincpy(tmp,&d,sizeof(d)); + utstring_bincpy(tmp,&e,sizeof(e)); + utstring_bincpy(tmp,&f,sizeof(f)); + break; case ipv4: if ((sscanf(kv->val,"%u.%u.%u.%u",&a,&b,&c,&d) != 4) || (a > 255 || b > 255 || c > 255 || d > 255)) { diff --git a/utils/kvsp-tpub.c b/utils/kvsp-tpub.c index 7e18e82..4a374db 100644 --- a/utils/kvsp-tpub.c +++ b/utils/kvsp-tpub.c @@ -83,7 +83,7 @@ void mark_writable() { } int set_to_binary(void *set, UT_string *bin) { - uint32_t l, u, a,b,c,d, abcd; + uint32_t l, u, a,b,c,d,e,f, abcd; uint16_t s; uint8_t g; double h; @@ -114,6 +114,19 @@ int set_to_binary(void *set, UT_string *bin) { l=kv->vlen; utstring_bincpy(bin,&l,sizeof(l)); /* length prefix */ utstring_bincpy(bin,kv->val,kv->vlen); /* string itself */ break; + case mac: + if ((sscanf(kv->val,"%u:%u:%u:%u:%u:%u",&a,&b,&c,&d,&e,&f) != 6) || + (a > 255 || b > 255 || c > 255 || d > 255 || e > 255 || f > 255)) { + fprintf(stderr,"invalid MAC for key %s: %s\n",*k,kv->val); + goto done; + } + utstring_bincpy(bin,&a,sizeof(a)); + utstring_bincpy(bin,&b,sizeof(b)); + utstring_bincpy(bin,&c,sizeof(c)); + utstring_bincpy(bin,&d,sizeof(d)); + utstring_bincpy(bin,&e,sizeof(e)); + utstring_bincpy(bin,&f,sizeof(f)); + break; case ipv4: if ((sscanf(kv->val,"%u.%u.%u.%u",&a,&b,&c,&d) != 4) || (a > 255 || b > 255 || c > 255 || d > 255)) {