aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/lisp-gpe
AgeCommit message (Expand)AuthorFilesLines
2019-04-08fixing typosJim Thompson1-1/+1
2018-12-07FIB recusrion loop checks traverse midchain adjacenciesNeale Ranns1-44/+10
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach1-1/+1
2018-10-23c11 safe string handling supportDave Barach7-30/+30
2018-10-22lisp-gpe: register udp port only if enabled (VPP-1468)Florin Coras1-5/+7
2018-09-25L2 BD: introduce a BD interface on which to send UU packetsNeale Ranns1-2/+2
2018-08-15Remove client_index field from replies in APIOndrej Fabry1-1/+0
2018-08-14Fix context field position in API definitionOndrej Fabry1-1/+1
2018-07-11avoid using thread local storage for thread indexDamjan Marion2-2/+2
2018-01-30Allow the provider of a midchain adjacency to pass context data that is retur...Neale Ranns1-1/+3
2018-01-23VPPAPIGEN: vppapigen replacement in Python PLY.Ole Troan1-1/+1
2018-01-11api: remove transport specific code from handlersFlorin Coras1-4/+4
2018-01-09api: refactor vlibmemoryFlorin Coras1-1/+1
2017-12-11ONE-33 "one statistics flush" throws assert when one counter not addedSwarup Nayak1-0/+3
2017-12-09BIER in non-MPLS netowrksNeale Ranns1-0/+2
2017-12-02gpe: fix gpe enable/disable commandFlorin Coras1-1/+1
2017-10-31LISP: add P-ITR/P-ETR/xTR API handlers, ONE-24Filip Tehlar6-9/+19
2017-10-24Add extern to *_main global variable declarations in header files.Dave Wallace1-1/+1
2017-10-09vppapigen: support per-file (major,minor,patch) version stampsDave Barach1-0/+2
2017-10-04[aarch64] Fixes CLI crashes on dpaa2 platform.Christophe Fontaine4-10/+10
2017-09-13gpe: initialize fib index for native forward entriesFlorin Coras1-4/+6
2017-09-11FIB table add/delete APINeale Ranns3-9/+22
2017-09-04LISP: re-fetch mapping before it expiresFilip Tehlar3-14/+58
2017-08-23Remove unused retval from gpe_native_fwd_rpath type definitionMarek Gradzki1-2/+0
2017-08-23gpe: add l2 lb countersFlorin Coras1-1/+5
2017-08-18gpe: fix sub-interface hash lookupFlorin Coras2-10/+10
2017-08-08L2 over MPLSNeale Ranns3-13/+15
2017-06-16LISP-GPE: add test CLI for NSHFilip Tehlar2-0/+132
2017-06-16Fix vni/dp_table endianness for gpe iface addition (VPP-882)Florin Coras1-6/+8
2017-06-16Fix gpe_native_fwd_rpaths_get (VPP-883)Florin Coras1-1/+3
2017-06-15Add VAT handlers for LISP-GPE APIFilip Tehlar2-11/+24
2017-06-09Fix gpe coverity issue (VPP-874)Florin Coras1-3/+8
2017-06-08LISP: add NSH supportFilip Tehlar2-4/+7
2017-06-08Add gpe native-forward static route supportFlorin Coras5-16/+402
2017-06-06Fix coverity issueFilip Tehlar1-0/+3
2017-06-05LISP-GPE: return index of newly created fwd entry, VPP-868Filip Tehlar4-2/+20
2017-06-05LISP: fix GPE entry dump, VPP-871Filip Tehlar1-5/+5
2017-05-26LISP: do not try to delete paths when fwd entry is negativeFilip Tehlar1-4/+7
2017-05-22LISP-GPE: add dump call for VNIs in useFilip Tehlar5-1/+74
2017-05-19Enforce Bridge Domain ID range to match 24-bit VNI rangeJohn Lo1-0/+6
2017-05-10completelly deprecate os_get_cpu_number, replace new occurencesDamjan Marion1-1/+1
2017-05-07Remove L2 GPE interface from bridge when deleting, VPP-833Florin Coras1-0/+6
2017-04-25"autoreply" flag: autogenerate standard xxx_reply_t messagesDave Barach1-44/+4
2017-04-24BD:unify bridge domain creation codeEyal Bari1-4/+3
2017-04-13Remove unsed parameter from fib_table_entry_special_add() (only used in FIB t...Neale Ranns1-2/+1
2017-04-13LISP: make statistics thread safeFilip Tehlar5-41/+65
2017-04-07MPLS McastNeale Ranns1-0/+1
2017-04-07Fix gpe dp args to allow for 32 bit bridge domain ids, VPP-690Florin Coras1-1/+1
2017-04-06Use thread local storage for thread indexDamjan Marion1-8/+8
2017-04-05LISP: fix crash when adding a negative forwarding entry, VPP-681Filip Tehlar1-15/+14
} unformat_input_t; always_inline void unformat_init (unformat_input_t * i, uword (*fill_buffer) (unformat_input_t *), void *fill_buffer_arg) { clib_memset (i, 0, sizeof (i[0])); i->fill_buffer = fill_buffer; i->fill_buffer_arg = fill_buffer_arg; } always_inline void unformat_free (unformat_input_t * i) { vec_free (i->buffer); vec_free (i->buffer_marks); clib_memset (i, 0, sizeof (i[0])); } always_inline uword unformat_check_input (unformat_input_t * i) { /* Low level fill input function. */ extern uword _unformat_fill_input (unformat_input_t * i); if (i->index >= vec_len (i->buffer) && i->index != UNFORMAT_END_OF_INPUT) _unformat_fill_input (i); return i->index; } /* Return true if input is exhausted */ always_inline uword unformat_is_eof (unformat_input_t * input) { return unformat_check_input (input) == UNFORMAT_END_OF_INPUT; } /* Return next element in input vector, possibly calling fill input to get more. */ always_inline uword unformat_get_input (unformat_input_t * input) { uword i = unformat_check_input (input); if (i < vec_len (input->buffer)) { input->index = i + 1; i = input->buffer[i]; } return i; } /* Back up input pointer by one. */ always_inline void unformat_put_input (unformat_input_t * input) { input->index -= 1; } /* Peek current input character without advancing. */ always_inline uword unformat_peek_input (unformat_input_t * input) { uword c = unformat_get_input (input); if (c != UNFORMAT_END_OF_INPUT) unformat_put_input (input); return c; } /* Skip current input line. */ always_inline void unformat_skip_line (unformat_input_t * i) { uword c; while ((c = unformat_get_input (i)) != UNFORMAT_END_OF_INPUT && c != '\n') ; } uword unformat_skip_white_space (unformat_input_t * input); /* Unformat function. */ typedef uword (unformat_function_t) (unformat_input_t * input, va_list * args); /* External functions. */ /* General unformatting function with programmable input stream. */ uword unformat (unformat_input_t * i, const char *fmt, ...); /* Call user defined parse function. unformat_user (i, f, ...) is equivalent to unformat (i, "%U", f, ...) */ uword unformat_user (unformat_input_t * input, unformat_function_t * func, ...); /* Alternate version which allows for extensions. */ uword va_unformat (unformat_input_t * i, const char *fmt, va_list * args); /* Setup for unformat of Unix style command line. */ void unformat_init_command_line (unformat_input_t * input, char *argv[]); /* Setup for unformat of given string. */ void unformat_init_string (unformat_input_t * input, char *string, int string_len); always_inline void unformat_init_cstring (unformat_input_t * input, char *string) { unformat_init_string (input, string, strlen (string)); } /* Setup for unformat of given vector string; vector will be freed by unformat_string. */ void unformat_init_vector (unformat_input_t * input, u8 * vector_string); /* Format function for unformat input usable when an unformat error has occurred. */ u8 *format_unformat_error (u8 * s, va_list * va); #define unformat_parse_error(input) \ clib_error_return (0, "parse error `%U'", format_unformat_error, input) /* Print all input: not just error context. */ u8 *format_unformat_input (u8 * s, va_list * va); /* Unformat (parse) function which reads a %s string and converts it to and unformat_input_t. */ unformat_function_t unformat_input; /* Parse a line ending with \n and return it. */ unformat_function_t unformat_line; /* Parse a line ending with \n and return it as an unformat_input_t. */ unformat_function_t unformat_line_input; /* Parse a token containing given set of characters. */ unformat_function_t unformat_token; /* Parses a hexstring into a vector of bytes. */ unformat_function_t unformat_hex_string; /* Returns non-zero match if input is exhausted. Useful to ensure that the entire input matches with no trailing junk. */ unformat_function_t unformat_eof; /* Parse memory size e.g. 100, 100k, 100m, 100g. */ unformat_function_t unformat_memory_size; /* Unparse memory size e.g. 100, 100k, 100m, 100g. */ u8 *format_memory_size (u8 * s, va_list * va); /* Format c identifier: e.g. a_name -> "a name". */ u8 *format_c_identifier (u8 * s, va_list * va); /* Format hexdump with both hex and printable chars - compatible with text2pcap */ u8 *format_hexdump (u8 * s, va_list * va); /* Unix specific formats. */ #ifdef CLIB_UNIX /* Setup input from Unix file. */ void unformat_init_clib_file (unformat_input_t * input, int file_descriptor); /* Take input from Unix environment variable; returns 1 if variable exists zero otherwise. */ uword unformat_init_unix_env (unformat_input_t * input, char *var); /* Unformat unix group id (gid) specified as integer or string */ unformat_function_t unformat_unix_gid; #endif /* CLIB_UNIX */ uword unformat_data_size (unformat_input_t * input, va_list * args); /* Test code. */ int test_format_main (unformat_input_t * input); int test_unformat_main (unformat_input_t * input); /* This is not the right place for this, but putting it in vec.h created circular dependency problems. */ int test_vec_main (unformat_input_t * input); #endif /* included_format_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */