summaryrefslogtreecommitdiffstats
path: root/src/vlibapi
AgeCommit message (Expand)AuthorFilesLines
2019-03-25add api trace printezkexma1-1/+16
2019-03-15Revert "API: Cleanup APIs interface.api"Ole Trøan1-3/+1
2019-03-15API: Cleanup APIs interface.apiJakub Grajciar1-1/+3
2019-01-24perfmon plugin: 2-way parallel stat collectionDave Barach1-9/+2
2019-01-14api_helper_macro mp->pid is network endianOle Troan1-1/+1
2018-12-18VAPI/VOM: Removing legacy stats tests, add string type.Ole Troan1-4/+6
2018-12-17String type: Not include \0 in show_versionOle Troan1-0/+6
2018-12-14String type: Fix off by one errorOle Troan1-3/+2
2018-12-13API: Use string type instead of u8.Ole Troan3-0/+56
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach1-1/+1
2018-10-23c11 safe string handling supportDave Barach3-7/+7
2018-10-22X86_64 perf counter pluginDave Barach1-2/+9
2018-10-02PAPI: Use UNIX domain sockets instead of shared memoryOle Troan1-1/+1
2018-10-01API / CLI event-log tracingDave Barach1-45/+38
2018-09-07cmake: set packaging component for different filesDamjan Marion1-0/+2
2018-08-26cmake: add add_vpp_library and add_vpp_executable macrosDamjan Marion1-1/+5
2018-08-25cmake: add more headers to the install listDamjan Marion1-0/+19
2018-08-03svm: add support for eventfd signaling to queueFlorin Coras1-3/+0
2018-07-09IGMP improvementsNeale Ranns1-2/+2
2018-06-21Implement DHCPv6 IA NA client (VPP-1094)Juraj Sloboda1-1/+2
2018-06-14Fix SEGV in generic event sub reaperMatthew Smith1-1/+1
2018-06-13Stat segment / client: show run" works nowDave Barach2-2/+3
2018-06-08Add reaper functions to want events APIs (VPP-1304)Neale Ranns1-1/+19
2018-06-08Implement DHCPv6 PD client (VPP-718, VPP-1050)Juraj Sloboda1-1/+2
2018-06-05VPP API: Memory traceOle Troan2-0/+19
2018-03-16IPv6 ND Router discovery data plane (VPP-1095)Juraj Sloboda1-1/+2
2018-01-25session: add support for memfd segmentsFlorin Coras1-0/+1
2018-01-22svm: queue sub: Add conditional timed waitMohsin Kazmi1-1/+1
2018-01-09api: refactor vlibmemoryFlorin Coras6-303/+38
2018-01-05sock api: add infra for bootstrapping shm clientsFlorin Coras1-44/+20
2017-10-13VPP-1027: DNS name resolverDave Barach1-1/+16
2017-10-10API versioning: Fix coverity errors from strncpy()Ole Troan1-1/+1
2017-10-09vppapigen: support per-file (major,minor,patch) version stampsDave Barach3-0/+22
2017-10-06Coverity fixes for API socketChris Luke1-5/+7
2017-10-05Clean up "show api ring" debug CLIDave Barach1-1/+4
2017-10-03Repair vlib API socket serverDave Barach3-98/+167
2017-09-28General documentation updatesChris Luke1-37/+40
2017-09-27VPP-990 remove registered handler if control ping failsv18.01-rc0Matej Perina2-0/+13
2017-09-25Add binary API documentationDave Barach2-70/+471
2017-09-22IP-MAC,ND:wildcard events,fix sending multiple eventsEyal Bari1-0/+1
2017-09-20Improve API message handler re-registration checkDave Barach1-3/+5
2017-09-18L2BD,ARP-TERM:fix arp query report mechanism+testEyal Bari1-1/+2
2017-09-13API message table inspection utilitiesDave Barach1-0/+3
2017-09-11Recombine diags and minimum barrier open time changes (VPP-968)Colin Tregenza Dancer2-2/+14
2017-09-09move unix_file_* code to vppinfraDamjan Marion1-1/+1
2017-09-07Allow individual stats API and introduce stats.apiKeith Burns (alagalah)1-1/+0
2017-07-01Refactor API message handling codeKlement Sekera2-255/+293
2017-06-01Improve fifo allocator performanceDave Barach1-0/+3
2017-05-19Enforce Bridge Domain ID range to match 24-bit VNI rangeJohn Lo1-0/+14
2017-05-17Add vl_msg_api_get_message_length[_inline]Dave Barach2-0/+17
ss="k">if node['type'] == NodeType.DUT: self.vpp_set_if_ipv6_addr(node, port['if'], port['addr'], net['prefix']) def nodes_clear_ipv6_addresses(self, nodes, nodes_addr): """Remove IPv6 addresses from all VPP nodes in topology. :param nodes: Nodes of the test topology. :param nodes_addr: Available nodes IPv6 adresses. :type nodes: dict :type nodes_addr: dict """ for net in nodes_addr.values(): for port in net['ports'].values(): host = port.get('node') if host is None: continue topo = Topology() node = topo.get_node_by_hostname(nodes, host) if node is None: continue if node['type'] == NodeType.DUT: self.vpp_del_if_ipv6_addr(node, port['if'], port['addr'], net['prefix']) @staticmethod def linux_set_if_ipv6_addr(node, interface, addr, prefix): """Set IPv6 address on linux host. :param node: Linux node. :param interface: Node interface. :param addr: IPv6 address. :param prefix: IPv6 address prefix. :type node: dict :type interface: str :type addr: str :type prefix: str """ ssh = SSH() ssh.connect(node) cmd = "ifconfig {dev} inet6 add {ip}/{p} up".format(dev=interface, ip=addr, p=prefix) (ret_code, _, _) = ssh.exec_command_sudo(cmd) if int(ret_code) != 0: raise Exception('TG ifconfig failed') @staticmethod def linux_del_if_ipv6_addr(node, interface, addr, prefix): """Delete IPv6 address on linux host. :param node: Linux node. :param interface: Node interface. :param addr: IPv6 address. :param prefix: IPv6 address prefix. :type node: dict :type interface: str :type addr: str :type prefix: str """ ssh = SSH() ssh.connect(node) cmd = "ifconfig {dev} inet6 del {ip}/{p}".format(dev=interface, ip=addr, p=prefix) (ret_code, _, _) = ssh.exec_command_sudo(cmd) if int(ret_code) != 0: raise Exception('TG ifconfig failed') cmd = "ifconfig {dev} down".format(dev=interface) (ret_code, _, _) = ssh.exec_command_sudo(cmd) if int(ret_code) != 0: raise Exception('TG ifconfig failed') @staticmethod def vpp_set_if_ipv6_addr(node, interface, addr, prefix): """Set IPv6 address on VPP. :param node: VPP node. :param interface: Node interface. :param addr: IPv6 address. :param prefix: IPv6 address prefix. :type node: dict :type interface: str :type addr: str :type prefix: str """ ssh = SSH() ssh.connect(node) cmd = '{c}'.format(c=Constants.VAT_BIN_NAME) cmd_input = 'sw_interface_add_del_address {dev} {ip}/{p}'.format( dev=interface, ip=addr, p=prefix) (ret_code, _, _) = ssh.exec_command_sudo(cmd, cmd_input) if int(ret_code) != 0: raise Exception('VPP sw_interface_add_del_address failed on {h}' .format(h=node['host'])) cmd_input = 'sw_interface_set_flags {dev} admin-up'.format( dev=interface) (ret_code, _, _) = ssh.exec_command_sudo(cmd, cmd_input) if int(ret_code) != 0: raise Exception('VPP sw_interface_set_flags failed on {h}'.format( h=node['host'])) cmd_input = 'exec show int' (ret_code, stdout, stderr) = ssh.exec_command_sudo(cmd, cmd_input) logger.debug('ret: {0}'.format(ret_code)) logger.debug('stdout: {0}'.format(stdout)) logger.debug('stderr: {0}'.format(stderr)) @staticmethod def vpp_del_if_ipv6_addr(node, interface, addr, prefix): """Delete IPv6 address on VPP. :param node: VPP node. :param interface: Node interface. :param addr: IPv6 address. :param prefix: IPv6 address prefix. :type node: dict :type interface: str :type addr: str :type prefix: str """ ssh = SSH() ssh.connect(node) cmd = '{c}'.format(c=Constants.VAT_BIN_NAME) cmd_input = 'sw_interface_add_del_address {dev} {ip}/{p} del'.format( dev=interface, ip=addr, p=prefix) (ret_code, _, _) = ssh.exec_command_sudo(cmd, cmd_input) if int(ret_code) != 0: raise Exception( 'sw_interface_add_del_address failed on {h}'. format(h=node['host'])) cmd_input = 'sw_interface_set_flags {dev} admin-down'.format( dev=interface) (ret_code, _, _) = ssh.exec_command_sudo(cmd, cmd_input) if int(ret_code) != 0: raise Exception('VPP sw_interface_set_flags failed on {h}'.format( h=node['host'])) @staticmethod def vpp_ra_supress_link_layer(node, interface): """Supress ICMPv6 router advertisement message for link scope address :param node: VPP node. :param interface: Interface name. :type node: dict :type interface: str """ ssh = SSH() ssh.connect(node) cmd = '{c}'.format(c=Constants.VAT_BIN_NAME) cmd_input = 'exec ip6 nd {0} ra-surpress-link-layer'.format( interface) (ret_code, _, _) = ssh.exec_command_sudo(cmd, cmd_input) if int(ret_code) != 0: raise Exception("'{0}' failed on {1}".format(cmd_input, node['host'])) def vpp_all_ra_supress_link_layer(self, nodes): """Supress ICMPv6 router advertisement message for link scope address on all VPP nodes in the topology :param nodes: Nodes of the test topology. :type nodes: dict """ for node in nodes.values(): if node['type'] == NodeType.TG: continue for port_k, port_v in node['interfaces'].items(): if port_k == 'mgmt': continue if_name = port_v.get('name') if if_name is None: continue self.vpp_ra_supress_link_layer(node, if_name) @staticmethod def get_link_address(link, nodes_addr): """Get link IPv6 address. :param link: Link name. :param nodes_addr: Available nodes IPv6 adresses. :type link: str :type nodes_addr: dict :return: Link IPv6 address. :rtype: str """ net = nodes_addr.get(link) if net is None: raise ValueError('Link "{0}" address not found'.format(link)) return net.get('net_addr') @staticmethod def get_link_prefix(link, nodes_addr): """Get link IPv6 address prefix. :param link: Link name. :param nodes_addr: Available nodes IPv6 adresses. :type link: str :type nodes_addr: dict :return: Link IPv6 address prefix. :rtype: int """ net = nodes_addr.get(link) if net is None: raise ValueError('Link "{0}" address not found'.format(link)) return net.get('prefix')