[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1484431483-31896-1-git-send-email-jhs@emojatatu.com>
Date: Sat, 14 Jan 2017 17:04:43 -0500
From: Jamal Hadi Salim <jhs@...atatu.com>
To: tephen@...workplumber.org
Cc: netdev@...r.kernel.org, Jamal Hadi Salim <jhs@...atatu.com>
Subject: [PATCH iproute2 1/1] utils: make hex2mem available to all users
From: Jamal Hadi Salim <jhs@...atatu.com>
hex2mem() api is useful for parsing hexstrings which are then packed in
a stream of chars.
Signed-off-by: Jamal Hadi Salim <jhs@...atatu.com>
---
include/utils.h | 1 +
ip/ipl2tp.c | 25 -------------------------
lib/utils.c | 25 +++++++++++++++++++++++++
3 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/include/utils.h b/include/utils.h
index dc1d6b9..22369e0 100644
--- a/include/utils.h
+++ b/include/utils.h
@@ -118,6 +118,7 @@ int get_be32(__be32 *val, const char *arg, int base);
int get_be16(__be16 *val, const char *arg, int base);
int get_addr64(__u64 *ap, const char *cp);
+int hex2mem(const char *buf, uint8_t *mem, int count);
char *hexstring_n2a(const __u8 *str, int len, char *buf, int blen);
__u8 *hexstring_a2n(const char *str, __u8 *buf, int blen, unsigned int *len);
#define ADDR64_BUF_SIZE sizeof("xxxx:xxxx:xxxx:xxxx")
diff --git a/ip/ipl2tp.c b/ip/ipl2tp.c
index 0f91aeb..88664c9 100644
--- a/ip/ipl2tp.c
+++ b/ip/ipl2tp.c
@@ -485,31 +485,6 @@ static int get_tunnel(struct l2tp_data *p)
* Command parser
*****************************************************************************/
-static int hex2mem(const char *buf, uint8_t *mem, int count)
-{
- int i, j;
- int c;
-
- for (i = 0, j = 0; i < count; i++, j += 2) {
- c = get_hex(buf[j]);
- if (c < 0)
- goto err;
-
- mem[i] = c << 4;
-
- c = get_hex(buf[j + 1]);
- if (c < 0)
- goto err;
-
- mem[i] |= c;
- }
-
- return 0;
-
-err:
- return -1;
-}
-
static void usage(void) __attribute__((noreturn));
static void usage(void)
diff --git a/lib/utils.c b/lib/utils.c
index 83c9d09..870c4f1 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -962,6 +962,31 @@ __u8 *hexstring_a2n(const char *str, __u8 *buf, int blen, unsigned int *len)
return buf;
}
+int hex2mem(const char *buf, uint8_t *mem, int count)
+{
+ int i, j;
+ int c;
+
+ for (i = 0, j = 0; i < count; i++, j += 2) {
+ c = get_hex(buf[j]);
+ if (c < 0)
+ goto err;
+
+ mem[i] = c << 4;
+
+ c = get_hex(buf[j + 1]);
+ if (c < 0)
+ goto err;
+
+ mem[i] |= c;
+ }
+
+ return 0;
+
+err:
+ return -1;
+}
+
int addr64_n2a(__u64 addr, char *buff, size_t len)
{
__u16 *words = (__u16 *)&addr;
--
1.9.1
Powered by blists - more mailing lists