summaryrefslogtreecommitdiffstats
path: root/extras
AgeCommit message (Expand)AuthorFilesLines
2019-02-22VOM: GBP use singular instance if shared-ptr is setNeale Ranns2-3/+20
2019-02-22VOM: mroute dump debug level fixNeale Ranns1-1/+1
2019-02-22VOM: De-template the ACL code.Neale Ranns8-215/+709
2019-02-22VOM: fix tests and namespacify l2_vtrNeale Ranns9-56/+63
2019-02-20vom: Fix the versioning issue [vpp-1555]Mohsin Kazmi2-0/+11
2019-02-19VPP-1504: Remove JVPPMichal Cmarada120-10600/+1
2019-02-19VOM: no assert on interface mac setNeale Ranns2-2/+3
2019-02-14deb-pkg: Add libvom package supportMohsin Kazmi1-11/+5
2019-02-13vom: Add support for vtr in xconnectMohsin Kazmi11-138/+294
2019-02-13VOM: neighbour API flagsNeale Ranns8-25/+131
2019-02-05VOM: vxlan_tunnel equals operatorNeale Ranns2-1/+12
2019-01-31Update version (19.01) for API changes scriptAndrew Yourtchenko1-2/+2
2019-01-31extras: vfctl script - bind VF to vfio-pci after VF is createdDamjan Marion1-0/+10
2019-01-30Use IP and MAC API types for neighborsNeale Ranns7-29/+56
2019-01-25deprecate tapcliDamjan Marion5-7/+0
2019-01-22GBP: Sclass to src-epg conversionsNeale Ranns8-16/+96
2019-01-22VOM: GBP bridge domain flagsNeale Ranns8-23/+69
2019-01-17VOM: ip-mroute inspect register handler fixNeale Ranns1-1/+2
2019-01-17DOC ONLY: wireshark dissector upstreamedDave Barach1-84/+0
2019-01-16DOC ONLY: update readme.mdDave Barach3-469/+28
2019-01-10vpp_config: Rework for Python2/3 compatibility.Paul Vinciguerra12-406/+554
2019-01-10VOM: IP route ECMP supportNeale Ranns3-24/+56
2019-01-09Use the official libpcap file typeDave Barach1-1/+1
2019-01-07VOM: mroutesNeale Ranns12-117/+1306
2019-01-04libmemif: fix incorrect write leading to memory corruptionKoichiro Den1-3/+3
2019-01-04VPP-1525: additional fixes for strings in JapiMichal Cmarada5-21/+104
2018-12-24GBP: fix dump and VOM populateNeale Ranns12-205/+96
2018-12-23VOM: statsNeale Ranns7-47/+87
2018-12-21GBP: add allowed ethertypes to contractsNeale Ranns6-93/+138
2018-12-19VOM: stats fixesNeale Ranns6-83/+88
2018-12-19VOM: VXLAN-GBP command fixesNeale Ranns3-6/+9
2018-12-19VOM: GBP-bridge-domain fixNeale Ranns2-14/+8
2018-12-19Allow the user to select master or release during the installjdenisco3-51/+38
2018-12-18VAPI/VOM: Removing legacy stats tests, add string type.Ole Troan2-9/+10
2018-12-18Build changes required for Fedora and CentOSThomas F Herbert1-7/+8
2018-12-18PAPI: Add MACAddress object wrapper for vl_api_mac_address_tOle Troan5-13/+9
2018-12-18Remove autotools files from extras/libmemifMauro Sardara3-117/+0
2018-12-17VOM: IGMP only supports IPv4Neale Ranns7-19/+73
2018-12-17libmemif: fix possible segfault on memif_get_detailsKoichiro Den1-31/+28
2018-12-17Added CMake building system for libmemifmsardara12-69/+367
2018-12-16VOM: fixes for statsNeale Ranns4-10/+9
2018-12-13API: Use string type instead of u8.Ole Troan15-40/+122
2018-12-13vom: Add support for new statsMohsin Kazmi13-266/+990
2018-12-12VOM: vxlan-tunnel takes egress interface for multicastNeale Ranns6-17/+49
2018-12-10VOM: vxlan-gbpNeale Ranns11-100/+522
2018-12-07vpp_if_stats: Fixing a bug in getting vpp interfaces indexesKoren Lev2-10/+10
2018-12-07vom: Fix the api type definitionMohsin Kazmi1-2/+4
2018-12-06API: Change ip4_address and ip6_address to use type alias.Ole Troan6-54/+19
2018-12-06Update japi to support type aliasesMichal Cmarada5-32/+126
2018-12-05VOM: interface event structNeale Ranns7-5/+72
ss="p">; rmp->psid_offset = d->psid_offset; rmp->psid_length = d->psid_length; clib_memcpy(rmp->ip4_prefix, &d->ip4_prefix, sizeof(rmp->ip4_prefix)); rmp->ip4_prefix_len = d->ip4_prefix_len; clib_memcpy(rmp->ip6_prefix, &d->ip6_prefix, sizeof(rmp->ip6_prefix)); rmp->ip6_prefix_len = d->ip6_prefix_len; clib_memcpy(rmp->ip6_src, &d->ip6_src, sizeof(rmp->ip6_src)); rmp->ip6_src_len = d->ip6_src_len; rmp->mtu = htons(d->mtu); rmp->is_translation = (d->flags & MAP_DOMAIN_TRANSLATION); rmp->context = mp->context; vl_msg_api_send_shmem (q, (u8 *)&rmp); })); /* *INDENT-ON* */ } static void vl_api_map_rule_dump_t_handler (vl_api_map_rule_dump_t * mp) { unix_shared_memory_queue_t *q; u16 i; ip6_address_t dst; vl_api_map_rule_details_t *rmp; map_main_t *mm = &map_main; u32 domain_index = ntohl (mp->domain_index); map_domain_t *d; if (pool_elts (mm->domains) == 0) return; d = pool_elt_at_index (mm->domains, domain_index); if (!d || !d->rules) { return; } q = vl_api_client_index_to_input_queue (mp->client_index); if (q == 0) { return; } for (i = 0; i < (0x1 << d->psid_length); i++) { dst = d->rules[i]; if (dst.as_u64[0] == 0 && dst.as_u64[1] == 0) { continue; } rmp = vl_msg_api_alloc (sizeof (*rmp)); memset (rmp, 0, sizeof (*rmp)); rmp->_vl_msg_id = ntohs (VL_API_MAP_RULE_DETAILS); rmp->psid = htons (i); clib_memcpy (rmp->ip6_dst, &dst, sizeof (rmp->ip6_dst)); rmp->context = mp->context; vl_msg_api_send_shmem (q, (u8 *) & rmp); } } static void vl_api_map_summary_stats_t_handler (vl_api_map_summary_stats_t * mp) { vl_api_map_summary_stats_reply_t *rmp; vlib_combined_counter_main_t *cm; vlib_counter_t v; int i, which; u64 total_pkts[VLIB_N_RX_TX]; u64 total_bytes[VLIB_N_RX_TX]; map_main_t *mm = &map_main; unix_shared_memory_queue_t *q = vl_api_client_index_to_input_queue (mp->client_index); if (!q) return; rmp = vl_msg_api_alloc (sizeof (*rmp)); rmp->_vl_msg_id = ntohs (VL_API_MAP_SUMMARY_STATS_REPLY); rmp->context = mp->context; rmp->retval = 0; memset (total_pkts, 0, sizeof (total_pkts)); memset (total_bytes, 0, sizeof (total_bytes)); map_domain_counter_lock (mm); vec_foreach (cm, mm->domain_counters) { which = cm - mm->domain_counters; for (i = 0; i < vec_len (cm->maxi); i++) { vlib_get_combined_counter (cm, i, &v); total_pkts[which] += v.packets; total_bytes[which] += v.bytes; } } map_domain_counter_unlock (mm); /* Note: in network byte order! */ rmp->total_pkts[MAP_DOMAIN_COUNTER_RX] = clib_host_to_net_u64 (total_pkts[MAP_DOMAIN_COUNTER_RX]); rmp->total_bytes[MAP_DOMAIN_COUNTER_RX] = clib_host_to_net_u64 (total_bytes[MAP_DOMAIN_COUNTER_RX]); rmp->total_pkts[MAP_DOMAIN_COUNTER_TX] = clib_host_to_net_u64 (total_pkts[MAP_DOMAIN_COUNTER_TX]); rmp->total_bytes[MAP_DOMAIN_COUNTER_TX] = clib_host_to_net_u64 (total_bytes[MAP_DOMAIN_COUNTER_TX]); rmp->total_bindings = clib_host_to_net_u64 (pool_elts (mm->domains)); rmp->total_ip4_fragments = 0; // Not yet implemented. Should be a simple counter. rmp->total_security_check[MAP_DOMAIN_COUNTER_TX] = clib_host_to_net_u64 (map_error_counter_get (ip4_map_node.index, MAP_ERROR_ENCAP_SEC_CHECK)); rmp->total_security_check[MAP_DOMAIN_COUNTER_RX] = clib_host_to_net_u64 (map_error_counter_get (ip4_map_node.index, MAP_ERROR_DECAP_SEC_CHECK)); vl_msg_api_send_shmem (q, (u8 *) & rmp); } /* * vpe_api_hookup * Add vpe's API message handlers to the table. * vlib has alread mapped shared memory and * added the client registration handlers. * See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process() */ #define vl_msg_name_crc_list #include <vnet/vnet_all_api_h.h> #undef vl_msg_name_crc_list static void setup_message_id_table (api_main_t * am) { #define _(id,n,crc) vl_msg_api_add_msg_name_crc (am, #n "_" #crc, id); foreach_vl_msg_name_crc_map; #undef _ } static clib_error_t * map_api_hookup (vlib_main_t * vm) { api_main_t *am = &api_main; #define _(N,n) \ vl_msg_api_set_handlers(VL_API_##N, #n, \ vl_api_##n##_t_handler, \ vl_noop_handler, \ vl_api_##n##_t_endian, \ vl_api_##n##_t_print, \ sizeof(vl_api_##n##_t), 1); foreach_vpe_api_msg; #undef _ /* * Set up the (msg_name, crc, message-id) table */ setup_message_id_table (am); return 0; } VLIB_API_INIT_FUNCTION (map_api_hookup); /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */