aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
authorDavid M. Syzdek <syzdek@bindlebinaries.com>2013-12-03 12:04:04 -0900
committerDavid M. Syzdek <syzdek@bindlebinaries.com>2013-12-03 12:04:04 -0900
commit79e51fca6e18699479aedc540d35363656d900ce (patch)
tree478bd76e3dfe8e8109340e307b9ac843f3653311 /src
parent35d17bfd8210b0f833ef5043730e0218e0050915 (diff)
downloaddmstools-79e51fca6e18699479aedc540d35363656d900ce.tar.gz
dmstools-79e51fca6e18699479aedc540d35363656d900ce.tar.bz2
dmstools-79e51fca6e18699479aedc540d35363656d900ce.tar.xz
dmstools-79e51fca6e18699479aedc540d35363656d900ce.zip
Adding support for raw output notation.
Diffstat (limited to 'src')
-rw-r--r--src/macaddrutil.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/macaddrutil.c b/src/macaddrutil.c
index c5f8c00..45381b5 100644
--- a/src/macaddrutil.c
+++ b/src/macaddrutil.c
@@ -103,7 +103,7 @@
103#endif 103#endif
104 104
105 105
106#define MAU_GETOPT_SHORT "cDdhlquVv" 106#define MAU_GETOPT_SHORT "cDdhlqRuVv"
107 107
108#define MAU_GETOPT_LONG {"colon", no_argument, NULL, 'c'}, \ 108#define MAU_GETOPT_LONG {"colon", no_argument, NULL, 'c'}, \
109 {"dot", no_argument, NULL, 'D'}, \ 109 {"dot", no_argument, NULL, 'D'}, \
@@ -111,6 +111,7 @@
111 {"help", no_argument, NULL, 'h'}, \ 111 {"help", no_argument, NULL, 'h'}, \
112 {"lower", no_argument, NULL, 'l'}, \ 112 {"lower", no_argument, NULL, 'l'}, \
113 {"quiet", no_argument, NULL, 'q'}, \ 113 {"quiet", no_argument, NULL, 'q'}, \
114 {"raw", no_argument, NULL, 'R'}, \
114 {"silent", no_argument, NULL, 'q'}, \ 115 {"silent", no_argument, NULL, 'q'}, \
115 {"upper", no_argument, NULL, 'u'}, \ 116 {"upper", no_argument, NULL, 'u'}, \
116 {"version", no_argument, NULL, 'V'}, \ 117 {"version", no_argument, NULL, 'V'}, \
@@ -123,6 +124,7 @@
123#define MAU_NOTATION_COLON 0x00000000 124#define MAU_NOTATION_COLON 0x00000000
124#define MAU_NOTATION_DASH 0x00000001 125#define MAU_NOTATION_DASH 0x00000001
125#define MAU_NOTATION_DOT 0x00000002 126#define MAU_NOTATION_DOT 0x00000002
127#define MAU_NOTATION_RAW 0x00000003
126 128
127#define MAU_CASE(notation) (notation & MAU_MASK_CASE) 129#define MAU_CASE(notation) (notation & MAU_MASK_CASE)
128#define MAU_NOTATION(notation) (notation & MAU_MASK_NOTATION) 130#define MAU_NOTATION(notation) (notation & MAU_MASK_NOTATION)
@@ -650,6 +652,10 @@ int mau_getopt(mau_config * cnf, int argc, char * const * argv,
650 cnf->quiet++; 652 cnf->quiet++;
651 return(-2); 653 return(-2);
652 654
655 case 'R':
656 cnf->notation = MAU_SET_NOTATION(cnf->notation, MAU_NOTATION_RAW);
657 return(-2);
658
653 case 'u': 659 case 'u':
654 cnf->notation = MAU_SET_CASE(cnf->notation, MAU_CASE_UPPER); 660 cnf->notation = MAU_SET_CASE(cnf->notation, MAU_CASE_UPPER);
655 return(-2); 661 return(-2);
@@ -748,6 +754,14 @@ int mau_mac2str(mau_config * cnf, const mauaddr_t addr, maustr_t str)
748 snprintf(str, sizeof(maustr_t), "%02X%02X.%02X%02X.%02X%02X", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]); 754 snprintf(str, sizeof(maustr_t), "%02X%02X.%02X%02X.%02X%02X", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]);
749 break; 755 break;
750 756
757 case (MAU_NOTATION_RAW | MAU_CASE_LOWER):
758 snprintf(str, sizeof(maustr_t), "%02x%02x%02x%02x%02x%02x", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]);
759 break;
760
761 case (MAU_NOTATION_RAW | MAU_CASE_UPPER):
762 snprintf(str, sizeof(maustr_t), "%02X%02X%02X%02X%02X%02X", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]);
763 break;
764
751 default: 765 default:
752 snprintf(str, sizeof(maustr_t), "%02x:%02x:%02x:%02x:%02x:%02x", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]); 766 snprintf(str, sizeof(maustr_t), "%02x:%02x:%02x:%02x:%02x:%02x", addr[0],addr[1],addr[2],addr[3],addr[4],addr[5]);
753 }; 767 };
@@ -770,6 +784,8 @@ int mau_str2mac(mau_config * cnf, const maustr_t str, mauaddr_t addr)
770 if (len != 6) 784 if (len != 6)
771 len = sscanf(str, "%02X%02X.%02X%02X.%02X%02X", &buff[0],&buff[1],&buff[2],&buff[3],&buff[4],&buff[5]); 785 len = sscanf(str, "%02X%02X.%02X%02X.%02X%02X", &buff[0],&buff[1],&buff[2],&buff[3],&buff[4],&buff[5]);
772 if (len != 6) 786 if (len != 6)
787 len = sscanf(str, "%02X%02X%02X%02X%02X%02X", &buff[0],&buff[1],&buff[2],&buff[3],&buff[4],&buff[5]);
788 if (len != 6)
773 { 789 {
774 mau_log_err(cnf, "invalid MAC address\n"); 790 mau_log_err(cnf, "invalid MAC address\n");
775 return(1); 791 return(1);
@@ -807,6 +823,7 @@ void mau_usage(mau_config * cnf)
807 " -h, --help print this help and exit\n" 823 " -h, --help print this help and exit\n"
808 " -l, --lower print MAC addresses in lower case\n" 824 " -l, --lower print MAC addresses in lower case\n"
809 " -q, --quiet, --silent do not print messages\n" 825 " -q, --quiet, --silent do not print messages\n"
826 " -R, --raw print MAC addresses in raw hex notation\n"
810 " -u, --upper print MAC addresses in upper case\n" 827 " -u, --upper print MAC addresses in upper case\n"
811 " -V, --version print version number and exit\n" 828 " -V, --version print version number and exit\n"
812 " -v, --verbose print verbose messages\n" 829 " -v, --verbose print verbose messages\n"