diff options
author | 2015-12-09 05:07:44 +0200 | |
---|---|---|
committer | 2015-12-27 08:50:12 +0200 | |
commit | 509648b87434b9032d38b8ca5ad470ba3edcc036 (patch) | |
tree | 920548ce9e2e5aeed4c88c1b288290505e7d7987 /src/dpdk_lib18/librte_cmdline | |
parent | b161dc672544a913f7f1ddf3a086dd75f2f1134a (diff) |
Adding dpdk 2.2 instead of dpdk 1.8 and making changes to make compilation work.
40G and 10G filters do not work yet.
Diffstat (limited to 'src/dpdk_lib18/librte_cmdline')
23 files changed, 0 insertions, 5388 deletions
diff --git a/src/dpdk_lib18/librte_cmdline/Makefile b/src/dpdk_lib18/librte_cmdline/Makefile deleted file mode 100755 index 7eae4493..00000000 --- a/src/dpdk_lib18/librte_cmdline/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# BSD LICENSE -# -# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -include $(RTE_SDK)/mk/rte.vars.mk - -# library name -LIB = librte_cmdline.a - -CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3 - -# all source are stored in SRCS-y -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := cmdline.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_cirbuf.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_etheraddr.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_ipaddr.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_num.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_string.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_rdline.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_vt100.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_socket.c -SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_parse_portlist.c - -CFLAGS += -D_GNU_SOURCE - -# install includes -INCS := cmdline.h cmdline_parse.h cmdline_parse_num.h cmdline_parse_ipaddr.h -INCS += cmdline_parse_etheraddr.h cmdline_parse_string.h cmdline_rdline.h -INCS += cmdline_vt100.h cmdline_socket.h cmdline_cirbuf.h cmdline_parse_portlist.h -SYMLINK-$(CONFIG_RTE_LIBRTE_CMDLINE)-include := $(INCS) - -# this lib needs eal -DEPDIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += lib/librte_eal - -include $(RTE_SDK)/mk/rte.lib.mk diff --git a/src/dpdk_lib18/librte_cmdline/cmdline.c b/src/dpdk_lib18/librte_cmdline/cmdline.c deleted file mode 100755 index e61c4f2c..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline.c +++ /dev/null @@ -1,264 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdarg.h> -#include <inttypes.h> -#include <fcntl.h> -#include <errno.h> -#include <termios.h> -#include <netinet/in.h> - -#include <rte_string_fns.h> - -#include "cmdline_parse.h" -#include "cmdline_rdline.h" -#include "cmdline.h" - -static void -cmdline_valid_buffer(struct rdline *rdl, const char *buf, - __attribute__((unused)) unsigned int size) -{ - struct cmdline *cl = rdl->opaque; - int ret; - ret = cmdline_parse(cl, buf); - if (ret == CMDLINE_PARSE_AMBIGUOUS) - cmdline_printf(cl, "Ambiguous command\n"); - else if (ret == CMDLINE_PARSE_NOMATCH) - cmdline_printf(cl, "Command not found\n"); - else if (ret == CMDLINE_PARSE_BAD_ARGS) - cmdline_printf(cl, "Bad arguments\n"); -} - -static int -cmdline_complete_buffer(struct rdline *rdl, const char *buf, - char *dstbuf, unsigned int dstsize, - int *state) -{ - struct cmdline *cl = rdl->opaque; - return cmdline_complete(cl, buf, state, dstbuf, dstsize); -} - -int -cmdline_write_char(struct rdline *rdl, char c) -{ - int ret = -1; - struct cmdline *cl; - - if (!rdl) - return -1; - - cl = rdl->opaque; - - if (cl->s_out >= 0) - ret = write(cl->s_out, &c, 1); - - return ret; -} - - -void -cmdline_set_prompt(struct cmdline *cl, const char *prompt) -{ - if (!cl || !prompt) - return; - snprintf(cl->prompt, sizeof(cl->prompt), "%s", prompt); -} - -struct cmdline * -cmdline_new(cmdline_parse_ctx_t *ctx, const char *prompt, int s_in, int s_out) -{ - struct cmdline *cl; - - if (!ctx || !prompt) - return NULL; - - cl = malloc(sizeof(struct cmdline)); - if (cl == NULL) - return NULL; - memset(cl, 0, sizeof(struct cmdline)); - cl->s_in = s_in; - cl->s_out = s_out; - cl->ctx = ctx; - - rdline_init(&cl->rdl, cmdline_write_char, - cmdline_valid_buffer, cmdline_complete_buffer); - cl->rdl.opaque = cl; - cmdline_set_prompt(cl, prompt); - rdline_newline(&cl->rdl, cl->prompt); - - return cl; -} - -void -cmdline_free(struct cmdline *cl) -{ - dprintf("called\n"); - - if (!cl) - return; - - if (cl->s_in > 2) - close(cl->s_in); - if (cl->s_out != cl->s_in && cl->s_out > 2) - close(cl->s_out); - free(cl); -} - -void -cmdline_printf(const struct cmdline *cl, const char *fmt, ...) -{ - va_list ap; - - if (!cl || !fmt) - return; - -#ifdef _GNU_SOURCE - if (cl->s_out < 0) - return; - va_start(ap, fmt); - vdprintf(cl->s_out, fmt, ap); - va_end(ap); -#else - int ret; - char *buf; - - if (cl->s_out < 0) - return; - - buf = malloc(BUFSIZ); - if (buf == NULL) - return; - va_start(ap, fmt); - ret = vsnprintf(buf, BUFSIZ, fmt, ap); - va_end(ap); - if (ret < 0) - return; - if (ret >= BUFSIZ) - ret = BUFSIZ - 1; - write(cl->s_out, buf, ret); - free(buf); -#endif -} - -int -cmdline_in(struct cmdline *cl, const char *buf, int size) -{ - const char *history, *buffer; - size_t histlen, buflen; - int ret = 0; - int i, same; - - if (!cl || !buf) - return -1; - - for (i=0; i<size; i++) { - ret = rdline_char_in(&cl->rdl, buf[i]); - - if (ret == RDLINE_RES_VALIDATED) { - buffer = rdline_get_buffer(&cl->rdl); - history = rdline_get_history_item(&cl->rdl, 0); - if (history) { - histlen = strnlen(history, RDLINE_BUF_SIZE); - same = !memcmp(buffer, history, histlen) && - buffer[histlen] == '\n'; - } - else - same = 0; - buflen = strnlen(buffer, RDLINE_BUF_SIZE); - if (buflen > 1 && !same) - rdline_add_history(&cl->rdl, buffer); - rdline_newline(&cl->rdl, cl->prompt); - } - else if (ret == RDLINE_RES_EOF) - return -1; - else if (ret == RDLINE_RES_EXITED) - return -1; - } - return i; -} - -void -cmdline_quit(struct cmdline *cl) -{ - if (!cl) - return; - rdline_quit(&cl->rdl); -} - -void -cmdline_interact(struct cmdline *cl) -{ - char c; - - if (!cl) - return; - - c = -1; - while (1) { - if (read(cl->s_in, &c, 1) <= 0) - break; - if (cmdline_in(cl, &c, 1) < 0) - break; - } -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline.h b/src/dpdk_lib18/librte_cmdline/cmdline.h deleted file mode 100755 index 06ae0866..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline.h +++ /dev/null @@ -1,91 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _CMDLINE_H_ -#define _CMDLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -struct cmdline { - int s_in; - int s_out; - cmdline_parse_ctx_t *ctx; - struct rdline rdl; - char prompt[RDLINE_PROMPT_SIZE]; - struct termios oldterm; -}; - -struct cmdline *cmdline_new(cmdline_parse_ctx_t *ctx, const char *prompt, int s_in, int s_out); -void cmdline_set_prompt(struct cmdline *cl, const char *prompt); -void cmdline_free(struct cmdline *cl); -void cmdline_printf(const struct cmdline *cl, const char *fmt, ...) - __attribute__((format(printf,2,3))); -int cmdline_in(struct cmdline *cl, const char *buf, int size); -int cmdline_write_char(struct rdline *rdl, char c); -void cmdline_interact(struct cmdline *cl); -void cmdline_quit(struct cmdline *cl); - -#ifdef __cplusplus -} -#endif - -#endif /* _CMDLINE_SOCKET_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.c b/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.c deleted file mode 100755 index b9f9f4bc..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.c +++ /dev/null @@ -1,467 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> -#include <errno.h> -#include <stdio.h> - -#include "cmdline_cirbuf.h" - - -int -cirbuf_init(struct cirbuf *cbuf, char *buf, unsigned int start, unsigned int maxlen) -{ - if (!cbuf || !buf) - return -EINVAL; - cbuf->maxlen = maxlen; - cbuf->len = 0; - cbuf->start = start; - cbuf->end = start; - cbuf->buf = buf; - return 0; -} - -/* multiple add */ - -int -cirbuf_add_buf_head(struct cirbuf *cbuf, const char *c, unsigned int n) -{ - unsigned int e; - - if (!cbuf || !c || !n || n > CIRBUF_GET_FREELEN(cbuf)) - return -EINVAL; - - e = CIRBUF_IS_EMPTY(cbuf) ? 1 : 0; - - if (n < cbuf->start + e) { - dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->start - n + e, n); - memcpy(cbuf->buf + cbuf->start - n + e, c, n); - } - else { - dprintf("s[%d] -> d[%d] (%d)\n", + n - (cbuf->start + e), 0, - cbuf->start + e); - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - n + - (cbuf->start + e), 0, n - (cbuf->start + e)); - memcpy(cbuf->buf, c + n - (cbuf->start + e) , cbuf->start + e); - memcpy(cbuf->buf + cbuf->maxlen - n + (cbuf->start + e), c, - n - (cbuf->start + e)); - } - cbuf->len += n; - cbuf->start += (cbuf->maxlen - n + e); - cbuf->start %= cbuf->maxlen; - return n; -} - -/* multiple add */ - -int -cirbuf_add_buf_tail(struct cirbuf *cbuf, const char *c, unsigned int n) -{ - unsigned int e; - - if (!cbuf || !c || !n || n > CIRBUF_GET_FREELEN(cbuf)) - return -EINVAL; - - e = CIRBUF_IS_EMPTY(cbuf) ? 1 : 0; - - if (n < cbuf->maxlen - cbuf->end - 1 + e) { - dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->end + !e, n); - memcpy(cbuf->buf + cbuf->end + !e, c, n); - } - else { - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->end + !e, 0, - cbuf->maxlen - cbuf->end - 1 + e); - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->maxlen - cbuf->end - 1 + - e, 0, n - cbuf->maxlen + cbuf->end + 1 - e); - memcpy(cbuf->buf + cbuf->end + !e, c, cbuf->maxlen - - cbuf->end - 1 + e); - memcpy(cbuf->buf, c + cbuf->maxlen - cbuf->end - 1 + e, - n - cbuf->maxlen + cbuf->end + 1 - e); - } - cbuf->len += n; - cbuf->end += n - e; - cbuf->end %= cbuf->maxlen; - return n; -} - -/* add at head */ - -static inline void -__cirbuf_add_head(struct cirbuf * cbuf, char c) -{ - if (!CIRBUF_IS_EMPTY(cbuf)) { - cbuf->start += (cbuf->maxlen - 1); - cbuf->start %= cbuf->maxlen; - } - cbuf->buf[cbuf->start] = c; - cbuf->len ++; -} - -int -cirbuf_add_head_safe(struct cirbuf * cbuf, char c) -{ - if (cbuf && !CIRBUF_IS_FULL(cbuf)) { - __cirbuf_add_head(cbuf, c); - return 0; - } - return -EINVAL; -} - -void -cirbuf_add_head(struct cirbuf * cbuf, char c) -{ - __cirbuf_add_head(cbuf, c); -} - -/* add at tail */ - -static inline void -__cirbuf_add_tail(struct cirbuf * cbuf, char c) -{ - if (!CIRBUF_IS_EMPTY(cbuf)) { - cbuf->end ++; - cbuf->end %= cbuf->maxlen; - } - cbuf->buf[cbuf->end] = c; - cbuf->len ++; -} - -int -cirbuf_add_tail_safe(struct cirbuf * cbuf, char c) -{ - if (cbuf && !CIRBUF_IS_FULL(cbuf)) { - __cirbuf_add_tail(cbuf, c); - return 0; - } - return -EINVAL; -} - -void -cirbuf_add_tail(struct cirbuf * cbuf, char c) -{ - __cirbuf_add_tail(cbuf, c); -} - - -static inline void -__cirbuf_shift_left(struct cirbuf *cbuf) -{ - unsigned int i; - char tmp = cbuf->buf[cbuf->start]; - - for (i=0 ; i<cbuf->len ; i++) { - cbuf->buf[(cbuf->start+i)%cbuf->maxlen] = - cbuf->buf[(cbuf->start+i+1)%cbuf->maxlen]; - } - cbuf->buf[(cbuf->start-1+cbuf->maxlen)%cbuf->maxlen] = tmp; - cbuf->start += (cbuf->maxlen - 1); - cbuf->start %= cbuf->maxlen; - cbuf->end += (cbuf->maxlen - 1); - cbuf->end %= cbuf->maxlen; -} - -static inline void -__cirbuf_shift_right(struct cirbuf *cbuf) -{ - unsigned int i; - char tmp = cbuf->buf[cbuf->end]; - - for (i=0 ; i<cbuf->len ; i++) { - cbuf->buf[(cbuf->end+cbuf->maxlen-i)%cbuf->maxlen] = - cbuf->buf[(cbuf->end+cbuf->maxlen-i-1)%cbuf->maxlen]; - } - cbuf->buf[(cbuf->end+1)%cbuf->maxlen] = tmp; - cbuf->start += 1; - cbuf->start %= cbuf->maxlen; - cbuf->end += 1; - cbuf->end %= cbuf->maxlen; -} - -/* XXX we could do a better algorithm here... */ -int -cirbuf_align_left(struct cirbuf * cbuf) -{ - if (!cbuf) - return -EINVAL; - - if (cbuf->start < cbuf->maxlen/2) { - while (cbuf->start != 0) { - __cirbuf_shift_left(cbuf); - } - } - else { - while (cbuf->start != 0) { - __cirbuf_shift_right(cbuf); - } - } - - return 0; -} - -/* XXX we could do a better algorithm here... */ -int -cirbuf_align_right(struct cirbuf * cbuf) -{ - if (!cbuf) - return -EINVAL; - - if (cbuf->start >= cbuf->maxlen/2) { - while (cbuf->end != cbuf->maxlen-1) { - __cirbuf_shift_left(cbuf); - } - } - else { - while (cbuf->start != cbuf->maxlen-1) { - __cirbuf_shift_right(cbuf); - } - } - - return 0; -} - -/* buffer del */ - -int -cirbuf_del_buf_head(struct cirbuf *cbuf, unsigned int size) -{ - if (!cbuf || !size || size > CIRBUF_GET_LEN(cbuf)) - return -EINVAL; - - cbuf->len -= size; - if (CIRBUF_IS_EMPTY(cbuf)) { - cbuf->start += size - 1; - cbuf->start %= cbuf->maxlen; - } - else { - cbuf->start += size; - cbuf->start %= cbuf->maxlen; - } - return 0; -} - -/* buffer del */ - -int -cirbuf_del_buf_tail(struct cirbuf *cbuf, unsigned int size) -{ - if (!cbuf || !size || size > CIRBUF_GET_LEN(cbuf)) - return -EINVAL; - - cbuf->len -= size; - if (CIRBUF_IS_EMPTY(cbuf)) { - cbuf->end += (cbuf->maxlen - size + 1); - cbuf->end %= cbuf->maxlen; - } - else { - cbuf->end += (cbuf->maxlen - size); - cbuf->end %= cbuf->maxlen; - } - return 0; -} - -/* del at head */ - -static inline void -__cirbuf_del_head(struct cirbuf * cbuf) -{ - cbuf->len --; - if (!CIRBUF_IS_EMPTY(cbuf)) { - cbuf->start ++; - cbuf->start %= cbuf->maxlen; - } -} - -int -cirbuf_del_head_safe(struct cirbuf * cbuf) -{ - if (cbuf && !CIRBUF_IS_EMPTY(cbuf)) { - __cirbuf_del_head(cbuf); - return 0; - } - return -EINVAL; -} - -void -cirbuf_del_head(struct cirbuf * cbuf) -{ - __cirbuf_del_head(cbuf); -} - -/* del at tail */ - -static inline void -__cirbuf_del_tail(struct cirbuf * cbuf) -{ - cbuf->len --; - if (!CIRBUF_IS_EMPTY(cbuf)) { - cbuf->end += (cbuf->maxlen - 1); - cbuf->end %= cbuf->maxlen; - } -} - -int -cirbuf_del_tail_safe(struct cirbuf * cbuf) -{ - if (cbuf && !CIRBUF_IS_EMPTY(cbuf)) { - __cirbuf_del_tail(cbuf); - return 0; - } - return -EINVAL; -} - -void -cirbuf_del_tail(struct cirbuf * cbuf) -{ - __cirbuf_del_tail(cbuf); -} - -/* convert to buffer */ - -int -cirbuf_get_buf_head(struct cirbuf *cbuf, char *c, unsigned int size) -{ - unsigned int n; - - if (!cbuf || !c) - return -EINVAL; - - n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf); - - if (!n) - return 0; - - if (cbuf->start <= cbuf->end) { - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->start, 0, n); - memcpy(c, cbuf->buf + cbuf->start , n); - } - else { - /* check if we need to go from end to the beginning */ - if (n <= cbuf->maxlen - cbuf->start) { - dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->start, n); - memcpy(c, cbuf->buf + cbuf->start , n); - } - else { - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->start, 0, - cbuf->maxlen - cbuf->start); - dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->maxlen - cbuf->start, - n - cbuf->maxlen + cbuf->start); - memcpy(c, cbuf->buf + cbuf->start , cbuf->maxlen - cbuf->start); - memcpy(c + cbuf->maxlen - cbuf->start, cbuf->buf, - n - cbuf->maxlen + cbuf->start); - } - } - return n; -} - -/* convert to buffer */ - -int -cirbuf_get_buf_tail(struct cirbuf *cbuf, char *c, unsigned int size) -{ - unsigned int n; - - if (!cbuf || !c) - return -EINVAL; - - n = (size < CIRBUF_GET_LEN(cbuf)) ? size : CIRBUF_GET_LEN(cbuf); - - if (!n) - return 0; - - if (cbuf->start <= cbuf->end) { - dprintf("s[%d] -> d[%d] (%d)\n", cbuf->end - n + 1, 0, n); - memcpy(c, cbuf->buf + cbuf->end - n + 1, n); - } - else { - /* check if we need to go from end to the beginning */ - if (n <= cbuf->end + 1) { - dprintf("s[%d] -> d[%d] (%d)\n", 0, cbuf->end - n + 1, n); - memcpy(c, cbuf->buf + cbuf->end - n + 1, n); - } - else { - dprintf("s[%d] -> d[%d] (%d)\n", 0, - cbuf->maxlen - cbuf->start, cbuf->end + 1); - dprintf("s[%d] -> d[%d] (%d)\n", - cbuf->maxlen - n + cbuf->end + 1, 0, n - cbuf->end - 1); - memcpy(c + cbuf->maxlen - cbuf->start, - cbuf->buf, cbuf->end + 1); - memcpy(c, cbuf->buf + cbuf->maxlen - n + cbuf->end +1, - n - cbuf->end - 1); - } - } - return n; -} - -/* get head or get tail */ - -char -cirbuf_get_head(struct cirbuf * cbuf) -{ - return cbuf->buf[cbuf->start]; -} - -/* get head or get tail */ - -char -cirbuf_get_tail(struct cirbuf * cbuf) -{ - return cbuf->buf[cbuf->end]; -} - diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.h b/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.h deleted file mode 100755 index 6321dec5..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_cirbuf.h +++ /dev/null @@ -1,245 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _CIRBUF_H_ -#define _CIRBUF_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * This structure is the header of a cirbuf type. - */ -struct cirbuf { - unsigned int maxlen; /**< total len of the fifo (number of elements) */ - unsigned int start; /**< indice of the first elt */ - unsigned int end; /**< indice of the last elt */ - unsigned int len; /**< current len of fifo */ - char *buf; -}; - -#ifdef RTE_LIBRTE_CMDLINE_DEBUG -#define dprintf_(fmt, ...) printf("line %3.3d - " fmt "%.0s", __LINE__, __VA_ARGS__) -#define dprintf(...) dprintf_(__VA_ARGS__, "dummy") -#else -#define dprintf(...) (void)0 -#endif - - -/** - * Init the circular buffer - */ -int cirbuf_init(struct cirbuf *cbuf, char *buf, unsigned int start, unsigned int maxlen); - - -/** - * Return 1 if the circular buffer is full - */ -#define CIRBUF_IS_FULL(cirbuf) ((cirbuf)->maxlen == (cirbuf)->len) - -/** - * Return 1 if the circular buffer is empty - */ -#define CIRBUF_IS_EMPTY(cirbuf) ((cirbuf)->len == 0) - -/** - * return current size of the circular buffer (number of used elements) - */ -#define CIRBUF_GET_LEN(cirbuf) ((cirbuf)->len) - -/** - * return size of the circular buffer (used + free elements) - */ -#define CIRBUF_GET_MAXLEN(cirbuf) ((cirbuf)->maxlen) - -/** - * return the number of free elts - */ -#define CIRBUF_GET_FREELEN(cirbuf) ((cirbuf)->maxlen - (cirbuf)->len) - -/** - * Iterator for a circular buffer - * c: struct cirbuf pointer - * i: an integer type internally used in the macro - * e: char that takes the value for each iteration - */ -#define CIRBUF_FOREACH(c, i, e) \ - for ( i=0, e=(c)->buf[(c)->start] ; \ - i<((c)->len) ; \ - i ++, e=(c)->buf[((c)->start+i)%((c)->maxlen)]) - - -/** - * Add a character at head of the circular buffer. Return 0 on success, or - * a negative value on error. - */ -int cirbuf_add_head_safe(struct cirbuf *cbuf, char c); - -/** - * Add a character at head of the circular buffer. You _must_ check that you - * have enough free space in the buffer before calling this func. - */ -void cirbuf_add_head(struct cirbuf *cbuf, char c); - -/** - * Add a character at tail of the circular buffer. Return 0 on success, or - * a negative value on error. - */ -int cirbuf_add_tail_safe(struct cirbuf *cbuf, char c); - -/** - * Add a character at tail of the circular buffer. You _must_ check that you - * have enough free space in the buffer before calling this func. - */ -void cirbuf_add_tail(struct cirbuf *cbuf, char c); - -/** - * Remove a char at the head of the circular buffer. Return 0 on - * success, or a negative value on error. - */ -int cirbuf_del_head_safe(struct cirbuf *cbuf); - -/** - * Remove a char at the head of the circular buffer. You _must_ check - * that buffer is not empty before calling the function. - */ -void cirbuf_del_head(struct cirbuf *cbuf); - -/** - * Remove a char at the tail of the circular buffer. Return 0 on - * success, or a negative value on error. - */ -int cirbuf_del_tail_safe(struct cirbuf *cbuf); - -/** - * Remove a char at the tail of the circular buffer. You _must_ check - * that buffer is not empty before calling the function. - */ -void cirbuf_del_tail(struct cirbuf *cbuf); - -/** - * Return the head of the circular buffer. You _must_ check that - * buffer is not empty before calling the function. - */ -char cirbuf_get_head(struct cirbuf *cbuf); - -/** - * Return the tail of the circular buffer. You _must_ check that - * buffer is not empty before calling the function. - */ -char cirbuf_get_tail(struct cirbuf *cbuf); - -/** - * Add a buffer at head of the circular buffer. 'c' is a pointer to a - * buffer, and n is the number of char to add. Return the number of - * copied bytes on success, or a negative value on error. - */ -int cirbuf_add_buf_head(struct cirbuf *cbuf, const char *c, unsigned int n); - -/** - * Add a buffer at tail of the circular buffer. 'c' is a pointer to a - * buffer, and n is the number of char to add. Return the number of - * copied bytes on success, or a negative value on error. - */ -int cirbuf_add_buf_tail(struct cirbuf *cbuf, const char *c, unsigned int n); - -/** - * Remove chars at the head of the circular buffer. Return 0 on - * success, or a negative value on error. - */ -int cirbuf_del_buf_head(struct cirbuf *cbuf, unsigned int size); - -/** - * Remove chars at the tail of the circular buffer. Return 0 on - * success, or a negative value on error. - */ -int cirbuf_del_buf_tail(struct cirbuf *cbuf, unsigned int size); - -/** - * Copy a maximum of 'size' characters from the head of the circular - * buffer to a flat one pointed by 'c'. Return the number of copied - * chars. - */ -int cirbuf_get_buf_head(struct cirbuf *cbuf, char *c, unsigned int size); - -/** - * Copy a maximum of 'size' characters from the tail of the circular - * buffer to a flat one pointed by 'c'. Return the number of copied - * chars. - */ -int cirbuf_get_buf_tail(struct cirbuf *cbuf, char *c, unsigned int size); - - -/** - * Set the start of the data to the index 0 of the internal buffer. - */ -int cirbuf_align_left(struct cirbuf *cbuf); - -/** - * Set the end of the data to the last index of the internal buffer. - */ -int cirbuf_align_right(struct cirbuf *cbuf); - -#ifdef __cplusplus -} -#endif - -#endif /* _CIRBUF_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse.c deleted file mode 100755 index dfc885cf..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse.c +++ /dev/null @@ -1,564 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <stdarg.h> -#include <errno.h> -#include <string.h> -#include <inttypes.h> -#include <ctype.h> -#include <termios.h> - -#include <netinet/in.h> - -#include <rte_string_fns.h> - -#include "cmdline_rdline.h" -#include "cmdline_parse.h" -#include "cmdline.h" - -#ifdef RTE_LIBRTE_CMDLINE_DEBUG -#define debug_printf printf -#else -#define debug_printf(args...) do {} while(0) -#endif - -#define CMDLINE_BUFFER_SIZE 64 - -/* isblank() needs _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE, so use our - * own. */ -static int -isblank2(char c) -{ - if (c == ' ' || - c == '\t' ) - return 1; - return 0; -} - -static int -isendofline(char c) -{ - if (c == '\n' || - c == '\r' ) - return 1; - return 0; -} - -static int -iscomment(char c) -{ - if (c == '#') - return 1; - return 0; -} - -int -cmdline_isendoftoken(char c) -{ - if (!c || iscomment(c) || isblank2(c) || isendofline(c)) - return 1; - return 0; -} - -static unsigned int -nb_common_chars(const char * s1, const char * s2) -{ - unsigned int i=0; - - while (*s1==*s2 && *s1) { - s1++; - s2++; - i++; - } - return i; -} - -/** - * try to match the buffer with an instruction (only the first - * nb_match_token tokens if != 0). Return 0 if we match all the - * tokens, else the number of matched tokens, else -1. - */ -static int -match_inst(cmdline_parse_inst_t *inst, const char *buf, - unsigned int nb_match_token, void *resbuf, unsigned resbuf_size) -{ - unsigned int token_num=0; - cmdline_parse_token_hdr_t * token_p; - unsigned int i=0; - int n = 0; - struct cmdline_token_hdr token_hdr; - - token_p = inst->tokens[token_num]; - if (token_p) - memcpy(&token_hdr, token_p, sizeof(token_hdr)); - - /* check if we match all tokens of inst */ - while (token_p && (!nb_match_token || i<nb_match_token)) { - debug_printf("TK\n"); - /* skip spaces */ - while (isblank2(*buf)) { - buf++; - } - - /* end of buf */ - if ( isendofline(*buf) || iscomment(*buf) ) - break; - - if (resbuf == NULL) { - n = token_hdr.ops->parse(token_p, buf, NULL, 0); - } else { - unsigned rb_sz; - - if (token_hdr.offset > resbuf_size) { - printf("Parse error(%s:%d): Token offset(%u) " - "exceeds maximum size(%u)\n", - __FILE__, __LINE__, - token_hdr.offset, resbuf_size); - return -ENOBUFS; - } - rb_sz = resbuf_size - token_hdr.offset; - - n = token_hdr.ops->parse(token_p, buf, (char *)resbuf + - token_hdr.offset, rb_sz); - } - - if (n < 0) - break; - - debug_printf("TK parsed (len=%d)\n", n); - i++; - buf += n; - - token_num ++; - token_p = inst->tokens[token_num]; - if (token_p) - memcpy(&token_hdr, token_p, sizeof(token_hdr)); - } - - /* does not match */ - if (i==0) - return -1; - - /* in case we want to match a specific num of token */ - if (nb_match_token) { - if (i == nb_match_token) { - return 0; - } - return i; - } - - /* we don't match all the tokens */ - if (token_p) { - return i; - } - - /* are there are some tokens more */ - while (isblank2(*buf)) { - buf++; - } - - /* end of buf */ - if ( isendofline(*buf) || iscomment(*buf) ) - return 0; - - /* garbage after inst */ - return i; -} - - -int -cmdline_parse(struct cmdline *cl, const char * buf) -{ - unsigned int inst_num=0; - cmdline_parse_inst_t *inst; - const char *curbuf; - char result_buf[CMDLINE_PARSE_RESULT_BUFSIZE]; - void (*f)(void *, struct cmdline *, void *) = NULL; - void *data = NULL; - int comment = 0; - int linelen = 0; - int parse_it = 0; - int err = CMDLINE_PARSE_NOMATCH; - int tok; - cmdline_parse_ctx_t *ctx; -#ifdef RTE_LIBRTE_CMDLINE_DEBUG - char debug_buf[BUFSIZ]; -#endif - - if (!cl || !buf) - return CMDLINE_PARSE_BAD_ARGS; - - ctx = cl->ctx; - - /* - * - look if the buffer contains at least one line - * - look if line contains only spaces or comments - * - count line length - */ - curbuf = buf; - while (! isendofline(*curbuf)) { - if ( *curbuf == '\0' ) { - debug_printf("Incomplete buf (len=%d)\n", linelen); - return 0; - } - if ( iscomment(*curbuf) ) { - comment = 1; - } - if ( ! isblank2(*curbuf) && ! comment) { - parse_it = 1; - } - curbuf++; - linelen++; - } - - /* skip all endofline chars */ - while (isendofline(buf[linelen])) { - linelen++; - } - - /* empty line */ - if ( parse_it == 0 ) { - debug_printf("Empty line (len=%d)\n", linelen); - return linelen; - } - -#ifdef RTE_LIBRTE_CMDLINE_DEBUG - snprintf(debug_buf, (linelen>64 ? 64 : linelen), "%s", buf); - debug_printf("Parse line : len=%d, <%s>\n", linelen, debug_buf); -#endif - - /* parse it !! */ - inst = ctx[inst_num]; - while (inst) { - debug_printf("INST %d\n", inst_num); - - /* fully parsed */ - tok = match_inst(inst, buf, 0, result_buf, sizeof(result_buf)); - - if (tok > 0) /* we matched at least one token */ - err = CMDLINE_PARSE_BAD_ARGS; - - else if (!tok) { - debug_printf("INST fully parsed\n"); - /* skip spaces */ - while (isblank2(*curbuf)) { - curbuf++; - } - - /* if end of buf -> there is no garbage after inst */ - if (isendofline(*curbuf) || iscomment(*curbuf)) { - if (!f) { - memcpy(&f, &inst->f, sizeof(f)); - memcpy(&data, &inst->data, sizeof(data)); - } - else { - /* more than 1 inst matches */ - err = CMDLINE_PARSE_AMBIGUOUS; - f=NULL; - debug_printf("Ambiguous cmd\n"); - break; - } - } - } - - inst_num ++; - inst = ctx[inst_num]; - } - - /* call func */ - if (f) { - f(result_buf, cl, data); - } - - /* no match */ - else { - debug_printf("No match err=%d\n", err); - return err; - } - - return linelen; -} - -int -cmdline_complete(struct cmdline *cl, const char *buf, int *state, - char *dst, unsigned int size) -{ - const char *partial_tok = buf; - unsigned int inst_num = 0; - cmdline_parse_inst_t *inst; - cmdline_parse_token_hdr_t *token_p; - struct cmdline_token_hdr token_hdr; - char tmpbuf[CMDLINE_BUFFER_SIZE], comp_buf[CMDLINE_BUFFER_SIZE]; - unsigned int partial_tok_len; - int comp_len = -1; - int tmp_len = -1; - int nb_token = 0; - unsigned int i, n; - int l; - unsigned int nb_completable; - unsigned int nb_non_completable; - int local_state = 0; - const char *help_str; - cmdline_parse_ctx_t *ctx; - - if (!cl || !buf || !state || !dst) - return -1; - - ctx = cl->ctx; - - debug_printf("%s called\n", __func__); - memset(&token_hdr, 0, sizeof(token_hdr)); - - /* count the number of complete token to parse */ - for (i=0 ; buf[i] ; i++) { - if (!isblank2(buf[i]) && isblank2(buf[i+1])) - nb_token++; - if (isblank2(buf[i]) && !isblank2(buf[i+1])) - partial_tok = buf+i+1; - } - partial_tok_len = strnlen(partial_tok, RDLINE_BUF_SIZE); - - /* first call -> do a first pass */ - if (*state <= 0) { - debug_printf("try complete <%s>\n", buf); - debug_printf("there is %d complete tokens, <%s> is incomplete\n", - nb_token, partial_tok); - - nb_completable = 0; - nb_non_completable = 0; - - inst = ctx[inst_num]; - while (inst) { - /* parse the first tokens of the inst */ - if (nb_token && match_inst(inst, buf, nb_token, NULL, 0)) - goto next; - - debug_printf("instruction match\n"); - token_p = inst->tokens[nb_token]; - if (token_p) - memcpy(&token_hdr, token_p, sizeof(token_hdr)); - - /* non completable */ - if (!token_p || - !token_hdr.ops->complete_get_nb || - !token_hdr.ops->complete_get_elt || - (n = token_hdr.ops->complete_get_nb(token_p)) == 0) { - nb_non_completable++; - goto next; - } - - debug_printf("%d choices for this token\n", n); - for (i=0 ; i<n ; i++) { - if (token_hdr.ops->complete_get_elt(token_p, i, - tmpbuf, - sizeof(tmpbuf)) < 0) - continue; - - /* we have at least room for one char */ - tmp_len = strnlen(tmpbuf, sizeof(tmpbuf)); - if (tmp_len < CMDLINE_BUFFER_SIZE - 1) { - tmpbuf[tmp_len] = ' '; - tmpbuf[tmp_len+1] = 0; - } - - debug_printf(" choice <%s>\n", tmpbuf); - - /* does the completion match the - * beginning of the word ? */ - if (!strncmp(partial_tok, tmpbuf, - partial_tok_len)) { - if (comp_len == -1) { - snprintf(comp_buf, sizeof(comp_buf), - "%s", tmpbuf + partial_tok_len); - comp_len = - strnlen(tmpbuf + partial_tok_len, - sizeof(tmpbuf) - partial_tok_len); - - } - else { - comp_len = - nb_common_chars(comp_buf, - tmpbuf+partial_tok_len); - comp_buf[comp_len] = 0; - } - nb_completable++; - } - } - next: - debug_printf("next\n"); - inst_num ++; - inst = ctx[inst_num]; - } - - debug_printf("total choices %d for this completion\n", - nb_completable); - - /* no possible completion */ - if (nb_completable == 0 && nb_non_completable == 0) - return 0; - - /* if multichoice is not required */ - if (*state == 0 && partial_tok_len > 0) { - /* one or several choices starting with the - same chars */ - if (comp_len > 0) { - if ((unsigned)(comp_len + 1) > size) - return 0; - - snprintf(dst, size, "%s", comp_buf); - dst[comp_len] = 0; - return 2; - } - } - } - - /* init state correctly */ - if (*state == -1) - *state = 0; - - debug_printf("Multiple choice STATE=%d\n", *state); - - inst_num = 0; - inst = ctx[inst_num]; - while (inst) { - /* we need to redo it */ - inst = ctx[inst_num]; - - if (nb_token && match_inst(inst, buf, nb_token, NULL, 0)) - goto next2; - - token_p = inst->tokens[nb_token]; - if (token_p) - memcpy(&token_hdr, token_p, sizeof(token_hdr)); - - /* one choice for this token */ - if (!token_p || - !token_hdr.ops->complete_get_nb || - !token_hdr.ops->complete_get_elt || - (n = token_hdr.ops->complete_get_nb(token_p)) == 0) { - if (local_state < *state) { - local_state++; - goto next2; - } - (*state)++; - if (token_p && token_hdr.ops->get_help) { - token_hdr.ops->get_help(token_p, tmpbuf, - sizeof(tmpbuf)); - help_str = inst->help_str; - if (help_str) - snprintf(dst, size, "[%s]: %s", tmpbuf, - help_str); - else - snprintf(dst, size, "[%s]: No help", - tmpbuf); - } - else { - snprintf(dst, size, "[RETURN]"); - } - return 1; - } - - /* several choices */ - for (i=0 ; i<n ; i++) { - if (token_hdr.ops->complete_get_elt(token_p, i, tmpbuf, - sizeof(tmpbuf)) < 0) - continue; - /* we have at least room for one char */ - tmp_len = strnlen(tmpbuf, sizeof(tmpbuf)); - if (tmp_len < CMDLINE_BUFFER_SIZE - 1) { - tmpbuf[tmp_len] = ' '; - tmpbuf[tmp_len + 1] = 0; - } - - debug_printf(" choice <%s>\n", tmpbuf); - - /* does the completion match the beginning of - * the word ? */ - if (!strncmp(partial_tok, tmpbuf, - partial_tok_len)) { - if (local_state < *state) { - local_state++; - continue; - } - (*state)++; - l=snprintf(dst, size, "%s", tmpbuf); - if (l>=0 && token_hdr.ops->get_help) { - token_hdr.ops->get_help(token_p, tmpbuf, - sizeof(tmpbuf)); - help_str = inst->help_str; - if (help_str) - snprintf(dst+l, size-l, "[%s]: %s", - tmpbuf, help_str); - else - snprintf(dst+l, size-l, - "[%s]: No help", tmpbuf); - } - - return 1; - } - } - next2: - inst_num ++; - inst = ctx[inst_num]; - } - return 0; -} - diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse.h deleted file mode 100755 index 4b25c456..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse.h +++ /dev/null @@ -1,191 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _CMDLINE_PARSE_H_ -#define _CMDLINE_PARSE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef offsetof -#define offsetof(type, field) ((size_t) &( ((type *)0)->field) ) -#endif - -/* return status for parsing */ -#define CMDLINE_PARSE_SUCCESS 0 -#define CMDLINE_PARSE_AMBIGUOUS -1 -#define CMDLINE_PARSE_NOMATCH -2 -#define CMDLINE_PARSE_BAD_ARGS -3 - -/* return status for completion */ -#define CMDLINE_PARSE_COMPLETE_FINISHED 0 -#define CMDLINE_PARSE_COMPLETE_AGAIN 1 -#define CMDLINE_PARSE_COMPLETED_BUFFER 2 - -/* maximum buffer size for parsed result */ -#define CMDLINE_PARSE_RESULT_BUFSIZE 8192 - -/** - * Stores a pointer to the ops struct, and the offset: the place to - * write the parsed result in the destination structure. - */ -struct cmdline_token_hdr { - struct cmdline_token_ops *ops; - unsigned int offset; -}; -typedef struct cmdline_token_hdr cmdline_parse_token_hdr_t; - -/** - * A token is defined by this structure. - * - * parse() takes the token as first argument, then the source buffer - * starting at the token we want to parse. The 3rd arg is a pointer - * where we store the parsed data (as binary). It returns the number of - * parsed chars on success and a negative value on error. - * - * complete_get_nb() returns the number of possible values for this - * token if completion is possible. If it is NULL or if it returns 0, - * no completion is possible. - * - * complete_get_elt() copy in dstbuf (the size is specified in the - * parameter) the i-th possible completion for this token. returns 0 - * on success or and a negative value on error. - * - * get_help() fills the dstbuf with the help for the token. It returns - * -1 on error and 0 on success. - */ -struct cmdline_token_ops { - /** parse(token ptr, buf, res pts, buf len) */ - int (*parse)(cmdline_parse_token_hdr_t *, const char *, void *, - unsigned int); - /** return the num of possible choices for this token */ - int (*complete_get_nb)(cmdline_parse_token_hdr_t *); - /** return the elt x for this token (token, idx, dstbuf, size) */ - int (*complete_get_elt)(cmdline_parse_token_hdr_t *, int, char *, - unsigned int); - /** get help for this token (token, dstbuf, size) */ - int (*get_help)(cmdline_parse_token_hdr_t *, char *, unsigned int); -}; - -struct cmdline; -/** - * Store a instruction, which is a pointer to a callback function and - * its parameter that is called when the instruction is parsed, a help - * string, and a list of token composing this instruction. - */ -struct cmdline_inst { - /* f(parsed_struct, data) */ - void (*f)(void *, struct cmdline *, void *); - void *data; - const char *help_str; - cmdline_parse_token_hdr_t *tokens[]; -}; -typedef struct cmdline_inst cmdline_parse_inst_t; - -/** - * A context is identified by its name, and contains a list of - * instruction - * - */ -typedef cmdline_parse_inst_t *cmdline_parse_ctx_t; - -/** - * Try to parse a buffer according to the specified context. The - * argument buf must ends with "\n\0". The function returns - * CMDLINE_PARSE_AMBIGUOUS, CMDLINE_PARSE_NOMATCH or - * CMDLINE_PARSE_BAD_ARGS on error. Else it calls the associated - * function (defined in the context) and returns 0 - * (CMDLINE_PARSE_SUCCESS). - */ -int cmdline_parse(struct cmdline *cl, const char *buf); - -/** - * complete() must be called with *state==0 (try to complete) or - * with *state==-1 (just display choices), then called without - * modifying *state until it returns CMDLINE_PARSE_COMPLETED_BUFFER or - * CMDLINE_PARSE_COMPLETED_BUFFER. - * - * It returns < 0 on error. - * - * Else it returns: - * - CMDLINE_PARSE_COMPLETED_BUFFER on completion (one possible - * choice). In this case, the chars are appended in dst buffer. - * - CMDLINE_PARSE_COMPLETE_AGAIN if there is several possible - * choices. In this case, you must call the function again, - * keeping the value of state intact. - * - CMDLINE_PARSE_COMPLETED_BUFFER when the iteration is - * finished. The dst is not valid for this last call. - * - * The returned dst buf ends with \0. - */ -int cmdline_complete(struct cmdline *cl, const char *buf, int *state, - char *dst, unsigned int size); - - -/* return true if(!c || iscomment(c) || isblank(c) || - * isendofline(c)) */ -int cmdline_isendoftoken(char c); - -#ifdef __cplusplus -} -#endif - -#endif /* _CMDLINE_PARSE_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.c deleted file mode 100755 index 64ae86c7..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.c +++ /dev/null @@ -1,180 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <errno.h> -#include <inttypes.h> -#include <ctype.h> -#include <string.h> -#include <errno.h> -#include <sys/types.h> -#include <net/ethernet.h> - -#include <rte_string_fns.h> - -#include "cmdline_parse.h" -#include "cmdline_parse_etheraddr.h" - -struct cmdline_token_ops cmdline_token_etheraddr_ops = { - .parse = cmdline_parse_etheraddr, - .complete_get_nb = NULL, - .complete_get_elt = NULL, - .get_help = cmdline_get_help_etheraddr, -}; - -/* the format can be either XX:XX:XX:XX:XX:XX or XXXX:XXXX:XXXX */ -#define ETHER_ADDRSTRLENLONG 18 -#define ETHER_ADDRSTRLENSHORT 15 - -#ifdef __linux__ -#define ea_oct ether_addr_octet -#else -#define ea_oct octet -#endif - - -static struct ether_addr * -my_ether_aton(const char *a) -{ - int i; - char *end; - unsigned long o[ETHER_ADDR_LEN]; - static struct ether_addr ether_addr; - - i = 0; - do { - errno = 0; - o[i] = strtoul(a, &end, 16); - if (errno != 0 || end == a || (end[0] != ':' && end[0] != 0)) - return (NULL); - a = end + 1; - } while (++i != sizeof (o) / sizeof (o[0]) && end[0] != 0); - - /* Junk at the end of line */ - if (end[0] != 0) - return (NULL); - - /* Support the format XX:XX:XX:XX:XX:XX */ - if (i == ETHER_ADDR_LEN) { - while (i-- != 0) { - if (o[i] > UINT8_MAX) - return (NULL); - ether_addr.ea_oct[i] = (uint8_t)o[i]; - } - /* Support the format XXXX:XXXX:XXXX */ - } else if (i == ETHER_ADDR_LEN / 2) { - while (i-- != 0) { - if (o[i] > UINT16_MAX) - return (NULL); - ether_addr.ea_oct[i * 2] = (uint8_t)(o[i] >> 8); - ether_addr.ea_oct[i * 2 + 1] = (uint8_t)(o[i] & 0xff); - } - /* unknown format */ - } else - return (NULL); - - return (struct ether_addr *)ðer_addr; -} - -int -cmdline_parse_etheraddr(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, - const char *buf, void *res, unsigned ressize) -{ - unsigned int token_len = 0; - char ether_str[ETHER_ADDRSTRLENLONG+1]; - struct ether_addr *tmp; - - if (res && ressize < sizeof(struct ether_addr)) - return -1; - - if (!buf || ! *buf) - return -1; - - while (!cmdline_isendoftoken(buf[token_len])) - token_len++; - - /* if token doesn't match possible string lengths... */ - if ((token_len != ETHER_ADDRSTRLENLONG - 1) && - (token_len != ETHER_ADDRSTRLENSHORT - 1)) - return -1; - - snprintf(ether_str, token_len+1, "%s", buf); - - tmp = my_ether_aton(ether_str); - if (tmp == NULL) - return -1; - if (res) - memcpy(res, tmp, sizeof(struct ether_addr)); - return token_len; -} - -int -cmdline_get_help_etheraddr(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, - char *dstbuf, unsigned int size) -{ - int ret; - - ret = snprintf(dstbuf, size, "Ethernet address"); - if (ret < 0) - return -1; - return 0; -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.h deleted file mode 100755 index 0085bb3b..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_etheraddr.h +++ /dev/null @@ -1,94 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _PARSE_ETHERADDR_H_ -#define _PARSE_ETHERADDR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -struct cmdline_token_etheraddr { - struct cmdline_token_hdr hdr; -}; -typedef struct cmdline_token_etheraddr cmdline_parse_token_etheraddr_t; - -extern struct cmdline_token_ops cmdline_token_etheraddr_ops; - -int cmdline_parse_etheraddr(cmdline_parse_token_hdr_t *tk, const char *srcbuf, - void *res, unsigned ressize); -int cmdline_get_help_etheraddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size); - -#define TOKEN_ETHERADDR_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_etheraddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ -} - -#ifdef __cplusplus -} -#endif - - -#endif /* _PARSE_ETHERADDR_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.c deleted file mode 100755 index 7f335994..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.c +++ /dev/null @@ -1,408 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * For inet_ntop() functions: - * - * Copyright (c) 1996 by Internet Software Consortium. - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS - * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE - * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - */ - - -#include <stdio.h> -#include <stdlib.h> -#include <stdarg.h> -#include <inttypes.h> -#include <ctype.h> -#include <string.h> -#include <errno.h> -#include <netinet/in.h> -#ifndef __linux__ -#ifndef __FreeBSD__ -#include <net/socket.h> -#else -#include <sys/socket.h> -#endif -#endif - -#include <rte_string_fns.h> - -#include "cmdline_parse.h" -#include "cmdline_parse_ipaddr.h" - -struct cmdline_token_ops cmdline_token_ipaddr_ops = { - .parse = cmdline_parse_ipaddr, - .complete_get_nb = NULL, - .complete_get_elt = NULL, - .get_help = cmdline_get_help_ipaddr, -}; - -#define INADDRSZ 4 -#define IN6ADDRSZ 16 -#define PREFIXMAX 128 -#define V4PREFIXMAX 32 - -/* - * WARNING: Don't even consider trying to compile this on a system where - * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX. - */ - -static int inet_pton4(const char *src, unsigned char *dst); -static int inet_pton6(const char *src, unsigned char *dst); - -/* int - * inet_pton(af, src, dst) - * convert from presentation format (which usually means ASCII printable) - * to network format (which is usually some kind of binary format). - * return: - * 1 if the address was valid for the specified address family - * 0 if the address wasn't valid (`dst' is untouched in this case) - * -1 if some other error occurred (`dst' is untouched in this case, too) - * author: - * Paul Vixie, 1996. - */ -static int -my_inet_pton(int af, const char *src, void *dst) -{ - switch (af) { - case AF_INET: - return (inet_pton4(src, dst)); - case AF_INET6: - return (inet_pton6(src, dst)); - default: - errno = EAFNOSUPPORT; - return (-1); - } - /* NOTREACHED */ -} - -/* int - * inet_pton4(src, dst) - * like inet_aton() but without all the hexadecimal and shorthand. - * return: - * 1 if `src' is a valid dotted quad, else 0. - * notice: - * does not touch `dst' unless it's returning 1. - * author: - * Paul Vixie, 1996. - */ -static int -inet_pton4(const char *src, unsigned char *dst) -{ - static const char digits[] = "0123456789"; - int saw_digit, octets, ch; - unsigned char tmp[INADDRSZ], *tp; - - saw_digit = 0; - octets = 0; - *(tp = tmp) = 0; - while ((ch = *src++) != '\0') { - const char *pch; - - if ((pch = strchr(digits, ch)) != NULL) { - unsigned int new = *tp * 10 + (pch - digits); - - if (new > 255) - return (0); - if (! saw_digit) { - if (++octets > 4) - return (0); - saw_digit = 1; - } - *tp = (unsigned char)new; - } else if (ch == '.' && saw_digit) { - if (octets == 4) - return (0); - *++tp = 0; - saw_digit = 0; - } else - return (0); - } - if (octets < 4) - return (0); - - memcpy(dst, tmp, INADDRSZ); - return (1); -} - -/* int - * inet_pton6(src, dst) - * convert presentation level address to network order binary form. - * return: - * 1 if `src' is a valid [RFC1884 2.2] address, else 0. - * notice: - * (1) does not touch `dst' unless it's returning 1. - * (2) :: in a full address is silently ignored. - * credit: - * inspired by Mark Andrews. - * author: - * Paul Vixie, 1996. - */ -static int -inet_pton6(const char *src, unsigned char *dst) -{ - static const char xdigits_l[] = "0123456789abcdef", - xdigits_u[] = "0123456789ABCDEF"; - unsigned char tmp[IN6ADDRSZ], *tp = 0, *endp = 0, *colonp = 0; - const char *xdigits = 0, *curtok = 0; - int ch = 0, saw_xdigit = 0, count_xdigit = 0; - unsigned int val = 0; - unsigned dbloct_count = 0; - - memset((tp = tmp), '\0', IN6ADDRSZ); - endp = tp + IN6ADDRSZ; - colonp = NULL; - /* Leading :: requires some special handling. */ - if (*src == ':') - if (*++src != ':') - return (0); - curtok = src; - saw_xdigit = count_xdigit = 0; - val = 0; - - while ((ch = *src++) != '\0') { - const char *pch; - - if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) - pch = strchr((xdigits = xdigits_u), ch); - if (pch != NULL) { - if (count_xdigit >= 4) - return (0); - val <<= 4; - val |= (pch - xdigits); - if (val > 0xffff) - return (0); - saw_xdigit = 1; - count_xdigit++; - continue; - } - if (ch == ':') { - curtok = src; - if (!saw_xdigit) { - if (colonp) - return (0); - colonp = tp; - continue; - } else if (*src == '\0') { - return (0); - } - if (tp + sizeof(int16_t) > endp) - return (0); - *tp++ = (unsigned char) ((val >> 8) & 0xff); - *tp++ = (unsigned char) (val & 0xff); - saw_xdigit = 0; - count_xdigit = 0; - val = 0; - dbloct_count++; - continue; - } - if (ch == '.' && ((tp + INADDRSZ) <= endp) && - inet_pton4(curtok, tp) > 0) { - tp += INADDRSZ; - saw_xdigit = 0; - dbloct_count += 2; - break; /* '\0' was seen by inet_pton4(). */ - } - return (0); - } - if (saw_xdigit) { - if (tp + sizeof(int16_t) > endp) - return (0); - *tp++ = (unsigned char) ((val >> 8) & 0xff); - *tp++ = (unsigned char) (val & 0xff); - dbloct_count++; - } - if (colonp != NULL) { - /* if we already have 8 double octets, having a colon means error */ - if (dbloct_count == 8) - return 0; - - /* - * Since some memmove()'s erroneously fail to handle - * overlapping regions, we'll do the shift by hand. - */ - const int n = tp - colonp; - int i; - - for (i = 1; i <= n; i++) { - endp[- i] = colonp[n - i]; - colonp[n - i] = 0; - } - tp = endp; - } - if (tp != endp) - return (0); - memcpy(dst, tmp, IN6ADDRSZ); - return (1); -} - -int -cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *buf, void *res, - unsigned ressize) -{ - struct cmdline_token_ipaddr *tk2; - unsigned int token_len = 0; - char ip_str[INET6_ADDRSTRLEN+4+1]; /* '+4' is for prefixlen (if any) */ - cmdline_ipaddr_t ipaddr; - char *prefix, *prefix_end; - long prefixlen = 0; - - if (res && ressize < sizeof(cmdline_ipaddr_t)) - return -1; - - if (!buf || !tk || ! *buf) - return -1; - - tk2 = (struct cmdline_token_ipaddr *)tk; - - while (!cmdline_isendoftoken(buf[token_len])) - token_len++; - - /* if token is too big... */ - if (token_len >= INET6_ADDRSTRLEN+4) - return -1; - - snprintf(ip_str, token_len+1, "%s", buf); - - /* convert the network prefix */ - if (tk2->ipaddr_data.flags & CMDLINE_IPADDR_NETWORK) { - prefix = strrchr(ip_str, '/'); - if (prefix == NULL) - return -1; - *prefix = '\0'; - prefix ++; - errno = 0; - prefixlen = strtol(prefix, &prefix_end, 10); - if (errno || (*prefix_end != '\0') - || prefixlen < 0 || prefixlen > PREFIXMAX) - return -1; - ipaddr.prefixlen = prefixlen; - } - else { - ipaddr.prefixlen = 0; - } - - /* convert the IP addr */ - if ((tk2->ipaddr_data.flags & CMDLINE_IPADDR_V4) && - my_inet_pton(AF_INET, ip_str, &ipaddr.addr.ipv4) == 1 && - prefixlen <= V4PREFIXMAX) { - ipaddr.family = AF_INET; - if (res) - memcpy(res, &ipaddr, sizeof(ipaddr)); - return token_len; - } - if ((tk2->ipaddr_data.flags & CMDLINE_IPADDR_V6) && - my_inet_pton(AF_INET6, ip_str, &ipaddr.addr.ipv6) == 1) { - ipaddr.family = AF_INET6; - if (res) - memcpy(res, &ipaddr, sizeof(ipaddr)); - return token_len; - } - return -1; - -} - -int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size) -{ - struct cmdline_token_ipaddr *tk2; - - if (!tk || !dstbuf) - return -1; - - tk2 = (struct cmdline_token_ipaddr *)tk; - - switch (tk2->ipaddr_data.flags) { - case CMDLINE_IPADDR_V4: - snprintf(dstbuf, size, "IPv4"); - break; - case CMDLINE_IPADDR_V6: - snprintf(dstbuf, size, "IPv6"); - break; - case CMDLINE_IPADDR_V4|CMDLINE_IPADDR_V6: - snprintf(dstbuf, size, "IPv4/IPv6"); - break; - case CMDLINE_IPADDR_NETWORK|CMDLINE_IPADDR_V4: - snprintf(dstbuf, size, "IPv4 network"); - break; - case CMDLINE_IPADDR_NETWORK|CMDLINE_IPADDR_V6: - snprintf(dstbuf, size, "IPv6 network"); - break; - case CMDLINE_IPADDR_NETWORK|CMDLINE_IPADDR_V4|CMDLINE_IPADDR_V6: - snprintf(dstbuf, size, "IPv4/IPv6 network"); - break; - default: - snprintf(dstbuf, size, "IPaddr (bad flags)"); - break; - } - return 0; -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.h deleted file mode 100755 index 296c374a..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_ipaddr.h +++ /dev/null @@ -1,186 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _PARSE_IPADDR_H_ -#define _PARSE_IPADDR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define CMDLINE_IPADDR_V4 0x01 -#define CMDLINE_IPADDR_V6 0x02 -#define CMDLINE_IPADDR_NETWORK 0x04 - -struct cmdline_ipaddr { - uint8_t family; - union { - struct in_addr ipv4; - struct in6_addr ipv6; - } addr; - unsigned int prefixlen; /* in case of network only */ -}; -typedef struct cmdline_ipaddr cmdline_ipaddr_t; - -struct cmdline_token_ipaddr_data { - uint8_t flags; -}; - -struct cmdline_token_ipaddr { - struct cmdline_token_hdr hdr; - struct cmdline_token_ipaddr_data ipaddr_data; -}; -typedef struct cmdline_token_ipaddr cmdline_parse_token_ipaddr_t; - -extern struct cmdline_token_ops cmdline_token_ipaddr_ops; - -int cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *srcbuf, - void *res, unsigned ressize); -int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size); - -#define TOKEN_IPADDR_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V4 | /* flags */ \ - CMDLINE_IPADDR_V6, \ - }, \ -} - -#define TOKEN_IPV4_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V4, /* flags */ \ - }, \ -} - -#define TOKEN_IPV6_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V6, /* flags */ \ - }, \ -} - -#define TOKEN_IPNET_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V4 | /* flags */ \ - CMDLINE_IPADDR_V6 | \ - CMDLINE_IPADDR_NETWORK, \ - }, \ -} - -#define TOKEN_IPV4NET_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V4 | /* flags */ \ - CMDLINE_IPADDR_NETWORK, \ - }, \ -} - -#define TOKEN_IPV6NET_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_ipaddr_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* ipaddr_data */ \ - { \ - CMDLINE_IPADDR_V4 | /* flags */ \ - CMDLINE_IPADDR_NETWORK, \ - }, \ -} - -#ifdef __cplusplus -} -#endif - -#endif /* _PARSE_IPADDR_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.c deleted file mode 100755 index d8cf37f0..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.c +++ /dev/null @@ -1,402 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <stdint.h> -#include <inttypes.h> -#include <ctype.h> -#include <string.h> -#include <stdarg.h> -#include <errno.h> -#include <rte_string_fns.h> - -#include "cmdline_parse.h" -#include "cmdline_parse_num.h" - -#ifdef RTE_LIBRTE_CMDLINE_DEBUG -#define debug_printf(args...) printf(args) -#else -#define debug_printf(args...) do {} while(0) -#endif - -struct cmdline_token_ops cmdline_token_num_ops = { - .parse = cmdline_parse_num, - .complete_get_nb = NULL, - .complete_get_elt = NULL, - .get_help = cmdline_get_help_num, -}; - - -enum num_parse_state_t { - START, - DEC_NEG, - BIN, - HEX, - - ERROR, - - FIRST_OK, /* not used */ - ZERO_OK, - HEX_OK, - OCTAL_OK, - BIN_OK, - DEC_NEG_OK, - DEC_POS_OK, -}; - -/* Keep it sync with enum in .h */ -static const char * num_help[] = { - "UINT8", "UINT16", "UINT32", "UINT64", - "INT8", "INT16", "INT32", "INT64", -}; - -static inline int -add_to_res(unsigned int c, uint64_t *res, unsigned int base) -{ - /* overflow */ - if ( (UINT64_MAX - c) / base < *res ) { - return -1; - } - - *res = (uint64_t) (*res * base + c); - return 0; -} - -static int -check_res_size(struct cmdline_token_num_data *nd, unsigned ressize) -{ - switch (nd->type) { - case INT8: - case UINT8: - if (ressize < sizeof(int8_t)) - return -1; - break; - case INT16: - case UINT16: - if (ressize < sizeof(int16_t)) - return -1; - break; - case INT32: - case UINT32: - if (ressize < sizeof(int32_t)) - return -1; - break; - case INT64: - case UINT64: - if (ressize < sizeof(int64_t)) - return -1; - break; - default: - return -1; - } - return 0; -} - -/* parse an int */ -int -cmdline_parse_num(cmdline_parse_token_hdr_t *tk, const char *srcbuf, void *res, - unsigned ressize) -{ - struct cmdline_token_num_data nd; - enum num_parse_state_t st = START; - const char * buf; - char c; - uint64_t res1 = 0; - - if (!tk) - return -1; - - if (!srcbuf || !*srcbuf) - return -1; - - buf = srcbuf; - c = *buf; - - memcpy(&nd, &((struct cmdline_token_num *)tk)->num_data, sizeof(nd)); - - /* check that we have enough room in res */ - if (res) { - if (check_res_size(&nd, ressize) < 0) - return -1; - } - - while ( st != ERROR && c && ! cmdline_isendoftoken(c) ) { - debug_printf("%c %x -> ", c, c); - switch (st) { - case START: - if (c == '-') { - st = DEC_NEG; - } - else if (c == '0') { - st = ZERO_OK; - } - else if (c >= '1' && c <= '9') { - if (add_to_res(c - '0', &res1, 10) < 0) - st = ERROR; - else - st = DEC_POS_OK; - } - else { - st = ERROR; - } - break; - - case ZERO_OK: - if (c == 'x') { - st = HEX; - } - else if (c == 'b') { - st = BIN; - } - else if (c >= '0' && c <= '7') { - if (add_to_res(c - '0', &res1, 10) < 0) - st = ERROR; - else - st = OCTAL_OK; - } - else { - st = ERROR; - } - break; - - case DEC_NEG: - if (c >= '0' && c <= '9') { - if (add_to_res(c - '0', &res1, 10) < 0) - st = ERROR; - else - st = DEC_NEG_OK; - } - else { - st = ERROR; - } - break; - - case DEC_NEG_OK: - if (c >= '0' && c <= '9') { - if (add_to_res(c - '0', &res1, 10) < 0) - st = ERROR; - } - else { - st = ERROR; - } - break; - - case DEC_POS_OK: - if (c >= '0' && c <= '9') { - if (add_to_res(c - '0', &res1, 10) < 0) - st = ERROR; - } - else { - st = ERROR; - } - break; - - case HEX: - st = HEX_OK; - /* no break */ - case HEX_OK: - if (c >= '0' && c <= '9') { - if (add_to_res(c - '0', &res1, 16) < 0) - st = ERROR; - } - else if (c >= 'a' && c <= 'f') { - if (add_to_res(c - 'a' + 10, &res1, 16) < 0) - st = ERROR; - } - else if (c >= 'A' && c <= 'F') { - if (add_to_res(c - 'A' + 10, &res1, 16) < 0) - st = ERROR; - } - else { - st = ERROR; - } - break; - - - case OCTAL_OK: - if (c >= '0' && c <= '7') { - if (add_to_res(c - '0', &res1, 8) < 0) - st = ERROR; - } - else { - st = ERROR; - } - break; - - case BIN: - st = BIN_OK; - /* no break */ - case BIN_OK: - if (c >= '0' && c <= '1') { - if (add_to_res(c - '0', &res1, 2) < 0) - st = ERROR; - } - else { - st = ERROR; - } - break; - default: - debug_printf("not impl "); - - } - - debug_printf("(%"PRIu64")\n", res1); - - buf ++; - c = *buf; - - /* token too long */ - if (buf-srcbuf > 127) - return -1; - } - - switch (st) { - case ZERO_OK: - case DEC_POS_OK: - case HEX_OK: - case OCTAL_OK: - case BIN_OK: - if ( nd.type == INT8 && res1 <= INT8_MAX ) { - if (res) *(int8_t *)res = (int8_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == INT16 && res1 <= INT16_MAX ) { - if (res) *(int16_t *)res = (int16_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == INT32 && res1 <= INT32_MAX ) { - if (res) *(int32_t *)res = (int32_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == INT64 && res1 <= INT64_MAX ) { - if (res) *(int64_t *)res = (int64_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == UINT8 && res1 <= UINT8_MAX ) { - if (res) *(uint8_t *)res = (uint8_t) res1; - return (buf-srcbuf); - } - else if (nd.type == UINT16 && res1 <= UINT16_MAX ) { - if (res) *(uint16_t *)res = (uint16_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == UINT32 && res1 <= UINT32_MAX ) { - if (res) *(uint32_t *)res = (uint32_t) res1; - return (buf-srcbuf); - } - else if ( nd.type == UINT64 ) { - if (res) *(uint64_t *)res = res1; - return (buf-srcbuf); - } - else { - return -1; - } - break; - - case DEC_NEG_OK: - if ( nd.type == INT8 && res1 <= INT8_MAX + 1 ) { - if (res) *(int8_t *)res = (int8_t) (-res1); - return (buf-srcbuf); - } - else if ( nd.type == INT16 && res1 <= (uint16_t)INT16_MAX + 1 ) { - if (res) *(int16_t *)res = (int16_t) (-res1); - return (buf-srcbuf); - } - else if ( nd.type == INT32 && res1 <= (uint32_t)INT32_MAX + 1 ) { - if (res) *(int32_t *)res = (int32_t) (-res1); - return (buf-srcbuf); - } - else if ( nd.type == INT64 && res1 <= (uint64_t)INT64_MAX + 1 ) { - if (res) *(int64_t *)res = (int64_t) (-res1); - return (buf-srcbuf); - } - else { - return -1; - } - break; - default: - debug_printf("error\n"); - return -1; - } -} - - -/* parse an int */ -int -cmdline_get_help_num(cmdline_parse_token_hdr_t *tk, char *dstbuf, unsigned int size) -{ - struct cmdline_token_num_data nd; - int ret; - - if (!tk) - return -1; - - memcpy(&nd, &((struct cmdline_token_num *)tk)->num_data, sizeof(nd)); - - /* should not happen.... don't so this test */ - /* if (nd.type >= (sizeof(num_help)/sizeof(const char *))) */ - /* return -1; */ - - ret = snprintf(dstbuf, size, "%s", num_help[nd.type]); - if (ret < 0) - return -1; - dstbuf[size-1] = '\0'; - return 0; -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.h deleted file mode 100755 index 5376806f..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_num.h +++ /dev/null @@ -1,113 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _PARSE_NUM_H_ -#define _PARSE_NUM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -enum cmdline_numtype { - UINT8 = 0, - UINT16, - UINT32, - UINT64, - INT8, - INT16, - INT32, - INT64 -}; - -struct cmdline_token_num_data { - enum cmdline_numtype type; -}; - -struct cmdline_token_num { - struct cmdline_token_hdr hdr; - struct cmdline_token_num_data num_data; -}; -typedef struct cmdline_token_num cmdline_parse_token_num_t; - -extern struct cmdline_token_ops cmdline_token_num_ops; - -int cmdline_parse_num(cmdline_parse_token_hdr_t *tk, - const char *srcbuf, void *res, unsigned ressize); -int cmdline_get_help_num(cmdline_parse_token_hdr_t *tk, - char *dstbuf, unsigned int size); - -#define TOKEN_NUM_INITIALIZER(structure, field, numtype) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_num_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* num_data */ \ - { \ - numtype, /* type */ \ - }, \ -} - -#ifdef __cplusplus -} -#endif - -#endif /* _PARSE_NUM_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.c deleted file mode 100755 index 834f2e6e..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.c +++ /dev/null @@ -1,173 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2010, Keith Wiles <keith.wiles@windriver.com> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <stdlib.h> -#include <inttypes.h> -#include <ctype.h> -#include <string.h> -#include <errno.h> -#include <stdarg.h> - -#include <rte_string_fns.h> -#include "cmdline_parse.h" -#include "cmdline_parse_portlist.h" - -struct cmdline_token_ops cmdline_token_portlist_ops = { - .parse = cmdline_parse_portlist, - .complete_get_nb = NULL, - .complete_get_elt = NULL, - .get_help = cmdline_get_help_portlist, -}; - -static void -parse_set_list(cmdline_portlist_t * pl, int low, int high) -{ - do { - pl->map |= (1 << low++); - } while (low <= high); -} - -static int -parse_ports(cmdline_portlist_t * pl, const char * str) -{ - size_t ps, pe; - const char *first, *last; - char *end; - - for (first = str, last = first; - first != NULL && last != NULL; - first = last + 1) { - - last = strchr(first, ','); - - errno = 0; - ps = strtoul(first, &end, 10); - if (errno != 0 || end == first || - (end[0] != '-' && end[0] != 0 && end != last)) - return (-1); - - /* Support for N-M portlist format */ - if (end[0] == '-') { - errno = 0; - first = end + 1; - pe = strtoul(first, &end, 10); - if (errno != 0 || end == first || - (end[0] != 0 && end != last)) - return (-1); - } else { - pe = ps; - } - - if (ps > pe || pe >= sizeof (pl->map) * 8) - return (-1); - - parse_set_list(pl, ps, pe); - } - - return (0); -} - -int -cmdline_parse_portlist(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, - const char *buf, void *res, unsigned ressize) -{ - unsigned int token_len = 0; - char portlist_str[PORTLIST_TOKEN_SIZE+1]; - cmdline_portlist_t *pl; - - if (!buf || ! *buf) - return (-1); - - if (res && ressize < PORTLIST_TOKEN_SIZE) - return -1; - - pl = res; - - while (!cmdline_isendoftoken(buf[token_len]) && - (token_len < PORTLIST_TOKEN_SIZE)) - token_len++; - - if (token_len >= PORTLIST_TOKEN_SIZE) - return (-1); - - snprintf(portlist_str, token_len+1, "%s", buf); - - if (pl) { - pl->map = 0; - if (strcmp("all", portlist_str) == 0) - pl->map = UINT32_MAX; - else if (parse_ports(pl, portlist_str) != 0) - return (-1); - } - - return token_len; -} - -int -cmdline_get_help_portlist(__attribute__((unused)) cmdline_parse_token_hdr_t *tk, - char *dstbuf, unsigned int size) -{ - int ret; - ret = snprintf(dstbuf, size, "range of ports as 3,4-6,8-19,20"); - if (ret < 0) - return -1; - return 0; -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.h deleted file mode 100755 index 85050595..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_portlist.h +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2010, Keith Wiles <keith.wiles@windriver.com> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _PARSE_PORTLIST_H_ -#define _PARSE_PORTLIST_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* size of a parsed string */ -#define PORTLIST_TOKEN_SIZE 128 -#define PORTLIST_MAX_TOKENS 32 - -typedef struct cmdline_portlist { - uint32_t map; -} cmdline_portlist_t; - -struct cmdline_token_portlist { - struct cmdline_token_hdr hdr; -}; -typedef struct cmdline_token_portlist cmdline_parse_token_portlist_t; - -extern struct cmdline_token_ops cmdline_token_portlist_ops; - -int cmdline_parse_portlist(cmdline_parse_token_hdr_t *tk, - const char *srcbuf, void *res, unsigned ressize); -int cmdline_get_help_portlist(cmdline_parse_token_hdr_t *tk, - char *dstbuf, unsigned int size); - -#define TOKEN_PORTLIST_INITIALIZER(structure, field) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_portlist_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ -} - -#ifdef __cplusplus -} -#endif - -#endif /* _PARSE_PORTLIST_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.c b/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.c deleted file mode 100755 index 45883b3e..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.c +++ /dev/null @@ -1,253 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <inttypes.h> -#include <ctype.h> -#include <string.h> -#include <stdarg.h> -#include <errno.h> -#include <rte_string_fns.h> - -#include "cmdline_parse.h" -#include "cmdline_parse_string.h" - -struct cmdline_token_ops cmdline_token_string_ops = { - .parse = cmdline_parse_string, - .complete_get_nb = cmdline_complete_get_nb_string, - .complete_get_elt = cmdline_complete_get_elt_string, - .get_help = cmdline_get_help_string, -}; - -#define MULTISTRING_HELP "Mul-choice STRING" -#define ANYSTRING_HELP "Any STRING" -#define FIXEDSTRING_HELP "Fixed STRING" - -static unsigned int -get_token_len(const char *s) -{ - char c; - unsigned int i=0; - - c = s[i]; - while (c!='#' && c!='\0') { - i++; - c = s[i]; - } - return i; -} - -static const char * -get_next_token(const char *s) -{ - unsigned int i; - i = get_token_len(s); - if (s[i] == '#') - return s+i+1; - return NULL; -} - -int -cmdline_parse_string(cmdline_parse_token_hdr_t *tk, const char *buf, void *res, - unsigned ressize) -{ - struct cmdline_token_string *tk2; - struct cmdline_token_string_data *sd; - unsigned int token_len; - const char *str; - - if (res && ressize < STR_TOKEN_SIZE) - return -1; - - if (!tk || !buf || ! *buf) - return -1; - - tk2 = (struct cmdline_token_string *)tk; - - sd = &tk2->string_data; - - /* fixed string */ - if (sd->str) { - str = sd->str; - do { - token_len = get_token_len(str); - - /* if token is too big... */ - if (token_len >= STR_TOKEN_SIZE - 1) { - continue; - } - - if ( strncmp(buf, str, token_len) ) { - continue; - } - - if ( !cmdline_isendoftoken(*(buf+token_len)) ) { - continue; - } - - break; - } while ( (str = get_next_token(str)) != NULL ); - - if (!str) - return -1; - } - /* unspecified string */ - else { - token_len = 0; - while(!cmdline_isendoftoken(buf[token_len]) && - token_len < (STR_TOKEN_SIZE-1)) - token_len++; - - /* return if token too long */ - if (token_len >= STR_TOKEN_SIZE - 1) { - return -1; - } - } - - if (res) { - /* we are sure that token_len is < STR_TOKEN_SIZE-1 */ - snprintf(res, STR_TOKEN_SIZE, "%s", buf); - *((char *)res + token_len) = 0; - } - - - return token_len; -} - -int cmdline_complete_get_nb_string(cmdline_parse_token_hdr_t *tk) -{ - struct cmdline_token_string *tk2; - struct cmdline_token_string_data *sd; - const char *str; - int ret = 1; - - if (!tk) - return -1; - - tk2 = (struct cmdline_token_string *)tk; - sd = &tk2->string_data; - - if (!sd->str) - return 0; - - str = sd->str; - while( (str = get_next_token(str)) != NULL ) { - ret++; - } - return ret; -} - -int cmdline_complete_get_elt_string(cmdline_parse_token_hdr_t *tk, int idx, - char *dstbuf, unsigned int size) -{ - struct cmdline_token_string *tk2; - struct cmdline_token_string_data *sd; - const char *s; - unsigned int len; - - if (!tk || !dstbuf || idx < 0) - return -1; - - tk2 = (struct cmdline_token_string *)tk; - sd = &tk2->string_data; - - s = sd->str; - - while (idx-- && s) - s = get_next_token(s); - - if (!s) - return -1; - - len = get_token_len(s); - if (len > size - 1) - return -1; - - memcpy(dstbuf, s, len); - dstbuf[len] = '\0'; - return 0; -} - - -int cmdline_get_help_string(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size) -{ - struct cmdline_token_string *tk2; - struct cmdline_token_string_data *sd; - const char *s; - - if (!tk || !dstbuf) - return -1; - - tk2 = (struct cmdline_token_string *)tk; - sd = &tk2->string_data; - - s = sd->str; - - if (s) { - if (get_next_token(s)) - snprintf(dstbuf, size, MULTISTRING_HELP); - else - snprintf(dstbuf, size, FIXEDSTRING_HELP); - } else - snprintf(dstbuf, size, ANYSTRING_HELP); - - return 0; -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.h b/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.h deleted file mode 100755 index c2056226..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_parse_string.h +++ /dev/null @@ -1,110 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _PARSE_STRING_H_ -#define _PARSE_STRING_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* size of a parsed string */ -#define STR_TOKEN_SIZE 128 - -typedef char cmdline_fixed_string_t[STR_TOKEN_SIZE]; - -struct cmdline_token_string_data { - const char *str; -}; - -struct cmdline_token_string { - struct cmdline_token_hdr hdr; - struct cmdline_token_string_data string_data; -}; -typedef struct cmdline_token_string cmdline_parse_token_string_t; - -extern struct cmdline_token_ops cmdline_token_string_ops; - -int cmdline_parse_string(cmdline_parse_token_hdr_t *tk, const char *srcbuf, - void *res, unsigned ressize); -int cmdline_complete_get_nb_string(cmdline_parse_token_hdr_t *tk); -int cmdline_complete_get_elt_string(cmdline_parse_token_hdr_t *tk, int idx, - char *dstbuf, unsigned int size); -int cmdline_get_help_string(cmdline_parse_token_hdr_t *tk, char *dstbuf, - unsigned int size); - -#define TOKEN_STRING_INITIALIZER(structure, field, string) \ -{ \ - /* hdr */ \ - { \ - &cmdline_token_string_ops, /* ops */ \ - offsetof(structure, field), /* offset */ \ - }, \ - /* string_data */ \ - { \ - string, /* str */ \ - }, \ -} - -#ifdef __cplusplus -} -#endif - -#endif /* _PARSE_STRING_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_rdline.c b/src/dpdk_lib18/librte_cmdline/cmdline_rdline.c deleted file mode 100755 index f79ebe31..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_rdline.c +++ /dev/null @@ -1,698 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdlib.h> -#include <stdio.h> -#include <stdint.h> -#include <string.h> -#include <stdarg.h> -#include <errno.h> -#include <ctype.h> - -#include "cmdline_cirbuf.h" -#include "cmdline_rdline.h" - -static void rdline_puts(struct rdline *rdl, const char *buf); -static void rdline_miniprintf(struct rdline *rdl, - const char *buf, unsigned int val); - -static void rdline_remove_old_history_item(struct rdline *rdl); -static void rdline_remove_first_history_item(struct rdline *rdl); -static unsigned int rdline_get_history_size(struct rdline *rdl); - - -/* isblank() needs _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE, so use our - * own. */ -static int -isblank2(char c) -{ - if (c == ' ' || - c == '\t' ) - return 1; - return 0; -} - -int -rdline_init(struct rdline *rdl, - rdline_write_char_t *write_char, - rdline_validate_t *validate, - rdline_complete_t *complete) -{ - if (!rdl || !write_char || !validate || !complete) - return -EINVAL; - memset(rdl, 0, sizeof(*rdl)); - rdl->validate = validate; - rdl->complete = complete; - rdl->write_char = write_char; - rdl->status = RDLINE_INIT; - return cirbuf_init(&rdl->history, rdl->history_buf, 0, RDLINE_HISTORY_BUF_SIZE); -} - -void -rdline_newline(struct rdline *rdl, const char *prompt) -{ - unsigned int i; - - if (!rdl || !prompt) - return; - - vt100_init(&rdl->vt100); - cirbuf_init(&rdl->left, rdl->left_buf, 0, RDLINE_BUF_SIZE); - cirbuf_init(&rdl->right, rdl->right_buf, 0, RDLINE_BUF_SIZE); - - rdl->prompt_size = strnlen(prompt, RDLINE_PROMPT_SIZE-1); - if (prompt != rdl->prompt) - memcpy(rdl->prompt, prompt, rdl->prompt_size); - rdl->prompt[RDLINE_PROMPT_SIZE-1] = '\0'; - - for (i=0 ; i<rdl->prompt_size ; i++) - rdl->write_char(rdl, rdl->prompt[i]); - rdl->status = RDLINE_RUNNING; - - rdl->history_cur_line = -1; -} - -void -rdline_stop(struct rdline *rdl) -{ - if (!rdl) - return; - rdl->status = RDLINE_INIT; -} - -void -rdline_quit(struct rdline *rdl) -{ - if (!rdl) - return; - rdl->status = RDLINE_EXITED; -} - -void -rdline_restart(struct rdline *rdl) -{ - if (!rdl) - return; - rdl->status = RDLINE_RUNNING; -} - -void -rdline_reset(struct rdline *rdl) -{ - if (!rdl) - return; - vt100_init(&rdl->vt100); - cirbuf_init(&rdl->left, rdl->left_buf, 0, RDLINE_BUF_SIZE); - cirbuf_init(&rdl->right, rdl->right_buf, 0, RDLINE_BUF_SIZE); - - rdl->status = RDLINE_RUNNING; - - rdl->history_cur_line = -1; -} - -const char * -rdline_get_buffer(struct rdline *rdl) -{ - if (!rdl) - return NULL; - unsigned int len_l, len_r; - cirbuf_align_left(&rdl->left); - cirbuf_align_left(&rdl->right); - - len_l = CIRBUF_GET_LEN(&rdl->left); - len_r = CIRBUF_GET_LEN(&rdl->right); - memcpy(rdl->left_buf+len_l, rdl->right_buf, len_r); - - rdl->left_buf[len_l + len_r] = '\n'; - rdl->left_buf[len_l + len_r + 1] = '\0'; - return rdl->left_buf; -} - -static void -display_right_buffer(struct rdline *rdl, int force) -{ - unsigned int i; - char tmp; - - if (!force && CIRBUF_IS_EMPTY(&rdl->right)) - return; - - rdline_puts(rdl, vt100_clear_right); - CIRBUF_FOREACH(&rdl->right, i, tmp) { - rdl->write_char(rdl, tmp); - } - if (!CIRBUF_IS_EMPTY(&rdl->right)) - rdline_miniprintf(rdl, vt100_multi_left, - CIRBUF_GET_LEN(&rdl->right)); -} - -void -rdline_redisplay(struct rdline *rdl) -{ - unsigned int i; - char tmp; - - if (!rdl) - return; - - rdline_puts(rdl, vt100_home); - for (i=0 ; i<rdl->prompt_size ; i++) - rdl->write_char(rdl, rdl->prompt[i]); - CIRBUF_FOREACH(&rdl->left, i, tmp) { - rdl->write_char(rdl, tmp); - } - display_right_buffer(rdl, 1); -} - -int -rdline_char_in(struct rdline *rdl, char c) -{ - unsigned int i; - int cmd; - char tmp; - char *buf; - - if (!rdl) - return -EINVAL; - - if (rdl->status == RDLINE_EXITED) - return RDLINE_RES_EXITED; - if (rdl->status != RDLINE_RUNNING) - return RDLINE_RES_NOT_RUNNING; - - cmd = vt100_parser(&rdl->vt100, c); - if (cmd == -2) - return RDLINE_RES_SUCCESS; - - if (cmd >= 0) { - switch (cmd) { - /* move caret 1 char to the left */ - case CMDLINE_KEY_CTRL_B: - case CMDLINE_KEY_LEFT_ARR: - if (CIRBUF_IS_EMPTY(&rdl->left)) - break; - tmp = cirbuf_get_tail(&rdl->left); - cirbuf_del_tail(&rdl->left); - cirbuf_add_head(&rdl->right, tmp); - rdline_puts(rdl, vt100_left_arr); - break; - - /* move caret 1 char to the right */ - case CMDLINE_KEY_CTRL_F: - case CMDLINE_KEY_RIGHT_ARR: - if (CIRBUF_IS_EMPTY(&rdl->right)) - break; - tmp = cirbuf_get_head(&rdl->right); - cirbuf_del_head(&rdl->right); - cirbuf_add_tail(&rdl->left, tmp); - rdline_puts(rdl, vt100_right_arr); - break; - - /* move caret 1 word to the left */ - /* keyboard equivalent: Alt+B */ - case CMDLINE_KEY_WLEFT: - while (! CIRBUF_IS_EMPTY(&rdl->left) && - (tmp = cirbuf_get_tail(&rdl->left)) && - isblank2(tmp)) { - rdline_puts(rdl, vt100_left_arr); - cirbuf_del_tail(&rdl->left); - cirbuf_add_head(&rdl->right, tmp); - } - while (! CIRBUF_IS_EMPTY(&rdl->left) && - (tmp = cirbuf_get_tail(&rdl->left)) && - !isblank2(tmp)) { - rdline_puts(rdl, vt100_left_arr); - cirbuf_del_tail(&rdl->left); - cirbuf_add_head(&rdl->right, tmp); - } - break; - - /* move caret 1 word to the right */ - /* keyboard equivalent: Alt+F */ - case CMDLINE_KEY_WRIGHT: - while (! CIRBUF_IS_EMPTY(&rdl->right) && - (tmp = cirbuf_get_head(&rdl->right)) && - isblank2(tmp)) { - rdline_puts(rdl, vt100_right_arr); - cirbuf_del_head(&rdl->right); - cirbuf_add_tail(&rdl->left, tmp); - } - while (! CIRBUF_IS_EMPTY(&rdl->right) && - (tmp = cirbuf_get_head(&rdl->right)) && - !isblank2(tmp)) { - rdline_puts(rdl, vt100_right_arr); - cirbuf_del_head(&rdl->right); - cirbuf_add_tail(&rdl->left, tmp); - } - break; - - /* move caret to the left */ - case CMDLINE_KEY_CTRL_A: - if (CIRBUF_IS_EMPTY(&rdl->left)) - break; - rdline_miniprintf(rdl, vt100_multi_left, - CIRBUF_GET_LEN(&rdl->left)); - while (! CIRBUF_IS_EMPTY(&rdl->left)) { - tmp = cirbuf_get_tail(&rdl->left); - cirbuf_del_tail(&rdl->left); - cirbuf_add_head(&rdl->right, tmp); - } - break; - - /* move caret to the right */ - case CMDLINE_KEY_CTRL_E: - if (CIRBUF_IS_EMPTY(&rdl->right)) - break; - rdline_miniprintf(rdl, vt100_multi_right, - CIRBUF_GET_LEN(&rdl->right)); - while (! CIRBUF_IS_EMPTY(&rdl->right)) { - tmp = cirbuf_get_head(&rdl->right); - cirbuf_del_head(&rdl->right); - cirbuf_add_tail(&rdl->left, tmp); - } - break; - - /* delete 1 char from the left */ - case CMDLINE_KEY_BKSPACE: - if(!cirbuf_del_tail_safe(&rdl->left)) { - rdline_puts(rdl, vt100_bs); - display_right_buffer(rdl, 1); - } - break; - - /* delete 1 char from the right */ - case CMDLINE_KEY_SUPPR: - case CMDLINE_KEY_CTRL_D: - if (cmd == CMDLINE_KEY_CTRL_D && - CIRBUF_IS_EMPTY(&rdl->left) && - CIRBUF_IS_EMPTY(&rdl->right)) { - return RDLINE_RES_EOF; - } - if (!cirbuf_del_head_safe(&rdl->right)) { - display_right_buffer(rdl, 1); - } - break; - - /* delete 1 word from the left */ - case CMDLINE_KEY_META_BKSPACE: - case CMDLINE_KEY_CTRL_W: - while (! CIRBUF_IS_EMPTY(&rdl->left) && isblank2(cirbuf_get_tail(&rdl->left))) { - rdline_puts(rdl, vt100_bs); - cirbuf_del_tail(&rdl->left); - } - while (! CIRBUF_IS_EMPTY(&rdl->left) && !isblank2(cirbuf_get_tail(&rdl->left))) { - rdline_puts(rdl, vt100_bs); - cirbuf_del_tail(&rdl->left); - } - display_right_buffer(rdl, 1); - break; - - /* delete 1 word from the right */ - case CMDLINE_KEY_META_D: - while (! CIRBUF_IS_EMPTY(&rdl->right) && isblank2(cirbuf_get_head(&rdl->right))) - cirbuf_del_head(&rdl->right); - while (! CIRBUF_IS_EMPTY(&rdl->right) && !isblank2(cirbuf_get_head(&rdl->right))) - cirbuf_del_head(&rdl->right); - display_right_buffer(rdl, 1); - break; - - /* set kill buffer to contents on the right side of caret */ - case CMDLINE_KEY_CTRL_K: - cirbuf_get_buf_head(&rdl->right, rdl->kill_buf, RDLINE_BUF_SIZE); - rdl->kill_size = CIRBUF_GET_LEN(&rdl->right); - cirbuf_del_buf_head(&rdl->right, rdl->kill_size); - rdline_puts(rdl, vt100_clear_right); - break; - - /* paste contents of kill buffer to the left side of caret */ - case CMDLINE_KEY_CTRL_Y: - i=0; - while(CIRBUF_GET_LEN(&rdl->right) + CIRBUF_GET_LEN(&rdl->left) < - RDLINE_BUF_SIZE && - i < rdl->kill_size) { - cirbuf_add_tail(&rdl->left, rdl->kill_buf[i]); - rdl->write_char(rdl, rdl->kill_buf[i]); - i++; - } - display_right_buffer(rdl, 0); - break; - - /* clear and newline */ - case CMDLINE_KEY_CTRL_C: - rdline_puts(rdl, "\r\n"); - rdline_newline(rdl, rdl->prompt); - break; - - /* redisplay (helps when prompt is lost in other output) */ - case CMDLINE_KEY_CTRL_L: - rdline_redisplay(rdl); - break; - - /* autocomplete */ - case CMDLINE_KEY_TAB: - case CMDLINE_KEY_HELP: - cirbuf_align_left(&rdl->left); - rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '\0'; - if (rdl->complete) { - char tmp_buf[BUFSIZ]; - int complete_state; - int ret; - unsigned int tmp_size; - - if (cmd == CMDLINE_KEY_TAB) - complete_state = 0; - else - complete_state = -1; - - /* see in parse.h for help on complete() */ - ret = rdl->complete(rdl, rdl->left_buf, - tmp_buf, sizeof(tmp_buf), - &complete_state); - /* no completion or error */ - if (ret <= 0) { - return RDLINE_RES_COMPLETE; - } - - tmp_size = strnlen(tmp_buf, sizeof(tmp_buf)); - /* add chars */ - if (ret == RDLINE_RES_COMPLETE) { - i=0; - while(CIRBUF_GET_LEN(&rdl->right) + CIRBUF_GET_LEN(&rdl->left) < - RDLINE_BUF_SIZE && - i < tmp_size) { - cirbuf_add_tail(&rdl->left, tmp_buf[i]); - rdl->write_char(rdl, tmp_buf[i]); - i++; - } - display_right_buffer(rdl, 1); - return RDLINE_RES_COMPLETE; /* ?? */ - } - - /* choice */ - rdline_puts(rdl, "\r\n"); - while (ret) { - rdl->write_char(rdl, ' '); - for (i=0 ; tmp_buf[i] ; i++) - rdl->write_char(rdl, tmp_buf[i]); - rdline_puts(rdl, "\r\n"); - ret = rdl->complete(rdl, rdl->left_buf, - tmp_buf, sizeof(tmp_buf), - &complete_state); - } - - rdline_redisplay(rdl); - } - return RDLINE_RES_COMPLETE; - - /* complete buffer */ - case CMDLINE_KEY_RETURN: - case CMDLINE_KEY_RETURN2: - rdline_get_buffer(rdl); - rdl->status = RDLINE_INIT; - rdline_puts(rdl, "\r\n"); - if (rdl->history_cur_line != -1) - rdline_remove_first_history_item(rdl); - - if (rdl->validate) - rdl->validate(rdl, rdl->left_buf, CIRBUF_GET_LEN(&rdl->left)+2); - /* user may have stopped rdline */ - if (rdl->status == RDLINE_EXITED) - return RDLINE_RES_EXITED; - return RDLINE_RES_VALIDATED; - - /* previous element in history */ - case CMDLINE_KEY_UP_ARR: - case CMDLINE_KEY_CTRL_P: - if (rdl->history_cur_line == 0) { - rdline_remove_first_history_item(rdl); - } - if (rdl->history_cur_line <= 0) { - rdline_add_history(rdl, rdline_get_buffer(rdl)); - rdl->history_cur_line = 0; - } - - buf = rdline_get_history_item(rdl, rdl->history_cur_line + 1); - if (!buf) - break; - - rdl->history_cur_line ++; - vt100_init(&rdl->vt100); - cirbuf_init(&rdl->left, rdl->left_buf, 0, RDLINE_BUF_SIZE); - cirbuf_init(&rdl->right, rdl->right_buf, 0, RDLINE_BUF_SIZE); - cirbuf_add_buf_tail(&rdl->left, buf, strnlen(buf, RDLINE_BUF_SIZE)); - rdline_redisplay(rdl); - break; - - /* next element in history */ - case CMDLINE_KEY_DOWN_ARR: - case CMDLINE_KEY_CTRL_N: - if (rdl->history_cur_line - 1 < 0) - break; - - rdl->history_cur_line --; - buf = rdline_get_history_item(rdl, rdl->history_cur_line); - if (!buf) - break; - vt100_init(&rdl->vt100); - cirbuf_init(&rdl->left, rdl->left_buf, 0, RDLINE_BUF_SIZE); - cirbuf_init(&rdl->right, rdl->right_buf, 0, RDLINE_BUF_SIZE); - cirbuf_add_buf_tail(&rdl->left, buf, strnlen(buf, RDLINE_BUF_SIZE)); - rdline_redisplay(rdl); - - break; - - - default: - break; - } - - return RDLINE_RES_SUCCESS; - } - - if (!isprint((int)c)) - return RDLINE_RES_SUCCESS; - - /* standard chars */ - if (CIRBUF_GET_LEN(&rdl->left) + CIRBUF_GET_LEN(&rdl->right) >= RDLINE_BUF_SIZE) - return RDLINE_RES_SUCCESS; - - if (cirbuf_add_tail_safe(&rdl->left, c)) - return RDLINE_RES_SUCCESS; - - rdl->write_char(rdl, c); - display_right_buffer(rdl, 0); - - return RDLINE_RES_SUCCESS; -} - - -/* HISTORY */ - -static void -rdline_remove_old_history_item(struct rdline * rdl) -{ - char tmp; - - while (! CIRBUF_IS_EMPTY(&rdl->history) ) { - tmp = cirbuf_get_head(&rdl->history); - cirbuf_del_head(&rdl->history); - if (!tmp) - break; - } -} - -static void -rdline_remove_first_history_item(struct rdline * rdl) -{ - char tmp; - - if ( CIRBUF_IS_EMPTY(&rdl->history) ) { - return; - } - else { - cirbuf_del_tail(&rdl->history); - } - - while (! CIRBUF_IS_EMPTY(&rdl->history) ) { - tmp = cirbuf_get_tail(&rdl->history); - if (!tmp) - break; - cirbuf_del_tail(&rdl->history); - } -} - -static unsigned int -rdline_get_history_size(struct rdline * rdl) -{ - unsigned int i, tmp, ret=0; - - CIRBUF_FOREACH(&rdl->history, i, tmp) { - if (tmp == 0) - ret ++; - } - - return ret; -} - -char * -rdline_get_history_item(struct rdline * rdl, unsigned int idx) -{ - unsigned int len, i, tmp; - - if (!rdl) - return NULL; - - len = rdline_get_history_size(rdl); - if ( idx >= len ) { - return NULL; - } - - cirbuf_align_left(&rdl->history); - - CIRBUF_FOREACH(&rdl->history, i, tmp) { - if ( idx == len - 1) { - return rdl->history_buf + i; - } - if (tmp == 0) - len --; - } - - return NULL; -} - -int -rdline_add_history(struct rdline * rdl, const char * buf) -{ - unsigned int len, i; - - if (!rdl || !buf) - return -EINVAL; - - len = strnlen(buf, RDLINE_BUF_SIZE); - for (i=0; i<len ; i++) { - if (buf[i] == '\n') { - len = i; - break; - } - } - - if ( len >= RDLINE_HISTORY_BUF_SIZE ) - return -1; - - while ( len >= CIRBUF_GET_FREELEN(&rdl->history) ) { - rdline_remove_old_history_item(rdl); - } - - cirbuf_add_buf_tail(&rdl->history, buf, len); - cirbuf_add_tail(&rdl->history, 0); - - return 0; -} - -void -rdline_clear_history(struct rdline * rdl) -{ - if (!rdl) - return; - cirbuf_init(&rdl->history, rdl->history_buf, 0, RDLINE_HISTORY_BUF_SIZE); -} - - -/* STATIC USEFUL FUNCS */ - -static void -rdline_puts(struct rdline * rdl, const char * buf) -{ - char c; - while ( (c = *(buf++)) != '\0' ) { - rdl->write_char(rdl, c); - } -} - -/* a very very basic printf with one arg and one format 'u' */ -static void -rdline_miniprintf(struct rdline *rdl, const char * buf, unsigned int val) -{ - char c, started=0, div=100; - - while ( (c=*(buf++)) ) { - if (c != '%') { - rdl->write_char(rdl, c); - continue; - } - c = *(buf++); - if (c != 'u') { - rdl->write_char(rdl, '%'); - rdl->write_char(rdl, c); - continue; - } - /* val is never more than 255 */ - while (div) { - c = (char)(val / div); - if (c || started) { - rdl->write_char(rdl, (char)(c+'0')); - started = 1; - } - val %= div; - div /= 10; - } - } -} - diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_rdline.h b/src/dpdk_lib18/librte_cmdline/cmdline_rdline.h deleted file mode 100755 index ae6e24e8..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_rdline.h +++ /dev/null @@ -1,254 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _RDLINE_H_ -#define _RDLINE_H_ - -/** - * This file is a small equivalent to the GNU readline library, but it - * was originally designed for small systems, like Atmel AVR - * microcontrollers (8 bits). Indeed, we don't use any malloc that is - * sometimes not implemented (or just not recommended) on such - * systems. - * - * Obviously, it does not support as many things as the GNU readline, - * but at least it supports some interesting features like a kill - * buffer and a command history. - * - * It also have a feature that does not have the GNU readline (as far - * as I know): we can have several instances of it running at the same - * time, even on a monothread program, since it works with callbacks. - * - * The lib is designed for a client-side or a server-side use: - * - server-side: the server receives all data from a socket, including - * control chars, like arrows, tabulations, ... The client is - * very simple, it can be a telnet or a minicom through a serial line. - * - client-side: the client receives its data through its stdin for - * instance. - */ - -#include <cmdline_cirbuf.h> -#include <cmdline_vt100.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* configuration */ -#define RDLINE_BUF_SIZE 256 -#define RDLINE_PROMPT_SIZE 32 -#define RDLINE_VT100_BUF_SIZE 8 -#define RDLINE_HISTORY_BUF_SIZE BUFSIZ -#define RDLINE_HISTORY_MAX_LINE 64 - -enum rdline_status { - RDLINE_INIT, - RDLINE_RUNNING, - RDLINE_EXITED -}; - -struct rdline; - -typedef int (rdline_write_char_t)(struct rdline *rdl, char); -typedef void (rdline_validate_t)(struct rdline *rdl, - const char *buf, unsigned int size); -typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf, - char *dstbuf, unsigned int dstsize, - int *state); - -struct rdline { - enum rdline_status status; - /* rdline bufs */ - struct cirbuf left; - struct cirbuf right; - char left_buf[RDLINE_BUF_SIZE+2]; /* reserve 2 chars for the \n\0 */ - char right_buf[RDLINE_BUF_SIZE]; - - char prompt[RDLINE_PROMPT_SIZE]; - unsigned int prompt_size; - - char kill_buf[RDLINE_BUF_SIZE]; - unsigned int kill_size; - - /* history */ - struct cirbuf history; - char history_buf[RDLINE_HISTORY_BUF_SIZE]; - int history_cur_line; - - /* callbacks and func pointers */ - rdline_write_char_t *write_char; - rdline_validate_t *validate; - rdline_complete_t *complete; - - /* vt100 parser */ - struct cmdline_vt100 vt100; - - /* opaque pointer */ - void *opaque; -}; - -/** - * Init fields for a struct rdline. Call this only once at the beginning - * of your program. - * \param rdl A pointer to an uninitialized struct rdline - * \param write_char The function used by the function to write a character - * \param validate A pointer to the function to execute when the - * user validates the buffer. - * \param complete A pointer to the function to execute when the - * user completes the buffer. - */ -int rdline_init(struct rdline *rdl, - rdline_write_char_t *write_char, - rdline_validate_t *validate, - rdline_complete_t *complete); - - -/** - * Init the current buffer, and display a prompt. - * \param rdl A pointer to a struct rdline - * \param prompt A string containing the prompt - */ -void rdline_newline(struct rdline *rdl, const char *prompt); - -/** - * Call it and all received chars will be ignored. - * \param rdl A pointer to a struct rdline - */ -void rdline_stop(struct rdline *rdl); - -/** - * Same than rdline_stop() except that next calls to rdline_char_in() - * will return RDLINE_RES_EXITED. - * \param rdl A pointer to a struct rdline - */ -void rdline_quit(struct rdline *rdl); - -/** - * Restart after a call to rdline_stop() or rdline_quit() - * \param rdl A pointer to a struct rdline - */ -void rdline_restart(struct rdline *rdl); - -/** - * Redisplay the current buffer - * \param rdl A pointer to a struct rdline - */ -void rdline_redisplay(struct rdline *rdl); - -/** - * Reset the current buffer and setup for a new line. - * \param rdl A pointer to a struct rdline - */ -void rdline_reset(struct rdline *rdl); - - -/* return status for rdline_char_in() */ -#define RDLINE_RES_SUCCESS 0 -#define RDLINE_RES_VALIDATED 1 -#define RDLINE_RES_COMPLETE 2 -#define RDLINE_RES_NOT_RUNNING -1 -#define RDLINE_RES_EOF -2 -#define RDLINE_RES_EXITED -3 - -/** - * append a char to the readline buffer. - * Return RDLINE_RES_VALIDATE when the line has been validated. - * Return RDLINE_RES_COMPLETE when the user asked to complete the buffer. - * Return RDLINE_RES_NOT_RUNNING if it is not running. - * Return RDLINE_RES_EOF if EOF (ctrl-d on an empty line). - * Else return RDLINE_RES_SUCCESS. - * XXX error case when the buffer is full ? - * - * \param rdl A pointer to a struct rdline - * \param c The character to append - */ -int rdline_char_in(struct rdline *rdl, char c); - -/** - * Return the current buffer, terminated by '\0'. - * \param rdl A pointer to a struct rdline - */ -const char *rdline_get_buffer(struct rdline *rdl); - - -/** - * Add the buffer to history. - * return < 0 on error. - * \param rdl A pointer to a struct rdline - * \param buf A buffer that is terminated by '\0' - */ -int rdline_add_history(struct rdline *rdl, const char *buf); - -/** - * Clear current history - * \param rdl A pointer to a struct rdline - */ -void rdline_clear_history(struct rdline *rdl); - -/** - * Get the i-th history item - */ -char *rdline_get_history_item(struct rdline *rdl, unsigned int i); - -#ifdef __cplusplus -} -#endif - -#endif /* _RDLINE_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_socket.c b/src/dpdk_lib18/librte_cmdline/cmdline_socket.c deleted file mode 100755 index 6820b6df..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_socket.c +++ /dev/null @@ -1,119 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdio.h> -#include <string.h> -#include <unistd.h> -#include <stdlib.h> -#include <stdarg.h> -#include <inttypes.h> -#include <fcntl.h> -#include <termios.h> - -#include "cmdline_parse.h" -#include "cmdline_rdline.h" -#include "cmdline_socket.h" -#include "cmdline.h" - -struct cmdline * -cmdline_file_new(cmdline_parse_ctx_t *ctx, const char *prompt, const char *path) -{ - int fd; - - /* everything else is checked in cmdline_new() */ - if (!path) - return NULL; - - fd = open(path, O_RDONLY, 0); - if (fd < 0) { - dprintf("open() failed\n"); - return NULL; - } - return (cmdline_new(ctx, prompt, fd, -1)); -} - -struct cmdline * -cmdline_stdin_new(cmdline_parse_ctx_t *ctx, const char *prompt) -{ - struct cmdline *cl; - struct termios oldterm, term; - - tcgetattr(0, &oldterm); - memcpy(&term, &oldterm, sizeof(term)); - term.c_lflag &= ~(ICANON | ECHO | ISIG); - tcsetattr(0, TCSANOW, &term); - setbuf(stdin, NULL); - - cl = cmdline_new(ctx, prompt, 0, 1); - - if (cl) - memcpy(&cl->oldterm, &oldterm, sizeof(term)); - - return cl; -} - -void -cmdline_stdin_exit(struct cmdline *cl) -{ - if (!cl) - return; - - tcsetattr(fileno(stdin), TCSANOW, &cl->oldterm); -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_socket.h b/src/dpdk_lib18/librte_cmdline/cmdline_socket.h deleted file mode 100755 index 8cc2dfbc..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_socket.h +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _CMDLINE_SOCKET_H_ -#define _CMDLINE_SOCKET_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -struct cmdline *cmdline_file_new(cmdline_parse_ctx_t *ctx, const char *prompt, const char *path); -struct cmdline *cmdline_stdin_new(cmdline_parse_ctx_t *ctx, const char *prompt); -void cmdline_stdin_exit(struct cmdline *cl); - -#ifdef __cplusplus -} -#endif - -#endif /* _CMDLINE_SOCKET_H_ */ diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_vt100.c b/src/dpdk_lib18/librte_cmdline/cmdline_vt100.c deleted file mode 100755 index a253e8b6..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_vt100.c +++ /dev/null @@ -1,185 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include <stdlib.h> -#include <stdint.h> -#include <stdio.h> -#include <string.h> -#include <stdarg.h> -#include <ctype.h> -#include <termios.h> - -#include "cmdline_vt100.h" - -const char *cmdline_vt100_commands[] = { - vt100_up_arr, - vt100_down_arr, - vt100_right_arr, - vt100_left_arr, - "\177", - "\n", - "\001", - "\005", - "\013", - "\031", - "\003", - "\006", - "\002", - vt100_suppr, - vt100_tab, - "\004", - "\014", - "\r", - "\033\177", - vt100_word_left, - vt100_word_right, - "?", - "\027", - "\020", - "\016", - "\033\144", -}; - -void -vt100_init(struct cmdline_vt100 *vt) -{ - if (!vt) - return; - vt->state = CMDLINE_VT100_INIT; -} - - -static int -match_command(char *buf, unsigned int size) -{ - const char *cmd; - size_t cmdlen; - unsigned int i = 0; - - for (i=0 ; i<sizeof(cmdline_vt100_commands)/sizeof(const char *) ; i++) { - cmd = *(cmdline_vt100_commands + i); - - cmdlen = strnlen(cmd, CMDLINE_VT100_BUF_SIZE); - if (size == cmdlen && - !strncmp(buf, cmd, cmdlen)) { - return i; - } - } - - return -1; -} - -int -vt100_parser(struct cmdline_vt100 *vt, char ch) -{ - unsigned int size; - uint8_t c = (uint8_t) ch; - - if (!vt) - return -1; - - if (vt->bufpos >= CMDLINE_VT100_BUF_SIZE) { - vt->state = CMDLINE_VT100_INIT; - vt->bufpos = 0; - } - - vt->buf[vt->bufpos++] = c; - size = vt->bufpos; - - switch (vt->state) { - case CMDLINE_VT100_INIT: - if (c == 033) { - vt->state = CMDLINE_VT100_ESCAPE; - } - else { - vt->bufpos = 0; - goto match_command; - } - break; - - case CMDLINE_VT100_ESCAPE: - if (c == 0133) { - vt->state = CMDLINE_VT100_ESCAPE_CSI; - } - else if (c >= 060 && c <= 0177) { /* XXX 0177 ? */ - vt->bufpos = 0; - vt->state = CMDLINE_VT100_INIT; - goto match_command; - } - break; - - case CMDLINE_VT100_ESCAPE_CSI: - if (c >= 0100 && c <= 0176) { - vt->bufpos = 0; - vt->state = CMDLINE_VT100_INIT; - goto match_command; - } - break; - - default: - vt->bufpos = 0; - break; - } - - return -2; - - match_command: - return match_command(vt->buf, size); -} diff --git a/src/dpdk_lib18/librte_cmdline/cmdline_vt100.h b/src/dpdk_lib18/librte_cmdline/cmdline_vt100.h deleted file mode 100755 index b9840f6c..00000000 --- a/src/dpdk_lib18/librte_cmdline/cmdline_vt100.h +++ /dev/null @@ -1,151 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org> - * All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the University of California, Berkeley nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef _CMDLINE_VT100_H_ -#define _CMDLINE_VT100_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define vt100_bell "\007" -#define vt100_bs "\010" -#define vt100_bs_clear "\010 \010" -#define vt100_tab "\011" -#define vt100_crnl "\012\015" -#define vt100_clear_right "\033[0K" -#define vt100_clear_left "\033[1K" -#define vt100_clear_down "\033[0J" -#define vt100_clear_up "\033[1J" -#define vt100_clear_line "\033[2K" -#define vt100_clear_screen "\033[2J" -#define vt100_up_arr "\033\133\101" -#define vt100_down_arr "\033\133\102" -#define vt100_right_arr "\033\133\103" -#define vt100_left_arr "\033\133\104" -#define vt100_multi_right "\033\133%uC" -#define vt100_multi_left "\033\133%uD" -#define vt100_suppr "\033\133\063\176" -#define vt100_home "\033M\033E" -#define vt100_word_left "\033\142" -#define vt100_word_right "\033\146" - -/* Result of parsing : it must be synchronized with - * cmdline_vt100_commands[] in vt100.c */ -#define CMDLINE_KEY_UP_ARR 0 -#define CMDLINE_KEY_DOWN_ARR 1 -#define CMDLINE_KEY_RIGHT_ARR 2 -#define CMDLINE_KEY_LEFT_ARR 3 -#define CMDLINE_KEY_BKSPACE 4 -#define CMDLINE_KEY_RETURN 5 -#define CMDLINE_KEY_CTRL_A 6 -#define CMDLINE_KEY_CTRL_E 7 -#define CMDLINE_KEY_CTRL_K 8 -#define CMDLINE_KEY_CTRL_Y 9 -#define CMDLINE_KEY_CTRL_C 10 -#define CMDLINE_KEY_CTRL_F 11 -#define CMDLINE_KEY_CTRL_B 12 -#define CMDLINE_KEY_SUPPR 13 -#define CMDLINE_KEY_TAB 14 -#define CMDLINE_KEY_CTRL_D 15 -#define CMDLINE_KEY_CTRL_L 16 -#define CMDLINE_KEY_RETURN2 17 -#define CMDLINE_KEY_META_BKSPACE 18 -#define CMDLINE_KEY_WLEFT 19 -#define CMDLINE_KEY_WRIGHT 20 -#define CMDLINE_KEY_HELP 21 -#define CMDLINE_KEY_CTRL_W 22 -#define CMDLINE_KEY_CTRL_P 23 -#define CMDLINE_KEY_CTRL_N 24 -#define CMDLINE_KEY_META_D 25 - -extern const char *cmdline_vt100_commands[]; - -enum cmdline_vt100_parser_state { - CMDLINE_VT100_INIT, - CMDLINE_VT100_ESCAPE, - CMDLINE_VT100_ESCAPE_CSI -}; - -#define CMDLINE_VT100_BUF_SIZE 8 -struct cmdline_vt100 { - uint8_t bufpos; - char buf[CMDLINE_VT100_BUF_SIZE]; - enum cmdline_vt100_parser_state state; -}; - -/** - * Init - */ -void vt100_init(struct cmdline_vt100 *vt); - -/** - * Input a new character. - * Return -1 if the character is not part of a control sequence - * Return -2 if c is not the last char of a control sequence - * Else return the index in vt100_commands[] - */ -int vt100_parser(struct cmdline_vt100 *vt, char c); - -#ifdef __cplusplus -} -#endif - -#endif |