+ :param value: Buffers data-size allocated.
+ :type value: int
+ """
+ path = [u"buffers", u"default data-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_dev(self, *devices):
+ """Add DPDK PCI device configuration.
+
+ :param devices: PCI device(s) (format xxxx:xx:xx.x)
+ :type devices: tuple
+ """
+ for device in devices:
+ if pci_dev_check(device):
+ path = [u"dpdk", f"dev {device}"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_dpdk_cryptodev(self, count):
+ """Add DPDK Crypto PCI device configuration.
+
+ :param count: Number of HW crypto devices to add.
+ :type count: int
+ """
+ cryptodev = Topology.get_cryptodev(self._node)
+ for i in range(count):
+ cryptodev_config = re.sub(r"\d.\d$", f"1.{str(i)}", cryptodev)
+ path = [u"dpdk", f"dev {cryptodev_config}"]
+ self.add_config_item(self._nodeconfig, u"", path)
+ self.add_dpdk_uio_driver(u"vfio-pci")
+
+ def add_dpdk_sw_cryptodev(self, sw_pmd_type, socket_id, count):
+ """Add DPDK SW Crypto device configuration.
+
+ :param sw_pmd_type: Type of SW crypto device PMD to add.
+ :param socket_id: Socket ID.
+ :param count: Number of SW crypto devices to add.
+ :type sw_pmd_type: str
+ :type socket_id: int
+ :type count: int
+ """
+ for _ in range(count):
+ cryptodev_config = f"vdev cryptodev_{sw_pmd_type}_pmd," \
+ f"socket_id={str(socket_id)}"
+ path = [u"dpdk", cryptodev_config]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_dpdk_dev_default_rxq(self, value):
+ """Add DPDK dev default rxq configuration.
+
+ :param value: Default number of rxqs.
+ :type value: str
+ """
+ path = [u"dpdk", u"dev default", u"num-rx-queues"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_dev_default_txq(self, value):
+ """Add DPDK dev default txq configuration.
+
+ :param value: Default number of txqs.
+ :type value: str
+ """
+ path = [u"dpdk", u"dev default", u"num-tx-queues"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_dev_default_rxd(self, value):
+ """Add DPDK dev default rxd configuration.
+
+ :param value: Default number of rxds.
+ :type value: str
+ """
+ path = [u"dpdk", u"dev default", u"num-rx-desc"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_dev_default_txd(self, value):
+ """Add DPDK dev default txd configuration.
+
+ :param value: Default number of txds.
+ :type value: str
+ """
+ path = [u"dpdk", u"dev default", u"num-tx-desc"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_log_level(self, value):
+ """Add DPDK log-level configuration.
+
+ :param value: Log level.
+ :type value: str
+ """
+ path = [u"dpdk", u"log-level"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_no_pci(self):
+ """Add DPDK no-pci."""
+ path = [u"dpdk", u"no-pci"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_dpdk_uio_driver(self, value=None):
+ """Add DPDK uio-driver configuration.
+
+ :param value: DPDK uio-driver configuration. By default, driver will be
+ loaded automatically from Topology file, still leaving option
+ to manually override by parameter.
+ :type value: str
+ """
+ if value is None:
+ value = Topology.get_uio_driver(self._node)
+ path = [u"dpdk", u"uio-driver"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_dpdk_max_simd_bitwidth(self, variant=Constants.GRAPH_NODE_VARIANT):
+ """Add DPDK max-simd-bitwidth configuration.
+
+ :param value: Graph node variant default value.
+ :type value: str
+ """
+ if variant == u"icl":
+ value = 512
+ elif variant in [u"skx", u"hsw"]:
+ value = 256
+ else:
+ return
+
+ path = [u"dpdk", u"max-simd-bitwidth"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_cpu_main_core(self, value):
+ """Add CPU main core configuration.
+
+ :param value: Main core option.
+ :type value: str
+ """
+ path = [u"cpu", u"main-core"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_cpu_corelist_workers(self, value):
+ """Add CPU corelist-workers configuration.
+
+ :param value: Corelist-workers option.
+ :type value: str
+ """
+ path = [u"cpu", u"corelist-workers"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_main_heap_size(self, value):
+ """Add Main Heap Size configuration.
+
+ :param value: Amount of heap.
+ :type value: str
+ """
+ path = [u"memory", u"main-heap-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_main_heap_page_size(self, value):
+ """Add Main Heap Page Size configuration.
+
+ :param value: Heap page size.
+ :type value: str
+ """
+ path = [u"memory", u"main-heap-page-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_default_hugepage_size(self, value=Constants.DEFAULT_HUGEPAGE_SIZE):
+ """Add Default Hugepage Size configuration.
+
+ :param value: Hugepage size.
+ :type value: str
+ """
+ path = [u"memory", u"default-hugepage-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_api_trace(self):
+ """Add API trace configuration."""
+ path = [u"api-trace", u"on"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_ip6_hash_buckets(self, value):
+ """Add IP6 hash buckets configuration.
+
+ :param value: Number of IP6 hash buckets.
+ :type value: str
+ """
+ path = [u"ip6", u"hash-buckets"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_ip6_heap_size(self, value):
+ """Add IP6 heap-size configuration.
+
+ :param value: IP6 Heapsize amount.
+ :type value: str
+ """
+ path = [u"ip6", u"heap-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_spd_flow_cache_ipv4_outbound(self):
+ """Add SPD flow cache for IP4 outbound traffic"""
+ path = [u"ipsec", u"ipv4-outbound-spd-flow-cache"]
+ self.add_config_item(self._nodeconfig, "on", path)
+
+ def add_statseg_size(self, value):
+ """Add Stats Heap Size configuration.
+
+ :param value: Stats heapsize amount.
+ :type value: str
+ """
+ path = [u"statseg", u"size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_statseg_page_size(self, value):
+ """Add Stats Heap Page Size configuration.
+
+ :param value: Stats heapsize amount.
+ :type value: str
+ """
+ path = [u"statseg", u"page-size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_statseg_per_node_counters(self, value):
+ """Add stats per-node-counters configuration.
+
+ :param value: "on" to switch the counters on.
+ :type value: str
+ """
+ path = [u"statseg", u"per-node-counters"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_plugin(self, state, *plugins):
+ """Add plugin section for specific plugin(s).
+
+ :param state: State of plugin [enable|disable].
+ :param plugins: Plugin(s) to disable.
+ :type state: str
+ :type plugins: list
+ """
+ for plugin in plugins:
+ path = [u"plugins", f"plugin {plugin}", state]
+ self.add_config_item(self._nodeconfig, u" ", path)
+
+ def add_dpdk_no_multi_seg(self):
+ """Add DPDK no-multi-seg configuration."""
+ path = [u"dpdk", u"no-multi-seg"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_dpdk_no_tx_checksum_offload(self):
+ """Add DPDK no-tx-checksum-offload configuration."""
+ path = [u"dpdk", u"no-tx-checksum-offload"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_nat(self, value=u"deterministic"):
+ """Add NAT mode configuration.
+
+ :param value: NAT mode.
+ :type value: str
+ """
+ path = [u"nat", value]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_nat_max_translations_per_thread(self, value):
+ """Add NAT max. translations per thread number configuration.
+
+ :param value: NAT mode.
+ :type value: str
+ """
+ path = [u"nat", u"max translations per thread"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_nsim_poll_main_thread(self):
+ """Add NSIM poll-main-thread configuration."""
+ path = [u"nsim", u"poll-main-thread"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_tcp_congestion_control_algorithm(self, value=u"cubic"):
+ """Add TCP congestion control algorithm.
+
+ :param value: The congestion control algorithm to use. Example: cubic
+ :type value: str
+ """
+ path = [u"tcp", u"cc-algo"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_tcp_preallocated_connections(self, value):
+ """Add TCP pre-allocated connections.
+
+ :param value: The number of pre-allocated connections.
+ :type value: int
+ """
+ path = [u"tcp", u"preallocated-connections"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_tcp_preallocated_half_open_connections(self, value):
+ """Add TCP pre-allocated half open connections.
+
+ :param value: The number of pre-allocated half open connections.
+ :type value: int
+ """
+ path = [u"tcp", u"preallocated-half-open-connections"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_enable(self):
+ """Add session enable."""
+ path = [u"session", u"enable"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_session_event_queues_memfd_segment(self):
+ """Add session event queue memfd segment."""
+ path = [u"session", u"evt_qs_memfd_seg"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
+ def add_session_event_queue_length(self, value):
+ """Add session event queue length.
+
+ :param value: Session event queue length.
+ :type value: int
+ """
+ path = [u"session", u"event-queue-length"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_event_queues_segment_size(self, value):
+ """Add session event queue length.
+
+ :param value: Session event queue segment size.
+ :type value: str
+ """
+ path = [u"session", u"evt_qs_seg_size"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_preallocated_sessions(self, value):
+ """Add the number of pre-allocated sessions.
+
+ :param value: Number of pre-allocated sessions.
+ :type value: int
+ """
+ path = [u"session", u"preallocated-sessions"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_v4_session_table_buckets(self, value):
+ """Add number of v4 session table buckets to the config.
+
+ :param value: Number of v4 session table buckets.
+ :type value: int
+ """
+ path = [u"session", u"v4-session-table-buckets"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_v4_session_table_memory(self, value):
+ """Add the size of v4 session table memory.
+
+ :param value: Size of v4 session table memory.
+ :type value: str
+ """
+ path = [u"session", u"v4-session-table-memory"]
+ self.add_config_item(self._nodeconfig, value, path)
+
+ def add_session_v4_halfopen_table_buckets(self, value):
+ """Add the number of v4 halfopen table buckets.
+
+ :param value: Number of v4 halfopen table buckets.
+ :type value: int