From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jamal Hadi Salim Subject: Re: [PATCH iproute2 1/1] utils: make hex2mem available to all users Date: Sat, 14 Jan 2017 17:09:58 -0500 Message-ID: References: <1484431483-31896-1-git-send-email-jhs@emojatatu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org To: stephen@networkplumber.org Return-path: Received: from mail-it0-f66.google.com ([209.85.214.66]:35851 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750702AbdANWQK (ORCPT ); Sat, 14 Jan 2017 17:16:10 -0500 Received: by mail-it0-f66.google.com with SMTP id o138so8703737ito.3 for ; Sat, 14 Jan 2017 14:16:09 -0800 (PST) In-Reply-To: <1484431483-31896-1-git-send-email-jhs@emojatatu.com> Sender: netdev-owner@vger.kernel.org List-ID: Sorry, messed up Stephen's address. Resending.. cheers, jamal On 17-01-14 05:04 PM, Jamal Hadi Salim wrote: > From: Jamal Hadi Salim > > hex2mem() api is useful for parsing hexstrings which are then packed in > a stream of chars. > > Signed-off-by: Jamal Hadi Salim > --- > 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; >