summaryrefslogtreecommitdiffstats
path: root/src/vnet/lisp-cp
AgeCommit message (Expand)AuthorFilesLines
2017-05-30LISP: L2 ARP handlingFilip Tehlar9-36/+600
2017-05-04Fix coverity issueFilip Tehlar1-0/+2
2017-05-04LISP: group mapping records in map-register messageFilip Tehlar1-6/+19
2017-05-03Fix vnet unit testsFilip Tehlar4-22/+40
2017-04-27LISP: fix deleting of locators, VPP-713Filip Tehlar1-0/+4
2017-04-25"autoreply" flag: autogenerate standard xxx_reply_t messagesDave Barach2-319/+30
2017-04-25LISP: clean DP when deleting locators in useFilip Tehlar1-14/+76
2017-04-13LISP: make statistics thread safeFilip Tehlar4-9/+41
2017-04-11LISP: show mapping negative action in CLIFilip Tehlar1-2/+3
2017-04-05LISP: fix crash when GPE interface is re-added, VPP-685Filip Tehlar1-3/+3
2017-03-30LISP: Do not show P-ITR generated mappingFilip Tehlar2-0/+6
2017-03-22LISP: improve DP speedFilip Tehlar1-0/+1
2017-03-21LISP statisticsFilip Tehlar6-24/+231
2017-03-10LISP: fix Proxy-ETR show command, VPP-660Filip Tehlar3-8/+38
2017-03-10VPP-608 Fix LISP warningFlorin Coras1-0/+1
2017-03-08LISP: add stats API/CLIFilip Tehlar5-0/+175
2017-03-02VPP-648: CLI Memory leak with invalid parameterBilly McFall1-28/+86
2017-03-01VPP-598: tcp stack initial commitDave Barach2-105/+5
2017-02-22Fix LISP and ONE crc marcosFilip Tehlar3-11/+26
2017-02-22VPP-635: CLI Memory leak with invalid parameterBilly McFall1-35/+104
2017-02-21Add Overlay Network Engine APIFilip Tehlar5-3/+3772
2017-02-20LISP: don't show PITR generated mapping in dump callFilip Tehlar4-3/+15
2017-02-16Add NSH load-balance and drop DPOFlorin Coras1-9/+34
2017-02-16LISP: minor enhacementsFilip Tehlar1-13/+13
2017-02-15LISP: fix deleting src/dst entry from GID dictionaryFilip Tehlar2-5/+24
2017-02-13Basic support for LISP-GPE encapsulated NSH packetsFlorin Coras5-2/+95
2017-02-07LISP: reject remote mappings that have as locators local IPsFilip Tehlar1-0/+27
2017-02-02LISP: enhance binary part of some APIsFilip Tehlar2-44/+35
2017-01-30Fix LISP Coverity warningsFlorin Coras2-6/+16
2017-01-30LISP: add dump calls for GPE entries APIFilip Tehlar1-2/+1
2017-01-26Add option to use LISP Proxy-ETRFlorin Coras5-37/+349
2017-01-25Move LISP cp cli to separate fileFlorin Coras3-1415/+1460
2017-01-23LISP: add RLOC and map-notify countersFilip Tehlar1-20/+97
2017-01-16LISP: Enhance IPx offset computingFilip Tehlar1-31/+32
2017-01-10Fix LISP Coverity warningFlorin Coras1-1/+1
2017-01-04LISP: make data plane programming thread safeFilip Tehlar1-1/+30
2017-01-03LISP: fix EID additionFilip Tehlar1-2/+5
2017-01-03LISP: fix fwd entry additionFilip Tehlar1-1/+1
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion15-0/+11825
f">vec_aligned_header (void *v, uword header_bytes, uword align) { return v - vec_aligned_header_bytes (header_bytes, align); } always_inline void * vec_aligned_header_end (void *v, uword header_bytes, uword align) { return v + vec_aligned_header_bytes (header_bytes, align); } /** \brief Number of elements in vector (lvalue-capable) _vec_len (v) does not check for null, but can be used as an lvalue (e.g. _vec_len (v) = 99). */ #define _vec_len(v) (_vec_find(v)->len) /** \brief Number of elements in vector (rvalue-only, NULL tolerant) vec_len (v) checks for NULL, but cannot be used as an lvalue. If in doubt, use vec_len... */ #define vec_len(v) ((v) ? _vec_len(v) : 0) /** \brief Vector's NUMA id (lvalue-capable) _vec_numa(v) does not check for null, but can be used as an lvalue (e.g. _vec_numa(v) = 1). */ #define _vec_numa(v) (_vec_find(v)->numa_id) /** \brief Return vector's NUMA ID (rvalue-only, NULL tolerant) vec_numa(v) checks for NULL, but cannot be used as an lvalue. */ #define vec_numa(v) ((v) ? _vec_numa(v) : 0) /** \brief Number of data bytes in vector. */ #define vec_bytes(v) (vec_len (v) * sizeof (v[0])) /** \brief Total number of bytes that can fit in vector with current allocation. */ #define vec_capacity(v,b) \ ({ \ void * _vec_capacity_v = (void *) (v); \ uword _vec_capacity_b = (b); \ _vec_capacity_b = sizeof (vec_header_t) + _vec_round_size (_vec_capacity_b); \ _vec_capacity_v ? clib_mem_size (_vec_capacity_v - _vec_capacity_b) : 0; \ }) /** \brief Total number of elements that can fit into vector. */ #define vec_max_len(v) (vec_capacity(v,0) / sizeof (v[0])) /** \brief Set vector length to a user-defined value */ #ifndef __COVERITY__ /* Coverity gets confused by ASSERT() */ #define vec_set_len(v, l) do { \ ASSERT(v); \ ASSERT((l) <= vec_max_len(v)); \ CLIB_MEM_POISON_LEN((void *)(v), _vec_len(v) * sizeof((v)[0]), (l) * sizeof((v)[0])); \ _vec_len(v) = (l); \ } while (0) #else /* __COVERITY__ */ #define vec_set_len(v, l) do { \ _vec_len(v) = (l); \ } while (0) #endif /* __COVERITY__ */ /** \brief Reset vector length to zero NULL-pointer tolerant */ #define vec_reset_length(v) do { if (v) vec_set_len (v, 0); } while (0) /** \brief End (last data address) of vector. */ #define vec_end(v) ((v) + vec_len (v)) /** \brief True if given pointer is within given vector. */ #define vec_is_member(v,e) ((e) >= (v) && (e) < vec_end (v)) /** \brief Get vector value at index i checking that i is in bounds. */ #define vec_elt_at_index(v,i) \ ({ \ ASSERT ((i) < vec_len (v)); \ (v) + (i); \ }) /** \brief Get vector value at index i */ #define vec_elt(v,i) (vec_elt_at_index(v,i))[0] /** \brief Vector iterator */ #define vec_foreach(var,vec) for (var = (vec); var < vec_end (vec); var++) /** \brief Vector iterator (reverse) */ #define vec_foreach_backwards(var,vec) \ for (var = vec_end (vec) - 1; var >= (vec); var--) /** \brief Iterate over vector indices. */ #define vec_foreach_index(var,v) for ((var) = 0; (var) < vec_len (v); (var)++) /** \brief Iterate over vector indices (reverse). */ #define vec_foreach_index_backwards(var,v) \ for ((var) = vec_len((v)) - 1; (var) >= 0; (var)--) /** \brief return the NUMA index for a vector */ always_inline uword vec_get_numa (void *v) { vec_header_t *vh; if (v == 0) return 0; vh = _vec_find (v); return vh->numa_id; } #endif /* included_clib_vec_bootstrap_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */