diff options
| author | David M. Syzdek <syzdek@bindlebinaries.com> | 2013-12-03 12:04:04 -0900 |
|---|---|---|
| committer | David M. Syzdek <syzdek@bindlebinaries.com> | 2013-12-03 12:04:04 -0900 |
| commit | 79e51fca6e18699479aedc540d35363656d900ce (patch) | |
| tree | 478bd76e3dfe8e8109340e307b9ac843f3653311 /src | |
| parent | 35d17bfd8210b0f833ef5043730e0218e0050915 (diff) | |
| download | dmstools-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.c | 19 |
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" |
