summaryrefslogtreecommitdiffstats
path: root/src/plugins/map
AgeCommit message (Expand)AuthorFilesLines
2021-05-13tests: move test source to vpp/testDave Wallace2-1658/+0
2021-03-30map: tune dump/details test for socket transportOle Troan1-1/+1
2021-03-15tests: use socket transport instead of shared memoryOle Troan1-4/+5
2021-02-04api: Fold the empty pool check into the main macroNeale Ranns1-6/+0
2021-02-03vppapigen: Support an 'autoendian' keyword for message definitions inNeale Ranns2-3/+1
2020-12-14misc: refactor clib_bitmap_foreach macroDamjan Marion1-3/+3
2020-12-14misc: move to new pool_foreach macrosDamjan Marion2-9/+9
2020-11-30map: add include guard to map.hPaul Vinciguerra1-0/+4
2020-11-25api: vat2 and json autogeneration for api messagesOle Troan1-1/+4
2020-10-13stats: counters data modelOle Troan6-68/+128
2020-09-16api: clean up use of deprecated flagOle Troan1-1/+1
2020-09-01ip: fix ip zero checksum verificationBenoît Ganne1-1/+1
2020-07-16adl: move allow/deny list function to pluginDave Barach1-2/+2
2020-05-27api: make vpp api handlers endian independentOle Troan1-4/+7
2020-05-25api: add new stream message conventionOle Troan3-30/+122
2020-04-28tests: move defaults from defaultmapping to .api filesPaul Vinciguerra1-2/+2
2020-03-25map: fix hop limit expiration at brVladimir Ratnikov2-2/+29
2020-03-24map: fix translation of icmp6 error messagesAlexander Chernavin1-1/+80
2020-03-15map: fix translation of icmp4 error messagesAlexander Chernavin2-6/+51
2020-03-04map: fix map port calculation for ICMPVladimir Isaev4-14/+78
2020-02-26map: handle IPv6 extension headers for TCP/UDPVladimir Isaev1-2/+2
2020-02-20map: honor pre-resolve param in map-tAlexander Chernavin6-30/+154
2020-02-20map: honor icmp6-unreachables param in map-tAlexander Chernavin2-2/+47
2020-02-04ip: translate fragmented icmp to fragmented icmp6Alexander Chernavin1-7/+32
2020-01-30map: Add several more MAP-T BR testsJon Loeliger1-8/+294
2020-01-30map: Prevent IPv4 prefix spoofing during IPv6 -> IPv4Jon Loeliger2-2/+279
2020-01-30map: handle ip4 ttl=1 packets in map-tAlexander Chernavin3-10/+20
2020-01-29tests: add map-t fragmentation verificationsAlexander Chernavin1-10/+36
2020-01-28map: ip4-map-t more RFC compliantVladimir Ratnikov1-8/+20
2020-01-27map: api: fix tag overflow and leakBenoît Ganne2-4/+6
2020-01-10docs: Edit FEATURE.yaml files so they can be publishedJohn DeNisco1-2/+2
2020-01-03map: fix ip4-map-t DF behaviorVladimir Ratnikov1-11/+12
2020-01-03nat: use SVRKlement Sekera2-17/+20
2019-12-14tests: changes for scapy 2.4.3 migrationsnaramre1-1/+2
2019-12-07map: use explicit types in apiOle Troan1-2/+3
2019-12-05map: fix MAP-T ip6 port checkMatthew Smith2-5/+60
2019-12-04map: Fix a coverity MAP dead-code issue.Jon Loeliger1-3/+0
2019-12-03map: Avoid null dereference in 'map show' and 'map del'Jon Loeliger1-12/+22
2019-11-26map: Fix inverted 'map security check enable' CLI flag.Jon Loeliger1-2/+2
2019-11-19map: fix coverity issue 205684Andrew Yourtchenko1-2/+2
2019-11-19map: Fix TCP MSS clamping for MAP-E traffic.Jon Loeliger2-2/+84
2019-11-15tests: Remove the unrequired VPP IP address/prefix class wrappersNeale Ranns1-1/+0
2019-11-11ip: functional interface to ip fragmentationOle Troan5-214/+148
2019-11-06build: add yaml file linting to make checkstylePaul Vinciguerra1-1/+2
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto3-3/+3
2019-10-18map: python3 support in testsOle Troan1-8/+8
2019-10-09map: use ip6-full-reassembly instead of own codeKlement Sekera6-978/+30
2019-10-03map: fix DF[Don't fragment] ip4-map-t behaviourVladimir Ratnikov1-0/+11
2019-10-03map: fix indent-offKlement Sekera1-121/+133
2019-10-01map: use SVR for MAP-TKlement Sekera9-624/+69
="n">sm, (char **) &demo2->string1); unserialize_cstring (sm, (char **) &demo2->string2); *result = demo1; } void serialize_demo1 (serialize_main_t * sm, va_list * args) { demo_struct1_t *demo1 = va_arg (*args, demo_struct1_t *); demo_struct2_t *demo2 = demo1->demo2; serialize_cstring (sm, (char *) demo1->name); serialize_cstring (sm, (char *) demo2->string1); serialize_cstring (sm, (char *) demo2->string2); } /* Serialize / unserialize variant */ clib_error_t * persist_serialize (persist_main_t * pm) { u8 *checkpoint; serialize_main_t sm; demo_struct2_t *demo2; demo_struct1_t *demo1; time_t starttime = time (0); char *datestring = ctime (&starttime); /* Get back the root pointer */ checkpoint = svmdb_local_get_vec_variable (pm->c, "demo1_checkpoint", sizeof (u8)); /* It doesnt exist create our data structures */ if (checkpoint == 0) { /* Allocate data structures in process-private memory */ demo1 = clib_mem_alloc (sizeof (*demo2)); vec_validate (demo1, 0); demo2 = clib_mem_alloc (sizeof (*demo2)); demo1->demo2 = demo2; demo1->name = format (0, "My name is Ishmael%c", 0); demo2->string1 = format (0, "Here is string1%c", 0); demo2->string2 = format (0, "Born at %s%c", datestring, 0); /* Create checkpoint */ serialize_open_vector (&sm, checkpoint); serialize (&sm, serialize_demo1, demo1); checkpoint = serialize_close_vector (&sm); /* Copy checkpoint into shared memory */ svmdb_local_set_vec_variable (pm->c, "demo1_checkpoint", checkpoint, sizeof (u8)); /* Toss the process-private-memory original.. */ vec_free (checkpoint); } else { /* Open the checkpoint */ unserialize_open_data (&sm, checkpoint, vec_len (checkpoint)); unserialize (&sm, unserialize_demo1, &demo1); /* Toss the process-private-memory checkpoint copy */ vec_free (checkpoint); /* Off we go... */ demo2 = demo1->demo2; fformat (stdout, "name: %s\n", demo1->name); fformat (stdout, "demo2 location: %llx\n", demo2); fformat (stdout, "string1: %s\n", demo2->string1); fformat (stdout, "string2: %s\n", demo2->string2); } return 0; } int main (int argc, char **argv) { unformat_input_t _input, *input = &_input; persist_main_t *pm = &persist_main; clib_error_t *error = 0; /* Make a 4mb database arena, chroot so it's truly private */ pm->c = svmdb_map_chroot_size ("/ptest", 4 << 20); ASSERT (pm->c); unformat_init_command_line (input, argv); while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT) { if (unformat (input, "malloc")) error = persist_malloc (pm); else if (unformat (input, "serialize")) error = persist_serialize (pm); else { error = clib_error_return (0, "Unknown flavor '%U'", format_unformat_error, input); break; } } svmdb_unmap (pm->c); if (error) { clib_error_report (error); exit (1); } return 0; } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */