From 10745be7adb099f559ba1b00b8d97fda59f75d62 Mon Sep 17 00:00:00 2001 From: Deepak S Date: Wed, 31 May 2017 12:56:50 +0000 Subject: [SAMPLEVNF] Adding support to handle more than 16 ports This patch extends num_ports vnf can handle ports > 16 . This include changes in the memory allocatiion and size of different paramters Change-Id: Id8907327023ba863ad107bb874cfb60bd38daee5 Signed-off-by: Deepak S --- common/VIL/l2l3_stack/lib_arp.c | 50 +- common/VIL/l2l3_stack/lib_arp.h | 4 +- common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.c | 48 + common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.h | 4 +- common/cscope.out | 250740 +++++++++++++++++++ common/vnf_common/app.h | 10 +- common/vnf_common/pipeline_be.h | 14 +- 7 files changed, 250853 insertions(+), 17 deletions(-) create mode 100644 common/cscope.out (limited to 'common') diff --git a/common/VIL/l2l3_stack/lib_arp.c b/common/VIL/l2l3_stack/lib_arp.c index 042dd39c..0162f820 100644 --- a/common/VIL/l2l3_stack/lib_arp.c +++ b/common/VIL/l2l3_stack/lib_arp.c @@ -57,7 +57,7 @@ #define is_multicast_ipv4_addr(ipv4_addr) \ (((rte_be_to_cpu_32((ipv4_addr)) >> 24) & 0x000000FF) == 0xE0) -extern uint8_t prv_in_port_a[16]; +extern uint8_t prv_in_port_a[PIPELINE_MAX_PORT_IN]; extern uint32_t timer_lcore; uint32_t arp_timeout = ARP_TIMER_EXPIRY; @@ -185,6 +185,38 @@ struct table_nd_entry_data nd_entry_data_table[MAX_ND_DATA_ENTRY_TABLE] = { }; struct lib_nd_route_table_entry lib_nd_route_table[MAX_ND_RT_ENTRY] = { + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, @@ -220,6 +252,22 @@ struct lib_nd_route_table_entry lib_nd_route_table[MAX_ND_RT_ENTRY] = { }; struct lib_arp_route_table_entry lib_arp_route_table[MAX_ARP_RT_ENTRY] = { + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, diff --git a/common/VIL/l2l3_stack/lib_arp.h b/common/VIL/l2l3_stack/lib_arp.h index 33875679..e2d38419 100644 --- a/common/VIL/l2l3_stack/lib_arp.h +++ b/common/VIL/l2l3_stack/lib_arp.h @@ -27,8 +27,8 @@ #define ARP_TIMER_EXPIRY 1800 /**< in Seconds, TIMER for ARP Expiry */ #define TIMER_MILLISECOND 1 #define RTE_LOGTYPE_LIBARP RTE_LOGTYPE_USER1 -#define MAX_ND_RT_ENTRY 16 -#define MAX_ARP_RT_ENTRY 16 +#define MAX_ND_RT_ENTRY 32 +#define MAX_ARP_RT_ENTRY 32 /** * A structure for Route table entries of IPv4 diff --git a/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.c b/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.c index 7238bd1d..4ec544db 100644 --- a/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.c +++ b/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.c @@ -167,6 +167,38 @@ struct pipeline_arpicmp { struct lib_nd_route_table_entry lib_nd_route_table[MAX_ND_RT_ENTRY] = { + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, + {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} }, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 0, @@ -204,6 +236,22 @@ struct lib_nd_route_table_entry lib_nd_route_table[MAX_ND_RT_ENTRY] = { struct lib_arp_route_table_entry lib_arp_route_table[MAX_ARP_RT_ENTRY] = { // {0xac102814, 1, 0xac102814}, // {0xac106414, 0, 0xac106414}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, diff --git a/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.h b/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.h index 2c7fce2e..cfbbe617 100644 --- a/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.h +++ b/common/VIL/pipeline_arpicmp/pipeline_arpicmp_be.h @@ -61,8 +61,8 @@ struct ether_addr *get_link_hw_addr(uint8_t out_port); #endif -#define MAX_ARP_RT_ENTRY 16 -#define MAX_ND_RT_ENTRY 16 +#define MAX_ARP_RT_ENTRY 32 +#define MAX_ND_RT_ENTRY 32 #define ND_IPV6_ADDR_SIZE 16 /* 16 Byte of IPv6 Address */ diff --git a/common/cscope.out b/common/cscope.out new file mode 100644 index 00000000..54523acb --- /dev/null +++ b/common/cscope.out @@ -0,0 +1,250740 @@ +cscope 15 $HOME/work/opnfv/samplevnf/common 0001447068 + @VIL/acl/lib_acl.c + +16  + ~"lib_a.h +" + +17  + ~"vnf_comm.h +" + +18  + ~ + +19  + #ACL_LIB_DEBUG + 0 + + ) + +20  +e_a_fld_def + + gfld_fm_v4 +[] = { + +23 . +ty + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +24 . + gsize + = ( +ut8_t +), + +25 . + gfld_dex + = 0, + +26 . + gput_dex + = 0, + +27 . + gofft + = ( +h_hdr +) + + +28 +offtof +( +v4_hdr +, +xt_o_id +), + +33 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +34 . + gsize + = ( +ut32_t +), + +35 . + gfld_dex + = 1, + +36 . + gput_dex + = 1, + +37 . + gofft + = ( +h_hdr +) + + +38 +offtof +( +v4_hdr +, +c_addr +), + +43 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +44 . + gsize + = ( +ut32_t +), + +45 . + gfld_dex + = 2, + +46 . + gput_dex + = 2, + +47 . + gofft + = ( +h_hdr +) + + +48 +offtof +( +v4_hdr +, +d_addr +), + +53 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +54 . + gsize + = ( +ut16_t +), + +55 . + gfld_dex + = 3, + +56 . + gput_dex + = 3, + +57 . + gofft + = ( +h_hdr +) + + +58 ( +v4_hdr ++ +offtof +( +t_hdr +, +c_pt +), + +63 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +64 . + gsize + = ( +ut16_t +), + +65 . + gfld_dex + = 4, + +66 . + gput_dex + = 3, + +67 . + gofft + = ( +h_hdr +) + + +68 ( +v4_hdr ++ +offtof +( +t_hdr +, +d_pt +), + +72  + #SIZEOF_VLAN_HDR + 4 + + ) + +74  +e_a_fld_def + + gfld_fm_vn_v4 +[] = { + +77 . +ty + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +78 . + gsize + = ( +ut8_t +), + +79 . + gfld_dex + = 0, + +80 . + gput_dex + = 0, + +81 . + gofft + = ( +h_hdr +) + + +82 +SIZEOF_VLAN_HDR + + +offtof +( +v4_hdr +, +xt_o_id +), + +87 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +88 . + gsize + = ( +ut32_t +), + +89 . + gfld_dex + = 1, + +90 . + gput_dex + = 1, + +91 . + gofft + = ( +h_hdr +) + + +92 +SIZEOF_VLAN_HDR + + +offtof +( +v4_hdr +, +c_addr +), + +97 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +98 . + gsize + = ( +ut32_t +), + +99 . + gfld_dex + = 2, + +100 . + gput_dex + = 2, + +101 . + gofft + = ( +h_hdr +) + + +102 +SIZEOF_VLAN_HDR + + +offtof +( +v4_hdr +, +d_addr +), + +107 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +108 . + gsize + = ( +ut16_t +), + +109 . + gfld_dex + = 3, + +110 . + gput_dex + = 3, + +111 . + gofft + = ( +h_hdr +) + + +112 +SIZEOF_VLAN_HDR + + + +113 ( +v4_hdr ++ +offtof +( +t_hdr +, +c_pt +), + +118 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +119 . + gsize + = ( +ut16_t +), + +120 . + gfld_dex + = 4, + +121 . + gput_dex + = 4, + +122 . + gofft + = ( +h_hdr +) + + +123 +SIZEOF_VLAN_HDR + + + +124 ( +v4_hdr ++ +offtof +( +t_hdr +, +d_pt +), + +128  + #SIZEOF_QINQ_HEADER + 8 + + ) + +130  +e_a_fld_def + + gfld_fm_qq_v4 +[] = { + +133 . +ty + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +134 . + gsize + = ( +ut8_t +), + +135 . + gfld_dex + = 0, + +136 . + gput_dex + = 0, + +137 . + gofft + = ( +h_hdr +) + + +138 +SIZEOF_QINQ_HEADER + + +offtof +( +v4_hdr +, +xt_o_id +), + +143 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +144 . + gsize + = ( +ut32_t +), + +145 . + gfld_dex + = 1, + +146 . + gput_dex + = 1, + +147 . + gofft + = ( +h_hdr +) + + +148 +SIZEOF_QINQ_HEADER + + +offtof +( +v4_hdr +, +c_addr +), + +153 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +154 . + gsize + = ( +ut32_t +), + +155 . + gfld_dex + = 2, + +156 . + gput_dex + = 2, + +157 . + gofft + = ( +h_hdr +) + + +158 +SIZEOF_QINQ_HEADER + + +offtof +( +v4_hdr +, +d_addr +), + +163 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +164 . + gsize + = ( +ut16_t +), + +165 . + gfld_dex + = 3, + +166 . + gput_dex + = 3, + +167 . + gofft + = ( +h_hdr +) + + +168 +SIZEOF_QINQ_HEADER + + + +169 ( +v4_hdr ++ +offtof +( +t_hdr +, +c_pt +), + +174 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +175 . + gsize + = ( +ut16_t +), + +176 . + gfld_dex + = 4, + +177 . + gput_dex + = 4, + +178 . + gofft + = ( +h_hdr +) + + +179 +SIZEOF_QINQ_HEADER + + + +180 ( +v4_hdr ++ +offtof +( +t_hdr +, +d_pt +), + +184  +e_a_fld_def + + gfld_fm_v6 +[] = { + +187 . +ty + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +188 . + gsize + = ( +ut8_t +), + +189 . + gfld_dex + = 0, + +190 . + gput_dex + = 0, + +191 . + gofft + = ( +h_hdr +) + + +192 +offtof +( +v6_hdr +, +o +), + +197 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +198 . + gsize + = ( +ut32_t +), + +199 . + gfld_dex + = 1, + +200 . + gput_dex + = 1, + +201 . + gofft + = ( +h_hdr +) + + +202 +offtof +( +v6_hdr +, +c_addr +), + +206 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +207 . + gsize + = ( +ut32_t +), + +208 . + gfld_dex + = 2, + +209 . + gput_dex + = 2, + +210 . + gofft + = ( +h_hdr +) + + +211 +offtof +( +v6_hdr +, +c_addr ++ ( + gut32_t +), + +215 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +216 . + gsize + = ( +ut32_t +), + +217 . + gfld_dex + = 3, + +218 . + gput_dex + = 3, + +219 . + gofft + = ( +h_hdr +) + + +220 +offtof +( +v6_hdr +, +c_addr ++ 2 * ( + gut32_t +), + +224 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +225 . + gsize + = ( +ut32_t +), + +226 . + gfld_dex + = 4, + +227 . + gput_dex + = 4, + +228 . + gofft + = ( +h_hdr +) + + +229 +offtof +( +v6_hdr +, +c_addr ++ 3 * ( + gut32_t +), + +234 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +235 . + gsize + = ( +ut32_t +), + +236 . + gfld_dex + = 5, + +237 . + gput_dex + = 5, + +238 . + gofft + = ( +h_hdr +) + + +239 +offtof +( +v6_hdr +, +d_addr +), + +243 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +244 . + gsize + = ( +ut32_t +), + +245 . + gfld_dex + = 6, + +246 . + gput_dex + = 6, + +247 . + gofft + = ( +h_hdr +) + + +248 +offtof +( +v6_hdr +, +d_addr ++ ( + gut32_t +), + +252 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +253 . + gsize + = ( +ut32_t +), + +254 . + gfld_dex + = 7, + +255 . + gput_dex + = 7, + +256 . + gofft + = ( +h_hdr +) + + +257 +offtof +( +v6_hdr +, +d_addr ++ 2 * ( + gut32_t +), + +261 . +ty + = +RTE_ACL_FIELD_TYPE_MASK +, + +262 . + gsize + = ( +ut32_t +), + +263 . + gfld_dex + = 8, + +264 . + gput_dex + = 8, + +265 . + gofft + = ( +h_hdr +) + + +266 +offtof +( +v6_hdr +, +d_addr ++ 3 * ( + gut32_t +), + +271 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +272 . + gsize + = ( +ut16_t +), + +273 . + gfld_dex + = 9, + +274 . + gput_dex + = 9, + +275 . + gofft + = ( +h_hdr +) + + +276 ( +v6_hdr ++ +offtof +( +t_hdr +, +c_pt +), + +281 . +ty + = +RTE_ACL_FIELD_TYPE_RANGE +, + +282 . + gsize + = ( +ut16_t +), + +283 . + gfld_dex + = 10, + +284 . + gput_dex + = 9, + +285 . + gofft + = ( +h_hdr +) + + +286 ( +v6_hdr ++ +offtof +( +t_hdr +, +d_pt +), + +290 * + $lib_a__aive_dby_b_v4 +( +ut8_t + +b_num +, + +291 +ut32_t + * +liba_n_rus +) + +293 + `tf +("Create LIBACLctive IPV4 Tableste_socket_id(): %i\n", + +294 + `e_sock_id +()); + +297  +e_b_a_ms + +comm_v4_b_liba_ms + = { + +298 . +me + = "LIBACLIPV4A", + +299 . +n_rus + = * +liba_n_rus +, + +300 . +n_ru_flds + = + `RTE_DIM +( +fld_fm_v4 +), + +303 + `memy +( +comm_v4_b_liba_ms +. +fld_fm +, + +304 +fld_fm_v4 +, (field_format_ipv4)); + +306 +ut32_t + +v4_y_size + = ( +lib_a_b_y +); + +308 i( +b_num + == 2) + +309 +comm_v4_b_liba_ms +. +me + = "LIBACLIPV4B"; + +310  +e_b_a_s +. + `f_ +(& +comm_v4_b_liba_ms +, + +311 + `e_sock_id +(), + +312 +v4_y_size +); + +315 + } +} + +317 * + $lib_a__aive_dby_b_v6 +( +ut8_t + +b_num +, + +318 +ut32_t + * +liba_n_rus +) + +320 + `tf +("Create LIBACLctive IPV6 Tableste_socket_id(): %i\n", + +321 + `e_sock_id +()); + +323  +e_b_a_ms + +comm_v6_b_liba_ms + = { + +324 . +me + = "LIBACLIPV6A", + +325 . +n_rus + = * +liba_n_rus +, + +326 . +n_ru_flds + = + `RTE_DIM +( +fld_fm_v6 +), + +329 + `memy +( +comm_v6_b_liba_ms +. +fld_fm +, + +330 +fld_fm_v6 +, (field_format_ipv6)); + +332 +ut32_t + +v6_y_size + = ( +lib_a_b_y +); + +334 i( +b_num + == 2) + +335 +comm_v6_b_liba_ms +. +me + = "LIBACLIPV6B"; + +336  +e_b_a_s +. + `f_ +(& +comm_v6_b_liba_ms +, + +337 + `e_sock_id +(), + +338 +v6_y_size +); + +341 + } +} + +342  + $lib_a_r_cfig +( +lib_a + * +ib_a +, + +343 * +g_me +, * +g_vue +, + +344 +ut32_t + * +liba_n_rus +) + +346 +ut32_t + +n_rus_e + = 0; + +347 +ut32_t + +pkt_ty_e + = 0; + +349 +ib_a +-> +n_rus + = +DEFULT_NUM_RULE +; + +350 * +liba_n_rus + = +DEFULT_NUM_RULE +; + +351 +ib_a +-> +n_ru_flds + = + `RTE_DIM +( +fld_fm_v4 +); + +352 +ib_a +-> +fld_fm + = +fld_fm_v4 +; + +353 +ib_a +-> +fld_fm_size + = ( +fld_fm_v4 +); + +354 i( + `rcmp +( +g_me +, "n_rules") == 0) { + +355 i( +n_rus_e +) { + +356 + `tf +("n_rules_present"); + +359 +n_rus_e + = 1; + +361 +ib_a +-> +n_rus + = + `oi +( +g_vue +); + +362 * +liba_n_rus + = + `oi +( +g_vue +); + +365 i( + `rcmp +( +g_me +, "pkt_type") == 0) { + +366 i( +pkt_ty_e +) { + +367 + `tf +("pkt_type"); + +370 +pkt_ty_e + = 1; + +373 i( + `rcmp +( +g_vue +, "ipv4") == 0) { + +374 +ib_a +-> +n_ru_flds + = + +375 + `RTE_DIM +( +fld_fm_v4 +); + +376 +ib_a +-> +fld_fm + = +fld_fm_v4 +; + +377 +ib_a +-> +fld_fm_size + = + +378 ( +fld_fm_v4 +); + +383 i( + `rcmp +( +g_vue +, "vlan_ipv4") == 0) { + +384 +ib_a +-> +n_ru_flds + = + +385 + `RTE_DIM +( +fld_fm_vn_v4 +); + +386 +ib_a +-> +fld_fm + = + +387 +fld_fm_vn_v4 +; + +388 +ib_a +-> +fld_fm_size + = + +389 ( +fld_fm_vn_v4 +); + +394 i( + `rcmp +( +g_vue +, "qinq_ipv4") == 0) { + +395 +ib_a +-> +n_ru_flds + = + +396 + `RTE_DIM +( +fld_fm_qq_v4 +); + +397 +ib_a +-> +fld_fm + = + +398 +fld_fm_qq_v4 +; + +399 +ib_a +-> +fld_fm_size + = + +400 ( +fld_fm_qq_v4 +); + +405 i( + `rcmp +( +g_vue +, "ipv6") == 0) { + +406 +ib_a +-> +n_ru_flds + = + +407 + `RTE_DIM +( +fld_fm_v6 +); + +408 +ib_a +-> +fld_fm + = +fld_fm_v6 +; + +409 +ib_a +-> +fld_fm_size + = + +410 ( +fld_fm_v6 +); + +414 + `tf +("other"); + +419 + } +} + +444 +ut64_t + + +445 +lib_a_pkt_wk_key +( +lib_a + * +ib_a +, + +446  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +447 +ut64_t + * +pkts_dr_whout_ru +, + +448 * +ib_a_ru_b_v4_aive +, + +449 * +ib_a_ru_b_v6_aive +, + +450  +pe_ai_key + * +ai_y_aive +, + +451  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +452 +ut64_t + * +cck_mask +, + +453 +ut64_t + * +cxi_mask +, + +454  +lib_a_v4_abd +,  +lib_a_v6_abd +) + +457 +ut64_t + + glookup_h_mask + = 0; + +458 +ut64_t + + glookup_h_mask_v4 + = 0; + +459 +ut64_t + + glookup_h_mask_v6 + = 0; + +460 +ut64_t + + glookup_miss_mask + = 0; + +461  + gus +; + +464 i( + glib_a_v4_abd +) { + +465 i( + gACL_LIB_DEBUG +) + +466 +tf +("ACL IPV4 LookuMask Befܐ0x%" +PRIx64 +"\n", + +467 +pkts_mask +); + +468 + gus + = +e_b_a_s +. +f_lookup +( + +469 +ib_a_ru_b_v4_aive +, + +470 +pkts +, +pkts_mask +, & +lookup_h_mask_v4 +, + +471 (** +ib_a +-> +ib_a_s_v4 +); + +472 i( + gus + < 0) + +473 +tf +("Lookup failed\n"); + +474 i( + gACL_LIB_DEBUG +) + +475 +tf +("ACL IPV4 LookuMask A = 0x%" +PRIx64 +"\n", + +476 +lookup_h_mask_v4 +); + +479 i( + glib_a_v6_abd +) { + +480 i( + gACL_LIB_DEBUG +) + +481 +tf +("ACL IPV6 LookuMask Befܐ0x%" +PRIx64 +"\n", + +482 +pkts_mask +); + +483 + gus + = +e_b_a_s +. +f_lookup +( + +484 +ib_a_ru_b_v6_aive +, + +485 +pkts +, +pkts_mask +, & +lookup_h_mask_v6 +, + +486 (** +ib_a +-> +ib_a_s_v6 +); + +487 i( + gus + < 0) + +488 +tf +("Lookup Failed\n"); + +489 i( + gACL_LIB_DEBUG +) + +490 +tf +("ACL IPV6 LookuMask A = 0x%" +PRIx64 +"\n", + +491 +lookup_h_mask_v6 +); + +495 + glookup_h_mask + = +lookup_h_mask_v4 + | +lookup_h_mask_v6 +; + +496 i( + gACL_LIB_DEBUG +) + +497 +tf +("ACL LookuMask A = 0x%" +PRIx64 +"\n", + +498 +lookup_h_mask +); + +500 + glookup_miss_mask + = +pkts_mask + & (~ +lookup_h_mask +); + +501 + gpkts_mask + = +lookup_h_mask +; + +502 * + gpkts_dr_whout_ru + + +__but_pcou +( +lookup_miss_mask +); + +503 i( + gACL_LIB_DEBUG +) + +504 +tf +("pkt_wk_a_keykts_dr: %" +PRIu64 + "_pkts: %u\n", + +505 * +pkts_dr_whout_ru +, + +506 +__but_pcou +( +lookup_miss_mask +)); + +508 +ut64_t + + gpkts_to_oss + = +lookup_h_mask +; + +510 ; + gpkts_to_oss +;) { + +511 +ut8_t + + gpos + = (ut8_t) +__but_z +( +pkts_to_oss +); + +513 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +515 + gpkts_to_oss + &~ +pkt_mask +; + +516  +e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +518 +ut8_t + + ghdr_chk + = +RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +520 + ghdr_chk + = +hdr_chk + >> +IP_VERSION_CHECK +; + +522 i( + ghdr_chk + = +IPv4_HDR_VERSION +) { + +524  +lib_a_b_y + * +y + = + +525 ( +lib_a_b_y + *) + +526 +ib_a +-> +ib_a_s_v4 +[ +pos +]; + +527 +ut16_t + + gphy_pt + = +y +-> +hd +. +pt_id +; + +528 +ut32_t + + gai_id + = +y +-> +ai_id +; + +530 i( + gACL_LIB_DEBUG +) + +531 +tf +("ai_id = %u\n", +ai_id +); + +533 +ut32_t + + gds_offt + = +IP_START + + +IP_HDR_DSCP_OFST +; + +535 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +536 + glib_a_ai_cou +) { + +537 + gp_ai_cou_b + + +538 [ +ib_a +-> +ai_cou_dex +] + +539 [ +ai_id +]. + gckCou +++; + +540 + gp_ai_cou_b + + +541 [ +ib_a +-> +ai_cou_dex +] + +542 [ +ai_id +]. + gbyCou + += + +543 +e_pktmbuf_pkt_n +( +pkt +); + +544 i( + gACL_LIB_DEBUG +) + +545 +tf +("Action Count Packet Count: %" + +546 +PRIu64 + " Byte Count: %" + +547 +PRIu64 + "\n" + +548 , +p_ai_cou_b + + +549 [ +ib_a +-> +ai_cou_dex +] + +550 [ +ai_id +]. +ckCou +, + +551 +p_ai_cou_b + + +552 [ +ib_a +-> +ai_cou_dex +] + +553 [ +ai_id +]. +byCou +); + +556 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +557 + glib_a_ai_ck_dr +) { + +560 i( + gACL_LIB_DEBUG +) + +561 +tf +("ACL before dropkt_mask %" + +562 +PRIx64 +",kt_num %d\n", + +563 +pkts_mask +, +pos +); + +564 + gpkts_mask + &~(1LLU << +pos +); + +565 (* + gpkts_dr_whout_ru +)++; + +566 i( + gACL_LIB_DEBUG +) + +567 +tf +("ACL dr݅kt_mask %" +PRIx64 + + +569 +PRIu64 +"\n", +pkts_mask +, +pos +, + +570 * +pkts_dr_whout_ru +); + +573 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +574 + glib_a_ai_fwd +) { + +575 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +576 +fwd_pt +; + +577 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +578 i( + gACL_LIB_DEBUG +) + +579 +tf +("Action FWD Port ID: %" + +580 +PRIu16 +"\n", +phy_pt +); + +583 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +584 + glib_a_ai_t +) { + +585 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +586 +t_pt +; + +587 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +588 i( + gACL_LIB_DEBUG +) + +589 +tf +("Action NAT Port ID: %" + +590 +PRIu16 +"\n", +phy_pt +); + +593 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +594 + glib_a_ai_ds +) { + +597 +ut8_t + * + gds + = +RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +598 +ds_offt +); + +599 * + gds + = +ai_y_aive +[ +ai_id +]. + +600 +ds_iܙy + << 2; + +601 i( + gACL_LIB_DEBUG +) + +602 +tf +("Action DSCP DSCP Priority: %" + +603 +PRIu16 + "\n", * +ds +); + +606 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +607 + glib_a_ai_ck_ac +) { + +608 i( + gACL_LIB_DEBUG +) + +609 +tf +("Action Accept\n"); + +611 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +612 & + glib_a_ai_cck +) { + +615 * + gcck_mask + | +pkt_mask +; + +616 i( + gACL_LIB_DEBUG +) + +617 +tf +("ACL CTnabled: 0x%" + +618 +PRIx64 +"kt_mask: 0x%" + +619 +PRIx64 +"\n", + +620 * +cck_mask +, + +621 +pkt_mask +); + +624 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +625 & + glib_a_ai_cxi +) { + +628 * + gcck_mask + | +pkt_mask +; + +634 i( + gai_y_aive +[ +ai_id +]. + +635 + give_public + == + +636 +lib_a_public_ive +) + +637 * +cxi_mask + | +pkt_mask +; + +639 i( + gACL_LIB_DEBUG +) + +640 +tf +("Connexist ENB CT:0x%" + +641 +PRIx64 +" connexist: 0x%" + +642 +PRIx64 +"kt_mask: 0x%" + +643 +PRIx64 +"\n", + +644 * +cck_mask +, + +645 * +cxi_mask +, + +646 +pkt_mask +); + +651 i( + ghdr_chk + = +IPv6_HDR_VERSION +) { + +653  +lib_a_b_y + * +y + = + +654 ( +lib_a_b_y + *) + +655 +ib_a +-> +ib_a_s_v6 +[ +pos +]; + +656 +ut16_t + + gphy_pt + = +y +-> +hd +. +pt_id +; + +657 +ut32_t + + gai_id + = +y +-> +ai_id +; + +659 i( + gACL_LIB_DEBUG +) + +660 +tf +("ai_id = %u\n", +ai_id +); + +662 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +663 + glib_a_ai_cou +) { + +664 + gp_ai_cou_b + + +665 [ +ib_a +-> +ai_cou_dex +] + +666 [ +ai_id +]. + gckCou +++; + +667 + gp_ai_cou_b + + +668 [ +ib_a +-> +ai_cou_dex +] + +669 [ +ai_id +]. + gbyCou + += + +670 +e_pktmbuf_pkt_n +( +pkt +); + +671 i( + gACL_LIB_DEBUG +) + +672 +tf +("Action Count Packet Count: %" + +673 +PRIu64 + " Byte Count: %" + +674 +PRIu64 + "\n", + +675 +p_ai_cou_b + + +676 [ +ib_a +-> +ai_cou_dex +] + +677 [ +ai_id +]. +ckCou +, + +678 +p_ai_cou_b + + +679 [ +ib_a +-> +ai_cou_dex +] + +680 [ +ai_id +]. +byCou +); + +683 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +684 + glib_a_ai_ck_dr +) { + +686 i( + gACL_LIB_DEBUG +) + +687 +tf +("ACL before dropkt_mask %" + +688 +PRIx64 +",kt_num %d\n", + +689 +pkts_mask +, +pos +); + +690 + gpkts_mask + &~(1LLU << +pos +); + +691 (* + gpkts_dr_whout_ru +)++; + +692 i( + gACL_LIB_DEBUG +) + +693 +tf +("ACL dr݅kt_mask %" +PRIx64 + + +695 +PRIu64 + "\n", +pkts_mask +, +pos +, + +696 * +pkts_dr_whout_ru +); + +700 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +701 + glib_a_ai_fwd +) { + +702 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +703 +fwd_pt +; + +704 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +705 i( + gACL_LIB_DEBUG +) + +706 +tf +("Action FWD Port ID: %" + +707 +PRIu16 +"\n", +phy_pt +); + +710 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +711 + glib_a_ai_t +) { + +712 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +713 +t_pt +; + +714 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +715 i( + gACL_LIB_DEBUG +) + +716 +tf +("Action NAT Port ID: %" + +717 +PRIu16 +"\n", +phy_pt +); + +720 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +721 + glib_a_ai_ds +) { + +724 +ut32_t + + gds_offt + = +IP_START + + + +725 +IP_HDR_DSCP_OFST_IPV6 +; + +726 +ut16_t + * + gds + = +RTE_MBUF_METADATA_UINT16_PTR +( + +727 +pkt +, +ds_offt +); + +728 +ut16_t + + gmp + = * +ds +; + +729 +ut16_t + + gds_vue + = ( +e_bsw16 +( +mp +) & + +731 +ut8_t + + gds_e + = + +732 +ai_y_aive + + +733 [ +ai_id +]. +ds_iܙy + << 2; + +734 +ut16_t + + gds_mp + = +ds_e +; + +736 + gds_mp + = +ds_mp + << 4; + +737 * + gds + = +e_bsw16 +( +ds_mp + | +ds_vue +); + +738 i( + gACL_LIB_DEBUG +) + +739 +tf +("Action DSCP DSCP Priority: %" + +740 +PRIu16 +"\n", * +ds +); + +743 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +744 & + glib_a_ai_ck_ac +) { + +745 i( + gACL_LIB_DEBUG +) + +746 +tf +("Action Accept\n"); + +748 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +749 & + glib_a_ai_cck +) { + +752 * + gcck_mask + | +pkt_mask +; + +753 i( + gACL_LIB_DEBUG +) + +754 +tf +("ACL CTnabled: 0x%" + +755 +PRIx64 +"kt_mask: 0x%" + +756 +PRIx64 +"\n", + +757 * +cck_mask +, + +758 +pkt_mask +); + +761 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +762 & + glib_a_ai_cxi +) { + +765 * + gcck_mask + | +pkt_mask +; + +771 i( + gai_y_aive +[ +ai_id +]. + +772 + give_public + == + +773 +lib_a_public_ive +) + +774 * +cxi_mask + | +pkt_mask +; + +776 i( + gACL_LIB_DEBUG +) + +777 +tf +("Connexist ENB CT:0x%" + +778 +PRIx64 +" connexist: 0x%" + +779 +PRIx64 +"kt_mask: 0x%" + +780 +PRIx64 +"\n", + +781 * +cck_mask +, + +782 * +cxi_mask +, + +783 +pkt_mask +); + +788  + gpkts_mask +; + +813 +ut64_t + + +814 +lib_a_v4_pkt_wk_key +( +lib_a + * +ib_a +, + +815  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +816 +ut64_t + * +pkts_dr_whout_ru +, + +817 * +ib_a_ru_b_v4_aive +, + +818  +pe_ai_key + * +ai_y_aive +, + +819  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +820 +ut64_t + * +cck_mask +, + +821 +ut64_t + * +cxi_mask +) + +824 +ut64_t + + glookup_h_mask_v4 + = 0; + +825 +ut64_t + + glookup_miss_mask_v4 + = 0; + +826  + gus +; + +828 i( + gACL_LIB_DEBUG +) + +829 +tf +("ACL IPV4 LookuMask Befܐ0x%" +PRIx64 +"\n", + +830 +pkts_mask +); + +831 + gus + = +e_b_a_s +. +f_lookup +( + +832 +ib_a_ru_b_v4_aive +, + +833 +pkts +, +pkts_mask +, & +lookup_h_mask_v4 +, + +834 (** +ib_a +-> +ib_a_s_v4 +); + +835 i( + gus + < 0) + +836 +tf +("Lookup Failed\n"); + +837 i( + gACL_LIB_DEBUG +) + +838 +tf +("ACL IPV4 LookuMask A = 0x%" +PRIx64 +"\n", + +839 +lookup_h_mask_v4 +); + +840 i( + gACL_LIB_DEBUG +) + +841 +tf +("ACL LookuMask A = 0x%" +PRIx64 +"\n", + +842 +lookup_h_mask_v4 +); + +844 + glookup_miss_mask_v4 + = +pkts_mask + & (~ +lookup_h_mask_v4 +); + +845 + gpkts_mask + = +lookup_h_mask_v4 +; + +846 * + gpkts_dr_whout_ru + + +__but_pcou +( +lookup_miss_mask_v4 +); + +847 i( + gACL_LIB_DEBUG +) + +848 +tf +("pkt_wk_a_keykts_dr: %" +PRIu64 + "_pkts: %u\n", + +849 * +pkts_dr_whout_ru +, + +850 +__but_pcou +( +lookup_miss_mask_v4 +)); + +852 +ut64_t + + gpkts_to_oss + = +lookup_h_mask_v4 +; + +854 ; + gpkts_to_oss +;) { + +855 +ut8_t + + gpos + = (ut8_t) +__but_z +( +pkts_to_oss +); + +857 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +859 + gpkts_to_oss + &~ +pkt_mask +; + +860  +e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +864  +lib_a_b_y + * + gy + = + +865 ( +lib_a_b_y + *) + +866 +ib_a +-> +ib_a_s_v4 +[ +pos +]; + +867 +ut16_t + + gphy_pt + = +y +-> +hd +. +pt_id +; + +868 +ut32_t + + gai_id + = +y +-> +ai_id +; + +870 i( + gACL_LIB_DEBUG +) + +871 +tf +("ai_id = %u\n", +ai_id +); + +873 +ut32_t + + gds_offt + = +IP_START + + +IP_HDR_DSCP_OFST +; + +875 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +876 + glib_a_ai_cou +) { + +877 + gp_ai_cou_b + + +878 [ +ib_a +-> +ai_cou_dex +] + +879 [ +ai_id +]. + gckCou +++; + +880 + gp_ai_cou_b + + +881 [ +ib_a +-> +ai_cou_dex +] + +882 [ +ai_id +]. + gbyCou + += + +883 +e_pktmbuf_pkt_n +( +pkt +); + +884 i( + gACL_LIB_DEBUG +) + +885 +tf +("Action Count Packet Count: %" + +886 +PRIu64 + " Byte Count: %" + +887 +PRIu64 + "\n" + +888 , +p_ai_cou_b + + +889 [ +ib_a +-> +ai_cou_dex +] + +890 [ +ai_id +]. +ckCou +, + +891 +p_ai_cou_b + + +892 [ +ib_a +-> +ai_cou_dex +] + +893 [ +ai_id +]. +byCou +); + +896 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +897 + glib_a_ai_ck_dr +) { + +900 i( + gACL_LIB_DEBUG +) + +901 +tf +("ACL before dropkt_mask %" + +902 +PRIx64 +",kt_num %d\n", + +903 +pkts_mask +, +pos +); + +904 + gpkts_mask + &~(1LLU << +pos +); + +905 (* + gpkts_dr_whout_ru +)++; + +906 i( + gACL_LIB_DEBUG +) + +907 +tf +("ACL dr݅kt_mask %" +PRIx64 + + +909 +PRIu64 + "\n", +pkts_mask +, +pos +, + +910 * +pkts_dr_whout_ru +); + +913 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +914 + glib_a_ai_fwd +) { + +915 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +916 +fwd_pt +; + +917 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +918 i( + gACL_LIB_DEBUG +) + +919 +tf +("Action FWD Port ID: %" + +920 +PRIu16 +"\n", +phy_pt +); + +923 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +924 + glib_a_ai_t +) { + +925 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +926 +t_pt +; + +927 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +928 i( + gACL_LIB_DEBUG +) + +929 +tf +("Action NAT Port ID: %" + +930 +PRIu16 +"\n", +phy_pt +); + +933 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +934 + glib_a_ai_ds +) { + +937 +ut8_t + * + gds + = +RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +938 +ds_offt +); + +939 * + gds + = +ai_y_aive +[ +ai_id +]. + +940 +ds_iܙy + << 2; + +941 i( + gACL_LIB_DEBUG +) + +942 +tf +("Action DSCP DSCP Priority: %" + +943 +PRIu16 + "\n", * +ds +); + +946 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +947 + glib_a_ai_ck_ac +) { + +948 i( + gACL_LIB_DEBUG +) + +949 +tf +("Action Accept\n"); + +951 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +952 & + glib_a_ai_cck +) { + +955 * + gcck_mask + | +pkt_mask +; + +956 i( + gACL_LIB_DEBUG +) + +957 +tf +("ACL CTnabled: 0x%" + +958 +PRIx64 +"kt_mask: 0x%" + +959 +PRIx64 +"\n", + +960 * +cck_mask +, + +961 +pkt_mask +); + +964 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +965 & + glib_a_ai_cxi +) { + +968 * + gcck_mask + | +pkt_mask +; + +974 i( + gai_y_aive +[ +ai_id +]. + +975 + give_public + == + +976 +lib_a_public_ive +) + +977 * +cxi_mask + | +pkt_mask +; + +979 i( + gACL_LIB_DEBUG +) + +980 +tf +("ACL Connexist ENB CT:0x%" + +981 +PRIx64 +" connexist: 0x%" + +982 +PRIx64 +"kt_mask: 0x%" + +983 +PRIx64 +"\n", + +984 * +cck_mask +, + +985 * +cxi_mask +, + +986 +pkt_mask +); + +991  + gpkts_mask +; + +1016 +ut64_t + + +1017 +lib_a_v6_pkt_wk_key +( +lib_a + * +ib_a +, + +1018  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +1019 +ut64_t + * +pkts_dr_whout_ru +, + +1020 * +ib_a_ru_b_v6_aive +, + +1021  +pe_ai_key + * +ai_y_aive +, + +1022  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +1023 +ut64_t + * +cck_mask +, + +1024 +ut64_t + * +cxi_mask +) + +1027 +ut64_t + + glookup_h_mask_v6 + = 0; + +1028 +ut64_t + + glookup_miss_mask_v6 + = 0; + +1029  + gus +; + +1032 i( + gACL_LIB_DEBUG +) + +1033 +tf +("ACL IPV6 LookuMask Befܐ0x%" +PRIx64 +"\n", + +1034 +pkts_mask +); + +1035 + gus + = +e_b_a_s +. +f_lookup +( + +1036 +ib_a_ru_b_v6_aive +, + +1037 +pkts +, +pkts_mask +, & +lookup_h_mask_v6 +, + +1038 (** +ib_a +-> +ib_a_s_v6 +); + +1039 i( + gus + < 0) + +1040 +tf +("Lookup Failed\n"); + +1041 i( + gACL_LIB_DEBUG +) + +1042 +tf +("ACL IPV6 LookuMask A = 0x%" +PRIx64 +"\n", + +1043 +lookup_h_mask_v6 +); + +1045 i( + gACL_LIB_DEBUG +) + +1046 +tf +("ACL LookuMask A = 0x%" +PRIx64 +"\n", + +1047 +lookup_h_mask_v6 +); + +1049 + glookup_miss_mask_v6 + = +pkts_mask + & (~ +lookup_h_mask_v6 +); + +1050 + gpkts_mask + = +lookup_h_mask_v6 +; + +1051 * + gpkts_dr_whout_ru + + +__but_pcou +( +lookup_miss_mask_v6 +); + +1052 i( + gACL_LIB_DEBUG +) + +1053 +tf +("pkt_wk_a_keykts_dr: %" +PRIu64 + "_pkts: %u\n", + +1054 * +pkts_dr_whout_ru +, + +1055 +__but_pcou +( +lookup_miss_mask_v6 +)); + +1057 +ut64_t + + gpkts_to_oss + = +lookup_h_mask_v6 +; + +1059 ; + gpkts_to_oss +;) { + +1060 +ut8_t + + gpos + = (ut8_t) +__but_z +( +pkts_to_oss +); + +1062 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +1064 + gpkts_to_oss + &~ +pkt_mask +; + +1065  +e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +1068  +lib_a_b_y + * + gy + = + +1069 ( +lib_a_b_y + *) + +1070 +ib_a +-> +ib_a_s_v6 +[ +pos +]; + +1071 +ut16_t + + gphy_pt + = +y +-> +hd +. +pt_id +; + +1072 +ut32_t + + gai_id + = +y +-> +ai_id +; + +1074 i( + gACL_LIB_DEBUG +) + +1075 +tf +("ai_id = %u\n", +ai_id +); + +1077 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +1078 + glib_a_ai_cou +) { + +1079 + gp_ai_cou_b + + +1080 [ +ib_a +-> +ai_cou_dex +] + +1081 [ +ai_id +]. + gckCou +++; + +1082 + gp_ai_cou_b + + +1083 [ +ib_a +-> +ai_cou_dex +] + +1084 [ +ai_id +]. + gbyCou + += + +1085 +e_pktmbuf_pkt_n +( +pkt +); + +1086 i( + gACL_LIB_DEBUG +) + +1087 +tf +("Action Count Packet Count: %" + +1088 +PRIu64 + " Byte Count: %" + +1089 +PRIu64 + "\n", + +1090 +p_ai_cou_b + + +1091 [ +ib_a +-> +ai_cou_dex +] + +1092 [ +ai_id +]. +ckCou +, + +1093 +p_ai_cou_b + + +1094 [ +ib_a +-> +ai_cou_dex +] + +1095 [ +ai_id +]. +byCou +); + +1098 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +1099 + glib_a_ai_ck_dr +) { + +1101 i( + gACL_LIB_DEBUG +) + +1102 +tf +("ACL before dropkt_mask %" + +1103 +PRIx64 +",kt_num %d\n", + +1104 +pkts_mask +, +pos +); + +1105 + gpkts_mask + &~(1LLU << +pos +); + +1106 (* + gpkts_dr_whout_ru +)++; + +1107 i( + gACL_LIB_DEBUG +) + +1108 +tf +("ACL dr݅kt_mask %" +PRIx64 + + +1110 +PRIu64 + "\n", +pkts_mask +, +pos +, + +1111 * +pkts_dr_whout_ru +); + +1115 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +1116 + glib_a_ai_fwd +) { + +1117 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +1118 +fwd_pt +; + +1119 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +1120 i( + gACL_LIB_DEBUG +) + +1121 +tf +("Action FWD Port ID: %" + +1122 +PRIu16 +"\n", +phy_pt +); + +1125 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +1126 + glib_a_ai_t +) { + +1127 + gphy_pt + = +ai_y_aive +[ +ai_id +]. + +1128 +t_pt +; + +1129 + gy +-> + ghd +. + gpt_id + = +phy_pt +; + +1130 i( + gACL_LIB_DEBUG +) + +1131 +tf +("Action NAT Port ID: %" + +1132 +PRIu16 +"\n", +phy_pt +); + +1135 i( + gai_y_aive +[ +ai_id +]. + gai_bm + & + +1136 + glib_a_ai_ds +) { + +1139 +ut32_t + + gds_offt + = +IP_START + + + +1140 +IP_HDR_DSCP_OFST_IPV6 +; + +1141 +ut16_t + * + gds + = +RTE_MBUF_METADATA_UINT16_PTR +( + +1142 +pkt +, +ds_offt +); + +1143 +ut16_t + + gmp + = * +ds +; + +1144 +ut16_t + + gds_vue + = ( +e_bsw16 +( +mp +) & + +1146 +ut8_t + + gds_e + = + +1147 +ai_y_aive + + +1148 [ +ai_id +]. +ds_iܙy + << 2; + +1149 +ut16_t + + gds_mp + = +ds_e +; + +1151 + gds_mp + = +ds_mp + << 4; + +1152 * + gds + = +e_bsw16 +( +ds_mp + | +ds_vue +); + +1153 i( + gACL_LIB_DEBUG +) + +1154 +tf +("Action DSCP DSCP Priority: %" + +1155 +PRIu16 +"\n", * +ds +); + +1158 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +1159 & + glib_a_ai_ck_ac +) { + +1160 i( + gACL_LIB_DEBUG +) + +1161 +tf +("Action Accept\n"); + +1163 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +1164 & + glib_a_ai_cck +) { + +1167 * + gcck_mask + | +pkt_mask +; + +1168 i( + gACL_LIB_DEBUG +) + +1169 +tf +("ACL CTnabled: 0x%" + +1170 +PRIx64 +"kt_mask: 0x%" + +1171 +PRIx64 +"\n", + +1172 * +cck_mask +, + +1173 +pkt_mask +); + +1176 i( + gai_y_aive +[ +ai_id +]. + gai_bm + + +1177 & + glib_a_ai_cxi +) { + +1180 * + gcck_mask + | +pkt_mask +; + +1186 i( + gai_y_aive +[ +ai_id +]. + +1187 + give_public + == + +1188 +lib_a_public_ive +) + +1189 * +cxi_mask + | +pkt_mask +; + +1191 i( + gACL_LIB_DEBUG +) + +1192 +tf +("ACL Connexist ENB CT:0x%" + +1193 +PRIx64 +" connexist: 0x%" + +1194 +PRIx64 +"kt_mask: 0x%" + +1195 +PRIx64 +"\n", + +1196 * +cck_mask +, + +1197 * +cxi_mask +, + +1198 +pkt_mask +); + +1202  + gpkts_mask +; + + @VIL/acl/lib_acl.h + +17 #ide +__INCLUDE_ACL_LIB_H__ + + +18  + #__INCLUDE_ACL_LIB_H__ + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~"e_xn_ackg.h +" + +26  + ~"e__t.h +" + +28  + #lib_a_ai_ck_dr + 1 + + ) + +29  + #lib_a_ai_ck_ac + 2 + + ) + +30  + #lib_a_ai_t + 4 + + ) + +31  + #lib_a_ai_fwd + 8 + + ) + +32  + #lib_a_ai_cou + 16 + + ) + +33  + #lib_a_ai_ds + 32 + + ) + +34  + #lib_a_ai_cck + 64 + + ) + +35  + #lib_a_ai_cxi + 128 + + ) + +36  + #ai_y_max + 10000 + + ) + +37  + #lib_a_ive_public + 0 + + ) + +38  + #lib_a_public_ive + 1 + + ) + +39  + #IP_HDR_DSCP_OFST + 1 + + ) + +40  + #IPv4_HDR_VERSION + 4 + + ) + +41  + #IPv6_HDR_VERSION + 6 + + ) + +42  + #IP_HDR_DSCP_OFST_IPV6 + 0 + + ) + +43  + #IP_VERSION_CHECK + 4 + + ) + +44  + #IP_START + ( +MBUF_HDR_ROOM + + +ETH_HDR_SIZE +) + + ) + +45  + #DEFULT_NUM_RULE + (4*1024) + + ) + +49  + spe_ai_key + { + +50 +ut32_t + + mai_id +; + +51 +ut32_t + + mai_bm +; + +52 +ut32_t + + mt_pt +; + +53 +ut32_t + + mfwd_pt +; + +54 +ut8_t + + mds_iܙy +; + +55 +ut8_t + + mive_public +; + +56 } + g__e_che_igd +; + +62  + sai_cou_block + { + +63 +ut64_t + + mbyCou +; + +64 +ut64_t + + mckCou +; + +65 } + g__e_che_igd +; + +70  + slib_a_b_y + { + +71  +e_pe_b_y + + mhd +; + +72 +ut32_t + + mai_id +; + +76  + slib_a + { + +77 +ut32_t + + mn_rus +; + +78 +ut32_t + + mn_ru_flds +; + +79  +e_a_fld_def + * + mfld_fm +; + +80 +ut32_t + + mfld_fm_size +; + +81  + mai_cou_dex +; + +82  +lib_a_b_y + + +83 * + mib_a_s_v4 +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +84  +lib_a_b_y + + +85 * + mib_a_s_v6 +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +86 } + g__e_che_igd +; + +88 * +lib_a__aive_dby_b_v4 +( +ut8_t + +b_num +, + +89 +ut32_t + * +liba_n_rus +); + +91 * +lib_a__aive_dby_b_v6 +( +ut8_t + +b_num +, + +92 +ut32_t + * +liba_n_rus +); + +93  +lib_a_r_cfig +( +lib_a + * +ib_a +, + +94 * +g_me +, * +g_vue +, + +95 +ut32_t + * +liba_n_rus +); + +96 +ut64_t + + +97 +lib_a_pkt_wk_key +( +lib_a + * +ib_a +, + +98  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +99 +ut64_t + * +pkts_dr_whout_ru +, + +100 * +ib_a_ru_b_v4_aive +, + +101 * +ib_a_ru_b_v6_aive +, + +102  +pe_ai_key + * +ai_y_aive +, + +103  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +104 +ut64_t + * +cck_mask +, + +105 +ut64_t + * +cxi_mask +, + +106  +lib_a_v4_abd +,  +lib_a_v6_abd +); + +107 +ut64_t + + +108 +lib_a_v4_pkt_wk_key +( +lib_a + * +ib_a +, + +109  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +110 +ut64_t + * +pkts_dr_whout_ru +, + +111 * +ib_a_ru_b_v4_aive +, + +112  +pe_ai_key + * +ai_y_aive +, + +113  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +114 +ut64_t + * +cck_mask +, + +115 +ut64_t + * +cxi_mask +); + +116 +ut64_t + + +117 +lib_a_v6_pkt_wk_key +( +lib_a + * +ib_a +, + +118  +e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +119 +ut64_t + * +pkts_dr_whout_ru +, + +120 * +ib_a_ru_b_v6_aive +, + +121  +pe_ai_key + * +ai_y_aive +, + +122  +ai_cou_block + (* +p_ai_cou_b +)[ +ai_y_max +], + +123 +ut64_t + * +cck_mask +, + +124 +ut64_t + * +cxi_mask +); + + @VIL/alg/lib_ftp_alg.c + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~"pe_cgDZ_comm.h +" + +37  + ~"pe_ais_comm.h +" + +38  + ~"pe_cgDZ_be.h +" + +39  + ~"hash_func.h +" + +40  + ~"lib_p_g.h +" + +41  + ~"vnf_comm.h +" + +42  + ~"pe_comm_be.h +" + +43  + ~"e__t.h +" + +44  + ~"e_xn_ackg.h +" + +45  + #ALG_DEBUG + 1 + + ) + +48 +ut8_t + + +49 +e___xn_hashkey +( + +50 +ut32_t + * +c_addr +, + +51 +ut32_t + * +d_addr +, + +52 +ut16_t + +c_pt +, + +53 +ut16_t + +d_pt +, + +54 +ut8_t + +o +, + +55 +ut32_t + * +key +, + +56 +ut8_t + +ty +); + +59  +e_mbuf + * + glib_g_pkt +; + +60 um { + mPRIVATE +, + mPUBLIC +}; + +61  +e_hash_ms + + gp_g_hash_ms + = { + +62 . +me + = "FTP ALG", + +63 . + gs + = 1024, + +64 . + grved + = 0, + +65 . + gkey_n + = ( +p_g_key +), + +66 . + ghash_func + = +e_jhash +, + +67 . + ghash_func__v + = 0, + +70  +e_hash + * + gp_g_hash_hd +; + +75  + $lib_p_g_ +() + +77 + `tf +("NAT FTP ALG initialization ...\n"); + +81 +p_g_hash_hd + = + `e_hash_ +(& +p_g_hash_ms +); + +83 #ifde +ALGDBG + + +84 i( +p_g_hash_hd + = +NULL +) + +85 + `tf +("FTP ALGte_hash_create failed ...\n"); + +87 + `tf +("ftp_alg_hash_table %p\n\n", + +88 (*) +p_g_hash_hd +); + +91 + } +} + +99  +p_g_b_y + * + $ve_p_g_y +( +p_g_key + +g_key +) + +101  +p_g_b_y + * +t_g_da + = +NULL +; + +102 +g_key +. +fr1 + = 0; + +103 +g_key +. +fr2 + = 0; + +105  +t + = + `e_hash_lookup_da +( +p_g_hash_hd +, & +g_key +, + +106 (**)& +t_g_da +); + +107 i( +t + < 0) { + +108 #ifde +ALGDBG + + +109 + `tf +("alg-hashookup failedet %d, EINVAL %d, ENOENT %d\n", + +110 +t +, +EINVAL +, +ENOENT +); + +113  +t_g_da +; + +116  +NULL +; + +117 + } +} + +124  + $move_p_g_y +( +ut32_t + +addr +, +ut8_t + +ptid +) + +129  +p_g_key + +g_key +; + +130 +g_key +. +l4pt + = + `e_bsw16 +( +ptid +); + +131 +g_key +. +_addss + = + `e_bsw32 +( +addr +); + +132 +g_key +. +fr1 + = 0; + +133 +g_key +. +fr2 + = 0; + +135 #ifde +ALGDBG + + +136 + `tf +("move_g_y i%x,܈%d\n", +g_key +. +_addss +, + +137 +g_key +. +l4pt +); + +139  + `e_hash_d_key +( +p_g_hash_hd +, & +g_key +); + +140 + } +} + +147 + $puϋ_p_g_y +( +ut32_t + +addr +, +ut8_t + +ptid +) + +151  +p_g_key + +g_key +; + +152 +g_key +. +l4pt + = + `e_bsw16 +( +ptid +); + +154 +g_key +. +_addss + = + `e_bsw32 +( +addr +); + +155 +g_key +. +fr1 + = 0; + +156 +g_key +. +fr2 + = 0; + +161 #ifde +ALGDBG + + +162 + `tf +("puϋ_p_g_y i%x,܈%d\n", +g_key +. +_addss +, + +163 +g_key +. +l4pt +); + +166  +p_g_b_y + * +w_g_da + = + +167 + `ve_p_g_y +( +g_key +); + +168 i( +w_g_da +) { + +169 #ifde +ALGDBG + + +170 + `tf +("g_yxi%x,܈%d\n", +g_key +. +_addss +, + +171 +g_key +. +l4pt +); + +176 +w_g_da + = ( +p_g_b_y + *) + +177 + `mloc +(( +w_g_da +)); + +179 +w_g_da +-> +l4pt + = + `e_bsw16 +( +ptid +); + +180 +w_g_da +-> +_addss + = + `e_bsw32 +( +addr +); + +181 + `e_hash_add_key_da +( +p_g_hash_hd +, & +g_key +, +w_g_da +); + +183 #ifde +ALGDBG + + +185 +tf + + +187 ( +g_key +. +_addss + >> 24), + +188 (( +g_key +. +_addss + & 0x00ff0000) >> 16), + +189 (( +g_key +. +_addss + & 0x0000ff00) >> 8), + +190 (( +g_key +. +_addss + & 0x000000ff)), +ptid +); + +192 + `puts +(""); + +194 + } +} + +202  + $p_g_modify_yld +( + +203  +cgDZ_b_y + * +egss_y +, + +204 * +pt_rg +, + +205 * +pt_rg_ed +,  +p_ssi_ty +) + +207 +ut32_t + +t_ +; + +208 +ut16_t + +t_pt +; + +209 +ut16_t + +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +; + +210 +ut16_t + +w_pt_rg_ngth +; + +212 +ut8_t + * +br_public_addss +; + +214 +t_ + = +egss_y +-> +da +. +pub_ +; + +215 +t_pt + = +egss_y +-> +da +. +pub_pt +; + +216 +tmp5 + = ( +ut16_t +( +t_pt +/0x100); + +217 +tmp6 + = ( +ut16_t +( +t_pt + % 0x100); + +219 +t_ + = + `e_bsw32 +(transport_ip); + +221 +br_public_addss + = ( +ut8_t + *& +t_ +; + +223 +tmp4 + = +br_public_addss +[3]; + +224 +tmp3 + = +br_public_addss +[2]; + +225 +tmp2 + = +br_public_addss +[1]; + +226 +tmp1 + = +br_public_addss +[0]; + +228 i( +p_ssi_ty + == 1) + +229 + `rtf +( +pt_rg_ed +, +FTP_PASV_PARAMETER_STRING +, + +230 +FTP_PASV_RETURN_CODE +, +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, + +231 +tmp5 +, +tmp6 +); + +233 + `rtf +( +pt_rg_ed +, +FTP_PORT_PARAMETER_STRING +, + +234 +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +); + +235 #ifde +ALGDBG + + +236 + `tf +("FTP ALG: FTPew string: Len:%d %s\n", + +237 ( +ut16_t + + ` +( +pt_rg_ed +)-2, + +238 +pt_rg_ed +); + +240 + `tf +("FTPonranslated PASV string: Len:%d, %s\n", + +241 ( +ut16_t +) + ` +( +pt_rg +)-2,ort_string); + +242 + `tf +("old strlen:%dew strlen:%d\n", + +243 () + ` +( +pt_rg +), + +244 () + ` +( +pt_rg_ed +)); + +247 ( +w_pt_rg_ngth + = + +248 ( +ut16_t + + ` +( +pt_rg_ed +)); + +249 + } +} + +256  +le +  + $p_g_modify_pkt_n +( +e_mbuf + * +pkt +) + +258 +ut16_t + +pkt_ngth + = 0; + +259  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +pkt +); + +260 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +262 i( +_hdr_size_bys + = +IPv4_HEADER_SIZE +) { + +263  +v4_hdr + * +ihdr4 + = (v4_hd*) +hdr +; + +264 +pkt_ngth + = + `e_bsw16 +( +ihdr4 +-> +tٮ_ngth ++ +ETH_HDR_SIZE +; + +265 } i( +_hdr_size_bys + = +IPv6_HEADER_SIZE +) { + +266  +v6_hdr + * +ihdr6 + = (v6_hd*) +hdr +; + +267 +pkt_ngth + = + `e_bsw16 +( +ihdr6 +-> +yld_n +) + + +268 +IPv6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +271 +ut16_t + +mbuf_pkt_ngth + = + `e_pktmbuf_pkt_n +( +pkt +); + +273 i( +pkt_ngth + = +mbuf_pkt_ngth +) + +276 i( +pkt_ngth + < +mbuf_pkt_ngth +) { + +277 + `e_pktmbuf_im +( +pkt +, +mbuf_pkt_ngth + - +pkt_ngth +); + +282 + `e_pktmbuf_nd +( +pkt +, +pkt_ngth + - +mbuf_pkt_ngth +); + +283 + } +} + +292 +ut16_t + + $p_g_g_IP_hdr_size +( +e_mbuf + * +pkt +) + +298 +ut8_t + +hdr_chk + = + `RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +299 +hdr_chk + = hdr_chk >> 4; + +301 i( +hdr_chk + = +IP_VERSION_4 +) + +302  +IPv4_HEADER_SIZE +; + +303 i( +hdr_chk + = +IP_VERSION_6 +) + +304  +IPv6_HEADER_SIZE +; + +308 + } +} + +316  + $p_g_compu_checksums +( + +317 * +i_hdr +, + +318  +t_hdr + * +t_hdr +) + +328 +t8_t + +hdr_chk + = + `e__vsi +( +i_hdr +); + +329 +t_hdr +-> +cksum + = 0; + +331 i( +hdr_chk + = +IP_VERSION_4 +) { + +332  +v4_hdr + * +i4_hdr + = (v4_hd*) +i_hdr +; + +333 +i4_hdr +-> +hdr_checksum + = 0; + +334 +t_hdr +-> +cksum + = 0; + +335 +t_hdr +-> +cksum + = + `e_v4_ud_cksum +( +i4_hdr +,_hdr); + +337 #ifde +ALGDBG + + +338 + `tf +("cksum %x\n", + `e_bsw32 +( +t_hdr +-> +cksum +)); + +341 +i4_hdr +-> +hdr_checksum + = + `e_v4_cksum +(i4_hdr); + +342 } i( +hdr_chk + = +IP_VERSION_6 +) { + +343  +v6_hdr + * +i6_hdr + = (v6_hd*) +i_hdr +; + +344 +t_hdr +-> +cksum + = 0; + +345 +t_hdr +-> +cksum + = + `e_v6_ud_cksum +( +i6_hdr +,_hdr); + +347 + } +} + +356  + $p_g_adju_t_ack +( +e_mbuf + * +pkt +, +t16_t + +ackSeqdiff +) + +359 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +360  +v4_hdr + * +hdr + = (ipv4_hdr *) + +361 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +362  +t_hdr + * +thdr + = (tcp_hdr *) + +363 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +364 +IP_START + + +_hdr_size_bys +); + +369 +ut32_t + +mp +; + +370 +mp + = + `e_bsw32 +( +thdr +-> +cv_ack +); + +372 i( +ackSeqdiff + < 0) + +373 +mp + + + `abs +( +ackSeqdiff +); + +375 +mp + - + `abs +( +ackSeqdiff +); + +377 +thdr +-> +cv_ack + = + `e_bsw32 +( +mp +); + +378 + } +} + +386  + $p_g_adju_t_q +( +e_mbuf + * +pkt +, +t16_t + +ackSeqdiff +) + +389 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +390  +v4_hdr + * +hdr + = (ipv4_hdr *) + +391 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +392  +t_hdr + * +thdr + = (tcp_hdr *) + +393 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +394 +IP_START + + +_hdr_size_bys +); + +395 +ut32_t + +mp +; + +397 +mp + = + `e_bsw32 +( +thdr +-> +_q +); + +398 i( +ackSeqdiff + < 0) + +399 +mp + - + `abs +( +ackSeqdiff +); + +401 +mp + + + `abs +( +ackSeqdiff +); + +403 +thdr +-> +_q + = + `e_bsw32 +( +mp +); + +404 + } +} + +414  + $p_g_d_t_qu +( + +415  +e_mbuf + * +pkt +, + +416 * +pt_rg +, + +417 +t16_t + +exig_tSeqdiff +, + +418 +ut16_t + +d_pt_rg_ngth +, + +419 +ut16_t + +w_pt_rg_ngth +) + +421 +t16_t + +cut_qu_numb_d +=0; + +422 +t16_t + +f_qu_numb_d +; + +424 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +425  +v4_hdr + * +hdr + = (ipv4_hdr *) + +426 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +427  +t_hdr + * +thdr + = (tcp_hdr *) + +428 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +429 +IP_START + + +_hdr_size_bys +); + +434 +cut_qu_numb_d + = ( +t16_t +( +w_pt_rg_ngth + - + +435 +d_pt_rg_ngth +); + +436 +hdr +-> +tٮ_ngth + = + `e_bsw16 +(iphdr->total_length); + +438 #ifde +ALGDBG + + +439 + `tf +("tٮ_ngth :%u\n", +hdr +-> +tٮ_ngth +); + +441 if( +cut_qu_numb_d + < 0) + +442 +hdr +-> +tٮ_ngth + - + `abs +( +cut_qu_numb_d +); + +444 +hdr +-> +tٮ_ngth + + +cut_qu_numb_d +; + +446 +hdr +-> +tٮ_ngth + = + `e_bsw16 +(iphdr->total_length); + +447 i( +exig_tSeqdiff + !=0) + +448 + `p_g_adju_t_q +( +pkt +, +exig_tSeqdiff +); + +449 +f_qu_numb_d + +cut_qu_numb_d + + +exig_tSeqdiff +; + +450  +f_qu_numb_d +; + +451 + } +} + +462  + $p_g_dpi +( + +463  +pe_cgDZ + * +p_t +, + +464  +pe_cgDZ_y_key + * +t_y_key +, + +465  +e_mbuf + * +pkt +, + +466  +e__xn_ack + * +cgt_xn_ack +, + +467 +t32_t + +_posi +, + +468 +ut8_t + +dei +) + +476 * +pt_cmd_rg +; + +477 * +pt_cmd_d_rg +; + +478 * +t_hd_d +; + +479 * +t_t +; + +482 +ut16_t + +ive_pt_numb +; + +483 +ut16_t + +public_pt_numb +; + +484 +ut16_t + +1 +, +2 +, +3 +, +4 +, +pt1 +, +pt2 +; + +485 +t16_t + +tSeqdiff +; + +486 +t16_t + +ackSeqdiff +, +ackAdju +; + +487 +ut32_t + +ive_addss +; + +488 +ut32_t + +public_addss +; + +489 +ut8_t + * +br_ive_addss +; + +491  +pt_rg +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +492  +pt_rg_ed +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +493 +t16_t + +w_pt_rg_ngth +; + +494 +t16_t + +d_pt_rg_ngth +; + +495  +dummy_vue +; + +496  +cgDZ_b_y + * +egss_y +, * +gss_y +; + +497 +ut32_t + +_key +[10]; + +498 +ut8_t + +key_dei +; + +500 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +502  +v4_hdr + * +_hdr + = + `e_pktmbuf_mtod_offt +( +pkt +, + +503  +v4_hdr + *, ( +h_hdr +)); + +507  +t_hdr + * +thdr + = + `e_pktmbuf_mtod_offt +( +pkt +, tcp_hdr *, + +508 (( +h_hdr +)+( +v4_hdr +))); + +509 +ut16_t + +c_pt + = + `e_bsw16 +( +thdr +->src_port); + +510 +ut16_t + +d_pt + = + `e_bsw16 +( +thdr +->dst_port); + +511 +ut8_t + +o + = +_hdr +-> +xt_o_id +; + +512 +ut32_t + +c_addr + = + `e_bsw32 +( +_hdr +->src_addr); + +513 +ut32_t + +d_addr + = + `e_bsw32 +( +_hdr +->dst_addr); + +514 +ut32_t + +tmp_t_ylod_size +; + +517 - +c_pt + & +d_pt + +checkg + +to + +be + +moved + +om + +cgt + +dpi + + +518 - +F + +cڌ + +chl + + +519 +f + +vidi + +of + +tSeqdiff + +to + +be + +checked + + +520 +IF + < > 0 + +521 + `p_g_t_ack +( +to + +be + + `ed +( +this + +udes + +PORT + + +522 +ڣ + +d + +PASV +eڣ +ack + +as + +wl +) + +523 +Ru + + +524 +ELSE + + +525 +the + +pt +/ +sv + +mr + +checkign + +to + +be + +de + + +526 - +F + +da + +chl + + +527 - +eive + +ALG + +y + + +528 +IF + +found + + +529 - +move + +the + +ALG + +y + + +530 +ev +  +n + + `found +( +found + +s + +too +) + +531 - +t + +the + +byss + +ag + + +h +CT + +ssi + +b + + +535 #ifde +ALGDBG + + +537 + `tf +("p܈numb: %d, %d\n", +c_pt +, +d_pt +); + +538 + `tf +("ftp TCP sequm diff: %d\n", + +539 +cgt_xn_ack +-> +hash_b_s +[ + +540 +_posi +]. +tSeqdiff +); + +541 + `tf +("tcp data offset: %d\n", + +542 (( +thdr +-> +da_off + & 0xf0) >> 2)); + +543 + `tf +("osi idpi:%d\n", +_posi +); + +547 i( +c_pt + =21 || +d_pt + == 21) { + +556 +t_t + = (*) +thdr +; + +559 +pt_cmd_rg + = (* )( +t_t ++(( +thdr +-> +da_off + & 0xf0) >> 2)); + +560 +t_hd_d + = +pt_cmd_rg +; + +562 i( +dei + = +PRIVATE +) { + +564 #ifde +ALGDBG + + +565 + `tf +("In PRIVATE "); + +568 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. +q_ + + +569 + `e_bsw32 +( +thdr +-> +_q +); + +570 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. +ack_ + + +571 + `e_bsw32 +( +thdr +-> +cv_ack +); + +572 #ifde +ALGDBG + + +573 + `tf +("-->Seq_cli:%u, Ack_cli:%u, Len:%4d\n", + +574 + `e_bsw32 +( +thdr +-> +_q +), + +575 + `e_bsw32 +( +thdr +-> +cv_ack +), + +576 ( + `e_bsw16 +( +_hdr +-> +tٮ_ngth +) - + +577 ((( +thdr +-> +da_off + & 0xf0) >> 4) * 4)) - 20); + +581 #ifde +ALGDBG + + +582 + `tf +("In PUBLIC "); + +584 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. +q_rv + + +585 + `e_bsw32 +( +thdr +-> +_q +); + +586 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. +ack_rv + + +587 + `e_bsw32 +( +thdr +-> +cv_ack +); + +588 #ifde +ALGDBG + + +589 + `tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +590 + `e_bsw32 +( +thdr +-> +_q +),_bsw32hdr-> +cv_ack +), + +591 ( +_hdr +-> +tٮ_ngth + - ((( +thdr +-> +da_off + & 0xf0) >> 2)) + +596 i( + `ssnf +( +pt_cmd_rg +, +FTP_PASV_PARAMETER_STRING +, & +dummy_vue +, + +597 & +1 +, & +2 +, & +3 +, & +4 +, & +pt1 +, & +pt2 +) == + +598 +FTP_PASV_PARAMETER_COUNT +){ + +600 + `rtf + ( +pt_rg +, +FTP_PASV_PARAMETER_STRING +, +FTP_PASV_RETURN_CODE +, + +601 +1 +, +2 +, +3 +, +4 +, +pt1 +, +pt2 +); + +603  +i + = 0; + +604  +pt_cmd_rg +[ +i +] != '\r' &&ort_cmd_string[i+1] != '\n') + +605 +i +++; + +607 +i + += 2; + +609 +d_pt_rg_ngth + = +i +; + +611 +ive_pt_numb + = ( +ut16_t +( +pt1 + * 0x100 + +pt2 +); + +612 +br_ive_addss + = ( +ut8_t + *& +ive_addss +; + +614 +br_ive_addss +[3] = ( +ut8_t +( +4 + & 0x00FF); + +615 +br_ive_addss +[2] = ( +ut8_t +( +3 + & 0x00FF); + +616 +br_ive_addss +[1] = ( +ut8_t +( +2 + & 0x00FF); + +617 +br_ive_addss +[0] = ( +ut8_t +( +1 + & 0x00FF); + +621 i( +dei + = +PUBLIC +) { + +628 + `puϋ_p_g_y +( +ive_addss +, +ive_pt_numb +); + +634 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +635 +rv_dei + = +SERVER_IN_PUBLIC +; + +636 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +637 +p_ssi_ty += 1; + +638 } i( +dei + = +PRIVATE +) { + +641  +pe_cgDZ_y_key + +da_chl_key +; + +642 +ive_addss + = + `e_bsw32 +(private_address); + +643 +da_chl_key +. + + = +ive_addss +; + +644 +da_chl_key +. +pt + = +ive_pt_numb +; + +646 +da_chl_key +. +pid + = +pkt +-> +pt +; + +653 #ifde +FTP_ALG + + +654 i( + `add_dymic_cgDZ_y_g +(( +pe + *) +p_t +, + +655 & +da_chl_key +, & +egss_y +, & +gss_y +) == 0){ + +657 #ifde +ALGDBG + + +658 + `tf +("Wrong FTP ALGacket\n"); + +662 +p_t +-> +DZDrݳdPktCou +++; + +664 #ifde +CGNAPT_DEBUGGING + + +665 +p_t +-> +DZDrݳdPktCou4 +++; + +671 +tmp_t_ylod_size + = + `e_bsw16 +( +_hdr +-> +tٮ_ngth +) - + +672 (( +thdr +-> +da_off + & 0xf0>> 2- +_hdr_size_bys +; + +673 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +674 +t_yld_size + = +tmp_t_ylod_size +; + +677 + `puϋ_p_g_y +( +egss_y +-> +da +. +pub_ +, + +678 +egss_y +-> +da +. +pub_pt +); + +680 +w_pt_rg_ngth + = + `p_g_modify_yld +( +egss_y +, + +681 +pt_rg +, + +682 +pt_rg_ed +, 1); + +683 + `y +( +t_hd_d +, +pt_rg_ed +, + +684 + ` +( +pt_rg_ed +)); + +685 +tSeqdiff + = + `p_g_d_t_qu + +pkt +, +pt_rg +, + +686 +cgt_xn_ack +-> +hash_b_s + + +687 [ +_posi +]. +tSeqdiff +, + +688 +d_pt_rg_ngth +, + +689 +w_pt_rg_ngth +); + +692 + `p_g_modify_pkt_n +( +pkt +); + +699 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +700 +g_byss_ag + = +NO_BYPASS +; + +701 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +702 +tSeqdiff + =cpSeqdiff; + +703 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +704 +rv_dei + = +SERVER_IN_PRIVATE +; + +705 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +706 +p_ssi_ty + = 1; + +710 } i( + `ssnf +( +pt_cmd_rg +, +FTP_PORT_PARAMETER_STRING +, + +711 & +1 +, & +2 +, & +3 +, & +4 +, & +pt1 +, & +pt2 +) == + +712 +FTP_PORT_PARAMETER_COUNT +){ + +714  +i + = 0; + +715  +ut8_t + +pt_h +; + +716  +pt_cmd_rg +[ +i +] != '\r' && + +717 +pt_cmd_rg +[ +i ++1] != '\n') + +718 +i +++; + +720 +i + += 2; + +722 +d_pt_rg_ngth + = +i +; + +724 #ifde +ALGDBG + + +725 + `tf +" Exig Seq Dif%d", +cgt_xn_ack +-> + +726 +hash_b_s +[ +_posi +]. +tSeqdiff +); + +727 + `tf +("FTP ALG: FTP PORT commandength: %d\n", + +728 +d_pt_rg_ngth +); + +731 +ive_pt_numb + = ( +ut16_t +( +pt1 + * 0x100 + +pt2 +); + +733 #ifde +ALGDBG + + +734 + `tf +("FTP ALG:rivateortumber before swap: %u\n", + +735 +ive_pt_numb +); + +738 +br_ive_addss + = ( +ut8_t + *& +ive_addss +; + +739 +br_ive_addss +[3] = ( +ut8_t +( +4 + & 0x00FF); + +740 +br_ive_addss +[2] = ( +ut8_t +( +3 + & 0x00FF); + +741 +br_ive_addss +[1] = ( +ut8_t +( +2 + & 0x00FF); + +742 +br_ive_addss +[0] = ( +ut8_t +( +1 + & 0x00FF); + +744 + `rtf +( +pt_rg +, +FTP_PORT_PARAMETER_STRING +, +1 +, +2 +, + +745 +3 +, +4 +, +pt1 +, +pt2 +); + +747 #ifde +ALGDBG + + +748 + `tf +("FTP ALG: FTP original PORT string: %d,%s\n", + +749 ( + ` +( +pt_rg +)-2,ort_string); + +750 + `tf +("vddr: %x\n", +ive_addss +); + +754 i( +dei + = +PUBLIC +) { + +760  +pe_cgDZ_y_key + +da_chl_key +; + +761 +da_chl_key +. + + = +ive_addss +; + +762 +da_chl_key +. +pt + = +ive_pt_numb +; + +763 +da_chl_key +. +pid + = 0xffff; + +766 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +767 +rv_dei + = +SERVER_IN_PRIVATE +; + +768 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +769 +p_ssi_ty += 0; + +772 #ifde +ALGDBG + + +773 + `tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +774 + `e_bsw32 +( +thdr +-> +_q +), + +775 + `e_bsw32 +( +thdr +-> +cv_ack +), + +776 ( +_hdr +-> +tٮ_ngth + - + +777 ((( +thdr +-> +da_off + & 0xf0) >> 2)) - 20)); + +779 + `puϋ_p_g_y +( +ive_addss +, +ive_pt_numb +); + +780 } i( +dei + = +PRIVATE +) { + +786  +pe_cgDZ_y_key + +da_chl_key +; + +787 +ive_addss + = + `e_bsw32 +(private_address); + +788 +da_chl_key +. + + = +ive_addss +; + +789 +da_chl_key +. +pt + = +ive_pt_numb +; + +791 +da_chl_key +. +pid + = +pkt +-> +pt +; + +800 #ifde +FTP_ALG + + +801 i( + `add_dymic_cgDZ_y_g +(( +pe + *) + +802 +p_t +, & +da_chl_key +, & +egss_y +, + +803 & +gss_y +) == 0){ + +805 #ifde +ALGDBG + + +806 + `tf +("Wrong FTP ALGacket\n"); + +809 +p_t +-> +DZDrݳdPktCou +++; + +811 #ifde +CGNAPT_DEBUGGING + + +812 +p_t +-> +DZDrݳdPktCou4 +++; + +818 +tmp_t_ylod_size + = + `e_bsw16 +( +_hdr +-> +tٮ_ngth +) - + +819 (( +thdr +-> +da_off + & 0xf0) >> 2) - + +820 +_hdr_size_bys +; + +821 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +822 +t_yld_size + = +tmp_t_ylod_size +; + +825 + `puϋ_p_g_y +( +egss_y +-> +da +. +pub_ +, + +826 +egss_y +-> +da +. +pub_pt +); + +828 +w_pt_rg_ngth + = + `p_g_modify_yld +( +egss_y +, + +829 +pt_rg +, + +830 +pt_rg_ed +, 0); + +831 + `y +( +t_hd_d +, +pt_rg_ed +, + +832 + ` +( +pt_rg_ed +)); + +833 +tSeqdiff + = + `p_g_d_t_qu + +pkt +, +pt_rg +, + +834 +cgt_xn_ack +-> +hash_b_s + + +835 [ +_posi +]. +tSeqdiff +, + +836 +d_pt_rg_ngth +, + +837 +w_pt_rg_ngth +); + +839 + `p_g_modify_pkt_n +( +pkt +); + +848 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +849 +g_byss_ag + = +NO_BYPASS +; + +850 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +851 +tSeqdiff + =cpSeqdiff; + +852 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +853 +rv_dei + = +SERVER_IN_PUBLIC +; + +854 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. + +855 +p_ssi_ty + = 0; + +857 #ifde +ALGDBG + + +858 + `tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +859 + `e_bsw32 +( +thdr +-> +_q +), + +860 + `e_bsw32 +( +thdr +-> +cv_ack +), + +861 ( +_hdr +-> +tٮ_ngth + - + +862 ((( +thdr +-> +da_off + & 0xf0) >> 2)) - 20)); + +869 i(( +ackAdju += +cgt_xn_ack +-> +hash_b_s +[ + +870 +_posi +]. +tSeqdiff +) != 0) { + +871 i( +dei + = +PRIVATE +) { + +873 +cgt_xn_ack +-> +hash_b_s + + +874 [ +_posi +]. +q_ + != + +875 +cgt_xn_ack +-> +hash_b_s + + +876 [ +_posi +]. +ack_rv +) { + +877  +Seqhs +; + +878 + `p_g_adju_t_q + +pkt +, +ackAdju +); + +879 +tmp_t_ylod_size + = + `e_bsw16 +( + +880 +_hdr +-> +tٮ_ngth +) - + +881 (( +thdr +-> +da_off + & 0xf0) >> 2) - + +882 +_hdr_size_bys +; + +883 +cgt_xn_ack +-> +hash_b_s + + +884 [ +_posi +]. +t_yld_size + = +tmp_t_ylod_size +; + +885 #ifde +ALGDBG + + +886 + `tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +887 + `e_bsw32 +( +thdr +-> +_q +), + +888 + `e_bsw32 +( +thdr +-> +cv_ack +), + +889 ( +_hdr +-> +tٮ_ngth + -((( +thdr +-> +da_off + & 0xf0) >> 2))- 20)); + +893 i( +cgt_xn_ack +-> +hash_b_s + + +894 [ +_posi +]. +ack_rv + != + +895 ( +cgt_xn_ack +-> +hash_b_s + + +896 [ +_posi +]. +q_ + + + +897 +cgt_xn_ack +-> +hash_b_s + + +898 [ +_posi +]. +t_yld_size +)) { + +899  +Ackhs +; + +900 + `p_g_adju_t_ack + +pkt +, +ackAdju +); + +901 #ifde +ALGDBG + + +902 + `tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +903 + `e_bsw32 +( +thdr +-> +_q +), + +904 + `e_bsw32 +( +thdr +-> +cv_ack +), + +905 ( +_hdr +-> +tٮ_ngth + -((( +thdr +-> +da_off + & 0xf0) >> 2))- 20)); + +914 #ifde +ALGDBG + + +915 + `tf +("In Data Channel \n"); + +917 + `move_p_g_y + ( +d_addr +, +d_pt +); + +918 +cgt_xn_ack +-> +hash_b_s +[ +_posi +]. +g_byss_ag + = +BYPASS +; + +920 + } +} + + @VIL/alg/lib_ftp_alg.h + +16 #ide +__INCLUDE_LIB_FTP_ALG_H__ + + +17  + #__INCLUDE_LIB_FTP_ALG_H__ + + + ) + +18  + ~"e_h.h +" + +19  + ~"e__t.h +" + +21  + #META_DATA_OFFSET + 128 + + ) + +22  + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +23  + #ETH_HDR_SIZE + 14 + + ) + +24  + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +25  + #PROTOCOL_START + ( +IP_START + + 9) + + ) + +26  + #TCP_START + ( +IP_START + + +IP_V4_HEADER_SIZE +) + + ) + +27  + #TCP_MIN_HDR_SIZE + 20 + + ) + +29  + #RTE_TCP_PROTO_ID + 6 + + ) + +30  + #RTE_SP_DEFAULT_TTL + 64 + + ) + +32  + #RTE_SYNPROXY_MAX_SPOOFED_PKTS + 64 + + ) + +34  + #RTE_TCP_SYN + 0x02 + + ) + +35  + #RTE_TCP_ACK + 0x10 + + ) + +36  + #RTE_TCP_SYN_ACK + ( +RTE_TCP_SYN + | +RTE_TCP_ACK +) + + ) + +37  + #IP_VERSION_4 + 4 + + ) + +38  + #IP_VERSION_6 + 6 + + ) + +39  + #IPv4_HEADER_SIZE + 20 + + ) + +40  + #IPv6_HEADER_SIZE + 40 + + ) + +44 + ep_g_byss + { + +45 + mNO_BYPASS +, + +46 + mBYPASS + + +49 + ep_g_mode + { + +50 + mFTP_ALG_PORT +, + +51 + mFTP_ALG_PASV + + +53 + ep_g_dei + { + +54 + mSERVER_IN_PRIVATE +, + +55 + mSERVER_IN_PUBLIC + + +57 + ephy_pt + { + +58 + mPRIVATE_PORT +, + +59 + mPUBLIC_PORT + + +62  + sp_g_key + { + +63 +ut32_t + + m_addss +; + +64 +ut16_t + + ml4pt +; + +65 +ut8_t + + mfr1 +; + +66 +ut8_t + + mfr2 +; + +68  + sp_g_b_y + { + +69 +ut32_t + + m_addss +; + +70 +ut16_t + + ml4pt +; + +71 +ut8_t + + mp_g_mode +; + +72 +ut8_t + + mp_g_dei +; + +73 +ut32_t + + mssi_id +; + +74 +ut8_t + + mg_byss_ag +; + +75 +ut8_t + + mdummy +; + +76 +ut8_t + + mdummy1 +; + +78 } + g__e_che_igd +; + +80  + #FTP_SERVER_PORT + 21 + + ) + +81  + #FTP_PORT_STRING + "PORT" + + ) + +82  + #FTP_PORT_PARAMETER_STRING + "PORT %hu,%hu,%hu,%hu,%hu,%hu\r\n" + + ) + +83  + #FTP_PORT_PARAMETER_COUNT + 6 + + ) + +84  + #FTP_PORT_RESPONSE_STRING + "200 PORT commd sucssful.\r\n" + + ) + +85  + #FTP_PORT_STRING_END_MARKER + '\n' + + ) + +86  + #FTP_MAXIMUM_PORT_STRING_LENGTH + 60 + + ) + +87  + #FTP_PASV_STRING + "PASV" + + ) + +88  + #FTP_PASV_PARAMETER_STRING + "%d Eg PassivMod(%hu,%hu,%hu,%hu,%hu,%hu)\r\n" + + ) + +89  + #FTP_PASV_PARAMETER_COUNT + 7 + + ) + +90  + #FTP_PASV_STRING_END_MARKER + '\n' + + ) + +91  + #FTP_PASV_RETURN_CODE + 227 + + ) + +93  +p_g_dpi +( + +94  +pe_cgDZ + * +p_t +, + +95  +pe_cgDZ_y_key + * +t_y_key +, + +96  +e_mbuf + * +pkt +, + +97  +e__xn_ack + * +cgt_xn_ack +, + +98 +t32_t + +_posi +, + +99 +ut8_t + +dei +); + +100  +lib_p_g_ +(); + +101 +t8_t + +e__vsi +(* +i_hdr +); + + @VIL/alg/lib_sip_alg.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +40  + ~"pe_ais_comm.h +" + +41  + ~"hash_func.h +" + +42  + ~"lib_s_g.h +" + +43  + ~"vnf_comm.h +" + +44  + ~"pe_comm_be.h +" + +46  + #SIP_ALG_SIP + "SIP" + + ) + +47  + #SIP_ALG_200_OK + "200 OK" + + ) + +48  + #SIP_ALG_INVITE + "INVITE" + + ) + +49  + #SIP_ALG_BYE + "BYE" + + ) + +50  + #SIP_ALG_TRYING + "100 Tryg" + + ) + +51  + #SIP_ALG_RINGING + "180 Rgg" + + ) + +52  + #SIP_ALG_ACK + "ACK" + + ) + +53  + #SIP_ALG_CONTACT + "Cڏ" + + ) + +54  + #SIP_ALG_CONTENT_LEN + "Cڋ-Lgth" + + ) + +55  + #SIP_ALG_VIA + "V" + + ) + +56  + #SIP_ALG_FROM + "From" + + ) + +57  + #SIP_ALG_TO + "To" + + ) + +58  + #SIP_ALG_CALLID + "Cl-ID" + + ) + +59  + #SIP_ALG_RTP + "RTP" + + ) + +60  + #SIP_ALG_RTCP + "a=RTCP" + + ) + +61  + #SIP_ALG_CANCEL + "CANCEL" + + ) + +62  + #SIP_ALG_CONTYPE + "Cڋ-Ty" + + ) + +63  + #SIP_ALG_APPSDP + "iti/sdp" + + ) + +64  + #SIP_ALG_CSEQ + "CSeq" + + ) + +65  + #SIP_ALG_AUDIO + "mudio" + + ) + +66  + #SIP_ALG_DOUBLE_CRLF + "\r\n\r\n" + + ) + +67  + #SIP_ALG_CRLF + "\r\n" + + ) + +68  + #SIP_ALG_AT + "@" + + ) + +69  + #SIP_ALG_GREAT + ">" + + ) + +70  + #SIP_ALG_OWNER + "o=" + + ) + +71  + #SIP_ALG_IPV4 + "IP4" + + ) + +72  + #SIP_ALG_CONN + "c=" + + ) + +73  + #SIP_ALG_REMOTE_PARTY_ID + "Reme-Pty-ID" + + ) + +74  + #SIP_ALG_SPACE + " " + + ) + +75  + #SIP_ALG_SEMICOLON + ";" + + ) + +77  + #SIP_DEFAULT_L4PORT + 5060 + + ) + +79  + #SIP_ALG_INVITE_MSGTYPE + 1 + + ) + +80  + #SIP_ALG_BYE_MSGTYPE + 2 + + ) + +81  + #SIP_ALG_200_OK_INVITE_MSGTYPE + 3 + + ) + +82  + #SIP_ALG_200_OK_BYE_MSGTYPE + 4 + + ) + +83  + #SIP_ALG_TRYING_RINGING_MSGTYPE + 5 + + ) + +84  + #SIP_ALG_ACK_MSGTYPE + 6 + + ) + +86  + #MAX_NUM_SIP_ALG_ENTRIES + 16384 + + ) + +88  + #SIP_ALG_VIA_FIELD_IPADDR + 14 + + ) + +89  + #SIP_ALG_CTAC_FIELD_IPADDR + 7 + + ) + +91  + #ADDRESS_PORT_STRING + 1 + + ) + +92  + #PORT_STRING + 2 + + ) + +94  + #MAX_ADDR_PORT_SIZE + 30 + + ) + +95  + #MAX_ADDR_SIZE + 20 + + ) + +96  + #MAX_PORT_SIZE + 10 + + ) + +97  + #MAX_SIP_UDP_MSG_SIZE + 2000 + + ) + +99  + #ALG_DEBUG + 0 + + ) + +101 um { + mFALSE +, + mTRUE + }; + +103  +e_mempo + * + glib_g_pktmbuf_tx_po +; + +105  +e_mbuf + * + glib_g_pkt +; + +107  +e_hash_ms + + gs_g_hash_ms + = { + +108 . +me + = +NULL +, + +109 . + gs + = +MAX_NUM_SIP_ALG_ENTRIES +, + +110 . + grved + = 0, + +111 . + gkey_n + = ( +s_g_key +), + +112 . + ghash_func + = +e_jhash +, + +113 . + ghash_func__v + = 0, + +114 . + gexa_ag + = 1, + +117  +e_hash + * + gs_g_hash_b +; + +119  +s_g_b_y + * + gs_g_b +[ +MAX_NUM_SIP_ALG_ENTRIES +]; + +121 * +s_g_oss +( +e_mbuf + * +pkt +, + +122 +ut16_t + +pkt_dei +, ut16_ +_dei +, + +123 +ut16_t + +msgTy +, +ut32_t + +modIp +, + +124 +ut16_t + +modL4Pt +, +ut32_t + +pubIp +, + +125 +ut16_t + +pubL4Pt +, ut16_ +modRPt +, + +126 +ut16_t + +modRtPt +, ut16_* +diffModSL +); + +127 * +gSClIdS +(* +pMsg +); + +128 * +tSAlgModifyPayldAddrPt +(* +pSMsg +, ** +pSMsgEnd +, + +129 +ut32_t + +dSL +, ut32_* +diffL +, + +130 +ut32_t + +pub_ +, +ut16_t + +pub_pt +, + +131 +ut32_t + +ty +); + +132 * +tSAlgAdjuMsg +(* +pSMsg +, ** +pSMsgEnd +, + +133 +ut32_t + +wSL +, ut32_ +dSL +); + +137  + $lib_s_g_ +() + +139 * +s + = + `e_zmloc +( +NULL +, 64, +RTE_CACHE_LINE_SIZE +);; + +140  +sockid + = 0; + +142 if(! +s +){ + +143 + `tf +("NAT SIP ALG Init failed\n"); + +146 + `tf +( +s +, + ` +(s), "v4_s_g_hash_%d", +sockid +); + +147 + `tf +("NAT SIP ALG initialization ...\n"); + +150 +s_g_hash_ms +. +sock_id + = +SOCKET_ID_ANY +; + +151 +s_g_hash_ms +. +me + = +s +; + +152 +s_g_hash_b + = + `e_hash_ +(& +s_g_hash_ms +); + +154 i( +s_g_hash_b + = +NULL +) { + +155 + `tf +("SIP ALGte_hash_create failed. socket %d ...\n", + +156 +s_g_hash_ms +. +sock_id +); + +157 + `e_ex +(0, "SIP ALGte_hash_create failed"); + +159 + `tf +("s_g_hash_b %p\n\n", (*) +s_g_hash_b +); + +162 + } +} + +164 * + +( +n +); + +165 * + $ +( +n +) + +167  +n + = +n + =0 ? 1 : + `o +( + `log10l +( + `bs +(n))) + 1; + +169 i( +n + < 0) + +170 +n +++; + +172 * +buf + = + `oc +((), +n + + 1); + +173 if( +buf + ! +NULL +) + +174 + `tf +( +buf +, +n + + 1, "%ld", +n +); + +175  +buf +; + +176 + } +} + +178  +s_g_b_y + * +ve_s_g_y +( + +179  +s_g_key + * +g_key +); + +181  +s_g_b_y + * + $ve_s_g_y +( + +182  +s_g_key + * +g_key +) + +184  +s_g_b_y + * +s_g_da + = +NULL +; + +186  +t + = + `e_hash_lookup +( +s_g_hash_b +, +g_key +); + +188 i( +t + < 0) { + +189 #ifde +ALGDBG + + +190 + `tf +("alg-hashookup failedet %d, " + +192 +t +, +EINVAL +, +ENOENT +); + +195 +s_g_da + = +s_g_b +[ +t +]; + +196  +s_g_da +; + +199  +NULL +; + +200 + } +} + +203  + $move_s_g_y +( +ut32_t + +addr +, +ut16_t + +ptid +) + +205  +s_g_key + +g_key +; + +206 * +s_g_y_da +; + +207  +t +; + +209 +g_key +. +l4pt + = +ptid +; + +210 +g_key +. +_addss + = +addr +; + +211 +g_key +. +fr1 + = 0; + +212 +g_key +. +fr2 + = 0; + +214 i( +ALG_DEBUG +) + +215 + `tf +("move_s_y i%x,܈%d\n", +g_key +. +_addss +, + +216 +g_key +. +l4pt +); + +218 +t + = + `e_hash_lookup +( +s_g_hash_b +, & +g_key +); + +219 i( +t + < 0) { + +220 i( +ALG_DEBUG +) + +221 + `tf +("removesipalgentry: " + +223 +t +); + +227 +s_g_y_da + = +s_g_b +[ +t +]; + +229 + ` +( +s_g_y_da +); + +230 + `e_hash_d_key +( +s_g_hash_b +, & +g_key +); + +233 + } +} + +239  +puϋ_s_g_y +( +ut32_t + +addr +, +ut16_t + +ptid +, + +240 * +s__id +, +ut8_t + +_dei +, + +241 +s_g_pt_ty + +pt_ty +); + +242  + $puϋ_s_g_y +( +ut32_t + +addr +, +ut16_t + +ptid +, + +243 * +s__id +, +ut8_t + +_dei +, + +244 +s_g_pt_ty + +pt_ty +) + +246  +s_g_key + +g_key +; + +248 +g_key +. +l4pt + = +ptid +; + +249 +g_key +. +_addss + = +addr +; + +250 +g_key +. +fr1 + = 0; + +251 +g_key +. +fr2 + = 0; + +252  +t +; + +254 i( +ALG_DEBUG +) + +255 + `tf +("populate_sip_alg_entryort %d, ip %x\n", + +256 +g_key +. +l4pt +,lg_key. +_addss +); + +258  +s_g_b_y + * +w_g_da + = + +259 + `ve_s_g_y +(& +g_key +); + +261 i( +w_g_da +) { + +262 i( +ALG_DEBUG +) + +263 + `tf +("sip_alg_entryxists ip%x,ort %d\n", + +264 +g_key +. +_addss +,lg_key. +l4pt +); + +268 +w_g_da + = +NULL +; + +269 +w_g_da + = ( +s_g_b_y + *) + +270 + `mloc +(( +s_g_b_y +)); + +271 i( +w_g_da + = +NULL +) { + +272 + `tf +("populate siplgntry:llocation failed\n"); + +276 +w_g_da +-> +l4pt + = +ptid +; + +277 +w_g_da +-> +_addss + = +addr +; + +278 +w_g_da +-> +l4pt_ty + = +pt_ty +; + +279 +w_g_da +-> +s_g__dei + = +_dei +; + +280 + `ry +((*) +w_g_da +-> +s_g__id +, (*) +s__id +); + +281 +w_g_da +-> +fr1 + = 0; + +282 +w_g_da +-> +fr2 + = 0; + +283 +w_g_da +-> +fr3 + = 0; + +285 +t + = + `e_hash_add_key +( +s_g_hash_b +, & +g_key +); + +286 i( +t + < 0) { + +287 + `tf +("puϋ s -_hash_add_key_dERROR %d\n", +t +); + +288 + ` +( +w_g_da +); + +292 +s_g_b +[ +t +] = +w_g_da +; + +294 i( +ALG_DEBUG +) { + +295 + `tf +("SIP_ALG:able update - ip=%x onort=%det=%d\n", + +296 +g_key +. +_addss +, +ptid +, +t +); + +299 + } +} + +301  + $s_g_dpi +( +e_mbuf + * +pkt +, +pkt_d + +pkt_dei +, + +302 +ut32_t + +modIp +, +ut16_t + +modL4Pt +, + +303 +ut32_t + +pubIp +, +ut16_t + +pubL4Pt +, + +304 +ut16_t + +modRPt +, ut16_ +modRtPt +) + +306 +ut16_t + +msgTy + = 0; + +307 +s_g__dei + +_dei + = 0; + +308 +ut32_t + +_addss + = 0; + +309 +ut16_t + +pt + = 0; + +310  +t + = 0; + +311  +v4_hdr + * +_h +; + +312  +h_hdr + * +h_h + = + `e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +313  +udp_hdr + * +udp_h +; + +314 * +pSMsg + = +NULL +; + +315  +s_g_b_y + * +s_g_y +; + +316 * +s__id + = +NULL +; + +317  +pos + = 0; + +318  +s_g_key + +g_key +; + +319 +ut16_t + +diffModSL + = 0; + +321 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +322 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +323 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +325 i( +ALG_DEBUG +) { + +326 + `tf +("%s:ackgth(%u), bufngth(%u)\n", +__func__ +, + +327 + `e_pktmbuf_pkt_n +( +pkt +),kt-> +buf_n +); + +328 + `tf +("%s:a segmaddr(%%p)\n", +__func__ +, + +329 + `e_pktmbuf_ϡg +( +pkt +),kt); + +330 + `tf +("%s: dn(%u, %u)\n", +__func__ +, + `e_pktmbuf_da_n +( +pkt +), + +331 + `e_pktmbuf_da_n +( + `e_pktmbuf_ϡg +( +pkt +))); + +332 + `tf +("%s: bufaddr(%p), da_off(%u),b_gs(%u)\n", +__func__ +, + +333 +pkt +-> +buf_addr +,kt-> +da_off +,kt-> +nb_gs +); + +336 i( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_INVITE +)) { + +338 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0) == + +339 +TRUE +) + +340 +s__id + = + +341 + `gSClIdS +( +pSMsg + + +pos + + + +342 + `TAG_TO_DATAPOS +( +SIP_ALG_CALLID +)); + +344 i( +ALG_DEBUG +) + +345 + `tf +("sgdpi: %d cid %s\n", +__LINE__ +, + +346 +s__id +); + +348 i( +pkt_dei + = +PRIVATE +) { + +349 +_dei + = +SIP_CALL_OUTGOING +; + +350 +_addss + = + `e_bsw32 +( +_h +-> +c_addr +); + +351 +pt + = + `e_bsw16 +( +udp_h +-> +c_pt +); + +352 } i( +pkt_dei + = +PUBLIC +) { + +353 +_dei + = +SIP_CALL_INCOMING +; + +354 +_addss + = +pubIp +; + +355 +pt + = +pubL4Pt +; + +358 i( +ALG_DEBUG +) + +359 + `tf +("0=>sip_alg_dpi:kt_dir(%d), call_dir(%d), " + +361 +pkt_dei +, +_dei +, +_addss +, +pt +); + +364 +t + = + `puϋ_s_g_y +( +_addss +, +pt +, + +365 +s__id +, +_dei +, + +366 +SIP_UDP +); + +367 i( +t + < 0) { + +368 + `tf +("sipalgdpi:populate SIPlg UDPntry failed\n"); + +371 i( +modRPt + != 0) { + +372 +t + = + `puϋ_s_g_y +( +_addss +, +modRPt +, + +373 +s__id +, + +374 +_dei +, +SIP_RTP +); + +375 i( +t + < 0) { + +376 + `tf +("sipalgdpi: " + +381 i( +modRtPt + != 0) { + +382 +t + = + `puϋ_s_g_y +( +_addss +, +modRtPt +, + +383 +s__id +, + +384 +_dei +, +SIP_RTCP +); + +385 i( +t + < 0) { + +386 + `tf +("sipalgdpi: " + +393 +pSMsg + = + +394 + `s_g_oss +( +pkt +, +pkt_dei +, +_dei +, + +395 +SIP_ALG_INVITE_MSGTYPE +, +modIp +, +modL4Pt +, 0, + +396 0, +modRPt +, +modRtPt +, & +diffModSL +); + +403 i( +pkt_dei + = +PRIVATE +) { + +404 +g_key +. +_addss + = + `e_bsw32 +( +_h +-> +c_addr +); + +405 +g_key +. +l4pt + = + `e_bsw16 +( +udp_h +-> +c_pt +); + +407 +g_key +. +_addss + = +pubIp +; + +408 +g_key +. +l4pt + = +pubL4Pt +; + +411 +g_key +. +fr1 + = 0; + +412 +g_key +. +fr2 + = 0; + +413 +s_g_y + = + `ve_s_g_y +(& +g_key +); + +415 i( +ALG_DEBUG +) { + +416 + `tf +("%s: s_g_y_r(%p)\n", +__func__ +, + +417 +s_g_y +); + +418 + `tf +("1=>%s:kt_dir(%d), modIp(%x),modL4Port(%x), " + +420 +__func__ +, +pkt_dei +, +modIp +, +modL4Pt +, + +421 +modRPt +, +modRtPt +, +pubIp +, +pubL4Pt +); + +424 i( +s_g_y +) { + +425 +_dei + = +s_g_y +-> +s_g__dei +; + +426 i( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_BYE +) || + +427 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_CANCEL +)) { + +428 +msgTy + = +SIP_ALG_BYE_MSGTYPE +; + +430  +sAlgPross +; + +431 } i( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_ACK +)) { + +432 +msgTy + = +SIP_ALG_ACK_MSGTYPE +; + +434  +sAlgPross +; + +437 +pSMsg + += 8; + +439 i( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_200_OK +)) { + +441 i( +tSAlgMsgFldPos + + +442 ( +pSMsg +, +SIP_ALG_CSEQ +, & +pos +, 0= +TRUE +) { + +443 * +pBye +; + +445 +pBye + = + +446 +pSMsg + + +pos + + + +447 + `TAG_TO_DATAPOS +( +SIP_ALG_CSEQ +); + +448 + `SKIP_SPACES +( +pBye +); + +450 * +pBye + != ' ') + +451 +pBye +++; + +452 + `SKIP_SPACES +( +pBye +); + +453 i( + `IS_STRING_SAME +( +pBye +, +SIP_ALG_BYE +) + +455 ( +IS_STRING_SAME + + +456 ( +pBye +, +SIP_ALG_CANCEL +))) + +457 +msgTy + = + +458 +SIP_ALG_200_OK_BYE_MSGTYPE +; + +461 +msgTy + = + +462 +SIP_ALG_200_OK_INVITE_MSGTYPE +; + +464 } i( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_TRYING +) || + +465 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_RINGING +)) { + +466 +msgTy + = +SIP_ALG_TRYING_RINGING_MSGTYPE +; + +469 +sAlgPross +: + +470 i( +ALG_DEBUG +) + +471 + `tf +("2=>%s:kt_dir(%d), call_dir(%d), " + +474 +__func__ +, +pkt_dei +, +_dei +, + +475 +msgTy +, +modIp +, +modL4Pt +, +modRPt +, + +476 +modRtPt +); + +478 +pSMsg + = + +479 + `s_g_oss +( +pkt +, +pkt_dei +, +_dei +, + +480 +msgTy +, +modIp +, +modL4Pt +, +pubIp +, + +481 +pubL4Pt +, +modRPt +, +modRtPt +, + +482 & +diffModSL +); + +484 +pSMsg + = +NULL +; + +487 i( +ALG_DEBUG +) + +488 + `tf +("%s: BefܐIPٮgth(%u), udngth(%u)\n", +__func__ +, + +489 + `e_bsw16 +( +_h +-> +tٮ_ngth +),_bsw16( +udp_h +-> +dgm_n +)); + +494 +ut16_t + +n + = 0; + +495 i( +diffModSL + > 0) { + +496 +n + = + `e_bsw16 +( +udp_h +-> +dgm_n +); + +497 +n + + +diffModSL +; + +498 +udp_h +-> +dgm_n + = + `e_bsw16 +( +n +); + +500 +n + = + `e_bsw16 +( +_h +-> +tٮ_ngth +); + +501 +n + + +diffModSL +; + +502 +_h +-> +tٮ_ngth + = + `e_bsw16 +( +n +); + +504 i( + `e_pktmbuf_nd +( +pkt +, +diffModSL += +NULL +) + +505 + `tf +("%s:ktmbuf_nduNULL", +__func__ +); + +509 i( +ALG_DEBUG +) + +510 + `tf +("%s: After IPotalength(%u), udpength(%u), " + +511 "diffModSL(%u)\n", +__func__ +, + +512 + `e_bsw16 +( +_h +-> +tٮ_ngth +), + +513 + `e_bsw16 +( +udp_h +-> +dgm_n +), + +514 +diffModSL +); + +516 i( +pSMsg + ! +NULL +) + +520 + } +} + +522 * + $s_g_oss +( +e_mbuf + * +pkt +, +ut16_t + +pkt_dei +, + +523 +ut16_t + +_dei +, ut16_ +msgTy +, +ut32_t + +modIp +, + +524 +ut16_t + +modL4Pt +, +ut32_t + +pubIp +, ut16_ +pubL4Pt +, + +525 +ut16_t + +modRPt +, ut16_ +modRtPt +, + +526 +ut16_t + * +diffModSL +) + +528  +v4_hdr + * +_h +; + +529  +h_hdr + * +h_h + = + `e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +530  +udp_hdr + * +udp_h +; + +531 * +pSMsg +, * +pS +, * +pEndP +; + +532  +pos +; + +534 +ut32_t + +diffL +, +addrPtL +; + +535  +sdpMsgL + = 0; + +536  +s_msg_n + = 0; + +538 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +539 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +540 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +541 * +pTmpSMsg + = +pSMsg +; + +542 * +pSSMsg + = +pSMsg +; + +544 +s_msg_n + = + +545 + `e_bsw16 +( +_h +-> +tٮ_ngth +- ( +v4_hdr +) - + +546 ( +udp_hdr +); + +548 i( + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) == + +549 +TRUE +) + +550 +pTmpSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +552 + `tf +("sip_alg_process: Invalid Content Length\n"); + +553  +NULL +; + +556 + `SKIP_SPACES +( +pTmpSMsg +); + +557  +sdpDaL + = + ` +( +pTmpSMsg +, & +pS +, 10); + +559 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, +SIP_ALG_DOUBLE_CRLF +, & +pos +, 0); + +560 +pTmpSMsg + +( +pos + + + ` +( +SIP_ALG_DOUBLE_CRLF +)); + +562 i( +sdpDaL + != 0) + +563 i( +tSAlgMsgFldPos + + +564 ( +pTmpSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, 0= +TRUE +) { + +565 +pTmpSMsg + + +pos + + + ` +( +SIP_ALG_REMOTE_PARTY_ID +); + +567 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +568 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +570 +pTmpSMsg + +( +pos + + + ` +( +SIP_ALG_DOUBLE_CRLF +)); + +573  +sMsgL + = ( +pTmpSMsg + - +pSMsg +); + +575 * +pSMsgEnd + = +pSMsg + + +sMsgL + + +sdpDaL +; + +577 i( +ALG_DEBUG +) + +578 + `tf +("%s:SipMsg: %p,SipMsgEnd: %p, sipMsgLen: %d, " + +580 +__func__ +, +pSMsg +, +pSMsgEnd +, +sMsgL +, +sdpDaL +, + +581 +s_msg_n +); + +583 i( +_dei + = +SIP_CALL_OUTGOING +) { + +584 i(( +msgTy + = +SIP_ALG_INVITE_MSGTYPE +) + +585 || ( +msgTy + = +SIP_ALG_ACK_MSGTYPE +)) { + +587 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +588 = +TRUE +) { + +590 +pSMsg + += + +591 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +592 +SIP_ALG_VIA_FIELD_IPADDR +); + +593 +pTmpSMsg + = +pSMsg +; + +595 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +596 +SIP_ALG_SEMICOLON +, & +pos +, + +598 +pTmpSMsg + + +pos +; + +599 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +601 + `tf +("sip_alg_process; No valid VIA field\n"); + +602  +NULL +; + +605 +pSMsg + = + +606 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +607 +addrPtL +, + +608 & +diffL +, +modIp +, + +609 +modL4Pt +, + +610 +ADDRESS_PORT_STRING +); + +612 * +diffModSL + + +diffL +; + +616 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +617 = +TRUE +) { + +618 +pSMsg + + +pos +; + +620 +pTmpSMsg + = +pSMsg +; + +622 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +623 & +pos +, 0); + +624 +pTmpSMsg + + +pos +; + +625 +diffL + = +pTmpSMsg + - +pSMsg +; + +627 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +629 +pSMsg + + +pos + + 1; + +631 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +633 +tf + + +635  +NULL +; + +638 +pSMsg + = + +639 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +640 +addrPtL +, + +641 & +diffL +, +modIp +, + +642 +modL4Pt +, + +643 +ADDRESS_PORT_STRING +); + +645 * +diffModSL + + +diffL +; + +649 i( +tSAlgMsgFldPos + + +650 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0= +TRUE +) { + +651 +pSMsg + + +pos +; + +653 +pTmpSMsg + = +pSMsg +; + +655 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +656 +SIP_ALG_CRLF +, & +pos +, + +658 +pTmpSMsg + + +pos +; + +659 +diffL + = +pTmpSMsg + - +pSMsg +; + +661 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +663 +pSMsg + + +pos + + 1; + +664 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +666 + `tf +("sip_alg_process; " + +668  +NULL +; + +672 +pSMsg + = + +673 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +674 +addrPtL +, + +675 & +diffL +, +modIp +, 0, + +676 +ADDRESS_PORT_STRING +); + +678 * +diffModSL + + +diffL +; + +681 i( +tSAlgMsgFldPos + + +682 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0= +TRUE +) { + +683 +pSMsg + + +pos +; + +685 +pTmpSMsg + = +pSMsg +; + +686 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +687 +SIP_ALG_CRLF +, & +pos +, + +689 +pTmpSMsg + + +pos +; + +691 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +693 +pSMsg + + +pos + + 1; + +694 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +697 + `tf +("sip_alg_process; " + +699  +NULL +; + +702 +pSMsg + = + +703 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +704 +addrPtL +, + +705 & +diffL +, +modIp +, + +706 +modL4Pt +, + +707 +ADDRESS_PORT_STRING +); + +709 * +diffModSL + + +diffL +; + +711 i( +msgTy + = +SIP_ALG_INVITE_MSGTYPE +) { + +713 i( +tSAlgMsgFldPos + + +714 ( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, + +715 0= +TRUE +) { + +716 +pSMsg + += + +717 ( +pos + + + +718 + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +719 + `SKIP_SPACES +( +pSMsg +); + +721 i(! +IS_STRING_SAME + + +722 ( +pSMsg +, +SIP_ALG_APPSDP +)) { + +723 + `tf +("sip_alg_process " + +725  +NULL +; + +728 + `tf +("sip_alg_process; " + +730  +NULL +; + +734 + `tSAlgMsgFldPos +( +pSMsg +, + +735 +SIP_ALG_CONTENT_LEN +, & +pos +, + +737 +pSMsg + += + +738 ( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +739 + `SKIP_SPACES +( +pSMsg +); + +740 +sdpMsgL + = + ` +( +pSMsg +, & +pEndP +, 10); + +741 i(! +sdpMsgL +) { + +743 i( +msgTy + = +SIP_ALG_ACK_MSGTYPE +) + +744  +sAlgProssEx +; + +746 + `tf +("sip_alg_process - " + +748  +NULL +; + +752 i( +tSAlgMsgFldPos + + +753 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +754 0= +TRUE +) { + +755 +pSMsg + + +pos +; + +757 +pTmpSMsg + = +pSMsg +; + +759 + `tSAlgMsgFldPosFdCf +( +pSMsg +, + +760 +SIP_ALG_CRLF +, + +761 & +pos +, + +763 +pTmpSMsg + + +pos +; + +766 + `tSAlgMsgFldPos +( +pSMsg +, + +767 +SIP_ALG_IPV4 +, & +pos +, + +769 +pSMsg + +( +pos + + + ` +( +SIP_ALG_IPV4 +)); + +770 + `SKIP_SPACES +( +pSMsg +); + +772 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +774 + `tf +("sip_alg_processing: " + +776  +NULL +; + +779 +pSMsg + = + +780 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +781 & +pSMsgEnd +, + +782 +addrPtL +, + +783 & +diffL +, + +784 +modIp +, 0, + +785 +ADDRESS_PORT_STRING +); + +787 * +diffModSL + + +diffL +; + +788 +sdpMsgL + + +diffL +; + +792 i( +tSAlgMsgFldPos + + +793 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +794 0= +TRUE +) { + +795 +pSMsg + + +pos +; + +796 +pTmpSMsg + = +pSMsg +; + +798 + `tSAlgMsgFldPosFdCf +( +pSMsg +, + +799 +SIP_ALG_CRLF +, + +800 & +pos +, + +802 +pTmpSMsg + + +pos +; + +805 + `tSAlgMsgFldPos +( +pSMsg +, + +806 +SIP_ALG_IPV4 +, & +pos +, + +808 +pSMsg + +( +pos + + + ` +( +SIP_ALG_IPV4 +)); + +809 + `SKIP_SPACES +( +pSMsg +); + +811 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +813 + `tf +("sip_alg_processing: " + +815  +NULL +; + +818 +pSMsg + = + +819 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +820 & +pSMsgEnd +, + +821 +addrPtL +, + +822 & +diffL +, + +823 +modIp +, 0, + +824 +ADDRESS_PORT_STRING +); + +826 * +diffModSL + + +diffL +; + +827 +sdpMsgL + + +diffL +; + +831 i( +tSAlgMsgFldPos + + +832 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +833 0= +TRUE +) { + +834 +pSMsg + += + +835 ( +pos + + + +836 + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +837 + `SKIP_SPACES +( +pSMsg +); + +838 +pTmpSMsg + = +pSMsg +; + +839 +tSAlgMsgFldPosFdS + + +840 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +842 +pTmpSMsg + + +pos +; + +843 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +847 +pSMsg + = + +848 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +849 & +pSMsgEnd +, + +850 +addrPtL +, + +851 & +diffL +, 0, + +852 +modRPt +, + +853 +PORT_STRING +); + +855 * +diffModSL + + +diffL +; + +856 +sdpMsgL + + +diffL +; + +860 i( +tSAlgMsgFldPos + + +861 ( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, + +862 0= +TRUE +) { + +863 +pSMsg + += + +864 ( +pos + + + +865 + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +866 + `SKIP_SPACES +( +pSMsg +); + +867 +pTmpSMsg + = +pSMsg +; + +868 +tSAlgMsgFldPosFdS + + +869 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +871 +pTmpSMsg + + +pos +; + +872 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +875 +pSMsg + = + +876 +tSAlgModifyPayldAddrPt + + +877 ( +pSMsg +, & +pSMsgEnd +, +addrPtL +, + +878 & +diffL +, 0, +modRtPt +, + +879 +PORT_STRING +); + +881 * +diffModSL + + +diffL +; + +882 +sdpMsgL + + +diffL +; + +887 } i(( +msgTy + = +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +888 || ( +msgTy + = +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +890 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +891 = +TRUE +) { + +893 +pSMsg + += + +894 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +895 +SIP_ALG_VIA_FIELD_IPADDR +); + +896 +pTmpSMsg + = +pSMsg +; + +898 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +899 +SIP_ALG_SEMICOLON +, & +pos +, + +901 +pTmpSMsg + + +pos +; + +902 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +904 + `tf +("sip_alg_process; No valid VIA field\n"); + +905  +NULL +; + +908 +pSMsg + = + +909 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +910 +addrPtL +, + +911 & +diffL +, +modIp +, + +912 +modL4Pt +, + +913 +ADDRESS_PORT_STRING +); + +914 * +diffModSL + = +diffL +; + +917 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +918 = +TRUE +) { + +919 +pSMsg + + +pos +; + +921 +pTmpSMsg + = +pSMsg +; + +923 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +924 & +pos +, 0); + +925 +pTmpSMsg + + +pos +; + +928 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +930 +pSMsg + + +pos + + 1; + +932 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +934 +tf + + +936  +NULL +; + +939 +pSMsg + = + +940 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +941 +addrPtL +, + +942 & +diffL +, +modIp +, + +943 +modL4Pt +, + +944 +ADDRESS_PORT_STRING +); + +946 * +diffModSL + + +diffL +; + +950 i( +tSAlgMsgFldPos + + +951 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0= +TRUE +) { + +952 +pSMsg + + +pos +; + +954 +pTmpSMsg + = +pSMsg +; + +956 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +957 +SIP_ALG_CRLF +, & +pos +, + +959 +pTmpSMsg + + +pos +; + +962 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +964 +pSMsg + + +pos + + 1; + +965 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +967 + `tf +("sip_alg_process; " + +969  +NULL +; + +973 +pSMsg + = + +974 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +975 +addrPtL +, + +976 & +diffL +, +modIp +, 0, + +977 +ADDRESS_PORT_STRING +); + +979 * +diffModSL + + +diffL +; + +981 } i( +pkt_dei + = +PRIVATE + + +982 && +msgTy + = +SIP_ALG_BYE_MSGTYPE +) { + +986 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +987 = +TRUE +) { + +989 +pSMsg + += + +990 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +991 +SIP_ALG_VIA_FIELD_IPADDR +); + +992 +pTmpSMsg + = +pSMsg +; + +994 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +995 +SIP_ALG_SEMICOLON +, & +pos +, + +997 +pTmpSMsg + + +pos +; + +998 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1000 + `tf +("sip_alg_process; No valid VIA field\n"); + +1001  +NULL +; + +1004 +pSMsg + = + +1005 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1006 +addrPtL +, + +1007 & +diffL +, +modIp +, 0, + +1008 +ADDRESS_PORT_STRING +); + +1009 * +diffModSL + = +diffL +; + +1012 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1013 = +TRUE +) { + +1014 +pSMsg + + +pos +; + +1016 +pTmpSMsg + = +pSMsg +; + +1018 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1019 & +pos +, 0); + +1020 +pTmpSMsg + + +pos +; + +1021 +diffL + = +pTmpSMsg + - +pSMsg +; + +1023 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1025 +pSMsg + + +pos + + 1; + +1027 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1029 +tf + + +1031  +NULL +; + +1034 +pSMsg + = + +1035 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1036 +addrPtL +, + +1037 & +diffL +, +modIp +, + +1038 +modL4Pt +, + +1039 +ADDRESS_PORT_STRING +); + +1041 * +diffModSL + + +diffL +; + +1045 i( +tSAlgMsgFldPos + + +1046 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0= +TRUE +) { + +1047 +pSMsg + + +pos +; + +1049 +pTmpSMsg + = +pSMsg +; + +1051 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1052 +SIP_ALG_CRLF +, & +pos +, + +1054 +pTmpSMsg + + +pos +; + +1055 +diffL + = +pTmpSMsg + - +pSMsg +; + +1057 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1059 +pSMsg + + +pos + + 1; + +1060 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1062 + `tf +("sip_alg_process; " + +1064  +NULL +; + +1068 +pSMsg + = + +1069 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1070 +addrPtL +, + +1071 & +diffL +, +modIp +, 0, + +1072 +ADDRESS_PORT_STRING +); + +1074 * +diffModSL + + +diffL +; + +1077 i( +tSAlgMsgFldPos + + +1078 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0= +TRUE +) { + +1079 +pSMsg + + +pos +; + +1081 +pTmpSMsg + = +pSMsg +; + +1082 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1083 +SIP_ALG_CRLF +, & +pos +, 0); + +1084 +pTmpSMsg + + +pos +; + +1086  +ag + = 0; + +1087 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, + +1088 & +pos +, 0= +FALSE +) + +1089 +ag + = 1; + +1091 i( +ag +) + +1092  +SMsgAdv2 +; + +1093 +pSMsg + + +pos + + 1; + +1094 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1097 + `tf +("sip_alg_process; " + +1099  +NULL +; + +1102 +pSMsg + = + +1103 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1104 +addrPtL +, + +1105 & +diffL +, +modIp +, + +1106 +modL4Pt +, + +1107 +ADDRESS_PORT_STRING +); + +1109 * +diffModSL + + +diffL +; + +1110 } i( +pkt_dei + = +PUBLIC + + +1111 && +msgTy + = +SIP_ALG_BYE_MSGTYPE +) { + +1118 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1119 +pSMsg + + +pos + + 1; + +1120 +pTmpSMsg + = +pSMsg +; + +1121 + `tSAlgMsgFldPosFdS +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1122 & +pos +, 0); + +1123 +pTmpSMsg + + +pos +; + +1124 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1126 +pSMsg + = + +1127 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1128 +addrPtL +, + +1129 & +diffL +, +modIp +, + +1130 +modL4Pt +, + +1131 +ADDRESS_PORT_STRING +); + +1132 * +diffModSL + + +diffL +; + +1136 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1137 = +TRUE +) { + +1138 +pSMsg + + +pos +; + +1139 +pTmpSMsg + = +pSMsg +; + +1140 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1141 & +pos +, 0); + +1142 +pTmpSMsg + + +pos +; + +1143 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1145 +pSMsg + + +pos + + 1; + +1146 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1147 +pSMsg + = + +1148 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1149 & +pSMsgEnd +, + +1150 +addrPtL +, + +1151 & +diffL +, + +1152 +modIp +, + +1153 +modL4Pt +, + +1154 +ADDRESS_PORT_STRING +); + +1155 * +diffModSL + + +diffL +; + +1160 i( +tSAlgMsgFldPos + + +1161 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0= +TRUE +) { + +1162 +pSMsg + + +pos +; + +1164 +pTmpSMsg + = +pSMsg +; + +1166 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1167 +SIP_ALG_CRLF +, & +pos +, + +1169 +pTmpSMsg + + +pos +; + +1172 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1174 +pSMsg + + +pos + + 1; + +1175 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1177 + `tf +("sip_alg_process; " + +1179  +NULL +; + +1183 +pSMsg + = + +1184 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1185 +addrPtL +, + +1186 & +diffL +, +modIp +, 0, + +1187 +ADDRESS_PORT_STRING +); + +1189 * +diffModSL + + +diffL +; + +1190 } i( +pkt_dei + = +PRIVATE + + +1191 && ( +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1197 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1198 = +TRUE +) { + +1199 +pSMsg + + +pos +; + +1201 +pTmpSMsg + = +pSMsg +; + +1203 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1204 & +pos +, 0); + +1205 +pTmpSMsg + + +pos +; + +1206 +diffL + = +pTmpSMsg + - +pSMsg +; + +1208 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1210 +pSMsg + + +pos + + 1; + +1212 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1214 +tf + + +1216  +NULL +; + +1219 +pSMsg + = + +1220 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1221 +addrPtL +, + +1222 & +diffL +, +modIp +, + +1223 +modL4Pt +, + +1224 +ADDRESS_PORT_STRING +); + +1226 * +diffModSL + = +diffL +; + +1230 i( +tSAlgMsgFldPos + + +1231 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0= +TRUE +) { + +1232 +pSMsg + + +pos +; + +1234 +pTmpSMsg + = +pSMsg +; + +1235 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1236 +SIP_ALG_CRLF +, & +pos +, + +1238 +pTmpSMsg + + +pos +; + +1240  +ag + = 0; + +1241 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, + +1242 & +pos +, 0= +FALSE +) + +1243 +ag + = 1; + +1245 i( +ag +) + +1246  +SMsgAdv2 +; + +1247 +pSMsg + + +pos + + 1; + +1248 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1250 + `tf +("sip_alg_process; " + +1252  +NULL +; + +1255 +pSMsg + = + +1256 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1257 +addrPtL +, + +1258 & +diffL +, +modIp +, + +1259 +modL4Pt +, + +1260 +ADDRESS_PORT_STRING +); + +1262 * +diffModSL + + +diffL +; + +1263 } i( +pkt_dei + = +PUBLIC + + +1264 && ( +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1268 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1269 = +TRUE +) { + +1271 +pSMsg + += + +1272 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +1273 +SIP_ALG_VIA_FIELD_IPADDR +); + +1274 +pTmpSMsg + = +pSMsg +; + +1276 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +1277 +SIP_ALG_SEMICOLON +, & +pos +, + +1279 +pTmpSMsg + + +pos +; + +1280 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1282 + `tf +("sip_alg_process; No valid VIA field\n"); + +1283  +NULL +; + +1286 +pSMsg + = + +1287 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1288 +addrPtL +, + +1289 & +diffL +, +modIp +, 0, + +1290 +ADDRESS_PORT_STRING +); + +1291 * +diffModSL + = +diffL +; + +1294 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1295 = +TRUE +) { + +1296 +pSMsg + + +pos +; + +1298 +pTmpSMsg + = +pSMsg +; + +1300 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1301 & +pos +, 0); + +1302 +pTmpSMsg + + +pos +; + +1303 +diffL + = +pTmpSMsg + - +pSMsg +; + +1305 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1307 +pSMsg + + +pos + + 1; + +1309 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1311 +tf + + +1313  +NULL +; + +1316 +pSMsg + = + +1317 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1318 +addrPtL +, + +1319 & +diffL +, +modIp +, + +1320 +modL4Pt +, + +1321 +ADDRESS_PORT_STRING +); + +1323 * +diffModSL + + +diffL +; + +1326 i( +tSAlgMsgFldPos + + +1327 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0= +TRUE +) { + +1328 +pSMsg + + +pos +; + +1330 +pTmpSMsg + = +pSMsg +; + +1331 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1332 +SIP_ALG_CRLF +, & +pos +, + +1334 +pTmpSMsg + + +pos +; + +1335 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1337 +pSMsg + + +pos + + 1; + +1338 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1340 +pSMsg + = + +1341 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1342 & +pSMsgEnd +, + +1343 +addrPtL +, + +1344 & +diffL +, + +1345 +modIp +, 0, + +1346 +ADDRESS_PORT_STRING +); + +1348 * +diffModSL + + +diffL +; + +1351 + `tf +("sip_alg_process; " + +1353  +NULL +; + +1357 } i( +_dei + = +SIP_CALL_INCOMING +) { + +1358 i(( +msgTy + = +SIP_ALG_INVITE_MSGTYPE +) + +1359 || ( +msgTy + = +SIP_ALG_ACK_MSGTYPE +)) { + +1362 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0) + +1363 = +TRUE +) { + +1364 +pSMsg + + +pos + + 1; + +1365 +pTmpSMsg + = +pSMsg +; + +1366 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_SIP +, + +1367 & +pos +, 0); + +1368 +pTmpSMsg + +( +pos + - 1); + +1370 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1372 +tf + + +1374 +__LINE__ +); + +1375  +NULL +; + +1378 +pSMsg + = + +1379 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1380 +addrPtL +, + +1381 & +diffL +, +modIp +, + +1382 +modL4Pt +, + +1383 +ADDRESS_PORT_STRING +); + +1384 * +diffModSL + + +diffL +; + +1388 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1389 = +TRUE +) { + +1390 +pSMsg + + +pos +; + +1391 +pTmpSMsg + = +pSMsg +; + +1392 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1393 & +pos +, 0); + +1394 +pTmpSMsg + + +pos +; + +1395 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1397 +pSMsg + + +pos + + 1; + +1398 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1400 + `tf +("sip_alg_processing; " + +1402 +__LINE__ +); + +1403  +NULL +; + +1406 +pSMsg + = + +1407 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1408 +addrPtL +, + +1409 & +diffL +, +modIp +, + +1410 +modL4Pt +, + +1411 +ADDRESS_PORT_STRING +); + +1412 * +diffModSL + + +diffL +; + +1414 } i(( +msgTy + = +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +1415 || ( +msgTy + = +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +1418 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1419 = +TRUE +) { + +1420 +pSMsg + + +pos +; + +1421 +pTmpSMsg + = +pSMsg +; + +1422 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1423 & +pos +, 0); + +1424 +pTmpSMsg + + +pos +; + +1425 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1427 +pSMsg + + +pos + + 1; + +1428 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1429 +pSMsg + = + +1430 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1431 & +pSMsgEnd +, + +1432 +addrPtL +, + +1433 & +diffL +, + +1434 +modIp +, + +1435 +modL4Pt +, + +1436 +ADDRESS_PORT_STRING +); + +1437 * +diffModSL + + +diffL +; + +1440 i( +msgTy + = +SIP_ALG_200_OK_INVITE_MSGTYPE +) { + +1444 i( +tSAlgMsgFldPos + + +1445 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, + +1446 0= +TRUE +) { + +1447 +pSMsg + + +pos +; + +1449 +pTmpSMsg + = +pSMsg +; + +1450 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +1451 +SIP_ALG_SEMICOLON +, + +1452 & +pos +, 0); + +1453 +pTmpSMsg + + +pos +; + +1455  +ag + = 0; + +1456 i( + `tSAlgMsgFldPos +( +pSMsg +, + +1457 +SIP_ALG_AT +, & +pos +, + +1458 30= +FALSE +) + +1459 +ag + = 1; + +1461 i( +ag +) + +1462  +SMsgAdv +; + +1464 +pSMsg + + +pos + + 1; + +1465 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1467 + `tf +("sip_alg_process; " + +1469  +NULL +; + +1472 +pSMsg + = + +1473 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1474 & +pSMsgEnd +, + +1475 +addrPtL +, + +1476 & +diffL +, + +1477 +modIp +, + +1478 +modL4Pt +, + +1479 +ADDRESS_PORT_STRING +); + +1481 * +diffModSL + + +diffL +; + +1482 +SMsgAdv +: + +1484 +pTmpSMsg + = +pSMsg +; + +1485 i( +tSAlgMsgFldPos + + +1486 ( +pSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, + +1487 0= +TRUE +) { + +1488 +pSMsg + + +pos + + + +1489 + ` +( +SIP_ALG_REMOTE_PARTY_ID +); + +1490 +pTmpSMsg + = +pSMsg +; + +1491 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +1492 +SIP_ALG_GREAT +, + +1493 & +pos +, 0); + +1494 +pTmpSMsg + + +pos +; + +1495 + `tSAlgMsgFldPos +( +pSMsg +, + +1496 +SIP_ALG_AT +, & +pos +, + +1498 +pSMsg + + +pos + + 1; + +1499 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1501 +pSMsg + = + +1502 +tSAlgModifyPayldAddrPt + + +1503 ( +pSMsg +, & +pSMsgEnd +, +addrPtL +, + +1504 & +diffL +, +modIp +, +modL4Pt +, + +1505 +ADDRESS_PORT_STRING +); + +1506 +diffModSL + + +diffL +; + +1508 + `tf +("sip_alg_process: " + +1510 +pSMsg + = +pTmpSMsg +; + +1514 i( +tSAlgMsgFldPos + + +1515 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +1516 0= +TRUE +) { + +1517 +pSMsg + + +pos +; + +1519 +pTmpSMsg + = +pSMsg +; + +1521 + `tSAlgMsgFldPosFdCf +( +pSMsg +, + +1522 +SIP_ALG_CRLF +, + +1523 & +pos +, + +1525 +pTmpSMsg + + +pos +; + +1528 + `tSAlgMsgFldPos +( +pSMsg +, + +1529 +SIP_ALG_IPV4 +, & +pos +, + +1531 +pSMsg + +( +pos + + + ` +( +SIP_ALG_IPV4 +)); + +1532 + `SKIP_SPACES +( +pSMsg +); + +1534 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1536 + `tf +("sip_alg_processing: " + +1538  +NULL +; + +1541 +pSMsg + = + +1542 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1543 & +pSMsgEnd +, + +1544 +addrPtL +, + +1545 & +diffL +, + +1546 +modIp +, 0, + +1547 +ADDRESS_PORT_STRING +); + +1549 * +diffModSL + + +diffL +; + +1550 +sdpMsgL + + +diffL +; + +1554 i( +tSAlgMsgFldPos + + +1555 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +1556 0= +TRUE +) { + +1557 +pSMsg + + +pos +; + +1558 +pTmpSMsg + = +pSMsg +; + +1560 + `tSAlgMsgFldPosFdCf +( +pSMsg +, + +1561 +SIP_ALG_CRLF +, + +1562 & +pos +, + +1564 +pTmpSMsg + + +pos +; + +1567 + `tSAlgMsgFldPos +( +pSMsg +, + +1568 +SIP_ALG_IPV4 +, & +pos +, + +1570 +pSMsg + +( +pos + + + ` +( +SIP_ALG_IPV4 +)); + +1571 + `SKIP_SPACES +( +pSMsg +); + +1573 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1575 + `tf +("sip_alg_processing: " + +1577  +NULL +; + +1580 +pSMsg + = + +1581 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1582 & +pSMsgEnd +, + +1583 +addrPtL +, + +1584 & +diffL +, + +1585 +modIp +, 0, + +1586 +ADDRESS_PORT_STRING +); + +1588 * +diffModSL + + +diffL +; + +1589 +sdpMsgL + + +diffL +; + +1593 i( +tSAlgMsgFldPos + + +1594 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +1595 0= +TRUE +) { + +1596 +pSMsg + += + +1597 ( +pos + + + ` +( +SIP_ALG_AUDIO +)); + +1598 + `SKIP_SPACES +( +pSMsg +); + +1599 +pTmpSMsg + = +pSMsg +; + +1600 +tSAlgMsgFldPosFdS + + +1601 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +1603 +pTmpSMsg + + +pos +; + +1604 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1608 +pSMsg + = + +1609 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1610 & +pSMsgEnd +, + +1611 +addrPtL +, + +1612 & +diffL +, 0, + +1613 +modRPt +, + +1614 +PORT_STRING +); + +1616 * +diffModSL + + +diffL +; + +1617 +sdpMsgL + + +diffL +; + +1620 } i( +pkt_dei + = +PUBLIC + + +1621 && +msgTy + = +SIP_ALG_BYE_MSGTYPE +) { + +1625 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1626 +pSMsg + + +pos + + 1; + +1627 +pTmpSMsg + = +pSMsg +; + +1628 + `tSAlgMsgFldPosFdS +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1629 & +pos +, 0); + +1630 +pTmpSMsg + + +pos +; + +1631 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1633 +pSMsg + = + +1634 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1635 +addrPtL +, + +1636 & +diffL +, +modIp +, + +1637 +modL4Pt +, + +1638 +ADDRESS_PORT_STRING +); + +1639 * +diffModSL + + +diffL +; + +1643 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1644 = +TRUE +) { + +1645 +pSMsg + + +pos +; + +1646 +pTmpSMsg + = +pSMsg +; + +1647 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1648 & +pos +, 0); + +1649 +pTmpSMsg + + +pos +; + +1650 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1652 +pSMsg + + +pos + + 1; + +1653 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1654 +pSMsg + = + +1655 + `tSAlgModifyPayldAddrPt +( +pSMsg +, + +1656 & +pSMsgEnd +, + +1657 +addrPtL +, + +1658 & +diffL +, + +1659 +modIp +, + +1660 +modL4Pt +, + +1661 +ADDRESS_PORT_STRING +); + +1662 * +diffModSL + + +diffL +; + +1665 +tf + + +1667  +NULL +; + +1669 } i( +pkt_dei + = +PRIVATE + + +1670 && +msgTy + = +SIP_ALG_BYE_MSGTYPE +) { + +1674 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1675 = +TRUE +) { + +1677 +pSMsg + += + +1678 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +1679 +SIP_ALG_VIA_FIELD_IPADDR +); + +1680 +pTmpSMsg + = +pSMsg +; + +1682 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +1683 +SIP_ALG_SEMICOLON +, & +pos +, + +1685 +pTmpSMsg + + +pos +; + +1686 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1688 + `tf +("sip_alg_process; No valid VIA field\n"); + +1689  +NULL +; + +1692 +pSMsg + = + +1693 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1694 +addrPtL +, + +1695 & +diffL +, +modIp +, 0, + +1696 +ADDRESS_PORT_STRING +); + +1697 * +diffModSL + = +diffL +; + +1700 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1701 = +TRUE +) { + +1702 +pSMsg + + +pos +; + +1704 +pTmpSMsg + = +pSMsg +; + +1706 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1707 & +pos +, 0); + +1708 +pTmpSMsg + + +pos +; + +1709 +diffL + = +pTmpSMsg + - +pSMsg +; + +1711 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1713 +pSMsg + + +pos + + 1; + +1715 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1717 +tf + + +1719  +NULL +; + +1722 +pSMsg + = + +1723 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1724 +addrPtL +, + +1725 & +diffL +, +modIp +, + +1726 +modL4Pt +, + +1727 +ADDRESS_PORT_STRING +); + +1729 * +diffModSL + + +diffL +; + +1731 } i( +pkt_dei + = +PRIVATE + + +1732 && +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1736 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1737 = +TRUE +) { + +1739 +pSMsg + += + +1740 ( +pos + + + ` +( +SIP_ALG_VIA +) + + +1741 +SIP_ALG_VIA_FIELD_IPADDR +); + +1742 +pTmpSMsg + = +pSMsg +; + +1744 + `tSAlgMsgFldPos +( +pTmpSMsg +, + +1745 +SIP_ALG_SEMICOLON +, & +pos +, + +1747 +pTmpSMsg + + +pos +; + +1748 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1750 + `tf +("sip_alg_process; No valid VIA field\n"); + +1751  +NULL +; + +1754 +pSMsg + = + +1755 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1756 +addrPtL +, + +1757 & +diffL +, +modIp +, 0, + +1758 +ADDRESS_PORT_STRING +); + +1759 * +diffModSL + = +diffL +; + +1762 i( + `tSAlgMsgFldPos +( +pSMsg +, + +1763 +SIP_ALG_FROM +, & +pos +, 0= +TRUE +) { + +1764 +pSMsg + + +pos +; + +1766 +pTmpSMsg + = +pSMsg +; + +1768 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1769 & +pos +, 0); + +1770 +pTmpSMsg + + +pos +; + +1771 +diffL + = +pTmpSMsg + - +pSMsg +; + +1773 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1775 +pSMsg + + +pos + + 1; + +1777 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1779 +tf + + +1781  +NULL +; + +1784 +pSMsg + = + +1785 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1786 +addrPtL +, + +1787 & +diffL +, +modIp +, + +1788 +modL4Pt +, + +1789 +ADDRESS_PORT_STRING +); + +1791 * +diffModSL + + +diffL +; + +1793 } i( +pkt_dei + = +PUBLIC + + +1794 && +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1796 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1797 = +TRUE +) { + +1798 +pSMsg + + +pos +; + +1800 +pTmpSMsg + = +pSMsg +; + +1802 + `tSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1803 & +pos +, 0); + +1804 +pTmpSMsg + + +pos +; + +1805 +diffL + = +pTmpSMsg + - +pSMsg +; + +1807 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1809 +pSMsg + + +pos + + 1; + +1811 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1813 +tf + + +1815  +NULL +; + +1818 +pSMsg + = + `tSAlgModifyPayldAddrPt +(pSipMsg, + +1819 & +pSMsgEnd +, + +1820 +addrPtL +, + +1821 & +diffL +, +modIp +, + +1822 +modL4Pt +, + +1823 +ADDRESS_PORT_STRING +); + +1825 * +diffModSL + = +diffL +; + +1829 i( +tSAlgMsgFldPos + + +1830 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0= +TRUE +) { + +1831 +pSMsg + + +pos +; + +1833 +pTmpSMsg + = +pSMsg +; + +1834 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1835 +SIP_ALG_CRLF +, & +pos +, + +1837 +pTmpSMsg + + +pos +; + +1839 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1841 +pSMsg + + +pos + + 1; + +1842 +addrPtL + = +pTmpSMsg + - +pSMsg +; + +1844 + `tf +("sip_alg_process; " + +1846  +NULL +; + +1849 +pSMsg + = + +1850 + `tSAlgModifyPayldAddrPt +( +pSMsg +, & +pSMsgEnd +, + +1851 +addrPtL +, + +1852 & +diffL +, +modIp +, + +1853 +modL4Pt +, + +1854 +ADDRESS_PORT_STRING +); + +1856 * +diffModSL + + +diffL +; + +1860 +SMsgAdv2 +: + +1862 i( +_dei + = +SIP_CALL_OUTGOING +) { + +1864 i( +pkt_dei + = +PRIVATE +) { + +1865 i( +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1866 i( +move_s_g_y + + +1867 ( + `e_bsw32 +( +_h +-> +c_addr +), + +1868 + `e_bsw16 +( +udp_h +-> +c_pt +)) < 0) + +1869 + `tf +("removesipalgentry failed: " + +1871 +_h +-> +c_addr +, +udp_h +-> +c_pt +); + +1875 i( +pkt_dei + = +PUBLIC +) { + +1876 i( +msgTy + = +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1877 i( + `move_s_g_y +( +pubIp +, +pubL4Pt +) < 0) + +1878 + `tf +("removesipalgentry failed: " + +1880 +pubIp +, +pubL4Pt +); + +1886 i(( +sdpMsgL + > 0&& ( +sdpDaL + > 0)) { + +1887 +pSMsg + = +pSSMsg +; + +1888 * +tmpSdpL + = +NULL +; + +1890 +sdpMsgL + + +sdpDaL +; + +1891 +tmpSdpL + = + ` +( +sdpMsgL +); + +1892  +tmpSL + = + ` +( +tmpSdpL +); + +1895 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) + +1896 = +TRUE +) { + +1897 +pSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1898 + `SKIP_SPACES +( +pSMsg +); + +1899 +pTmpSMsg + = +pSMsg +; + +1900 + `tSAlgMsgFldPosFdCf +( +pTmpSMsg +, + +1901 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +1903 +pTmpSMsg + + +pos +; + +1904 + `SKIP_SPACES +( +pSMsg +); + +1905 +diffL + = +pTmpSMsg + - +pSMsg +; + +1906 + `tSAlgAdjuMsg +( +pSMsg +, & +pSMsgEnd +, +tmpSL +, + +1907 +diffL +); + +1908 + `y +( +pSMsg +, +tmpSdpL +, +tmpSL +); + +1910 + `tf +("sip_alg_process: Invalid Content Length\n"); + +1911  +NULL +; + +1915 +sAlgProssEx +: + +1917  +pSSMsg +; + +1918 + } +} + +1924  + $tSAlgGAudioPts +( +e_mbuf + * +pkt +, +ut16_t + * +pPt +, + +1925 +ut16_t + * +Pt +) + +1927  +v4_hdr + * +_h +; + +1928  +h_hdr + * +h_h + = + `e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +1929  +udp_hdr + * +udp_h +; + +1930 * +pSMsg +, * +pEndP +; + +1931  +pos +, +sdpMsgL +; + +1933 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1934 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1935 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +1938 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, 0= +FALSE +) + +1941 +pSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +1942 + `SKIP_SPACES +( +pSMsg +); + +1945 i(! + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_APPSDP +)) { + +1946 + `tf +("sip_alg_getAudioPort Invalid Contentype\n"); + +1951 + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0); + +1952 +pSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1953 + `SKIP_SPACES +( +pSMsg +); + +1954 +sdpMsgL + = + ` +( +pSMsg +, & +pEndP +, 10); + +1955 i(! +sdpMsgL +) { + +1956 + `tf +("sipAlggetAudioport - sdpMsgLen is 0\n"); + +1961 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, 0) == + +1962 +TRUE +) { + +1963 +pSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +1964 + `SKIP_SPACES +( +pSMsg +); + +1965 * +pPt + = + ` +( +pSMsg +, & +pEndP +, 10); + +1967 * +pPt + = 0; + +1970 i( + `tSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, 0) == + +1971 +TRUE +) { + +1972 +pSMsg + +( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +1973 + `SKIP_SPACES +( +pSMsg +); + +1974 * +Pt + = + ` +( +pSMsg +, & +pEndP +, 10); + +1976 * +Pt + = 0; + +1978 i( +ALG_DEBUG +) + +1979 + `tf +(" sipAlgGetAudioPort;tpPort %d,tcpPort %d\n", + +1980 * +pPt +, * +Pt +); + +1982 + } +} + +1986 + $tSAlgMsgFldPosFdS +(* +pDa +, cڡ * +pIdS +, * +pPos +, + +1987  +chL +) + +1989 * +pS + = +pDa +; + +1990  +i + = 0; + +1992 i(! +pIdS +) + +1993  +FALSE +; + +1995 i(! +chL +) + +1996 +chL + = 1500; + +1998  +TRUE +) { + +1999 * +pDa + != ' ') { + +2000 +pDa +++; + +2001 +i +++; + +2004 i( +i + > +chL +) { + +2005 + `tf +("SIP ALG Find Field Pos: " + +2007 +chL +); + +2008 * +pPos + = +chL +; + +2009  +FALSE +; + +2012 i( + `bcmp +( +pDa +, +pIdS +, + ` +(pIdStr)) == 0) + +2016 * +pPos + = +pDa + - +pS +; + +2017  +TRUE +; + +2018 + } +} + +2021  + $tSAlgMsgFldPosFdCf +( + +2022 * +pDa +, + +2023 cڡ * +pIdS +, + +2024 * +pPos +, + +2025  +chL +) + +2027 * +pS + = +pDa +; + +2028  +i + = 0; + +2030 i(! +pIdS +) + +2031  +FALSE +; + +2033 i(! +chL +) + +2034 +chL + = 1500; + +2036  +TRUE +) { + +2037 * +pDa + != '\r' && *(pData + 1) != '\n') { + +2038 +pDa +++; + +2039 +i +++; + +2041 i( +i + > +chL +) { + +2042 + `tf +("SIP ALG Find Field Pos: " + +2044 +chL +); + +2045 * +pPos + = +chL +; + +2046  +FALSE +; + +2049 i( + `bcmp +( +pDa +, +pIdS +, + ` +(pIdStr)) == 0) + +2053 * +pPos + = +pDa + - +pS +; + +2054  +TRUE +; + +2055 + } +} + +2058  + $tSAlgMsgFldPos +(* +pDa +, + +2059 cڡ * +pIdS +, + +2060 * +pPos +, + +2061  +chL +) + +2063 * +pS + = +pDa +; + +2064  +i + = 0, +j + = 0; + +2066 i(! +pIdS +) + +2067  +FALSE +; + +2069 i(! +chL +) + +2070 +chL + = 1500; + +2072  +TRUE +) { + +2073 * +pDa + != '\r' && *(pData + 1) != '\n') { + +2076 * +pDa + == ' ') { + +2077 +pDa +++; + +2078 +j +++; + +2081 i(* +pDa + == '\r' && *(pData + 1) == '\n') + +2084 i( + `bcmp +( +pDa +, +pIdS +, + ` +(pIdStr)) == 0) { + +2085 * +pPos + = +pDa + - +pS +; + +2086  +TRUE +; + +2089 +pDa +++; + +2090 +j +++; + +2092 i( +j + > +chL +) { + +2093 * +pPos + = +pDa + - +pS +; + +2094  +FALSE +; + +2101  +i + = 0; i < ( +chL + - 1); i++) { + +2102 i( +pDa +[ +i +] == '\r') + +2103 i( +pDa +[ +i + + 1] == '\n') + +2107 i( +i + > +chL +) { + +2108 + `tf +("SIP ALG Find Field Pos: " + +2110 +chL +); + +2111 * +pPos + = +chL +; + +2112  +FALSE +; + +2115 +pDa + + +i + + 2; + +2116 +chL + -( +i + + 2); + +2118 i(( +pDa +[0] == '\r' &&Data[1] == '\n') || + +2119 ( +chL + <= 0)) { + +2122 i( +chL + > 0) { + +2123 +pDa + += 2; + +2127 * +pPos + = +pDa + - +pS +; + +2129  +FALSE +; + +2133 * +pPos + = +pDa + - +pS +; + +2134  +TRUE +; + +2135 + } +} + +2138 * + $gSClIdS +(* +pMsg +) + +2140 * +pS +; + +2141 * +pClId + = +NULL +; + +2142  +i +; + +2144 +pS + = +pMsg +; + +2145  +i + = 0; i < 200; i++) { + +2146 i(* +pMsg + != '\r') + +2147 +pMsg +++; + +2151 i( +i + >= 200) { + +2152 + `tf +("SIP_ALG: getCallid wrong string format\n"); + +2153  +NULL +; + +2156 +size_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +( +pMsg + - +pS + + 1); + +2158 +pClId + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +2159 i(! +pClId +) + +2160  +NULL +; + +2162 + `bcy +( +pS +, +pClId +, +pMsg + -Start); + +2163 *( +pClId + + ( +pMsg + - +pS +)) = 0; + +2165 i( +ALG_DEBUG +) + +2166 + `tf +("%s: %s\n", +__func__ +, +pClId +); + +2168  +pClId +; + +2169 + } +} + +2171 * + $tSAlgModifyPayldAddrPt +( + +2172 * +pSMsg +, ** +pSMsgEnd +, + +2173 +ut32_t + +dSL +, ut32_* +diffL +, + +2174 +ut32_t + +modIp +, +ut16_t + +modPt +, ut32_ +ty +) + +2176  +addt +[ +MAX_ADDR_PORT_SIZE +]; + +2177  +_addr + +Addr +; + +2178 +ut32_t + +wSL + = 0; + +2179 * +tmpPt + = +NULL +; + +2181 i( +modPt + != 0) + +2182 +tmpPt + = + ` +( +modPt +); + +2184 * +diffL + = 0; + +2185 i( +ty + = +ADDRESS_PORT_STRING +) { + +2186 +Addr +. +s_addr + = + `htl +( +modIp +); + +2187 * +tmpAddr + = + `_ +( +Addr +); + +2189 i( +modPt + != 0) + +2190 + `rtf +( +addt +, "%s:%s", +tmpAddr +, +tmpPt +); + +2192 + `rtf +( +addt +, "%s", +tmpAddr +); + +2194 +wSL + = + ` +( +addt +); + +2196 i( + `abs +( +wSL + - +dSL +) > 0) { + +2201 + `tSAlgAdjuMsg +( +pSMsg +, +pSMsgEnd +, + +2202 +wSL +, +dSL +); + +2206 + `y +( +pSMsg +, +addt +, + ` +(addrport)); + +2207 } i( +ty + = +PORT_STRING +) { + +2208 if( +tmpPt +) + +2209 +wSL + = + ` +( +tmpPt +); + +2211 i( + `abs +( +wSL + - +dSL +) > 0) { + +2216 + `tSAlgAdjuMsg +( +pSMsg +, +pSMsgEnd +, + +2217 +wSL +, +dSL +); + +2221 if( +tmpPt +) + +2222 + `y +( +pSMsg +, +tmpPt +, + ` +(tmpPort)); + +2225 i( +wSL + > +dSL +) + +2226 * +diffL + = +wSL + - +dSL +; + +2228  +pSMsg +; + +2229 + } +} + +2231 * + $tSAlgAdjuMsg +(* +pSMsg +, ** +pSMsgEnd +, + +2232 +ut32_t + +wSL +, ut32_ +dSL +) + +2234  +MsgBufr +[ +MAX_SIP_UDP_MSG_SIZE +]; + +2236 i( +wSL + > +dSL +) { + +2237 +pSMsg + + +dSL +; + +2238  +msgL + = * +pSMsgEnd + - +pSMsg +; + +2240 + `y +( +MsgBufr +, +pSMsg +, +msgL +); + +2241 +pSMsg + +( +wSL + - +dSL +); + +2242 + `y +( +pSMsg +, +MsgBufr +, +msgL +); + +2244 i( +ALG_DEBUG +) + +2245 + `tf +("tSAlgAdjuMsg: %u\n", +msgL +); + +2248 * +pSMsgEnd + +( +wSL + - +dSL +); + +2251 + `memt +( +pSMsg +, ' ', +dSL +); + +2254  +pSMsg +; + +2255 + } +} + + @VIL/alg/lib_sip_alg.h + +17 #ide +__INCLUDE_LIB_ALG_H__ + + +18  + #__INCLUDE_LIB_ALG_H__ + + + ) + +20  + ~"e_h.h +" + +22 +ut16_t + + gs_ssi_numb +; + +23  + #IS_STRING_SAME +( +pS +, +rId +( + `bcmp +(S), sId, + ` +(rId)=0) + + ) + +24  + #TAG_TO_DATAPOS +( +r +( + ` +(r+ 1) + + ) + +25  + #SKIP_SPACES +( +pS +) \ + +27 *(*)( +pS +) == ' ') \ + +28 (*)( +pS +)++; \ + +29 } + + ) + +31 + epkt_d + { + mPRIVATE +, + mPUBLIC +}; + +34 + es_g__dei + { + +35 + mSIP_CALL_INCOMING +, + +36 + mSIP_CALL_OUTGOING + + +40 + es_g_pt_ty + { + +41 + mSIP_UDP +, + +42 + mSIP_RTP +, + +43 + mSIP_RTCP + + +50  + ss_g_key + { + +55 +ut32_t + + m_addss +; + +56 +ut16_t + + ml4pt +; + +57 +ut8_t + + mfr1 +; + +58 +ut8_t + + mfr2 +; + +65  + ss_g_b_y + { + +66 +ut32_t + + m_addss +; + +71 +ut16_t + + ml4pt +; + +72 +ut8_t + + ms_g__dei +; + +74 +ut8_t + + ms_g__id +[100]; + +75 +ut8_t + + ml4pt_ty +; + +76 +ut8_t + + mfr1 +; + +77 +ut16_t + + mfr2 +; + +78 +ut32_t + + mfr3 +; + +79 } + g__e_che_igd +; + +94  +lib_s_g_ +(); + +117  +s_g_dpi +( +e_mbuf + * +pkt +, +pkt_d + +pkt_dei +, + +118 +ut32_t + +modIp +, +ut16_t + +modL4Pt +, + +119 +ut32_t + +pubIp +, +ut16_t + +pubL4Pt +, + +120 +ut16_t + +modRPt +, ut16_ +modRtPt +); + +133  +tSAlgGAudioPts +( + +134  +e_mbuf + * +pkt +, + +135 +ut16_t + * +pPt +, + +136 +ut16_t + * +_pt +); + +137  +tSAlgMsgFldPos +( + +138 * +pDa +, + +139 cڡ * +pIdS +, + +140 * +pos +, + +141  +chL +); + +142  +tSAlgMsgFldPosFdCf +( + +143 * +pDa +, + +144 cڡ * +pIdS +, + +145 * +pPos +, + +146  +chL +); + +147  +tSAlgMsgFldPosFdS +( + +148 * +pDa +, + +149 cڡ * +pIdS +, + +150 * +pPos +, + +151  +chL +); + +152  +move_s_g_y +( + +153 +ut32_t + +addr +, + +154 +ut16_t + +ptid +); + + @VIL/conntrack/rte_cnxn_tracking.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~"e_xn_ackg.h +" + +25  + ~"e__t.h +" + +27  + #CNXN_TRX_DEBUG + 0 + + ) + +28  + #TESTING_TIMERS + 0 + + ) + +29  + #RTE_CT_TIMER_EXPIRED_DUMP + 0 + + ) + +31  + #META_DATA_OFFSET + 128 + + ) + +32  + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +33  + #ETH_HDR_SIZE + 14 + + ) + +34  + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +35  + #PROTOCOL_START + ( +IP_START + + 9) + + ) + +36  + #SRC_ADDR_START + ( +IP_START + + 12) + + ) + +37  + #TCP_START + ( +IP_START + + 20) + + ) + +40  + #PROTOCOL_START_IPV6 + ( +IP_START + + 6) + + ) + +41  + #SRC_ADDR_START_IPV6 + ( +IP_START + + 8) + + ) + +42  + #TCP_START_IPV6 + ( +IP_START + + 40) + + ) + +44  + #TCP_PROTOCOL + 6 + + ) + +45  + #UDP_PROTOCOL + 17 + + ) + +46  + #TCP_FW_IPV4_KEY_SIZE + 16 + + ) + +48  + #TCP_FW_IPV6_KEY_SIZE + 40 + + ) + +50  + #IPv4_HEADER_SIZE + 20 + + ) + +51  + #IPv6_HEADER_SIZE + 40 + + ) + +53  + #IP_VERSION_4 + 4 + + ) + +54  + #IP_VERSION_6 + 6 + + ) + +57 +e__xn_ack_bch_lookup_basic_ty +( + +58  +e__xn_ack + * + +, + +59  +e_mbuf + ** +pkts +, + +60 +ut64_t + * +pkts_mask +, + +61 +ut64_t + +no_w_xn_mask +, + +62 +ut64_t + * +y_pkt_mask +, + +63 +ut64_t + * +hijack_mask +, + +64 +ut8_t + +_hdr_size_bys +); + +74 + $e__xn_t_pkt +( +e_mbuf + * +pkt +, +ut8_t + +ty +) + +76  +i +; + +77 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +IP_START +); + +79 + `tf +("\n"); + +80 + `tf +("IPnd TCP/UDP headers:\n"); + +82 i( +ty + = +IP_VERSION_4 +) { + +83  +i + = 0; i < 40; i++) { + +84 + `tf +("%02x ", +rd +[ +i +]); + +85 i(( +i + & 3) == 3) + +86 + `tf +("\n"); + +88 + `tf +("\n"); + +91 i( +ty + = +IP_VERSION_6 +) { + +92  +i + = 0; i < 60; i++) { + +93 + `tf +("%02x ", +rd +[ +i +]); + +94 i(( +i + & 3) == 3) + +95 + `tf +("\n"); + +97 + `tf +("\n"); + +100 + } +} + +103 + $e_xn__ty +( +ut8_t + * +ty +,  +e_mbuf + * +pkt +) + +106  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +pkt +); + +108 i( +_hdr_size_bys + = +IPv4_HEADER_SIZE +) + +109 * +ty + = +IP_VERSION_4 +; + +111 i( +_hdr_size_bys + = +IPv6_HEADER_SIZE +) + +112 * +ty + = +IP_VERSION_6 +; + +113 + } +} + +116 + $e__t_hashkey +( +ut32_t + * +key +) + +118 + `tf +("Key: %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x \\\n", + +119 +key +[0], key[1], key[2], key[3], + +120 +key +[4], key[5], key[6], key[7], key[8], key[9]); + +121 + } +} + +133 +ut8_t + + +134 + $e___xn_hashkey +( + +135 +ut32_t + * +c_addr +, + +136 +ut32_t + * +d_addr +, + +137 +ut16_t + +c_pt +, + +138 +ut16_t + +d_pt +, + +139 +ut8_t + +o +, + +140 +ut32_t + * +key +, + +141 +ut8_t + +ty +) + +143 +ut8_t + +hash_d_ig_dei + = 1; + +145 +key +[9] = +o +; + +147 i( +ty + = +IP_VERSION_4 +) { + +148 +ut32_t + +sour + = * +c_addr +; + +149 +ut32_t + +de + = * +d_addr +; + +151 +key +[3] = key[4] = key[5] = key[6] = key[7] = key[8] = 0; + +153 i(( +sour + < +de +) + +154 || (( +sour + = +de +&& ( +c_pt + < +d_pt +))) { + +155 +key +[0] = +sour +; + +156 +key +[1] = +de +; + +157 +key +[2] = ( +c_pt + << 16| +d_pt +; + +159 +key +[0] = +de +; + +160 +key +[1] = +sour +; + +161 +key +[2] = ( +d_pt + << 16| +c_pt +; + +162 +hash_d_ig_dei + = 0; + +166 i( +ty + = +IP_VERSION_6 +) { + +167  +_cmp + = + `memcmp +( +c_addr +, +d_addr +, 16); + +168 +ut32_t + * +lo_addr +; + +169 +ut32_t + * +hi_addr +; + +171 i(( +_cmp + < 0|| ((_cm=0&& ( +c_pt + < +d_pt +))) { + +172 +lo_addr + = +c_addr +; + +173 +hi_addr + = +d_addr +; + +174 +key +[8] = ( +c_pt + << 16| +d_pt +; + +176 +lo_addr + = +d_addr +; + +177 +hi_addr + = +c_addr +; + +178 +key +[8] = ( +d_pt + << 16| +c_pt +; + +179 +hash_d_ig_dei + = 0; + +181 +key +[0] = +lo_addr +[0]; + +182 +key +[1] = +lo_addr +[1]; + +183 +key +[2] = +lo_addr +[2]; + +184 +key +[3] = +lo_addr +[3]; + +185 +key +[4] = +hi_addr +[0]; + +186 +key +[5] = +hi_addr +[1]; + +187 +key +[6] = +hi_addr +[2]; + +188 +key +[7] = +hi_addr +[3]; + +191 #ifde +ALGDBG + + +192 + `e__t_hashkey +( +key +); + +194  +hash_d_ig_dei +; + +195 + } +} + +199 + $e__g_IP_hdr_size +( +e_mbuf + * +pkt +) + +207 +ut8_t + +hdr_chk + = + `RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +209 +hdr_chk + = hdr_chk >> 4; + +211 i( +hdr_chk + = +IP_VERSION_4 +) + +212  +IPv4_HEADER_SIZE +; + +214 i( +hdr_chk + = +IP_VERSION_6 +) + +215  +IPv6_HEADER_SIZE +; + +224 + } +} + +227 + $e__t_tim_f_w_xn +( + +228  +e__xn_ack + * + +, + +229  +e__xn_da + * +cd +) + +231 +cd +-> +e_ud_f_tim + = +RTE_CT_TCP_NONE +; + +232 + `e__t_xn_tim_f_t +( + +, +cd +, +RTE_CT_TCP_SYN_SENT +); + +233 + } +} + +264  +le +  + +265 + $e__memb_w_ci +( + +266  +e__xn_ack + * + +, + +267  +e__xn_da + * +y +) + +269 + +-> +ϋ_ci +++; + +270 + +-> +w_cis +[-> +ϋ_ci +] = +y +; + +271 + } +} + +273  +e__xn_da + * + +274 + $e__ch_w_cis +( +e__xn_ack + * + +, +ut32_t + * +key +) + +276  +i +; + +278  +i + = 0; i < + +-> +ϋ_ci +; i++) { + +279 +ut32_t + * +xn_key + = + +-> +w_cis +[ +i +]-> +key +; + +280  +key_cmp + = + `memcmp +( +xn_key +, +key +, + +281 ( + +-> +w_cis +[ +i +]-> +key +)); + +283 i( +key_cmp + == 0) + +284  + +-> +w_cis +[ +i +]; + +286  +NULL +; + +287 + } +} + +289  +le +  + $e__fg_w_cis +( +e__xn_ack + * + +) + +291 + +-> +ϋ_ci + = -1; + +292 + } +} + +297  +e__ck_ai + + +298 + $e__hd_t_lookup +( + +299  +e__xn_ack + * + +, + +300  +e_mbuf + * +ck +, + +301 +ut8_t + +pkt_num +, + +302 +ut8_t + +key_is__d +, + +303 +ut32_t + * +key +, + +304  +hash_b_y +, + +305  +no_w_xn +, + +306 +ut8_t + +_hdr_size_bys +) + +308  +e__xn_da + +w_xn_da +; + +310 + `memt +(& +w_xn_da +, 0, ( +e__xn_da +)); + +311 +e__ck_ai + +ck_ai +; + +313 #ifde +CT_CGNAT + + +314 +t32_t + +posi + = +hash_b_y +; + +315 + +-> +posis +[ +pkt_num +] = +posi +; + +319 i( +hash_b_y + >= 0) { + +325  +e__xn_da + * +y + = + +326 & + +-> +hash_b_s +[ +hash_b_y +]; + +328 +ck_ai + = + `e__vify_t_ck +( + +, +y +, +ck +, + +329 +key_is__d +, +_hdr_size_bys +); + +331  +ck_ai +) { + +333  +RTE_CT_FORWARD_PACKET +: + +334 +y +-> +cous +. +cks_fwded +++; + +337  +RTE_CT_DROP_PACKET +: + +338 +y +-> +cous +. +cks_drݳd +++; + +339  +RTE_CT_DROP_PACKET +; + +341  +RTE_CT_REOPEN_CNXN_AND_FORWARD_PACKET +: + +348 i( + `e__t_w_ci +( + +, & +w_xn_da +, + +349 +ck +, 0, +_hdr_size_bys +) != + +350 +RTE_CT_DROP_PACKET +) { + +351 + `e_memy +(& +y +-> +_oc +. +t__da +, + +352 & +w_xn_da +. +_oc +. +t__da +, + +353 ( +w_xn_da +. +_oc +. +t__da +)); + +354 + `e__t_tim_f_w_xn +( + +, +y +); + +355 i( + +-> +cous +-> +ssis_aived + > 0) + +356 + +-> +cous +-> +ssis_aived +--; + +361  +RTE_CT_SEND_SERVER_SYN +: + +362 + +-> +cous +-> +pkts_fwded +++; + +364  +RTE_CT_SEND_SERVER_SYN +; + +366  +RTE_CT_SEND_SERVER_ACK +: + +367 + +-> +cous +-> +pkts_fwded +++; + +369  +RTE_CT_SEND_SERVER_ACK +; + +371  +RTE_CT_HIJACK +: + +372 + +-> +cous +-> +pkts_fwded +++; + +376  +RTE_CT_HIJACK +; + +378  +RTE_CT_DESTROY_CNXN_AND_FORWARD_PACKET +: + +396 i( + `e_hash_d_key +( + +-> +rhash +, +y +-> +key +) >= 0) { + +407 + +-> +cous +-> +ssis_od +++; + +408 i( + +-> +cous +-> +cut_aive_ssis + > 0) + +409 + +-> +cous +-> +cut_aive_ssis +--; + +410 + `e__nl_xn_tim +( +y +); + +412 +y +-> +cous +. +cks_fwded +++; + +420  +e__xn_da + * +w_hash_y +; + +422 i( +no_w_xn +) { + +423 + +-> +cous +-> +pkts_dr_vid_cn +++; + +424  +RTE_CT_DROP_PACKET +; + +427 +ck_ai + = + `e__t_w_ci +( + +, & +w_xn_da +, + +428 +ck +, + +-> +misc_tis +. +syroxy_abd +, + +429 +_hdr_size_bys +); + +431 i( + `uiky +( +ck_ai + = +RTE_CT_DROP_PACKET +)) { + +432 + +-> +cous +-> +pkts_dr_vid_cn +++; + +433  +RTE_CT_DROP_PACKET +; + +437 +t32_t + +posi + = + `e_hash_add_key +( + +-> +rhash +, +key +); + +438 i( +posi + < 0) { + +439 +tf + + +441 +posi +, +pkt_num +); + +442  +RTE_CT_DROP_PACKET +; + +444 #ifde +CT_CGNAT + + +445 + +-> +posis +[ +pkt_num +] = +posi +; + +447 +w_hash_y + = & + +-> +hash_b_s +[ +posi +]; + +451 + `memy +( +w_xn_da +. +key +, key, (new_cnxn_data.key)); + +452 +w_xn_da +. +key_is__d + = key_is_client_order; + +453 +w_xn_da +. +oc + = +TCP_PROTOCOL +; + +454 + `e_xn__ty +(& +w_xn_da +. +ty +, +ck +); + +455 + `e_memy +( +w_hash_y +, & +w_xn_da +, + +456 ( +e__xn_da +)); + +457 +w_hash_y +-> +cous +. +cks_fwded + = 1; + +458 +w_hash_y +-> +cous +. +cks_drݳd + = 0; + +459 + +-> +cous +-> +cut_aive_ssis +++; + +460 + +-> +cous +-> +ssis_aived +++; + +462 i( +ck_ai + = +RTE_CT_SEND_CLIENT_SYNACK +) { + +466 + `e__r_tis +( +ck +, +w_hash_y +); + +473 + `e__cvt_to_ood__syck +( +w_hash_y +, + +474 +ck +); + +481 +ck_ai + = + `e__vify_t_ck +( + +, + +482 +w_hash_y +, +ck +, + +483 ! +key_is__d +, + +484 +_hdr_size_bys +); + +486 i( + `uiky +( +ck_ai + ! +RTE_CT_FORWARD_PACKET +)) { + +488 + `tf +("Seriousrror in synproxy generating "); + +489 + `tf +("SYN/ACK\n"); + +490  +RTE_CT_DROP_PACKET +; + +492 + +-> +cous +-> +pkts_fwded +++; + +494  +RTE_CT_SEND_CLIENT_SYNACK +; + +496 + `e__t_tim_f_w_xn +( + +, +w_hash_y +); + +508 + +-> +cous +-> +pkts_fwded +++; + +509  +RTE_CT_FORWARD_PACKET +; + +510 + } +} + +512  +ut64_t + + +513 + $e__xn_ack_bch_lookup_basic +( + +514  +e__xn_ack + * + +, + +515  +e_mbuf + ** +pkts +, + +516 +ut64_t + +pkts_mask +, + +517 +ut64_t + +no_w_xn_mask +, + +518 +ut64_t + * +y_pkt_mask +, + +519 +ut64_t + * +hijack_mask +) + +522 +ut64_t + +pkts_to_oss + = +pkts_mask +; + +524 +ut64_t + +vid_cks + = +pkts_mask +; + +525 +ut8_t + +comg_m +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +527 +ut8_t + +key_ig_d +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +528 +ut32_t + +cks_f_lookup + = 0; + +529 +t32_t + +posis +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +530 +ut32_t + +i +; + +531  +e__xn_da + +w_xn_da +; + +533 i( +CNXN_TRX_DEBUG + > 1) { + +534 + `tf +("E cnxack %p", + +); + +535 + `tf +(" synproxy batchookup withacket mask %p\n", + +536 (*) +pkts_mask +); + +539 + `e__fg_w_cis +( + +); + +540 * +y_pkt_mask + = 0; + +541 * +hijack_mask + = 0; + +548 ; +pkts_to_oss +;) { + +549 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_to_oss +); + +551 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +553 +pkts_to_oss + &~ +pkt_mask +; + +555  +e_mbuf + * +pkt + = +pkts +[ +pos +]; + +557  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +pkt +); + +559 i( + `uiky +( +_hdr_size_bys + < 0)) { + +564 * +_hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +569  +t_hdr + * +thdr + = + +570 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +571 ( +IP_START + + +_hdr_size_bys +)); + +572 +ut16_t + +c_pt + = + `e_bsw16 +( +thdr +->src_port); + +573 +ut16_t + +d_pt + = + `e_bsw16 +( +thdr +->dst_port); + +575 i( +_hdr_size_bys + = +IPv4_HEADER_SIZE +) { + +576  +v4_hdr + * +ihdr + = (v4_hd*) +_hdr +; + +577 +ut8_t + +o + = +ihdr +-> +xt_o_id +; + +579 i(!( +o + = +TCP_PROTOCOL + ||r= +UDP_PROTOCOL +)) { + +590 +ut32_t + +c_addr + = + `e_bsw32 +( +ihdr +->src_addr); + +591 +ut32_t + +d_addr + = + `e_bsw32 +( +ihdr +->dst_addr); + +593 i( +CNXN_TRX_DEBUG + > 2) { + +594 i( +CNXN_TRX_DEBUG + > 4) + +595 + `e__xn_t_pkt +( +pkt +, + +596 +IP_VERSION_4 +); + +602 +comg_m +[ +cks_f_lookup +] = +pos +; + +603 +key_ig_d +[ +cks_f_lookup +] = + +604 + `e___xn_hashkey +(& +c_addr +, & +d_addr +, + +605 +c_pt +, +d_pt +, + +606 +o +, + +607 & + +-> +hash_keys + + +608 [ +cks_f_lookup +][0], + +609 +IP_VERSION_4 +); + +610 +cks_f_lookup +++; + +613 i( +_hdr_size_bys + = +IPv6_HEADER_SIZE +) { + +614  +v6_hdr + * +ihdr + = (v6_hd*) +_hdr +; + +615 +ut8_t + +o + = +ihdr +->proto; + +617 i(!( +o + = +TCP_PROTOCOL + ||r= +UDP_PROTOCOL +)) { + +622 i( +CNXN_TRX_DEBUG + > 2) { + +623 i( +CNXN_TRX_DEBUG + > 4) + +624 + `e__xn_t_pkt +( +pkt +, + +625 +IP_VERSION_6 +); + +632 +comg_m +[ +cks_f_lookup +] = +pos +; + +633 +key_ig_d +[ +cks_f_lookup +] = + +634 + `e___xn_hashkey +( + +635 ( +ut32_t + * +ihdr +-> +c_addr +, + +636 ( +ut32_t + * +ihdr +-> +d_addr +, + +637 +c_pt +, +d_pt +, + +638 +o +, + +639 & + +-> +hash_keys + + +640 [ +cks_f_lookup +][0], + +641 +IP_VERSION_6 +); + +642 +cks_f_lookup +++; + +647 i( + `uiky +( +cks_f_lookup + == 0)) + +648  +vid_cks +; + +651 + `memt +(& +w_xn_da +, 0, ( +e__xn_da +)); + +655  +lookup_su + = + +656 + `e_hash_lookup_bulk +( + +-> +rhash +, (cڡ **)&-> +hash_key_rs +, + +657 +cks_f_lookup +, & +posis +[0]); + +659 i( + `uiky +( +lookup_su + < 0)) { + +661 + `tf +("Unexpected hashableroblem, discardingllackets"); + +664 #ifde +ALGDBG + + +665  +i + = 0; i < +cks_f_lookup +; i++) { + +666 i( +posis +[ +i +] >= 0) + +667 + `tf +("@CTositions[i]= %d, compacting_map[i]= %d\n", + +668 +posis +[ +i +], +comg_m +[i]); + +671  +i + = 0; i < +cks_f_lookup +; i++) { + +673  +hash_b_y + = +posis +[ +i +]; + +675 +ut8_t + +pkt_dex + = +comg_m +[ +i +]; + +677 +ut64_t + +pkt_mask + = 1LLU << +pkt_dex +; + +678 +ut8_t + +key_is__d + = +key_ig_d +[ +i +]; + +679 +ut32_t + * +key + = + +-> +hash_key_rs +[ +pkt_dex +]; + +680 +ut8_t + +oc + = *( +key + + 9); + +681  +e_mbuf + * +ck + = +pkts +[ +pkt_dex +]; + +682  +no_w_xn + = ( +pkt_mask + & +no_w_xn_mask +) != 0; + +686 i( +oc + = +TCP_PROTOCOL +) { + +687 +e__ck_ai + +t_pkt_ai +; + +689  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +ck +); + +690 +t_pkt_ai + = + `e__hd_t_lookup +( + +, +ck +, + +691 +pkt_dex +, +key_is__d +, + +692 +key +, +hash_b_y +, +no_w_xn +, + +693 +_hdr_size_bys +); + +695  +t_pkt_ai +) { + +697  +RTE_CT_SEND_CLIENT_SYNACK +: + +698  +RTE_CT_SEND_SERVER_ACK +: + +702 * +y_pkt_mask + | +pkt_mask +; + +705  +RTE_CT_SEND_SERVER_SYN +: + +706  +RTE_CT_FORWARD_PACKET +: + +709  +RTE_CT_HIJACK +: + +710 * +hijack_mask + | +pkt_mask +; + +715 +vid_cks + ^ +pkt_mask +; + +716 + +-> +cous +-> +pkts_dr +++; + +723 i( +hash_b_y + >= 0) { + +729  +e__xn_da + * +y + = + +730 & + +-> +hash_b_s +[ +hash_b_y +]; + +732 i( +e__udp_ck + + +733 ( + +, +y +, +pkts +[ +pkt_dex +], + +734 +key_is__d +)) { + +735 +y +-> +cous +. +cks_fwded +++; + +736 + +-> +cous +-> +pkts_fwded +++; + +744  +e__xn_da + * +_y + = + +745 + `e__ch_w_cis +( + +, +key +); + +747 i( +_y + ! +NULL +) { + +748 i( + `e__udp_ck +( + +, +_y +, + +749 +pkts +[ +pkt_dex +], + +750 +key_is__d +)) { + +751 +_y +-> +cous +. + +752 +cks_fwded +++; + +753 + +-> +cous +-> +pkts_fwded +++; + +760 i( +no_w_xn +) { + +764 +vid_cks + ^ +pkt_mask +; + +765 + +-> +cous +-> +pkts_dr +++; + +766 + +-> +cous +-> + +767 +pkts_dr_vid_cn +++; + +771 i( + `e__udp_w_ci +( + +, + +772 & +w_xn_da +, + +773 +pkts +[ +pkt_dex +])) { + +777 +t32_t + +posi + = + +778 + `e_hash_add_key +( + +779 + +-> +rhash +, +key +); + +781 i( +posi + < 0) + +784  +e__xn_da + + +785 * +w_hash_y + = & + +-> + +786 +hash_b_s +[ +posi +]; + +793 + `memy +( +w_xn_da +. +key +, key, + +794 ( +w_xn_da +. +key +)); + +796 +w_xn_da +. + +797 +key_is__d + + +798 +key_is__d +; + +799 +w_xn_da +. +oc + = + +800 +UDP_PROTOCOL +; + +801 + `e_xn__ty +( + +802 & +w_xn_da +. +ty +, + +803 +ck +); + +804 + `e_memy +( +w_hash_y +, + +805 & +w_xn_da +, + +807 +e__xn_da +)); + +809 +w_hash_y +-> +cous +. + +810 +cks_fwded + = 1; + +811 + +-> +cous +-> +pkts_fwded +++; + +812 +w_hash_y +-> +cous +. + +813 +cks_drݳd + = 0; + +814 + +-> +cous +-> +pkts_dr + = 0; + +815 + +-> +cous +-> + +816 +cut_aive_ssis +++; + +817 + +-> +cous +-> + +818 +ssis_aived +++; + +820 +w_hash_y +-> + +821 +e_ud_f_tim + + +822 +RTE_CT_UDP_NONE +; + +823 + `e__t_xn_tim_f_udp +( + +824 + +, + +825 +w_hash_y +, + +826 +RTE_CT_UDP_UNREPLIED +); + +828 + `e__memb_w_ci +( + +829 + +, + +830 +w_hash_y +); + +839 i( +CNXN_TRX_DEBUG + > 1) { + +840 + `tf +("Exit cnxnracker synproxy batchookup with"); + +841 + `tf +("ack mask %p\n", (*) +vid_cks +); + +844  +vid_cks +; + +845 + } +} + +847 +ut64_t + + +848 + $e__xn_ack_bch_lookup_wh_syroxy +( + +849  +e__xn_ack + * + +, + +850  +e_mbuf + ** +pkts +, + +851 +ut64_t + +pkts_mask +, + +852  +e_syroxy_hr + * +_hr +) + +854  + `e__xn_ack_bch_lookup_basic +( + +, +pkts +, +pkts_mask +, 0, + +855 & +_hr +-> +y_pkt_mask +, &_hr-> +hijack_mask +); + +856 + } +} + +857 #ifde +CT_CGNAT + + +858 +ut64_t + + $cgDZ__oss +( + +859  +e__xn_ack + * + +, + +860  +e_mbuf + ** +pkts +, + +861 +ut64_t + +pkts_mask +, + +862  +e_CT_hr + * +_hr +) + +865 + `e__dib_syroxy +( + +); + +866  + `e__xn_ack_bch_lookup_basic +( + +, +pkts +, +pkts_mask +, + +867 +_hr +-> +no_w_xn_mask +, + +868 & +_hr +-> +y_pkt_mask +, + +869 & +_hr +-> +hijack_mask +); + +870 + } +} + +872 +ut64_t + + +873 + $e__xn_ack_bch_lookup +( + +874  +e__xn_ack + * + +, + +875  +e_mbuf + ** +pkts +, + +876 +ut64_t + +pkts_mask +, + +877  +e_CT_hr + * +_hr +) + +880  + `e__xn_ack_bch_lookup_basic +( + +, +pkts +, +pkts_mask +, + +881 +_hr +-> +no_w_xn_mask +, + +882 & +_hr +-> +y_pkt_mask +, &_hr-> +hijack_mask +); + +883 + } +} + +886  + $e__xn_ack_bch_lookup_ty +( + +887  +e__xn_ack + * + +, + +888  +e_mbuf + ** +pkts +, + +889 +ut64_t + * +pkts_mask +, + +890  +e_CT_hr + * +_hr +, + +891 +ut8_t + +_hdr_size_bys +) + +894 + `e__xn_ack_bch_lookup_basic_ty +( + +, +pkts +, +pkts_mask +, + +895 +_hr +-> +no_w_xn_mask +, + +896 & +_hr +-> +y_pkt_mask +, &_hr-> +hijack_mask +, + +897 +_hdr_size_bys +); + +898 + } +} + +902 +ut64_t + + +903 + $e__xn_ack_bch_lookup_wh_w_xn_cڌ +( + +904  +e__xn_ack + * + +, + +905  +e_mbuf + ** +pkts +, + +906 +ut64_t + +pkts_mask +, + +907 +ut64_t + +no_w_xn_mask +) + +909 +ut64_t + +dt_ +; + +911  + `e__xn_ack_bch_lookup_basic +( + +, +pkts +, +pkts_mask +, + +912 +no_w_xn_mask +, + +913 & +dt_ +, &dont_care); + +914 + } +} + +918 + $e__lize_deu_timeouts +( +e__xn_ack + * +w_xn_ack +) + +923 +ut64_t + +htz + = + `e_g_tsc_hz +(); + +925 +w_xn_ack +-> +htz + = hertz; + +926 +w_xn_ack +-> +timg_cyes_r_timg_ + = +htz + / 10; + +927 +w_xn_ack +-> +timg_100ms_s_evious + = 0; + +928 +w_xn_ack +-> +timg_100ms_s + = 0; + +929 +w_xn_ack +-> +timg_ϡ_time + = + `e_g_tsc_cyes +(); + +932 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +933 [ +RTE_CT_TCP_SYN_SENT +] = 120 * +htz +; + +934 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +935 [ +RTE_CT_TCP_SYN_RECV +] = 60 * +htz +; + +937 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +938 [ +RTE_CT_TCP_ESTABLISHED +] = 60 * 60 * 24 * 5 * +htz +; + +940 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +941 [ +RTE_CT_TCP_FIN_WAIT +] = 120 * +htz +; + +942 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +943 [ +RTE_CT_TCP_CLOSE_WAIT +] = 60 * +htz +; + +944 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +945 [ +RTE_CT_TCP_LAST_ACK +] = 30 * +htz +; + +946 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +947 [ +RTE_CT_TCP_TIME_WAIT +] = 120 * +htz +; + +948 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +949 [ +RTE_CT_TCP_CLOSE +] = 10 * +htz +; + +950 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +951 [ +RTE_CT_TCP_SYN_SENT_2 +] = 120 * +htz +; + +952 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +953 [ +RTE_CT_TCP_RETRANS +] = 300 * +htz +; + +954 +w_xn_ack +-> +_timeout +. +ttimeout +. +t_timeouts + + +955 [ +RTE_CT_TCP_UNACK +] = 300 * +htz +; + +957 +w_xn_ack +-> +_timeout +. +udimeout +. +udp_timeouts + + +958 [ +RTE_CT_UDP_UNREPLIED +] = 30 * +htz +; + +959 +w_xn_ack +-> +_timeout +. +udimeout +. +udp_timeouts + + +960 [ +RTE_CT_UDP_REPLIED +] = 180 * +htz +; + +962 +w_xn_ack +-> +misc_tis +. +t_max_s + = + +963 +RTE_CT_TCP_MAX_RETRANS +; + +964 +w_xn_ack +-> +misc_tis +. +t_loo + = 0; + +965 +w_xn_ack +-> +misc_tis +. +t_be_lib + = 0; + +966 #ifde +CT_CGNAT + + +967  +i +; + +968  +i +=0; i < +RTE_HASH_LOOKUP_BULK_MAX + ;i ++ ) + +969 +w_xn_ack +-> +posis +[ +i +] = -1; + +973 + } +} + +975  +e_CT_cou_block + + ge_CT_cou_b +[ +MAX_CT_INSTANCES +] + +976 + g__e_che_igd +; + +977  + ge_CT_hi_cou_block__u + = -1; + +980 + $e__lize_xn_ack_wh_syroxy +( + +981  +e__xn_ack + * +w_xn_ack +, + +982 +ut32_t + +max_ci_cou +, + +983 * +me +, + +984 +ut16_t + +por_offt +) + +986 +ut32_t + +i +; + +987 +ut32_t + +size +; + +988  +e_CT_cou_block + * +cou_r +; + +995 +w_xn_ack +-> +por_offt + =ointer_offset; + +997 + `memt +( +w_xn_ack +-> +me +, '\0', (new_cnxn_tracker->name)); + +998 + `y +( +w_xn_ack +-> +me +,ame, + ` +(new_cnxn_tracker->name)); + +1001 +ut32_t + +numb_of_s + = +max_ci_cou +; + +1003 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +e__xn_da +) * + +1004 +numb_of_s +); + +1005 +w_xn_ack +-> +hash_b_s + = + +1006 + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1007 i( +w_xn_ack +-> +hash_b_s + = +NULL +) { + +1008 + `tf +(" Notnough memory, or invalidrguments\n"); + +1011 +w_xn_ack +-> +num_xn_s + = +numb_of_s +; + +1015  +i + = 0; i < +numb_of_s +; i++) + +1016 + `e_tim_ +(& +w_xn_ack +-> +hash_b_s +[ +i +]. +tim +); + +1019  +i + = 0; i < +RTE_HASH_LOOKUP_BULK_MAX +; i++) + +1020 +w_xn_ack +-> +hash_key_rs +[ +i +] = + +1021 & +w_xn_ack +-> +hash_keys +[ +i +][0]; + +1028 i( +e_CT_hi_cou_block__u + = +MAX_CT_INSTANCES +) + +1031 +e_CT_hi_cou_block__u +++; + +1032 +cou_r + = & +e_CT_cou_b +[ +e_CT_hi_cou_block__u +]; + +1034 +w_xn_ack +-> +cous + = +cou_r +; + +1037  +e_hash_ms + +rhash_rms + = { + +1038 . +me + =ame, + +1039 . +s + = +numb_of_s +, + +1040 . +hash_func + = +NULL +, + +1041 . +key_n + = 40, + +1042 . +hash_func__v + = 0, + +1043 . +sock_id + = + `e_sock_id +(), + +1044 . +exa_ag + = 1 + +1047 +w_xn_ack +-> +rhash + = + `e_hash_ +(& +rhash_rms +); + +1050 + } +} + +1053 + $e__lize_xn_ack +( + +1054  +e__xn_ack + * +w_xn_ack +, + +1055 +ut32_t + +max_ci_cou +, + +1056 * +me +) + +1058  + `e__lize_xn_ack_wh_syroxy +( +w_xn_ack +, + +1059 +max_ci_cou +, +me +, 0); + +1060 + } +} + +1063 + $e___xn_ack_sours +( +e__xn_ack + * +d_xn_ack +) + +1065 + `e_ +( +d_xn_ack +-> +hash_b_s +); + +1066 + `e_hash_ +( +d_xn_ack +-> +rhash +); + +1068 + } +} + +1071 + $e__g_xn_ack_size +() + +1073  ( +e__xn_ack +); + +1074 + } +} + +1077 +e__xn_tim_exped +( +e_tim + * + +, * +g +); + +1080 + $e__t_xn_tim +( + +1081  +e__xn_ack + * + +, + +1082  +e__xn_da + * +cd +, + +1083 +ut64_t + +ticks_u_timeout +) + +1090  +e_tim + * + + = (e_tim *) +cd +; + +1091 #ifde +CT_CGNAT + + +1093 +ut32_t + +ce_id + = + `g_tim_ce_id +(); + +1096 +ut32_t + +ce_id + = + `e_lce_id +(); + +1101  +sucss + = + `e_tim_t +( + +, +ticks_u_timeout +, +SINGLE +, +ce_id +, + +1102 +e__xn_tim_exped +, + +); + +1104 i( +sucss + < 0) { + +1108 + `tf +("CNXN_TRACKER: Failedo set connectionimer.\n"); + +1110 + } +} + +1118 + $e__t_xn_tim_f_t +( + +1119  +e__xn_ack + * + +, + +1120  +e__xn_da + * +cd +, + +1121 +ut8_t + +t_e +) + +1124 +cd +-> +exed_timeout + = + +1125 ( + +-> +timg_100ms_s + * ct-> +timg_cyes_r_timg_ +) + + +1126 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +t_e +]; + +1128 i( +t_e + = +cd +-> +e_ud_f_tim +) { + +1141 i( +TESTING_TIMERS +) + +1142 + `tf +("S Tim f ci %d s %s\n", +cd +, + +1143 +e__t_mes +[ +t_e +]); + +1145 + `e__t_xn_tim +( + +, +cd +, + +1146 + +-> +_timeout +. + +1147 +ttimeout +. +t_timeouts +[ +t_e +]); + +1148 +cd +-> +e_ud_f_tim + = +t_e +; + +1149 + } +} + +1158 + $e__t_xn_tim_f_udp +( + +1159  +e__xn_ack + * + +, + +1160  +e__xn_da + * +cd +, + +1161 +ut8_t + +udp_e +) + +1164 +cd +-> +exed_timeout + = ( + +-> +timg_cyes_r_timg_ +) + + +1165 + +-> +_timeout +. +udimeout +. +udp_timeouts +[ +udp_e +]; + +1167 i( +udp_e + = +cd +-> +e_ud_f_tim +) { + +1180 i( +TESTING_TIMERS +) + +1181 + `tf +("S Tim f ci %d s %s\n", +cd +, + +1182 +e__udp_mes +[ +udp_e +]); + +1183 + `e__t_xn_tim +( + +, +cd +, + +1184 + +-> +_timeout +. + +1185 +udimeout +. +udp_timeouts +[ +udp_e +]); + +1186 +cd +-> +e_ud_f_tim + = +udp_e +; + +1187 + } +} + +1193 + $e__nl_xn_tim +( +e__xn_da + * +cd +) + +1195 i( +TESTING_TIMERS +) + +1196 + `tf +("Cancel Timer\n"); + +1198 + `e_tim_ +(& +cd +-> +tim +); + +1199 + } +} + +1202 + $e__hd_exped_tims +( +e__xn_ack + * + +) + +1209 +ut64_t + +w_time + = + `e_g_tsc_cyes +(); + +1210 +ut64_t + +time_diff + = +w_time + - + +-> +timg_ϡ_time +; + +1212 i( +time_diff + > + +-> +timg_cyes_r_timg_ +) { + +1213 + +-> +timg_ϡ_time + = +w_time +; + +1214 + +-> +timg_100ms_s +++; + +1217 i( + +-> +timg_100ms_s + !-> +timg_100ms_s_evious +) { + +1218 + `e_tim_mage +(); + +1219 + +-> +timg_100ms_s_evious + = ct-> +timg_100ms_s +; + +1221 + } +} + +1226 + $e__xn_tim_exped +( +e_tim + * + +, * +g +) + +1231  +e__xn_da + * +cd + = (e__xn_d*) + +; + +1232  +e__xn_ack + * + + = (e__xn_ack *) +g +; + +1233  +sucss + = 0; + +1241 +ut64_t + +cut_time + = + +-> +timg_100ms_s + * + +1242 + +-> +timg_cyes_r_timg_ +; + +1244 i( +cd +-> +exed_timeout + > +cut_time +) { + +1245 +ut64_t + +time_diff + = +cd +-> +exed_timeout + - +cut_time +; + +1247 + `e__t_xn_tim +( + +, +cd +, +time_diff +); + +1251 i( +cd +-> +oc + = +TCP_PROTOCOL +) { + +1252 i( +cd +-> +e_ud_f_tim + = +RTE_CT_TCP_TIME_WAIT + || + +1253 +cd +-> +e_ud_f_tim + = +RTE_CT_TCP_CLOSE +) + +1254 + +-> +cous +-> +ssis_od +++; + +1256 + +-> +cous +-> +ssis_timedout +++; + +1261 i( +cd +-> +_oc +. +syroxy_da +. +syroxd +) + +1262 + `e__a_bufd_cks +( + +, +cd +); + +1264 } i( +cd +-> +oc + = +UDP_PROTOCOL +) + +1265 + +-> +cous +-> +ssis_od +++; + +1266 i( + +-> +cous +-> +cut_aive_ssis + > 0) + +1267 + +-> +cous +-> +cut_aive_ssis +--; + +1269 i( +RTE_CT_TIMER_EXPIRED_DUMP +) { + +1270 +ut64_t + +r + = ( +cd +-> +cous +. +cks_drݳd + * 10000) / + +1271 ( +cd +-> +cous +. +cks_fwded + + + +1272 +cd +-> +cous +. +cks_drݳd +); + +1274 i( +cd +-> +oc + = +TCP_PROTOCOL +) { + +1275 + `tf +("CnxnTrkr %s,imed-out TCP Connection: %p,", + +1276 + +-> +me +, +cd +); + +1277 + `tf +(" %s,kts forwarded %" + +1278 +PRIu64 + ",kts dropped %" PRIu64 + +1280 +e__t_mes +[ +cd +-> +e_ud_f_tim +], + +1281 +cd +-> +cous +. +cks_fwded +, + +1282 +cd +-> +cous +. +cks_drݳd +, + +1283 ( +ut32_t +( +r + / 100), + +1284 ( +ut32_t +( +r + % 100)); + +1285 } i( +cd +-> +oc + = +UDP_PROTOCOL +) { + +1286 + `tf +("CnxnTrkr %s, Timed-out UDP Connection: %p,", + +1287 + +-> +me +, +cd +); + +1288 + `tf +(" %s,ktfwded %" +PRIu64 + + +1289 ",ktdrݳd %" +PRIu64 + ", drop%% %u.%u\n", + +1290 +e__udp_mes +[ +cd +-> +e_ud_f_tim +], + +1291 +cd +-> +cous +. +cks_fwded +, + +1292 +cd +-> +cous +. +cks_drݳd +, + +1293 ( +ut32_t +( +r + / 100), + +1294 ( +ut32_t +( +r + % 100)); + +1298 +sucss + = + `e_hash_d_key +( + +-> +rhash +, & +cd +-> +key +); + +1300 i( +sucss + < 0) { + +1302 + `e__t_hashkey +( +cd +-> +key +); + +1305 + } +} + +1307  +e_CT_cou_block + * + +1308 + $e__g_cou_addss +( +e__xn_ack + * + +) + +1310  + +-> +cous +; + +1311 + } +} + +1314 + $e__t_cfiguti_tis +( +e__xn_ack + * + +, + +1315 * +me +, * +vue +) + +1318  +iv + = + `oi +( +vue +); + +1321 i( + `rcmp +( +me +, "tcp_loose") == 0) { + +1322 + +-> +misc_tis +. +t_loo + = +iv +; + +1327 i( + `rcmp +( +me +, "tcp_be_liberal") == 0) { + +1328 + +-> +misc_tis +. +t_be_lib + = +iv +; + +1333 i( + `rcmp +( +me +, "tcp_max_retrans") == 0) { + +1334 + +-> +misc_tis +. +t_max_s + = +iv +; + +1338 +ut64_t + +time_vue + = +iv + * + +-> +htz +; + +1344 i( + `rcmp +( +me +, "tcp_syn_sent") == 0) { + +1345 i( +time_vue + == 0) + +1347 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_SYN_SENT +] = + +1348 +time_vue +; + +1353 i( + `rcmp +( +me +, "tcp_syn_recv") == 0) { + +1354 i( +time_vue + == 0) + +1356 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_SYN_RECV +] = + +1357 +time_vue +; + +1362 i( + `rcmp +( +me +, "tcp_established") == 0) { + +1363 i( +time_vue + == 0) + +1365 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_ESTABLISHED +] = + +1366 +time_vue +; + +1371 i( + `rcmp +( +me +, "tcp_fin_wait") == 0) { + +1372 i( +time_vue + == 0) + +1374 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_FIN_WAIT +] = + +1375 +time_vue +; + +1380 i( + `rcmp +( +me +, "tcp_close_wait") == 0) { + +1381 i( +time_vue + == 0) + +1383 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_CLOSE_WAIT +] = + +1384 +time_vue +; + +1389 i( + `rcmp +( +me +, "tcp_last_ack") == 0) { + +1390 i( +time_vue + == 0) + +1392 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_LAST_ACK +] = + +1393 +time_vue +; + +1398 i( + `rcmp +( +me +, "tcp_time_wait") == 0) { + +1399 i( +time_vue + == 0) + +1401 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_TIME_WAIT +] = + +1402 +time_vue +; + +1407 i( + `rcmp +( +me +, "tcp_close") == 0) { + +1408 i( +time_vue + == 0) + +1410 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_CLOSE +] = + +1411 +time_vue +; + +1416 i( + `rcmp +( +me +, "tcp_syn_sent_2") == 0) { + +1417 i( +time_vue + == 0) + +1419 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_SYN_SENT_2 +] = + +1420 +time_vue +; + +1425 i( + `rcmp +( +me +, "tcp_retrans") == 0) { + +1426 i( +time_vue + == 0) + +1428 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_RETRANS +] = + +1429 +time_vue +; + +1434 i( + `rcmp +( +me +, "tcp_unack") == 0) { + +1435 i( +time_vue + == 0) + +1437 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +RTE_CT_TCP_UNACK +] = + +1438 +time_vue +; + +1443 i( + `rcmp +( +me +, "udp_unreplied") == 0) { + +1444 i( +time_vue + == 0) + +1446 + +-> +_timeout +. +udimeout +. +udp_timeouts +[ +RTE_CT_UDP_UNREPLIED +] = + +1447 +time_vue +; + +1452 i( + `rcmp +( +me +, "udp_replied") == 0) { + +1453 i( +time_vue + == 0) + +1455 + +-> +_timeout +. +udimeout +. +udp_timeouts +[ +RTE_CT_UDP_REPLIED +] = + +1456 +time_vue +; + +1460 + } +} + +1463 + $e__xn_ack_bch_lookup_basic_ty +( + +1464  +e__xn_ack + * + +, + +1465  +e_mbuf + ** +pkts +, + +1466 +ut64_t + * +pkts_mask +, + +1467 +ut64_t + +no_w_xn_mask +, + +1468 +ut64_t + * +y_pkt_mask +, + +1469 +ut64_t + * +hijack_mask +, + +1470 +ut8_t + +_hdr_size_bys +) + +1473 +ut64_t + +pkts_to_oss + = * +pkts_mask +; + +1475 +ut8_t + +comg_m +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1477 +ut8_t + +key_ig_d +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1478 +ut32_t + +cks_f_lookup + = 0; + +1479 +t32_t + +posis +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1480 +ut32_t + +i +; + +1481  +e__xn_da + +w_xn_da +; + +1483 i( +CNXN_TRX_DEBUG + > 1) { + +1484 + `tf +("E cnxack %p", + +); + +1485 + `tf +(" synproxy batchookup withacket mask %p\n", + +1486 (*)* +pkts_mask +); + +1489 + `e__fg_w_cis +( + +); + +1490 * +y_pkt_mask + = 0; + +1491 * +hijack_mask + = 0; + +1498  +_hdr_size_bys +) { + +1499  +IPv4_HEADER_SIZE +: + +1500 ; +pkts_to_oss +;) { + +1501 +ut8_t + +pos + = (ut8_t + `__but_z +( + +1502 +pkts_to_oss +); + +1504 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +1506 +pkts_to_oss + &~ +pkt_mask +; + +1508  +e_mbuf + * +pkt + = +pkts +[ +pos +]; + +1514  +t_hdr + * +thdr + = (tcp_hdr *) + +1515 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +1516 ( +IP_START + + +_hdr_size_bys +)); + +1517 +ut16_t + +c_pt + = + `e_bsw16 +( +thdr +->src_port); + +1518 +ut16_t + +d_pt + = + `e_bsw16 +( +thdr +->dst_port); + +1520  +v4_hdr + * +ihdr + = (ipv4_hdr *) + +1521 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +1522 +ut8_t + +o + = +ihdr +-> +xt_o_id +; + +1524 i(!( +o + = +TCP_PROTOCOL + ||r= +UDP_PROTOCOL +)) { + +1535 +ut32_t + +c_addr + = + `e_bsw32 +( +ihdr +->src_addr); + +1536 +ut32_t + +d_addr + = + `e_bsw32 +( +ihdr +->dst_addr); + +1538 i( +CNXN_TRX_DEBUG + > 2) { + +1539 i( +CNXN_TRX_DEBUG + > 4) + +1540 + `e__xn_t_pkt +( +pkt +, + +1541 +IP_VERSION_4 +); + +1547 +comg_m +[ +cks_f_lookup +] = +pos +; + +1548 +key_ig_d +[ +cks_f_lookup +] = + +1549 + `e___xn_hashkey +(& +c_addr +, & +d_addr +, + +1550 +c_pt +, +d_pt +, + +1551 +o +, + +1552 & + +-> +hash_keys + + +1553 [ +cks_f_lookup +][0], + +1554 +IP_VERSION_4 +); + +1555 +cks_f_lookup +++; + +1558  +IPv6_HEADER_SIZE +: + +1559 ; +pkts_to_oss +;) { + +1560 +ut8_t + +pos + = (ut8_t + `__but_z +( + +1561 +pkts_to_oss +); + +1563 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +1565 +pkts_to_oss + &~ +pkt_mask +; + +1567  +e_mbuf + * +pkt + = +pkts +[ +pos +]; + +1570 * +_hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +1571 +IP_START +); + +1576  +t_hdr + * +thdr + = (tcp_hdr *) + +1577 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +1578 ( +IP_START + + +_hdr_size_bys +)); + +1579 +ut16_t + +c_pt + = + `e_bsw16 +( +thdr +->src_port); + +1580 +ut16_t + +d_pt + = + `e_bsw16 +( +thdr +->dst_port); + +1582  +v6_hdr + * +ihdr + = (v6_hd*) +_hdr +; + +1583 +ut8_t + +o + = +ihdr +->proto; + +1585 i(!( +o + = +TCP_PROTOCOL + ||r= +UDP_PROTOCOL +)) { + +1590 i( +CNXN_TRX_DEBUG + > 2) { + +1591 i( +CNXN_TRX_DEBUG + > 4) + +1592 + `e__xn_t_pkt +( +pkt +, + +1593 +IP_VERSION_6 +); + +1600 +comg_m +[ +cks_f_lookup +] = +pos +; + +1601 +key_ig_d +[ +cks_f_lookup +] = + +1602 + `e___xn_hashkey +( + +1603 ( +ut32_t + * +ihdr +-> +c_addr +, + +1604 ( +ut32_t + * +ihdr +-> +d_addr +, + +1605 +c_pt +, +d_pt +, + +1606 +o +, + +1607 & + +-> +hash_keys + + +1608 [ +cks_f_lookup +][0], + +1609 +IP_VERSION_6 +); + +1610 +cks_f_lookup +++; + +1616 i( + `uiky +( +cks_f_lookup + == 0)) + +1620 + `memt +(& +w_xn_da +, 0, ( +e__xn_da +)); + +1624  +lookup_su + = + `e_hash_lookup_bulk +( + +-> +rhash +, + +1625 (cڡ **)& + +-> +hash_key_rs +, + +1626 +cks_f_lookup +, & +posis +[0]); + +1628 i( + `uiky +( +lookup_su + < 0)) { + +1630 + `tf +("Unexpected hashableroblem, discardingllackets"); + +1631 * +pkts_mask + = 0; + +1634  +i + = 0; i < +cks_f_lookup +; i++) { + +1636  +hash_b_y + = +posis +[ +i +]; + +1638 +ut8_t + +pkt_dex + = +comg_m +[ +i +]; + +1640 +ut64_t + +pkt_mask + = 1LLU << +pkt_dex +; + +1641 +ut8_t + +key_is__d + = +key_ig_d +[ +i +]; + +1642 +ut32_t + * +key + = + +-> +hash_key_rs +[ +pkt_dex +]; + +1643 +ut8_t + +oc + = *( +key + + 9); + +1644  +e_mbuf + * +ck + = +pkts +[ +pkt_dex +]; + +1645  +no_w_xn + = ( +pkt_mask + & +no_w_xn_mask +) != 0; + +1649 i( +oc + = +TCP_PROTOCOL +) { + +1650 +e__ck_ai + +t_pkt_ai +; + +1652 +t_pkt_ai + = + `e__hd_t_lookup +( + +, +ck +, + +1653 +pkt_dex +, +key_is__d +, + +1654 +key +, +hash_b_y +, +no_w_xn +, + +1655 +_hdr_size_bys +); + +1657  +t_pkt_ai +) { + +1659  +RTE_CT_SEND_CLIENT_SYNACK +: + +1660  +RTE_CT_SEND_SERVER_ACK +: + +1664 * +y_pkt_mask + | +pkt_mask +; + +1667  +RTE_CT_SEND_SERVER_SYN +: + +1668  +RTE_CT_FORWARD_PACKET +: + +1671  +RTE_CT_HIJACK +: + +1672 * +hijack_mask + | +pkt_mask +; + +1677 * +pkts_mask + ^ +pkt_mask +; + +1678 + +-> +cous +-> +pkts_dr +++; + +1685 i( +hash_b_y + >= 0) { + +1691  +e__xn_da + * +y + = + +1692 & + +-> +hash_b_s +[ +hash_b_y +]; + +1694 i( +e__udp_ck + + +1695 ( + +, +y +, +pkts +[ +pkt_dex +], + +1696 +key_is__d +)) { + +1697 +y +-> +cous +. +cks_fwded +++; + +1698 + +-> +cous +-> +pkts_fwded +++; + +1706  +e__xn_da + * +_y + = + +1707 + `e__ch_w_cis +( + +, +key +); + +1709 i( +_y + ! +NULL +) { + +1710 i( + `e__udp_ck +( + +, +_y +, + +1711 +pkts +[ +pkt_dex +], + +1712 +key_is__d +)) { + +1713 +_y +-> +cous +. + +1714 +cks_fwded +++; + +1715 + +-> +cous +-> +pkts_fwded +++; + +1722 i( +no_w_xn +) { + +1726 * +pkts_mask + ^ +pkt_mask +; + +1727 + +-> +cous +-> +pkts_dr +++; + +1728 + +-> +cous +-> + +1729 +pkts_dr_vid_cn +++; + +1733 i( + `e__udp_w_ci +( + +, + +1734 & +w_xn_da +, +pkts +[ +pkt_dex +])) { + +1738 +t32_t + +posi + = + +1739 + `e_hash_add_key +( + +-> + +1740 +rhash +, +key +); + +1742 i( +posi + < 0) + +1745  +e__xn_da + + +1746 * +w_hash_y + = & + +-> + +1747 +hash_b_s +[ +posi +]; + +1754 + `memy +( +w_xn_da +. +key +, key, + +1755 ( +w_xn_da +. +key +)); + +1757 +w_xn_da +. + +1758 +key_is__d + + +1759 +key_is__d +; + +1760 +w_xn_da +. +oc + = + +1761 +UDP_PROTOCOL +; + +1762 + `e_xn__ty +( + +1763 & +w_xn_da +. +ty +, + +1764 +ck +); + +1765 + `e_memy +( +w_hash_y +, + +1766 & +w_xn_da +, + +1768 +e__xn_da +)); + +1770 +w_hash_y +-> +cous +. + +1771 +cks_fwded + = 1; + +1772 + +-> +cous +-> +pkts_fwded +++; + +1773 +w_hash_y +-> +cous +. + +1774 +cks_drݳd + = 0; + +1775 + +-> +cous +-> +pkts_dr + = 0; + +1776 + +-> +cous +-> + +1777 +cut_aive_ssis +++; + +1778 + +-> +cous +-> + +1779 +ssis_aived +++; + +1781 +w_hash_y +-> + +1782 +e_ud_f_tim + + +1783 +RTE_CT_UDP_NONE +; + +1784 + `e__t_xn_tim_f_udp +( + +1785 + +, + +1786 +w_hash_y +, + +1787 +RTE_CT_UDP_UNREPLIED +); + +1789 + `e__memb_w_ci +( + +1790 + +, + +1791 +w_hash_y +); + +1800 i( +CNXN_TRX_DEBUG + > 1) { + +1801 + `tf +("Exit cnxnracker synproxy batchookup with"); + +1802 + `tf +("ack mask %p\n", (*)* +pkts_mask +); + +1804 + } +} + + @VIL/conntrack/rte_cnxn_tracking.h + +17 #ide +_CNXN_TRACKING_H + + +18  + #_CNXN_TRACKING_H + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +26  + ~ + +27  + ~ + +29  + ~"e__t.h +" + +54  +e__xn_ack + + g__e_che_igd +; + +56  +e_CT_hi_cou_block__u +; + +58  + se_CT_cou_block + { + +60 +ut64_t + + mcut_aive_ssis +; + +61 +ut64_t + + mssis_aived +; + +63 +ut64_t + + mssis_aived +; + +65 +ut64_t + + mssis_eablished +; + +66 +ut64_t + + mssis_od +; + +67 +ut64_t + + mssis_timedout +; + +68 +ut64_t + + mpkts_fwded +; + +69 +ut64_t + + mpkts_dr +; + +70 +ut64_t + + mpkts_dr_vid_cn +; + +71 +ut64_t + + mpkts_dr_vid_e +; + +72 +ut64_t + + mpkts_dr_vid_r +; + +73 +ut64_t + + mpkts_dr_outof_wdow +; + +74 } + g__e_che_igd +; + +76  + se_syroxy_hr + { + +77 +ut64_t + + my_pkt_mask +; + +78 +ut64_t + + mhijack_mask +; + +79  +e_mbuf + ** + mbufd_pkts_to_fwd +; + +80 +ut8_t + + mnum_bufd_pkts_to_fwd +; + +83  + se_CT_hr + { + +84 +ut64_t + + mno_w_xn_mask +; + +85 +ut64_t + + my_pkt_mask +; + +86 +ut64_t + + mhijack_mask +; + +87  +e_mbuf + ** + mbufd_pkts_to_fwd +; + +88 +ut8_t + + mnum_bufd_pkts_to_fwd +; + +91  + #MAX_CT_INSTANCES + 24 + + ) + +93  +e_CT_cou_block + +e_CT_cou_b +[ +MAX_CT_INSTANCES +] + +94 +__e_che_igd +; + +122 +ut64_t + + +123 +e__xn_ack_bch_lookup +( + +124  +e__xn_ack + * + +, + +125  +e_mbuf + ** +pkts +, + +126 +ut64_t + +pkts_mask +, + +127  +e_CT_hr + * +_hr +); + +130 +e__xn_ack_bch_lookup_ty +( + +131  +e__xn_ack + * + +, + +132  +e_mbuf + ** +pkts +, + +133 +ut64_t + * +pkts_mask +, + +134  +e_CT_hr + * +_hr +, + +135 +ut8_t + +_hdr_size_bys +); + +169 +ut64_t + + +170 +e__xn_ack_bch_lookup_wh_w_xn_cڌ +( + +171  +e__xn_ack + * + +, + +172  +e_mbuf + ** +pkts +, + +173 +ut64_t + +pkts_mask +, + +174 +ut64_t + +no_w_xn_mask +); + +205 +ut64_t + + +206 +e__xn_ack_bch_lookup_wh_syroxy +( + +207  +e__xn_ack + * + +, + +208  +e_mbuf + ** +pkts +, + +209 +ut64_t + +pkts_mask +, + +210  +e_syroxy_hr + * +_hr +); + +239  +e_mbuf + * + +240 +e__g_bufd_syroxy_cks +( +e__xn_ack + * + +); + +259 +e__lize_xn_ack_wh_syroxy +( + +260  +e__xn_ack + * +w_xn_ack +, + +261 +ut32_t + +max_ci_cou +, + +262 * +me +, + +263 +ut16_t + +por_offt +); + +283 +e__lize_xn_ack +( + +284  +e__xn_ack + * +w_xn_ack +, + +285 +ut32_t + +max_ci_cou +, + +286 * +me +); + +301 +e___xn_ack_sours +( + +302  +e__xn_ack + * +d_xn_ack +); + +313 +e__g_xn_ack_size +(); + +323  +e_CT_cou_block +* + +324 +e__g_cou_addss +( +e__xn_ack + * + +); + +346 +e__t_cfiguti_tis +( + +347  +e__xn_ack + * + +, + +348 * +me +, + +349 * +vue +); + +363 +e__hd_exped_tims +( +e__xn_ack + * + +); + +367 +e__g_IP_hdr_size +( +e_mbuf + * +pkt +); + +378 +e__ab_syroxy +( +e__xn_ack + * + +); + +389 +e__dib_syroxy +( +e__xn_ack + * + +); + +391 +e__lize_deu_timeouts +( + +392  +e__xn_ack + * +w_xn_ack +); + +394 +ut8_t + + +395 +e___xn_hashkey +( + +396 +ut32_t + * +c_addr +, + +397 +ut32_t + * +d_addr +, + +398 +ut16_t + +c_pt +, + +399 +ut16_t + +d_pt +, + +400 +ut8_t + +o +, + +401 +ut32_t + * +key +, + +402 +ut8_t + +ty +); + +405 #ifde +CT_CGNAT + + +406 +ut32_t + +g_tim_ce_id +(); + +407 +ut64_t + +cgDZ__oss +( + +408  +e__xn_ack + * + +, + +409  +e_mbuf + ** +pkts +, + +410 +ut64_t + +pkts_mask +, + +411  +e_CT_hr + * +_hr +); + + @VIL/conntrack/rte_ct_synproxy.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~"e__t.h +" + +71  + #META_DATA_OFFSET + 128 + + ) + +72  + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +73  + #ETH_HDR_SIZE + 14 + + ) + +74  + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +75  + #PROTOCOL_START + ( +IP_START + + 9) + + ) + +76  + #IP_V4_HEADER_SIZE + 20 + + ) + +77  + #IP_V6_HEADER_SIZE + 40 + + ) + +78  + #TCP_START + ( +IP_START + + +IP_V4_HEADER_SIZE +) + + ) + +79  + #TCP_MIN_HDR_SIZE + 20 + + ) + +81  + #RTE_TCP_PROTO_ID + 6 + + ) + +82  + #RTE_SP_DEFAULT_TTL + 64 + + ) + +84  + #RTE_SYNPROXY_MAX_SPOOFED_PKTS + 64 + + ) + +86  + #RTE_TCP_SYN + 0x02 + + ) + +87  + #RTE_TCP_ACK + 0x10 + + ) + +88  + #RTE_TCP_SYN_ACK + ( +RTE_TCP_SYN + | +RTE_TCP_ACK +) + + ) + +90  + #RTE_SP_DEFAULT_WINDOW + 29200 + + ) + +91  + #RTE_CT_DEBUG_SPOOFED_SEQ + 0 + + ) + +92  + #RTE_DPDK_IS_16_4 + 0 + + ) + +94  + #IP_VERSION_4 + 4 + + ) + +95  + #IP_VERSION_6 + 6 + + ) + +101  +e_syroxy_tis + + gdeu_v4_syroxy_tis + = { + +102 . +tis + = +RTE_SP_OPTIONS_MSS + | + +103 +RTE_SP_OPTIONS_SACK_PERM + | + +104 +RTE_SP_OPTIONS_WINDOW_SCALE +, + +105 . + gmss + = 1460, + +106 . + gwdow_s + = 7, + +107 . + gl_wdow + = +RTE_SP_DEFAULT_WINDOW + + +111  +e_syroxy_tis + + gdeu_v6_syroxy_tis + = { + +112 . +tis + = +RTE_SP_OPTIONS_MSS + | + +113 +RTE_SP_OPTIONS_SACK_PERM + | + +114 +RTE_SP_OPTIONS_WINDOW_SCALE +, + +115 . + gmss + = 1440, + +116 . + gwdow_s + = 7, + +117 . + gl_wdow + = +RTE_SP_DEFAULT_WINDOW + + +121  +__e_unud +  + +122 + $e__syroxy_t_pkt_fo +( +e_mbuf + * +pkt +) + +124  +v4_hdr + * +ihdr4 + = (ipv4_hdr *) + +125 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +126 +__e_unud +  +t_hdr + * +thdr + = (tcp_hdr *) + +127 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +TCP_START +); + +128 +ut32_t + +ck_ngth + = + `e_pktmbuf_pkt_n +( +pkt +); + +130 + `tf +("\ackgth %u, ingth %u\n", +ck_ngth +, + +131 + `e_bsw16 +( +ihdr4 +-> +tٮ_ngth +)); + +132 + `e_pktmbuf_dump +( +dout +, +pkt +, 80); + +133 + } +} + +135  +le +  + +136 + $e__eml_t_chksum_upde_32 +( + +137 +ut32_t + +num_befe +, + +138 +ut32_t + +num_a +, + +140 +ut16_t + * +chksum +) + +142 +ut32_t + +sum +; + +144 +sum + = ~ + `e_bsw16 +(* +chksum +) & 0xffff; + +145 +num_befe + = ~num_before; + +146 +sum + +( +num_befe + >> 16) + (num_before & 0xffff); + +147 +sum + +( +num_a + >> 16) + (num_after & 0xffff); + +148 +sum + = (sum >> 16) + (sum & 0xffff); + +149 +sum + += (sum >> 16); + +150 * +chksum + = + `e_bsw16 +(~ +sum + & 0xffff); + +151 + } +} + +155  +le + +ut32_t + + +156 + $e__g_ndom_q_numb +() + +158  + `e_g_tsc_cyes +(); + +159 + } +} + +162  +t8_t + + $e__vsi +(* +i_hdr +) + +164 +ut8_t + * +ihdr + = (ut8_*) +i_hdr +; + +165 +t8_t + +hdr_chk + = * +ihdr +; + +167 +hdr_chk + = hdr_chk >> 4; + +168 i( +hdr_chk + = +IP_VERSION_4 + || hdr_chk = +IP_VERSION_6 +) + +169  +hdr_chk +; + +172 + } +} + +174  +le +  + +175 + $e_syroxy_adju_pkt_ngth +( +e_mbuf + * +pkt +) + +177 +ut16_t + +pkt_ngth + = 0; + +178  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +pkt +); + +179 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +181 i( +_hdr_size_bys + = +IP_V4_HEADER_SIZE +) { + +182  +v4_hdr + * +ihdr4 + = (v4_hd*) +hdr +; + +184 +pkt_ngth + = + `e_bsw16 +( +ihdr4 +-> +tٮ_ngth ++ +ETH_HDR_SIZE +; + +185 } i( +_hdr_size_bys + = +IP_V6_HEADER_SIZE +) { + +186  +v6_hdr + * +ihdr6 + = (v6_hd*) +hdr +; + +188 +pkt_ngth + = + `e_bsw16 +( +ihdr6 +-> +yld_n +) + + +189 +IP_V6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +191 +ut16_t + +mbuf_pkt_ngth + = + `e_pktmbuf_pkt_n +( +pkt +); + +193 i( +pkt_ngth + = +mbuf_pkt_ngth +) + +196 i( +pkt_ngth + < +mbuf_pkt_ngth +) { + +197 + `e_pktmbuf_im +( +pkt +, +mbuf_pkt_ngth + - +pkt_ngth +); + +202 + `e_pktmbuf_nd +( +pkt +, +pkt_ngth + - +mbuf_pkt_ngth +); + +203 + } +} + +206 + $e_syroxy_bud_v4_hd +( + +207  +v4_hdr + * +hdr4 +, + +208 +ut32_t + +c_addr +, + +209 +ut32_t + +d_addr +, + +210 +ut16_t + +t_ngth +) + +214 +hdr4 +-> +vsi_ihl + = 0x45; + +215 +hdr4 +-> +ty_of_rvi + = 0; + +216 +hdr4 +-> +tٮ_ngth + = + `e_bsw16 +( +t_ngth + + +IP_V4_HEADER_SIZE +); + +217 +hdr4 +-> +ck_id + = 0; + +219 +hdr4 +-> +agmt_offt + = 0x0040; + +220 +hdr4 +-> +time_to_live + = +RTE_SP_DEFAULT_TTL +; + +221 +hdr4 +-> +xt_o_id + = +RTE_TCP_PROTO_ID +; + +223 +hdr4 +-> +c_addr + = + `e_bsw32 +(src_addr); + +224 +hdr4 +-> +d_addr + = + `e_bsw32 +(dst_addr); + +225 + } +} + +229 + $e_syroxy_bud_v6_hd +( + +230  +v6_hdr + * +hdr6 +, + +231 +ut8_t + * +c_addr +, + +232 +ut8_t + * +d_addr +, + +233 +ut16_t + +t_ngth +) + +237 +ut8_t + +mp_c +[16]; + +238 +ut8_t + +mp_d +[16]; + +240 +hdr6 +-> +vtc_ow + = 0x60; + +241 +hdr6 +-> +yld_n + = + `e_bsw16 +( +t_ngth +); + +242 +hdr6 +-> +o + = +RTE_TCP_PROTO_ID +; + +243 +hdr6 +-> +h_lims + = +RTE_SP_DEFAULT_TTL +; + +247 + `e_mov16 +( +mp_c +, +c_addr +); + +248 + `e_mov16 +( +mp_d +, +d_addr +); + +249 + `e_mov16 +( +hdr6 +-> +c_addr +, +mp_c +); + +250 + `e_mov16 +( +hdr6 +-> +d_addr +, +mp_d +); + +251 + } +} + +255  +ut16_t + + +256 + $e__add_t_tis +( +t_hdr + * +thdr +, + +257 cڡ  +e_syroxy_tis + * +t_ts +) + +259 +ut32_t + * +tis_r + = (ut32_*)( +thdr + + 1); + +260 +ut32_t + * +ved_r + = +tis_r +; + +261 +ut8_t + +tis + = +t_ts +->options; + +262 +ut32_t + +ti_bys +; + +264 i( +tis + & +RTE_SP_OPTIONS_MSS +) { + +265 +ti_bys + = ( +RTE_CT_TCPOPT_MSS + << 24) | + +266 ( +RTE_CT_TCPOLEN_MSS + << 16| +t_ts +-> +mss +; + +267 * +tis_r +++ = + `e_bsw32 +( +ti_bys +); + +270 i( +tis + & +RTE_SP_OPTIONS_TIMESTAMP +) { + +274 i( +tis + & +RTE_SP_OPTIONS_SACK_PERM +) + +275 +ti_bys + = ( +RTE_CT_TCPOPT_SACK_PERM + << 24) | + +276 ( +RTE_CT_TCPOLEN_SACK_PERM + << 16); + +278 +ti_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +279 ( +RTE_CT_TCPOPT_NOP + << 16); + +281 +ti_bys + |( +RTE_CT_TCPOPT_TIMESTAMP + << 8) | + +282 +RTE_CT_TCPOLEN_TIMESTAMP +; + +283 * +tis_r +++ = + `e_bsw32 +( +ti_bys +); + +284 * +tis_r +++ = + `e_bsw32 +( +t_ts +-> +ts_v +); + +285 * +tis_r +++ = + `e_bsw32 +( +t_ts +-> +ts_echo_y +); + +286 } i( +tis + & +RTE_SP_OPTIONS_SACK_PERM +) { + +287 +ti_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +288 ( +RTE_CT_TCPOPT_NOP + << 16) | + +289 ( +RTE_CT_TCPOPT_SACK_PERM + << 8) | + +290 +RTE_CT_TCPOLEN_SACK_PERM +; + +291 * +tis_r +++ = + `e_bsw32 +( +ti_bys +); + +294 i( +tis + & +RTE_SP_OPTIONS_WINDOW_SCALE +) { + +295 +ti_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +296 ( +RTE_CT_TCPOPT_WINDOW + << 16) | + +297 ( +RTE_CT_TCPOLEN_WINDOW + << 8) | + +298 +t_ts +-> +wdow_s +; + +299 * +tis_r +++ = + `e_bsw32 +( +ti_bys +); + +306 +ut16_t + +da_offt_bys + = (ut16_t) + `RTE_PTR_DIFF +( +tis_r +, + +307 +ved_r ++ ( +t_hdr +); + +308 +thdr +-> +da_off + = ( +da_offt_bys + >> 2) << 4; + +310  +da_offt_bys +; + +311 + } +} + +318  +le + +ut16_t + + +319 + $e_syroxy_bud_t_hd +( + +320 +__e_unud +  +e_mbuf + * +d_pkt +, + +321  +t_hdr + * +t_hdr +, + +322 +ut16_t + +c_pt +, + +323 +ut16_t + +d_pt +, + +324 +ut32_t + +q +, + +325 +ut32_t + +ack +, + +326 +ut8_t + +ags +, + +327 cڡ  +e_syroxy_tis + * +t_ts +, + +328 +ut8_t + +add_tis +) + +330 +t_hdr +-> +c_pt + = + `e_bsw16 +(src_port); + +331 +t_hdr +-> +d_pt + = + `e_bsw16 +(dst_port); + +332 +t_hdr +-> +_q + = + `e_bsw32 +( +q +); + +333 +t_hdr +-> +cv_ack + = + `e_bsw32 +( +ack +); + +335 +t_hdr +-> +t_ags + = +ags +; + +336 +t_hdr +-> +rx_w + = +t_ts +-> +l_wdow +; + +338 +t_hdr +-> +t_u + = 0; + +342 +ut16_t + +w_t_hdr_size + = +TCP_MIN_HDR_SIZE +; + +344 i( +add_tis +) + +345 +w_t_hdr_size + = + `e__add_t_tis +( +t_hdr +, +t_ts +); + +347 +t_hdr +-> +da_off + = ( +TCP_MIN_HDR_SIZE + >> 2) << 4; + +349  +w_t_hdr_size +; + +350 + } +} + +353 + $e_syroxy_compu_checksums +(* +i_hdr +,  +t_hdr + * +t_hdr +) + +364 +t8_t + +hdr_chk + = + `e__vsi +( +i_hdr +); + +366 +t_hdr +-> +cksum + = 0; + +368 i( +hdr_chk + = +IP_VERSION_4 +) { + +369  +v4_hdr + * +i4_hdr + = (v4_hd*) +i_hdr +; + +371 +i4_hdr +-> +hdr_checksum + = 0; + +372 +t_hdr +-> +cksum + = + `e_v4_ud_cksum +( +i4_hdr +,_hdr); + +373 +i4_hdr +-> +hdr_checksum + = + `e_v4_cksum +(i4_hdr); + +374 } i( +hdr_chk + = +IP_VERSION_6 +) { + +375  +v6_hdr + * +i6_hdr + = (v6_hd*) +i_hdr +; + +377 +t_hdr +-> +cksum + = + `e_v6_ud_cksum +( +i6_hdr +,_hdr); + +379 + } +} + +391 + $e__cvt_to_ood__syck +( +e__xn_da + * +cd +, + +392  +e_mbuf + * +d_pkt +) + +398  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +d_pkt +); + +399 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START +); + +400  +t_hdr + * +thdr + = (tcp_hdr *) + +401 + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START + + + +402 +_hdr_size_bys +); + +403 +ut16_t + +t_hd_size +; + +406 +ut32_t + +w_q + = + `e__g_ndom_q_numb +(); + +408 i( +RTE_CT_DEBUG_SPOOFED_SEQ +) + +409 +w_q + = 10; + +411 +cd +-> +_oc +. +syroxy_da +. +ig_ood_q + = +w_q +; + +414 +t_hd_size + = + `e_syroxy_bud_t_hd +( +d_pkt +, +thdr +, + +415 + `e_bsw16 +( +thdr +-> +d_pt +), + +416 + `e_bsw16 +( +thdr +-> +c_pt +), + +417 +w_q +, + `e_bsw32 +( +thdr +-> +_q +) + 1, + +418 +RTE_TCP_SYN_ACK +, + +419 +_hdr_size_bys + = +IP_V4_HEADER_SIZE + ? + +420 & +deu_v4_syroxy_tis + : + +421 & +deu_v6_syroxy_tis +, 1); + +424 i( +_hdr_size_bys + = +IP_V4_HEADER_SIZE +) { + +425  +v4_hdr + * +ihdr4 + = (v4_hd*) +hdr +; + +427 + `e_syroxy_bud_v4_hd +( +ihdr4 +, + +428 + `e_bsw32 +( +ihdr4 +-> +d_addr +), + +429 + `e_bsw32 +( +ihdr4 +-> +c_addr +), +t_hd_size +); + +431 } i( +_hdr_size_bys + = +IP_V6_HEADER_SIZE +) { + +432  +v6_hdr + * +ihdr6 + = (v6_hd*) +hdr +; + +434 + `e_syroxy_bud_v6_hd +( +ihdr6 +, + +435 ( +ut8_t + *) +ihdr6 +-> +d_addr +, + +436 ( +ut8_t + *) +ihdr6 +-> +c_addr +, +t_hd_size +); + +438 + `e_syroxy_adju_pkt_ngth +( +d_pkt +); + +440 + `e_syroxy_compu_checksums +( +hdr +, +thdr +); + +442 + } +} + +446 + $e__cvt_to_ood_rv_syn +( +e__xn_da + * +cd +, + +447  +e_mbuf + * +d_pkt +) + +453  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +d_pkt +); + +454 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START +); + +455  +t_hdr + * +thdr + = (tcp_hdr *) + +456 + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START + + +457 + +_hdr_size_bys +); + +458 +ut16_t + +t_hd_size +; + +460 +t_hd_size + = + `e_syroxy_bud_t_hd +( +d_pkt +, +thdr +, + +461 + `e_bsw16 +( +thdr +-> +c_pt +), + +462 + `e_bsw16 +( +thdr +-> +d_pt +), + +463 + `e_bsw32 +( +thdr +-> +_q +) - 1, 0, + +464 +RTE_TCP_SYN +, + +465 & +cd +-> +_oc +. +syroxy_da +. +xn_tis +, 1); + +467 i( +_hdr_size_bys + = +IP_V4_HEADER_SIZE +) { + +468  +v4_hdr + * +ihdr4 + = (v4_hd*) +hdr +; + +470 + `e_syroxy_bud_v4_hd +( +ihdr4 +, + +471 + `e_bsw32 +( +ihdr4 +-> +c_addr +), + +472 + `e_bsw32 +( +ihdr4 +-> +d_addr +), +t_hd_size +); + +473 } i( +_hdr_size_bys + = +IP_V6_HEADER_SIZE +) { + +474  +v6_hdr + * +ihdr6 + = (v6_hd*) +hdr +; + +476 + `e_syroxy_bud_v6_hd +( +ihdr6 +, + +477 ( +ut8_t + *) +ihdr6 +-> +c_addr +, + +478 ( +ut8_t + *) +ihdr6 +-> +d_addr +, +t_hd_size +); + +481 + `e_syroxy_adju_pkt_ngth +( +d_pkt +); + +483 + `e_syroxy_compu_checksums +( +hdr +, +thdr +); + +485 + } +} + +488 + $e__cvt_to_ood_rv_ack +( +e__xn_da + * +cd +, + +489  +e_mbuf + * +d_pkt +) + +495  +_hdr_size_bys + = + `e__g_IP_hdr_size +( +d_pkt +); + +496 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START +); + +497  +t_hdr + * +thdr + = (tcp_hdr *) + +498 + `RTE_MBUF_METADATA_UINT32_PTR +( +d_pkt +, +IP_START + + + +499 +_hdr_size_bys +); + +504 +ut32_t + +_q + = + `e_bsw32 +( +thdr +-> +_q +); + +505 +ut16_t + +t_hd_size +; + +507 +cd +-> +_oc +. +syroxy_da +. +q_diff + = + +508 +_q + - +cd +-> +_oc +. +syroxy_da +. +ig_ood_q +; + +511 +t_hd_size + = + `e_syroxy_bud_t_hd +( +d_pkt +, +thdr +, + +512 + `e_bsw16 +( +thdr +-> +d_pt +), + +513 + `e_bsw16 +( +thdr +-> +c_pt +), + +514 + `e_bsw32 +( +thdr +-> +cv_ack +), + +515 + `e_bsw32 +( +thdr +-> +_q ++ 1, +RTE_TCP_ACK +, + +516 & +cd +-> +_oc +. +syroxy_da +. +xn_tis +, 0); + +519 i( +_hdr_size_bys + = +IP_V4_HEADER_SIZE +) { + +520  +v4_hdr + * +ihdr4 + = (v4_hd*) +hdr +; + +522 + `e_syroxy_bud_v4_hd +( +ihdr4 +, + +523 + `e_bsw32 +( +ihdr4 +-> +d_addr +), + +524 + `e_bsw32 +( +ihdr4 +-> +c_addr +), +t_hd_size +); + +526 } i( +_hdr_size_bys + = +IP_V6_HEADER_SIZE +) { + +527  +v6_hdr + * +ihdr6 + = (v6_hd*) +hdr +; + +529 + `e_syroxy_bud_v6_hd +( +ihdr6 +, + +530 ( +ut8_t + *) +ihdr6 +-> +d_addr +, + +531 ( +ut8_t + *) +ihdr6 +-> +c_addr +, +t_hd_size +); + +533 + `e_syroxy_adju_pkt_ngth +( +d_pkt +); + +535 + `e_syroxy_compu_checksums +( +hdr +, +thdr +); + +536 + } +} + +551 + $e__adju_rv_q_a_wdow_check +( + +552  +e__xn_da + * +cd +, + +553 +__e_unud + * +i_hdr +, + +554  +t_hdr + * +thdr +, + +555 +e__pkt_dei + +d +) + +557 +ut32_t + +num_befe +, +num_a +; + +559 i(! +cd +-> +_oc +. +syroxy_da +. +xn_eablished +) + +562 i( +d + = +RTE_CT_DIR_ORIGINAL +) + +567 +num_befe + = + `e_bsw32 +( +thdr +-> +_q +); + +568 +num_a + = +num_befe + - +cd +-> +_oc +. +syroxy_da +. +q_diff +; + +569 +thdr +-> +_q + = + `e_bsw32 +( +num_a +); + +571 + `e__eml_t_chksum_upde_32 +( +num_befe +, +num_a +, + +572 & +thdr +-> +cksum +); + +573 + } +} + +577 + $e__adju__ck_s +( + +578  +t_hdr + * +thdr +, + +579 +ut32_t + +diff +) + +581 +ut32_t + +num_befe +, +num_a +; + +582 +ut32_t + * +ck_r +; + +583 +ut8_t + +ck_blk_size +; + +584 +ut16_t + +daoff__bys + = ( +thdr +-> +da_off + & 0xf0) >> 2; + +585 +ut16_t + +ngth + = +daoff__bys + - ( +t_hdr +); + +587 i(! +ngth +) + +590 +ut8_t + * +tis_r + = (ut8_*)( +thdr + + 1); + +592  +ngth + > 0) { + +593 +ut8_t + +code + = * +tis_r +; + +594 +ut8_t + +size + = +tis_r +[1]; + +595  +i +; + +597  +code +) { + +599  +RTE_CT_TCPOPT_EOL +: + +602  +RTE_CT_TCPOPT_NOP +: + +603 +ngth +--; + +604 +tis_r +++; + +607  +RTE_CT_TCPOPT_SACK +: + +616 +ck_blk_size + = +size + - 2; + +618 +ck_r + = ( +ut32_t + *)( +tis_r + + 2); + +620  +num_acks + = +ck_blk_size + >> 2; + +622 i( + `uiky +( +ck_blk_size + > 32 || + +623 (( +ck_blk_size + & 0x3) != 0))) { + +624 + `tf +("Sack blockarsing failure\n"); + +628  +i + = 0; i < +num_acks +; i++) { + +629 +num_befe + = + `e_bsw32 +(* +ck_r +); + +630 +num_a + = +num_befe + + +diff +; + +631 * +ck_r + = + `e_bsw32 +( +num_a +); + +632 +ck_r +++; + +633 + `e__eml_t_chksum_upde_32 +( + +634 +num_befe +, + +635 +num_a +, + +636 & +thdr +-> +cksum +); + +643 i(( +size + < 2|| (siz> +ngth +)) { + +644 + `tf +("ERROR!, opsize %i,ength %i\n", + +645 +size +, +ngth +); + +649 +tis_r + + +size +; + +650 +ngth + - +size +; + +652 + } +} + +655 + $e__adju__ack_befe_wdow_check +( + +656  +e__xn_da + * +cd +, + +657 +__e_unud + * +i_hdr +, + +658  +t_hdr + * +thdr +, + +659 +e__pkt_dei + +d +) + +661 +ut32_t + +num_befe +, +num_a +; + +663 i(! +cd +-> +_oc +. +syroxy_da +. +xn_eablished +) + +666 i( +d + ! +RTE_CT_DIR_ORIGINAL +) + +671 +num_befe + = + `e_bsw32 +( +thdr +-> +cv_ack +); + +672 +num_a + = +num_befe + + +cd +-> +_oc +. +syroxy_da +. +q_diff +; + +673 +thdr +-> +cv_ack + = + `e_bsw32 +( +num_a +); + +674 + `e__eml_t_chksum_upde_32 +( +num_befe +, + +675 +num_a +, & +thdr +-> +cksum +); + +680 + `e__adju__ck_s +( +thdr +, + +681 +cd +-> +_oc +. +syroxy_da +. +q_diff +); + +686 + } +} + +693 + $e__r_t_tis +( + +694 +ut8_t + * +tis_r +, + +695 +ut16_t + +ngth +, + +696  +e_syroxy_tis + * +t_ts +) + +698  +size +; + +700 +t_ts +-> +tis + = 0; + +702  +ngth + > 0) { + +703 +ut8_t + +code + = * +tis_r +++; + +705 i( +code + = +RTE_CT_TCPOPT_EOL +) + +708 i( +code + = +RTE_CT_TCPOPT_NOP +) { + +709 +ngth +--; + +713 +size + = * +tis_r +++; + +715 i( + `uiky +( +size + < 2 || opsiz> +ngth +)) { + +717 + `tf +("parsingrror, opsize: %i,ength: %i\n", + +718 +size +, +ngth +); + +722  +code +) { + +724  +RTE_CT_TCPOPT_MSS +: + +725 i( +size + = +RTE_CT_TCPOLEN_MSS +) { + +726 +ut16_t + * +mss_r + = (ut16_*) +tis_r +; + +728 +t_ts +-> +mss + = + `e_bsw16 +(* +mss_r +); + +729 +t_ts +-> +tis + | +RTE_SP_OPTIONS_MSS +; + +733  +RTE_CT_TCPOPT_WINDOW +: + +734 i( +size + = +RTE_CT_TCPOLEN_WINDOW +) { + +735 +t_ts +-> +wdow_s + = + `RTE_MIN +(* +tis_r +, + +736 +RTE_CT_MAX_TCP_WINDOW_SCALE +); + +737 +t_ts +-> +tis + | +RTE_SP_OPTIONS_WINDOW_SCALE +; + +741  +RTE_CT_TCPOPT_TIMESTAMP +: + +742 i( +size + = +RTE_CT_TCPOLEN_TIMESTAMP +) { + +743 +ut32_t + * +ts_v_r + = (ut32_*) +tis_r +; + +744 +ut32_t + * +ts_e_r + = + +745 ( +ut32_t + *)( +tis_r + + 4); + +746 +t_ts +-> +ts_v + = + `e_bsw32 +(* +ts_v_r +); + +747 +t_ts +-> +ts_echo_y + = + +748 + `e_bsw32 +(* +ts_e_r +); + +749 +t_ts +-> +tis + | +RTE_SP_OPTIONS_TIMESTAMP +; + +753  +RTE_CT_TCPOPT_SACK_PERM +: + +754 i( +size + = +RTE_CT_TCPOLEN_SACK_PERM +) + +755 +t_ts +-> +tis + | +RTE_SP_OPTIONS_SACK_PERM +; + +762 +tis_r + + +size + - 2; + +763 +ngth + - +size +; + +766 + } +} + +770 + $e__r_tis +( +e_mbuf + * +pkt +,  +e__xn_da + * +cd +) + +775  +_hdr_ngth + = + `e__g_IP_hdr_size +( +pkt +); + +776  +t_hdr + * +thdr + = (tcp_hdr *) + +777 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START + + +_hdr_ngth +); + +778 +ut8_t + * +t_r + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +779 ( +IP_START + + +_hdr_ngth + + ( +t_hdr +))); + +781  +e_syroxy_tis + * +t_ts + = + +782 & +cd +-> +_oc +. +syroxy_da +. +xn_tis +; + +783  +ngth__bys + = + +784 (( +thdr +-> +da_off + & 0xf0>> 2- ( +t_hdr +); + +786 + `e__r_t_tis +( +t_r +, +ngth__bys +, +t_ts +); + +787 +t_ts +-> +l_wdow + = +thdr +-> +rx_w +; + +788 + } +} + +793  +e_mbuf + * + +794 + $e__g_bufd_syroxy_cks +( + +795  +e__xn_ack + * + +) + +797  +e_mbuf + * +kr_li + = + +-> +bufd_pkt_li +; + +799 + +-> +bufd_pkt_li + = +NULL +; + +800  +kr_li +; + +801 + } +} + +805  + $e__ab_syroxy +( +e__xn_ack + * + +) + +807 + +-> +misc_tis +. +syroxy_abd + = 1; + +808 + `tf +("rte_ct_enable_synproxy = %d\n", + +809 + +-> +misc_tis +. +syroxy_abd +); + +810 + } +} + +812  + $e__dib_syroxy +( +e__xn_ack + * + +) + +814 + +-> +misc_tis +. +syroxy_abd + = 0; + +817 + } +} + +820 + $e__bufr_ck +( + +821  +e__xn_ack + * + +, + +822  +e__xn_da + * +cd +, + +823  +e_mbuf + * +pkt +) + +831  +e_mbuf + ** +xt + = (rte_mbuf **) + +832 + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +833 + +-> +por_offt +); + +834 * +xt + = +cd +-> +_oc +. +syroxy_da +. +bufd_pkt_li +; + +835 +cd +-> +_oc +. +syroxy_da +. +bufd_pkt_li + = +pkt +; + +836 + } +} + +839 + $e__a_bufd_cks +( + +840  +e__xn_ack + * + +, + +841  +e__xn_da + * +cd +) + +843  +e_mbuf + * +xn_li + = + +844 +cd +-> +_oc +. +syroxy_da +. +bufd_pkt_li +; + +846 i( +xn_li + = +NULL +) + +849 +cd +-> +_oc +. +syroxy_da +. +bufd_pkt_li + = +NULL +; + +851  +e_mbuf + * +kr_li + = + +-> +bufd_pkt_li +; + +853 i( +kr_li + = +NULL +) + +860  +xn_li + ! +NULL +) { + +861  +e_mbuf + * +d_xt +; + +863  +e_mbuf + ** +xt + = (rte_mbuf **) + +864 + `RTE_MBUF_METADATA_UINT64_PTR +( +xn_li +, + +865 + +-> +por_offt +); + +867 +d_xt + = * +xt +; + +868 * +xt + = +kr_li +; + +869 +kr_li + = +xn_li +; + +870 +xn_li + = +d_xt +; + +872 + +-> +bufd_pkt_li + = +kr_li +; + +873 + } +} + + @VIL/conntrack/rte_ct_tcp.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~"e__t.h +" + +22  + ~"e_xn_ackg.h +" + +25  + #CT_DEBUG + 0 + + ) + +26  + #STATE_TRACKING + 0 + + ) + +27  + #RTE_CT_ASSERT + 0 + + ) + +30  + #META_DATA_OFFSET + 128 + + ) + +31  + #RTE_PKTMBUF_HEADROOM + 128 + + ) + +32  + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +33  + #ETH_HDR_SIZE + 14 + + ) + +34  + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +36  + #IPv4_HEADER_SIZE + 20 + + ) + +37  + #IPv6_HEADER_SIZE + 40 + + ) + +39  + #IP_VERSION_4 + 4 + + ) + +40  + #IP_VERSION_6 + 6 + + ) + +42  + #e_a +( +q2 +, +q1 + + `e_befe +(q1, seq2) + + ) + +43  +le + +ut8_t + + $e_befe +( +ut32_t + +q1 +, ut32_ +q2 +) + +45  ( +t32_t +( +q1 + - +q2 +) < 0; + +46 + } +} + +50  + #NO + +RTE_CT_TCP_NONE + + + ) + +51  + #SS + +RTE_CT_TCP_SYN_SENT + + + ) + +52  + #SR + +RTE_CT_TCP_SYN_RECV + + + ) + +53  + #ES + +RTE_CT_TCP_ESTABLISHED + + + ) + +54  + #FW + +RTE_CT_TCP_FIN_WAIT + + + ) + +55  + #CW + +RTE_CT_TCP_CLOSE_WAIT + + + ) + +56  + #LA + +RTE_CT_TCP_LAST_ACK + + + ) + +57  + #TW + +RTE_CT_TCP_TIME_WAIT + + + ) + +58  + #CL + +RTE_CT_TCP_CLOSE + + + ) + +59  + #S2 + +RTE_CT_TCP_SYN_SENT_2 + + + ) + +60  + #IV + +RTE_CT_TCP_MAX + + + ) + +61  + #IG + +RTE_CT_TCP_IGNORE + + + ) + +63 cڡ +ut8_t + + ge__t_e_b +[2][6][ +RTE_CT_TCP_MAX +] = { + +66 { +SS +, ctSS, +IG +, ctIG, ctIG, ctIG, ctIG, ctSS, ctSS, + +67 +S2 +}, + +70 { +IV +, ctIV, +SR +, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, + +71 +SR +}, + +74 { +IV +, ctIV, +FW +, ctFW, +LA +, ctLA, ctLA, +TW +, +CL +, + +75 +IV +}, + +77 { +ES +, +IV +, ctES, ctES, +CW +, ctCW, +TW +, ctTW, +CL +, + +78 +IV +}, + +81 { +IV +, +CL +, ctCL, ctCL, ctCL, ctCL, ctCL, ctCL, ctCL, + +82 +CL +}, + +83 { +IV +, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV} + +88 { +IV +, +S2 +, ctIV, ctIV, ctIV, ctIV, ctIV, +SS +, ctIV, + +89 +S2 +}, + +92 { +IV +, +SR +, +IG +, ctIG, ctIG, ctIG, ctIG, ctIG, ctIG, + +93 +SR +}, + +96 { +IV +, ctIV, +FW +, ctFW, +LA +, ctLA, ctLA, +TW +, +CL +, + +97 +IV +}, + +100 { +IV +, +IG +, +SR +, +ES +, +CW +, ctCW, +TW +, ctTW, +CL +, + +101 +IG +}, + +104 { +IV +, +CL +, ctCL, ctCL, ctCL, ctCL, ctCL, ctCL, ctCL, + +105 +CL +}, + +106 { +IV +, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV, ctIV} + +111 + ee_t_ag + { + +112 + mRTE_CT_TCP_SYN_FLAG +, + +113 + mRTE_CT_TCP_SAK_FLAG +, + +114 + mRTE_CT_TCP_FIN_FLAG +, + +115 + mRTE_CT_TCP_ACK_FLAG +, + +116 + mRTE_CT_TCP_RST_FLAG +, + +117 + mRTE_CT_TCP_ILL_FLAG +, + +120  +ut8_t + + ge__t_ags_to_e_b_dex +[16] = { + +122 +RTE_CT_TCP_ILL_FLAG +, + +123 +RTE_CT_TCP_FIN_FLAG +, + +124 +RTE_CT_TCP_SYN_FLAG +, + +125 +RTE_CT_TCP_ILL_FLAG +, + +126 +RTE_CT_TCP_RST_FLAG +, + +127 +RTE_CT_TCP_RST_FLAG +, + +128 +RTE_CT_TCP_RST_FLAG +, + +129 +RTE_CT_TCP_ILL_FLAG +, + +131 +RTE_CT_TCP_ACK_FLAG +, + +132 +RTE_CT_TCP_FIN_FLAG +, + +133 +RTE_CT_TCP_SAK_FLAG +, + +134 +RTE_CT_TCP_ILL_FLAG +, + +135 +RTE_CT_TCP_RST_FLAG +, + +136 +RTE_CT_TCP_ILL_FLAG +, + +137 +RTE_CT_TCP_RST_FLAG +, + +138 +RTE_CT_TCP_ILL_FLAG +, + +141  +le + +ut8_t + + +142 + $e__g_dex +( +ut8_t + +t_ags +) + +144 +ut8_t + +imp܏_ags +; + +146 +t_ags + &= 0x3f; + +147 +imp܏_ags + = (( +t_ags + & 0x10) >> 1) | (tcp_flags & 7); + +150 i( + `uiky +(( +t_ags + == 0) || (tcp_flags == 0x3f))) + +152  +RTE_CT_TCP_ILL_FLAG +; + +154  +e__t_ags_to_e_b_dex +[ +imp܏_ags +]; + +156 + } +} + +158  +le +  + +159 + $e__eh_dei_has_ags +( +e__xn_da + * +cd +, +ut8_t + +ags +) + +161  (( +cd +-> +_oc +. +t__da +. + +[0]. +ags + | cd-> + +162 +_oc +. +t__da +. + +[1]. +ags +) & flags) != 0; + +163 + } +} + +165  +le + +ut32_t + + $e__q_us_ngth +( +e_mbuf + * +pkt +, + +166 +ut8_t + +_hdr_size +) + +168 +ut16_t + +pkt_ngth + = 0; + +169  +t_hdr + * +thd + = + +170 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +171 ( +IP_START + + + +172 +_hdr_size +)); + +173 +ut32_t + +t_hdr_size + = ( +thd +-> +da_off + & 0xf0) >> 2; + +175 * +_hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +177 i( +_hdr_size + = +IPv4_HEADER_SIZE +) { + +178  +v4_hdr + * +ihdr + = (v4_hd*) +_hdr +; + +180 +pkt_ngth + = + `e_bsw16 +( +ihdr +-> +tٮ_ngth +); + +182 i( +_hdr_size + = +IPv6_HEADER_SIZE +) { + +183  +v6_hdr + * +ihdr + = (v6_hd*) +_hdr +; + +185 +pkt_ngth + = + `e_bsw16 +( +ihdr +-> +yld_n ++ +IPv6_HEADER_SIZE +; + +195  + `e_bsw32 +( +thd +-> +_q +) + + +196 +pkt_ngth + - +_hdr_size + - +t_hdr_size + + + +197 (( +thd +-> +t_ags + & ( +RTE_CT_TCPHDR_SYN + | +RTE_CT_TCPHDR_FIN +)) != + +200 + } +} + +203 + $e__check_f_slg_d_ck_rm +( + +204  +e_mbuf + * +pkt +, + +205  +e__t_e + * +e +, + +206 +ut8_t + +_hdr_size +) + +209  +t_hdr + * +thd + = + +210 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +211 ( +IP_START + + + +212 +_hdr_size +)); + +213 +ut32_t + +daoff__bys + = ( +thd +-> +da_off + & 0xf0) >> 2; + +214 +ut32_t + +ngth + = +daoff__bys + - ( +t_hdr +); + +216 +e +-> +s + = 0; + +217 +e +-> +ags + = 0; + +219 i( +ngth + == 0) + +222 +ut8_t + * +tis_r + = + +223 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +224 ( +IP_START + + +_hdr_size + + + +225 ( +t_hdr +))); + +227  +ngth + > 0) { + +228 +ut8_t + +ti + = * +tis_r +; + +229 +ut8_t + +size + = +tis_r +[1]; + +232  +ti +) { + +234  +RTE_CT_TCPOPT_EOL +: + +238  +RTE_CT_TCPOPT_NOP +: + +239 +tis_r +++; + +240 +ngth +--; + +243  +RTE_CT_TCPOPT_SACK_PERM +: + +244 i( +size + = +RTE_CT_TCPOLEN_SACK_PERM +) + +245 +e +-> +ags + | +RTE_CT_TCP_FLAG_SACK_PERM +; + +248  +RTE_CT_TCPOPT_WINDOW +: + +249 i( +size + = +RTE_CT_TCPOLEN_WINDOW +) { + +250 +e +-> +s + = + +251 + `RTE_MIN +( +tis_r +[2], + +252 +RTE_CT_MAX_TCP_WINDOW_SCALE +); + +253 +e +-> +ags + | +RTE_CT_TCP_FLAG_WINDOW_SCALE +; + +262 i(( +size + < 2|| (siz> +ngth +)) { + +264 + `tf +("scaling_and_sack_perm:something wrong\n"); + +267 +tis_r + + +size +; + +268 +ngth + - +size +; + +271 + } +} + +274 + $e__tdiy_hdr +( +t_hdr + * +thd +) + +276 + `tf +("T hd: src_pt=%d", + `e_bsw16 +( +thd +-> +c_pt +)); + +277 + `tf +(", d_pt=%d", + `e_bsw16 +( +thd +-> +d_pt +)); + +278 + `tf +(", st_q=%u", + `e_bsw32 +( +thd +-> +_q +)); + +279 + `tf +(",ecv_ack=%u", + `e_bsw32 +( +thd +-> +cv_ack +)); + +280 + `tf +(",da_off=%d", +thd +-> +da_off + / 16); + +281 + `tf +(",t_ags=%02x", +thd +-> +t_ags +); + +282 + `tf +(",x_w=%d\n", + `e_bsw16 +( +thd +-> +rx_w +)); + +284 + } +} + +286  +le +  + +287 + $e__r_xn_da +( +__e_unud +  +e__xn_ack + * + +, + +288  +e__xn_da + * +cd +, + +289 +__e_unud +  +e_mbuf + * +pkt +) + +293 + `memt +(& +cd +-> +_oc +. +t__da +, 0, + +294 ( +cd +-> +_oc +. +t__da +)); + +295 +cd +-> +_oc +. +t__da +. +ϡ_dex + = +RTE_CT_TCP_ILL_FLAG +; + +297 + } +} + +299 +e__ck_ai + + +300 + $e__t_w_ci +( + +301  +e__xn_ack + * + +, + +302  +e__xn_da + * +cd +, + +303  +e_mbuf + * +pkt +, + +304  +u_syroxy +, + +305 +ut8_t + +_hdr_size +) + +307  +t_hdr + * +thd + = + +308 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +309 ( +IP_START + + +_hdr_size +)); + +311 +e__t_es + +w_e +; + +312 +ut8_t + +dex +; + +313  +e__t_e + * +nd + = + +314 & +cd +-> +_oc +. +t__da +. + +[ +RTE_CT_DIR_ORIGINAL +]; + +315  +e__t_e + * +iv + = + +316 & +cd +-> +_oc +. +t__da +. + +[ +RTE_CT_DIR_REPLY +]; + +317 +ut16_t + +w +; + +319 i( +CT_DEBUG +) + +320 + `e__tdiy_hdr +( +thd +); + +322 +dex + = + `e__g_dex +( +thd +-> +t_ags +); + +323 +w_e + = +e__t_e_b +[0][ +dex +][ +RTE_CT_TCP_NONE +]; + +325 i( + `uiky +( +w_e + > +RTE_CT_TCP_MAX +)) { + +326 i( +CT_DEBUG +) + +327 + `tf +("invalidew state with flags %02x\n", + +328 +thd +-> +t_ags +); + +329  +RTE_CT_DROP_PACKET +; + +337 i( + `uiky +(( +w_e + ! +RTE_CT_TCP_SYN_SENT + + +338 && + +-> +misc_tis +. +t_loo + == 0))) { + +341  +RTE_CT_DROP_PACKET +; + +344 i( +CT_DEBUG +) + +345 + `tf +("ew connection with state %s\n", + +346 +e__t_mes +[ +w_e +]); + +349 + `e__r_xn_da +( + +, +cd +, +pkt +); + +350 +cd +-> +_oc +. +t__da +. +e + = +w_e +; + +352 +nd +-> +d + = sd-> +maxd + = + `e__q_us_ngth +( +pkt +, +_hdr_size +); + +353 +w + = + `e_bsw16 +( +thd +-> +rx_w +); + +354 +nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +356 i( + `liky +( +w_e + = +RTE_CT_TCP_SYN_SENT +)) { + +358 + `e__check_f_slg_d_ck_rm +( +pkt +, +nd +, + +359 +_hdr_size +); + +361 +cd +-> +_oc +. +syroxy_da +. +syroxd + = +u_syroxy +; + +363 i( +u_syroxy +) { + +370 i( +CT_DEBUG + > 2) + +371 + `tf +("synproxy sending SYN-ACKo client\n"); + +373  +RTE_CT_SEND_CLIENT_SYNACK +; + +382 +nd +-> +maxd + +nd-> +maxw +; + +383 +nd +-> +ags + = +iv +->flags = + +384 ( +RTE_CT_TCP_FLAG_SACK_PERM + | +RTE_CT_TCP_FLAG_BE_LIBERAL +); + +387 i( +CT_DEBUG + > 0) { + +388 + `tf +("tcp_new: sendernd=%u maxend=%u maxwin=%u scale=%i", + +389 +nd +-> +d +, sd-> +maxd +, sd-> +maxw +, + +390 +nd +-> +s +); + +391 + `tf +("eceivernd=%u maxend=%u maxwin=%u scale=%i\n", + +392 +iv +-> +d +,eiv-> +maxd +, + +393 +iv +-> +maxw +, + +394 +iv +-> +s +); + +397  +RTE_CT_OPEN_CONNECTION +; + +398 + } +} + +400  +ut32_t + + +401 + $e__t_ck +( +e_mbuf + * +pkt +, +ut8_t + +_hdr_size +) + +403  +t_hdr + * +thd + = + +404 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +405 ( +IP_START + + + +406 +_hdr_size +)); + +407 +ut16_t + +daoff__bys + = ( +thd +-> +da_off + & 0xf0) >> 2; + +408 +ut16_t + +ngth + = +daoff__bys + - ( +t_hdr +); + +409 +ut32_t + +ck + = + `e_bsw32 +( +thd +-> +cv_ack +); + +411 i( + `uiky +(! +ngth +)) + +412  +ck +; + +414 +ut8_t + * +tis_r + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +415 ( +IP_START + + +_hdr_size + + ( +t_hdr +))); + +417  +ngth + > 0) { + +418 +ut8_t + +code + = * +tis_r +; + +419 +ut8_t + +size + = +tis_r +[1]; + +420  +i +; + +421 +ut32_t + * +ck_r +; + +423  +code +) { + +424  +RTE_CT_TCPOPT_TIMESTAMP +: + +428  +RTE_CT_TCPOPT_EOL +: + +429  +ck +; + +431  +RTE_CT_TCPOPT_NOP +: + +432 +ngth +--; + +433 +tis_r +++; + +436  +RTE_CT_TCPOPT_SACK +: + +446 i(( +size + >( +RTE_CT_TCPOLEN_PER_SACK_ENTRY + + 2)) && + +447 (( +size + - 2) % + +448 +RTE_CT_TCPOLEN_PER_SACK_ENTRY +) == 0) { + +451 +tis_r + += 6; + +452  +i + = 0; i < ( +size + - 2); i += + +453 +RTE_CT_TCPOLEN_PER_SACK_ENTRY +) { + +454 +ck_r + = + +455 ( +ut32_t + *& +tis_r +[ +i +]; + +456 +ut32_t + +ack + = + `e_bsw32 +(* +ck_r +); + +458 i( + `e_a +( +ack +, +ck +)) + +459 +ck + = +ack +; + +461  +ck +; + +467 i(( +size + < 2|| (siz> +ngth +)) { + +468 + `tf +("rte_ct_tcp_sack: something wrong, opsize %i,", + +469 +size +); + +470 + `tf +("gth %i\n", +ngth +); + +471  +ck +; + +473 +tis_r + + +size +; + +474 +ngth + - +size +; + +476  +ck +; + +477 + } +} + +483  +le +  + +484 + $e__check_f_smissis +( + +485  +e__t + * +e +, + +486 +ut8_t + +d +, + +487 +ut32_t + +q +, + +488 +ut32_t + +ack +, + +489 +ut32_t + +d +, + +490 +ut16_t + +w +) + +492 i( +e +-> +ϡ_d + = +d + + +493 && +e +-> +ϡ_q + = +q + + +494 && +e +-> +ϡ_ack + = +ack + + +495 && +e +-> +ϡ_d + = +d + && s-> +ϡ_w + = +w +) + +496 +e +-> +s +++; + +498 +e +-> +ϡ_d + = +d +; + +499 +e +-> +ϡ_q + = +q +; + +500 +e +-> +ϡ_ack + = +ack +; + +501 +e +-> +ϡ_d + = +d +; + +502 +e +-> +ϡ_w + = +w +; + +503 +e +-> +s + = 0; + +505 + } +} + +511  +ut8_t + + +512 + $e__t__wdow +( + +513  +e__xn_da + * +cd +, + +514  +e__xn_ack + * + +, + +515  +e__t + * +e +, + +516 +e__pkt_dei + +d +, + +517 +ut8_t + +dex +, + +518  +e_mbuf + * +pkt +, + +519 +ut8_t + +_hdr_size +) + +521  +e__t_e + * +nd + = & +e +-> + +[ +d +]; + +522  +e__t_e + * +iv + = & +e +-> + +[! +d +]; + +523 +ut32_t + +q +, +ack +, +ck +, +d +, +w +, +sw +; + +524 +ut8_t + +_cv_w +, +t_ags +; + +525 +e__ck_ai + +s +; + +527 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +528  +t_hdr + * +thd + = + +529 ( +t_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +530 ( +IP_START + + +_hdr_size +)); + +532 i( +cd +-> +_oc +. +syroxy_da +. +syroxd +) + +533 + `e__adju__ack_befe_wdow_check +( +cd +, +hdr +, + +534 +thd +, +d +); + +537 +q + = + `e_bsw32 +( +thd +-> +_q +); + +538 +ack + = +ck + = + `e_bsw32 +( +thd +-> +cv_ack +); + +539 +w + = + `e_bsw16 +( +thd +-> +rx_w +); + +540 +d + = + `e__q_us_ngth +( +pkt +, +_hdr_size +); + +541 +t_ags + = +thd +->tcp_flags; + +543 i( +iv +-> +ags + & +RTE_CT_TCP_FLAG_SACK_PERM +) + +544 +ck + = + `e__t_ck +( +pkt +, +_hdr_size +); + +546 i( + `uiky +( +nd +-> +maxw + == 0)) { + +548 i( +t_ags + & +RTE_CT_TCPHDR_SYN +) { + +553 +nd +-> +d + = sd-> +maxd + =nd; + +554 +nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +556 + `e__check_f_slg_d_ck_rm +( +pkt +, +nd +, + +557 +_hdr_size +); + +563 i(( +nd +-> + +564 +ags + & +iv +->flags & + +565 +RTE_CT_TCP_FLAG_WINDOW_SCALE +) == 0) + +566 +nd +-> +s + = +iv +->scale = 0; + +568 i(!( +t_ags + & +RTE_CT_TCPHDR_ACK +)) + +576 +nd +-> +d + =nd; + +577 +sw + = +w + << +nd +-> +s +; + +578 +nd +-> +maxw + = ( +sw + == 0 ? 1 : swin); + +579 +nd +-> +maxd + = +d + + sd-> +maxw +; + +585 i( +iv +-> +maxw + == 0) + +586 +iv +-> +d + =eiv-> +maxd + = +ck +; + +590 i((( +cd +-> +_oc +. +t__da +. +e + = +RTE_CT_TCP_SYN_SENT + && + +591 +d + = +RTE_CT_DIR_ORIGINAL +) || + +592 ( +cd +-> +_oc +. +t__da +. +e + = +RTE_CT_TCP_SYN_RECV + && + +593 +d + = +RTE_CT_DIR_REPLY +)&& + `e_a +( +d +, +nd +->end)) { + +599 +nd +-> +d + = sd-> +maxd + =nd; + +600 +nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +602 + `e__check_f_slg_d_ck_rm +( +pkt +, +nd +, + +603 +_hdr_size +); + +606 i(!( +t_ags + & +RTE_CT_TCPHDR_ACK +) || + +607 ((( +t_ags + & +RTE_CT_TCPHDR_RST_ACK +) == + +608 +RTE_CT_TCPHDR_RST_ACK +&& ( +ack + == 0))) { + +610 +ack + = +ck + = +iv +-> +d +; + +613 i(( +t_ags + & +RTE_CT_TCPHDR_RST +&& +q + == 0 && + +614 +cd +-> +_oc +. +t__da +. +e + = +RTE_CT_TCP_SYN_SENT +) + +616 +q + = +d + = +nd +->end; + +619 +_cv_w + = ! +iv +-> +maxw + || + +620 + `e_a +( +d +, +nd +->d - +iv +-> +maxw + - 1); + +622 i( + `e_befe +( +q +, +nd +-> +maxd + + 1&& +_cv_w + && + +623 + `e_befe +( +ck +, +iv +-> +d + + 1) && + +624 + `e_a +( +ck +, + +625 +iv +-> +d + - + `RTE_MAX +( +nd +-> +maxw +, + +626 ( +ut32_t +) +RTE_MAX_ACKWIN_CONST +) - 1)) { + +633 i(!( +t_ags + & +RTE_CT_TCPHDR_SYN +)) + +634 +w + << +nd +-> +s +; + +637 +sw + = +w + + ( +ck + - +ack +); + +638 +nd +-> +maxw + = + `RTE_MAX +(nd->maxw, +sw +); + +640 i( + `e_a +( +d +, +nd +->end)) { + +641 +nd +-> +d + =nd; + +642 +nd +-> +ags + | +RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED +; + +645 i( +t_ags + & +RTE_CT_TCPHDR_ACK +) { + +646 i(!( +nd +-> +ags + & +RTE_CT_TCP_FLAG_MAXACK_SET +)) { + +647 +nd +-> +maxack + = +ack +; + +648 +nd +-> +ags + | +RTE_CT_TCP_FLAG_MAXACK_SET +; + +649 } i( + `e_a +( +ack +, +nd +-> +maxack +)) + +650 +nd +-> +maxack + = +ack +; + +654 i( +iv +-> +maxw + !0 && + `e_a +( +d +, +nd +-> +maxd +)) + +655 +iv +-> +maxw + + +d + - +nd +-> +maxd +; + +657 i( + `e_a +( +ck + + +w +, +iv +-> +maxd + - 1)) + +658 +iv +-> +maxd + = +ck + + + `RTE_MAX +( +w +, ( +ut32_t +)1); + +660 i( +ack + = +iv +-> +d +) + +661 +iv +-> +ags + &~ +RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED +; + +664 i( +dex + = +RTE_CT_TCP_ACK_FLAG +) + +665 + `e__check_f_smissis +( +e +, +d +, +q +, +ack +, + +666 +d +, +w +); + +667 +s + = 1; + +669 +s + = ( +nd +-> +ags + & +RTE_CT_TCP_FLAG_BE_LIBERAL + || + +670 + +-> +misc_tis +. +t_be_lib +); + +673 i( +CT_DEBUG +) { + +674 i(! +s +) { + +676 + `tf +("t__wdow FAILED f %p\n", +cd +); + +677 + `tf +("rte_before(%u, %u + 1) is %d\n", + +678 +q +, +nd +-> +maxd + + 1, + +679 + `e_befe +( +q +, +nd +-> +maxd + + 1)); + +680 + `tf +("!%u ||te_after(%u, %u - %u - 1) is %d\n", + +681 +iv +-> +maxw +, +d +, +nd +->end, + +682 +iv +-> +maxw +, +_cv_w +); + +683 + `tf +("e_befe(%u, %u + 1i%d\n", +ck +, + +684 +iv +-> +d +, + `e_befe +( +ck +, + +685 +iv +-> +d + + 1)); + +686 +tf + + +688 +ck +, +iv +-> +d +, +nd +-> +maxw +, + +689 +RTE_MAX_ACKWIN_CONST +, + `e_a +( +ck +, + +690 +iv +-> +d + - + `RTE_MAX +( +nd +-> +maxw +, + +691 ( +ut32_t +) +RTE_MAX_ACKWIN_CONST +) + +696 i( +cd +-> +_oc +. +syroxy_da +. +syroxd +) + +697 + `e__adju_rv_q_a_wdow_check +( +cd +, +hdr +, + +698 +thd +, +d +); + +699  +s +; + +700 + } +} + +703  +le + +ut8_t + + +704 + $e__choo_m_timeout_e +( + +705  +e__xn_ack + * + +, + +706 +ut8_t + +e1 +, + +707 +ut8_t + +e2 +) + +709 i( + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +e1 +] < + +710 + +-> +_timeout +. +ttimeout +. +t_timeouts +[ +e2 +]) + +711  +e1 +; + +713  +e2 +; + +714 + } +} + +718 +e__ck_ai + + +719 + $e__vify_t_ck +( + +720  +e__xn_ack + * + +, + +721  +e__xn_da + * +cd +, + +722  +e_mbuf + * +pkt +, + +723 +ut8_t + +key_was_杳d +, + +724 +ut8_t + +_hdr_size +) + +726  +t_hdr + * +thd + = (tcp_hdr *) + +727 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, ( +IP_START + + +_hdr_size +)); + +729 +e__t_es + +w_e +, +d_e +; + +730 +e__pkt_dei + +d +; + +731 +ut8_t + +dex +; + +735 +ut8_t + +timeout_e +; + +737 +d + = ( +cd +-> +key_is__d + =! +key_was_杳d +); + +739 i( +cd +-> +_oc +. +syroxy_da +. +syroxd + && + +740 +cd +-> +_oc +. +syroxy_da +. +hf_eablished + && + +741 ! +cd +-> +_oc +. +syroxy_da +. +xn_eablished + && + +742 +d + = +RTE_CT_DIR_ORIGINAL +) { + +748 + `e__bufr_ck +( + +, +cd +, +pkt +); + +749  +RTE_CT_HIJACK +; + +752 +ut32_t + +cv_ack + = + `e_bsw32 +( +thd +->recv_ack); + +753 +ut32_t + +_q + = + `e_bsw32 +( +thd +->sent_seq); + +755  +check_wdow + = 1; + +756 +e__ck_ai + +tu_ai + = +RTE_CT_FORWARD_PACKET +; + +760 +d_e + = +cd +-> +_oc +. +t__da +. +e +; + +761 +dex + = + `e__g_dex +( +thd +-> +t_ags +); + +762 +w_e + = +e__t_e_b +[ +d +][ +dex +][ +d_e +]; + +764 i( +w_e + = +RTE_CT_TCP_MAX +) { + +765 i( +CT_DEBUG +) { + +766 + `tf +("!!!!invalid stateransition from %s ", + +767 +e__t_mes +[ +d_e +]); + +768 + `tf +("with flags 0x%02x\n", + +769 +thd +-> +t_ags +); + +772 + +-> +cous +-> +pkts_dr_vid_e +++; + +773  +RTE_CT_DROP_PACKET +; + +776 i( +STATE_TRACKING + && +w_e + ! +d_e +) + +777 + `tf +("ew s %s\n", +e__t_mes +[ +w_e +]); + +779  +w_e +) { + +781  +RTE_CT_TCP_ESTABLISHED +: + +783 i( +cd +-> +_oc +. +syroxy_da +. +syroxd + && + +784 ! +cd +-> +_oc +. +syroxy_da +. +hf_eablished + && + +785 ( +d_e + = +RTE_CT_TCP_SYN_RECV +)) { + +793 i( +STATE_TRACKING +) { + +794 + `tf +(" synproxy first half-cnxn complete,"); + +795 + `tf +("ew state %s\n", + +796 +e__t_mes +[ +RTE_CT_TCP_SYN_SENT +]); + +798 +cd +-> +_oc +. +syroxy_da +. +hf_eablished + = +ue +; + +800 + `e__cvt_to_ood_rv_syn +( +cd +, +pkt +); + +801 + `e__r_xn_da +( + +, +cd +, +pkt +); + +802 +cd +-> +_oc +. +t__da +. +e + = +RTE_CT_TCP_SYN_SENT +; + +804  +e__t_e + * +nd + = + +805 & +cd +-> +_oc +. +t__da +. + +806 + +[ +RTE_CT_DIR_ORIGINAL +]; + +807 +ut16_t + +w + = + `e_bsw16 +( +thd +-> +rx_w +); + +809 +nd +-> +d + = sd-> +maxd + = + +810 + `e__q_us_ngth +( +pkt +, +_hdr_size +); + +811 +nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +812 + `e__check_f_slg_d_ck_rm +( +pkt +, +nd +, + +813 +_hdr_size +); + +815 + `e__t_xn_tim_f_t +( + +, +cd +, + +816 +RTE_CT_TCP_SYN_SENT +); + +817  +RTE_CT_SEND_SERVER_SYN +; + +821  +RTE_CT_TCP_SYN_RECV +: + +823 i( +cd +-> +_oc +. +syroxy_da +. +syroxd + && + +824 +cd +-> +_oc +. +syroxy_da +. +hf_eablished + && + +825 ! +cd +-> +_oc +. +syroxy_da +. +xn_eablished +) { + +833 i(! + `e__t__wdow +( +cd +, + +, + +834 & +cd +-> +_oc +. +t__da +, + +835 +d +, +dex +, +pkt +, +_hdr_size +)) { + +836 + +-> +cous +-> +pkts_dr_outof_wdow +++; + +837  +RTE_CT_DROP_PACKET +; + +840 i( +STATE_TRACKING +) { + +841 + `tf +("synproxy full cnxn complete,"); + +842 + `tf +("ew s %s\n", +e__t_mes + + +843 [ +RTE_CT_TCP_ESTABLISHED +]); + +852 + `e__cvt_to_ood_rv_ack +( +cd +, +pkt +); + +854 +dex + = + `e__g_dex +( +thd +-> +t_ags +); + +856 i(! + `e__t__wdow +( +cd +, + +, + +857 & +cd +-> +_oc +. +t__da +, + +858 ! +d +, +dex +, +pkt +, +_hdr_size +)) { + +859 + +-> +cous +-> +pkts_dr_outof_wdow +++; + +860  +RTE_CT_DROP_PACKET +; + +865 +cd +-> +_oc +. +t__da +. +e + = + +866 +RTE_CT_TCP_ESTABLISHED +; + +867 + +-> +cous +-> +ssis_eablished +++; + +868 +cd +-> +_oc +. +syroxy_da +. +xn_eablished + = +ue +; + +869 +cd +-> +_oc +. +t__da +. +ϡ_dex + = +dex +; + +870 +cd +-> +_oc +. +t__da +. +ϡ_d + = ! +d +; + +872 + `e__t_xn_tim_f_t +( + +, +cd +, + +873 +RTE_CT_TCP_ESTABLISHED +); + +874 + `e__a_bufd_cks +( + +, +cd +); + +876  +RTE_CT_SEND_SERVER_ACK +; + +879  +RTE_CT_TCP_SYN_SENT +: + +886 i( +d_e + < +RTE_CT_TCP_TIME_WAIT +) + +894  +RTE_CT_REOPEN_CNXN_AND_FORWARD_PACKET +; + +896  +RTE_CT_TCP_IGNORE +: + +912 i( +cd +-> +_oc +. +syroxy_da +. +syroxd + && + +913 ! +cd +-> +_oc +. +syroxy_da +. +xn_eablished +) + +914  +RTE_CT_DROP_PACKET +; + +916 i( +dex + = +RTE_CT_TCP_SAK_FLAG + && + +917 +cd +-> +_oc +. +t__da +. +ϡ_dex + == + +918 +RTE_CT_TCP_SYN_FLAG + + +919 && +cd +-> +_oc +. +t__da +. +ϡ_d + ! +d + + +920 && +cv_ack + = +cd +-> +_oc +. +t__da +. +ϡ_d +) { + +928  +e__t_e + * +ϡ_ + = + +929 & +cd +-> +_oc +. +t__da +. + +[cd->ct_protocol. + +930 +t__da +. + +931 +ϡ_d +]; + +935 +d_e + = +RTE_CT_TCP_SYN_SENT +; + +936 +w_e + = +RTE_CT_TCP_SYN_RECV +; + +938 +ϡ_ +-> +d + = +cd +-> +_oc +. +t__da +. +ϡ_d +; + +939 +ϡ_ +-> +maxd + = + +940 +cd +-> +_oc +. +t__da +. +ϡ_d +; + +941 +ϡ_ +-> +maxw + = + +942 + `RTE_MAX +( +cd +-> +_oc +. +t__da +. +ϡ_w +, + +943 ( +ut32_t +)1); + +944 +ϡ_ +-> +s + = + +945 +cd +-> +_oc +. +t__da +. +ϡ_ws +; + +946 +cd +-> +_oc +. +t__da +. +ϡ_ags + &= + +947 ~ +RTE_CT_EXP_CHALLENGE_ACK +; + +948 +ϡ_ +-> +ags + = + +949 +cd +-> +_oc +. +t__da +. +ϡ_ags +; + +950 + `memt +(& +cd +-> +_oc +. +t__da +. + +[ +d +], 0, + +951 ( +e__t_e +)); + +955 +cd +-> +_oc +. +t__da +. +ϡ_dex + = +dex +; + +956 +cd +-> +_oc +. +t__da +. +ϡ_d + = +d +; + +957 +cd +-> +_oc +. +t__da +. +ϡ_q + = +_q +; + +958 +cd +-> +_oc +. +t__da +. +ϡ_d + = + +959 + `e__q_us_ngth +( +pkt +, +_hdr_size +); + +960 +cd +-> +_oc +. +t__da +. +ϡ_w + = + +961 + `e_bsw16 +( +thd +-> +rx_w +); + +971 i( +dex + = +RTE_CT_TCP_SYN_FLAG + && + +972 +d + = +RTE_CT_DIR_ORIGINAL +) { + +973  +e__t_e + + +; + +976 + `e__check_f_slg_d_ck_rm +( +pkt +, & + +, + +977 +_hdr_size +); + +980 +cd +-> +_oc +. +t__da +. +ϡ_ags + = + +. +ags +; + +981 +cd +-> +_oc +. +t__da +. +ϡ_ws + = + +982 ( + +. +ags + & +RTE_CT_TCP_FLAG_WINDOW_SCALE +) == 0 ? + +983 0 : + +. +s +; + +990 i( +d_e + = +RTE_CT_TCP_LAST_ACK +) + +991 +cd +-> +_oc +. +t__da +. +ϡ_ags + |= + +992 +RTE_CT_EXP_CHALLENGE_ACK +; + +994  +RTE_CT_FORWARD_PACKET +; + +996  +RTE_CT_TCP_TIME_WAIT +: + +1002 i( +d_e + = +RTE_CT_TCP_LAST_ACK + && + +1003 +dex + = +RTE_CT_TCP_ACK_FLAG + && + +1004 +cd +-> +_oc +. +t__da +. +ϡ_d + ! +d + && + +1005 +cd +-> +_oc +. +t__da +. +ϡ_dex + == + +1006 +RTE_CT_TCP_SYN_FLAG + + +1007 && ( +cd +-> +_oc +. +t__da +. + +1008 +ϡ_ags + & +RTE_CT_EXP_CHALLENGE_ACK +)) { + +1010 +cd +-> +_oc +. +t__da +. +ϡ_ags + &= + +1011 ~ +RTE_CT_EXP_CHALLENGE_ACK +; + +1012  +RTE_CT_FORWARD_PACKET +; + +1016  +RTE_CT_TCP_CLOSE +: + +1018 i( +dex + = +RTE_CT_TCP_RST_FLAG +) { + +1025 i(( +cd +-> +_oc +. +t__da +. + +[! +d +]. +ags + & + +1026 +RTE_CT_TCP_FLAG_MAXACK_SET +) && + +1027 + `e_befe +( +_q +, +cd +-> +_oc +. + +1028 +t__da +. + +[! +d +]. +maxack +)) { + +1030 + +-> +cous +-> +pkts_dr_vid_r +++; + +1032  +RTE_CT_DROP_PACKET +; + +1035 i((( +cd +-> +cnus + = +RTE_SEEN_REPLY_CONN + && + +1036 +cd +-> +_oc +. +t__da +. +ϡ_dex + == + +1037 +RTE_CT_TCP_SYN_FLAG +) || + +1038 ( +cd +-> +cnus + ! +RTE_ASSURED_CONN + && + +1039 +cd +-> +_oc +. +t__da +. +ϡ_dex + == + +1040 +RTE_CT_TCP_ACK_FLAG +)) && + +1041 +cv_ack + == + +1042 +cd +-> +_oc +. +t__da +. +ϡ_d +) { + +1045 +check_wdow + = 0; + +1054 i( + `liky +( +check_wdow +)) { + +1055 i( + `uiky +(! + `e__t__wdow +( +cd +, + +, + +1056 & +cd +-> +_oc +. +t__da +, + +1057 +d +, +dex +, + +1058 +pkt +, +_hdr_size +))) { + +1059 + +-> +cous +-> +pkts_dr_outof_wdow +++; + +1060  +RTE_CT_DROP_PACKET +; + +1064 i( +w_e + = +RTE_CT_TCP_ESTABLISHED + && + +1065 +d_e + ! +RTE_CT_TCP_ESTABLISHED +) + +1068 + +-> +cous +-> +ssis_eablished +++; + +1070 +cd +-> +_oc +. +t__da +. +ϡ_dex + = +dex +; + +1071 +cd +-> +_oc +. +t__da +. +ϡ_d + = +d +; + +1073 i( +dex + = +RTE_CT_TCP_SAK_FLAG +) + +1074 +cd +-> +cnus + = +RTE_SEEN_REPLY_CONN +; + +1076 +timeout_e + = +w_e +; + +1078 i( +cd +-> +_oc +. +t__da +. +s + >= + +1079 + +-> +misc_tis +. +t_max_s +) + +1080 +timeout_e + = + +1081 + `e__choo_m_timeout_e +( + +, +timeout_e +, + +1082 +RTE_CT_TCP_RETRANS +); + +1083 i( + `e__eh_dei_has_ags +( +cd +, + +1084 +RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED +)) + +1085 +timeout_e + = + +1086 + `e__choo_m_timeout_e +( + +, +timeout_e +, + +1087 +RTE_CT_TCP_UNACK +); + +1089 i( +cd +-> +cnus + ! +RTE_SEEN_REPLY_CONN +) { + +1090 i( +thd +-> +t_ags + & +RTE_CT_TCPHDR_RST +) { + +1097  +RTE_CT_DESTROY_CNXN_AND_FORWARD_PACKET +; + +1101 i( +w_e + = +RTE_CT_TCP_ESTABLISHED +) + +1102 +timeout_e + = + `e__choo_m_timeout_e +( + +, + +1103 +timeout_e +, + +1104 +RTE_CT_TCP_UNACK +); + +1106 } i( +cd +-> +cnus + ! +RTE_ASSURED_CONN + && + +1107 ( +d_e + = +RTE_CT_TCP_SYN_RECV + + +1108 || +d_e + = +RTE_CT_TCP_ESTABLISHED +) + +1109 && +w_e + = +RTE_CT_TCP_ESTABLISHED +) + +1110 +cd +-> +cnus + = +RTE_ASSURED_CONN +; + +1112 +cd +-> +_oc +. +t__da +. +e + = +w_e +; + +1113 + `e__t_xn_tim_f_t +( + +, +cd +, +timeout_e +); + +1115  +tu_ai +; + +1116 + } +} + + @VIL/conntrack/rte_ct_tcp.h + +17 #ide +__INCLUDE_RTE_CT_TCP_H__ + + +18  + #__INCLUDE_RTE_CT_TCP_H__ + + + ) + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~"e_xn_ackg.h +" + +37  + #RTE_CT_TCPOPT_EOL + 0 + + ) + +38  + #RTE_CT_TCPOPT_NOP + 1 + + ) + +39  + #RTE_CT_TCPOPT_MSS + 2 + + ) + +40  + #RTE_CT_TCPOPT_WINDOW + 3 + + ) + +41  + #RTE_CT_TCPOPT_SACK_PERM + 4 + + ) + +42  + #RTE_CT_TCPOPT_SACK + 5 + + ) + +43  + #RTE_CT_TCPOPT_TIMESTAMP + 8 + + ) + +45  + #RTE_CT_TCPOLEN_MSS + 4 + + ) + +46  + #RTE_CT_TCPOLEN_WINDOW + 3 + + ) + +47  + #RTE_CT_TCPOLEN_SACK_PERM + 2 + + ) + +48  + #RTE_CT_TCPOLEN_TIMESTAMP + 10 + + ) + +49  + #RTE_CT_TCPOLEN_PER_SACK_ENTRY + 8 + + ) + +51  + #RTE_CT_TCPOLEN_MSS_ALIGNED + 4 + + ) + +52  + #RTE_CT_TCPOLEN_WINDOW_ALIGNED + 4 + + ) + +53  + #RTE_CT_TCPOLEN_SACK_PERM_ALIGNED + 4 + + ) + +54  + #RTE_CT_TCPOLEN_TIMESTAMP_ALIGNED + 12 + + ) + +56  + #RTE_CT_MAX_TCP_WINDOW_SCALE + 14 + + ) + +58  + #RTE_SP_OPTIONS_MSS + 1 + + ) + +59  + #RTE_SP_OPTIONS_WINDOW_SCALE + 2 + + ) + +60  + #RTE_SP_OPTIONS_TIMESTAMP + 4 + + ) + +61  + #RTE_SP_OPTIONS_SACK_PERM + 8 + + ) + +64 + ee__ck_ai + { + +65 + mRTE_CT_OPEN_CONNECTION +, + +66 + mRTE_CT_DROP_PACKET +, + +67 + mRTE_CT_FORWARD_PACKET +, + +68 + mRTE_CT_DESTROY_CNXN_AND_FORWARD_PACKET +, + +69 + mRTE_CT_REOPEN_CNXN_AND_FORWARD_PACKET +, + +70 + mRTE_CT_SEND_CLIENT_SYNACK +, + +71 + mRTE_CT_SEND_SERVER_SYN +, + +72 + mRTE_CT_SEND_SERVER_ACK +, + +73 + mRTE_CT_HIJACK + + +76 + ee__cnus + { + +77 + mRTE_INIT_CONN +, + +78 + mRTE_SEEN_REPLY_CONN +, + +79 + mRTE_ASSURED_CONN + + +84 cڡ *cڡ + ge__t_mes +[] = { + +100 cڡ *cڡ + ge__udp_mes +[] = { + +107  + #RTE_MAX_ACKWIN_CONST + 66000 + + ) + +110  + #RTE_CT_TCP_FLAG_WINDOW_SCALE + 0x01 + + ) + +113  + #RTE_CT_TCP_FLAG_SACK_PERM + 0x02 + + ) + +116  + #RTE_CT_TCP_FLAG_CLOSE_INIT + 0x04 + + ) + +119  + #RTE_CT_TCP_FLAG_BE_LIBERAL + 0x08 + + ) + +122  + #RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED + 0x10 + + ) + +125  + #RTE_CT_TCP_FLAG_MAXACK_SET + 0x20 + + ) + +127  + #RTE_CT_EXP_CHALLENGE_ACK + 0x40 + + ) + +132  + #RTE_CT_TCPHDR_FIN + 0x01 + + ) + +133  + #RTE_CT_TCPHDR_SYN + 0x02 + + ) + +134  + #RTE_CT_TCPHDR_RST + 0x04 + + ) + +135  + #RTE_CT_TCPHDR_ACK + 0x10 + + ) + +137  + #RTE_CT_TCPHDR_RST_ACK + ( +RTE_CT_TCPHDR_RST + | +RTE_CT_TCPHDR_ACK +) + + ) + +142 + ee__t_es + { + +143 + mRTE_CT_TCP_NONE +, + +144 + mRTE_CT_TCP_SYN_SENT +, + +145 + mRTE_CT_TCP_SYN_RECV +, + +146 + mRTE_CT_TCP_ESTABLISHED +, + +147 + mRTE_CT_TCP_FIN_WAIT +, + +148 + mRTE_CT_TCP_CLOSE_WAIT +, + +149 + mRTE_CT_TCP_LAST_ACK +, + +150 + mRTE_CT_TCP_TIME_WAIT +, + +151 + mRTE_CT_TCP_CLOSE +, + +152 + mRTE_CT_TCP_SYN_SENT_2 +, + +153 + mRTE_CT_TCP_RETRANS +, + +154 + mRTE_CT_TCP_UNACK +, + +155 + mRTE_CT_TCP_IGNORE + + +158 + ee__udp_es + { + +159 + mRTE_CT_UDP_NONE +, + +160 + mRTE_CT_UDP_UNREPLIED +, + +161 + mRTE_CT_UDP_REPLIED +, + +162 + mRTE_CT_UDP_MAX + + +167  + #RTE_CT_TCP_MAX + +RTE_CT_TCP_UNACK + + + ) + +169 + ee__pkt_dei + { + +170 + mRTE_CT_DIR_ORIGINAL +, + +171 + mRTE_CT_DIR_REPLY + + +174  + se__t_e + { + +175 +ut32_t + + md +; + +176 +ut32_t + + mmaxd +; + +177 +ut32_t + + mmaxw +; + +178 +ut32_t + + mmaxack +; + +179 +ut8_t + + ms +; + +180 +ut8_t + + mags +; + +183  + se_syroxy_tis + { + +184 +ut8_t + + mtis +; + +185 +ut8_t + + mwdow_s +; + +186 +ut16_t + + mmss +; + +187 +ut32_t + + mts_v +; + +188 +ut32_t + + mts_echo_y +; + +189 +ut16_t + + ml_wdow +; + +192  + s__xn_da + { + +196  +e_mbuf + * + mbufd_pkt_li +; + +197 +ut32_t + + mig_ood_q +; + +199 +ut32_t + + mq_diff +; + +200  +e_syroxy_tis + + mxn_tis +; + +202 +ut8_t + + msyroxd +; + +203 +bo + + mhf_eablished +; + +205 +bo + + mxn_eablished +; + +208  + se__t + { + +209  +e__t_e + + m +[2]; + +210 +ut8_t + + me +; + +211 +ut8_t + + mϡ_d +; + +214 +ut8_t + + ms +; + +215 +ut8_t + + mϡ_dex +; + +216 +ut32_t + + mϡ_q +; + +217 +ut32_t + + mϡ_ack +; + +218 +ut32_t + + mϡ_d +; + +219 +ut16_t + + mϡ_w +; + +221 +ut8_t + + mϡ_ws +; + +222 +ut8_t + + mϡ_ags +; + +230  + se__xn_cous + { + +231 +ut64_t + + mcks_ived +; + +232 +ut64_t + + mcks_fwded +; + +233 +ut64_t + + mcks_drݳd +; + +236  + se__o + { + +237  +e__t + + mt__da +; + +238  +__xn_da + + msyroxy_da +; + +248  + se__xn_da + { + +252  +e_tim + + mtim +; + +254  +e__xn_cous + + mcous +; + +258 +ut32_t + + mkey +[10]; + +260  +e__o + + m_oc +; + +263 +ut64_t + + mexed_timeout +; + +266 +ut8_t + + me_ud_f_tim +; + +269 +ut8_t + + mkey_is__d +; + +270 +ut8_t + + mcnus +; + +271 +ut8_t + + moc +; + +273 +ut8_t + + mty +; + +276 +ut8_t + + mg_byss_ag +; + +278 +ut8_t + + mrv_dei +; + +279 +t16_t + + mtSeqdiff +; + +281 +ut8_t + + mp_ssi_ty +; + +282 +ut32_t + + mt_yld_size +; + +283 +t16_t + + mq_ +; + +284 +t16_t + + mack_ +; + +285 +t16_t + + mq_rv +; + +286 +t16_t + + mack_rv +; + +288 } + g__e_che_igd +; + +291  + #RTE_CT_TCP_MAX_RETRANS + 3 + + ) + +293  + se__ttimeout + { + +295 +ut64_t + + mt_timeouts +[ +RTE_CT_TCP_MAX + + 1]; + +299  + se__misc_tis + { + +300 +ut8_t + + msyroxy_abd +; + +301 +ut32_t + + mt_loo +; + +302 +ut32_t + + mt_be_lib +; + +303 +ut32_t + + mt_max_s +; + +306  + se__udimeout + { + +307 +ut64_t + + mudp_timeouts +[ +RTE_CT_UDP_MAX + + 1]; + +310  + se__timeout + { + +311  +e__ttimeout + + mttimeout +; + +312  +e__udimeout + + mudimeout +; + +315  + se__xn_ack + { + +316  +e_hash + * + mrhash +; + +322 +ut32_t + + mhash_keys +[ +RTE_HASH_LOOKUP_BULK_MAX +][10]; + +325 * + mhash_key_rs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +326 #ifde +CT_CGNAT + + +327 +ut32_t + + mposis +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +330 +ut32_t + + mnum_xn_s +; + +336  +e__xn_da + * + mhash_b_s +; + +337  +e_CT_cou_block + * + mcous +; + +339 +ut64_t + + mhtz +; + +340 +ut64_t + + mtimg_cyes_r_timg_ +; + +341 +ut64_t + + mtimg_100ms_s +; + +342 +ut64_t + + mtimg_100ms_s_evious +; + +343 +ut64_t + + mtimg_ϡ_time +; + +344  +e__timeout + + m_timeout +; + +345  +e__misc_tis + + mmisc_tis +; + +347  + mme +[16]; + +348  +e__xn_da + * + mw_cis +[64]; + +349  +e_mbuf + * + mbufd_pkt_li +; + +350  + mϋ_ci +; + +352 +ut16_t + + mpor_offt +; + +353 } + g__e_che_igd +; + +360 +e__ck_ai + + +361 +e__t_w_ci +( + +362  +e__xn_ack + * + +, + +363  +e__xn_da + * +xn +, + +364  +e_mbuf + * +pkt +, + +365  +u_syroxy +, + +366 +ut8_t + +_hdr_size +); + +373 +e__ck_ai + + +374 +e__vify_t_ck +( + +375  +e__xn_ack + * + +, + +376  +e__xn_da + * +xn +, + +377  +e_mbuf + * +pkt +, + +378 +ut8_t + +key_was_杳d +, + +379 +ut8_t + +_hdr_size +); + +386 +ut8_t + + +387 +e__udp_w_ci +( + +388  +e__xn_ack + * + +, + +389  +e__xn_da + * +cd +, + +390  +e_mbuf + * +pkt +); + +397 +e__ck_ai + + +398 +e__udp_ck +( + +399  +e__xn_ack + * + +, + +400  +e__xn_da + * +cd +, + +401  +e_mbuf + * +pkt +, + +402 +ut8_t + +key_was_杳d +); + +411 +e__t_xn_tim_f_t +( + +412  +e__xn_ack + * + +, + +413  +e__xn_da + * +cd +, + +414 +ut8_t + +t_e +); + +417 +e__t_xn_tim_f_udp +( + +418  +e__xn_ack + * + +, + +419  +e__xn_da + * +cd +, + +420 +ut8_t + +t_e +); + +423  +e__nl_xn_tim +( +e__xn_da + * +cd +); + +435 +e__cvt_to_ood__syck +( +e__xn_da + * +cd +, + +436  +e_mbuf + * +d_pkt +); + +439 +e__cvt_to_ood_rv_syn +( +e__xn_da + * +cd +, + +440  +e_mbuf + * +d_pkt +); + +443 +e__cvt_to_ood_rv_ack +( +e__xn_da + * +cd +, + +444  +e_mbuf + * +d_pkt +); + +451 +e__adju__ack_befe_wdow_check +( + +452  +e__xn_da + * +cd +, + +453 * +i_hdr +, + +454  +t_hdr + * +thdr +, + +455 +e__pkt_dei + +d +); + +458 +e__adju_rv_q_a_wdow_check +( + +459  +e__xn_da + * +cd +, + +460 * +i_hdr +, + +461  +t_hdr + * +thdr +, + +462 +e__pkt_dei + +d +); + +468 +e__r_tis +( +e_mbuf + * +pkt +,  +e__xn_da + * +cd +); + +474 +e__bufr_ck +( + +475  +e__xn_ack + * + +, + +476  +e__xn_da + * +cd +, + +477  +e_mbuf + * +pkt +); + +480 +e__a_bufd_cks +( + +481  +e__xn_ack + * + +, + +482  +e__xn_da + * +cd +); + + @VIL/conntrack/rte_ct_udp.c + +17  + ~ + +18  + ~ + +19  + ~"e__t.h +" + +20  + ~"e_xn_ackg.h +" + +22 +ut8_t + + $e__udp_w_ci +( +__e_unud +  +e__xn_ack + * + +, + +23  +e__xn_da + * +cd +, + +24 +__e_unud +  +e_mbuf + * +pkt +) + +27 +cd +-> +cnus + = +RTE_INIT_CONN +; + +29 + } +} + +30 +e__ck_ai + + $e__udp_ck +( +e__xn_ack + * + +, + +31  +e__xn_da + * +cd +, + +32 +__e_unud +  +e_mbuf + * +pkt +, + +33 +ut8_t + +key_was_杳d +) + +35 +e__pkt_dei + +d +; + +37 +d + = ( +cd +-> +key_is__d + =! +key_was_杳d +); + +39 i( +d + = +RTE_CT_DIR_REPLY + && + +40 +cd +-> +cnus + = +RTE_INIT_CONN +) { + +41 + `e__t_xn_tim_f_udp +( + +, +cd +, +RTE_CT_UDP_REPLIED +); + +42 +cd +-> +cnus + = +RTE_ASSURED_CONN +; + +43 } i( +d + = +RTE_CT_DIR_REPLY + && + +44 +cd +-> +cnus + = +RTE_ASSURED_CONN +) + +45 + `e__t_xn_tim_f_udp +( + +, +cd +, +RTE_CT_UDP_REPLIED +); + +47 + `e__t_xn_tim_f_udp +( + +, +cd +, +RTE_CT_UDP_UNREPLIED +); + +48  +RTE_CT_FORWARD_PACKET +; + +49 + } +} + + @VIL/l2l3_stack/bond.c + +17  + ~ + +18  + ~"tsx.h +" + +19 +r_ma_t + +ifm +; + +20 +ut8_t + +ifm_debug +; + +21  +USE_RTM_LOCKS +; + +22 +e_rwlock_t + +rwlock +; + +24  + $ifm_bd_pt_ +(cڡ * +me +,  +mode +, +pt_cfig_t + * +ptcf +) + +26  +pt_id +; + +27 +l2_phy_r_t + * +bd_pt +; + +28 i( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +29 + `RTE_LOG +( +INFO +, +IFM +, "%s: i/m%p, mod%d\n\r", +__FUNCTION__ +, + +30 +me +, +mode +); + +31 i( +me + = +NULL +) { + +32 + `RTE_LOG +( +ERR +, +IFM +, "%s: Paramame cannot be NULL\n\r", + +33 +__FUNCTION__ +); + +34  +IFM_FAILURE +; + +36 i( +mode + < 0 || mode > 6) { + +37 + `RTE_LOG +( +ERR +, +IFM +, "%s: Param mode should be withing 0o 6\n\r", + +38 +__FUNCTION__ +); + +39  +IFM_FAILURE +; + +41 i( +ptcf + = +NULL +) { + +42 + `RTE_LOG +( +ERR +, +IFM +, "%s: Paramortconf cannot be NULL\n\r", + +43 +__FUNCTION__ +); + +44  +IFM_FAILURE +; + +46 +bd_pt + = + `ifm_g_pt_by_me +( +me +); + +47 i( +bd_pt + = +NULL +) { + +48 i( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +49 + `RTE_LOG +( +INFO +, +IFM +, "Cifm_pt_tu%s\n\r", +me +); + +50 +pt_id + = + `e_h_bd_ +( +me +, +mode +, 0); + +51 i( +pt_id + < 0) { + +52 + `RTE_LOG +( +ERR +, +IFM +, + +54 +__FUNCTION__ +, +me +, +mode +); + +55  +IFM_FAILURE +; + +57 + `RTE_LOG +( +INFO +, +IFM +, + +59 "mod%u.\n\r", +__FUNCTION__ +, +me +, +pt_id +, + +60 + `e_h_dev_sock_id +( +pt_id +), +mode +); + +62 +bd_pt + = ( +l2_phy_r_t + * + `e_zmloc +( +NULL +, + +64 ( +l2_phy_r_t +), + +65 +RTE_CACHE_LINE_SIZE +); + +66 +bd_pt +-> +pmdid + = +pt_id +; + +67 + `y +( +bd_pt +-> +iame +, +me +, +IFM_IFNAME_LEN +); + +68 + `memy +(& +bd_pt +-> +pt_cfig +, +ptcf +, + +69 ( +pt_cfig_t +)); + +70 +bd_pt +-> +ags + | +IFM_MASTER +; + +71  +bd_pt + * +bd_fo +; + +72 +bd_fo + = ( +bd_pt + *) + `e_zmloc +( +NULL +, + +74 +bd_pt +), + +75 +RTE_CACHE_LINE_SIZE +); + +76 +bd_fo +-> +sock_id + = + `e_h_dev_sock_id +( +pt_id +); + +77 +bd_fo +-> +mode + = mode; + +78 +bd_fo +-> +bd_ptid + = +pt_id +; + +79 +bd_pt +-> +bd_cfig + = +bd_fo +; + +80 i( +mode + = +IFM_BONDING_MODE_8023AD +) + +81 +bd_pt +-> +tx_buf_n + = + +82 (2 * + `RTE_ETH_TX_BUFFER_SIZE +( +IFM_BURST_SIZE +)) * + +83 +RTE_MAX_ETHPORTS +; + +85 +ifm +. +pt_li +[ +pt_id +] = +bd_pt +; + +86 i( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +87 + `RTE_LOG +( +INFO +, +IFM +, + +89 +__FUNCTION__ +, +me +, +pt_id +); + +91 + `RTE_LOG +( +INFO +, +IFM +, "%s: Port %slreadyxists inhe" + +92 "܈li\n\r", +__FUNCTION__ +, +me +); + +93 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +94 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiringock @ %d\n\r", + +95 +__FUNCTION__ +, +__LINE__ +); + +96 i( +USE_RTM_LOCKS +) + +97 + `m_lock +(); + +99 + `e_rwlock_wre_lock +(& +rwlock +); + +101 i(!( +bd_pt +-> +ags + & +IFM_MASTER +)) { + +102 + `RTE_LOG +( +ERR +, +IFM +, "%s: Previouslyort %s wasot " + +103 "cfigudBdt\n\r", +__FUNCTION__ +, + +104 +me +); + +105 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +106 + `RTE_LOG +( +INFO +, +IFM +, + +108 +__FUNCTION__ +, +__LINE__ +); + +109 i( +USE_RTM_LOCKS +) + +110 + `m_uock +(); + +112 + `e_rwlock_wre_uock +(& +rwlock +); + +113  +IFM_FAILURE +; + +115 i( +bd_pt +-> +bd_cfig +-> +mode + != mode) { + +116 i( + `e_h_bd_mode_t +( +bd_pt +-> +pmdid +, +mode +) < 0) { + +117 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_bond_mode_set " + +118 "ed\n\r", +__FUNCTION__ +); + +119 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +120 + `RTE_LOG +( +INFO +, +IFM +, + +122 +__FUNCTION__ +, +__LINE__ +); + +123 i( +USE_RTM_LOCKS +) + +124 + `m_uock +(); + +126 + `e_rwlock_wre_uock +(& +rwlock +); + +127  +IFM_FAILURE +; + +130 +bd_pt +-> +bd_cfig +-> +mode + = + +131 + `e_h_bd_mode_g +( +bd_pt +-> +pmdid +); + +133 +bd_pt +-> +bd_cfig +-> +xm_picy + = + +134 + `e_h_bd_xm_picy_g +( +bd_pt +-> +pmdid +); + +135 i( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +136 + `RTE_LOG +( +INFO +, +IFM +, + +138 "\n\r", +__FUNCTION__ +, +bd_pt +-> +pmdid +, + +139 +bd_pt +-> +bd_cfig +-> +mode +, + +140 +bd_pt +-> +bd_cfig +-> +xm_picy +); + +142 +pt_id + = +bd_pt +-> +pmdid +; + +143 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +144 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiringock @ %d\n\r", + +145 +__FUNCTION__ +, +__LINE__ +); + +146 i( +USE_RTM_LOCKS +) + +147 + `m_uock +(); + +149 + `e_rwlock_wre_uock +(& +rwlock +); + +151  +pt_id +; + +152 + } +} + +154  + $ifm_bd_pt_de +(cڡ * +me +) + +156 +l2_phy_r_t + * +bd_pt +; + +157 i( +me + = +NULL +) { + +158 + `RTE_LOG +( +ERR +, +IFM +, "%s: Paramame cannot be NULL\n\r", + +159 +__FUNCTION__ +); + +160  +IFM_FAILURE +; + +162 +bd_pt + = + `ifm_g_pt_by_me +( +me +); + +163 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +164 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +165 +__FUNCTION__ +, +__LINE__ +); + +166 i( +USE_RTM_LOCKS +) + +167 + `m_lock +(); + +169 + `e_rwlock_wre_lock +(& +rwlock +); + +170 i( +bd_pt + = +NULL +) { + +171 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort withame %sot" + +172 " found ithli\n\r", +__FUNCTION__ +, +me +); + +173  +IFM_FAILURE +; + +175 i(!( +bd_pt +-> +ags + & +IFM_MASTER +)) { + +176 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %s isot " + +177 "cfigud in bdt\n\r", +__FUNCTION__ +, +me +); + +178 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +179 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +180 +__FUNCTION__ +, +__LINE__ +); + +181 i( +USE_RTM_LOCKS +) { + +182 + `m_uock +(); + +184 + `e_rwlock_wre_uock +(& +rwlock +); + +186  +IFM_FAILURE +; + +188 i( +bd_pt +-> +bd_cfig + && bd_pt->bd_cfig-> +ave_cou + > 0) { + +189 + `RTE_LOG +( +ERR +, +IFM +, "%s: First unbindll slave " + +190 "ptomhbd܈%s\n\r", +__FUNCTION__ +, +me +); + +191 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +192 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +193 +__FUNCTION__ +, +__LINE__ +); + +194 i( +USE_RTM_LOCKS +) { + +195 + `m_uock +(); + +197 + `e_rwlock_wre_uock +(& +rwlock +); + +199  +IFM_FAILURE +; + +201  +t +; + +202 +t + = + `e_h_bd_ +( +me +); + +203 i( +t + < 0) { + +204 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo delete " + +205 "bd܈%s\n\r", +__FUNCTION__ +, +me +); + +206 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +207 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +208 +__FUNCTION__ +, +__LINE__ +); + +209 i( +USE_RTM_LOCKS +) { + +210 + `m_uock +(); + +212 + `e_rwlock_wre_uock +(& +rwlock +); + +214  +IFM_FAILURE +; + +216 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +217 + `RTE_LOG +( +INFO +, +IFM +, "%s: Bondort %s deleted successfully\n\r", + +218 +__FUNCTION__ +, +me +); + +220 i( +bd_pt + && bd_pt-> +bd_cfig + ! +NULL +) { + +221 + `e_ +( +bd_pt +-> +bd_cfig +); + +222 +bd_pt +-> +bd_cfig + = +NULL +; + +224 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +225 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +226 +__FUNCTION__ +, +__LINE__ +); + +227 i( +USE_RTM_LOCKS +) + +228 + `m_uock +(); + +230 + `e_rwlock_wre_uock +(& +rwlock +); + +231 + `ifm_move_pt_das +( +bd_pt +-> +pmdid +); + +233  +IFM_SUCCESS +; + +234 + } +} + +236  + $ifm_add_ave_pt +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +) + +238 +l2_phy_r_t + * +bd_pt +, * +ave_pt +; + +239 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +241 +ave_pt + = + `ifm_g_pt +( +ave_pt_id +); + +243 i( +ifm_debug + & +IFM_DEBUG +) + +244 + `RTE_LOG +( +INFO +, +IFM +, "%s: i/p bond id %u, slave id %u\n\r", + +245 +__FUNCTION__ +, +bded_pt_id +, +ave_pt_id +); + +246 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +247 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +248 +__FUNCTION__ +, +__LINE__ +); + +249 i( +USE_RTM_LOCKS +) { + +250 + `m_lock +(); + +252 + `e_rwlock_wre_lock +(& +rwlock +); + +254 i( +bd_pt + = +NULL +) { + +255 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +256 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +257 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +258 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +259 +__FUNCTION__ +, +__LINE__ +); + +260 i( +USE_RTM_LOCKS +) { + +261 + `m_uock +(); + +263 + `e_rwlock_wre_uock +(& +rwlock +); + +265  +IFM_FAILURE +; + +267 i( +ave_pt + = +NULL +) { + +268 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slaveort %u isotvailable in " + +269 "p܈li.\n\r", +__FUNCTION__ +, +ave_pt_id +); + +270 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +271 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +272 +__FUNCTION__ +, +__LINE__ +); + +273 i( +USE_RTM_LOCKS +) { + +274 + `m_uock +(); + +276 + `e_rwlock_wre_uock +(& +rwlock +); + +278  +IFM_FAILURE +; + +280 i( +bd_pt + && !(bd_pt-> +ags + & +IFM_MASTER +)) { + +281 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isot configured " + +282 "aMat. %u\n\r", +__FUNCTION__ +, +bded_pt_id +, + +283 +bd_pt +-> +ags + & +IFM_MASTER +); + +284 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +285 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +286 +__FUNCTION__ +, +__LINE__ +); + +287 i( +USE_RTM_LOCKS +) { + +288 + `m_uock +(); + +290 + `e_rwlock_wre_uock +(& +rwlock +); + +292  +IFM_FAILURE +; + +294 i( +bd_pt + && bd_pt-> +bd_cfig + + +295 && +bd_pt +-> +bd_cfig +-> +ave_cou + = +RTE_MAX_ETHPORTS +) { + +296 + `RTE_LOG +( +ERR +, +IFM +, + +298 +__FUNCTION__ +, +RTE_MAX_ETHPORTS +); + +299 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +300 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +301 +__FUNCTION__ +, +__LINE__ +); + +302 i( +USE_RTM_LOCKS +) { + +303 + `m_uock +(); + +305 + `e_rwlock_wre_uock +(& +rwlock +); + +307  +IFM_FAILURE +; + +309 i( +ave_pt + && sve_pt-> +ags + & +IFM_SLAVE +) { + +311 i( +ave_pt +-> +bd_cfig + ! +NULL +) { + +312 i( +bded_pt_id + != + +313 +ave_pt +-> +bd_cfig +-> +bd_ptid +) { + +314 + `RTE_LOG +( +ERR +, +IFM +, + +317 +__FUNCTION__ +, +ave_pt_id +, + +318 +ave_pt +-> +bd_cfig +-> +bd_ptid +); + +319 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +320 + `RTE_LOG +( +INFO +, +IFM +, + +322 +__FUNCTION__ +, +__LINE__ +); + +323 i( +USE_RTM_LOCKS +) { + +324 + `m_uock +(); + +326 + `e_rwlock_wre_uock +(& +rwlock +); + +328  +IFM_FAILURE +; + +330 i( +ifm_debug + & +IFM_DEBUG +) + +331 + `RTE_LOG +( +INFO +, +IFM +, + +333 +__FUNCTION__ +, +ave_pt_id +, + +334 +bded_pt_id +); + +335 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +336 + `RTE_LOG +( +INFO +, +IFM +, + +338 +__FUNCTION__ +, +__LINE__ +); + +339 i( +USE_RTM_LOCKS +) { + +340 + `m_uock +(); + +342 + `e_rwlock_wre_uock +(& +rwlock +); + +344  +IFM_SUCCESS +; + +348 i( +bd_pt +-> +bd_cfig + && bd_pt->bd_cfig-> +ave_cou + && + +349 +bd_pt +-> +lk_d + ! +ave_pt +->link_speed + +350 && +bd_pt +-> +lk_duex + ! +ave_pt +->link_duplex) { + +351 + `RTE_LOG +( +ERR +, +IFM +, + +353 +__FUNCTION__ +); + +354 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +355 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +356 +__FUNCTION__ +, +__LINE__ +); + +357 i( +USE_RTM_LOCKS +) { + +358 + `m_uock +(); + +360 + `e_rwlock_wre_uock +(& +rwlock +); + +362  +IFM_FAILURE +; + +364 i( +ifm_debug + & +IFM_DEBUG +) + +365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Slaveort %u Masterort %u\n\r", + +366 +__FUNCTION__ +, +ave_pt_id +, +bded_pt_id +); + +367  +t +; + +368 +t + = + `e_h_bd_ave_add +( +bd_pt +-> +pmdid +, +ave_pt +->pmdid); + +369 i( +t + < 0) { + +370 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedodd slaveort %uo bond " + +371 "p܈%u.\n\r", +__FUNCTION__ +, +ave_pt +-> +pmdid +, + +372 +bd_pt +-> +pmdid +); + +373 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +374 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +375 +__FUNCTION__ +, +__LINE__ +); + +376 i( +USE_RTM_LOCKS +) { + +377 + `m_uock +(); + +379 + `e_rwlock_wre_uock +(& +rwlock +); + +381  +IFM_FAILURE +; + +383 +ave_pt +-> +ags + | +IFM_SLAVE +; + +385 i( +bd_pt +-> +bd_cfig +) { + +386 +bd_pt +-> +bd_cfig +-> +xm_picy + = + +387 + `e_h_bd_xm_picy_g +( +bd_pt +-> +pmdid +); + +388 +bd_pt +-> +bd_cfig +-> +_ms + = + +389 + `e_h_bd_lk_mڙܚg_g +( +bd_pt +-> +pmdid +); + +390 +bd_pt +-> +bd_cfig +-> +lk_up_day_ms + = + +391 + `e_h_bd_lk_up__day_g +( +bd_pt +-> +pmdid +); + +392 +bd_pt +-> +bd_cfig +-> +lk_down_day_ms + = + +393 + `e_h_bd_lk_down__day_g +( +bd_pt +-> +pmdid +); + +394 +bd_pt +-> +bd_cfig +-> +imy + = + +395 + `e_h_bd_imy_g +( +bd_pt +-> +pmdid +); + +396 +bd_pt +-> +bd_cfig +-> +ave_cou + = + +397 + `e_h_bd_aves_g +( +bd_pt +-> +pmdid +, + +398 +bd_pt +-> +bd_cfig +-> +aves +, + +399 +RTE_MAX_ETHPORTS +); + +400 +bd_pt +-> +bd_cfig +-> +aive_ave_cou + = + +401 + `e_h_bd_aive_aves_g +( +bd_pt +-> +pmdid +, + +402 +bd_pt +-> +bd_cfig +-> + +403 +aive_aves +, + +404 +RTE_MAX_ETHPORTS +); + +405 +ave_pt +-> +bd_cfig + = +bd_pt +->bond_config; + +406 i( +ifm_debug + & +IFM_DEBUG +) + +407 + `RTE_LOG +( +INFO +, +IFM +, "%s: Slave count is %u\n\r", + +408 +__FUNCTION__ +, + +409 +bd_pt +-> +bd_cfig +-> +ave_cou +); + +410 i( +bd_pt +-> +bd_cfig +-> +ave_cou + == 1) { + +411 +t + = + +412 + `ifm_pt_tup +( +bd_pt +-> +pmdid +, + +413 &( +bd_pt +-> +pt_cfig +)); + +414 i( +t + < 0) { + +415 + `RTE_LOG +( +ERR +, +IFM +, + +417 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +418 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +419 + `RTE_LOG +( +INFO +, +IFM +, + +421 +__FUNCTION__ +, +__LINE__ +); + +422 i( +USE_RTM_LOCKS +) { + +423 + `m_uock +(); + +425 + `e_rwlock_wre_uock +(& +rwlock +); + +427  +IFM_FAILURE +; + +430 i( +ifm_debug + & +IFM_DEBUG +) + +431 + `RTE_LOG +( +INFO +, +IFM +, "%s: Skipping" + +432 "܈tup\n\r", +__FUNCTION__ +); + +435 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +436 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +437 +__FUNCTION__ +, +__LINE__ +); + +438 i( +USE_RTM_LOCKS +) { + +439 + `m_uock +(); + +441 + `e_rwlock_wre_uock +(& +rwlock +); + +443  +IFM_SUCCESS +; + +444 + } +} + +446  + $ifm_move_ave_pt +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +) + +448 +l2_phy_r_t + * +bd_pt +, * +ave_pt +; + +450 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +452 +ave_pt + = + `ifm_g_pt +( +ave_pt_id +); + +455 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +456 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +457 +__FUNCTION__ +, +__LINE__ +); + +458 i( +USE_RTM_LOCKS +) { + +459 + `m_lock +(); + +461 + `e_rwlock_wre_lock +(& +rwlock +); + +463 i( +bd_pt + = +NULL +) { + +464 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable " + +465 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +466 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +467 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +468 +__FUNCTION__ +, +__LINE__ +); + +469 i( +USE_RTM_LOCKS +) + +470 + `m_uock +(); + +472 + `e_rwlock_wre_uock +(& +rwlock +); + +473  +IFM_FAILURE +; + +475 i( +ave_pt + = +NULL +) { + +476 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slaveort %u isotvailable " + +477 "܈li.\n\r", +__FUNCTION__ +, +ave_pt_id +); + +478 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +479 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +480 +__FUNCTION__ +, +__LINE__ +); + +481 i( +USE_RTM_LOCKS +) + +482 + `m_uock +(); + +484 + `e_rwlock_wre_uock +(& +rwlock +); + +485  +IFM_FAILURE +; + +487 i( +bd_pt + && !(bd_pt-> +ags + & +IFM_MASTER +)) { + +488 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isot configured " + +489 "aMat.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +490 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +491 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +492 +__FUNCTION__ +, +__LINE__ +); + +493 i( +USE_RTM_LOCKS +) + +494 + `m_uock +(); + +496 + `e_rwlock_wre_uock +(& +rwlock +); + +497  +IFM_FAILURE +; + +499 i( +ave_pt + && !(ave_pt-> +ags + & +IFM_SLAVE +)) { + +500 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slaveort %u isot configured" + +501 "avpt.\n\r", +__FUNCTION__ +, +ave_pt_id +); + +502 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +503 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +504 +__FUNCTION__ +, +__LINE__ +); + +505 i( +USE_RTM_LOCKS +) + +506 + `m_uock +(); + +508 + `e_rwlock_wre_uock +(& +rwlock +); + +509  +IFM_FAILURE +; + +511  +i +; + +512  +found + = 0; + +513  +i + = 0; i < +bd_pt +-> +bd_cfig +-> +ave_cou +; i++) { + +514 i( +ave_pt_id + = +bd_pt +-> +bd_cfig +-> +aves +[ +i +]) { + +515 +found + = 1; + +519 i(! +found +) { + +520 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slaveort %u isot binded " + +521 "wh bd܈%u\n\r", +__FUNCTION__ +, +ave_pt_id +, + +522 +bded_pt_id +); + +523 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +524 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +525 +__FUNCTION__ +, +__LINE__ +); + +526 i( +USE_RTM_LOCKS +) + +527 + `m_uock +(); + +529 + `e_rwlock_wre_uock +(& +rwlock +); + +530  +IFM_FAILURE +; + +532 i( + `e_h_bd_ave_move +( +bded_pt_id +, +ave_pt_id +) < 0) { + +533 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo unbind slaveort %u" + +534 " from bd܈%u\n\r", +__FUNCTION__ +, +ave_pt_id +, + +535 +bded_pt_id +); + +536 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +537 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +538 +__FUNCTION__ +, +__LINE__ +); + +539 i( +USE_RTM_LOCKS +) + +540 + `m_uock +(); + +542 + `e_rwlock_wre_uock +(& +rwlock +); + +543  +IFM_FAILURE +; + +545 +ave_pt +-> +ags + &~ +IFM_SLAVE +; + +546 +ave_pt +-> +bd_cfig + = +NULL +; + +547 +bd_pt +-> +bd_cfig +-> +imy + = + +548 + `e_h_bd_imy_g +( +bd_pt +-> +pmdid +); + +549 +bd_pt +-> +bd_cfig +-> +ave_cou + = + +550 + `e_h_bd_aves_g +( +bd_pt +-> +pmdid +, + +551 +bd_pt +-> +bd_cfig +-> +aves +, + +552 +RTE_MAX_ETHPORTS +); + +553 +bd_pt +-> +bd_cfig +-> +aive_ave_cou + = + +554 + `e_h_bd_aive_aves_g +( +bd_pt +-> +pmdid +, + +555 +bd_pt +-> +bd_cfig +-> + +556 +aive_aves +, +RTE_MAX_ETHPORTS +); + +558 i( +ifm_debug + & +IFM_DEBUG +) + +559 + `RTE_LOG +( +ERR +, +IFM +, "%s: Unbinded slaveort %u fromhe bond " + +560 "p܈%u %d\n\r", +__FUNCTION__ +, +ave_pt_id +, + +561 +bded_pt_id +, + +562 + `e_h_bd_imy_g +( +bd_pt +-> +pmdid +)); + +563 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +564 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +565 +__FUNCTION__ +, +__LINE__ +); + +566 i( +USE_RTM_LOCKS +) + +567 + `m_uock +(); + +569 + `e_rwlock_wre_uock +(& +rwlock +); + +570  +IFM_SUCCESS +; + +571 + } +} + +573  + $t_bd_mode +( +ut8_t + +bded_pt_id +, ut8_ +mode +) + +575 +l2_phy_r_t + * +bd_pt +; + +576 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +579 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +580 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +581 +__FUNCTION__ +, +__LINE__ +); + +582 i( +USE_RTM_LOCKS +) + +583 + `m_lock +(); + +585 + `e_rwlock_wre_lock +(& +rwlock +); + +586 if( +bd_pt +) + +587 + `ifm_move_pt_das +( +bd_pt +-> +pmdid +); + +588 i( +bd_pt + = +NULL +) { + +589 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +590 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +591  +IFM_FAILURE +; + +593 i( +bd_pt + && bd_pt-> +bd_cfig +-> +mode + == mode) { + +594 i( +ifm_debug + & +IFM_DEBUG +) + +595 + `RTE_LOG +( +INFO +, +IFM +, + +597 " mod%u\n\r.", +__FUNCTION__ +, +mode +); + +598 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +599 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +600 +__FUNCTION__ +, +__LINE__ +); + +601 i( +USE_RTM_LOCKS +) + +602 + `m_uock +(); + +604 + `e_rwlock_wre_uock +(& +rwlock +); + +605 + `ifm_move_pt_das +( +bd_pt +-> +pmdid +); + +606  +IFM_SUCCESS +; + +609 i( + `e_h_bd_mode_t +( +bd_pt +-> +pmdid +, +mode +) < 0) { + +610 + `RTE_LOG +( +ERR +, +IFM +, + +612 +__FUNCTION__ +, +mode +, +bd_pt +-> +pmdid +); + +613 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +614 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +615 +__FUNCTION__ +, +__LINE__ +); + +616 i( +USE_RTM_LOCKS +) + +617 + `m_uock +(); + +619 + `e_rwlock_wre_uock +(& +rwlock +); + +620 + `ifm_move_pt_das +( +bd_pt +-> +pmdid +); + +621  +IFM_FAILURE +; + +624 +bd_pt +-> +bd_cfig +-> +mode + = + `e_h_bd_mode_g +(bd_pt-> +pmdid +); + +626 +bd_pt +-> +bd_cfig +-> +xm_picy + = + +627 + `e_h_bd_xm_picy_g +( +bd_pt +-> +pmdid +); + +628 i( +ifm_debug + & +IFM_DEBUG +) + +629 + `RTE_LOG +( +INFO +, +IFM +, + +631 "\n\r.", +__FUNCTION__ +, +bd_pt +-> +pmdid +, + +632 +bd_pt +-> +bd_cfig +-> +mode +, + +633 +bd_pt +-> +bd_cfig +-> +xm_picy +); + +634 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +635 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +636 +__FUNCTION__ +, +__LINE__ +); + +637 i( +USE_RTM_LOCKS +) + +638 + `m_uock +(); + +640 + `e_rwlock_wre_uock +(& +rwlock +); + +641 + `ifm_move_pt_das +( +bd_pt +-> +pmdid +); + +642  +IFM_SUCCESS +; + +643 + } +} + +645  + $g_bd_mode +( +ut8_t + +bded_pt_id +) + +647 +l2_phy_r_t + * +bd_pt +; + +648 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +651 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +652 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +653 +__FUNCTION__ +, +__LINE__ +); + +654 i( +USE_RTM_LOCKS +) { + +655 + `m_lock +(); + +657 + `e_rwlock_ad_lock +(& +rwlock +); + +659 i( +bd_pt + = +NULL +) { + +660 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +661 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +662 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +663 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +664 +__FUNCTION__ +, +__LINE__ +); + +665 i( +USE_RTM_LOCKS +) { + +666 + `m_uock +(); + +668 + `e_rwlock_ad_uock +(& +rwlock +); + +670  +IFM_FAILURE +; + +672 +ut8_t + +mode + = +bd_pt +-> +bd_cfig +->mode; + +673 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +674 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +675 +__FUNCTION__ +, +__LINE__ +); + +676 i( +USE_RTM_LOCKS +) { + +677 + `m_uock +(); + +679 + `e_rwlock_ad_uock +(& +rwlock +); + +681  +mode +; + +682 + } +} + +684  + $t_bd_imy +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +) + +686 +l2_phy_r_t + * +bd_pt +; + +687 +l2_phy_r_t + * +ave_pt +; + +688 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +690 +ave_pt + = + `ifm_g_pt +( +ave_pt_id +); + +693 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +694 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +695 +__FUNCTION__ +, +__LINE__ +); + +696 i( +USE_RTM_LOCKS +) + +697 + `m_lock +(); + +699 + `e_rwlock_wre_lock +(& +rwlock +); + +700 i( +bd_pt + = +NULL +) { + +701 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +702 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +703 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +704 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +705 +__FUNCTION__ +, +__LINE__ +); + +706 i( +USE_RTM_LOCKS +) + +707 + `m_uock +(); + +709 + `e_rwlock_wre_uock +(& +rwlock +); + +710  +IFM_FAILURE +; + +712 i( +ave_pt + = +NULL +) { + +713 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slaveort %u isotvailable in" + +714 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +715 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +716 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +717 +__FUNCTION__ +, +__LINE__ +); + +718 i( +USE_RTM_LOCKS +) + +719 + `m_uock +(); + +721 + `e_rwlock_wre_uock +(& +rwlock +); + +722  +IFM_FAILURE +; + +724  +i +; + +725  +found + = 0; + +726  +i + = 0; i < +bd_pt +-> +bd_cfig +-> +ave_cou +; i++) { + +727 i( +ave_pt_id + = +bd_pt +-> +bd_cfig +-> +aves +[ +i +]) { + +728 +found + = 1; + +732 i(! +found +) { + +733 + `RTE_LOG +( +ERR +, +IFM +, "%s: Slaveort %u isot binded " + +735 +__FUNCTION__ +, +ave_pt_id +, +bded_pt_id +); + +736 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +737 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +738 +__FUNCTION__ +, +__LINE__ +); + +739 i( +USE_RTM_LOCKS +) + +740 + `m_uock +(); + +742 + `e_rwlock_wre_uock +(& +rwlock +); + +743  +IFM_FAILURE +; + +746 i( +bd_pt +-> +bd_cfig +-> +imy + = +ave_pt_id +) { + +747 i( +ifm_debug + & +IFM_DEBUG +) + +748 + `RTE_LOG +( +INFO +, +IFM +, + +750 "%u\n\r.", +__FUNCTION__ +, +bded_pt_id +, + +751 +ave_pt_id +); + +752 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +753 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +754 +__FUNCTION__ +, +__LINE__ +); + +755 i( +USE_RTM_LOCKS +) + +756 + `m_uock +(); + +758 + `e_rwlock_wre_uock +(& +rwlock +); + +759  +IFM_SUCCESS +; + +762 i( + `e_h_bd_imy_t +( +bd_pt +-> +pmdid +, +ave_pt +->pmdid) < 0) { + +763 + `RTE_LOG +( +ERR +, +IFM +, + +765 +__FUNCTION__ +, +ave_pt +-> +pmdid +, +bd_pt +->pmdid); + +766 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +767 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +768 +__FUNCTION__ +, +__LINE__ +); + +769 i( +USE_RTM_LOCKS +) + +770 + `m_uock +(); + +772 + `e_rwlock_wre_uock +(& +rwlock +); + +773  +IFM_FAILURE +; + +776 +bd_pt +-> +bd_cfig +-> +imy + = + +777 + `e_h_bd_imy_g +( +bd_pt +-> +pmdid +); + +778 i( +ifm_debug + & +IFM_DEBUG +) + +779 + `RTE_LOG +( +INFO +, +IFM +, + +781 +__FUNCTION__ +, +bd_pt +-> +bd_cfig +-> +imy +, + +782 +bd_pt +-> +pmdid +); + +783 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +784 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +785 +__FUNCTION__ +, +__LINE__ +); + +786 i( +USE_RTM_LOCKS +) + +787 + `m_uock +(); + +789 + `e_rwlock_wre_uock +(& +rwlock +); + +790  +IFM_SUCCESS +; + +791 + } +} + +793  + $g_bd_imy_pt +( +ut8_t + +bded_pt_id +) + +795 +l2_phy_r_t + * +bd_pt +; + +796 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +799 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +800 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +801 +__FUNCTION__ +, +__LINE__ +); + +802 i( +USE_RTM_LOCKS +) { + +803 + `m_lock +(); + +805 + `e_rwlock_ad_lock +(& +rwlock +); + +807 i( +bd_pt + = +NULL +) { + +808 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +809 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +810 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +811 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +812 +__FUNCTION__ +, +__LINE__ +); + +813 i( +USE_RTM_LOCKS +) { + +814 + `m_uock +(); + +816 + `e_rwlock_ad_uock +(& +rwlock +); + +818  +IFM_FAILURE +; + +820 +ut8_t + +imy + = +bd_pt +-> +bd_cfig +->primary; + +821 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +822 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +823 +__FUNCTION__ +, +__LINE__ +); + +824 i( +USE_RTM_LOCKS +) { + +825 + `m_uock +(); + +827 + `e_rwlock_ad_uock +(& +rwlock +); + +829  +imy +; + +830 + } +} + +832  + $g_bd_ave_cou +( +ut8_t + +bded_pt_id +) + +834 +l2_phy_r_t + * +bd_pt +; + +835 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +838 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +839 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +840 +__FUNCTION__ +, +__LINE__ +); + +841 i( +USE_RTM_LOCKS +) { + +842 + `m_lock +(); + +844 + `e_rwlock_ad_lock +(& +rwlock +); + +846 i( +bd_pt + = +NULL +) { + +847 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +848 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +849 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +850 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +851 +__FUNCTION__ +, +__LINE__ +); + +852 i( +USE_RTM_LOCKS +) { + +853 + `m_uock +(); + +855 + `e_rwlock_ad_uock +(& +rwlock +); + +857  +IFM_FAILURE +; + +859 +ut32_t + +ave_cou + = +bd_pt +-> +bd_cfig +->slave_count; + +860 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +861 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +862 +__FUNCTION__ +, +__LINE__ +); + +863 i( +USE_RTM_LOCKS +) { + +864 + `m_uock +(); + +866 + `e_rwlock_ad_uock +(& +rwlock +); + +868  +ave_cou +; + +869 + } +} + +871  + $g_bd_aive_ave_cou +( +ut8_t + +bded_pt_id +) + +873 +l2_phy_r_t + * +bd_pt +; + +874 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +877 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +878 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +879 +__FUNCTION__ +, +__LINE__ +); + +880 i( +USE_RTM_LOCKS +) { + +881 + `m_lock +(); + +883 + `e_rwlock_ad_lock +(& +rwlock +); + +885 i( +bd_pt + = +NULL +) { + +886 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +887 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +888 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +889 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +890 +__FUNCTION__ +, +__LINE__ +); + +891 i( +USE_RTM_LOCKS +) { + +892 + `m_uock +(); + +894 + `e_rwlock_ad_uock +(& +rwlock +); + +896  +IFM_FAILURE +; + +898 +ut32_t + +ave_cou + = +bd_pt +-> +bd_cfig +-> +aive_ave_cou +; + +899 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +900 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +901 +__FUNCTION__ +, +__LINE__ +); + +902 i( +USE_RTM_LOCKS +) { + +903 + `m_uock +(); + +905 + `e_rwlock_ad_uock +(& +rwlock +); + +907  +ave_cou +; + +908 + } +} + +910  + $g_bd_aves +( +ut8_t + +bded_pt_id +, ut8_ +aves +[ +RTE_MAX_ETHPORTS +]) + +912 +l2_phy_r_t + * +bd_pt +; + +913 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +916 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +917 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +918 +__FUNCTION__ +, +__LINE__ +); + +919 i( +USE_RTM_LOCKS +) { + +920 + `m_lock +(); + +922 + `e_rwlock_ad_lock +(& +rwlock +); + +924 i( +bd_pt + = +NULL +) { + +925 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +926 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +927  +IFM_FAILURE +; + +929 + `memy +( +aves +, +bd_pt +-> +bd_cfig +->slaves, + +930 +bd_pt +-> +bd_cfig +-> +ave_cou +); + +931 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +932 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +933 +__FUNCTION__ +, +__LINE__ +); + +934 i( +USE_RTM_LOCKS +) { + +935 + `m_uock +(); + +937 + `e_rwlock_ad_uock +(& +rwlock +); + +939  +IFM_SUCCESS +; + +940 + } +} + +942  + $g_bd_aive_aves +( +ut8_t + +bded_pt_id +, + +943 +ut8_t + +aive_aves +[ +RTE_MAX_ETHPORTS +]) + +945 +l2_phy_r_t + * +bd_pt +; + +946 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +949 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +950 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +951 +__FUNCTION__ +, +__LINE__ +); + +952 i( +USE_RTM_LOCKS +) { + +953 + `m_lock +(); + +955 + `e_rwlock_ad_lock +(& +rwlock +); + +957 i( +bd_pt + = +NULL +) { + +958 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +959 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +960  +IFM_FAILURE +; + +962 + `memy +( +aive_aves +, +bd_pt +-> +bd_cfig +->active_slaves, + +963 +bd_pt +-> +bd_cfig +-> +aive_ave_cou +); + +964 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +965 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +966 +__FUNCTION__ +, +__LINE__ +); + +967 i( +USE_RTM_LOCKS +) { + +968 + `m_uock +(); + +970 + `e_rwlock_ad_uock +(& +rwlock +); + +972  +IFM_SUCCESS +; + +973 + } +} + +975  + $t_bd_mac_addss +( +ut8_t + +bded_pt_id +,  +h_addr + * +mac_addr +) + +977 +l2_phy_r_t + * +bd_pt +; + +978 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +981 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +982 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +983 +__FUNCTION__ +, +__LINE__ +); + +984 i( +USE_RTM_LOCKS +) { + +985 + `m_lock +(); + +987 + `e_rwlock_wre_lock +(& +rwlock +); + +989 i( +mac_addr + = +NULL +) { + +990 + `RTE_LOG +( +ERR +, +IFM +, "%s: MACddress cannot be NULL.\n\r", + +991 +__FUNCTION__ +); + +992 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +993 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +994 +__FUNCTION__ +, +__LINE__ +); + +995 i( +USE_RTM_LOCKS +) { + +996 + `m_uock +(); + +998 + `e_rwlock_wre_uock +(& +rwlock +); + +1000  +IFM_FAILURE +; + +1003 i( +bd_pt + = +NULL +) { + +1004 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1005 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1006 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1007 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1008 +__FUNCTION__ +, +__LINE__ +); + +1009 i( +USE_RTM_LOCKS +) { + +1010 + `m_uock +(); + +1012 + `e_rwlock_wre_uock +(& +rwlock +); + +1014  +IFM_FAILURE +; + +1016 i( + `e_h_bd_mac_addss_t +( +bd_pt +-> +pmdid +, +mac_addr +) < 0) { + +1017 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set MACddr forort %u\n\r", + +1018 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1019 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1020 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1021 +__FUNCTION__ +, +__LINE__ +); + +1022 i( +USE_RTM_LOCKS +) { + +1023 + `m_uock +(); + +1025 + `e_rwlock_wre_uock +(& +rwlock +); + +1027  +IFM_FAILURE +; + +1029 + `e_h_maddr_g +( +bd_pt +-> +pmdid +, + +1030 ( +h_addr + *) +bd_pt +-> +maddr +); + +1031 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1032 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1033 +__FUNCTION__ +, +__LINE__ +); + +1034 i( +USE_RTM_LOCKS +) { + +1035 + `m_uock +(); + +1037 + `e_rwlock_wre_uock +(& +rwlock +); + +1039  +IFM_SUCCESS +; + +1040 + } +} + +1042  + $t_bd_mac_addr +( +ut8_t + +bded_pt_id +) + +1044 +l2_phy_r_t + * +bd_pt +; + +1045 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1048 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1049 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1050 +__FUNCTION__ +, +__LINE__ +); + +1051 i( +USE_RTM_LOCKS +) { + +1052 + `m_lock +(); + +1054 + `e_rwlock_wre_lock +(& +rwlock +); + +1056 i( +bd_pt + = +NULL +) { + +1057 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1058 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1059 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1060 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1061 +__FUNCTION__ +, +__LINE__ +); + +1062 i( +USE_RTM_LOCKS +) { + +1063 + `m_uock +(); + +1065 + `e_rwlock_wre_uock +(& +rwlock +); + +1067  +IFM_FAILURE +; + +1069 i( + `e_h_bd_mac_addss_t +( +bd_pt +-> +pmdid +) < 0) { + +1070 + `RTE_LOG +( +ERR +, +IFM +, + +1072 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1073 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1074 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1075 +__FUNCTION__ +, +__LINE__ +); + +1076 i( +USE_RTM_LOCKS +) { + +1077 + `m_uock +(); + +1079 + `e_rwlock_wre_uock +(& +rwlock +); + +1081  +IFM_FAILURE +; + +1083 + `e_h_maddr_g +( +bd_pt +-> +pmdid +, + +1084 ( +h_addr + *) +bd_pt +-> +maddr +); + +1085 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1086 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1087 +__FUNCTION__ +, +__LINE__ +); + +1088 i( +USE_RTM_LOCKS +) { + +1089 + `m_uock +(); + +1091 + `e_rwlock_wre_uock +(& +rwlock +); + +1093  +IFM_FAILURE +; + +1094 + } +} + +1096  + $t_bd_xmpicy +( +ut8_t + +bded_pt_id +, ut8_ +picy +) + +1099 +l2_phy_r_t + * +bd_pt +; + +1100 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1102  +t + = 0; + +1104 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1105 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1106 +__FUNCTION__ +, +__LINE__ +); + +1107 i( +USE_RTM_LOCKS +) { + +1108 + `m_lock +(); + +1110 + `e_rwlock_wre_lock +(& +rwlock +); + +1112 i( +bd_pt + = +NULL +) { + +1113 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1114 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1115 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1116 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1117 +__FUNCTION__ +, +__LINE__ +); + +1118 i( +USE_RTM_LOCKS +) { + +1119 + `m_uock +(); + +1121 + `e_rwlock_wre_uock +(& +rwlock +); + +1123  +IFM_FAILURE +; + +1125 i( +bd_pt +-> +bd_cfig +-> +xm_picy + = +picy +) { + +1126 i( +ifm_debug + & +IFM_DEBUG +) + +1127 + `RTE_LOG +( +INFO +, +IFM +, + +1129 +__FUNCTION__ +, +bded_pt_id +); + +1130 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1131 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1132 +__FUNCTION__ +, +__LINE__ +); + +1133 i( +USE_RTM_LOCKS +) { + +1134 + `m_uock +(); + +1136 + `e_rwlock_wre_uock +(& +rwlock +); + +1138  +IFM_SUCCESS +; + +1140 i( + `e_h_bd_xm_picy_t +( +bd_pt +-> +pmdid +, +picy +) < 0) { + +1141 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo setolicy forort %u\n\r", + +1142 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1143 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1144 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1145 +__FUNCTION__ +, +__LINE__ +); + +1146 i( +USE_RTM_LOCKS +) { + +1147 + `m_uock +(); + +1149 + `e_rwlock_wre_uock +(& +rwlock +); + +1151  +IFM_FAILURE +; + +1153 +t + = + `e_h_bd_xm_picy_g +( +bd_pt +-> +pmdid +); + +1154 i( +t + < 0) { + +1155 i( +ifm_debug + & +IFM_DEBUG +) + +1156 + `RTE_LOG +( +INFO +, +IFM +, + +1158 +__FUNCTION__ +); + +1159 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1160 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1161 +__FUNCTION__ +, +__LINE__ +); + +1162 i( +USE_RTM_LOCKS +) { + +1163 + `m_uock +(); + +1165 + `e_rwlock_wre_uock +(& +rwlock +); + +1167  +IFM_FAILURE +; + +1169 +bd_pt +-> +bd_cfig +-> +xm_picy + = +picy +; + +1170 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1171 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1172 +__FUNCTION__ +, +__LINE__ +); + +1173 i( +USE_RTM_LOCKS +) { + +1174 + `m_uock +(); + +1176 + `e_rwlock_wre_uock +(& +rwlock +); + +1178  +IFM_SUCCESS +; + +1179 + } +} + +1181  + $g_bd_xmpicy +( +ut8_t + +bded_pt_id +) + +1183 +l2_phy_r_t + * +bd_pt +; + +1185 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1187 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1188 + `RTE_LOG +( +INFO +, +IFM +, "%s: RD Acquiringock @ %d\n\r", + +1189 +__FUNCTION__ +, +__LINE__ +); + +1190 i( +USE_RTM_LOCKS +) { + +1191 + `m_lock +(); + +1193 + `e_rwlock_ad_lock +(& +rwlock +); + +1195 i( +bd_pt + = +NULL +) { + +1196 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1197 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1198 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1199 + `RTE_LOG +( +INFO +, +IFM +, "%s:Releasing RDock @ %d\n\r", + +1200 +__FUNCTION__ +, +__LINE__ +); + +1201 i( +USE_RTM_LOCKS +) { + +1202 + `m_uock +(); + +1204 + `e_rwlock_ad_uock +(& +rwlock +); + +1206  +IFM_FAILURE +; + +1208 +ut8_t + +picy + = +bd_pt +-> +bd_cfig +-> +xm_picy +; + +1209 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1210 + `RTE_LOG +( +INFO +, +IFM +, "%s:Releasing RDock @ %d\n\r", + +1211 +__FUNCTION__ +, +__LINE__ +); + +1212 i( +USE_RTM_LOCKS +) { + +1213 + `m_uock +(); + +1215 + `e_rwlock_ad_uock +(& +rwlock +); + +1217  +picy +; + +1218 + } +} + +1220  + $t_bd_lk_mt_equcy +( +ut8_t + +bded_pt_id +, + +1221 +ut32_t + +_ms +) + +1223 +l2_phy_r_t + * +bd_pt +; + +1224 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1225 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1226 +__FUNCTION__ +, +__LINE__ +); + +1227 i( +USE_RTM_LOCKS +) { + +1228 + `m_lock +(); + +1230 + `e_rwlock_wre_lock +(& +rwlock +); + +1233 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1234  +t + = 0; + +1236 i( +bd_pt + = +NULL +) { + +1237 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1238 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1239 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1240 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1241 +__FUNCTION__ +, +__LINE__ +); + +1242 i( +USE_RTM_LOCKS +) { + +1243 + `m_uock +(); + +1245 + `e_rwlock_wre_uock +(& +rwlock +); + +1247  +IFM_FAILURE +; + +1249 i( +bd_pt +-> +bd_cfig +-> +_ms + == internal_ms) { + +1250 i( +ifm_debug + & +IFM_DEBUG +) + +1251 + `RTE_LOG +( +INFO +, +IFM +, + +1253 +__FUNCTION__ +, +bded_pt_id +); + +1254 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1255 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1256 +__FUNCTION__ +, +__LINE__ +); + +1257 i( +USE_RTM_LOCKS +) { + +1258 + `m_uock +(); + +1260 + `e_rwlock_wre_uock +(& +rwlock +); + +1262  +IFM_SUCCESS +; + +1264 i( + `e_h_bd_lk_mڙܚg_t +( +bd_pt +-> +pmdid +, +_ms +) < 0) { + +1265 + `RTE_LOG +( +ERR +, +IFM +, + +1267 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1268 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1269 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1270 +__FUNCTION__ +, +__LINE__ +); + +1271 i( +USE_RTM_LOCKS +) { + +1272 + `m_uock +(); + +1274 + `e_rwlock_wre_uock +(& +rwlock +); + +1276  +IFM_FAILURE +; + +1278 +t + = + `e_h_bd_lk_mڙܚg_g +( +bd_pt +-> +pmdid +); + +1279 i( +t + < 0) { + +1280 i( +ifm_debug + & +IFM_DEBUG +) + +1281 + `RTE_LOG +( +INFO +, +IFM +, + +1283 +__FUNCTION__ +); + +1284 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1285 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1286 +__FUNCTION__ +, +__LINE__ +); + +1287 i( +USE_RTM_LOCKS +) { + +1288 + `m_uock +(); + +1290 + `e_rwlock_wre_uock +(& +rwlock +); + +1292  +IFM_FAILURE +; + +1294 +bd_pt +-> +bd_cfig +-> +_ms + = internal_ms; + +1295 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1296 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1297 +__FUNCTION__ +, +__LINE__ +); + +1298 i( +USE_RTM_LOCKS +) { + +1299 + `m_uock +(); + +1301 + `e_rwlock_wre_uock +(& +rwlock +); + +1303  +IFM_SUCCESS +; + +1304 + } +} + +1306  + $g_bd_lk_mڙ_equcy +( +ut8_t + +bded_pt_id +) + +1308 +l2_phy_r_t + * +bd_pt +; + +1310 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1312 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1313 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +1314 +__FUNCTION__ +, +__LINE__ +); + +1315 i( +USE_RTM_LOCKS +) { + +1316 + `m_lock +(); + +1318 + `e_rwlock_ad_lock +(& +rwlock +); + +1320 i( +bd_pt + = +NULL +) { + +1321 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1322 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1323 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1324 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1325 +__FUNCTION__ +, +__LINE__ +); + +1326 i( +USE_RTM_LOCKS +) { + +1327 + `m_uock +(); + +1329 + `e_rwlock_ad_uock +(& +rwlock +); + +1331  +IFM_FAILURE +; + +1333 +ut32_t + +_ms + = +bd_pt +-> +bd_cfig +->internal_ms; + +1334 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1335 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1336 +__FUNCTION__ +, +__LINE__ +); + +1337 i( +USE_RTM_LOCKS +) { + +1338 + `m_uock +(); + +1340 + `e_rwlock_ad_uock +(& +rwlock +); + +1342  +_ms +; + +1343 + } +} + +1345  + $t_bd_lkdown_day +( +ut8_t + +bded_pt_id +, +ut32_t + +day_ms +) + +1347 +l2_phy_r_t + * +bd_pt +; + +1348 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1349 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1350 +__FUNCTION__ +, +__LINE__ +); + +1352 i( +USE_RTM_LOCKS +) { + +1353 + `m_lock +(); + +1355 + `e_rwlock_wre_lock +(& +rwlock +); + +1358 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1359  +day + = 0; + +1361 i( +bd_pt + = +NULL +) { + +1362 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1363 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1364 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1366 +__FUNCTION__ +, +__LINE__ +); + +1368 i( +USE_RTM_LOCKS +) { + +1369 + `m_uock +(); + +1371 + `e_rwlock_wre_uock +(& +rwlock +); + +1373  +IFM_FAILURE +; + +1375 i( +bd_pt +-> +bd_cfig +-> +lk_down_day_ms + = +day_ms +) { + +1376 i( +ifm_debug + & +IFM_DEBUG +) + +1377 + `RTE_LOG +( +INFO +, +IFM +, + +1379 +__FUNCTION__ +, +bded_pt_id +); + +1380 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1381 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1382 +__FUNCTION__ +, +__LINE__ +); + +1384 i( +USE_RTM_LOCKS +) { + +1385 + `m_uock +(); + +1387 + `e_rwlock_wre_uock +(& +rwlock +); + +1389  +IFM_SUCCESS +; + +1391 i( + `e_h_bd_lk_down__day_t +( +bd_pt +-> +pmdid +, +day_ms +) < + +1393 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set delay forort %u\n\r", + +1394 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1395 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1396 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1397 +__FUNCTION__ +, +__LINE__ +); + +1399 i( +USE_RTM_LOCKS +) { + +1400 + `m_uock +(); + +1402 + `e_rwlock_wre_uock +(& +rwlock +); + +1404  +IFM_FAILURE +; + +1406 +day + = + `e_h_bd_lk_down__day_g +( +bd_pt +-> +pmdid +); + +1407 i( +day + < 0) { + +1408 i( +ifm_debug + & +IFM_DEBUG +) + +1409 + `RTE_LOG +( +INFO +, +IFM +, + +1411 +__FUNCTION__ +); + +1412 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1413 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1414 +__FUNCTION__ +, +__LINE__ +); + +1416 i( +USE_RTM_LOCKS +) { + +1417 + `m_uock +(); + +1419 + `e_rwlock_wre_uock +(& +rwlock +); + +1421  +IFM_FAILURE +; + +1423 +bd_pt +-> +bd_cfig +-> +lk_down_day_ms + = +day +; + +1424 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1425 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1426 +__FUNCTION__ +, +__LINE__ +); + +1428 i( +USE_RTM_LOCKS +) { + +1429 + `m_uock +(); + +1431 + `e_rwlock_wre_uock +(& +rwlock +); + +1433  +IFM_SUCCESS +; + +1434 + } +} + +1436  + $g_bd_lk_down_day +( +ut8_t + +bded_pt_id +) + +1438 +l2_phy_r_t + * +bd_pt +; + +1440 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1441 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1442 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +1443 +__FUNCTION__ +, +__LINE__ +); + +1444 i( +USE_RTM_LOCKS +) + +1445 + `m_lock +(); + +1447 + `e_rwlock_ad_lock +(& +rwlock +); + +1449 i( +bd_pt + = +NULL +) { + +1450 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1451 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1452 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1453 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1454 +__FUNCTION__ +, +__LINE__ +); + +1455 i( +USE_RTM_LOCKS +) { + +1456 + `m_uock +(); + +1458 + `e_rwlock_ad_uock +(& +rwlock +); + +1460  +IFM_FAILURE +; + +1462 +ut32_t + +day_ms + = +bd_pt +-> +bd_cfig +-> +lk_down_day_ms +; + +1463 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1464 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1465 +__FUNCTION__ +, +__LINE__ +); + +1466 i( +USE_RTM_LOCKS +) { + +1467 + `m_uock +(); + +1469 + `e_rwlock_ad_uock +(& +rwlock +); + +1471  +day_ms +; + +1473 + } +} + +1475  + $t_bd_lkup_day +( +ut8_t + +bded_pt_id +, +ut32_t + +day_ms +) + +1477 +l2_phy_r_t + * +bd_pt +; + +1478  +day + = 0; + +1479 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1481 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1482 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1483 +__FUNCTION__ +, +__LINE__ +); + +1484 i( +USE_RTM_LOCKS +) + +1485 + `m_uock +(); + +1487 + `e_rwlock_wre_uock +(& +rwlock +); + +1489 i( +bd_pt + = +NULL +) { + +1490 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bondort %u isotvailable in" + +1491 "܈li.\n\r", +__FUNCTION__ +, +bded_pt_id +); + +1492 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1493 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1494 +__FUNCTION__ +, +__LINE__ +); + +1495 i( +USE_RTM_LOCKS +) + +1496 + `m_uock +(); + +1498 + `e_rwlock_wre_uock +(& +rwlock +); + +1499  +IFM_FAILURE +; + +1501 i( +bd_pt +-> +bd_cfig +-> +lk_up_day_ms + = +day_ms +) { + +1502 i( +ifm_debug + & +IFM_DEBUG +) + +1503 + `RTE_LOG +( +INFO +, +IFM +, + +1505 +__FUNCTION__ +, +bded_pt_id +); + +1506 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1507 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1508 +__FUNCTION__ +, +__LINE__ +); + +1509 i( +USE_RTM_LOCKS +) + +1510 + `m_uock +(); + +1512 + `e_rwlock_wre_uock +(& +rwlock +); + +1513  +IFM_SUCCESS +; + +1515 i( + `e_h_bd_lk_up__day_t +( +bd_pt +-> +pmdid +, +day_ms +) < 0) { + +1516 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set delay forort %u\n\r", + +1517 +__FUNCTION__ +, +bd_pt +-> +pmdid +); + +1518 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1519 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1520 +__FUNCTION__ +, +__LINE__ +); + +1522 i( +USE_RTM_LOCKS +) + +1523 + `m_uock +(); + +1525 + `e_rwlock_wre_uock +(& +rwlock +); + +1526  +IFM_FAILURE +; + +1528 +day + = + `e_h_bd_lk_up__day_g +( +bd_pt +-> +pmdid +); + +1529 i( +day + < 0) { + +1530 + `RTE_LOG +( +INFO +, +IFM +, + +1532 +__FUNCTION__ +); + +1533 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1534 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1535 +__FUNCTION__ +, +__LINE__ +); + +1537 i( +USE_RTM_LOCKS +) + +1538 + `m_uock +(); + +1540 + `e_rwlock_wre_uock +(& +rwlock +); + +1541  +IFM_FAILURE +; + +1543 +bd_pt +-> +bd_cfig +-> +lk_up_day_ms + = +day +; + +1544 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1545 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1546 +__FUNCTION__ +, +__LINE__ +); + +1548 i( +USE_RTM_LOCKS +) + +1549 + `m_uock +(); + +1551 + `e_rwlock_wre_uock +(& +rwlock +); + +1552  +IFM_SUCCESS +; + +1553 + } +} + +1555  + $g_bd_lk_up_day +( +ut8_t + +bded_pt_id +) + +1557 +l2_phy_r_t + * +bd_pt +; + +1558 +ut32_t + +day_ms +; + +1560 +bd_pt + = + `ifm_g_pt +( +bded_pt_id +); + +1562 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1563 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +1564 +__FUNCTION__ +, +__LINE__ +); + +1565 i( +USE_RTM_LOCKS +) + +1566 + `m_lock +(); + +1568 + `e_rwlock_ad_lock +(& +rwlock +); + +1569 i( +bd_pt + = +NULL +) { + +1570 i( +ifm_debug + & +IFM_DEBUG +) { + +1571 + `RTE_LOG +( +ERR +, +IFM +, + +1573 "܈li.\n\r", +__FUNCTION__ +, + +1574 +bded_pt_id +); + +1576 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1577 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1578 +__FUNCTION__ +, +__LINE__ +); + +1579 i( +USE_RTM_LOCKS +) + +1580 + `m_uock +(); + +1582 + `e_rwlock_ad_uock +(& +rwlock +); + +1583  +IFM_FAILURE +; + +1585 +day_ms + = +bd_pt +-> +bd_cfig +-> +lk_up_day_ms +; + +1587 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1588 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1589 +__FUNCTION__ +, +__LINE__ +); + +1590 i( +USE_RTM_LOCKS +) + +1591 + `m_uock +(); + +1593 + `e_rwlock_ad_uock +(& +rwlock +); + +1594  +day_ms +; + +1595 + } +} + + @VIL/l2l3_stack/hle.c + +16  + ~"tsx.h +" + +18  + ~ + +20  + $h_ +() + +22 +mux_v + = 0; + +23 + } +} + +25  + $h_lock +() + +27  +__omic_exchge_n + + +28 (& +mux_v +, 1, +__ATOMIC_ACQUIRE + | +__ATOMIC_HLE_ACQUIRE +)) + +29 + `_mm_u +(); + +30  +TRUE +; + +31 + } +} + +33  + $h_a +() + +35 + `__omic_e_n +(& +mux_v +, 0, + +36 +__ATOMIC_RELEASE + | +__ATOMIC_HLE_RELEASE +); + +37  +TRUE +; + +38 + } +} + +40  + $is_h_locked +() + +42  ( +mux_v + =0? +FALSE + : +TRUE +; + +43 + } +} + + @VIL/l2l3_stack/hle.h + +17  + #HLE_TRUE + 1 + + ) + +18  + #HLE_FALSE + 0 + + ) + +20 vީ + gmux_v +; + +25  +h_mux +(); + +30  +h_lock +(); + +35  +h_a +(); + +40  +is_locked +(); + + @VIL/l2l3_stack/interface.c + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +21 +r_ma_t + + gifm +; + +22  + gUSE_RTM_LOCKS + = 0; + +23 +e_rwlock_t + + grwlock +; + +24 +ut8_t + + gifm_debug +; + +25  + gev_e +; + +27  + $cfig_ifm_debug +( +dbg +,  +ag +) + +29  +dbg +) { + +30  +IFM_DEBUG_CONFIG +: + +31 i( +ag +) { + +32 +ifm_debug + | +IFM_DEBUG_CONFIG +; + +34 +ifm_debug + &~ +IFM_DEBUG_CONFIG +; + +37  +IFM_DEBUG_RXTX +: + +38 i( +ag +) { + +39 +ifm_debug + | +IFM_DEBUG_RXTX +; + +41 +ifm_debug + &~ +IFM_DEBUG_RXTX +; + +44  +IFM_DEBUG_LOCKS +: + +45 i( +ag +) { + +46 +ifm_debug + | +IFM_DEBUG_LOCKS +; + +48 +ifm_debug + &~ +IFM_DEBUG_LOCKS +; + +51  +IFM_DEBUG +: + +52 i( +ag +) { + +53 +ifm_debug + | +IFM_DEBUG +; + +55 +ifm_debug + &~ +IFM_DEBUG +; + +59 + } +} + +61  + $ifm_ +() + +63  +i + = 0; + +64 + `cfig_ifm_debug +( +IFM_DEBUG_CONFIG +, 1); + +65 i( + `n_u_l_ce_4th_g_us +()) { + +66 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +67 + `RTE_LOG +( +INFO +, +IFM +, "TSXot currently supported...\n\r"); + +68 +USE_RTM_LOCKS + = 0; + +70 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +71 + `RTE_LOG +( +INFO +, +IFM +, "TSXot supported\n\r"); + +72 +USE_RTM_LOCKS + = 0; + +74 i( +USE_RTM_LOCKS +) + +75 + `m_ +(); + +77 + `e_rwlock_ +(& +rwlock +); + +79  +i + = 0; i < +IFM_MAX_PORTARR_SZ +; i++) { + +80 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +81 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +82 +__FUNCTION__ +, +__LINE__ +); + +83 i( +USE_RTM_LOCKS +) + +84 + `m_lock +(); + +86 + `e_rwlock_wre_lock +(& +rwlock +); + +88 +ifm +. +pt_li +[ +i +] = +NULL +; + +89 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +90 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +91 +__FUNCTION__ +, +__LINE__ +); + +92 i( +USE_RTM_LOCKS +) + +93 + `m_uock +(); + +95 + `e_rwlock_wre_uock +(& +rwlock +); + +97 +ifm +. +t_tlized + = + `e_h_dev_cou +(); + +98 +ifm +. +t_cfigud + = 0; + +99 + `RTE_LOG +( +INFO +, +IFM +, "IFM_INIT: Number oforts initialized during " + +100 "PCIrobg %u.\n\r", +ifm +. +t_tlized +); + +101 + } +} + +103  + $ifm_move_pt_das +( +ut8_t + +ptid +) + +105 i( +ifm +. +pt_li +[ +ptid +] ! +NULL +) { + +106 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +107 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiringock %d\n\r", + +108 +__FUNCTION__ +, +__LINE__ +); + +109 i( +USE_RTM_LOCKS +) + +110 + `m_lock +(); + +112 + `e_rwlock_wre_lock +(& +rwlock +); + +113 +l2_phy_r_t + * +pt + = +ifm +. +pt_li +[ +ptid +]; + +114 +ifm +. +pt_li +[ +ptid +] = +NULL +; + +115 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +116 + `RTE_LOG +( +INFO +, +IFM +, "%s: NULL set forort %u\n\r", + +117 +__FUNCTION__ +, +ptid +); + +118 + `e_ +( +pt +); + +119 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +120 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +121 +__FUNCTION__ +, +__LINE__ +); + +123 i( +USE_RTM_LOCKS +) + +124 + `m_uock +(); + +126 + `e_rwlock_wre_uock +(& +rwlock +); + +128 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +129 + `RTE_LOG +( +INFO +, +IFM +, + +131 " iady Nu.\n\r", +__FUNCTION__ +, +ptid +); + +133 + } +} + +135 +l2_phy_r_t + * + $ifm_g_pt +( +ut8_t + +pt_id +) + +137 +l2_phy_r_t + * +pt + = +NULL +; + +138 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +139 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +140 +__LINE__ +); + +142 i( +USE_RTM_LOCKS +) + +143 + `m_lock +(); + +145 + `e_rwlock_ad_lock +(& +rwlock +); + +147 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +149 i( +pt + = +NULL +) { + +153 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +154 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +155 +__FUNCTION__ +, +__LINE__ +); + +156 i( +USE_RTM_LOCKS +) + +157 + `m_uock +(); + +159 + `e_rwlock_ad_uock +(& +rwlock +); + +160  +NULL +; + +162 i( +pt +-> +pmdid + = +pt_id +) { + +165 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +166 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +167 +__FUNCTION__ +, +__LINE__ +); + +169 i( +USE_RTM_LOCKS +) + +170 + `m_uock +(); + +172 + `e_rwlock_ad_uock +(& +rwlock +); + +173  +pt +; + +180 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +181 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +182 +__LINE__ +); + +183 i( +USE_RTM_LOCKS +) + +184 + `m_uock +(); + +186 + `e_rwlock_ad_uock +(& +rwlock +); + +187  +NULL +; + +188 + } +} + +190 +l2_phy_r_t + * + $ifm_g_f_pt +() + +192 +l2_phy_r_t + * +pt + = +NULL +; + +193 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +194 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +195 +__LINE__ +); + +197 i( +USE_RTM_LOCKS +) + +198 + `m_lock +(); + +200 + `e_rwlock_ad_lock +(& +rwlock +); + +201 +pt + = +ifm +. +pt_li +[0]; + +202 i( +pt + = +NULL +) { + +205 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +206 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +207 +__FUNCTION__ +, +__LINE__ +); + +208 i( +USE_RTM_LOCKS +) + +209 + `m_uock +(); + +211 + `e_rwlock_ad_uock +(& +rwlock +); + +212  +NULL +; + +216 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +217 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +218 +__LINE__ +); + +219 i( +USE_RTM_LOCKS +) + +220 + `m_uock +(); + +222 + `e_rwlock_ad_uock +(& +rwlock +); + +223  +pt +; + +224 + } +} + +226 +l2_phy_r_t + * + $ifm_g_xt_pt +( +ut8_t + +pt_id +) + +228 +l2_phy_r_t + * +pt + = +NULL +; + +229 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +230 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +231 +__LINE__ +); + +232 i( +USE_RTM_LOCKS +) + +233 + `m_lock +(); + +235 + `e_rwlock_ad_lock +(& +rwlock +); + +236 +pt + = +ifm +. +pt_li +[ +pt_id + + 1]; + +237 i( +pt + = +NULL +) { + +238 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +239 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +240 +__FUNCTION__ +, +__LINE__ +); + +241 i( +USE_RTM_LOCKS +) + +242 + `m_uock +(); + +244 + `e_rwlock_ad_uock +(& +rwlock +); + +245  +NULL +; + +249 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +250 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +251 +__LINE__ +); + +253 i( +USE_RTM_LOCKS +) + +254 + `m_uock +(); + +256 + `e_rwlock_ad_uock +(& +rwlock +); + +257  +pt +; + +258 + } +} + +260 +l2_phy_r_t + * + $ifm_g_pt_by_me +(cڡ * +me +) + +262 +l2_phy_r_t + * +pt + = +NULL +; + +263  +i +; + +264 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +265 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +266 +__LINE__ +); + +268 i( +USE_RTM_LOCKS +) + +269 + `m_lock +(); + +271 + `e_rwlock_ad_lock +(& +rwlock +); + +272  +i + = 0; i < +RTE_MAX_ETHPORTS + && +ifm +. +pt_li +[i]; i++) { + +273 +pt + = +ifm +. +pt_li +[ +i +]; + +274 i( + `rcmp +( +me +, +pt +-> +iame +) == 0) { + +275 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +276 + `RTE_LOG +( +INFO +, +IFM +, "FOUND!ort %u %s\n\r", + +277 +pt +-> +pmdid +,t-> +iame +); + +278 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +279 + `RTE_LOG +( +INFO +, +IFM +, + +281 +__FUNCTION__ +, +__LINE__ +); + +282 i( +USE_RTM_LOCKS +) + +283 + `m_uock +(); + +285 + `e_rwlock_ad_uock +(& +rwlock +); + +286  +pt +; + +289 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +290 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +291 +__LINE__ +); + +292 i( +USE_RTM_LOCKS +) + +293 + `m_uock +(); + +295 + `e_rwlock_ad_uock +(& +rwlock +); + +296  +NULL +; + +297 + } +} + +299  + $lsi_evt_back +( +ut8_t + +pt_id +, +e_h_evt_ty + +ty +, + +300 * +m +) + +302  +e_h_lk + +lk +; + +303 +l2_phy_r_t + * +pt +; + +304  +ns + = +ifm +. +n +; + +305  +i +; + +307 + `RTE_SET_USED +( +m +); + +308 + `RTE_SET_USED +( +ty +); + +310 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +311 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +312 +__FUNCTION__ +, +__LINE__ +); + +313 i( +USE_RTM_LOCKS +) { + +314 + `m_lock +(); + +316 + `e_rwlock_wre_lock +(& +rwlock +); + +318 + `e_h_lk_g +( +pt_id +, & +lk +); + +319  +i + = 0; i < +ns +; i++) + +320 +ifm +. +if_ +[ +i +]. + `cb_lkupde +( +pt_id +, +lk +. +lk_us +); + +321 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +322 i( +pt + = +NULL +) { + +323 + `RTE_LOG +( +ERR +, +IFM +, + +325 +__FUNCTION__ +, +pt_id +); + +327 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +328 i( +lk +. +lk_us +) { + +329 +pt +-> +lk_us + = +IFM_ETH_LINK_UP +; + +330 +pt +-> +lk_d + = +lk +.link_speed; + +331 +pt +-> +lk_duex + = +lk +.link_duplex; + +332 + `RTE_LOG +( +INFO +, +IFM +, + +334 +pt_id +, () +lk +. +lk_d +, + +335 ( +lk +. +lk_duex + == + +336 +ETH_LINK_FULL_DUPLEX +) ? ("full-duplex") + +338 i( +pt +-> +ags + & +IFM_MASTER +) { + +339 +pt +-> +ags + | +IFM_BONDED +; + +340 +pt +-> +bd_cfig +-> +aive_ave_cou + = + +341 + `e_h_bd_aive_aves_g +( +pt +-> +pmdid +, + +342 +pt +-> + +343 +bd_cfig +-> + +344 +aive_aves +, + +345 +RTE_MAX_ETHPORTS +); + +346  +h_addr + +w_mac +; + +347 + `e_h_maddr_g +( +pt +-> +pmdid +, + +348 ( +h_addr + *) + +349 & +w_mac +); + +350 i( +memcmp + + +351 (& +w_mac +, +pt +-> +maddr +, + +352 ( +h_addr +))) { + +353 + `RTE_LOG +( +INFO +, +IFM +, + +355 +pt +-> +pmdid +); + +357 + `RTE_LOG +( +INFO +, +IFM +, + +359 +pt +-> +pmdid +); + +362 i( +pt +-> +ags + & +IFM_SLAVE +) { + +363 +ut8_t + +ma_ptid + = + +364 +pt +-> +bd_cfig +-> +bd_ptid +; + +365  +e_h_lk + +lkus +; + +366 + `e_h_lk_g +( +ma_ptid +, & +lkus +); + +367 + `RTE_LOG +( +INFO +, +IFM +, "P܈%u 'Ma(%u衩ui%u\n\r", +pt_id +, + +368 +ma_ptid +, +lkus +. +lk_us +); + +370 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +371 + `RTE_LOG +( +INFO +, +IFM +, + +373 +__FUNCTION__ +, +__LINE__ +); + +375 i( +USE_RTM_LOCKS +) { + +376 + `m_uock +(); + +378 + `e_rwlock_wre_uock +(& +rwlock +); + +380 i( +pt +-> +v4_li + ! +NULL +) { + +381 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +382 + `RTE_LOG +( +INFO +, +IFM +, + +384 +pt +-> +pmdid +); + +385 i(! +ev_e +) { + +386 + `nd_gtuous_p +( +pt +); + +387 +ev_e + = 1; + +392 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +393 + `RTE_LOG +( +INFO +, +IFM +, + +395 +pt +-> +pmdid +); + +399 i( +pt +-> +ags + & +IFM_MASTER +) { + +400 +pt +-> +ags + &~ +IFM_BONDED +; + +403 +pt +-> +lk_us + = +IFM_ETH_LINK_DOWN +; + +404 + `RTE_LOG +( +INFO +, +IFM +, "EVENT-- PORT %u is Link DOWN.\n", + +405 +pt_id +); + +406 i( +pt +-> +ags + & +IFM_SLAVE +) { + +407  +e_h_lk + +lkus +; + +408 +ut8_t + +ma_ptid + = + +409 +pt +-> +bd_cfig +-> +bd_ptid +; + +410 + `e_h_lk_g_nowa +( +ma_ptid +, + +411 & +lkus +); + +412 + `RTE_LOG +( +INFO +, +IFM +, + +414 +pt_id +, +ma_ptid +, + +415 +lkus +. +lk_us +); + +417 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +418 + `RTE_LOG +( +INFO +, +IFM +, + +420 +__FUNCTION__ +, +__LINE__ +); + +421 i( +USE_RTM_LOCKS +) { + +422 + `m_uock +(); + +424 + `e_rwlock_wre_uock +(& +rwlock +); + +426 +ev_e + = 0; + +430 + } +} + +432  + $ifm_upde_lkus +( +ut8_t + +pt_id +, +ut16_t + +lkus +) + +434  +e_h_lk + +lk +; + +435 +l2_phy_r_t + * +pt +; + +436 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +437 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +438 +__LINE__ +); + +440 i( +USE_RTM_LOCKS +) { + +441 + `m_lock +(); + +443 + `e_rwlock_wre_lock +(& +rwlock +); + +445 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +447 i( +pt + = +NULL +) { + +448 + `RTE_LOG +( +ERR +, +IFM +, + +450 +__FUNCTION__ +, +pt_id +); + +452 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +453 + `e_h_lk_g +( +pt_id +, & +lk +); + +454 i( +lkus + = +IFM_ETH_LINK_UP +) { + +455 +pt +-> +adm_us + = +IFM_ETH_LINK_UP +; + +456 if(! +lk +. +lk_us +) { + +457 i( + `e_h_dev_t_lk_up +( +pt_id +) < 0) { + +458 + `RTE_LOG +( +INFO +, +IFM +, + +460 +__FUNCTION__ +, +pt +-> +pmdid +); + +462 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +463 + `RTE_LOG +( +INFO +, +IFM +, + +465 +__FUNCTION__ +, +__LINE__ +); + +467 i( +USE_RTM_LOCKS +) { + +468 + `m_uock +(); + +470 + `e_rwlock_wre_uock +(& +rwlock +); + +472 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +473 + `RTE_LOG +( +INFO +, +IFM +, + +475 +__FUNCTION__ +, +pt +-> +pmdid +); + +476 + `nd_gtuous_p +( +pt +); + +480 } i( +lkus + = +IFM_ETH_LINK_DOWN +) + +482  +us +; + +483 +pt +-> +adm_us + = +IFM_ETH_LINK_DOWN +; + +485 if( +lk +. +lk_us +) { + +486 +us + = + `e_h_dev_t_lk_down +( +pt_id +); + +487 i( +us + < 0) + +489 + `tf +("(%" +PRIu32 + "): PMD setink down... continuing...%" + +490 +PRId32 + "\n", +pt_id +, +us +); + +495 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +496 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +497 +__LINE__ +); + +499 i( +USE_RTM_LOCKS +) { + +500 + `m_uock +(); + +502 + `e_rwlock_wre_uock +(& +rwlock +); + +504 + } +} + +506  + $ifm_t_l2_r_mtu +( +ut8_t + +pt_id +, +ut16_t + +mtu +) + +508  +t +; + +509 +l2_phy_r_t + * +pt +; + +510 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +511 i( +pt + = +NULL +) { + +512 + `RTE_LOG +( +ERR +, +IFM +, + +514 +__FUNCTION__ +, +pt_id +); + +517 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +518 +t + = + `e_h_dev_t_mtu +( +pt_id +, +mtu +); + +519 i( +t + != 0) + +520 + `RTE_LOG +( +INFO +, +IFM +, + +522 +t +); + +524 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +525 + `RTE_LOG +( +INFO +, +IFM +, + +527 +__FUNCTION__ +, +__LINE__ +); + +529 i( +USE_RTM_LOCKS +) { + +530 + `m_lock +(); + +532 + `e_rwlock_wre_lock +(& +rwlock +); + +534 +pt +-> +mtu + = mtu; + +535 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +536 + `RTE_LOG +( +INFO +, +IFM +, + +538 +__FUNCTION__ +, +__LINE__ +); + +540 i( +USE_RTM_LOCKS +) { + +541 + `m_uock +(); + +543 + `e_rwlock_wre_uock +(& +rwlock +); + +548 + } +} + +550  + $ifm_t_pt_omisc +( +ut8_t + +pt_id +, ut8_ +ab +) + +552 +l2_phy_r_t + * +pt +; + +553 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +554 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +555 +__FUNCTION__ +, +__LINE__ +); + +556 i( +USE_RTM_LOCKS +) { + +557 + `m_lock +(); + +559 + `e_rwlock_wre_lock +(& +rwlock +); + +561 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +562 i( +pt + = +NULL +) { + +563 + `RTE_LOG +( +ERR +, +IFM +, + +565 +__FUNCTION__ +, +pt_id +); + +567 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +568 i( +ab + == 1) { + +569 + `e_h_omiscuous_ab +( +pt_id +); + +570 +pt +-> +omisc + = 1; + +572 + `e_h_omiscuous_dib +( +pt_id +); + +573 +pt +-> +omisc + = 0; + +576 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +577 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +578 +__FUNCTION__ +, +__LINE__ +); + +579 i( +USE_RTM_LOCKS +) { + +580 + `m_uock +(); + +582 + `e_rwlock_wre_uock +(& +rwlock +); + +584 + } +} + +586 +t32_t + + $ifm_g_ive_pts +() + +588  +ifm +. +t_cfigud +; + +589 + } +} + +591 +t32_t + + $ifm_g_ts_lized +() + +593  +ifm +. +t_tlized +; + +594 + } +} + +596 +ut16_t + + $ifm_ive_bulk_pkts +( +ut8_t + +pt_id +, +ut16_t + +qid +, + +597  +e_mbuf + ** +rx_pkts +) + +599 +ut64_t + +no_of_rcvd_pkt +; + +600 +no_of_rcvd_pkt + = + +601 + `e_h_rx_bur +( +pt_id +, +qid +, +rx_pkts +, +IFM_BURST_SIZE +); + +602 i( +ifm_debug + & +IFM_DEBUG_RXTX +) + +603 + `RTE_LOG +( +INFO +, +IFM +, + +605 +pt_id +, +no_of_rcvd_pkt +); + +606  +no_of_rcvd_pkt +; + +607 + } +} + +609 +ut16_t + + $ifm_sm_bulk_pkts +( +l2_phy_r_t + * +pt +, + +610  +e_mbuf + ** +tx_pkts +, +ut64_t + +kts +) + +612 +ut32_t + +bur_tx_day_time + = +IFM_BURST_TX_WAIT_US +; + +613 +ut32_t + +bur_tx_y_num + = +IFM_BURST_TX_RETRIES +; + +614 +ut32_t + +y +; + +615 +ut32_t + +no_of_tx_pkt +; + +616 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +617 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +618 +__FUNCTION__ +, +__LINE__ +); + +619 i( +USE_RTM_LOCKS +) { + +620 + `m_lock +(); + +622 + `e_rwlock_ad_lock +(& +rwlock +); + +624 +no_of_tx_pkt + = + `e_h_tx_bur +( +pt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, +tx_pkts +, + +625 +kts +); + +626 i( + `uiky +( +no_of_tx_pkt + < +kts +)) { + +627 +y + = 0; + +628  +no_of_tx_pkt + < +IFM_BURST_SIZE + + +629 && +y +++ < +bur_tx_y_num +) { + +630 + `e_day_us +( +bur_tx_day_time +); + +631 +no_of_tx_pkt + = + +632 + `e_h_tx_bur +( +pt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, + +633 & +tx_pkts +[ +no_of_tx_pkt +], + +634 +IFM_BURST_SIZE + - +no_of_tx_pkt +); + +637 i( +ifm_debug + & +IFM_DEBUG_RXTX +) + +638 + `RTE_LOG +( +INFO +, +IFM +, + +640 +no_of_tx_pkt +); + +641 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +642 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +643 +__FUNCTION__ +, +__LINE__ +); + +644 i( +USE_RTM_LOCKS +) { + +645 + `m_uock +(); + +647 + `e_rwlock_ad_uock +(& +rwlock +); + +649  +no_of_tx_pkt +; + +650 + } +} + +652  + $ifm_sm_sg_pkt +( +l2_phy_r_t + * +pt +,  +e_mbuf + * +tx_pkts +) + +654 +ut64_t + +tx_kts + = 0; + +655 i( +tx_pkts + = +NULL + || +pt + == NULL) { + +656 + `RTE_LOG +( +INFO +, +IFM +, + +658  +IFM_FAILURE +; + +660 i( +ifm_debug + & +IFM_DEBUG_RXTX +) + +661 + `RTE_LOG +( +INFO +, +IFM +, + +663 +pt +-> +pmdid +); + +664 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +665 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +666 +__FUNCTION__ +, +__LINE__ +); + +668 i( +USE_RTM_LOCKS +) { + +669 + `m_lock +(); + +671 + `e_rwlock_ad_lock +(& +rwlock +); + +673 +tx_kts + = + +674 + `e_h_tx_bufr +( +pt +-> +pmdid +, +IFM_TX_DEFAULT_Q +,t-> +tx_bufr +, + +675 +tx_pkts +); + +676 i( +ifm_debug + & +IFM_DEBUG_RXTX +) + +677 + `RTE_LOG +( +INFO +, +IFM +, + +679 +pt +-> +pmdid +, +tx_kts +); + +680 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +681 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RWock @ %d\n\r", + +682 +__FUNCTION__ +, +__LINE__ +); + +684 i( +USE_RTM_LOCKS +) { + +685 + `m_uock +(); + +687 + `e_rwlock_ad_uock +(& +rwlock +); + +689 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +690 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +691 +__FUNCTION__ +, +__LINE__ +); + +693 i( +USE_RTM_LOCKS +) { + +694 + `m_lock +(); + +696 + `e_rwlock_wre_lock +(& +rwlock +); + +698 +pt +-> +n_txpkts + += + +699 + `e_h_tx_bufr_ush +( +pt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, + +700 +pt +-> +tx_bufr +); + +701 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +702 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +703 +__FUNCTION__ +, +__LINE__ +); + +705 i( +USE_RTM_LOCKS +) { + +706 + `m_uock +(); + +708 + `e_rwlock_wre_uock +(& +rwlock +); + +710 i( +ifm_debug + & +IFM_DEBUG_RXTX +) + +711 + `RTE_LOG +( +INFO +, +IFM +, + +713 +pt +-> +n_txpkts +); + +714  +tx_kts +; + +715 + } +} + +717 +t16_t + + $ifm_add_v4_pt +( +ut8_t + +pt_id +, +ut32_t + +addr +, ut32_ +add +) + +719 +l2_phy_r_t + * +pt +; + +720 +v4li_t + * +cf +; + +721 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +722 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +723 +__LINE__ +); + +725 i( +USE_RTM_LOCKS +) { + +726 + `m_lock +(); + +728 + `e_rwlock_wre_lock +(& +rwlock +); + +730 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +731 i( +pt + = +NULL +) { + +732 + `RTE_LOG +( +ERR +, +IFM +, + +734 +__FUNCTION__ +, +pt_id +); + +736 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +737 +cf + = ( +v4li_t + * + `e_zmloc +( +NULL +, (ipv4list_t), + +738 +RTE_CACHE_LINE_SIZE +); + +739 i( +cf + ! +NULL +) { + +740 +cf +-> +xt + = +NULL +; + +742 +cf +-> +addr + = ipaddr; + +743 +cf +-> +pt + =ort; + +744 +cf +-> +add + =ddrlen; + +745 i( +pt +-> +v4_li + = +NULL +) + +746 +pt +-> +ags + | +IFM_IPV4_ENABLED +; + +747 +cf +-> +xt + = ( +v4li_t + * +pt +-> +v4_li +; + +748 +pt +-> +v4_li + = ( +v4li_t + * +cf +; + +749 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +750 + `RTE_LOG +( +INFO +, +IFM +, + +752 +__FUNCTION__ +, +__LINE__ +); + +754 i( +USE_RTM_LOCKS +) { + +755 + `m_uock +(); + +757 + `e_rwlock_wre_uock +(& +rwlock +); + +762 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +763 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +764 +__LINE__ +); + +766 i( +USE_RTM_LOCKS +) { + +767 + `m_uock +(); + +769 + `e_rwlock_wre_uock +(& +rwlock +); + +772 + } +} + +774 +t16_t + + $ifm_move_v4_pt +( +ut8_t + +pt_id +, +ut32_t + +addr +, + +775 +ut32_t + +add +) + +777 +l2_phy_r_t + * +pt +; + +778 +v4li_t + * +li +, * +evli + = +NULL +; + +779 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +780 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +781 +__LINE__ +); + +783 i( +USE_RTM_LOCKS +) { + +784 + `m_lock +(); + +786 + `e_rwlock_wre_lock +(& +rwlock +); + +788 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +789 i( +pt + = +NULL +) { + +790 + `RTE_LOG +( +ERR +, +IFM +, + +792 +__FUNCTION__ +, +pt_id +); + +794 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +795 i( +pt +-> +v4_li + = +NULL +) { + +796 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +797 + `RTE_LOG +( +INFO +, +IFM +, + +799 +__FUNCTION__ +, +__LINE__ +); + +801 i( +USE_RTM_LOCKS +) { + +802 + `m_uock +(); + +804 + `e_rwlock_wre_uock +(& +rwlock +); + +808 +li + = ( +v4li_t + * +pt +-> +v4_li +; + +809  +li + ! +NULL +) { + +810 i( +add + = +li +->addrlen && + +811 + `memy +(& +li +-> +addr +, &addr, +add +)) { + +812 i( +li + = +pt +-> +v4_li +) { + +813 +pt +-> +v4_li + = +li +-> +xt +; + +815 i( +evli + ! +NULL +) + +816 +evli +-> +xt + = +li +->next; + +818 +pt +-> +ags + &~ +IFM_IPV4_ENABLED +; + +819 + `e_ +( +li +); + +820 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +821 + `RTE_LOG +( +INFO +, +IFM +, + +823 +__FUNCTION__ +, +__LINE__ +); + +825 i( +USE_RTM_LOCKS +) { + +826 + `m_uock +(); + +828 + `e_rwlock_wre_uock +(& +rwlock +); + +832 +evli + = +li +; + +833 +li + = ii-> +xt +; + +837 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +838 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +839 +__LINE__ +); + +841 i( +USE_RTM_LOCKS +) { + +842 + `m_uock +(); + +844 + `e_rwlock_wre_uock +(& +rwlock +); + +847 + } +} + +849 +t8_t + + $ifm_add_v6_pt +( +ut8_t + +pt_id +, ut8_ +6addr +[], +ut32_t + +add +) + +851 +l2_phy_r_t + * +pt +; + +852 +v6li_t + * +6cf +; + +853 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +854 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +855 +__LINE__ +); + +857 i( +USE_RTM_LOCKS +) { + +858 + `m_lock +(); + +860 + `e_rwlock_wre_lock +(& +rwlock +); + +862 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +863 i( +pt + = +NULL +) { + +864 + `RTE_LOG +( +ERR +, +IFM +, + +866 +__FUNCTION__ +, +pt_id +); + +868 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +869 +6cf + = ( +v6li_t + * + `e_zmloc +( +NULL +, (ipv6list_t), + +870 +RTE_CACHE_LINE_SIZE +); + +871 i( +6cf + ! +NULL +) { + +872 +6cf +-> +xt + = +NULL +; + +873 + `memy +( +6cf +-> +addr +, +6addr +, +IFM_IPV6_ADDR_SIZE +); + +874 +6cf +-> +pt + =ort; + +875 +6cf +-> +add + =ddrlen; + +877 i( +pt +-> +v6_li + = +NULL +) { + +878 +pt +-> +ags + | +IFM_IPV6_ENABLED +; + +880 +6cf +-> +xt + = ( +v6li_t + * +pt +-> +v6_li +; + +881 +pt +-> +v6_li + = ( +v6li_t + * +6cf +; + +882 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +883 + `RTE_LOG +( +INFO +, +IFM +, + +885 +__FUNCTION__ +, +__LINE__ +); + +887 i( +USE_RTM_LOCKS +) { + +888 + `m_uock +(); + +890 + `e_rwlock_wre_uock +(& +rwlock +); + +895 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +896 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +897 +__LINE__ +); + +899 i( +USE_RTM_LOCKS +) { + +900 + `m_uock +(); + +902 + `e_rwlock_wre_uock +(& +rwlock +); + +905 + } +} + +907 +t16_t + + $ifm_move_v6_pt +( +ut8_t + +pt_id +, +ut32_t + +6addr +, + +908 +ut32_t + +add +) + +910 +l2_phy_r_t + * +pt +; + +911 +v6li_t + * +6li +, * +ev6li + = +NULL +; + +913 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +914 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +915 +__LINE__ +); + +916 i( +USE_RTM_LOCKS +) + +917 + `m_lock +(); + +919 + `e_rwlock_wre_lock +(& +rwlock +); + +920 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +921 i( +pt + = +NULL +) { + +922 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +923 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +924 +__FUNCTION__ +, +__LINE__ +); + +925 i( +USE_RTM_LOCKS +) { + +926 + `m_uock +(); + +928 + `e_rwlock_wre_uock +(& +rwlock +); + +930 + `RTE_LOG +( +ERR +, +IFM +, + +932 +__FUNCTION__ +, +pt_id +); + +934 i( +pt + ! +NULL + &&t-> +pmdid + = +pt_id +) { + +935 i( +pt +-> +v6_li + = +NULL +) { + +936 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +937 + `RTE_LOG +( +INFO +, +IFM +, + +939 +__FUNCTION__ +, +__LINE__ +); + +941 i( +USE_RTM_LOCKS +) { + +942 + `m_uock +(); + +944 + `e_rwlock_wre_uock +(& +rwlock +); + +948 +6li + = ( +v6li_t + * +pt +-> +v6_li +; + +949  +6li + ! +NULL +) { + +950 i( +add + = +6li +->addrlen && + +951 + `memy +(& +6li +-> +addr +, & +6addr +, +add +)) { + +952 i( +6li + = +pt +-> +v6_li +) { + +953 +pt +-> +v6_li + = +6li +-> +xt +; + +955 i( +ev6li + ! +NULL +) + +956 +ev6li +-> +xt + = + +957 +6li +-> +xt +; + +959 +pt +-> +ags + &~ +IFM_IPV6_ENABLED +; + +960 + `e_ +( +6li +); + +961 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +962 + `RTE_LOG +( +INFO +, +IFM +, + +964 +__FUNCTION__ +, +__LINE__ +); + +966 i( +USE_RTM_LOCKS +) { + +967 + `m_uock +(); + +969 + `e_rwlock_wre_uock +(& +rwlock +); + +973 +ev6li + = +6li +; + +974 +6li + = ip6li-> +xt +; + +978 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +979 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +980 +__LINE__ +); + +981 i( +USE_RTM_LOCKS +) + +982 + `m_uock +(); + +984 + `e_rwlock_wre_uock +(& +rwlock +); + +986 + } +} + +988 +t32_t + + $ifm_chk_pt_v4_abd +( +ut8_t + +pt_id +) + +990 +l2_phy_r_t + * +pt +; + +992 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +993 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +994 +__FUNCTION__ +, +__LINE__ +); + +995 i( +USE_RTM_LOCKS +) + +996 + `m_lock +(); + +998 + `e_rwlock_ad_lock +(& +rwlock +); + +999 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +1000 i( +pt + = +NULL +) { + +1001 + `RTE_LOG +( +ERR +, +IFM +, + +1003 +__FUNCTION__ +, +pt_id +); + +1004 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1005 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +1006 +__FUNCTION__ +, +__LINE__ +); + +1007 i( +USE_RTM_LOCKS +) + +1008 + `m_uock +(); + +1010 + `e_rwlock_ad_uock +(& +rwlock +); + +1011  +IFM_FAILURE +; + +1013 i(( +pt +-> +ags + & +IFM_IPV4_ENABLED +) == 0) { + +1014 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1015 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +1016 +__FUNCTION__ +, +__LINE__ +); + +1017 i( +USE_RTM_LOCKS +) + +1018 + `m_uock +(); + +1020 + `e_rwlock_ad_uock +(& +rwlock +); + +1023 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1024 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasingock @ %d\n\r", + +1025 +__FUNCTION__ +, +__LINE__ +); + +1026 i( +USE_RTM_LOCKS +) + +1027 + `m_uock +(); + +1029 + `e_rwlock_ad_uock +(& +rwlock +); + +1032 + } +} + +1034 +t32_t + + $ifm_chk_pt_v6_abd +( +ut8_t + +pt_id +) + +1036 +l2_phy_r_t + * +pt +; + +1038 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1039 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +1040 +__FUNCTION__ +, +__LINE__ +); + +1041 i( +USE_RTM_LOCKS +) + +1042 + `m_lock +(); + +1044 + `e_rwlock_ad_lock +(& +rwlock +); + +1046 +pt + = +ifm +. +pt_li +[ +pt_id +]; + +1047 i( +pt + = +NULL +) { + +1048 i( +ifm_debug + & +IFM_DEBUG +) + +1049 + `RTE_LOG +( +ERR +, +IFM +, "%s: Port %u infoot found..." + +1051 +__FUNCTION__ +, +pt_id +); + +1052 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1053 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1054 +__FUNCTION__ +, +__LINE__ +); + +1055 i( +USE_RTM_LOCKS +) + +1056 + `m_uock +(); + +1058 + `e_rwlock_ad_uock +(& +rwlock +); + +1059  +IFM_FAILURE +; + +1061 i(( +pt +-> +ags + & +IFM_IPV6_ENABLED +) == 0) { + +1062 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1063 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1064 +__FUNCTION__ +, +__LINE__ +); + +1065 i( +USE_RTM_LOCKS +) + +1066 + `m_uock +(); + +1068 + `e_rwlock_ad_uock +(& +rwlock +); + +1071 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1072 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1073 +__FUNCTION__ +, +__LINE__ +); + +1074 i( +USE_RTM_LOCKS +) + +1075 + `m_uock +(); + +1077 + `e_rwlock_ad_uock +(& +rwlock +); + +1080 + } +} + +1082  + $ifm_gi_f_lkupde +( +ut32_t + +id +, + +1083 (* +cb_lkupde +( +ut8_t +, )) + +1085 +ifm +. +if_ +[ifm. +n +]. +cb_lkupde + = cb_linkupdate; + +1086 +ifm +. +if_ +[ifm. +n +]. +id + = clientid; + +1087 +ifm +. +n +++; + +1088 + } +} + +1090  + $ifm_pt_tup +( +ut8_t + +pt_id +, +pt_cfig_t + * +pcfig +) + +1092  +us +, +sock +; + +1093  +buf +[12]; + +1094  +e_h_dev_fo + +dev_fo +; + +1095  +e_h_lk + +lkus +; + +1096 +l2_phy_r_t + * +pt + = +NULL +; + +1098 i(! +ifm +. +t_tlized +) { + +1099 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo configureort %u. 0orts" + +1101 +__FUNCTION__ +, +pt_id +); + +1102  +IFM_FAILURE +; + +1104 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +1105 + `RTE_LOG +( +INFO +, +IFM +, "%s: Configuringort %u with " + +1106 "xq: %u,txq: %u\n\r", +__FUNCTION__ +, + +1107 +pt_id +, +pcfig +-> +x_queue +,cfig-> +x_queue +); + +1108 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1109 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock1 @ %d\n\r", + +1110 +__FUNCTION__ +, +__LINE__ +); + +1111 i( +USE_RTM_LOCKS +) + +1112 + `m_lock +(); + +1114 + `e_rwlock_wre_lock +(& +rwlock +); + +1116 i( +ifm +. +pt_li +[ +pt_id +] = +NULL +) { + +1117 +ifm +. +pt_li +[ +pt_id +] = + +1118 ( +l2_phy_r_t + * + `e_zmloc +( +NULL +, + +1120 ( +l2_phy_r_t +), + +1121 +RTE_CACHE_LINE_SIZE +); + +1122 +ifm +. +pt_li +[ +pt_id +]-> +pmdid + =ort_id; + +1124 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1125 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock1 @ %d\n\r", + +1126 +__FUNCTION__ +, +__LINE__ +); + +1127 i( +USE_RTM_LOCKS +) + +1128 + `m_uock +(); + +1130 + `e_rwlock_wre_uock +(& +rwlock +); + +1132 + `e_h_lk_g +( +pt_id +, & +lkus +); + +1133 i( +lkus +. +lk_us +) { + +1134 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) { + +1135 + `RTE_LOG +( +INFO +, +IFM +, "%s: %u is up.Stop it before" + +1136 "ecfigurg.\n\r", +__FUNCTION__ +, +pt_id +); + +1138 + `e_h_dev_ +( +pt_id +); + +1141 +us + = + `e_h_dev_cfigu +( +pt_id +, +pcfig +-> +x_queue +, + +1142 +pcfig +-> +x_queue +, &pcfig-> +pt_cf +); + +1143 i( +us + < 0) { + +1144 + `ifm_move_pt_das +( +pt_id +); + +1145 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_dev_configure is failed" + +1146 "f܅܈%u.\n\r", +__FUNCTION__ +, +pt_id +); + +1147  +IFM_FAILURE +; + +1149 +us + = + `e_h_dev_back_gi +( +pt_id +, + +1150 +RTE_ETH_EVENT_INTR_LSC +, + +1151 +lsi_evt_back +, +NULL +); + +1152 i( +us + < 0) { + +1153 + `ifm_move_pt_das +( +pt_id +); + +1154 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_dev_callback_register()" + +1155 " faed f܅܈%u.\n\r", +__FUNCTION__ +, +pt_id +); + +1156  +IFM_FAILURE +; + +1159 i( +pcfig +-> +omisc +) + +1160 + `e_h_omiscuous_ab +( +pt_id +); + +1162 +sock + = + `e_h_dev_sock_id +( +pt_id +); + +1163 i( +sock + == -1) + +1164 + `RTE_LOG +( +ERR +, +IFM +, "%s: Warning:te_eth_dev_socket_id," + +1166 "ouong%u\n\r", +__FUNCTION__ +, +pt_id +); + +1168  +xqs +; + +1169  +xqs + = 0;txq< +pcfig +-> +x_queue +;txqs++) { + +1170 +us + = + `e_h_tx_queue_tup +( +pt_id +, +xqs +, + +1171 +IFM_TX_DESC_DEFAULT +, +sock +, + +1172 &( +pcfig +-> +tx_cf +)); + +1173 i( +us + < 0) { + +1174 + `ifm_move_pt_das +( +pt_id +); + +1175 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_tx_queue_setup failed" + +1176 " f܅܈%u\n\r", +__FUNCTION__ +, +pt_id +); + +1177  +IFM_FAILURE +; + +1180 +pt + = + `ifm_g_pt +( +pt_id +); + +1181 i( +pt + = +NULL +) { + +1182 + `RTE_LOG +( +INFO +, +IFM +, "%s: P܈iNULL @ %d\n\r", +__FUNCTION__ +, + +1183 +__LINE__ +); + +1184  +IFM_FAILURE +; + +1187 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1188 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock 2 @ %d\n\r", + +1189 +__FUNCTION__ +, +__LINE__ +); + +1190 i( +USE_RTM_LOCKS +) + +1191 + `m_lock +(); + +1193 + `e_rwlock_wre_lock +(& +rwlock +); + +1195 i( +pt +-> +tx_buf_n + == 0) { + +1196 +pt +-> +tx_buf_n + = + `RTE_ETH_TX_BUFFER_SIZE +( +IFM_BURST_SIZE +); + +1198 +pt +-> +tx_bufr + = + `e_zmloc_sock +("tx_bufr",t-> +tx_buf_n +, 0, + +1199 + `e_h_dev_sock_id +( +pt_id +)); + +1201 i( +pt +-> +tx_bufr + = +NULL +) { + +1202 + `ifm_move_pt_das +( +pt_id +); + +1203 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedollocatex buffers for" + +1204 "܈%u\n\r", +__FUNCTION__ +, +pt_id +); + +1205 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1206 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock2 %d\n\r", + +1207 +__FUNCTION__ +, +__LINE__ +); + +1208 i( +USE_RTM_LOCKS +) + +1209 + `m_uock +(); + +1211 + `e_rwlock_wre_uock +(& +rwlock +); + +1212  +IFM_FAILURE +; + +1214 + `e_h_tx_bufr_ +( +pt +-> +tx_bufr +, +IFM_BURST_SIZE +); + +1216 + `rtf +( +buf +, "MEMPOOL%d", +pt_id +); + +1217 +pt +-> +mempo + = + `e_mempo_ +( +buf +, + +1218 +pcfig +-> +mempo +. +po_size +, + +1219 +pcfig +-> +mempo +. +bufr_size +, + +1220 +pcfig +-> +mempo +. +che_size +, + +1222 +e_pktmbuf_po_ive +), + +1223 +e_pktmbuf_po_ +, +NULL +, + +1224 +e_pktmbuf_ +, +NULL +, +sock +, 0); + +1225 i( +pt +-> +mempo + = +NULL +) { + +1226 + `ifm_move_pt_das +( +pt_id +); + +1227 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_mempool_create is failed forort" + +1229 +__FUNCTION__ +, +pt_id +, + `e_ +( +e_o +)); + +1230 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1231 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock2 %d\n\r", + +1232 +__FUNCTION__ +, +__LINE__ +); + +1233 i( +USE_RTM_LOCKS +) + +1234 + `m_uock +(); + +1236 + `e_rwlock_wre_uock +(& +rwlock +); + +1237  +IFM_FAILURE +; + +1239  +xqs +; + +1240  +xqs + = 0;rxq< +pcfig +-> +x_queue +;rxqs++) { + +1241 +us + = + `e_h_rx_queue_tup +( +pt_id +, +xqs +, + +1242 +IFM_RX_DESC_DEFAULT +, +sock +, + +1243 &( +pcfig +-> +rx_cf +), + +1244 +pt +-> +mempo +); + +1245 i( +us + < 0) { + +1246 + `ifm_move_pt_das +( +pt_id +); + +1247 + `RTE_LOG +( +ERR +, +IFM +, + +1250 +__FUNCTION__ +, +pt_id +, +xqs +, + +1251 + `e_ +( +e_o +)); + +1252 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1253 + `RTE_LOG +( +INFO +, +IFM +, + +1255 +__FUNCTION__ +, +__LINE__ +); + +1256 i( +USE_RTM_LOCKS +) + +1257 + `m_uock +(); + +1259 + `e_rwlock_wre_uock +(& +rwlock +); + +1260  +IFM_FAILURE +; + +1264 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1265 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock2 @ %d\n\r", + +1266 +__FUNCTION__ +, +__LINE__ +); + +1267 i( +USE_RTM_LOCKS +) + +1268 + `m_uock +(); + +1270 + `e_rwlock_wre_uock +(& +rwlock +); + +1271 +us + = + `e_h_dev_t +( +pt_id +); + +1272 i( +us + < 0) { + +1273 + `ifm_move_pt_das +( +pt_id +); + +1274 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_dev_start is failed for" + +1275 "܈%u.\n\r", +__FUNCTION__ +, +pt_id +); + +1276  +IFM_FAILURE +; + +1278 + `e_day_ms +(5000); + +1280 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1281 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock3 @ %d\n\r", + +1282 +__FUNCTION__ +, +__LINE__ +); + +1283 i( +USE_RTM_LOCKS +) + +1284 + `m_lock +(); + +1286 + `e_rwlock_wre_lock +(& +rwlock +); + +1287 + `e_h_maddr_g +( +pt_id +, ( +h_addr + *) +pt +-> +maddr +); + +1288 i( +pcfig +-> +omisc +) + +1289 +pt +-> +omisc + = 1; + +1290 + `e_h_lk_g +( +pt_id +, & +lkus +); + +1292 +pt +-> +lk_duex + = +lkus +.link_duplex; + +1293 +pt +-> +lk_auteg + = +lkus +.link_autoneg; + +1294 +pt +-> +lk_d + = +lkus +.link_speed; + +1295 +pt +-> +adm_us + = +pcfig +-> +e +; + +1298 + `memt +(& +dev_fo +, 0, (dev_info)); + +1299 + `e_h_dev_fo_g +( +pt_id +, & +dev_fo +); + +1300 +pt +-> +m_rx_bufsize + = +dev_fo +.min_rx_bufsize; + +1301 +pt +-> +max_rx_pk + = +dev_fo +.max_rx_pktlen; + +1302 +pt +-> +max_rx_queues + = +dev_fo +.max_rx_queues; + +1303 +pt +-> +max_tx_queues + = +dev_fo +.max_tx_queues; + +1304 + `e_h_dev_g_mtu +( +pt_id +, &( +pt +-> +mtu +)); + +1307 +pt +-> +ve_bulk_pkts + = & +ifm_ive_bulk_pkts +; + +1308 +pt +-> +sm_bulk_pkts + = & +ifm_sm_bulk_pkts +; + +1309 +pt +-> +sm_sg_pkt + = & +ifm_sm_sg_pkt +; + +1310 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1311 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR3ock @ %d\n\r", + +1312 +__FUNCTION__ +, +__LINE__ +); + +1313 i( +USE_RTM_LOCKS +) + +1314 + `m_uock +(); + +1316 + `e_rwlock_wre_uock +(& +rwlock +); + +1317 + `RTE_LOG +( +INFO +, +IFM +, "%s: Port %u is successfully configured.\n\r", + +1318 +__FUNCTION__ +, +pt_id +); + +1319  +IFM_SUCCESS +; + +1320 + } +} + +1322  + $ifm_cfigu_pts +( +pt_cfig_t + * +pcfig +) + +1324 +ut8_t + +pt_id +; + +1325  +us + = 0; + +1326 i(! +ifm +. +t_tlized +) { + +1327 + `RTE_LOG +( +ERR +, +IFM +, "%s, Configuringorts failed. Zeroorts " + +1328 "tlized durg PCIrobe", +__FUNCTION__ +); + +1329  +IFM_FAILURE +; + +1331 i( +pcfig + = +NULL +) { + +1332 + `RTE_LOG +( +ERR +, +IFM +, "%s, Configuringorts failed. " + +1333 "Pamcfig iNULL\n\r", +__FUNCTION__ +); + +1334  +IFM_FAILURE +; + +1338  +pt_id + = 0;t_id < +ifm +. +t_tlized +;ort_id++) { + +1339 i( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +1340 + `RTE_LOG +( +INFO +, +IFM +, "Call ifm_port_setup %u\n\r", + +1341 +pt_id +); + +1342 +us + = + +1343 + `ifm_pt_tup +( +pcfig +[ +pt_id +].port_id, &pconfig[port_id]); + +1344 i( +us + = +IFM_SUCCESS +) + +1345 +ifm +. +t_cfigud +++; + +1347 i(! +ifm +. +t_cfigud +) { + +1348 + `RTE_LOG +( +ERR +, +IFM +, "%s: Zeroortsre configured\n\r", + +1349 +__FUNCTION__ +); + +1350  +IFM_FAILURE +; + +1352 + `RTE_LOG +( +INFO +, +IFM +, "%s: Number oforts sucessfully configured:" + +1353 " %d\n\r", +__FUNCTION__ +, +ifm +. +t_cfigud +); + +1354  +IFM_SUCCESS +; + +1355 + } +} + +1357  + $t_r_das +() + +1359 +l2_phy_r_t + * +pt +; + +1360  +i + = 0; + +1361  +sockaddr_ + + +; + +1362 + `tf +("\n\r"); + +1364 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RWock @ %d\n\r", + +1366 +__FUNCTION__ +, +__LINE__ +); + +1367 i( +USE_RTM_LOCKS +) + +1368 + `m_lock +(); + +1370 + `e_rwlock_ad_lock +(& +rwlock +); + +1372  +i + = 0; i < +RTE_MAX_ETHPORTS + && +ifm +. +pt_li +[i]; i++) { + +1373 +pt + = +ifm +. +pt_li +[ +i +]; + +1374 + `tf +(" %u", +pt +-> +pmdid +); + +1375 i( +pt +-> +iame + && + ` +(port->ifname)) { + +1376 + `tf +(" (%s)\t", +pt +-> +iame +); + +1378 + `tf +("\t\t"); + +1379 + `tf +("MAC:%02x:%02x:%02x:%02x:%02x:%02x Adminstate:%s" + +1381 +pt +-> +maddr +[0],ort->macaddr[1], + +1382 +pt +-> +maddr +[2],ort->macaddr[3], + +1383 +pt +-> +maddr +[4],ort->macaddr[5], + +1384 +pt +-> +adm_us + ? "UP" : "DOWN", + +1385 +pt +-> +lk_us + ? "UP" : "DOWN"); + +1386 + `tf +("\t\t"); + +1387 + `tf +("Sed: %u, %s-duex\n\r", +pt +-> +lk_d +, + +1388 +pt +-> +lk_duex + ? "full" : "half"); + +1389 + `tf +("\t\t"); + +1391 i( +pt +-> +v4_li + ! +NULL +) { + +1392 + +. +s_addr +. +s_addr + = + +1393 ()(( +v4li_t + *( +pt +-> +v4_li +))-> + +1394 +addr +; + +1395 + `tf +("IP: %s/%d", + `_ +( + +. +s_addr +), + +1396 (( +v4li_t + *( +pt +-> +v4_li +))-> +add +); + +1398 + `tf +("IP: NA"); + +1401 + `tf +("\r\n"); + +1402 + `tf +("\t\t"); + +1403 i( +pt +-> +v6_li + ! +NULL +) { + +1404 +ut8_t + * +addr + = + +1405 (( +v6li_t + *( +pt +-> +v6_li +))-> +addr +; + +1406 +tf + + +1408 +addr +[0],ddr[1],ddr[2],ddr[3],ddr[4], + +1409 +addr +[5],ddr[6],ddr[7],ddr[8],ddr[9], + +1410 +addr +[10],ddr[11],ddr[12],ddr[13],ddr[14], + +1411 +addr +[15]); + +1413 + `tf +("IPv6: NA"); + +1416 i( +pt +-> +ags + & +IFM_SLAVE +) { + +1417 + `tf +(" IFM_SLAVE "); + +1418 + `tf +(" MasterPort: %u", + +1419 +pt +-> +bd_cfig +-> +bd_ptid +); + +1421 i( +pt +-> +ags + & +IFM_MASTER +) { + +1422 + `tf +(" IFM_MASTER "); + +1423 + `tf +(" Mode: %u", +pt +-> +bd_cfig +-> +mode +); + +1424 + `tf +(" PrimyPt: %u", +pt +-> +bd_cfig +-> +imy +); + +1425 + `tf +("\n\r"); + +1426 + `tf +("\t\tSlavePortCount: %u", + +1427 +pt +-> +bd_cfig +-> +ave_cou +); + +1428 + `tf +(" SlavePorts:"); + +1429  +i +; + +1430  +i + = 0; i < +pt +-> +bd_cfig +-> +ave_cou +; i++) { + +1431 + `tf +(" %u ", +pt +-> +bd_cfig +-> +aves +[ +i +]); + +1433 + `tf +(" ActivePortCount: %u", + +1434 +pt +-> +bd_cfig +-> +aive_ave_cou +); + +1435 + `tf +(" ActivePorts:"); + +1436  +i + = 0; i < +pt +-> +bd_cfig +-> +aive_ave_cou +; + +1437 +i +++) { + +1438 + `tf +(" %u ", + +1439 +pt +-> +bd_cfig +-> +aive_aves +[ +i +]); + +1441 + `tf +("\n\r"); + +1442 + `tf +("\t\t"); + +1443 + `tf +("Link_monitor_freq: %u ms ", + +1444 +pt +-> +bd_cfig +-> +_ms +); + +1445 + `tf +(" Link_up_prop_delay: %u ms ", + +1446 +pt +-> +bd_cfig +-> +lk_up_day_ms +); + +1447 + `tf +(" Link_down_prop_delay: %u ms ", + +1448 +pt +-> +bd_cfig +-> +lk_down_day_ms +); + +1449 + `tf +("\n\r"); + +1450 + `tf +("\t\t"); + +1451 + `tf +("Xmit_policy: %u", + +1452 +pt +-> +bd_cfig +-> +xm_picy +); + +1454 + `tf +("\n\r"); + +1455 + `tf +("\t\t"); + +1456 + `tf +("n_rxpkts: %" +PRIu64 + " ,n_txpkts: %" PRIu64 " ,", + +1457 +pt +-> +n_rxpkts +,t-> +n_txpkts +); + +1458  +e_h_s + +h_s +; + +1459 + `e_h_s_g +( +pt +-> +pmdid +, & +h_s +); + +1460 + `tf +("pkts_: %" +PRIu64 + " ,", +h_s +. +acks +); + +1461 + `tf +("pkts_out: %" +PRIu64 + " ", +h_s +. +acks +); + +1462 + `tf +("\n\r"); + +1463 + `tf +("\t\t"); + +1464 + `tf +("_rs: %" +PRIu64 + " ,", +h_s +. +s +); + +1465 + `tf +("_misd: %" +PRIu64 + " ,", +h_s +. +imisd +); + +1466 + `tf +("out_rs: %" +PRIu64 + " ,", +h_s +. +ۼs +); + +1467 + `tf +("mbuf_rs: %" +PRIu64 + " ", +h_s +. +rx_nombuf +); + +1468 + `tf +("\n\r"); + +1469 + `tf +("\n\r"); + +1471 i( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1472 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RWock @ %d\n\r", + +1473 +__FUNCTION__ +, +__LINE__ +); + +1474 i( +USE_RTM_LOCKS +) + +1475 + `m_uock +(); + +1477 + `e_rwlock_ad_uock +(& +rwlock +); + +1478 + } +} + + @VIL/l2l3_stack/interface.h + +16 #ide +INTERFACE_H + + +17  + #INTERFACE_H + + + ) + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~ + +42  + ~ + +43  + ~ + +44  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~ + +50  + ~ + +51  + ~ + +52  + ~ + +53  + ~ + +54  + ~ + +55  + ~ + +56  + ~ + +57  + ~ + +58  + ~ + +59  + ~ + +60  + ~ + +61  + ~ + +62  + ~ + +63  + ~ + +64  + ~ + +65  + ~ + +67  + #RTE_LOGTYPE_IFM + +RTE_LOGTYPE_USER1 + + + ) + +68  + #IFM_SUCCESS + 0 + + ) + +69  + #IFM_FAILURE + -1 + + ) + +73  + #IFM_ETH_LINK_HALF_DUPLEX + 0 + + ) + +74  + #IFM_ETH_LINK_FULL_DUPLEX + 1 + + ) + +75  + #IFM_ETH_LINK_DOWN + 0 + + ) + +76  + #IFM_ETH_LINK_UP + 1 + + ) + +77  + #IFM_ETH_LINK_FIXED + 0 + + ) + +82  + #IFM_SLAVE + (1<<0) + + ) + +83  + #IFM_MASTER + (1<<1) + + ) + +84  + #IFM_BONDED + (1<<2) + + ) + +85  + #IFM_IPV4_ENABLED + (1<<3) + + ) + +86  + #IFM_IPV6_ENABLED + (1<<4) + + ) + +88  + #IFM_BONDING_MODE_ROUND_ROBIN + 0 + + ) + +89  + #IFM_BONDING_MODE_ACTIVE_BACKUP + 1 + + ) + +90  + #IFM_BONDING_MODE_BALANCE + 2 + + ) + +91  + #IFM_BONDING_MODE_BROADCAST + 3 + + ) + +92  + #IFM_BONDING_MODE_8023AD + 4 + + ) + +93  + #IFM_BONDING_MODE_TLB + 5 + + ) + +94  + #IFM_BONDING_MODE_ALB + 6 + + ) + +96  + #IFM_BALANCE_XMIT_POLICY_LAYER2 + 0 + + ) + +97  + #IFM_BALANCE_XMIT_POLICY_LAYER23 + 1 + + ) + +98  + #IFM_BALANCE_XMIT_POLICY_LAYER34 + 2 + + ) + +102  + #IFM_QUEUE_STAT_CNTRS + 16 + + ) + +103  + #IFM_TX_DEFAULT_Q + 0 + + ) + +104  + #IFM_RX_DEFAULT_Q + 0 + + ) + +105  + #IFM_RX_DESC_DEFAULT + 128 + + ) + +106  + #IFM_TX_DESC_DEFAULT + 512 + + ) + +107  + #IFM_BURST_SIZE + 32 + + ) + +108  + #IFM_BURST_TX_WAIT_US + 1 + + ) + +109  + #IFM_BURST_TX_RETRIES + 64 + + ) + +110  + #BURST_TX_DRAIN_US + 100 + + ) + +115  + #IFM_IFNAME_LEN + 16 + + ) + +116  + #IFM_CLIENT_NAME + 20 + + ) + +117  + #IFM_MAX_CLIENT + 10 + + ) + +119  + #IFM_ETHER_ADDR_SIZE + 6 + + ) + +120  + #IFM_IPV6_ADDR_SIZE + 16 + + ) + +122  + #IFM_DEBUG_CONFIG + (1<<0) + + ) + +123  + #IFM_DEBUG_RXTX + (1<<1) + + ) + +124  + #IFM_DEBUG_LOCKS + (1<<2) + + ) + +125  + #IFM_DEBUG + (1<<4) + + ) + +126  + #IFM_MAX_PORTARR_SZ + 64 + + ) + +127  + #IFM_MAX_PORTARR_SZ + 64 + + ) + +132  + smempo_cfig + { + +133 +ut32_t + + mpo_size +; + +134 +ut32_t + + mbufr_size +; + +136 +ut32_t + + mche_size +; + +138 +ut32_t + + mu_sock_id +; + +140 } + g__e_che_igd +; + +147  + s_pt_cfig_ + { + +148 +ut8_t + + mpt_id +; + +149  + mx_queue +; + +150  + mx_queue +; + +151 +ut32_t + + mtx_buf_size +; + +152 +ut32_t + + me +; + +153 +ut32_t + + momisc +; + +154  +mempo_cfig + + mmempo +; + +156  +e_h_cf + + mpt_cf +; + +158  +e_h_rxcf + + mrx_cf +; + +160  +e_h_txcf + + mtx_cf +; + +162 } + tpt_cfig_t +; + +169  + s_if_s_ + { + +170 +ut64_t + + mrx_kts +; + +171 +ut64_t + + mtx_kts +; + +172 +ut64_t + + mrx_bys +; + +173 +ut64_t + + mtx_bys +; + +174 +ut64_t + + mrx_misd_pkts +; + +176 +ut64_t + + mrx_r_pkts +; + +177 +ut64_t + + mrx_nobuf_ +; + +178 +ut64_t + + mtx_ed_pkts +; + +179 +ut64_t + + mq_rxpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +180 +ut64_t + + mq_txpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +181 +ut64_t + + mq_rx_bys +[ +IFM_QUEUE_STAT_CNTRS +]; + +183 +ut64_t + + mq_tx_bys +[ +IFM_QUEUE_STAT_CNTRS +]; + +185 +ut64_t + + mq_rx_pkt_dr +[ +IFM_QUEUE_STAT_CNTRS +]; + +187 } + t__e_che_igd + + tif_s +; + +191  + sbd_pt + { + +192 +ut8_t + + mbd_ptid +; + +194 +ut8_t + + msock_id +; + +196 +ut8_t + + mmode +; + +198 +ut8_t + + mxm_picy +; + +200 +ut32_t + + m_ms +; + +202 +ut32_t + + mlk_up_day_ms +; + +204 +ut32_t + + mlk_down_day_ms +; + +206 +ut8_t + + mimy +; + +208 +ut8_t + + maves +[ +RTE_MAX_ETHPORTS +]; + +210  + mave_cou +; + +212 +ut8_t + + maive_aves +[ +RTE_MAX_ETHPORTS +]; + +214  + maive_ave_cou +; + +216 } + g__e_che_igd +; + +224  + s_l2_phy_r_ + { + +225  +_l2_phy_r_ + * + mxt +; + +226 +ut8_t + + mpmdid +; + +227  + mif_dex +; + +228  + miame +[ +IFM_IFNAME_LEN +]; + +229 +ut16_t + + mmtu +; + +230 +ut8_t + + mmaddr +[ +IFM_ETHER_ADDR_SIZE +]; + +231 +ut32_t + + momisc +; + +232 +ut32_t + + mags +; + +234 +ut32_t + + mlk_d +; + +235 +ut16_t + + mlk_duex +:1; + +236 +ut16_t + + mlk_auteg +:1; + +237 +ut16_t + + mlk_us +:1; + +238 +ut16_t + + madm_us +:1; + +240  +e_mempo + * + mmempo +; + +241 +ut32_t + + mm_rx_bufsize +; + +242 +ut32_t + + mmax_rx_pk +; + +243 +ut16_t + + mmax_rx_queues +; + +244 +ut16_t + + mmax_tx_queues +; + +245 +ut64_t + + mn_rxpkts +; + +246 +ut64_t + + mn_txpkts +; + +247 +if_s + + ms +; + +248 +ut16_t +(* +ve_bulk_pkts +( + mut8_t +, + mut16_t +,  + me_mbuf + **); + +250 +ut16_t +(* +sm_bulk_pkts +( + m_l2_phy_r_ + *,  + me_mbuf + **, + mut64_t +); + +252 (* + msm_sg_pkt +( + m_l2_phy_r_ + *,  + me_mbuf + *); + +254  +e_h_dev_tx_bufr + * + mtx_bufr +; + +255 +ut64_t + + mtx_buf_n +; + +256 * + mv4_li +; + +257 * + mv6_li +; + +258  +bd_pt + * + mbd_cfig +; + +259 +pt_cfig_t + + mpt_cfig +; + +260 } + t__e_che_igd + + tl2_phy_r_t +; + +266  + s_v4li_ + { + +267  +_v4li_ + * + mxt +; + +268 +ut32_t + + maddr +; + +269  + madd +; + +270  + mmtu +; + +271 +l2_phy_r_t + * + mpt +; + +273 } + tv4li_t +; + +279  + s_v6li_ + { + +280  +_v6li_ + * + mxt +; + +281 +ut8_t + + maddr +[ +IFM_IPV6_ADDR_SIZE +]; + +282  + madd +; + +283  + mmtu +; + +284 +l2_phy_r_t + * + mpt +; + +285 } + tv6li_t +; + +292  + s_ifm__ + { + +293 +ut32_t + + mid +; + +294 (* + mcb_lkupde +( + mut8_t +, ); + +296 } + t__e_che_igd + + tifm_ +; + +302  + s_r_ma_ + { + +303 +l2_phy_r_t + * + mpt_li +[ +IFM_MAX_PORTARR_SZ +]; + +304 +ut32_t + + mt_cfigud +; + +305 +ut32_t + + mt_tlized +; + +306 +ut8_t + + mn +; + +307 +ifm_ + + mif_ +[ +IFM_MAX_CLIENT +]; + +308 } + t__e_che_igd + + tr_ma_t +; + +320  +ifm_cfigu_pts +( +pt_cfig_t + * +pcfig +); + +333 +l2_phy_r_t + * +ifm_g_f_pt +(); + +347 +l2_phy_r_t + * +ifm_g_xt_pt +( +ut8_t + +pt_id +); + +359 +l2_phy_r_t + * +ifm_g_pt +( +ut8_t +); + +371 +l2_phy_r_t + * +ifm_g_pt_by_me +(cڡ * +me +); + +380  +ifm_move_pt_das +( +ut8_t + +ptid +); + +390  +ifm_add_pt_to_pt_li +( +l2_phy_r_t + *); + +399  +is_pt_li_nu +(); + +412  +ifm_pt_tup +( +ut8_t + +pt_id +, +pt_cfig_t + *); + +421  +ifm_ +(); + +433 +t32_t + +ifm_g_ts_lized +(); + +445 +t32_t + +ifm_g_ive_pts +(); + +457 +t32_t + +ifm_chk_pt_v4_abd +( +ut8_t + +pt_id +); + +469 +t32_t + +ifm_chk_pt_v6_abd +( +ut8_t + +pt_id +); + +485 +t16_t + +ifm_move_v4_pt +( +ut8_t + +pt_id +, +ut32_t + +addr +, + +486 +ut32_t + +add +); + +502 +t16_t + +ifm_move_v6_pt +( +ut8_t + +pt_id +, +ut32_t + +6addr +, + +503 +ut32_t + +add +); + +519 +t16_t + +ifm_add_v4_pt +( +ut8_t + +pt_id +, +ut32_t + +addr +, ut32_ +add +); + +535 +t8_t + +ifm_add_v6_pt +( +ut8_t + +pt_id +, ut8_ +6addr +[], +ut32_t + +add +); + +548  +ifm_sm_sg_pkt +( +l2_phy_r_t + * +pt +, + +549  +e_mbuf + * +tx_pkts +); + +564 +ut16_t + +ifm_sm_bulk_pkts +( +l2_phy_r_t + *,  +e_mbuf + ** +tx_pkts +, + +565 +ut64_t + +kts +); + +580 +ut16_t + +ifm_ive_bulk_pkts +( +ut8_t + +pt_id +, ut16_ +qid +, + +581  +e_mbuf + ** +rx_pkts +); + +594  +ifm_t_pt_omisc +( +ut8_t + +pt_id +, ut8_ +ab +); + +607  +ifm_t_l2_r_mtu +( +ut8_t + +pt_id +, +ut16_t + +mtu +); + +620  +ifm_upde_lkus +( +ut8_t + +pt_id +, +ut16_t + +lkus +); + +633  +ifm_gi_f_lkupde +( +ut32_t + +id +, + +634 (* +cb_lkupde +( +ut8_t +, )); + +650  + `lsi_evt_back +( +ut8_t + +pt_id +, +e_h_evt_ty + +ty +, + +651 * +m +); + +656  + `t_r_das +(); + +667  + `ifm_bd_pt_ +(cڡ * +me +,  +mode +, +pt_cfig_t + * +ptcf +); + +674  + `ifm_bd_pt_de +(cڡ * +me +); + +683  + `ifm_add_ave_pt +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +); + +692  + `ifm_move_ave_pt +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +); + +701  + `t_bd_mode +( +ut8_t + +bded_pt_id +, ut8_ +mode +); + +708  + `g_bd_mode +( +ut8_t + +bded_pt_id +); + +717  + `t_bd_imy +( +ut8_t + +bded_pt_id +, ut8_ +ave_pt_id +); + +724  + `g_bd_imy_pt +( +ut8_t + +bded_pt_id +); + +731  + `g_bd_ave_cou +( +ut8_t + +bded_pt_id +); + +738  + `g_bd_aive_ave_cou +( +ut8_t + +bded_pt_id +); + +747  + `g_bd_aves +( +ut8_t + +bded_pt_id +, ut8_ +aves +[ +RTE_MAX_ETHPORTS +]); + +756  + `g_bd_aive_aves +( +ut8_t + +bded_pt_id +, + +757 +ut8_t + +aves +[ +RTE_MAX_ETHPORTS +]); + +766  + `t_bd_mac_addss +( +ut8_t + +bded_pt_id +,  +h_addr + * +mac_addr +); + +773  + `t_bd_mac_addr +( +ut8_t + +bded_pt_id +); + +774  + `g_bd_mac +( +ut8_t + +bded_pt_id +,  +h_addr + * +maddr +); + +783  + `t_bd_xmpicy +( +ut8_t + +bded_pt_id +, ut8_ +picy +); + +790  + `g_bd_xmpicy +( +ut8_t + +bded_pt_id +); + +799  + `t_bd_lk_mt_equcy +( +ut8_t + +bded_pt_id +, + +800 +ut32_t + +_ms +); + +807  + `g_bd_lk_mڙ_equcy +( +ut8_t + +bded_pt_id +); + +816  + `t_bd_lkdown_day +( +ut8_t + +bded_pt_id +, +ut32_t + +day_ms +); + +823  + `g_bd_lk_down_day +( +ut8_t + +bded_pt_id +); + +832  + `t_bd_lkup_day +( +ut8_t + +bded_pt_id +, +ut32_t + +day_ms +); + +839  + `g_bd_lk_up_day +( +ut8_t + +bded_pt_id +); + +845  + `t_s +(); + +854  + `ifm_g_pt_fo +( +ut8_t + +pt_id +, +l2_phy_r_t + * +pt_fo +); + +863  + `ifm_g_xt_pt_fo +( +ut8_t + +pt_id +, +l2_phy_r_t + * +pt_fo +); + +872  + `cfig_ifm_debug +( +dbg +,  +ag +); + + @VIL/l2l3_stack/l2_proto.c + +22  + ~"l2_o.h +" + +24  +o_ck_ty + * + go_li +[3]; + +29 + $li_add_ty +( +ut16_t + +ty +, + +30 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +31 +l2_phy_r_t + *)) + +33 i( +ty + = +ETHER_TYPE_IPv4 +) { + +34 +o_li +[ +IPv4_VAL +] = + +35 + `e_mloc +( +NULL +, ( +o_ck_ty +), + +36 +RTE_CACHE_LINE_SIZE +); + +37 +o_li +[ +IPv4_VAL +]-> +ty + =ype; + +38 +o_li +[ +IPv4_VAL +]-> +func + = func; + +41 i( +ty + = +ETHER_TYPE_ARP +) { + +42 +o_li +[ +ARP_VAL +] = + +43 + `e_mloc +( +NULL +, ( +o_ck_ty +), + +44 +RTE_CACHE_LINE_SIZE +); + +45 +o_li +[ +ARP_VAL +]-> +ty + =ype; + +46 +o_li +[ +ARP_VAL +]-> +func + = func; + +47 } i( +ty + = +ETHER_TYPE_IPv6 +) { + +48 +o_li +[ +IPv6_VAL +] = + +49 + `e_mloc +( +NULL +, ( +o_ck_ty +), + +50 +RTE_CACHE_LINE_SIZE +); + +51 +o_li +[ +IPv6_VAL +]-> +ty + =ype; + +52 +o_li +[ +IPv6_VAL +]-> +func + = func; + +55 + } +} + +64 + $l2_check_mac +( +e_mbuf + * +m +[ +IFM_BURST_SIZE +], +l2_phy_r_t + * +pt +, + +65 +ut8_t + +i +, +ut64_t + * +pkts_mask +, ut64_* +p_pkts_mask +, + +66 +ut64_t + * +v4_pkts_mask +, ut64_* +v6_pkts_mask +) + +68  +h_hdr + * +h += +NULL +; + +69 +ut16_t + +me_mac +=0; + +70 +ut16_t + +hty + = 0; + +72 i( +m +[ +i +] ! +NULL +) { + +73 +h + = + `e_pktmbuf_mtod +( +m +[ +i +],  +h_hdr + *); + +74 if( +h +) + +75 +hty + = + `e_be_to_u_16 +( +h +-> +h_ty +); + +76 i( +h + = +NULL +) { + +78 + `tf +("l2_check_mac: Ethernet Dest Addr NULL !!!\n"); + +81 +hty + = + `e_be_to_u_16 +( +h +-> +h_ty +); + +82 #i +L2_PROTO_DBG + + +83 + `tf +("%s => mbufkt dest macddr: %x:%x:%x:%x:%x:%x\n", + +84 +__FUNCTION__ +, +h +-> +d_addr +. +addr_bys +[0], + +85 +h +-> +d_addr +. +addr_bys +[1],th->d_addr.addr_bytes[2], + +86 +h +-> +d_addr +. +addr_bys +[3],th->d_addr.addr_bytes[4], + +87 +h +-> +d_addr +. +addr_bys +[5]); + +88 + `tf +("%=>܈maaddr: %x:%x:%x:%x:%x:%x\n", +__FUNCTION__ +, + +89 +pt +-> +maddr +[0],ort->macaddr[1],ort->macaddr[2], + +90 +pt +-> +maddr +[3],ort->macaddr[4],ort->macaddr[5]); + +94 +me_mac + = + +95 ( +is_me_h_addr + + +96 (& +h +-> +d_addr +, ( +h_addr + *) +pt +-> +maddr +) + +98 (( +is_brd_h_addr + + +99 (( +h_addr + *)& +h +-> +d_addr +) + +100 && ( +hty + = +ETHER_TYPE_ARP +))) + +101 || ( +hty + = +ETHER_TYPE_IPv6 + + +102 && +h +-> +d_addr +. +addr_bys +[0] == 0x33 + +103 && +h +-> +d_addr +. +addr_bys +[1] == 0x33)); + +105 i(! +me_mac +) { + +106 +ut64_t + +mp_mask + = 1LLU << +i +; + +107 * +pkts_mask + ^ +mp_mask +; + +108 + `e_pktmbuf_ +( +m +[ +i +]); + +109 +m +[ +i +] = +NULL +; + +110 } i(( +hty + = +ETHER_TYPE_IPv4 +&& +me_mac +) { + +111 +ut64_t + +mp_mask + = 1LLU << +i +; + +112 * +v4_pkts_mask + ^ +mp_mask +; + +113 } i(( +hty + = +ETHER_TYPE_ARP +&& +me_mac +) { + +114 +ut64_t + +mp_mask + = 1LLU << +i +; + +115 * +p_pkts_mask + ^ +mp_mask +; + +116 } i(( +hty + = +ETHER_TYPE_IPv6 +&& +me_mac +) { + +117 +ut64_t + +mp_mask + = 1LLU << +i +; + +118 * +v6_pkts_mask + ^ +mp_mask +; + +121 + `tf +("\n%s:_pkts_mask = %" +PRIu64 + ", ipv4_pkts_mask = %" PRIu64 + +122 ", ipv6_pkts_mask =%" +PRIu64 + ",kt-type = %x, sam_mac = %d\n", + +123 +__FUNCTION__ +, * +p_pkts_mask +, * +v4_pkts_mask +, * +v6_pkts_mask +, + +124 +hty +, +me_mac +); + +125 + } +} + +128 + $oc_hdr_cv +( +e_mbuf + ** +pkts_bur +, +ut16_t + +nb_rx +, + +129 +l2_phy_r_t + * +pt +) + +131 +ut8_t + +i +; + +132 +ut64_t + +pkts_mask + = 0; + +133 +ut64_t + +p_pkts_mask + = 0; + +134 +ut64_t + +v4_pkts_mask + = 0; + +135 +ut64_t + +v6_pkts_mask + = 0; + +140  +i + = 0; i < +nb_rx +; i++) { + +141 + `l2_check_mac +( +pkts_bur +, +pt +, +i +, & +pkts_mask +, & +p_pkts_mask +, + +142 & +v4_pkts_mask +, & +v6_pkts_mask +); + +144 i( +nb_rx +) { + +145 i( +p_pkts_mask +) { + +146 +o_li +[ +ARP_VAL +]-> + `func +( +pkts_bur +, +nb_rx +, + +147 +p_pkts_mask +, +pt +); + +148 +tf + + +151 i( +v4_pkts_mask +) { + +152 +tf + + +154 + `tf +("===b_rx:%u, ipv4_pkts_mask: %lu\n\n", +nb_rx +, + +155 +v4_pkts_mask +); + +156 +o_li +[ +IPv4_VAL +]-> + `func +( +pkts_bur +, +nb_rx +, + +157 +v4_pkts_mask +, +pt +); + +159 i( +v6_pkts_mask +) { + +160 +tf + + +162 + `tf +("===b_rx:%u, ipv6_pkts_mask: %lu\n\n", +nb_rx +, + +163 +v6_pkts_mask +); + +164 +o_li +[ +IPv6_VAL +]-> + `func +( +pkts_bur +, +nb_rx +, + +165 +v6_pkts_mask +, +pt +); + +168 + } +} + +171  +qid +) { + +175 +tf + + +177  +cur +-> +ty + ! +ETHER_TYPE_ARP + && cu! +NULL +) { + +178 +cur + = cur-> +xt +; + +180 i( +cur + ! +NULL +) { + +182 +tf + + +184 +cur +-> + `func +( +pkts_bur +, +nb_rx +, +pkts_mask +, +ptid +); + +187 +o_li +[ +ARP_VAL +]-> + `func +( +pkts_bur +, +nb_rx +, +p_pkts_mask +, + +188 +ptid +); + +194  +cur +-> +ty + ! +ETHER_TYPE_IPv4 + && cu! +NULL +) { + +195 +cur + = cur-> +xt +; + +197 i( +cur + ! +NULL +) { + +200 +cur +-> + `func +( +pkts_bur +, +nb_rx +, +v4_pkts_mask +, +ptid +); + +205 +o_li +[ +IPv4_VAL +]-> + `func +( +pkts_bur +, +nb_rx +, +v4_pkts_mask +, + +206 +ptid +); + +223 + `e_ex +( +EXIT_FAILURE +, "Ethertypeot found \n"); + +226 + } +} + + @VIL/l2l3_stack/l2_proto.h + +26 #ide +L2_PROTO_H + + +27  + #L2_PROTO_H + + + ) + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~ + +42  + ~ + +43  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~ + +50  + ~ + +51  + ~ + +52  + ~ + +53  + ~ + +54  + ~ + +55  + ~ + +56  + ~ + +57  + ~ + +58  + ~ + +59  + ~ + +60  + ~ + +61  + ~ + +62  + ~ + +63  + ~ + +64  + ~ + +65  + ~ + +66  + ~ + +67  + ~ + +68  + ~ + +69  + ~ + +70  + ~ + +71  + ~ + +74  + #IPv4_VAL + 0 + + ) + +75  + #ARP_VAL + 1 + + ) + +76  + #IPv6_VAL + 2 + + ) + +79  + #L2_PROTO_DBG + 1 + + ) + +84  + so_ck_ty + { + +85 +ut16_t + + mty +; + +86 (* + mfunc +( +e_mbuf + ** + mm +, +ut16_t + + mnb_pkts +, +ut64_t + + mpkt_mask +, +l2_phy_r_t + * + mpt +); + +87 } + g__e_che_igd +; + +98 +li_add_ty +( +ut16_t + +ty +, + +99 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +100 +l2_phy_r_t + *)); + +130 + `l2_check_mac +( +e_mbuf + * +m +[ +IFM_BURST_SIZE +], +l2_phy_r_t + * +pt +, + +131 +ut8_t + +pos +, +ut64_t + * +pkts_mask +, ut64_* +p_pkts_mask +, + +132 +ut64_t + * +v4_pkts_mask +, ut64_* +v6_pkts_mask +); + +147 + `oc_hdr_cv +( +e_mbuf + * +m +[ +IFM_BURST_SIZE +], +ut16_t + +nb_rx +, + +148 +l2_phy_r_t + * +pt +); + + @VIL/l2l3_stack/l3fwd_common.h + +22 #ide +L3FWD_COMMON_H + + +23  + #L3FWD_COMMON_H + + + ) + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +42  + ~ + +43  + ~ + +44  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~ + +50  + ~ + +51  + ~ + +52  + ~ + +53  + ~ + +54  + ~ + +55  + ~ + +56  + ~ + +57  + ~ + +58  + ~ + +59  + ~ + +60  + ~ + +61  + ~ + +62  + ~ + +63  + ~ + +64  + ~ + +65  + ~ + +66  + ~ + +67  + ~ + +68  + ~ + +69  + ~ + +70  + ~ + +71  + ~ + +72  + ~ + +73  + ~ + +74  + ~ + +75  + ~ + +76  + ~ + +77  + ~ + +78  + ~ + +79  + ~ + +80  + ~ + +85  + #MAX_ROUTES + 4 + + ) + +86  + #L3FWD_DEBUG + 1 + + ) + +87  + #MULTIPATH_FEAT + 1 + + ) + +94  +l3fwd_ +(); + +99  +puϋ_m4_b_rous +(); + +104  +puϋ_m6_b_rous +(); + +109  +puϋ_m_rous +(); + + @VIL/l2l3_stack/l3fwd_lpm4.c + +17  + ~"l3fwd_comm.h +" + +18  + ~"r.h +" + +19  + ~"l2_o.h +" + +20  + ~"l3fwd_m4.h +" + +21  + ~"l3fwd_m6.h +" + +22  + ~"lib_p.h +" + +23  + ~"lib_icmpv6.h +" + +24  + ~ + +29 * + gm4_b +; + +32  +e_hash + * + gl2_adj_hash_hd +; + +33  +e_hash + * + gfib_th_hash_hd +; + +35 +l3_s_t + + gs +; + +38 +ut8_t + + gnh_lks +[ +MAX_SUPPORTED_FIB_PATHS +][ +HASH_BUCKET_SIZE +] = + +87  + #META_DATA_OFFSET + 128 + + ) + +89  + #RTE_PKTMBUF_HEADROOM + 128 + + ) + +90  + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +91  + #ETH_HDR_SIZE + 14 + + ) + +92  + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +93  + #TCP_START + ( +IP_START + + 20) + + ) + +95  + $t_pkt +( +e_mbuf + * +pkt +) + +97  +i +; + +98  +size + = 14; + +99 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +ETHERNET_START +); + +101 + `tf +("Meta-data:\n"); + +102  +i + = 0; i < +size +; i++) { + +103 + `tf +("%02x ", +rd +[ +i +]); + +104 i(( +i + & 3) == 3) + +105 + `tf +("\n"); + +107 + `tf +("\n"); + +108 + `tf +("IPnd TCP/UDP headers:\n"); + +109 +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +IP_START +); + +110  +i + = 0; i < 40; i++) { + +111 + `tf +("%02x ", +rd +[ +i +]); + +112 i(( +i + & 3) == 3) + +113 + `tf +("\n"); + +116 + } +} + +118  +_oc_ty + * + go_ty +[2]; + +119  + $m_ +() + +123  +e_b_m_ms + +m_ms + = { + +124 . +me + = "LPMv4", + +125 . +n_rus + = +IPV4_L3FWD_LPM_MAX_RULES +, + +126 . +numb_tbl8s + = +IPV4_L3FWD_LPM_NUMBER_TBL8S +, + +127 . +ags + = 0, + +128 . +y_unique_size + = ( +fib_fo +), + +129 . +offt + = 128, + +133 +m4_b + = + +134 +e_b_m_s +. + `f_ +(& +m_ms +, + `e_sock_id +(), + +135 ( +fib_fo +)); + +136 i( +m4_b + = +NULL +) { + +137 + `tf +("Failedo create LPM IPV4able\n"); + +142  +e_hash_ms + +l2_adj_v4_ms + = { + +143 . +me + = "l2_ADJ_HASH", + +144 . +s + = 64, + +145 . +key_n + = ( +l2_adj_key_v4 +), + +146 . +hash_func + = +e_jhash +, + +147 . +hash_func__v + = 0, + +151 +l2_adj_hash_hd + = + `e_hash_ +(& +l2_adj_v4_ms +); + +153 i( +l2_adj_hash_hd + = +NULL +) { + +154 + `tf +("L2 ADJte_hash_create failed\n"); + +157 + `tf +("l2_adj_hash_hd %p\n\n", (*) +l2_adj_hash_hd +); + +161  +e_hash_ms + +fib_th_v4_ms + = { + +162 . +me + = "FIB_PATH_HASH", + +163 . +s + = 64, + +164 . +key_n + = ( +fib_th_key_v4 +), + +165 . +hash_func + = +e_jhash +, + +166 . +hash_func__v + = 0, + +170 +fib_th_hash_hd + = + `e_hash_ +(& +fib_th_v4_ms +); + +172 i( +fib_th_hash_hd + = +NULL +) { + +173 + `tf +("FIBathte_hash_create failed\n"); + +177 + } +} + +179  + $m4_b_rou_add +( +routg_fo + * +da +) + +182  +routg_fo + * +fib + = +da +; + +183  +e_b_m_key + +m_key + = { + +184 . + + = +fib +-> +d__addr +, + +185 . +dth + = +fib +->depth, + +187 +ut8_t + +i +; + +188  +Tٮ_rou_cou +; + +189  +fib_fo + +y +; + +190 +y +. +d__addr + = + `e_bsw32 +( +fib +->dst_ip_addr); + +191 +y +. +dth + = +fib +->depth; + +192 +y +. +fib_nh_size + = +fib +->fib_nh_size; + +194 #i +MULTIPATH_FEAT + + +195 i( +y +. +fib_nh_size + =0 ||ry.fib_nh_siz> +MAX_FIB_PATHS +) + +197 i( +y +. +fib_nh_size + != 1) + +200 + `tf +("Route can't be configured!!,ntry.fib_nh_size = %d\n", + +201 +y +. +fib_nh_size +); + +205 #i +MULTIPATH_FEAT + + +206  +i + = 0; i < +y +. +fib_nh_size +; i++) + +208  +i + = 0; i < 1; i++) + +211  +fib_th + * +fib_th_addr + = +NULL +; + +213 +fib_th_addr + = + +214 + `puϋ_fib_th +( +fib +-> +nh__addr +[ +i +], fib-> +out_pt +[i]); + +215 i( +fib_th_addr +) { + +217 +y +. +th +[ +i +] = +fib_th_addr +; + +218 + `tf +("Fib info forhe Dest IP"); + +219 + `tf +(" : %" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +220 "/%" +PRIu8 + + +222 ( +fib +-> +d__addr + & 0xFF000000) >> 24, + +223 ( +fib +-> +d__addr + & 0x00FF0000) >> 16, + +224 ( +fib +-> +d__addr + & 0x0000FF00) >> 8, + +225 ( +fib +-> +d__addr + & 0x000000FF), fib-> +dth +, + +226 +fib_th_addr +, + +227 (*) +y +. +th +[ +i +]-> +l2_adj_r +); + +229 + `tf +("Fib inff܁hDe IP :\ +%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 "/%" +PRIu8 + " => fib_th Addr: NULL \n", ( +fib +-> +d__addr + & 0xFF000000>> 24, (fib->d__add& 0x00FF0000>> 16, (fib->d__add& 0x0000FF00>> 8, (fib->d__add& 0x000000FF), fib-> +dth +); + +231 +y +. +th +[ +i +] = +NULL +; + +235  +key_found +, +t +; + +236 * +y_r +; + +237 +t + = + +238 +e_b_m_s +. + `f_add +( +m4_b +, (*)& +m_key +, & +y +, + +239 & +key_found +, & +y_r +); + +241 i( +t + != 0) { + +242 + `tf +("Failedo Add IPoute\n"); + +245 +Tٮ_rou_cou +++; + +246 + `tf +("Tٮ Roud Added : %u, Key_found: %d\n", +Tٮ_rou_cou +, + +247 +key_found +); + +248 + `tf +("Adding Routeo LPMable...\n"); + +250 + `tf +("Iterate with Cuckoo Hashable\n"); + +251 + `e_cuckoo_hash_b +(); + +253 + } +} + +255  + $m4_b_rou_de +( +ut32_t + +d_ +, +ut8_t + +dth +) + +258  +e_b_m_key + +m_key + = { + +259 . + + = +d_ +, + +260 . +dth + = depth, + +263  +key_found +, +t +; + +264 * +y + = +NULL +; + +266 +y + = + `e_zmloc +( +NULL +, 512, +RTE_CACHE_LINE_SIZE +); + +269 +t + = + +270 +e_b_m_s +. + `f_de +( +m4_b +, & +m_key +, & +key_found +, +y +); + +272 i( +t +) { + +273 + `tf +("Failedo Delete IPoute from LPMv4able\n"); + +277 + `tf +("Deletedoute from LPMable (IPv4 Address = %" + +278 +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +279 "/%u , key_found = %d\n", ( +m_key +. + + & 0xFF000000) >> 24, + +280 ( +m_key +. + + & 0x00FF0000) >> 16, (lpm_key.ip & 0x0000FF00) >> 8, + +281 ( +m_key +. + + & 0x000000FF),pm_key. +dth +, +key_found +); + +284 + `move_fib_l2_adj_y +( +y +); + +285 + `e_ +( +y +); + +286 + `tf +("Iterate with Cuckoo Hashable\n"); + +287 + `e_cuckoo_hash_b +(); + +289 + } +} + +292 + $m4_b_lookup +( +e_mbuf + ** +pkts_bur +, +ut16_t + +nb_pkts +, + +293 +ut64_t + +pkts_mask +, + +294 +l2_phy_r_t + * +pt_r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +295 +ut64_t + * +h_mask +) + +298  +routg_b_y + * +v4_s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +299 +ut64_t + +lookup_h_mask_v4 + = 0; + +300  +us +; + +301 +ut64_t + +pkts_key_mask + = +pkts_mask +; + +302 +ut64_t + +lookup_miss_mask_v4 + = +pkts_mask +; + +304  +ut64_t + +_cou +; + +305  +ut64_t + +rcvd_cou +; + +306 +rcvd_cou + + +nb_pkts +; + +307 i( +L3FWD_DEBUG +) { + +308 +tf + + +310 +nb_pkts +, +rcvd_cou +, (*) +pkts_mask +); + +312 +ut32_t + +d_addr_offt + = + +313 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +315 ; +pkts_key_mask +;) { + +317 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_key_mask +); + +318 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +319 +pkts_key_mask + &~ +pkt_mask +; + +320  +e_mbuf + * +mbuf + = +pkts_bur +[ +pos +]; + +321 +ut32_t + * +m_key + = +NULL +; + +322 +ut32_t + * +d_addr + = +NULL +; + +323 +m_key + = ( +ut32_t + * + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, 128); + +324 +d_addr + = + +325 ( +ut32_t + * + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, + +326 +d_addr_offt +); + +327 * +m_key + = * +d_addr +; + +328 i( +L3FWD_DEBUG +) { + +330 + `tf +("Rcvd Pakt (IPv4 Address = %" + +331 +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 ")\n", + +332 ( + `e_u_to_be_32 +(* +m_key +) & 0xFF000000) >> 24, + +333 ( + `e_u_to_be_32 +(* +m_key +) & 0x00FF0000) >> 16, + +334 ( + `e_u_to_be_32 +(* +m_key +) & 0x0000FF00) >> 8, + +335 ( + `e_u_to_be_32 +(* +m_key +) & 0x000000FF)); + +340 i( +L3FWD_DEBUG +) + +341 + `tf +("\nIPV4 Lookup Mask Before = %p\n", + +342 (*) +lookup_h_mask_v4 +); + +343 +us + = + +344 +e_b_m_s +. + `f_lookup +( +m4_b +, +pkts_bur +, +pkts_mask +, + +345 & +lookup_h_mask_v4 +, + +346 (**) +v4_s +); + +348 i( +us +) { + +349 + `tf +("LPM Lookup failed for IPoute\n"); + +353 +lookup_miss_mask_v4 + =ookup_miss_mask_v4 & (~ +lookup_h_mask_v4 +); + +354 i( +L3FWD_DEBUG +) { + +355 +tf + + +357 (*) +lookup_h_mask_v4 +, + +358 (*) +lookup_miss_mask_v4 +); + +361 ; +lookup_miss_mask_v4 +;) { + +363 +ut8_t + +pos + = (ut8_t + `__but_z +( +lookup_miss_mask_v4 +); + +364 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +365 +lookup_miss_mask_v4 + &~ +pkt_mask +; + +366 + `e_pktmbuf_ +( +pkts_bur +[ +pos +]); + +367 +pkts_bur +[ +pos +] = +NULL +; + +368 +s +. +nb_l3_dr_pkt +++; + +369 i( +L3FWD_DEBUG +) + +370 + `tf +("\n DROP PKT IPV4 Lookup_miss_Mask = %p\n", + +371 (*) +lookup_miss_mask_v4 +); + +374 * +h_mask + = +lookup_h_mask_v4 +; + +375 ; +lookup_h_mask_v4 +;) { + +377 +ut8_t + +pos + = (ut8_t + `__but_z +( +lookup_h_mask_v4 +); + +378 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +379 +lookup_h_mask_v4 + &~ +pkt_mask +; + +380  +e_mbuf + * +pkt + = +pkts_bur +[ +pos +]; + +382  +fib_fo + * +y + = (fib_f*) +v4_s +[ +pos +]; + +384 #i +MULTIPATH_FEAT + + +386 +ut8_t + +ecmp_th + = 0; + +387 +ecmp_th + = + `_hash_ld_b +( +pkts_bur +[ +pos +]); + +388 +ut8_t + +ed_th + = 0; + +389  +fib_th + *fib_th = +NULL +; + +390 i((( +y +-> +fib_nh_size + != 0) + +391 && ( +y +-> +fib_nh_size + - 1< +MAX_SUPPORTED_FIB_PATHS +) + +392 && (( +ecmp_th + !0&& (ecmp_th - 1< +HASH_BUCKET_SIZE +)) + +393 +ed_th + = + +394 +nh_lks +[ +y +-> +fib_nh_size + - 1][ +ecmp_th + - 1]; + +395 i( +ed_th + < +MAX_FIB_PATHS +) + +396 +fib_th + = +y +-> +th +[ +ed_th +]; + +397 i( +L3FWD_DEBUG +) { + +398 +tf + + +400 +y +-> +fib_nh_size +, +ecmp_th +, +ed_th +); + +403  +fib_th + *fib_th = +y +-> +th +[0]; + +406 i( +fib_th + = +NULL +) { + +407 + `e_pktmbuf_ +( +pkt +); + +408 +pkts_bur +[ +pos +] = +NULL +; + +409 +s +. +nb_l3_dr_pkt +++; + +410 * +h_mask + &~ +pkt_mask +; + +411 i( +L3FWD_DEBUG +) + +412 +tf + + +417 i( +fib_th +-> +l2_adj_r +-> +ags + = +L2_ADJ_UNRESOLVED +) { + +418 i( +fib_th +-> +l2_adj_r +-> +phy_pt +-> +v4_li + ! +NULL +) + +419 + `que_p +( +fib_th +-> +l2_adj_r +-> +phy_pt +-> + +420 +pmdid +, +fib_th +-> +nh_ +); + +422 + `e_pktmbuf_ +( +pkts_bur +[ +pos +]); + +423 +pkts_bur +[ +pos +] = +NULL +; + +424 * +h_mask + &~ +pkt_mask +; + +425 i( +L3FWD_DEBUG +) + +426 +tf + + +432 +ut8_t + * +h_de + = + +433 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +434 +ut8_t + * +h_c + = + +435 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM + + 6); + +436 i( +L3FWD_DEBUG +) { + +437 +tf + + +440 +h_de +[0],th_de[1],th_de[2],th_de[3],th_de[4],th_de[5], +h_c +[0],th_src[1], + +441 +h_c +[2],th_src[3],th_src[4],th_src[5]); + +444 + `memy +( +h_de +, +fib_th +-> +l2_adj_r +-> +l2_rg +, ( +h_addr +) * 2); + +445 i( +L3FWD_DEBUG +) { + +446  +k + = 0; + +447  +k + = 0; k < 14; k++) { + +448 + `tf +("%02x ", + +449 +fib_th +-> +l2_adj_r +-> +l2_rg +[ +k +]); + +450 + `tf +("\n"); + +452 +tf + + +453 ("MAC AFTER DST MAC %02x:%02x:%02x:%02x:%02x:%02x, \ + MAC %02x:%02x:%02x:%02x:%02x:%02x\n", +h_de +[0],th_de[1],th_de[2],th_de[3],th_de[4],th_de[5], +h_c +[0],th_src[1],th_src[2],th_src[3],th_src[4],th_src[5]); + +456 +pt_r +[ +pos +] = +fib_th +-> +l2_adj_r +-> +phy_pt +; + +457 i( +L3FWD_DEBUG +) { + +458 + `tf +("l3fwd_lookup API!!!!\n"); + +462 +_cou +++; + +463 +s +. +nb_tx_l3_pkt +++; + +464 i( +L3FWD_DEBUG +) + +465 +tf + + +467 +fib_th +-> +out_pt +, +_cou +); + +470 + } +} + +472  + $is_vid_v4_pkt +( +v4_hdr + * +pkt +, +ut32_t + +lk_n +) + +474 i( +lk_n + < ( +v4_hdr +)) + +476 i((( +pkt +-> +vsi_ihl +) >> 4) != 4) + +478 i(( +pkt +-> +vsi_ihl + & 0xf) < 5) + +480 i( + `e_u_to_be_16 +( +pkt +-> +tٮ_ngth +< ( +v4_hdr +)) + +483 + } +} + +486 + $g_de_mac_f_xth +( +ut32_t + +xt_h_ +, + +487 +ut8_t + +out_phy_pt +,  +h_addr + * +hw_addr +) + +489  +p_y_da + * +p_da + = +NULL +; + +490  +p_key_v4 + +p_key +; + +491 +p_key +. +pt_id + = +out_phy_pt +; + +492 +p_key +. + + = +xt_h_ +; + +494 +p_da + = + `ve_p_y +( +p_key +); + +495 i( +p_da + = +NULL +) { + +496 + `tf +("ARPntry isot found for ip %x,ort %d\n", + +497 +xt_h_ +, +out_phy_pt +); + +500 + `h_addr_cy +(& +p_da +-> +h_addr +, +hw_addr +); + +502 + } +} + +504  +l2_adj_y + * + $ve_l2_adj_y +( +l2_adj_key_v4 + +l2_adj_key +) + +506  +l2_adj_y + * +t_l2_adj_da + = +NULL +; + +507 +l2_adj_key +. +fr1 + = 0; + +508 +l2_adj_key +. +fr2 + = 0; + +509 +l2_adj_key +. +fr3 + = 0; + +511  +t + = + +512 + `e_hash_lookup_da +( +l2_adj_hash_hd +, & +l2_adj_key +, + +513 (**)& +t_l2_adj_da +); + +514 i( +t + < 0) { + +515 #ifde +L2L3_DEBUG + + +516 +tf + + +518 +t +, +EINVAL +, +ENOENT +); + +520  +NULL +; + +522 #ifde +L2L3_DEBUG + + +523 +tf + + +525 +t +, +EINVAL +, +ENOENT +); + +527  +t_l2_adj_da +; + +529 + } +} + +531  + $move_fib_l2_adj_y +(* +y +) + +533  +fib_fo + +y1 +; + +534 + `memy +(& +y1 +, +y +, ( +fib_fo +)); + +536  +fib_th + * +fib_th_addr + = +y1 +. +th +[0]; + +537 i( +fib_th_addr +-> +fcou + > 1) { + +538 +tf + + +540 +fib_th_addr +-> +nh_ +, fib_th_addr-> +out_pt +, + +541 +fib_th_addr +-> +fcou +); + +542 +fib_th_addr +-> +fcou +--; + +543 + `tf +("AFTER fib_pathntry,h_ip %x,ort %d,efcount %d\n", + +544 +fib_th_addr +-> +nh_ +, fib_th_addr-> +out_pt +, + +545 +fib_th_addr +-> +fcou +); + +549  +l2_adj_y + * +adj_addr + = +NULL +; + +550 +adj_addr + = +fib_th_addr +-> +l2_adj_r +; + +552 i( +adj_addr + ! +NULL +) { + +554  +l2_adj_key_v4 + +l2_adj_key + = { + +555 . +Next_h_ + = +fib_th_addr +-> +nh_ +, + +556 . +out_pt_id + = +fib_th_addr +-> +out_pt +, + +558 #ifde +L3FWD_DEBUG + + +559 +tf + + +561 +l2_adj_key +. +Next_h_ +,2_adj_key. +out_pt_id +, + +562 +adj_addr +-> +fcou +); + +565 + `e_hash_d_key +( +l2_adj_hash_hd +, & +l2_adj_key +); + +566 + `e_ +( +adj_addr +); + +567 +adj_addr + = +NULL +; + +570  +fib_th_key_v4 + +th_key + = { + +571 . +nh_ + = +fib_th_addr +->nh_ip, + +572 . +out_pt + = +fib_th_addr +->out_port, + +575 +tf + + +577 +fib_th_addr +-> +nh_ +, fib_th_addr-> +out_pt +, + +578 +fib_th_addr +-> +fcou +); + +579 + `e_hash_d_key +( +fib_th_hash_hd +, & +th_key +); + +580 + `e_ +( +fib_th_addr +); + +581 +fib_th_addr + = +NULL +; + +583 + } +} + +585  +l2_adj_y + * + $puϋ_l2_adj +( +ut32_t + +addr +, +ut8_t + +ptid +) + +588  +l2_adj_key_v4 + +l2_adj_key +; + +589 +l2_adj_key +. +out_pt_id + = +ptid +; + +590 +l2_adj_key +. +Next_h_ + = +addr +; + +591 +l2_adj_key +. +fr1 + = 0; + +592 +l2_adj_key +. +fr2 + = 0; + +593 +l2_adj_key +. +fr3 + = 0; + +595  +h_addr + +h_d +; + +596  +l2_adj_y + * +adj_da + = +NULL +; + +599 +adj_da + = + `ve_l2_adj_y +( +l2_adj_key +); + +601 i( +adj_da +) { + +603 +tf + + +605 +l2_adj_key +. +Next_h_ +,2_adj_key. +out_pt_id +, + +606 +adj_da +-> +fcou +,dj_data); + +607 + `h_addr_cy +(& +adj_da +-> +h_addr +, & +h_d +); + +608 +adj_da +-> +fcou +++; + +609 +tf + + +611 +l2_adj_key +. +Next_h_ +,2_adj_key. +out_pt_id +, + +612 +adj_da +-> +fcou +,dj_data); + +613  +adj_da +; + +616  +h_addr + +h_c +; + +617 +l2_phy_r_t + * +pt +; + +619 +pt + = + `ifm_g_pt +( +ptid +); + +621 i( +pt + ! +NULL +) { + +622 + `memy +(& +h_c +, & +pt +-> +maddr +, ( +h_addr +)); + +623 * +p + = (*) +h_c +. +addr_bys +; + +624 + `tf +("S-MAC %x:%x:%x:%x:%x:%x\n\r", +p +[0],[1],[2],[3], + +625 +p +[4],[5]); + +627 +ut32_t + +size + = + +628 + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_y +)); + +629 +adj_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +630 i( +adj_da + = +NULL +) { + +631 + `tf +("L2 Adjacency memoryllocation failed !\n"); + +632  +NULL +; + +635 +adj_da +-> +out_pt_id + = +ptid +; + +636 +adj_da +-> +Next_h_ + = +addr +; + +637 +adj_da +-> +fcou +++; + +639 +adj_da +-> +phy_pt + = +pt +; + +640 + `memt +(& +adj_da +-> +h_addr +, 0, ( +h_addr +)); + +641 + `memt +(& +adj_da +-> +l2_rg +, 0, 256); + +644 + `e_hash_add_key_da +( +l2_adj_hash_hd +, & +l2_adj_key +, + +645 +adj_da +); + +646 #ifde +L2L3_DEBUG + + +647 +tf + + +649 +adj_da +); + +652 #ifde +L2L3_DEBUG + + +653 + `tf +("\PORT %u IS DOWN...\n", +ptid +); + +655  +NULL +; + +658 i( + `g_de_mac_f_xth +( +addr +, +ptid +, & +h_d +)) { + +659 * +p + = (*) +h_d +. +addr_bys +; + +660 +tf + + +662 +p +[0],[1],[2],[3],[4],[5]); + +664 + `memy +( +adj_da +-> +l2_rg +, & +h_d +, ( +h_addr +)); + +665 + `memy +(& +adj_da +-> +l2_rg +[6], & +h_c +, + +666 ( +h_addr +)); + +669 + `h_addr_cy +(& +h_d +, & +adj_da +-> +h_addr +); + +670 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +672 +adj_da +-> +ags + = +L2_ADJ_UNRESOLVED +; + +673 +tf + + +676  +adj_da +; + +677 + } +} + +679  +fib_th + * + $puϋ_fib_th +( +ut32_t + +nh_ +, +ut8_t + +ptid +) + +682  +fib_th_key_v4 + +th_key +; + +683 +th_key +. +out_pt + = +ptid +; + +684 +th_key +. +nh_ + =h_ip; + +685 +th_key +. +fr1 + = 0; + +686 +th_key +. +fr2 + = 0; + +687 +th_key +. +fr3 + = 0; + +689  +fib_th + * +fib_da + = +NULL +; + +692 +fib_da + = + `ve_fib_th_y +( +th_key +); + +694 i( +fib_da +) { + +697 +tf + + +699 +fib_da +-> +nh_ +, fib_da-> +out_pt +, fib_da-> +fcou +, + +700 +fib_da +); + +701 +fib_da +-> +fcou +++; + +702 +fib_da +-> +l2_adj_r +-> +fcou +++; + +703 +tf + + +705 +fib_da +-> +nh_ +, fib_da-> +out_pt +, fib_da-> +fcou +); + +706  +fib_da +; + +708 + `tf +("fib_pathntry Doesn't Exists.......\n"); + +711 +fib_da + = +NULL +; + +712  +l2_adj_y + * +l2_adj_r + = +NULL +; + +713 +l2_adj_r + = + `puϋ_l2_adj +( +nh_ +, +ptid +); + +715 i( +l2_adj_r +) { + +717 +ut32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +fib_th +)); + +718 +fib_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +720 +fib_da +-> +out_pt + = +ptid +; + +721 +fib_da +-> +nh_ + =h_ip; + +722 +fib_da +-> +fcou +++; + +723 +fib_da +-> +l2_adj_r + =2_adj_ptr; + +725 + `tf +("%s: g܈da%u %d\n\r", +__FUNCTION__ +, +ptid +, + +726 +__LINE__ +); + +728  +us +; + +729 +us + = + +730 + `e_hash_add_key_da +( +fib_th_hash_hd +, & +th_key +, + +731 +fib_da +); + +732 i( +us +) { + +733 +tf + + +735 +fib_da +-> +nh_ +, fib_da-> +out_pt +, + +736 +fib_da +-> +fcou +); + +738 + `e_ +( +fib_da +); + +740 +tf + + +742 +fib_da +-> +nh_ +, fib_da-> +out_pt +, + +743 +fib_da +-> +fcou +); + +744 +tf + + +746 +l2_adj_r +, +fib_da +, fib_data->l2_adj_ptr); + +747 +tf + + +749 +l2_adj_r +, +fib_da +); + +750  +fib_da +; + +753 +tf + + +756  +NULL +; + +757 + } +} + +759  +fib_th + * + $ve_fib_th_y +( +fib_th_key_v4 + +th_key +) + +761 + `tf +("FIB PATH f NExtHOP IP : %x,܈:%u\n", +th_key +. +nh_ +, + +762 +th_key +. +out_pt +); + +764  +fib_th + * +t_fib_th_da + = +NULL +; + +765  +t + = + +766 + `e_hash_lookup_da +( +fib_th_hash_hd +, & +th_key +, + +767 (**)& +t_fib_th_da +); + +768 i( +t + < 0) { + +769 +tf + + +771 +t +, +EINVAL +, +ENOENT +); + +772  +NULL +; + +774 + `tf +("FIB PATH ALREADY Exists for NExtHOP IP: %x,ort: %u\n", + +775 +th_key +. +nh_ +,h_key. +out_pt +); + +776  +t_fib_th_da +; + +778 + } +} + +780  + $e_cuckoo_hash_b +() + +782 cڡ * +xt_key +; + +783 * +xt_da +; + +784 +ut32_t + + + = 0; + +786 + `tf +("\n\t\t\t FIB_path Cacheable...."); + +787 +tf + + +789 + `tf +("\n\tNextHop IP Port Refcount2_adj_ptr_addrress\n"); + +790 +tf + + +793  +e_hash_e + + +794 ( +fib_th_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= 0) { + +795  +fib_th + * +tmp_da + = (fib_th *) +xt_da +; + +796  +fib_th_key_v4 + +tmp_key +; + +797 + `memy +(& +tmp_key +, +xt_key +, (tmp_key)); + +798 + `tf +("\%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +800 ( +tmp_da +-> +nh_ + & 0xFF000000) >> 24, + +801 ( +tmp_da +-> +nh_ + & 0x00FF0000) >> 16, + +802 ( +tmp_da +-> +nh_ + & 0x0000FF00) >> 8, + +803 ( +tmp_da +-> +nh_ + & 0x000000FF),mp_da-> +out_pt +, + +804 +tmp_da +-> +fcou +,mp_da-> +l2_adj_r +); + +807 + + = 0; + +809 + `tf +("\n\t\t\t L2 ADJ Cacheable....."); + +810 +tf + + +812 +tf + + +814 +tf + + +817  +e_hash_e + + +818 ( +l2_adj_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= 0) { + +819  +l2_adj_y + * +l2_da + = (l2_adj_y *) +xt_da +; + +820  +l2_adj_key_v4 + +l2_key +; + +821 + `memy +(& +l2_key +, +xt_key +, (l2_key)); + +822 + `tf +("\%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +824 ( +l2_da +-> +Next_h_ + & 0xFF000000) >> 24, + +825 ( +l2_da +-> +Next_h_ + & 0x00FF0000) >> 16, + +826 ( +l2_da +-> +Next_h_ + & 0x0000FF00) >> 8, + +827 ( +l2_da +-> +Next_h_ + & 0x000000FF), + +828 +l2_da +-> +out_pt_id +,2_da-> +l2_rg +[0], + +829 +l2_da +-> +l2_rg +[1],2_data->l2_string[2], + +830 +l2_da +-> +l2_rg +[3],2_data->l2_string[4], + +831 +l2_da +-> +l2_rg +[5],2_data->l2_string[6], + +832 +l2_da +-> +l2_rg +[7],2_data->l2_string[8], + +833 +l2_da +-> +l2_rg +[9],2_data->l2_string[10], + +834 +l2_da +-> +l2_rg +[11],2_da-> +phy_pt +); + +836 + } +} + +838  + $t_l3_s +() + +840 + `tf +("==============================================\n"); + +841 + `tf +("\t\t L3 STATISTICS \t\n"); + +842 + `tf +("==============================================\n"); + +843 + `tf +(" Num oReived L3 Pkt : %lu\n", +s +. +nb_rx_l3_pkt +); + +844 + `tf +(" Num oDrݳd L3 Pkt : %lu\n", +s +. +nb_l3_dr_pkt +); + +845 + `tf +(" Num oTnsmd L3 Pkt : %lu\n", +s +. +nb_tx_l3_pkt +); + +846 + `tf +(" Num oICMP PktRcvdL3 : %lu\n", +s +. +nb_rx_l3_icmp_pkt +); + +847 + `tf +(" Num oICMP PktTxICMP : %lu\n", +s +. +nb_tx_l3_icmp_pkt +); + +848 +s +. +tٮ_nb_rx_l3_pkt + = sts. +nb_rx_l3_icmp_pkt + + sts. +nb_rx_l3_pkt +; + +849 +s +. +tٮ_nb_tx_l3_pkt + = sts. +nb_tx_l3_icmp_pkt + + sts. +nb_tx_l3_pkt +; + +850 + `tf +(" Total Num of Rcvdktst L3: %lu\n", + +851 +s +. +tٮ_nb_rx_l3_pkt +); + +852 + `tf +(" Total Num of Sentktst L3: %lu\n", + +853 +s +. +tٮ_nb_tx_l3_pkt +); + +854 + } +} + +857 + $_lol_cks_oss +( +e_mbuf + ** +pkt_bur +, +ut16_t + +nb_rx +, + +858 +ut64_t + +icmp_pkt_mask +, +l2_phy_r_t + * +pt +) + +860 + `oss_picmp_pkt_r +( +pkt_bur +, +nb_rx +, +icmp_pkt_mask +, +pt +); + +861 + } +} + +864 + $_fwd_div +( +e_mbuf + ** +pkt_bur +, +ut16_t + +nb_pkts +, + +865 +ut64_t + +v4_fwd_pkts_mask +, +l2_phy_r_t + * +pt +) + +867 i( +L3FWD_DEBUG +) { + +868 +tf + + +870 +nb_pkts +, +pt +-> +pmdid +); + +872 +ut64_t + +pkts_f_oss + = +v4_fwd_pkts_mask +; + +874  +v4_hdr + *ipv4_hdr; + +875 +l2_phy_r_t + * +pt_r +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +876 +ut64_t + +h_mask + = 0; + +878 ; +pkts_f_oss +;) { + +880 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_f_oss +); + +881 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +882 +pkts_f_oss + &~ +pkt_mask +; + +883 +v4_hdr + = + +884 + `e_pktmbuf_mtod_offt +( +pkt_bur +[ +pos +],  +v4_hdr + *, + +885 ( +h_hdr +)); + +887 i( + `is_vid_v4_pkt +( +v4_hdr +, +pkt_bur +[ +pos +]-> +pkt_n +) < 0) { + +888 + `e_pktmbuf_ +( +pkt_bur +[ +pos +]); + +889 +pkt_bur +[ +pos +] = +NULL +; + +890 +v4_fwd_pkts_mask + &~(1LLU << +pos +); + +891 +nb_pkts +--; + +892 +s +. +nb_l3_dr_pkt +++; + +896 i( +L3FWD_DEBUG +) { + +897 +tf + + +899 +nb_pkts +, +v4_fwd_pkts_mask +); + +903 + `m4_b_lookup +( +pkt_bur +, +nb_pkts +, +v4_fwd_pkts_mask +, +pt_r +, + +904 & +h_mask +); + +906 ; +h_mask +;) { + +908 +ut8_t + +pos + = (ut8_t + `__but_z +( +h_mask +); + +909 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +910 +h_mask + &~ +pkt_mask +; + +912 +pt_r +[ +pos +]-> + `sm_sg_pkt +(port_ptr[pos], + +913 +pkt_bur +[ +pos +]); + +916 + } +} + +919 + $l3_oc_ty_add +( +ut8_t + +oc_ty +, + +920 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +921 +l2_phy_r_t + * +pt +)) + +923  +oc_ty +) { + +924  +IPPROTO_ICMP +: + +925 +o_ty +[ +IP_LOCAL +] = + +926 + `e_mloc +( +NULL +, ( +_oc_ty +), + +927 +RTE_CACHE_LINE_SIZE +); + +928 +o_ty +[ +IP_LOCAL +]-> +oc_ty + =rotocol_type; + +929 +o_ty +[ +IP_LOCAL +]-> +func + = func; + +932  +IPPROTO_TCP +: + +933  +IPPROTO_UDP +: + +934 +o_ty +[ +IP_REMOTE +] = + +935 + `e_mloc +( +NULL +, ( +_oc_ty +), + +936 +RTE_CACHE_LINE_SIZE +); + +937 +o_ty +[ +IP_REMOTE +]-> +oc_ty + =rotocol_type; + +938 +o_ty +[ +IP_REMOTE +]-> +func + = func; + +943 + } +} + +945  + $l3fwd_rx_v4_cks +( +e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +946 +ut64_t + +vid_pkts_mask +, +l2_phy_r_t + * +pt +) + +948 i( +L3FWD_DEBUG +) { + +949 +tf + + +951 +nb_pkts +, +pt +-> +pmdid +); + +953 +ut64_t + +pkts_f_oss + = +vid_pkts_mask +; + +955  +v4_hdr + *ipv4_hdr; + +956 +ut32_t + +cfigu_pt_ + = 0; + +957 +ut64_t + +icmp_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +958 +ut64_t + +v4_fwd_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +959 +ut16_t + +nb_icmp_pkt + = 0; + +960 +ut16_t + +nb_l3_pkt + = 0; + +962 i( +pt +-> +v4_li + ! +NULL +) + +963 +cfigu_pt_ + = + +964 ( +ut32_t +((( +v4li_t + *( +pt +-> +v4_li +))-> +addr +); + +966 ; +pkts_f_oss +;) { + +968 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_f_oss +); + +969 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +970 +pkts_f_oss + &~ +pkt_mask +; + +971 +v4_hdr + = + +972 + `e_pktmbuf_mtod_offt +( +m +[ +pos +],  +v4_hdr + *, + +973 ( +h_hdr +)); + +975 i(( +v4_hdr +-> +xt_o_id + = +IPPROTO_ICMP +) + +976 && ( +v4_hdr +-> +d_addr + = +cfigu_pt_ +)) { + +977 +v4_fwd_pkts_mask + &~ +pkt_mask +; + +978 +s +. +nb_rx_l3_icmp_pkt +++; + +979 +nb_icmp_pkt +++; + +981 +icmp_pkts_mask + &~ +pkt_mask +; + +982 +s +. +nb_rx_l3_pkt +++; + +983 +nb_l3_pkt +++; + +987 i( +icmp_pkts_mask +) { + +988 i( +L3FWD_DEBUG +) + +989 +tf + + +991 +o_ty +[ +IP_LOCAL +]-> + `func +( +m +, +nb_icmp_pkt +, +icmp_pkts_mask +, + +992 +pt +); + +995 i( +v4_fwd_pkts_mask +) { + +996 i( +L3FWD_DEBUG +) + +997 +tf + + +999 +o_ty +[ +IP_REMOTE +]-> + `func +( +m +, +nb_l3_pkt +, + +1000 +v4_fwd_pkts_mask +, +pt +); + +1002 + } +} + +1005 + $sve_l2_adj +( +ut32_t + +xth_ +, +ut8_t + +out_pt_id +, + +1006 cڡ  +h_addr + * +hw_addr +) + +1008  +l2_adj_key_v4 + +l2_adj_key + = { + +1009 . +Next_h_ + = +xth_ +, + +1010 . +out_pt_id + = out_port_id, + +1014  +l2_adj_y + * +adj_da + = + `ve_l2_adj_y +( +l2_adj_key +); + +1016 i( +adj_da +) { + +1018 +tf + + +1020 +l2_adj_key +. +Next_h_ +,2_adj_key. +out_pt_id +, + +1021 +adj_da +-> +fcou +,dj_data); + +1023 i( +adj_da +-> +ags + = +L2_ADJ_UNRESOLVED + + +1024 || + `memcmp +( +hw_addr +, & +adj_da +-> +h_addr +, + +1025 ( +h_addr +))) { + +1026 + `memy +( +adj_da +-> +l2_rg +, +hw_addr +, ( +h_addr +)); + +1027 + `memy +(& +adj_da +-> +l2_rg +[6], + +1028 & +adj_da +-> +phy_pt +-> +maddr +, + +1029 ( +h_addr +)); + +1032 + `h_addr_cy +( +hw_addr +, & +adj_da +-> +h_addr +); + +1033 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +1039 +l2_phy_r_t + * +pt +; + +1040 +pt + = + `ifm_g_pt +( +out_pt_id +); + +1041 i( +pt + ! +NULL +) { + +1043 +ut32_t + +size + = + +1044 + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_y +)); + +1045 +adj_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1046 i( +adj_da + = +NULL +) { + +1047 + `tf +("L2 Adjacency memoryllocation failed !\n"); + +1051 +adj_da +-> +out_pt_id + = out_port_id; + +1052 +adj_da +-> +Next_h_ + = +xth_ +; + +1053 +adj_da +-> +phy_pt + = +pt +; + +1055 + `memy +( +adj_da +-> +l2_rg +, +hw_addr +, ( +h_addr +)); + +1056 + `memy +(& +adj_da +-> +l2_rg +[6], &adj_da-> +phy_pt +-> +maddr +, + +1057 ( +h_addr +)); + +1060 + `h_addr_cy +( +hw_addr +, & +adj_da +-> +h_addr +); + +1061 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +1063 + `e_hash_add_key_da +( +l2_adj_hash_hd +, & +l2_adj_key +, + +1064 +adj_da +); + +1065 +tf + + +1067 +adj_da +); + +1069 + `tf +("PORT:%u IS DOWN...\n", +out_pt_id +); + +1072 + } +} + +1074 +ut8_t + + $_hash_ld_b +( +e_mbuf + * +mbuf +) + +1076 +ut32_t + +c_addr_offt + = + +1077 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST +; + +1078 +ut32_t + +d_addr_offt + = + +1079 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +1080 +ut32_t + * +d_addr + = +NULL +; + +1081 +ut32_t + * +c_addr + = +NULL +; + +1082 +c_addr + = + +1083 ( +ut32_t + * + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +c_addr_offt +); + +1084 +d_addr + = + +1085 ( +ut32_t + * + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +d_addr_offt +); + +1087 +ut32_t + +hash_key1 + = * +c_addr +; + +1088 +ut32_t + +hash_key2 + = * +d_addr +; + +1090 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1091 +hash_key2 + = +hash_key1 +; + +1093 +hash_key1 + = + `rr32 +(hash_key1, 16); + +1094 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1096 +hash_key2 + = +hash_key1 +; + +1098 +hash_key1 + = + `rr32 +(hash_key1, 8); + +1099 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1101 +hash_key1 + = hash_key1 & ( +HASH_BUCKET_SIZE + - 1); + +1102 i( +L3FWD_DEBUG +) + +1103 + `tf +("Hash Resu_key: %d, \n", +hash_key1 +); + +1104  +hash_key1 +; + +1105 + } +} + +1107 +ut32_t + + $rr32 +( +ut32_t + +vue +,  +cou +) + +1109 cڡ  +mask + = ( +CHAR_BIT + * ( +vue +) - 1); + +1110 +cou + & +mask +; + +1111  ( +vue + >> +cou +| (vu<< ((-cou& +mask +)); + +1112 + } +} + +1115 + $_lol_out_div +( +e_mbuf + ** +pkt_bur +, +ut16_t + +nb_rx +, + +1116 +ut64_t + +v4_pkts_mask +, +l2_phy_r_t + * +pt +) + +1118 + `_fwd_div +( +pkt_bur +, +nb_rx +, +v4_pkts_mask +, +pt +); + +1119 + } +} + + @VIL/l2l3_stack/l3fwd_lpm4.h + +21 #ide +L3FWD_LPM_H + + +22  + #L3FWD_LPM_H + + + ) + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~ + +42  + ~ + +43  + ~ + +44  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~"l3fwd_comm.h +" + +50  + ~"l3fwd_m6.h +" + +51  + ~"r.h +" + +57  + #MBUF_HDR_ROOM + 256 + + ) + +60  + #ETH_HDR_SIZE + 14 + + ) + +61  + #IP_HDR_SIZE + 20 + + ) + +62  + #IP_HDR_DST_ADR_OFST + 16 + + ) + +63  + #IP_HDR_SRC_ADR_OFST + 12 + + ) + +66  + #IPV4_L3FWD_LPM_MAX_RULES + 256 + + ) + +67  + #IPV4_L3FWD_LPM_NUMBER_TBL8S + (1 << 8 + + ) + +68  + #MAX_FIB_PATHS + 8 + + ) + +69  + #IP_LOCAL + 0 + + ) + +70  + #IP_REMOTE + 1 + + ) + +73  + #MAX_SUPPORTED_FIB_PATHS + 8 + + ) + +74  + #HASH_BUCKET_SIZE + 64 + + ) + +77  + #L2_ADJ_RESOLVED + 0x00 + + ) + +78  + #L2_ADJ_UNRESOLVED + 0x01 + + ) + +83  + sroutg_fo + { + +84 +ut32_t + + md__addr +; + +85 +ut8_t + + mdth +; + +86 +ut32_t + + mmric +; + +87 +ut32_t + + mfib_nh_size +; + +88 +ut32_t + + mnh__addr +[ +MAX_FIB_PATHS +]; + +89 +ut8_t + + mout_pt +[ +MAX_FIB_PATHS +]; + +90 } + g__e_che_igd +; + +96  + sfib_th + { + +97 +ut32_t + + mnh_ +; + +98 +ut8_t + + mout_pt +; + +99 +ut32_t + + mfcou +; + +100  +l2_adj_y + * + ml2_adj_r +; + +101 } + g__e_che_igd +; + +107  + sfib_fo + { + +108 +ut32_t + + md__addr +; + +109 +ut32_t + + mmric +; + +110 +ut32_t + + mfib_nh_size +; + +111 +ut8_t + + mdth +; + +112  +fib_th + * + mth +[ +MAX_FIB_PATHS +]; + +113 } + g__e_che_igd +; + +118  + sl2_adj_y + { + +119  +h_addr + + mh_addr +; + +120 +ut32_t + + mNext_h_ +; + +121 +ut8_t + + mout_pt_id +; + +122 +ut32_t + + mfcou +; + +123 +ut8_t + + ml2_rg +[256]; + +124 +l2_phy_r_t + * + mphy_pt +; + +125 +ut8_t + + mags +; + +126 } + g__e_che_igd +; + +131  + sfib_th_key_v4 + { + +132 +ut32_t + + mnh_ +; + +133 +ut8_t + + mout_pt +; + +134 +ut8_t + + mfr1 +; + +135 +ut8_t + + mfr2 +; + +136 +ut8_t + + mfr3 +; + +142  + sl2_adj_key_v4 + { + +143 +ut32_t + + mNext_h_ +; + +144 +ut8_t + + mout_pt_id +; + +145 +ut8_t + + mfr1 +; + +146 +ut8_t + + mfr2 +; + +147 +ut8_t + + mfr3 +; + +153  + sroutg_b_y + { + +154 +ut32_t + + m +; + +155 +ut8_t + + mpt_id +; + +156  +l2_adj_y + * + ml2_adj_r +; + +157 } + g__e_che_igd +; + +162  + sl3fwd_s + { + +163 +ut64_t + + mnb_rx_l3_pkt +; + +164 +ut64_t + + mnb_tx_l3_pkt +; + +165 +ut64_t + + mnb_rx_l3_icmp_pkt +; + +167 +ut64_t + + mnb_tx_l3_icmp_pkt +; + +169 +ut64_t + + mnb_l3_dr_pkt +; + +170 +ut64_t + + mtٮ_nb_rx_l3_pkt +; + +172 +ut64_t + + mtٮ_nb_tx_l3_pkt +; + +174 } + tl3_s_t +; + +176  + s_oc_ty + { + +177 +ut8_t + + moc_ty +; + +178 (* + mfunc +( + me_mbuf + **, + mut16_t +, + mut64_t +, + +179 + ml2_phy_r_t + *); + +180 } + g__e_che_igd +; + +189  +m_ +(); + +198  +m4_b_rou_add +( +routg_fo + * +put_y +); + +209  +m4_b_rou_de +( +ut32_t + + +, +ut8_t + +dth +); + +222  +m4_b_lookup +( +e_mbuf + ** +pkts_bur +, +ut16_t + +nb_pkts +, + +223 +ut64_t + +vid_pkts_mask +, + +224 +l2_phy_r_t + * +pt +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +225 +ut64_t + * +h_mask +); + +236  +is_vid_v4_pkt +( +v4_hdr + * +pkt +, +ut32_t + +lk_n +); + +251  +l3fwd_rx_v4_cks +( +e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +252 +ut64_t + +pkt_mask +, +l2_phy_r_t + * +pt +); + +265  +g_de_mac_f_xth +( +ut32_t + +xt_h_ +, + +266 +ut8_t + +out_phy_pt +,  +h_addr + * +hw_addr +); + +276  +l2_adj_y + * +ve_l2_adj_y +( +l2_adj_key_v4 + +l2_adj_key +); + +288  +l2_adj_y + * +puϋ_l2_adj +( +ut32_t + +addr +, +ut8_t + +ptid +); + +299  +fib_th + * +puϋ_fib_th +( +ut32_t + +nh_ +, +ut8_t + +ptid +); + +310  +fib_th + * +ve_fib_th_y +( +fib_th_key_v4 + +th_key +); + +317  +move_fib_l2_adj_y +(*); + +324  +e_cuckoo_hash_b +(); + +331  +t_l3_s +(); + +341 +ut8_t + +_hash_ld_b +( +e_mbuf + * +mbuf +); + +353 +ut32_t + +rr32 +(ut32_ +vue +,  +cou +); + +356 +sve_l2_adj +( +ut32_t + +xth_ +, +ut8_t + +out_pt_id +, + +357 cڡ  +h_addr + * +hw_addr +); + +360 +l3_oc_ty_add +( +ut8_t + +oc_ty +, + +361 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +362 +l2_phy_r_t + *)); + +365 + `_lol_cks_oss +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +366 +l2_phy_r_t + *); + +367  + `_lol_out_div +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +368 +l2_phy_r_t + *); + +371 + `_fwd_div +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +372 +l2_phy_r_t + *); + + @VIL/l2l3_stack/l3fwd_lpm6.c + +17  + ~"l3fwd_comm.h +" + +18  + ~"l3fwd_m4.h +" + +19  + ~"l3fwd_m6.h +" + +20  + ~"l3fwd_comm.h +" + +21  + ~"r.h +" + +22  + ~"l2_o.h +" + +23  + ~"lib_p.h +" + +24  + ~"lib_icmpv6.h +" + +29 * + gm6_b +; + +30  +e_hash + * + gl2_adj_v6_hash_hd +; + +31  +e_hash + * + gfib_th_v6_hash_hd +; + +32 +ut8_t + +nh_lks +[ +MAX_SUPPORTED_FIB_PATHS +][ +HASH_BUCKET_SIZE +]; + +33 +l3_s_t + +s +; + +35  +v6_oc_ty + * + go_ty +[2]; + +37  + $m6_ +() + +42  +e_b_m_v6_ms + +m6_ms + = { + +43 . +me + = "LPMv6", + +44 . +n_rus + = +IPV6_L3FWD_LPM_MAX_RULES +, + +45 . +numb_tbl8s + = +IPV6_L3FWD_LPM_NUMBER_TBL8S +, + +46 . +y_unique_size + = ( +v6_fib_fo +), + +47 . +offt + = 128, + +51 +m6_b + = + +52 +e_b_m_v6_s +. + `f_ +(& +m6_ms +, + `e_sock_id +(), + +53 ( +v6_fib_fo +)); + +54 i( +m6_b + = +NULL +) { + +55 + `tf +("Failedo create LPM IPV6able\n"); + +60  +e_hash_ms + +l2_adj_v6_ms + = { + +61 . +me + = "l2_ADJ_IPV6_HASH", + +62 . +s + = 64, + +63 . +key_n + = ( +l2_adj_key_v6 +), + +64 . +hash_func + = +e_jhash +, + +65 . +hash_func__v + = 0, + +68 +l2_adj_v6_hash_hd + = + `e_hash_ +(& +l2_adj_v6_ms +); + +69 i( +l2_adj_v6_hash_hd + = +NULL +) { + +70 + `tf +("ND for IPV6te_hash_create failed.\n"); + +73 + `tf +("ND IPV6_hash_handle %p\n\n", + +74 (*) +l2_adj_v6_hash_hd +); + +78  +e_hash_ms + +fib_th_v6_ms + = { + +79 . +me + = "FIB_PATH_IPV6_HASH", + +80 . +s + = 64, + +81 . +key_n + = ( +fib_th_key_v6 +), + +82 . +hash_func + = +e_jhash +, + +83 . +hash_func__v + = 0, + +84 . +exa_ag + = 1, + +88 +fib_th_v6_hash_hd + = + `e_hash_ +(& +fib_th_v6_ms +); + +90 i( +fib_th_v6_hash_hd + = +NULL +) { + +91 + `tf +("FIBathte_hash_create failed\n"); + +95 + } +} + +97  + $m6_b_rou_add +( +v6_routg_fo + * +da +) + +100  +v6_routg_fo + * +fib + = +da +; + +102  +e_b_m_v6_key + +m6_key +; + +103 +ut8_t + +i +; + +104  +i + = 0; i < 16; i++) { + +105 +m6_key +. + +[ +i +] = +fib +-> +d_v6 +[i]; + +107 +m6_key +. +dth + = +fib +->depth; + +109  +Tٮ_rou_cou +; + +110  +v6_fib_fo + +y +; + +111  +i + = 0; i < 16; i++) { + +112 +y +. +d_v6 +[ +i +] = +fib +->dst_ipv6[i]; + +114 +y +. +dth + = +fib +->depth; + +115 +y +. +fib_nh_size + = +fib +->fib_nh_size; + +117 #i +MULTIPATH_FEAT + + +118 i( +y +. +fib_nh_size + =0 ||ry.fib_nh_siz> +MAX_FIB_PATHS +) + +120 i( +y +. +fib_nh_size + != 1) + +123 +tf + + +125 +y +. +fib_nh_size +); + +130 #i +MULTIPATH_FEAT + + +131  +i + = 0; i < +y +. +fib_nh_size +; i++) + +133  +i + = 0; i < 1; i++) + +136  +v6_fib_th + * +v6_fib_th_addr + = +NULL +; + +137 +v6_fib_th_addr + = + +138 + `puϋ_v6_fib_th +( +fib +-> +nh_v6 +[ +i +], fib-> +out_pt +[i]); + +140 i( +v6_fib_th_addr +) { + +141 +y +. +th +[ +i +] = +v6_fib_th_addr +; + +142 + `tf +("Fibath for IPv6 destination = " + +145 +m6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2], + +146 +m6_key +. + +[3],pm6_key.ip[4],pm6_key.ip[5], + +147 +m6_key +. + +[6],pm6_key.ip[7],pm6_key.ip[8], + +148 +m6_key +. + +[9],pm6_key.ip[10],pm6_key.ip[11], + +149 +m6_key +. + +[12],pm6_key.ip[13], + +150 +m6_key +. + +[14],pm6_key.[15], +fib +-> +dth +, + +151 +v6_fib_th_addr +, + +152 (*) +y +. +th +[ +i +]-> +l2_adj_v6_r +); + +154 + `tf +("Fibath for IPv6 destination = " + +157 +m6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2], + +158 +m6_key +. + +[3],pm6_key.ip[4],pm6_key.ip[5], + +159 +m6_key +. + +[6],pm6_key.ip[7],pm6_key.ip[8], + +160 +m6_key +. + +[9],pm6_key.ip[10],pm6_key.ip[11], + +161 +m6_key +. + +[12],pm6_key.ip[13], + +162 +m6_key +. + +[14],pm6_key.[15], +fib +-> +dth +); + +163 +y +. +th +[ +i +] = +NULL +; + +167  +key_found +, +t +; + +168 * +y_r +; + +171 + `tf +("%s, L%u \n", +__FUNCTION__ +, +__LINE__ +); + +173 +t + = + +174 +e_b_m_v6_s +. + `f_add +( +m6_b +, (*)& +m6_key +, & +y +, + +175 & +key_found +, & +y_r +); + +176 + `tf +("%s, L%u \n", +__FUNCTION__ +, +__LINE__ +); + +178 i( +t +) { + +179 + `tf +("Failedo Add IPoute in LPMv6\n"); + +182 + `tf +("Addedouteo IPv6 LPMable (IPv6 destination = " + +185 +m6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2],pm6_key.ip[3], + +186 +m6_key +. + +[4],pm6_key.ip[5],pm6_key.ip[6],pm6_key.ip[7], + +187 +m6_key +. + +[8],pm6_key.ip[9],pm6_key.ip[10],pm6_key.ip[11], + +188 +m6_key +. + +[12],pm6_key.ip[13],pm6_key.ip[14], + +189 +m6_key +. + +[15], +fib +-> +dth +); + +191 +Tٮ_rou_cou +++; + +192 + `tf +("Tٮ Roud Added : %u, Key_found: %d\n", +Tٮ_rou_cou +, + +193 +key_found +); + +195 i( +Tٮ_rou_cou + == 2) + +196 + `v6_e__hash_b +(); + +199 + } +} + +202 + $m6_b_rou_de +( +ut8_t + +d_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +dth +) + +206  +e_b_m_v6_key + +m6_key +; + +207 + `memy +(& +m6_key +. + +, & +d_v6 +, ( +RTE_LPM_IPV6_ADDR_SIZE +)); + +208 +m6_key +. +dth + = depth; + +209  +key_found +, +t +; + +210 * +y + = +NULL +; + +211 +y + = + `e_zmloc +( +NULL +, 512, +RTE_CACHE_LINE_SIZE +); + +213 +t + = + +214 +e_b_m_v6_s +. + `f_de +( +m6_b +, & +m6_key +, & +key_found +, + +215 +y +); + +217 i( +t +) { + +218 + `tf +("Failedo Delete IPoute from LPMv6able\n"); + +222 + `tf +("Deletedoute from IPv6 LPMable (IPv6 destination = " + +225 +m6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2],pm6_key.ip[3], + +226 +m6_key +. + +[4],pm6_key.ip[5],pm6_key.ip[6],pm6_key.ip[7], + +227 +m6_key +. + +[8],pm6_key.ip[9],pm6_key.ip[10],pm6_key.ip[11], + +228 +m6_key +. + +[12],pm6_key.ip[13],pm6_key.ip[14], + +229 +m6_key +. + +[15],pm6_key. +dth +, +key_found +); + +232 + `move_v6_fib_l2_adj_y +( +y +); + +233 + `e_ +( +y +); + +235 + } +} + +238 + $m6_b_lookup +( +e_mbuf + ** +pkts_bur +, + +239 +ut16_t + +nb_pkts +, + +240 +ut64_t + +pkts_mask +, + +241 +l2_phy_r_t + * +pt_r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +242 +ut64_t + * +h_mask +) + +244  +v6_routg_b_y + + +245 * +v6_s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +246 +ut64_t + +lookup_h_mask_v6 + = 0; + +247  +us +; + +248 +ut64_t + +lookup_miss_mask + = +pkts_mask +; + +250 +ut32_t + +d_addr_offt + = + +251 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +252 +ut64_t + +pkts_key_mask + = +pkts_mask +; + +255 ; +pkts_key_mask +;) { + +257 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_key_mask +); + +258 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +259 +pkts_key_mask + &~ +pkt_mask +; + +261 +ut8_t + * +m6_key +; + +262 +ut8_t + +d_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +263 + `memy +( +d_addr +, + +264 ( +ut8_t + * + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts_bur +[ +pos +], + +265 +d_addr_offt +), + +266 +RTE_LPM_IPV6_ADDR_SIZE +); + +267 +m6_key + = + +268 ( +ut8_t + * + `RTE_MBUF_METADATA_UINT8_PTR +( +pkts_bur +[ +pos +], + +270 + `memy +( +m6_key +, +d_addr +, +RTE_LPM_IPV6_ADDR_SIZE +); + +273 + `tf +(" IPV6 Lookup Mask Before = %p,b_pkts :%u\n", + +274 (*) +pkts_mask +, +nb_pkts +); + +275 +us + = + +276 +e_b_m_s +. + `f_lookup +( +m6_b +, +pkts_bur +, +pkts_mask +, + +277 & +lookup_h_mask_v6 +, + +278 (**) +v6_s +); + +279 i( +us +) { + +280 + `tf +("LPM Lookup failed for IPoute\n"); + +283 + `tf +(" IPV6 LookuMask A = %p\n", (*) +lookup_h_mask_v6 +); + +284 +lookup_miss_mask + =ookup_miss_mask & (~ +lookup_h_mask_v6 +); + +285 i( +L3FWD_DEBUG +) { + +286 + `tf +("AFTERookup_hit_mask = %p,ookup_miss_mask =%p\n", + +287 (*) +lookup_h_mask_v6 +, (*) +lookup_miss_mask +); + +290 ; +lookup_miss_mask +;) { + +292 +ut8_t + +pos + = (ut8_t + `__but_z +( +lookup_miss_mask +); + +293 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +294 +lookup_miss_mask + &~ +pkt_mask +; + +295 + `e_pktmbuf_ +( +pkts_bur +[ +pos +]); + +296 +pkts_bur +[ +pos +] = +NULL +; + +297 i( +L3FWD_DEBUG +) + +298 + `tf +("\n DROP PKT IPV4 Lookup_miss_Mask = %p\n", + +299 (*) +lookup_miss_mask +); + +302 * +h_mask + = +lookup_h_mask_v6 +; + +303 ; +lookup_h_mask_v6 +;) { + +304 +ut8_t + +pos + = (ut8_t + `__but_z +( +lookup_h_mask_v6 +); + +305 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +306 +lookup_h_mask_v6 + &~ +pkt_mask +; + +307  +e_mbuf + * +pkt + = +pkts_bur +[ +pos +]; + +309  +v6_fib_fo + * +y + = + +310 ( +v6_fib_fo + *) +v6_s +[ +pos +]; + +312 #i +MULTIPATH_FEAT + + +314 +ut8_t + +ecmp_th + = + `v6_hash_ld_b +( +pkts_bur +[ +pos +]); + +315 +ut8_t + +ed_th + = 0; + +316  +v6_fib_th + * +fib_th + = +NULL +; + +317 i((( +y +-> +fib_nh_size + != 0) + +318 && ( +y +-> +fib_nh_size + - 1< +MAX_SUPPORTED_FIB_PATHS +) + +319 && (( +ecmp_th + !0&& (ecmp_th - 1< +HASH_BUCKET_SIZE +)) + +320 +ed_th + = + +321 +nh_lks +[ +y +-> +fib_nh_size + - 1][ +ecmp_th + - 1]; + +322 i( +ed_th + < +MAX_FIB_PATHS +) + +323 +fib_th + = +y +-> +th +[ +ed_th +]; + +324 +tf + + +326 +y +-> +fib_nh_size +, +ecmp_th +, +ed_th +); + +328  +v6_fib_th + * +fib_th + = +y +-> +th +[0]; + +330 i( +fib_th + = +NULL +) { + +331 + `tf +("Fib_path is NULL, ND hasotesolved\n"); + +332 + `e_pktmbuf_ +( +pkt +); + +333 +pkts_bur +[ +pos +] = +NULL +; + +334 +s +. +nb_l3_dr_pkt +++; + +335 * +h_mask + &~ +pkt_mask +; + +336 +tf + + +341 i( +fib_th +-> +l2_adj_v6_r +-> +ags + = +L2_ADJ_UNRESOLVED +) { + +342 + `e_pktmbuf_ +( +pkts_bur +[ +pos +]); + +343 +pkts_bur +[ +pos +] = +NULL +; + +344 * +h_mask + &~ +pkt_mask +; + +345 i( +L3FWD_DEBUG +) + +346 +tf + + +351 +ut8_t + * +h_de + = + +352 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +353 +ut8_t + * +h_c + = + +354 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM + + 6); + +355 i( +L3FWD_DEBUG +) { + +356 +tf + + +361 +h_de +[0],th_dest[1],th_dest[2], + +362 +h_de +[3], + +363 +h_de +[4],th_de[5], +h_c +[0], + +364 +h_c +[1], + +365 +h_c +[2],th_src[3], + +366 +h_c +[4],th_src[5]); + +370 + `memy +( +h_de +, +fib_th +-> +l2_adj_v6_r +-> +l2_rg +, + +371 ( +h_addr +) * 2 + 2); + +373 i( +L3FWD_DEBUG +) { + +374 +tf + + +377 "%02x:%02x\n", +h_de +[0], + +378 +h_de +[1],th_dest[2],th_dest[3], + +379 +h_de +[4], + +380 +h_de +[5], +h_c +[0],th_src[1], + +381 +h_c +[2], + +382 +h_c +[3],th_src[4],th_src[5]); + +384 +pt_r +[ +pos +] = +fib_th +-> +l2_adj_v6_r +-> +phy_pt +; + +387 i( +L3FWD_DEBUG +) + +388 + `tf +("Successfully sentoort %u \n\r", + +389 +fib_th +-> +out_pt +); + +392 + } +} + +394  + $l3fwd_rx_v6_cks +( +e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +395 +ut64_t + +vid_pkts_mask +, +l2_phy_r_t + * +pt +) + +397 i(! +pt +) + +399 i( +L3FWD_DEBUG +) { + +400 +tf + + +402 +PRIu64 + "\n", +nb_pkts +, +pt +-> +pmdid +, +vid_pkts_mask +); + +404 +ut64_t + +pkts_f_oss + = +vid_pkts_mask +; + +406  +v6_hdr + *ipv6_hdr; + +408 +ut64_t + +icmp_pkts_mask + = +vid_pkts_mask +; + +409 +ut64_t + +v6_fwd_pkts_mask + = +vid_pkts_mask +; + +410 +ut16_t + +nb_icmpv6_pkt + = 0; + +411 +ut16_t + +nb_l3_pkt + = 0; + +413 +ut8_t + +cfigud_pt_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { 0 }; + +414 +t8_t + +siced_node_mui_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { + +417 +ut8_t + +de_v6_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +419 + `memt +( +de_v6_addr +, 0, +RTE_LPM_IPV6_ADDR_SIZE +); + +421 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +422  +ii +; + +423 i( +pt +-> +v6_li + ! +NULL +) { + +424  +ii + = 0; ii < 16; ii += 1) { + +425 +cfigud_pt_v6 +[ +ii +] = + +426 (( +v6li_t + *( +pt +-> +v6_li +))-> +addr +[ +ii +]; + +431  +ii + = 0; ii < 16; ii += 2) { + +432 i( +pt + &&t-> +v6_li +) + +433 + `tf +("%02X%02X ", + +434 (( +v6li_t + *( +pt +-> +v6_li +))-> +addr +[ +ii +], + +435 (( +v6li_t + *( +pt +-> +v6_li +))-> +addr +[ +ii + + + +439 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +440  +ii + = 0; ii < 16; ii += 2) { + +441 + `tf +("%02X%02X ", +cfigud_pt_v6 +[ +ii +], + +442 +cfigud_pt_v6 +[ +ii + + 1]); + +445 ; +pkts_f_oss +;) { + +447 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +448 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_f_oss +); + +449 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +450 +pkts_f_oss + &~ +pkt_mask +; + +453 + `tf +("\n%: LINE #%u, POS%u\n", +__FUNCTION__ +, +__LINE__ +, + +454 +pos +); + +456 i( +m +[ +pos +] = +NULL +) { + +457 + `tf +("\n%s : M_POS IS NULLLLLLL, LINE: %u\n", + +458 +__FUNCTION__ +, +__LINE__ +); + +461 +v6_hdr + = + +462 + `e_pktmbuf_mtod_offt +( +m +[ +pos +],  +v6_hdr + *, + +463 ( +h_hdr +)); + +464 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +465  +ii + = 0; ii < 13; ii += 1) { + +466 +de_v6_addr +[ +ii +] = +v6_hdr +-> +d_addr +[ii]; + +469 + `tf +("\n"); + +470 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +471  +ii + = 0; ii < 16; ii += 2) { + +472 + `tf +("%02X%02X ", +v6_hdr +-> +d_addr +[ +ii +], + +473 +v6_hdr +-> +d_addr +[ +ii + + 1]); + +475 + `tf +("\n"); + +476 + `tf +("\n%: LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +477  +ii + = 0; ii < 16; ii += 2) { + +478 + `tf +("%02X%02X ", +de_v6_addr +[ +ii +], + +479 +de_v6_addr +[ +ii + + 1]); + +482 + `tf +("\n%: LINE # %u", +__FUNCTION__ +, +__LINE__ +); + +483 i(( +v6_hdr +-> +o + = +IPPROTO_ICMPV6 +) && + +484 (! +memcmp + + +485 (& +v6_hdr +-> +d_addr +, & +cfigud_pt_v6 +[0], + +486 +RTE_LPM_IPV6_ADDR_SIZE +) + +487 || ! + `memcmp +(& +de_v6_addr +[0], + +488 & +siced_node_mui_addr +[0], + +489 +RTE_LPM_IPV6_ADDR_SIZE +))) { + +490 +v6_fwd_pkts_mask + &~ +pkt_mask +; + +491 +s +. +nb_rx_l3_icmp_pkt +++; + +492 +nb_icmpv6_pkt +++; + +494 +icmp_pkts_mask + &~ +pkt_mask +; + +495 +s +. +nb_rx_l3_pkt +++; + +496 +nb_l3_pkt +++; + +500 i( +icmp_pkts_mask +) { + +501 i( +L3FWD_DEBUG +) + +502 +tf + + +504 +o_ty +[ +IP_LOCAL +]-> + `func +( +m +, +nb_icmpv6_pkt +, +icmp_pkts_mask +, + +505 +pt +); + +508 i( +v6_fwd_pkts_mask +) { + +509 i( +L3FWD_DEBUG +) + +510 +tf + + +512 +o_ty +[ +IP_REMOTE +]-> + `func +( +m +, +nb_l3_pkt +, + +513 +v6_fwd_pkts_mask +, +pt +); + +515 + } +} + +517  +v6_fib_th + * + $puϋ_v6_fib_th +( +ut8_t + + +518 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +519 +ut8_t + +ptid +) + +522  +fib_th_key_v6 + +th_key +; + +523 +ut8_t + +i +; + +524  +i + = 0; i < 16; i++) { + +525 +th_key +. +nh_v6 +[ +i +] =h_ipv6[i]; + +527 +th_key +. +out_pt + = +ptid +; + +528 +th_key +. +fr1 + = 0; + +529 +th_key +. +fr2 + = 0; + +530 +th_key +. +fr3 + = 0; + +532  +v6_fib_th + * +fib_da + = +NULL +; + +534 +fib_da + = + `ve_v6_fib_th_y +( +th_key +); + +536 i( +fib_da +) { + +538 + `tf +(" Fibathntryxists for IPv6 destination = " + +541 +nh_v6 +[0],h_ipv6[1],h_ipv6[2],h_ipv6[3], + +542 +nh_v6 +[4],h_ipv6[5],h_ipv6[6],h_ipv6[7], + +543 +nh_v6 +[8],h_ipv6[9],h_ipv6[10],h_ipv6[11], + +544 +nh_v6 +[12],h_ipv6[13],h_ipv6[14],h_ipv6[15], + +545 +ptid +); + +547 +fib_da +-> +fcou +++; + +548  +fib_da +; + +550 + `tf +("IPv6 fib_pathntry Doesn't Exists.......\n"); + +554 +fib_da + = +NULL +; + +555  +l2_adj_v6_y + * +l2_adj_r + = +NULL +; + +556 +l2_adj_r + = + `puϋ_v6_l2_adj +( +nh_v6 +, +ptid +); + +558 i( +l2_adj_r +) { + +560 +ut32_t + +size + = + +561 + `RTE_CACHE_LINE_ROUNDUP +(( +v6_fib_th +)); + +562 +fib_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +564  +i + = 0; i < 16; i++) { + +565 +fib_da +-> +nh_v6 +[ +i +] =h_ipv6[i]; + +567 +fib_da +-> +out_pt + = +ptid +; + +570 +fib_da +-> +fcou +++; + +571 +fib_da +-> +l2_adj_v6_r + = +l2_adj_r +; + +574 + `e_hash_add_key_da +( +fib_th_v6_hash_hd +, & +th_key +, + +575 +fib_da +); + +576 +tf + + +578 +l2_adj_r +, +fib_da +); + +579  +fib_da +; + +581 +tf + + +584  +NULL +; + +586 + } +} + +588  +l2_adj_v6_y + * + $puϋ_v6_l2_adj +( +ut8_t + + +589 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +590 +ut8_t + +ptid +) + +593  +l2_adj_key_v6 + +l2_adj_key +; + +594 +ut8_t + +i +; + +595  +i + = 0; i < 16; i++) { + +596 +l2_adj_key +. +nh_v6 +[ +i +] =h_ipv6[i]; + +598 +l2_adj_key +. +out_pt_id + = +ptid +; + +599 +l2_adj_key +. +fr1 + = 0; + +600 +l2_adj_key +. +fr2 + = 0; + +601 +l2_adj_key +. +fr3 + = 0; + +603  +l2_adj_v6_y + * +adj_da + = +NULL +; + +604  +h_addr + +h_d +; + +606 +adj_da + = + `ve_v6_l2_adj_y +( +l2_adj_key +); + +608 i( +adj_da +) { + +610 + `tf +("ipv6_l2_adj_entryxists for Next Hop IPv6 = " + +613 +nh_v6 +[0],h_ipv6[1],h_ipv6[2],h_ipv6[3], + +614 +nh_v6 +[4],h_ipv6[5],h_ipv6[6],h_ipv6[7], + +615 +nh_v6 +[8],h_ipv6[9],h_ipv6[10],h_ipv6[11], + +616 +nh_v6 +[12],h_ipv6[13],h_ipv6[14],h_ipv6[15], + +617 +ptid +); + +619 + `h_addr_cy +(& +adj_da +-> +h_addr +, & +h_d +); + +620 +adj_da +-> +fcou +++; + +621  +adj_da +; + +624  +h_addr + +h_c +; + +625 +ut16_t + +h_ty + = 0x086DD; + +626 +l2_phy_r_t + * +pt +; + +627 +pt + = + `ifm_g_pt +( +ptid +); + +628 i( +pt + = +NULL +) { + +629 + `tf +("PORT %u IS DOWN.. Ubˁشos!\n", +ptid +); + +630  +NULL +; + +633 + `memy +(& +h_c +, & +pt +-> +maddr +, ( +h_addr +)); + +634 +ut32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_y +)); + +635 +adj_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +636 i( +adj_da + = +NULL +) { + +637 + `tf +("L2 Adjacency memoryllocation failed !\n"); + +638  +NULL +; + +641 +adj_da +-> +out_pt_id + = +ptid +; + +643  +i + = 0; i < 16; i++) { + +644 +adj_da +-> +nh_v6 +[ +i +] =h_ipv6[i]; + +646 +adj_da +-> +fcou +++; + +647 +adj_da +-> +phy_pt + = +pt +; + +649 + `e_hash_add_key_da +( +l2_adj_v6_hash_hd +, & +l2_adj_key +, +adj_da +); + +652 i( + `g_de_mac_f_xth_v6 +( +nh_v6 +, +ptid +, & +h_d +)) { + +654 + `h_addr_cy +(& +h_d +, & +adj_da +-> +h_addr +); + +657 + `memy +(& +adj_da +-> +l2_rg +, & +h_d +, + +658 ( +h_addr +)); + +659 + `memy +(& +adj_da +-> +l2_rg +[6], & +h_c +, + +660 ( +h_addr +)); + +661 + `memy +(& +adj_da +-> +l2_rg +[12], & +h_ty +, 2); + +663 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +664 +tf + + +666 +adj_da +); + +668  +adj_da +; + +670 +adj_da +-> +ags + = +L2_ADJ_UNRESOLVED +; + +671 +tf + + +674  +NULL +; + +675 + } +} + +677  +l2_adj_v6_y + * + $ve_v6_l2_adj_y +( +l2_adj_key_v6 + + +678 +l2_adj_key +) + +680  +l2_adj_v6_y + * +t_l2_adj_da + = +NULL +; + +682  +t + = + +683 + `e_hash_lookup_da +( +l2_adj_v6_hash_hd +, & +l2_adj_key +, + +684 (**)& +t_l2_adj_da +); + +685 i( +t + < 0) { + +686 +tf + + +688 +t +, +EINVAL +, +ENOENT +); + +690 + `tf +("L2 Adj hashookup Successful..!!!\n"); + +691  +t_l2_adj_da +; + +693  +NULL +; + +694 + } +} + +696  + $g_de_mac_f_xth_v6 +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +697 +ut32_t + +out_phy_pt +, + +698  +h_addr + * +hw_addr +) + +700  +nd_y_da + * +nd_da + = +NULL +; + +701  +nd_key_v6 + +tmp_nd_key +; + +702 +ut8_t + +i +; + +703  +i + = 0; i < 16; i++) { + +704 +tmp_nd_key +. +v6 +[ +i +] = +nh_v6 +[i]; + +706 +tmp_nd_key +. +pt_id + = +out_phy_pt +; + +708 +nd_da + = + `ve_nd_y +( +tmp_nd_key +); + +709 i( +nd_da + = +NULL +) { + +710 + `tf +("NDntry isot found\n"); + +713 + `h_addr_cy +(& +nd_da +-> +h_addr +, +hw_addr +); + +716 + } +} + +718  +v6_fib_th + * + $ve_v6_fib_th_y +( +fib_th_key_v6 + + +719 +th_key +) + +722  +v6_fib_th + * +t_fib_th_da + = +NULL +; + +723  +t + = + +724 + `e_hash_lookup_da +( +fib_th_v6_hash_hd +, & +th_key +, + +725 (**)& +t_fib_th_da +); + +726 i( +t + < 0) { + +727 +tf + + +729 +t +, +EINVAL +, +ENOENT +); + +730  +NULL +; + +732  +t_fib_th_da +; + +734 + } +} + +736  + $move_v6_fib_l2_adj_y +(* +y +) + +738  +v6_fib_fo + +y1 +; + +739 + `memy +(& +y1 +, +y +, ( +v6_fib_fo +)); + +741  +v6_fib_th + * +fib_th_addr + = +y1 +. +th +[0]; + +742 i( +fib_th_addr +-> +fcou + > 1) { + +743 + `tf +("BEFORE fib_pathntry isot Removed!h_iPv6 = " + +746 +fib_th_addr +-> +nh_v6 +[0], fib_path_addr->nh_ipv6[1], + +747 +fib_th_addr +-> +nh_v6 +[2], fib_path_addr->nh_ipv6[3], + +748 +fib_th_addr +-> +nh_v6 +[4], fib_path_addr->nh_ipv6[5], + +749 +fib_th_addr +-> +nh_v6 +[6], fib_path_addr->nh_ipv6[7], + +750 +fib_th_addr +-> +nh_v6 +[8], fib_path_addr->nh_ipv6[9], + +751 +fib_th_addr +-> +nh_v6 +[10], fib_path_addr->nh_ipv6[11], + +752 +fib_th_addr +-> +nh_v6 +[12], fib_path_addr->nh_ipv6[13], + +753 +fib_th_addr +-> +nh_v6 +[14], fib_path_addr->nh_ipv6[15], + +754 +fib_th_addr +-> +out_pt +, fib_th_addr-> +fcou +); + +755 +fib_th_addr +-> +fcou +--; + +756 + `tf +("AFTER fib_pathntry isot Removed!h_iPv6 = " + +759 +fib_th_addr +-> +nh_v6 +[0], fib_path_addr->nh_ipv6[1], + +760 +fib_th_addr +-> +nh_v6 +[2], fib_path_addr->nh_ipv6[3], + +761 +fib_th_addr +-> +nh_v6 +[4], fib_path_addr->nh_ipv6[5], + +762 +fib_th_addr +-> +nh_v6 +[6], fib_path_addr->nh_ipv6[7], + +763 +fib_th_addr +-> +nh_v6 +[8], fib_path_addr->nh_ipv6[9], + +764 +fib_th_addr +-> +nh_v6 +[10], fib_path_addr->nh_ipv6[11], + +765 +fib_th_addr +-> +nh_v6 +[12], fib_path_addr->nh_ipv6[13], + +766 +fib_th_addr +-> +nh_v6 +[14], fib_path_addr->nh_ipv6[15], + +767 +fib_th_addr +-> +out_pt +, fib_th_addr-> +fcou +); + +770  +l2_adj_v6_y + * +adj_addr + = +NULL +; + +771 +adj_addr + = +fib_th_addr +-> +l2_adj_v6_r +; + +773 i( +adj_addr + ! +NULL +) { + +774 + `tf +("%s: CHECK %d\n\r", +__FUNCTION__ +, +__LINE__ +); + +775  +l2_adj_key_v6 + +l2_adj_key +; + +776 + `memy +(& +l2_adj_key +. +nh_v6 +, +fib_th_addr +->nh_ipv6, + +777 +RTE_LPM_IPV6_ADDR_SIZE +); + +778 +l2_adj_key +. +out_pt_id + = + +779 +fib_th_addr +-> +out_pt +, + +780 + `e_hash_d_key +( +l2_adj_v6_hash_hd +, + +781 & +l2_adj_key +); + +782 + `e_ +( +adj_addr +); + +783 +adj_addr + = +NULL +; + +786  +fib_th_key_v6 + +th_key +; + +787 + `memy +(& +th_key +. +nh_v6 +, +fib_th_addr +->nh_ipv6, + +788 +RTE_LPM_IPV6_ADDR_SIZE +); + +789 +th_key +. +out_pt + = +fib_th_addr +->out_port; + +790 + `e_hash_d_key +( +fib_th_v6_hash_hd +, & +th_key +); + +791 + `e_ +( +fib_th_addr +); + +792 +fib_th_addr + = +NULL +; + +794 + } +} + +796  + $is_vid_v6_pkt +( +v6_hdr + * +pkt +, +ut32_t + +lk_n +) + +798 i( +lk_n + < ( +v4_hdr +)) + +800 i( + `e_u_to_be_16 +( +pkt +-> +yld_n +< ( +v6_hdr +)) + +804 + } +} + +807 + $v6_l3_oc_ty_add +( +ut8_t + +oc_ty +, + +808 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +809 +l2_phy_r_t + *)) + +811  +oc_ty +) { + +812  +IPPROTO_ICMPV6 +: + +813 +o_ty +[ +IP_LOCAL +] = + +814 + `e_mloc +( +NULL +, ( +_oc_ty +), + +815 +RTE_CACHE_LINE_SIZE +); + +816 +o_ty +[ +IP_LOCAL +]-> +oc_ty + =rotocol_type; + +817 +o_ty +[ +IP_LOCAL +]-> +func + = func; + +820  +IPPROTO_TCP +: + +821  +IPPROTO_UDP +: + +822 +o_ty +[ +IP_REMOTE +] = + +823 + `e_mloc +( +NULL +, ( +_oc_ty +), + +824 +RTE_CACHE_LINE_SIZE +); + +825 +o_ty +[ +IP_REMOTE +]-> +oc_ty + =rotocol_type; + +826 +o_ty +[ +IP_REMOTE +]-> +func + = func; + +829 + } +} + +832 + $v6_lol_div +( +e_mbuf + ** +pkt_bur +, +__e_unud + +ut16_t + +nb_rx +, + +833 +ut64_t + +icmp_pkt_mask +, +l2_phy_r_t + * +pt +) + +835 ; +icmp_pkt_mask +;) { + +837 +ut8_t + +pos + = (ut8_t + `__but_z +( +icmp_pkt_mask +); + +838 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +839 +icmp_pkt_mask + &~ +pkt_mask +; + +841 + `oss_icmpv6_pkt +( +pkt_bur +[ +pos +], +pt +); + +843 + } +} + +846 + $v6_fwd_div +( +e_mbuf + ** +pkt_bur +, +ut16_t + +nb_pkts +, + +847 +ut64_t + +v6_fwd_pkts_mask +, +l2_phy_r_t + * +pt +) + +849 i( +L3FWD_DEBUG +) { + +850 +tf + + +852 +nb_pkts +, +pt +-> +pmdid +); + +854 +ut64_t + +pkts_f_oss + = +v6_fwd_pkts_mask +; + +856  +v6_hdr + *ipv6_hdr; + +857 +l2_phy_r_t + * +pt_r +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +858 +ut64_t + +h_mask + = 0; + +860 ; +pkts_f_oss +;) { + +862 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_f_oss +); + +863 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +864 +pkts_f_oss + &~ +pkt_mask +; + +865 +v6_hdr + = + +866 + `e_pktmbuf_mtod_offt +( +pkt_bur +[ +pos +],  +v6_hdr + *, + +867 ( +h_hdr +)); + +870 i( + `is_vid_v6_pkt +( +v6_hdr +, +pkt_bur +[ +pos +]-> +pkt_n +) < 0) { + +871 + `e_pktmbuf_ +( +pkt_bur +[ +pos +]); + +872 +pkt_bur +[ +pos +] = +NULL +; + +873 +v6_fwd_pkts_mask + &~(1LLU << +pos +); + +874 +nb_pkts +--; + +875 +s +. +nb_l3_dr_pkt +++; + +879 i( +L3FWD_DEBUG +) { + +880 +tf + + +882 +nb_pkts +, +v6_fwd_pkts_mask +); + +886 + `m6_b_lookup +( +pkt_bur +, +nb_pkts +, +v6_fwd_pkts_mask +, +pt_r +, + +887 & +h_mask +); + +888 + } +} + +890 +ut8_t + + $v6_hash_ld_b +( +e_mbuf + * +mbuf +) + +892 +ut32_t + +c_addr_offt + = + +893 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST_IPV6 +; + +894 +ut32_t + +d_addr_offt + = + +895 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +896 +ut8_t + +c_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +897 +ut8_t + +d_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +899 + `memy +(& +c_addr +, + +900 ( +ut8_t + * + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +c_addr_offt +), + +901 +RTE_LPM_IPV6_ADDR_SIZE +); + +902 + `memy +(& +d_addr +, + +903 ( +ut8_t + * + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +d_addr_offt +), + +904 +RTE_LPM_IPV6_ADDR_SIZE +); + +905 +ut32_t + +hash_key1 + = 0; + +906 +ut32_t + +hash_key2 + = 0; + +907 +ut8_t + +i +; + +908  +i + = 0; i < +RTE_LPM_IPV6_ADDR_SIZE +; i++) { + +909 +hash_key1 + + +c_addr +[ +i +]; + +910 +hash_key2 + + +d_addr +[ +i +]; + +912 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +913 +hash_key2 + = +hash_key1 +; + +914 +hash_key1 + = + `rr32 +(hash_key1, +RTE_LPM_IPV6_ADDR_SIZE +); + +915 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +917 +hash_key2 + = +hash_key1 +; + +919 +hash_key1 + = + `rr32 +(hash_key1, 8); + +920 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +922 +hash_key1 + = hash_key1 & ( +HASH_BUCKET_SIZE + - 1); + +923 i( +L3FWD_DEBUG +) + +924 + `tf +("Hash Resu_key: %d, \n", +hash_key1 +); + +925  +hash_key1 +; + +926 + } +} + +929 + $sve_v6_l2_adj +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +ptid +, + +930  +h_addr + * +hw_addr +) + +932  +l2_adj_v6_y + * +adj_da + = +NULL +; + +933  +h_addr + +h_d +; + +934 +ut16_t + +h_ty + = 0x086DD; + +936  +l2_adj_key_v6 + +l2_adj_key +; + +937 + `memy +(& +l2_adj_key +. +nh_v6 +, &nh_v6, +RTE_LPM_IPV6_ADDR_SIZE +); + +938 +l2_adj_key +. +out_pt_id + = +ptid +; + +940 +adj_da + = + `ve_v6_l2_adj_y +( +l2_adj_key +); + +941 i( +adj_da +) { + +942 i( +adj_da +-> +ags + = +L2_ADJ_UNRESOLVED + + +943 || + `memcmp +(& +adj_da +-> +h_addr +, +hw_addr +, 6)) { + +944 + `h_addr_cy +( +hw_addr +, & +adj_da +-> +h_addr +); + +947 + `memy +(& +adj_da +-> +l2_rg +, +hw_addr +, + +948 ( +h_addr +)); + +949 + `memy +(& +adj_da +-> +l2_rg +[6], + +950 & +adj_da +-> +phy_pt +-> +maddr +, + +951 ( +h_addr +)); + +952 + `memy +(& +adj_da +-> +l2_rg +[12], & +h_ty +, 2); + +954 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +960 +l2_phy_r_t + * +pt +; + +961 +pt + = + `ifm_g_pt +( +ptid +); + +962 i( +pt + = +NULL +) { + +963 + `tf +("PORT %u IS DOWN..! UbˁPross\n", +ptid +); + +966 +ut32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_y +)); + +967 +adj_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +968 i( +adj_da + = +NULL +) { + +969 + `tf +("L2 Adjacency memoryllocation failed !\n"); + +973 +adj_da +-> +out_pt_id + = +ptid +; + +974 + `memy +( +adj_da +-> +nh_v6 +, &nh_v6, +RTE_LPM_IPV6_ADDR_SIZE +); + +976 +adj_da +-> +phy_pt + = +pt +; + +978 + `h_addr_cy +(& +h_d +, & +adj_da +-> +h_addr +); + +981 + `memy +(& +adj_da +-> +l2_rg +, +hw_addr +, ( +h_addr +)); + +982 + `memy +(& +adj_da +-> +l2_rg +[6], & +pt +-> +maddr +, + +983 ( +h_addr +)); + +984 + `memy +(& +adj_da +-> +l2_rg +[12], & +h_ty +, 2); + +986 +adj_da +-> +ags + = +L2_ADJ_RESOLVED +; + +989 + `e_hash_add_key_da +( +l2_adj_v6_hash_hd +, & +l2_adj_key +, +adj_da +); + +991 + `tf +(" NDesolution successfulnd stored in ipv6_l2_adj_entry %p\n", + +992 +adj_da +); + +993 + } +} + +995  + $v6_e__hash_b +() + +997 cڡ * +xt_key +; + +998 * +xt_da +; + +999 +ut32_t + + + = 0; + +1000 +ut8_t + +ii +; + +1001 + `tf +("\n\t\t\t IPv6 FIB_path Cacheable...."); + +1002 +tf + + +1004 +tf + + +1006 +tf + + +1009  +e_hash_e + + +1010 ( +fib_th_v6_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= 0) { + +1011  +v6_fib_th + * +tmp_da + = + +1012 ( +v6_fib_th + *) +xt_da +; + +1013  +fib_th_key_v6 + +tmp_key +; + +1014 + `memy +(& +tmp_key +, +xt_key +, (tmp_key)); + +1015  +ii + = 0; ii < 16; ii += 2) { + +1016 + `tf +("%02X%02X ", +tmp_da +-> +nh_v6 +[ +ii +], + +1017 +tmp_da +-> +nh_v6 +[ +ii + + 1]); + +1019 + `tf +(" \%u \%u \%p\n", +tmp_da +-> +out_pt +, + +1020 +tmp_da +-> +fcou +,mp_da-> +l2_adj_v6_r +); + +1024 + + = 0; + +1026 + `tf +("\n\t\t\t L2 ADJ Cacheable....."); + +1027 +tf + + +1029 +tf + + +1031 +tf + + +1033  +e_hash_e + + +1034 ( +l2_adj_v6_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= 0) { + +1035  +l2_adj_v6_y + * +l2_da + = + +1036 ( +l2_adj_v6_y + *) +xt_da +; + +1037  +l2_adj_key_v6 + +l2_key +; + +1038 + `memy +(& +l2_key +, +xt_key +, (l2_key)); + +1039  +ii + = 0; ii < 16; ii += 2) { + +1040 + `tf +("%02X%02X ", +l2_da +-> +nh_v6 +[ +ii +], + +1041 +l2_da +-> +nh_v6 +[ +ii + + 1]); + +1043 + `tf +(" \t%u\t%x:%x:%x:%x:%x:%x:%x:%x:%x:%x:%x:%x\t%p\n", + +1044 +l2_da +-> +out_pt_id +, + +1045 +l2_da +-> +l2_rg +[0], + +1046 +l2_da +-> +l2_rg +[1], + +1047 +l2_da +-> +l2_rg +[2], + +1048 +l2_da +-> +l2_rg +[3], + +1049 +l2_da +-> +l2_rg +[4], + +1050 +l2_da +-> +l2_rg +[5], + +1051 +l2_da +-> +l2_rg +[6], + +1052 +l2_da +-> +l2_rg +[7], + +1053 +l2_da +-> +l2_rg +[8], + +1054 +l2_da +-> +l2_rg +[9], + +1055 +l2_da +-> +l2_rg +[10], + +1056 +l2_da +-> +l2_rg +[11],2_da-> +phy_pt +); + +1058 + } +} + + @VIL/l2l3_stack/l3fwd_lpm6.h + +22 #ide +L3FWD_LPM6_H + + +23  + #L3FWD_LPM6_H + + + ) + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~ + +42  + ~ + +43  + ~ + +44  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~ + +50  + ~"l3fwd_comm.h +" + +51  + ~"l3fwd_m4.h +" + +52  + ~"r.h +" + +58  + #MBUF_HDR_ROOM + 256 + + ) + +60  + #IP_HDR_SIZE_IPV6 + 40 + + ) + +61  + #IP_HDR_SRC_ADR_OFST_IPV6 + 8 + + ) + +62  + #IP_HDR_DST_ADR_OFST_IPV6 + 24 + + ) + +65  + #IPV6_L3FWD_LPM_MAX_RULES + 1024 + + ) + +66  + #IPV6_L3FWD_LPM_NUMBER_TBL8S + (1 << 16 + + ) + +68  + #MAX_FIB_PATHS + 8 + + ) + +74  + sv6_routg_fo + { + +75 +ut8_t + + md_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +76 +ut8_t + + mdth +; + +77 +ut32_t + + mmric +; + +78 +ut32_t + + mfib_nh_size +; + +79 +ut8_t + + mnh_v6 +[ +MAX_FIB_PATHS +][ +RTE_LPM_IPV6_ADDR_SIZE +]; + +80 +ut8_t + + mout_pt +[ +MAX_FIB_PATHS +]; + +81 } + g__e_che_igd +; + +87  + sv6_fib_th + { + +88 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +89 +ut32_t + + mfcou +; + +90 +ut8_t + + mout_pt +; + +91  +l2_adj_v6_y + * + ml2_adj_v6_r +; + +92 } + g__e_che_igd +; + +98  + sv6_fib_fo + { + +99 +ut8_t + + md_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +100 +ut8_t + + mdth +; + +101 +ut32_t + + mmric +; + +102 +ut32_t + + mfib_nh_size +; + +103  +v6_fib_th + * + mth +[ +MAX_FIB_PATHS +]; + +104 } + g__e_che_igd +; + +109  + sl2_adj_v6_y + { + +110  +h_addr + + mh_addr +; + +111 +ut8_t + + mout_pt_id +; + +112 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +113 +ut32_t + + mfcou +; + +114 +ut8_t + + ml2_rg +[256]; + +115 +l2_phy_r_t + * + mphy_pt +; + +116 +ut8_t + + mags +; + +117 } + g__e_che_igd +; + +122  + sl2_adj_key_v6 + { + +125 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +126 +ut8_t + + mout_pt_id +; + +127 +ut8_t + + mfr1 +; + +128 +ut8_t + + mfr2 +; + +129 +ut8_t + + mfr3 +; + +135  + sfib_th_key_v6 + { + +138 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +139 +ut8_t + + mout_pt +; + +140 +ut8_t + + mfr1 +; + +141 +ut8_t + + mfr2 +; + +142 +ut8_t + + mfr3 +; + +145  + sv6_oc_ty + { + +146 +ut8_t + + moc_ty +; + +147 (* + mfunc +( + me_mbuf + **, + mut16_t +, + mut64_t +, + +148 + ml2_phy_r_t + *); + +149 } + g__e_che_igd +; + +157  +m6_ +(); + +166  +m6_b_rou_add +( +v6_routg_fo + * +da +); + +177  +m6_b_rou_de +( +ut8_t + +d_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +178 +ut8_t + +dth +); + +191  +m6_b_lookup +( +e_mbuf + ** +pkts_bur +, +ut16_t + +nb_pkts +, + +192 +ut64_t + +pkts_mask +, + +193 +l2_phy_r_t + * +pt_r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +194 +ut64_t + * +h_mask +); + +209  +l3fwd_rx_v6_cks +( +e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +210 +ut64_t + +vid_pkts_mask +, + +211 +l2_phy_r_t + * +_pt +); + +222  +v6_fib_th + * +puϋ_v6_fib_th +( +ut8_t + + +223 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +224 +ut8_t + +out_pt +); + +234  +v6_fib_th + * +ve_v6_fib_th_y +( +fib_th_key_v6 + + +235 +th_key +); + +245  +l2_adj_v6_y + * +ve_v6_l2_adj_y +( +l2_adj_key_v6 + + +246 +l2_adj_key +); + +257  +l2_adj_v6_y + * +puϋ_v6_l2_adj +( +ut8_t + + +258 +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +259 +ut8_t + +ptid +); + +272  +g_de_mac_f_xth_v6 +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +273 +ut32_t + +out_phy_pt +, + +274  +h_addr + * +hw_addr +); + +281  +move_v6_fib_l2_adj_y +(* +y +); + +284 +v6_l3_oc_ty_add +( +ut8_t + +oc_ty +, + +285 (* +func +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +286 +l2_phy_r_t + *)); + +289 + `v6_lol_div +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +290 +l2_phy_r_t + *); + +293 + `v6_fwd_div +( +e_mbuf + **, +ut16_t +, +ut64_t +, + +294 +l2_phy_r_t + *); + +296  + `is_vid_v6_pkt +( +v6_hdr + * +pkt +, +ut32_t + +lk_n +); + +297 +ut8_t + + `v6_hash_ld_b +( +e_mbuf + * +mbuf +); + +311  + `sve_v6_l2_adj +( +ut8_t + +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +ptid +, + +312  +h_addr + * +hw_addr +); + +314  + `v6_e__hash_b +(); + + @VIL/l2l3_stack/l3fwd_main.c + +24  + ~"l3fwd_comm.h +" + +25  + ~"l2_o.h +" + +26  + ~"l3fwd_m4.h +" + +27  + ~"l3fwd_m6.h +" + +28  + ~"r.h +" + +29  + ~"lib_p.h +" + +30  + ~"lib_icmpv6.h +" + +32  +routg_fo + + gput_y +[] = { + +33 #i +MULTIPATH_FEAT + + +34 { +IPv4 +(30, 12, 0, 1), 24, 0, 4, + +35 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +36 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +38 { +IPv4 +(40, 12, 0, 1), 24, 0, 4, + +39 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +40 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +42 { +IPv4 +(50, 12, 0, 1), 24, 0, 4, + +43 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +44 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +46 { +IPv4 +(60, 12, 0, 1), 24, 0, 4, + +47 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +48 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +50 { +IPv4 +(100, 100, 100, 100), 24, 0, 2, + +51 { +IPv4 +(120, 0, 0, 2), IPv4(120, 0, 0, 2)}, {1, 1} }, + +53 { +IPv4 +(200, 100, 100, 100), 24, 0, 2, + +54 { +IPv4 +(80, 0, 0, 2), IPv4(80, 40, 50, 60)}, {1, 1} }, + +56 { +IPv4 +(30, 12, 0, 1), 24, 0, 1, + +57 { +IPv4 +(192, 168, 0, 2)}, {1} }, + +59 { +IPv4 +(20, 12, 0, 1), 24, 0, 1, + +60 { +IPv4 +(120, 0, 0, 2)}, {1} }, + +64  +v6_routg_fo + + gv6_put_y +[] = { + +81  + $l3fwd_ +() + +83 + `tf +(" *********** L3 Initialization START ************\n"); + +84 i( + `m_ +() == 0) { + +85 + `e_ex +( +EXIT_FAILURE +, "L3 Initialization IPv4 Failed\n"); + +87 i( + `m6_ +() == 0) { + +88 + `e_ex +( +EXIT_FAILURE +, "L3 Initialization for IPV6 Failed\n"); + +91 + `li_add_ty +( +ETHER_TYPE_IPv4 +, +l3fwd_rx_v4_cks +); + +92 + `li_add_ty +( +ETHER_TYPE_IPv6 +, +l3fwd_rx_v6_cks +); + +94 + `l3_oc_ty_add +( +IPPROTO_ICMP +, +_lol_cks_oss +); + +95 + `l3_oc_ty_add +( +IPPROTO_TCP +, +_fwd_div +); + +96 + `l3_oc_ty_add +( +IPPROTO_UDP +, +_fwd_div +); + +98 + `v6_l3_oc_ty_add +( +IPPROTO_ICMPV6 +, +v6_lol_div +); + +99 + `v6_l3_oc_ty_add +( +IPPROTO_TCP +, +v6_fwd_div +); + +100 + `v6_l3_oc_ty_add +( +IPPROTO_UDP +, +v6_fwd_div +); + +102 + } +} + +104  + $puϋ_m_rous +() + +106 + `puϋ_m4_b_rous +(); + +108 + } +} + +110  + $puϋ_m4_b_rous +() + +112 +ut8_t + +i +; + +113 +tf + + +115  +i + = 0; i < +MAX_ROUTES +; i++) { + +116 i( + `m4_b_rou_add +(& +put_y +[ +i +])) { + +118 + `tf +("TٮouAdded# %d\n", +i + + 1); + +120 + `e_ex +( +EXIT_FAILURE +, + +122 +i +); + +125 +tf + + +127 + } +} + +129  + $puϋ_m6_b_rous +() + +131 +ut8_t + +i +; + +132 +tf + + +134  +i + = 0; i < 2; i++) { + +135 i( + `m6_b_rou_add +(& +v6_put_y +[ +i +])) { + +137 + `tf +("Addedou # %d\n", +i +); + +139 + `e_ex +( +EXIT_FAILURE +, + +141 +i +); + +144 + `tf +(" *********** L3 IPV6 Route Initialization END ************\n"); + +145 + } +} + + @VIL/l2l3_stack/lib_arp.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~"r.h +" + +38  + ~"l2_o.h +" + +39  + ~"lib_p.h +" + +40  + ~"l3fwd_m4.h +" + +41  + ~"vnf_comm.h +" + +43 #i( +RTE_BYTE_ORDER + = +RTE_LITTLE_ENDIAN +) + +44  + #CHECK_ENDIAN_16 +( +x + + `e_be_to_u_16 +(x) + + ) + +45  + #CHECK_ENDIAN_32 +( +x + + `e_be_to_u_32 +(x) + + ) + +47  + #CHECK_ENDIAN_16 +( +x +(x) + + ) + +48  + #CHECK_ENDIAN_32 +( +x +(x) + + ) + +51  + #NB_ARPICMP_MBUF + 64 + + ) + +52  + #NB_NDICMP_MBUF + 64 + + ) + +53  + #IP_VERSION_4 + 0x40 + + ) + +54  + #IP_HDRLEN + 0x05 + + ) + +55  + #IP_VHL_DEF + ( +IP_VERSION_4 + | +IP_HDRLEN +) + + ) + +57  + #is_mui_v4_addr +( +v4_addr +) \ + +58 ((( + `e_be_to_u_32 +(( +v4_addr +)>> 24& 0x000000FF=0xE0) + + ) + +60 +ut8_t + +v__pt_a +[ +PIPELINE_MAX_PORT_IN +]; + +61 +ut32_t + +tim_lce +; + +62 +ut32_t + + gp_timeout + = +ARP_TIMER_EXPIRY +; + +65  + #INADDRSZ + 4 + + ) + +66  + #IN6ADDRSZ + 16 + + ) + +67  +my___v6 +( +af +, cڡ * +c +, * +d +); + +68  +__v6 +(cڡ * +c +, * +d +); + +69  +__v4 +(cڡ * +c +, * +d +); + +70  +cvt_efixn_to_tmask_v6 +( +ut32_t + +dth +, + +71 +ut8_t + +tmask_v6 +[]); + +73 +ut8_t + + gvnf_comm_p_lib_ +; + +74 +ut8_t + + gvnf_comm_nd_lib_ +; + +75 +ut8_t + + gldb_pe_cou +; + +77 +ut32_t + + gARPICMP_DEBUG +; + +78 +ut32_t + + gNDIPV6_DEBUG +; + +80 +ut32_t + + gp_rou_tbl_dex +; + +81 +ut32_t + + gnd_rou_tbl_dex +; + +82 +ut32_t + + glk_hw_addr_y_idx +; + +84 +ut32_t + + glib_p_g_mac_q +; + +85 +ut32_t + + glib_p_nh_found +; + +86 +ut32_t + + glib_p_no_nh_found +; + +87 +ut32_t + + glib_p_p_y_found +; + +88 +ut32_t + + glib_p_no_p_y_found +; + +89 +ut32_t + + glib_p_puϋ_ed +; + +90 +ut32_t + + glib_p_de_ed +; + +91 +ut32_t + + glib_p_dui_found +; + +93 +ut32_t + + glib_nd_g_mac_q +; + +94 +ut32_t + + glib_nd_nh_found +; + +95 +ut32_t + + glib_nd_no_nh_found +; + +96 +ut32_t + + glib_nd_nd_y_found +; + +97 +ut32_t + + glib_nd_no_p_y_found +; + +98 +ut32_t + + glib_nd_puϋ_ed +; + +99 +ut32_t + + glib_nd_de_ed +; + +100 +ut32_t + + glib_nd_dui_found +; + +101  +e_mempo + * + glib_p_pktmbuf_tx_po +; + +102  +e_mempo + * + glib_nd_pktmbuf_tx_po +; + +104  +e_mbuf + * + glib_p_pkt +; + +105  +e_mbuf + * + glib_nd_pkt +; + +107 +ut8_t + + gdeu_h_addr +[6] = { 0, 0, 0, 0, 1, 1 }; + +108 +ut8_t + + gdeu_ +[4] = { 0, 0, 1, 1 }; + +110  +e_hash_ms + + gp_hash_ms + = { + +111 . +me + = "ARP", + +112 . + gs + = 64, + +113 . + grved + = 0, + +114 . + gkey_n + = ( +p_key_v4 +), + +115 . + ghash_func + = +e_jhash +, + +116 . + ghash_func__v + = 0, + +119  +e_hash_ms + + gnd_hash_ms + = { + +120 . +me + = "ND", + +121 . + gs + = 64, + +122 . + grved + = 0, + +123 . + gkey_n + = ( +nd_key_v6 +), + +124 . + ghash_func + = +e_jhash +, + +125 . + ghash_func__v + = 0, + +128  +e_hash + * + gp_hash_hd +; + +129  +e_hash + * + gnd_hash_hd +; + +131  +t_pkt1 +( +e_mbuf + * +pkt +); + +133  +p_ms + * + gmyA +; + +134  +e_pe + * + gmyP +; + +135 +ut8_t + + gnum_vnf_thads +; + +140  + sp_pt_addss + { + +141 +ut32_t + + m +; + +142 +ut8_t + + mmac_addr +[6]; + +145  +p_pt_addss + + gp_pt_addss +[ +RTE_MAX_ETHPORTS +]; + +146  +e_mempo + * + gtim_mempo_p +; + +148  + gtim_objs_mempo_cou + = 70000; + +150  + #MAX_NUM_ARP_ENTRIES + 64 + + ) + +151  + #MAX_NUM_ND_ENTRIES + 64 + + ) + +153 +ut32_t + +g_nh +(uint32_t, uint32_t *); + +154  +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pt +, ut8_ +nhv6 +[]); + +156  + #MAX_ARP_DATA_ENTRY_TABLE + 7 + + ) + +158  +b_p_y_da + + gp_y_da_b +[ +MAX_ARP_DATA_ENTRY_TABLE +] = { + +159 {{0, 0, 0, 0, 0, 1}, 1, +INCOMPLETE +, +IPv4 +(192, 168, 0, 2)}, + +160 {{0, 0, 0, 0, 0, 2}, 0, +INCOMPLETE +, +IPv4 +(192, 168, 0, 3)}, + +161 {{0, 0, 0, 0, 0, 1}, 1, +INCOMPLETE +, +IPv4 +(30, 40, 50, 60)}, + +162 {{0, 0, 0, 0, 0, 1}, 1, +INCOMPLETE +, +IPv4 +(120, 0, 0, 2)}, + +163 {{0, 0, 0, 0, 0, 4}, 3, +INCOMPLETE +, +IPv4 +(1, 1, 1, 4)}, + +164 {{0, 0, 0, 0, 0, 5}, 4, +INCOMPLETE +, +IPv4 +(1, 1, 1, 5)}, + +165 {{0, 0, 0, 0, 0, 6}, 1, +INCOMPLETE +, +IPv4 +(1, 1, 1, 7)}, + +168  + #MAX_ND_DATA_ENTRY_TABLE + 7 + + ) + +169  +b_nd_y_da + + gnd_y_da_b +[ +MAX_ND_DATA_ENTRY_TABLE +] = { + +170 {{0, 0, 0, 0, 0, 8}, 1, +INCOMPLETE +, + +173 {{0, 0, 0, 0, 0, 9}, 1, +INCOMPLETE +, + +175 {{0, 0, 0, 0, 0, 10}, 2, +INCOMPLETE +, + +177 {{0, 0, 0, 0, 0, 11}, 3, +INCOMPLETE +, + +179 {{0, 0, 0, 0, 0, 12}, 4, +INCOMPLETE +, + +181 {{0, 0, 0, 0, 0, 13}, 5, +INCOMPLETE +, + +183 {{0, 0, 0, 0, 0, 14}, 6, +INCOMPLETE +, + +187  +lib_nd_rou_b_y + + glib_nd_rou_b +[ +MAX_ND_RT_ENTRY +] = { + +222  +lib_p_rou_b_y + + glib_p_rou_b +[ +MAX_ARP_RT_ENTRY +] = { + +241  +t_a +(); + +244  + $t_a +() + +246 * +y +[10]; + +247 +size_t + +size +; + +248 ** +rgs +; + +249 +size_t + +i +; + +251 +size + = + `backa +( +y +, 10); + +252 +rgs + = + `backa_symbs +( +y +, +size +); + +254 + `RTE_LOG +( +INFO +, +LIBARP +, "Obed %zd sck fmes.\n", +size +); + +256  +i + = 0; i < +size +; i++) + +257 + `RTE_LOG +( +INFO +, +LIBARP +, "%s\n", +rgs +[ +i +]); + +259 + ` +( +rgs +); + +260 + } +} + +262 +ut32_t + + $g_nh +( +ut32_t + + +, ut32_* +pt +) + +264  +i + = 0; + +265  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +266 i((( +lib_p_rou_b +[ +i +]. + +267 + + & +lib_p_rou_b +[ +i +]. +mask +) == + +268 ( + + & +lib_p_rou_b +[ +i +]. +mask +))) { + +270 * +pt + = +lib_p_rou_b +[ +i +].port; + +271 +lib_p_nh_found +++; + +272  +lib_p_rou_b +[ +i +]. +nh +; + +274 i( +ARPICMP_DEBUG +) + +275 + `tf +("Noh match ip 0x%x,ort %u,_ip " + +277 + +, * +pt +, +lib_p_rou_b +[ +i +].ip, + +278 +lib_p_rou_b +[ +i +]. +pt +, + +279 +lib_p_rou_b +[ +i +]. +mask +, + +280 ( +lib_p_rou_b +[ +i +]. + + & + +281 +lib_p_rou_b +[ +i +]. +mask +), + +282 ( + + & +lib_p_rou_b +[ +i +]. +mask +)); + +284 i( +ARPICMP_DEBUG +) + +285 + `tf +("NNH - i0x%x,܈%u\n", + +, * +pt +); + +286 +lib_p_no_nh_found +++; + +288 + } +} + +291  + $g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pt +, ut8_ +nhv6 +[]) + +293  +i + = 0; + +294 +ut8_t + +tmask_v6 +[16], +t_nd +[16], +t_ +[16]; + +295 +ut8_t + +k + = 0, +l + = 0, +dthags + = 0, +dthags1 + = 0; + +296 + `memt +( +tmask_v6 +, 0, (netmask_ipv6)); + +297 + `memt +( +t_nd +, 0, (netip_nd)); + +298 + `memt +( +t_ +, 0, (netip_in)); + +299 i(! +v6 +) + +301  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +303 + `cvt_efixn_to_tmask_v6 +( +lib_nd_rou_b +[ +i +]. +dth +, + +304 +tmask_v6 +); + +306  +k + = 0; k < 16; k++) { + +307 i( +lib_nd_rou_b +[ +i +]. +v6 +[ +k +] & +tmask_v6 +[k]) { + +308 +dthags +++; + +309 +t_nd +[ +k +] = +lib_nd_rou_b +[ +i +]. +v6 +[k]; + +313  +l + = 0; < 16;++) { + +314 i( +v6 +[ +l +] & +tmask_v6 +[l]) { + +315 +dthags1 +++; + +316 +t_ +[ +l +] = +v6 +[l]; + +319  +j + = 0; + +320 i(( +dthags + = +dthags1 +) + +321 && ( + `memcmp +( +t_nd +, +t_ +, (netip_nd)) == 0)) { + +323 * +pt + = +lib_nd_rou_b +[ +i +].port; + +324 +lib_nd_nh_found +++; + +326  +j + = 0; j < 16; j++) + +327 +nhv6 +[ +j +] = +lib_nd_rou_b +[ +i +].nhipv6[j]; + +332 i( +NDIPV6_DEBUG +) + +333 + `tf +("Noh match\n"); + +334 +dthags + = 0; + +335 +dthags1 + = 0; + +337 i( +NDIPV6_DEBUG +) + +338 + `tf +("NNH - i0x%x,܈%u\n", +v6 +[0], * +pt +); + +339 +lib_nd_no_nh_found +++; + +340 + } +} + +343  + $g_de_mac_addr_pt +(cڡ +ut32_t + +addr +, + +344 +ut32_t + * +phy_pt +,  +h_addr + * +hw_addr +) + +346 +lib_p_g_mac_q +++; + +347 +ut32_t + +nh + = 0; + +349 +nh + = + `g_nh +( +addr +, +phy_pt +); + +350 i( +nh + == 0) { + +351 i( +ARPICMP_DEBUG +) + +352 + `tf +("ARPICMPoh found for ip %x,ort %d\n", + +353 +addr +, * +phy_pt +); + +355  +NH_NOT_FOUND +; + +358  +p_y_da + * +t_p_da + = +NULL +; + +359  +p_key_v4 + +tmp_p_key +; + +360 +tmp_p_key +. +pt_id + = * +phy_pt +; + +361 +tmp_p_key +. + + = +nh +; + +363 i( +ARPICMP_DEBUG +) + +364 + `tf +("%s:h: %x,hypt: %d\n", +__FUNCTION__ +, +nh +, + +365 * +phy_pt +); + +367 +t_p_da + = + `ve_p_y +( +tmp_p_key +); + +368 i( +t_p_da + = +NULL +) { + +369 i( +ARPICMP_DEBUG +) { + +370 +tf + + +372 +addr +, * +phy_pt +); + +373 + `t_p_b +(); + +375 i( +nh + != 0) { + +376 i( +ARPICMP_DEBUG +) + +377 + `tf +("CG-NAPTequesting ARP for ip %x, " + +378 "p܈%d\n", +nh +, * +phy_pt +); + +379 + `que_p +(* +phy_pt +, +nh +); + +382 +lib_p_no_p_y_found +++; + +383  +ARP_NOT_FOUND +; + +385 + `h_addr_cy +(& +t_p_da +-> +h_addr +, +hw_addr +); + +386 +lib_p_p_y_found +++; + +387 i( +ARPICMP_DEBUG +) + +388 + `tf +("%s: ARPICMP hwaddfound\n", +__FUNCTION__ +); + +389  +ARP_FOUND +; + +390 + } +} + +392  + $g_de_mac_addss +(cڡ +ut32_t + +addr +, ut32_* +phy_pt +, + +393  +h_addr + * +hw_addr +, +ut32_t + * +nh +) + +395 +lib_p_g_mac_q +++; + +397 * +nh + = + `g_nh +( +addr +, +phy_pt +); + +398 i(* +nh + == 0) { + +399 i( +ARPICMP_DEBUG + && +addr +) + +400 + `RTE_LOG +( +INFO +, +LIBARP +, + +402 +addr +, * +phy_pt +); + +406  +p_y_da + * +t_p_da + = +NULL +; + +407  +p_key_v4 + +tmp_p_key +; + +408 +tmp_p_key +. +pt_id + = * +phy_pt +; + +409 +tmp_p_key +. + + = * +nh +; + +411 +t_p_da + = + `ve_p_y +( +tmp_p_key +); + +412 i( +t_p_da + = +NULL +) { + +413 i( +ARPICMP_DEBUG + && +addr +) { + +414 + `RTE_LOG +( +INFO +, +LIBARP +, + +416 +addr +, * +phy_pt +); + +417 + `t_p_b +(); + +419 +lib_p_no_p_y_found +++; + +422 + `h_addr_cy +(& +t_p_da +-> +h_addr +, +hw_addr +); + +423 +lib_p_p_y_found +++; + +426 + } +} + +428  + $g_de_mac_addr +(cڡ +ut32_t + +addr +, + +429 +ut32_t + * +phy_pt +,  +h_addr + * +hw_addr +) + +431 +lib_p_g_mac_q +++; + +432 +ut32_t + +nh + = 0; + +434 +nh + = + `g_nh +( +addr +, +phy_pt +); + +435 i( +nh + == 0) { + +436 i( +ARPICMP_DEBUG + && +addr +) + +437 + `RTE_LOG +( +INFO +, +LIBARP +, + +439 +addr +, * +phy_pt +); + +443  +p_y_da + * +t_p_da + = +NULL +; + +444  +p_key_v4 + +tmp_p_key +; + +445 +tmp_p_key +. +pt_id + = * +phy_pt +; + +446 +tmp_p_key +. + + = +nh +; + +448 +t_p_da + = + `ve_p_y +( +tmp_p_key +); + +449 i( +t_p_da + = +NULL +) { + +450 i( +ARPICMP_DEBUG + && +addr +) { + +451 +tf + + +453 +addr +, * +phy_pt +); + +454 + `t_p_b +(); + +457 i( +nh + != 0) { + +458 i( +ARPICMP_DEBUG + > 4) + +459 +tf + + +461 +nh +, * +phy_pt +); + +462 i( + `ifm_chk_pt_v4_abd +(* +phy_pt +)) { + +463 + `que_p +(* +phy_pt +, +nh +); + +465 i( +ARPICMP_DEBUG +) + +466 + `RTE_LOG +( +INFO +, +LIBARP +, + +468 +__FUNCTION__ +, * +phy_pt +); + +472 +lib_p_no_p_y_found +++; + +475 + `h_addr_cy +(& +t_p_da +-> +h_addr +, +hw_addr +); + +476 +lib_p_p_y_found +++; + +478 + } +} + +480  + $g_de_mac_addss_v6_pt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +481  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +483  +i + = 0, +j + = 0, +ag + = 0; + +484 +lib_nd_g_mac_q +++; + +486 + `g_nh_v6 +( +v6addr +, +phy_pt +, +nhv6 +); + +487  +j + = 0; j < 16; j++) { + +488 i( +nhv6 +[ +j +]) + +489 +ag +++; + +491 i( +ag + == 0) { + +492 i( +NDIPV6_DEBUG +) + +493 + `tf +("NDIPV6oh found for ipv6 " + +496 +v6addr +[0], ipv6addr[1], ipv6addr[2], + +497 +v6addr +[3], ipv6addr[4], ipv6addr[5], + +498 +v6addr +[6], ipv6addr[7], ipv6addr[8], + +499 +v6addr +[9], ipv6addr[10], ipv6addr[11], + +500 +v6addr +[12], ipv6addr[13], ipv6addr[14], + +501 +v6addr +[15], * +phy_pt +); + +505  +nd_y_da + * +t_nd_da + = +NULL +; + +506  +nd_key_v6 + +tmp_nd_key +; + +507 +tmp_nd_key +. +pt_id + = * +phy_pt +; + +509  +i + = 0; i < 16; i++) + +510 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +512 +t_nd_da + = + `ve_nd_y +( +tmp_nd_key +); + +513 i( +t_nd_da + = +NULL +) { + +514 i( +NDIPV6_DEBUG +) { + +515 + `tf +("NDIPV6odntry found for ip %x,ort %d\n", + +516 +v6addr +[0], * +phy_pt +); + +518 +lib_nd_no_p_y_found +++; + +521 + `h_addr_cy +(& +t_nd_da +-> +h_addr +, +hw_addr +); + +522 +lib_nd_nd_y_found +++; + +524 + } +} + +526  + $g_de_mac_addss_v6 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +527  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +529  +i + = 0, +j + = 0, +ag + = 0; + +530 +lib_nd_g_mac_q +++; + +532 + `g_nh_v6 +( +v6addr +, +phy_pt +, +nhv6 +); + +533  +j + = 0; j < 16; j++) { + +534 i( +nhv6 +[ +j +]) { + +535 +ag +++; + +538 i( +ag + == 0) { + +539 i( +NDIPV6_DEBUG + && +v6addr +) + +540 + `RTE_LOG +( +INFO +, +LIBARP +, + +542 +v6addr +[0], * +phy_pt +); + +546  +nd_y_da + * +t_nd_da + = +NULL +; + +547  +nd_key_v6 + +tmp_nd_key +; + +548 +tmp_nd_key +. +pt_id + = * +phy_pt +; + +550  +i + = 0; i < 16; i++) { + +551 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +554 +t_nd_da + = + `ve_nd_y +( +tmp_nd_key +); + +555 i( +t_nd_da + = +NULL +) { + +556 i( +NDIPV6_DEBUG + && +v6addr +) { + +557 + `RTE_LOG +( +INFO +, +LIBARP +, + +559 +v6addr +[0], * +phy_pt +); + +561 i( +ag + != 0) { + +562 i( +ARPICMP_DEBUG + > 4) + +563 +tf + + +565 * +phy_pt +); + +566 + `que_nd +(& +nhv6 +[0], + `ifm_g_pt +(* +phy_pt +)); + +570 +lib_nd_no_p_y_found +++; + +573 + `h_addr_cy +(& +t_nd_da +-> +h_addr +, +hw_addr +); + +574 +lib_nd_nd_y_found +++; + +576 + } +} + +582  + slib_p_p_b_y + { + +583  +e_pe_b_y + + mhd +; + +584 +ut64_t + + mmaddr +; + +587 cڡ * + $p__me +( +ut16_t + +p_ +) + +589  + `CHECK_ENDIAN_16 +( +p_ +)) { + +590 ( +ARP_OP_REQUEST +): + +592 ( +ARP_OP_REPLY +): + +594 ( +ARP_OP_REVREQUEST +): + +596 ( +ARP_OP_REVREPLY +): + +598 ( +ARP_OP_INVREQUEST +): + +600 ( +ARP_OP_INVREPLY +): + +606 + } +} + +608  + $t_icmp_ck +( +icmp_hdr + * +icmp_h +) + +610 + `RTE_LOG +( +INFO +, +LIBARP +, " ICMP:ype=%d (%s) code=%d id=%d seqnum=%d\n", + +611 +icmp_h +-> +icmp_ty +, + +612 ( +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REPLY + ? "Reply" : + +613 ( +icmp_h +-> +icmp_ty + == + +614 +IP_ICMP_ECHO_REQUEST + ? "Reqest" : "Undef")), + +615 +icmp_h +-> +icmp_code +, + `CHECK_ENDIAN_16 +(icmp_h-> +icmp_idt +), + +616 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_q_nb +)); + +617 + } +} + +619  + $t_v4_h +( +v4_hdr + * +_h +) + +621  +icmp_hdr + * +icmp_h + = + +622 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +623 + `RTE_LOG +( +INFO +, +LIBARP +, " IPv4: Version=%d HLEN=%d Type=%d Length=%d\n", + +624 ( +_h +-> +vsi_ihl + & 0xf0) >> 4, (ip_h->version_ihl & 0x0f), + +625 +_h +-> +ty_of_rvi +, + `e_u_to_be_16 +(_h-> +tٮ_ngth +)); + +626 i( +_h +-> +xt_o_id + = +IPPROTO_ICMP +) { + +627 + `t_icmp_ck +( +icmp_h +); + +629 + } +} + +631  + $t_p_ck +( +p_hdr + * +p_h +) + +633 + `RTE_LOG +( +INFO +, +LIBARP +, " ARP: hrd=%droto=0x%04x hln=%d " + +635 + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +), + +636 + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +),_h-> +p_h +, + +637 +p_h +-> +p_n +, + `CHECK_ENDIAN_16 +׽_h-> +p_ +), + +638 + `p__me +( +p_h +-> +p_ +)); + +640 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +! +ARP_HRD_ETHER +) { + +641 + `RTE_LOG +( +INFO +, +LIBARP +, + +643 ( +p_h +-> +p_hrd +)); + +644 } i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +! +ETHER_TYPE_IPv4 +) { + +645 + `RTE_LOG +( +INFO +, +LIBARP +, + +647 ( +p_h +-> +p_o +)); + +648 } i( +p_h +-> +p_h + != 6) { + +649 + `RTE_LOG +( +INFO +, +LIBARP +, + +651 +p_h +-> +p_h +); + +652 } i( +p_h +-> +p_n + != 4) { + +653 + `RTE_LOG +( +INFO +, +LIBARP +, + +655 +p_h +-> +p_n +); + +657 + `RTE_LOG +( +INFO +, +LIBARP +, + +659 +p_h +-> +p_da +. +p_sha +. +addr_bys +[0], + +660 +p_h +-> +p_da +. +p_sha +. +addr_bys +[1], + +661 +p_h +-> +p_da +. +p_sha +. +addr_bys +[2], + +662 +p_h +-> +p_da +. +p_sha +. +addr_bys +[3], + +663 +p_h +-> +p_da +. +p_sha +. +addr_bys +[4], + +664 +p_h +-> +p_da +. +p_sha +. +addr_bys +[5]); + +665 + `RTE_LOG +( +INFO +, +LIBARP +, " sip=%d.%d.%d.%d\n", + +666 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 24) & 0xFF, + +667 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 16) & 0xFF, + +668 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 8) & 0xFF, + +669 + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) & 0xFF); + +670 + `RTE_LOG +( +INFO +, +LIBARP +, + +672 +p_h +-> +p_da +. +p_tha +. +addr_bys +[0], + +673 +p_h +-> +p_da +. +p_tha +. +addr_bys +[1], + +674 +p_h +-> +p_da +. +p_tha +. +addr_bys +[2], + +675 +p_h +-> +p_da +. +p_tha +. +addr_bys +[3], + +676 +p_h +-> +p_da +. +p_tha +. +addr_bys +[4], + +677 +p_h +-> +p_da +. +p_tha +. +addr_bys +[5]); + +678 + `RTE_LOG +( +INFO +, +LIBARP +, "ip=%d.%d.%d.%d\n", + +679 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 24) & 0xFF, + +680 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 16) & 0xFF, + +681 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 8) & 0xFF, + +682 + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) & 0xFF); + +684 + } +} + +686  + $t_h +( +h_hdr + * +h_h +) + +688 + `RTE_LOG +( +INFO +, +LIBARP +, " ETH: src=%02X:%02X:%02X:%02X:%02X:%02X", + +689 +h_h +-> +s_addr +. +addr_bys +[0], + +690 +h_h +-> +s_addr +. +addr_bys +[1], + +691 +h_h +-> +s_addr +. +addr_bys +[2], + +692 +h_h +-> +s_addr +. +addr_bys +[3], + +693 +h_h +-> +s_addr +. +addr_bys +[4],th_h->s_addr.addr_bytes[5]); + +694 + `RTE_LOG +( +INFO +, +LIBARP +, " dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + +695 +h_h +-> +d_addr +. +addr_bys +[0], + +696 +h_h +-> +d_addr +. +addr_bys +[1], + +697 +h_h +-> +d_addr +. +addr_bys +[2], + +698 +h_h +-> +d_addr +. +addr_bys +[3], + +699 +h_h +-> +d_addr +. +addr_bys +[4],th_h->d_addr.addr_bytes[5]); + +701 + } +} + +704 + $t_mbuf +(cڡ * +rx_tx +, +ut8_t + +ptid +,  +e_mbuf + * +mbuf +, + +705  +le +) + +707  +h_hdr + * +h_h + = + `e_pktmbuf_mtod +( +mbuf +, ether_hdr *); + +708  +p_hdr + * +p_h + = + +709 ( +p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +710  +v4_hdr + * +v4_h + = + +711 ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +713 + `RTE_LOG +( +INFO +, +LIBARP +, "%s(%d): onort %dkt-len=%ub-segs=%u\n", + +714 +rx_tx +, +le +, +ptid +, +mbuf +-> +pkt_n +, mbuf-> +nb_gs +); + +715 + `t_h +( +h_h +); + +716  + `e_u_to_be_16 +( +h_h +-> +h_ty +)) { + +717  +ETHER_TYPE_IPv4 +: + +718 + `t_v4_h +( +v4_h +); + +720  +ETHER_TYPE_ARP +: + +721 + `t_p_ck +( +p_h +); + +724 + `RTE_LOG +( +INFO +, +LIBARP +, " unknownacketype\n"); + +727 + `fush +( +dout +); + +728 + } +} + +730  +p_y_da + * + $ve_p_y +( +p_key_v4 + +p_key +) + +732  +p_y_da + * +t_p_da + = +NULL +; + +733 +p_key +. +fr1 + = 0; + +734 +p_key +. +fr2 + = 0; + +735 +p_key +. +fr3 + = 0; + +737  +t + = + `e_hash_lookup_da +( +p_hash_hd +, & +p_key +, + +738 (**)& +t_p_da +); + +739 i( +t + < 0) { + +743 i( +t_p_da +-> +mode + = +DYNAMIC_ARP +) { + +744  +p_tim_key + +back_key +; + +745 +back_key +. +pt_id + = +t_p_da +-> +pt +; + +746 +back_key +. + + = +t_p_da +->ip; + +748 i( + `e_tim_t +( +t_p_da +-> +tim +, + +749 ( +p_timeout + * + `e_g_tsc_hz +()), + +750 +SINGLE +, +tim_lce +, + +751 +p_tim_back +, + +752 & +back_key +) < 0) + +753 i( +ARPICMP_DEBUG +) + +754 + `RTE_LOG +( +INFO +, +LIBARP +, + +758  +t_p_da +; + +761  +NULL +; + +762 + } +} + +764  +nd_y_da + * + $ve_nd_y +( +nd_key_v6 + +nd_key +) + +766  +nd_y_da + * +t_nd_da + = +NULL +; + +767 +nd_key +. +fr1 + = 0; + +768 +nd_key +. +fr2 + = 0; + +769 +nd_key +. +fr3 + = 0; + +770  +i + = 0; + +773  +t + = + `e_hash_lookup_da +( +nd_hash_hd +, & +nd_key +, + +774 (**)& +t_nd_da +); + +775 i( +t + < 0) { + +779 i( +t_nd_da +-> +mode + = +DYNAMIC_ND +) { + +780  +nd_tim_key + +back_key +; + +781 +back_key +. +pt_id + = +t_nd_da +-> +pt +; + +783  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +784 +back_key +. +v6 +[ +i +] = +t_nd_da +->ipv6[i]; + +788 i( +e_tim_t + + +789 ( +t_nd_da +-> +tim +, + +790 ( +p_timeout + * + `e_g_tsc_hz +()), +SINGLE +, + +791 +tim_lce +, +nd_tim_back +, & +back_key +) < 0) + +792 i( +ARPICMP_DEBUG +) + +793 + `RTE_LOG +( +INFO +, +LIBARP +, + +796  +t_nd_da +; + +799  +NULL +; + +800 + } +} + +802  + $t_p_b +() + +804 cڡ * +xt_key +; + +805 * +xt_da +; + +806 +ut32_t + + + = 0; + +808 +tf + + +810 +tf + + +812 + `tf +("\tport hwddr status ipddr\n"); + +813 +tf + + +816  + `e_hash_e +( +p_hash_hd +, & +xt_key +, & +xt_da +, & + +) + +819  +p_y_da + * +tmp_p_da + = + +820 ( +p_y_da + *) +xt_da +; + +821  +p_key_v4 + +tmp_p_key +; + +822 + `memy +(& +tmp_p_key +, +xt_key +, ( +p_key_v4 +)); + +823 +tf + + +825 +tmp_p_da +-> +pt +,mp_p_da-> +h_addr +. +addr_bys +[0], + +826 +tmp_p_da +-> +h_addr +. +addr_bys +[1], + +827 +tmp_p_da +-> +h_addr +. +addr_bys +[2], + +828 +tmp_p_da +-> +h_addr +. +addr_bys +[3], + +829 +tmp_p_da +-> +h_addr +. +addr_bys +[4], + +830 +tmp_p_da +-> +h_addr +. +addr_bys +[5], + +831 +tmp_p_da +-> +us + == + +832 +COMPLETE + ? "COMPLETE" : "INCOMPLETE", + +833 ( +tmp_p_da +-> + + >> 24), + +834 (( +tmp_p_da +-> + + & 0x00ff0000) >> 16), + +835 (( +tmp_p_da +-> + + & 0x0000ff00) >> 8), + +836 (( +tmp_p_da +-> + + & 0x000000ff))); + +839 +ut32_t + +i + = 0; + +840 + `tf +("\nARPoutgab ha%drs\n", +p_rou_tbl_dex +); + +841 + `tf +("\nIP_Address Mask Port NH_IP_Address\n"); + +842  +i + = 0; i < +p_rou_tbl_dex +; i++) { + +843 + `tf +("0x%x 0x%x %d 0x%x\n", + +844 +lib_p_rou_b +[ +i +]. + +, + +845 +lib_p_rou_b +[ +i +]. +mask +, + +846 +lib_p_rou_b +[ +i +]. +pt +,ib_p_rou_b[i]. +nh +); + +849 +tf + + +851 +lib_p_g_mac_q +, +lib_p_nh_found +, +lib_p_no_nh_found +, + +852 +lib_p_p_y_found +, +lib_p_no_p_y_found +, + +853 +lib_p_puϋ_ed +, +lib_p_de_ed +, + +854 +lib_p_dui_found +); + +856 + `tf +("ARPab key i%lu\n", ( +p_key_v4 +)); + +857 + } +} + +860  + $t_nd_b +() + +862 cڡ * +xt_key +; + +863 * +xt_da +; + +864 +ut32_t + + + = 0; + +865 +ut8_t + +ii + = 0, +j + = 0, +k + = 0; + +866 +tf + + +868 + `tf +("\tport hwddr status ipddr\n"); + +870 +tf + + +872  + `e_hash_e +( +nd_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= + +875  +nd_y_da + * +tmp_nd_da + = + +876 ( +nd_y_da + *) +xt_da +; + +877  +nd_key_v6 + +tmp_nd_key +; + +878 + `memy +(& +tmp_nd_key +, +xt_key +, ( +nd_key_v6 +)); + +879 + `tf +("\t%4d %02X:%02X:%02X:%02X:%02X:%02X %10s\n", + +880 +tmp_nd_da +-> +pt +, + +881 +tmp_nd_da +-> +h_addr +. +addr_bys +[0], + +882 +tmp_nd_da +-> +h_addr +. +addr_bys +[1], + +883 +tmp_nd_da +-> +h_addr +. +addr_bys +[2], + +884 +tmp_nd_da +-> +h_addr +. +addr_bys +[3], + +885 +tmp_nd_da +-> +h_addr +. +addr_bys +[4], + +886 +tmp_nd_da +-> +h_addr +. +addr_bys +[5], + +887 +tmp_nd_da +-> +us + == + +888 +COMPLETE + ? "COMPLETE" : "INCOMPLETE"); + +889 + `tf +("\t\t\t\t\t\t"); + +890  +ii + = 0; i< +ND_IPV6_ADDR_SIZE +; ii += 2) { + +891 + `tf +("%02X%02X ", +tmp_nd_da +-> +v6 +[ +ii +], + +892 +tmp_nd_da +-> +v6 +[ +ii + + 1]); + +894 + `tf +("\n"); + +897 +ut32_t + +i + = 0; + +898 + `tf +("\n\nND IPV6outingable has %dntries\n", + +899 +nd_rou_tbl_dex +); + +900 +tf + + +902  +i + = 0; i < +nd_rou_tbl_dex +; i++) { + +903 + `tf +("\n"); + +905  +j + = 0; j < +ND_IPV6_ADDR_SIZE +; j += 2) { + +906 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", + +907 +lib_nd_rou_b +[ +i +]. +v6 +[ +j +], + +908 +lib_nd_rou_b +[ +i +]. +v6 +[ +j + + 1]); + +911 +tf + + +913 +lib_nd_rou_b +[ +i +]. +dth +,ib_nd_rou_b[i]. +pt +); + +914 + `tf +("\t\t\t\t\t\t\t\t\t"); + +915  +k + = 0; k < +ND_IPV6_ADDR_SIZE +; k += 2) { + +916 + `tf +("%02X%02X ", +lib_nd_rou_b +[ +i +]. +nhv6 +[ +k +], + +917 +lib_nd_rou_b +[ +i +]. +v6 +[ +k + + 1]); + +920 +tf + + +922 +lib_nd_g_mac_q +, +lib_nd_nh_found +, +lib_nd_no_nh_found +, + +923 +lib_nd_nd_y_found +, +lib_nd_no_p_y_found +, + +924 +lib_nd_puϋ_ed +, +lib_nd_de_ed +, + +925 +lib_nd_dui_found +); + +926 + `tf +("NDab key i%lu\n\n", ( +nd_key_v6 +)); + +927 + } +} + +929  + $move_p_y +( +ut32_t + +addr +, +ut8_t + +ptid +, * +g +) + +932  +p_key_v4 + +p_key +; + +933 +p_key +. +pt_id + = +ptid +; + +934 +p_key +. + + = +addr +; + +935 +p_key +. +fr1 + = 0; + +936 +p_key +. +fr2 + = 0; + +937 +p_key +. +fr3 + = 0; + +939 +lib_p_de_ed +++; + +941  +p_y_da + * +t_p_da + = +NULL +; + +943  +t + = + `e_hash_lookup_da +( +p_hash_hd +, & +p_key +, + +944 (**)& +t_p_da +); + +945 i( +t + < 0) { + +949 i( +t_p_da +-> +mode + = +DYNAMIC_ARP +) { + +950 i( +t_p_da +-> +y_cou + == 3) { + +951 + `e_tim_ +( +t_p_da +-> +tim +); + +952 + `e_ +( +t_p_da +-> +tim_key +); + +953 i( +ARPICMP_DEBUG +) { + +954 + `RTE_LOG +( +INFO +, +LIBARP +, + +956 ( +p_key +. + + >> 24), + +957 (( +p_key +. + + & 0x00ff0000) >> + +959 (( +p_key +. + + & 0x0000ff00) >> + +961 (( +p_key +. + + & 0x000000ff)), + +962 +p_key +. +pt_id +); + +964 + `e_hash_d_key +( +p_hash_hd +, & +p_key +); + +967 +t_p_da +-> +y_cou +++; + +968 i( +ARPICMP_DEBUG +) + +969 + `RTE_LOG +( +INFO +, +LIBARP +, + +971 +t_p_da +-> +y_cou +); + +973 i( +ARPICMP_DEBUG +) + +974 + `RTE_LOG +( +INFO +, +LIBARP +, + +976 +ARP_TIMER_EXPIRY +); + +977 i( +ifm_chk_pt_v4_abd + + +978 ( +t_p_da +-> +pt +)) { + +979 + `que_p +( +t_p_da +-> +pt +, + +980 +t_p_da +-> + +); + +982 i( +ARPICMP_DEBUG +) + +983 + `RTE_LOG +( +INFO +, +LIBARP +, + +985 +__FUNCTION__ +, + +986 +t_p_da +-> +pt +); + +988 i( + `e_tim_t +( +t_p_da +-> +tim +, + +989 ( +p_timeout + * + +990 + `e_g_tsc_hz +()), +SINGLE +, + +991 +tim_lce +, + +992 +p_tim_back +, + +993 +g +) < 0) + +994 i( +ARPICMP_DEBUG +) + +995 + `RTE_LOG +( +INFO +, +LIBARP +, + +1000 + `e_hash_d_key +( +p_hash_hd +, & +p_key +); + +1003 + } +} + +1006  + $move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +ptid +) + +1008  +i + = 0; + +1009  +nd_y_da + * +t_nd_da + = +NULL +; + +1010  +nd_key_v6 + +nd_key +; + +1011 +nd_key +. +pt_id + = +ptid +; + +1013  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1014 +nd_key +. +v6 +[ +i +] = +v6addr +[i]; + +1017 +nd_key +. +fr1 + = 0; + +1018 +nd_key +. +fr2 + = 0; + +1019 +nd_key +. +fr3 + = 0; + +1021 +lib_nd_de_ed +++; + +1023 i( +NDIPV6_DEBUG +) { + +1024 + `RTE_LOG +( +INFO +, +LIBARP +, + +1026 +nd_key +. +pt_id +); + +1027  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1028 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", +nd_key +. +v6 +[ +i +], + +1029 +nd_key +. +v6 +[ +i + + 1]); + +1032  +nd_tim_key + +back_key +; + +1033 +back_key +. +pt_id + = +ptid +; + +1035  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1036 +back_key +. +v6 +[ +i +] = +v6addr +[i]; + +1039  +t + = + `e_hash_lookup_da +( +p_hash_hd +, & +back_key +, + +1040 (**)& +t_nd_da +); + +1041 i( +t + < 0) { + +1044 i( +t_nd_da +-> +mode + = +DYNAMIC_ND +) { + +1045 + `e_tim_ +( +t_nd_da +-> +tim +); + +1046 + `e_ +( +t_nd_da +-> +tim +); + +1049 + `e_hash_d_key +( +nd_hash_hd +, & +nd_key +); + +1050 + } +} + +1053 + $puϋ_p_y +(cڡ  +h_addr + * +hw_addr +, +ut32_t + +addr +, + +1054 +ut8_t + +ptid +, ut8_ +mode +) + +1056  +p_key_v4 + +p_key +; + +1057 +p_key +. +pt_id + = +ptid +; + +1058 +p_key +. + + = +addr +; + +1059 +p_key +. +fr1 + = 0; + +1060 +p_key +. +fr2 + = 0; + +1061 +p_key +. +fr3 + = 0; + +1063 +lib_p_puϋ_ed +++; + +1065 i( +ARPICMP_DEBUG +) + +1066 + `RTE_LOG +( +INFO +, +LIBARP +, "populate_arp_entry ip %x,ort %d\n", + +1067 +p_key +. + +,_key. +pt_id +); + +1069  +p_y_da + * +w_p_da + = + `ve_p_y +( +p_key +); + +1070 i( +w_p_da + && (ew_p_da-> +mode + = +STATIC_ARP + + +1071 && +mode + = +DYNAMIC_ARP +|| ( +w_p_da +->mode == DYNAMIC_ARP + +1072 && +mode + = +STATIC_ARP +))) { + +1073 i( +ARPICMP_DEBUG +) + +1074 + `RTE_LOG +( +INFO +, +LIBARP +,"populate_arp_entry: ARPntrylreadyxists(%d %d)\n", + +1075 +w_p_da +-> +mode +, mode); + +1080 i( +mode + = +DYNAMIC_ARP +) { + +1081 i( +w_p_da + + +1082 && + `is_me_h_addr +(& +w_p_da +-> +h_addr +, +hw_addr +)) { + +1083 i( +ARPICMP_DEBUG +) { + +1084 + `RTE_LOG +( +INFO +, +LIBARP +, + +1086 ( +p_key +. + + >> 24), + +1087 (( +p_key +. + + & 0x00ff0000) >> 16), + +1088 (( +p_key +. + + & 0x0000ff00) >> 8), + +1089 (( +p_key +. + + & 0x000000ff)), + +1090 +p_key +. +pt_id +); + +1092 +lib_p_dui_found +++; + +1093 +w_p_da +-> +y_cou + = 0; + +1094 i( + `e_tim_t +( +w_p_da +-> +tim +, + +1095 ( +p_timeout + * + `e_g_tsc_hz +()), + +1096 +SINGLE +, +tim_lce +, + +1097 +p_tim_back +, + +1098 +w_p_da +-> +tim_key +) < 0) + +1099 i( +ARPICMP_DEBUG +) + +1100 + `RTE_LOG +( +INFO +, +LIBARP +, + +1105 +ut32_t + +size + = + +1106 + `RTE_CACHE_LINE_ROUNDUP +(( +p_y_da +)); + +1107 +w_p_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1108 +w_p_da +-> +h_addr + = * +hw_addr +; + +1109 +w_p_da +-> +us + = +COMPLETE +; + +1110 +w_p_da +-> +pt + = +ptid +; + +1111 +w_p_da +-> + + = +addr +; + +1112 +w_p_da +-> +mode + = mode; + +1113 i( +e_mempo_g + + +1114 ( +tim_mempo_p +, (**)&( +w_p_da +-> +tim +)) < 0) { + +1115 + `RTE_LOG +( +INFO +, +LIBARP +, + +1120 + `e_hash_add_key_da +( +p_hash_hd +, & +p_key +, +w_p_da +); + +1121 i( +ARPICMP_DEBUG +) { + +1122 + `RTE_LOG +( +INFO +, +LIBARP +, + +1124 ( +p_key +. + + >> 24), + +1125 (( +p_key +. + + & 0x00ff0000) >> 16), + +1126 (( +p_key +. + + & 0x0000ff00) >> 8), + +1127 (( +p_key +. + + & 0x000000ff)),_key. +pt_id +); + +1130 + `sve_l2_adj +( +addr +, +ptid +, +hw_addr +); + +1132 + `e_tim_ +( +w_p_da +-> +tim +); + +1133  +p_tim_key + * +back_key + = + +1134 ( +p_tim_key + *) + `e_mloc +( +NULL +, + +1136 +p_tim_key + *), + +1137 +RTE_CACHE_LINE_SIZE +); + +1138 +back_key +-> +pt_id + = +ptid +; + +1139 +back_key +-> + + = +addr +; + +1141 i( +ARPICMP_DEBUG +) + +1142 + `RTE_LOG +( +INFO +, +LIBARP +, "TIMER STARTED FOR %u seconds\n", + +1143 +ARP_TIMER_EXPIRY +); + +1144 i( +e_tim_t + + +1145 ( +w_p_da +-> +tim +, ( +p_timeout + * + `e_g_tsc_hz +()), + +1146 +SINGLE +, +tim_lce +, +p_tim_back +, +back_key +) < 0) + +1147 i( +ARPICMP_DEBUG +) + +1148 + `RTE_LOG +( +INFO +, +LIBARP +, + +1151 +w_p_da +-> +tim_key + = +back_key +; + +1153 i( +w_p_da + + +1154 && + `is_me_h_addr +(& +w_p_da +-> +h_addr +, +hw_addr +)) { + +1155 i( +ARPICMP_DEBUG +) { + +1156 + `RTE_LOG +( +INFO +, +LIBARP +, + +1158 ( +p_key +. + + >> 24), + +1159 (( +p_key +. + + & 0x00ff0000) >> 16), + +1160 (( +p_key +. + + & 0x0000ff00) >> 8), + +1161 (( +p_key +. + + & 0x000000ff)), + +1162 +p_key +. +pt_id +); + +1164 +lib_p_dui_found +++; + +1166 +ut32_t + +size + = + +1167 + `RTE_CACHE_LINE_ROUNDUP +( + +1168 ( +p_y_da +)); + +1169 +w_p_da + = + +1170 + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1171 +w_p_da +-> +h_addr + = * +hw_addr +; + +1172 +w_p_da +-> +us + = +COMPLETE +; + +1173 +w_p_da +-> +pt + = +ptid +; + +1174 +w_p_da +-> + + = +addr +; + +1175 +w_p_da +-> +mode + = mode; + +1177 + `e_hash_add_key_da +( +p_hash_hd +, & +p_key +, + +1178 +w_p_da +); + +1179 i( +ARPICMP_DEBUG +) { + +1180 + `RTE_LOG +( +INFO +, +LIBARP +, + +1182 ( +p_key +. + + >> 24), + +1183 (( +p_key +. + + & 0x00ff0000) >> 16), + +1184 (( +p_key +. + + & 0x0000ff00) >> 8), + +1185 (( +p_key +. + + & 0x000000ff)), + +1186 +p_key +. +pt_id +); + +1189 + `sve_l2_adj +( +addr +, +ptid +, +hw_addr +); + +1192 i( +ARPICMP_DEBUG +) { + +1194 + `RTE_LOG +( +INFO +, +LIBARP +, + +1196 +w_p_da +-> +h_addr +. +addr_bys +[0], + +1197 +w_p_da +-> +h_addr +. +addr_bys +[1], + +1198 +w_p_da +-> +h_addr +. +addr_bys +[2], + +1199 +w_p_da +-> +h_addr +. +addr_bys +[3], + +1200 +w_p_da +-> +h_addr +. +addr_bys +[4], + +1201 +w_p_da +-> +h_addr +. +addr_bys +[5], + +1202 ( +p_key +. + + >> 24), ((arp_key.ip & 0x00ff0000) >> 16), + +1203 (( +p_key +. + + & 0x0000ff00) >> 8), + +1204 (( +p_key +. + + & 0x000000ff)), +ptid +); + +1205 + `puts +(""); + +1207 + } +} + +1216  + $puϋ_nd_y +(cڡ  +h_addr + * +hw_addr +, +ut8_t + +v6 +[], + +1217 +ut8_t + +ptid +, ut8_ +mode +) + +1222 +ut8_t + +i +; + +1223  +nd_key_v6 + +nd_key +; + +1224 +nd_key +. +pt_id + = +ptid +; + +1226  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +1227 +nd_key +. +v6 +[ +i +] = ipv6[i]; + +1230 +nd_key +. +fr1 + = 0; + +1231 +nd_key +. +fr2 + = 0; + +1232 +nd_key +. +fr3 + = 0; + +1234 +lib_nd_puϋ_ed +++; + +1237  +nd_y_da + * +w_nd_da + = + `ve_nd_y +( +nd_key +); + +1239 i( +mode + = +DYNAMIC_ND +) { + +1240 i( +w_nd_da + + +1241 && + `is_me_h_addr +(& +w_nd_da +-> +h_addr +, +hw_addr +)) { + +1243 i( +NDIPV6_DEBUG +) { + +1244 + `RTE_LOG +( +INFO +, +LIBARP +, + +1246 +nd_key +. +pt_id +); + +1247  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1249 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", + +1250 +nd_key +. +v6 +[ +i +], + +1251 +nd_key +. +v6 +[ +i + + 1]); + +1255 +lib_nd_dui_found +++; + +1256 + `RTE_LOG +( +INFO +, +LIBARP +, "nd_entryxists\n"); + +1259 +ut32_t + +size + = + +1260 + `RTE_CACHE_LINE_ROUNDUP +(( +nd_y_da +)); + +1261 +w_nd_da + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1264 +w_nd_da +-> +h_addr + = * +hw_addr +; + +1265 +w_nd_da +-> +us + = +COMPLETE +; + +1266 +w_nd_da +-> +pt + = +ptid +; + +1267 +w_nd_da +-> +mode + = mode; + +1268 i( +e_mempo_g + + +1269 ( +tim_mempo_p +, (**)&( +w_nd_da +-> +tim +)) < 0) { + +1270 + `RTE_LOG +( +INFO +, +LIBARP +, + +1275 i( +NDIPV6_DEBUG +) + +1276 + `RTE_LOG +( +INFO +, +LIBARP +, "populate_nd_entry ipv6="); + +1278  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1279 +w_nd_da +-> +v6 +[ +i +] = ipv6[i]; + +1282 i( +NDIPV6_DEBUG +) { + +1283  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1285 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", + +1286 +w_nd_da +-> +v6 +[ +i +], + +1287 +w_nd_da +-> +v6 +[ +i + + 1]); + +1292 + `e_hash_add_key_da +( +nd_hash_hd +, & +nd_key +, +w_nd_da +); + +1296 + `e_tim_ +( +w_nd_da +-> +tim +); + +1297  +nd_tim_key + * +back_key + = + +1298 ( +nd_tim_key + *) + `e_mloc +( +NULL +, + +1299 ( +nd_tim_key + + +1301 +RTE_CACHE_LINE_SIZE +); + +1302 +back_key +-> +pt_id + = +ptid +; + +1304  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1305 +back_key +-> +v6 +[ +i +] = ipv6[i]; + +1307 i( +e_tim_t + + +1308 ( +w_nd_da +-> +tim +, ( +p_timeout + * + `e_g_tsc_hz +()), + +1309 +SINGLE +, +tim_lce +, +nd_tim_back +, +back_key +) < 0) + +1310 + `RTE_LOG +( +INFO +, +LIBARP +, "Err : Timerlreadyunning\n"); + +1312 i( +w_nd_da + + +1313 && + `is_me_h_addr +(& +w_nd_da +-> +h_addr +, +hw_addr +)) { + +1314 i( +NDIPV6_DEBUG +) { + +1315 + `RTE_LOG +( +INFO +, +LIBARP +, + +1317 +nd_key +. +pt_id +); + +1318  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1320 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", + +1321 +nd_key +. +v6 +[ +i +], + +1322 +nd_key +. +v6 +[ +i + + 1]); + +1326 +lib_nd_dui_found +++; + +1328 +ut32_t + +size + = + +1329 + `RTE_CACHE_LINE_ROUNDUP +( + +1330 ( +nd_y_da +)); + +1331 +w_nd_da + = + +1332 + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1335 +w_nd_da +-> +h_addr + = * +hw_addr +; + +1336 +w_nd_da +-> +us + = +COMPLETE +; + +1337 +w_nd_da +-> +pt + = +ptid +; + +1338 +w_nd_da +-> +mode + = mode; + +1339  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1340 +w_nd_da +-> +v6 +[ +i +] = ipv6[i]; + +1344 + `e_hash_add_key_da +( +nd_hash_hd +, & +nd_key +, + +1345 +w_nd_da +); + +1349 i( +NDIPV6_DEBUG +) + +1350 +tf + + +1355 +tf + + +1357 +w_nd_da +-> +h_addr +. +addr_bys +[0], + +1358 +w_nd_da +-> +h_addr +. +addr_bys +[1], + +1359 +w_nd_da +-> +h_addr +. +addr_bys +[2], + +1360 +w_nd_da +-> +h_addr +. +addr_bys +[3], + +1361 +w_nd_da +-> +h_addr +. +addr_bys +[4], + +1362 +w_nd_da +-> +h_addr +. +addr_bys +[5], +ptid +); + +1363 + `RTE_LOG +( +INFO +, +LIBARP +, "\tipv6="); + +1364  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1365 +w_nd_da +-> +v6 +[ +i +] = ipv6[i]; + +1366 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", +w_nd_da +-> +v6 +[ +i +], + +1367 +w_nd_da +-> +v6 +[ +i + + 1]); + +1370 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +1372 + `puts +(""); + +1374 + } +} + +1376  + $t_pkt1 +( +e_mbuf + * +pkt +) + +1378 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, 0); + +1379  +i + = 0, +j + = 0; + +1380 + `RTE_LOG +( +INFO +, +LIBARP +, "\nPacket Contents...\n"); + +1381  +i + = 0; i < 20; i++) { + +1382  +j + = 0; j < 20; j++) + +1383 + `RTE_LOG +( +INFO +, +LIBARP +, "%02x ", +rd +[(20 * +i ++ +j +]); + +1384 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +1386 + } +} + +1388  +h_addr + + gbrd_h_addr + = { + +1389 . +addr_bys +[0] = 0xFF, + +1390 . + gaddr_bys +[1] = 0xFF, + +1391 . + gaddr_bys +[2] = 0xFF, + +1392 . + gaddr_bys +[3] = 0xFF, + +1393 . + gaddr_bys +[4] = 0xFF, + +1394 . + gaddr_bys +[5] = 0xFF, + +1397 cڡ  +h_addr + + gnu_h_addr + = { + +1398 . +addr_bys +[0] = 0x00, + +1399 . + gaddr_bys +[1] = 0x00, + +1400 . + gaddr_bys +[2] = 0x00, + +1401 . + gaddr_bys +[3] = 0x00, + +1402 . + gaddr_bys +[4] = 0x00, + +1403 . + gaddr_bys +[5] = 0x00, + +1406  + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1407  +h_addr + + glk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1408 {. +addr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1409 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1410 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1411 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1412 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1413 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1414 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1415 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1416 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1417 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1418 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1419 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1420 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1421 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1422 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1423 {. + gaddr_bys + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1426  +h_addr + * + $g_lk_hw_addr +( +ut8_t + +out_pt +) + +1428  & +lk_hw_addr +[ +out_pt +]; + +1429 + } +} + +1431  + $que_p +( +ut8_t + +pt_id +, +ut32_t + + +) + +1434  +h_hdr + * +h_h +; + +1435  +p_hdr + * +p_h +; + +1437 +l2_phy_r_t + * +lk +; + +1438 +lk + = + `ifm_g_pt +( +pt_id +); + +1439  +e_mbuf + * +p_pkt + = +lib_p_pkt +; + +1441 i( +p_pkt + = +NULL +) { + +1442 i( +ARPICMP_DEBUG +) + +1443 + `RTE_LOG +( +INFO +, +LIBARP +, + +1448 +h_h + = + `e_pktmbuf_mtod +( +p_pkt +,  +h_hdr + *); + +1450 + `h_addr_cy +(& +brd_h_addr +, & +h_h +-> +d_addr +); + +1451 + `h_addr_cy +(( +h_addr + *) + +1452 & +lk +-> +maddr +[0], & +h_h +-> +s_addr +); + +1453 +h_h +-> +h_ty + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_ARP +); + +1455 +p_h + = ( +p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1456 +p_h +-> +p_hrd + = + `CHECK_ENDIAN_16 +( +ARP_HRD_ETHER +); + +1457 +p_h +-> +p_o + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_IPv4 +); + +1458 +p_h +-> +p_h + = +ETHER_ADDR_LEN +; + +1459 +p_h +-> +p_n + = ( +ut32_t +); + +1460 +p_h +-> +p_ + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +1462 + `h_addr_cy +(( +h_addr + *) + +1463 & +lk +-> +maddr +[0], & +p_h +-> +p_da +. +p_sha +); + +1464 i( +lk + &&k-> +v4_li +) { + +1465 +p_h +-> +p_da +. +p_s + = + +1466 ((( +v4li_t + *( +lk +-> +v4_li +))-> +addr +); + +1468 + `h_addr_cy +(& +nu_h_addr +, & +p_h +-> +p_da +. +p_tha +); + +1469 +p_h +-> +p_da +. +p_t + = + `e_u_to_be_32 +( + +); + +1470 i( +ARPICMP_DEBUG +) + +1471 + `RTE_LOG +( +INFO +, +LIBARP +, "arpip:%xrp sip :%x\n", + +1472 +p_h +-> +p_da +. +p_t +,_h->p_da. +p_s +); + +1474 +p_pkt +-> +pkt_n + = 42; + +1475 +p_pkt +-> +da_n + = 42; + +1477 i( +ARPICMP_DEBUG +) { + +1478 + `RTE_LOG +( +INFO +, +LIBARP +, "Sendingrpequest\n"); + +1479 + `t_mbuf +("TX", +pt_id +, +p_pkt +, +__LINE__ +); + +1481 i( +lk +) + +1482 +lk +-> + `sm_sg_pkt +֚k, +p_pkt +); + +1483 + } +} + +1485  +e_mbuf + * + $que_echo +( +ut32_t + +pt_id +, ut32_ + +) + +1487  +h_hdr + * +h_h +; + +1488  +v4_hdr + * +_h +; + +1489  +icmp_hdr + * +icmp_h +; + +1490 +l2_phy_r_t + * +pt + = + `ifm_g_pt +( +pt_id +); + +1492  +e_mbuf + * +icmp_pkt + = +lib_p_pkt +; + +1493 i( +icmp_pkt + = +NULL +) { + +1494 i( +ARPICMP_DEBUG +) + +1495 + `RTE_LOG +( +INFO +, +LIBARP +, + +1497  +NULL +; + +1500 +h_h + = + `e_pktmbuf_mtod +( +icmp_pkt +,  +h_hdr + *); + +1502 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1503 +icmp_h + = ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1505 +_h +-> +vsi_ihl + = +IP_VHL_DEF +; + +1506 +_h +-> +ty_of_rvi + = 0; + +1507 +_h +-> +tٮ_ngth + = + +1508 + `e_u_to_be_16 +(( +v4_hdr ++ ( +icmp_hdr +)); + +1509 +_h +-> +ck_id + = 0xaabb; + +1510 +_h +-> +agmt_offt + = 0x0000; + +1511 +_h +-> +time_to_live + = 64; + +1512 +_h +-> +xt_o_id + = +IPPROTO_ICMP +; + +1513 i( +pt + &&t-> +v4_li +) + +1514 +_h +-> +c_addr + = + +1515 + `e_u_to_be_32 +((( +v4li_t + * +pt +-> +v4_li +)-> +addr +); + +1516 +_h +-> +d_addr + = + `e_u_to_be_32 +( + +); + +1518 +_h +-> +hdr_checksum + = 0; + +1519 +_h +-> +hdr_checksum + = + `e_v4_cksum +(ip_h); + +1521 +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REQUEST +; + +1522 +icmp_h +-> +icmp_code + = 0; + +1523 +icmp_h +-> +icmp_idt + = 0xdead; + +1524 +icmp_h +-> +icmp_q_nb + = 0xbeef; + +1526 +icmp_h +-> +icmp_cksum + = ~ + `e_w_cksum +(icmp_h, ( +icmp_hdr +)); + +1528 +icmp_pkt +-> +pkt_n + = + +1529 ( +h_hdr ++ ( +v4_hdr +) + + +1530 ( +icmp_hdr +); + +1531 +icmp_pkt +-> +da_n + = icmp_pkt-> +pkt_n +; + +1533 + `t_mbuf +("TX", 0, +icmp_pkt +, +__LINE__ +); + +1535  +icmp_pkt +; + +1536 + } +} + +1543  +e_mbuf + * + $nd_icmp_de_uėchab_msg +( +ut32_t + +c_ +, + +1544 +ut32_t + +de_ +) + +1546  +h_hdr + * +h_h +; + +1547  +v4_hdr + * +_h +; + +1548  +icmp_hdr + * +icmp_h +; + +1549  +e_mbuf + * +icmp_pkt + = +lib_p_pkt +; + +1551 i( +icmp_pkt + = +NULL +) { + +1552 i( +ARPICMP_DEBUG +) + +1553 + `RTE_LOG +( +INFO +, +LIBARP +, + +1555  +NULL +; + +1558 +h_h + = + `e_pktmbuf_mtod +( +icmp_pkt +,  +h_hdr + *); + +1559 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1560 +icmp_h + = ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1562 +_h +-> +vsi_ihl + = +IP_VHL_DEF +; + +1563 +_h +-> +ty_of_rvi + = 0; + +1564 +_h +-> +tٮ_ngth + = + +1565 + `e_u_to_be_16 +(( +v4_hdr ++ ( +icmp_hdr +)); + +1566 +_h +-> +ck_id + = 0xaabb; + +1567 +_h +-> +agmt_offt + = 0x0000; + +1568 +_h +-> +time_to_live + = 64; + +1569 +_h +-> +xt_o_id + = 1; + +1571 +_h +-> +d_addr + = + `e_bsw32 +( +de_ +); + +1572 +_h +-> +c_addr + = + `e_bsw32 +( +c_ +); + +1574 +_h +-> +hdr_checksum + = 0; + +1575 +_h +-> +hdr_checksum + = + `e_v4_cksum +(ip_h); + +1577 +icmp_h +-> +icmp_ty + = 3; + +1578 +icmp_h +-> +icmp_code + = 13; + +1580 +icmp_h +-> +icmp_cksum + = ~ + `e_w_cksum +(icmp_h, ( +icmp_hdr +)); + +1582 +icmp_pkt +-> +pkt_n + = ( +h_hdr ++ ( +v4_hdr +) + + +1583 ( +icmp_hdr +); + +1584 +icmp_pkt +-> +da_n + = icmp_pkt-> +pkt_n +; + +1586  +icmp_pkt +; + +1587 + } +} + +1590 + $oss_picmp_pkt_r +( +e_mbuf + ** +pkt +, +ut16_t + +pkt_num +, + +1591 +ut64_t + +pkt_mask +, +l2_phy_r_t + * +pt +) + +1593 + `RTE_SET_USED +( +pkt_num +); + +1594 i( +ARPICMP_DEBUG +) + +1595 + `RTE_LOG +( +INFO +, +LIBARP +, + +1597 i( +pkt_mask +) { + +1598 i( +ARPICMP_DEBUG +) + +1599 + `RTE_LOG +( +INFO +, +LIBARP +, + +1603 +ut64_t + +pkts_f_oss + = +pkt_mask +; + +1604 ; +pkts_f_oss +;) { + +1606 +ut8_t + +pos + = (ut8_t + `__but_z +( +pkts_f_oss +); + +1607 +ut64_t + +pkts_mask + = 1LLU << +pos +; + +1608 +pkts_f_oss + &~ +pkts_mask +; + +1609 + `oss_picmp_pkt +( +pkt +[ +pos +], +pt +); + +1612 + } +} + +1614  + $oss_picmp_pkt +( +e_mbuf + * +pkt +, +l2_phy_r_t + * +pt +) + +1616 +ut8_t + +_pt_id + = +pkt +-> +pt +; + +1617  +h_hdr + * +h_h +; + +1618  +p_hdr + * +p_h +; + +1619  +v4_hdr + * +_h +; + +1620  +icmp_hdr + * +icmp_h +; + +1622 +ut32_t + +cksum +; + +1623 +ut32_t + +_addr +; + +1625 +ut32_t + +q_t +; + +1627 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +1629 i( +h_h +-> +h_ty + = + `e_u_to_be_16 +( +ETHER_TYPE_ARP +)) { + +1630 i( +ARPICMP_DEBUG +) + +1631 + `RTE_LOG +( +INFO +, +LIBARP +, "%s,ortid %u. Line %d\n\r", + +1632 +__FUNCTION__ +, +pt +-> +pmdid +, +__LINE__ +); + +1633 +p_h + = + +1634 ( +p_hdr + *)((*) +h_h + + + +1635 ( +h_hdr +)); + +1636 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +! +ARP_HRD_ETHER +) + +1637 + `RTE_LOG +( +INFO +, +LIBARP +, + +1639 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +! +ETHER_TYPE_IPv4 +) + +1640 + `RTE_LOG +( +INFO +, +LIBARP +, + +1642 i( +p_h +-> +p_h + != 6) + +1643 + `RTE_LOG +( +INFO +, +LIBARP +, + +1645 i( +p_h +-> +p_n + != 4) + +1646 + `RTE_LOG +( +INFO +, +LIBARP +, + +1649 i( +pt +-> +v4_li + = +NULL +) { + +1650 + `RTE_LOG +( +INFO +, +LIBARP +, + +1655 i( +p_h +-> +p_da +. +p_t + != + +1656 (( +v4li_t + *( +pt +-> +v4_li +))-> +addr +) { + +1657 i( +p_h +-> +p_da +. +p_t + =p_h->p_da. +p_s +) { + +1658 + `puϋ_p_y +( + +1659 ( +h_addr + *)& +p_h +-> +p_da +. +p_sha +, + +1660 + `e_u_to_be_32 +( +p_h +-> +p_da +. +p_s +), + +1661 +_pt_id +, + +1662 +DYNAMIC_ARP +); + +1665 + `RTE_LOG +( +INFO +, +LIBARP +,"ARPequested IPddress mismatches interface IP - discarding\n"); + +1670 i( +p_h +-> +p_ + == + +1671 + `e_u_to_be_16 +( +ARP_OP_REQUEST +)) { + +1672 i( +ARPICMP_DEBUG +) { + +1673 + `RTE_LOG +( +INFO +, +LIBARP +, + +1675 +__FUNCTION__ +, +pt +-> +pmdid +, + +1676 +__LINE__ +); + +1678 + `RTE_LOG +( +INFO +, +LIBARP +, + +1680 +p_h +-> +p_ +, + +1681 +e_u_to_be_16 + + +1682 ( +ARP_OP_REQUEST +)); + +1683 + `t_mbuf +("RX", +_pt_id +, +pkt +, + +1684 +__LINE__ +); + +1687 + `puϋ_p_y +(( +h_addr + *) + +1688 & +p_h +-> +p_da +. +p_sha +, + +1689 +e_u_to_be_32 + + +1690 ( +p_h +-> +p_da +. +p_s +), + +1691 +_pt_id +, +DYNAMIC_ARP +); + +1694 +q_t + = +p_h +-> +p_da +. +p_t +; + +1695 + `h_addr_cy +(& +h_h +-> +s_addr +, &h_h-> +d_addr +); + +1696 + `h_addr_cy +(( +h_addr + *)& +pt +-> +maddr +[0], & +h_h +-> +s_addr +); + +1697 +p_h +-> +p_ + = + `e_u_to_be_16 +( +ARP_OP_REPLY +); + +1698 + `h_addr_cy +(& +h_h +-> +s_addr +, + +1699 & +p_h +-> +p_da +. +p_sha +); + +1700 +p_h +-> +p_da +. +p_t + = + +1701 +p_h +-> +p_da +. +p_s +; + +1702 +p_h +-> +p_da +. +p_s + = +q_t +; + +1703 + `h_addr_cy +(& +h_h +-> +d_addr +, + +1704 & +p_h +-> +p_da +. +p_tha +); + +1706 i( +ARPICMP_DEBUG +) + +1707 + `t_mbuf +("TX ARP REPLY PKT", + +1708 +pt +-> +pmdid +, +pkt +, +__LINE__ +); + +1709 +pt +-> + `sm_bulk_pkts +t, & +pkt +, 1); + +1710 i( +ARPICMP_DEBUG +) + +1711 + `t_mbuf +("TX", +pt +-> +pmdid +, +pkt +, + +1712 +__LINE__ +); + +1715 } i( +p_h +-> +p_ + == + +1716 + `e_u_to_be_16 +( +ARP_OP_REPLY +)) { + +1717 i( +ARPICMP_DEBUG +) { + +1718 + `RTE_LOG +( +INFO +, +LIBARP +, + +1720 + `t_mbuf +("RX", +pt +-> +pmdid +, +pkt +, + +1721 +__LINE__ +); + +1723 + `puϋ_p_y +(( +h_addr + *) + +1724 & +p_h +-> +p_da +. +p_sha +, + +1725 + `e_bsw32 +( +p_h +-> + +1726 +p_da +. +p_s +), + +1727 +_pt_id +, +DYNAMIC_ARP +); + +1731 i( +ARPICMP_DEBUG +) + +1732 + `RTE_LOG +( +INFO +, +LIBARP +, + +1734 +p_h +-> +p_ +); + +1738 + `e_pktmbuf_ +( +pkt +); + +1740 +_h + = + +1741 ( +v4_hdr + *)((*) +h_h + + + +1742 ( +h_hdr +)); + +1743 +icmp_h + = + +1744 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1746 i( +h_h +-> +h_ty + = + `e_u_to_be_16 +( +ETHER_TYPE_IPv4 +)) { + +1748 i( +_h +-> +xt_o_id + ! +IPPROTO_ICMP +) { + +1749 i( +ARPICMP_DEBUG +) { + +1750 + `RTE_LOG +( +INFO +, +LIBARP +, + +1753 } i(( +_h +-> +vsi_ihl + & 0xf0! +IP_VERSION_4 +) { + +1754 i( +ARPICMP_DEBUG +) { + +1755 + `RTE_LOG +( +INFO +, +LIBARP +, + +1758 } i(( +_h +-> +vsi_ihl + & 0x0f! +IP_HDRLEN +) { + +1759 i( +ARPICMP_DEBUG +) { + +1760 + `RTE_LOG +( +INFO +, +LIBARP +, + +1764 i( +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REQUEST + + +1765 && +icmp_h +-> +icmp_code + == 0) { + +1766 i( +ARPICMP_DEBUG +) + +1767 + `t_mbuf +("RX", +_pt_id +, + +1768 +pkt +, +__LINE__ +); + +1770 +_addr + = +_h +-> +c_addr +; + +1771 + `h_addr_cy +(& +h_h +-> +s_addr +, + +1772 & +h_h +-> +d_addr +); + +1773 + `h_addr_cy +(( +h_addr + *) + +1774 & +pt +-> +maddr +[0], + +1775 & +h_h +-> +s_addr +); + +1776 i( +ARPICMP_DEBUG +) + +1777 + `RTE_LOG +( +INFO +, +LIBARP +, + +1779 +__FUNCTION__ +, + +1780 +pt +-> +pmdid +, +__LINE__ +); + +1782 i( +is_mui_v4_addr + + +1783 ( +_h +-> +d_addr +)) { + +1784 +ut32_t + +_c +; + +1786 +_c + = + +1787 + `e_be_to_u_32 +( +_addr +); + +1788 i(( +_c + & 0x00000003) == 1) + +1789 +_c + = + +1790 ( +_c + & + +1794 +_c + = + +1795 ( +_c + & + +1798 +_h +-> +c_addr + = + +1799 + `e_u_to_be_32 +( +_c +); + +1800 +_h +-> +d_addr + = +_addr +; + +1802 +_h +-> +hdr_checksum + = 0; + +1803 +_h +-> +hdr_checksum + = + +1804 ~ + `e_w_cksum +( +_h +, + +1806 +v4_hdr +)); + +1808 i( +ARPICMP_DEBUG +) + +1809 + `RTE_LOG +( +INFO +, +LIBARP +, + +1811 +__FUNCTION__ +, + +1812 +pt +-> +pmdid +, + +1813 +__LINE__ +); + +1814 +_h +-> +c_addr + = ip_h-> +d_addr +; + +1815 +_h +-> +d_addr + = +_addr +; + +1818 +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REPLY +; + +1819 +cksum + = ~ +icmp_h +-> +icmp_cksum + & 0xffff; + +1820 +cksum + += + +1821 ~ + `hts +( +IP_ICMP_ECHO_REQUEST + << 8) & + +1823 +cksum + + + `hts +( +IP_ICMP_ECHO_REPLY + << 8); + +1824 +cksum + = + +1825 ( +cksum + & 0xffff) + (cksum >> 16); + +1826 +cksum + = + +1827 ( +cksum + & 0xffff) + (cksum >> 16); + +1828 +icmp_h +-> +icmp_cksum + = ~ +cksum +; + +1830 i( +ARPICMP_DEBUG +) + +1831 +t_mbuf + + +1833 +_pt_id +, +pkt +, +__LINE__ +); + +1834 +pt +-> + `sm_bulk_pkts +t, & +pkt +, 1); + +1835 i( +ARPICMP_DEBUG +) + +1836 + `t_mbuf +("TX", +pt +-> +pmdid +, + +1837 +pkt +, +__LINE__ +); + +1840 } i( +icmp_h +-> +icmp_ty + == + +1841 +IP_ICMP_ECHO_REPLY + + +1842 && +icmp_h +-> +icmp_code + == 0) { + +1843 i( +ARPICMP_DEBUG +) + +1844 + `t_mbuf +("RX", +_pt_id +, + +1845 +pkt +, +__LINE__ +); + +1847  +p_key_v4 + +p_key +; + +1848 +p_key +. +pt_id + = +_pt_id +; + +1849 +p_key +. + + = + +1850 + `e_bsw32 +( +_h +-> +c_addr +); + +1851 +p_key +. +fr1 + = 0; + +1852 +p_key +. +fr2 + = 0; + +1853 +p_key +. +fr3 + = 0; + +1855  +p_y_da + * +p_y + = + +1856 + `ve_p_y +( +p_key +); + +1857 i( +p_y + = +NULL +) { + +1858 i( +ARPICMP_DEBUG +) + +1859 + `RTE_LOG +( +INFO +, +LIBARP +, + +1861 +p_key +. + +, + +1862 +p_key +. +pt_id +); + +1865 +p_y +-> +us + = +COMPLETE +; + +1870 + `e_pktmbuf_ +( +pkt +); + +1872 + } +} + +1885  + $my___v6 +( +af +, cڡ * +c +, * +d +) + +1887  +af +) { + +1888  +AF_INET +: + +1889  + `__v4 +( +c +, +d +); + +1890  +AF_INET6 +: + +1891  + `__v6 +( +c +, +d +); + +1893 +o + = +EAFNOSUPPORT +; + +1897 + } +} + +1909  + $__v4 +(cڡ * +c +, * +d +) + +1911 cڡ  +digs +[] = "0123456789"; + +1912  +w_dig +, +os +, +ch +; + +1913  +tmp +[ +INADDRSZ +], * + +; + +1915 +w_dig + = 0; + +1916 +os + = 0; + +1917 *( + + = +tmp +) = 0; + +1918 ( +ch + = * +c +++) != '\0') { + +1919 cڡ * +pch +; + +1921 +pch + = + `rchr +( +digs +, +ch +); + +1922 i( +pch + ! +NULL +) { + +1923  +w + = * + + * 10 + ( +pch + - +digs +); + +1925 i( +w + > 255) + +1927 i(! +w_dig +) { + +1928 i(++ +os + > 4) + +1930 +w_dig + = 1; + +1932 * + + = () +w +; + +1933 } i( +ch + ='.' && +w_dig +) { + +1934 i( +os + == 4) + +1936 *++ + + = 0; + +1937 +w_dig + = 0; + +1941 i( +os + < 4) + +1944 + `memy +( +d +, +tmp +, +INADDRSZ +); + +1946 + } +} + +1961  + $__v6 +(cڡ * +c +, * +d +) + +1963 cڡ  +xdigs_l +[] = "0123456789abcdef", + +1964 +xdigs_u +[] = "0123456789ABCDEF"; + +1965  +tmp +[ +IN6ADDRSZ +], * + + = 0, * +dp + = 0, * +cp + = 0; + +1966 cڡ * +xdigs + = 0, * +cuok + = 0; + +1967  +ch + = 0, +w_xdig + = 0, +cou_xdig + = 0; + +1968  +v + = 0; + +1969  +dblo_cou + = 0; + +1971 + `memt +(( + + = +tmp +), '\0', +IN6ADDRSZ +); + +1972 +dp + = + + + +IN6ADDRSZ +; + +1973 +cp + = +NULL +; + +1975 i(* +c + == ':') + +1976 i(*++ +c + != ':') + +1978 +cuok + = +c +; + +1979 +w_xdig + = +cou_xdig + = 0; + +1980 +v + = 0; + +1982 ( +ch + = * +c +++) != '\0') { + +1983 cڡ * +pch +; + +1985 +pch + = + `rchr +(( +xdigs + = +xdigs_l +), +ch +); + +1986 i( +pch + = +NULL +) + +1987 +pch + = + `rchr +(( +xdigs + = +xdigs_u +), +ch +); + +1988 i( +pch + ! +NULL +) { + +1989 i( +cou_xdig + >= 4) + +1991 +v + <<= 4; + +1992 +v + |( +pch + - +xdigs +); + +1993 i( +v + > 0xffff) + +1995 +w_xdig + = 1; + +1996 +cou_xdig +++; + +1999 i( +ch + == ':') { + +2000 +cuok + = +c +; + +2001 i(! +w_xdig +) { + +2002 i( +cp +) + +2004 +cp + = + +; + +2006 } i(* +c + == '\0') { + +2009 i( + + + ( +t16_t +> +dp +) + +2011 * + +++ = ()(( +v + >> 8) & 0xff); + +2012 * + +++ = ()( +v + & 0xff); + +2013 +w_xdig + = 0; + +2014 +cou_xdig + = 0; + +2015 +v + = 0; + +2016 +dblo_cou +++; + +2019 i( +ch + ='.' && (( + + + +INADDRSZ +< +dp +) && + +2020 + `__v4 +( +cuok +, + +) > 0) { + +2021 + + + +INADDRSZ +; + +2022 +w_xdig + = 0; + +2023 +dblo_cou + += 2; + +2028 i( +w_xdig +) { + +2029 i( + + + ( +t16_t +> +dp +) + +2031 * + +++ = ()(( +v + >> 8) & 0xff); + +2032 * + +++ = ()( +v + & 0xff); + +2033 +dblo_cou +++; + +2035 i( +cp + ! +NULL +) { + +2037 i( +dblo_cou + == 8) + +2044 cڡ  +n + = + + - +cp +; + +2045  +i +; + +2047  +i + = 1; i < +n +; i++) { + +2048 +dp +[- +i +] = +cp +[ +n + - i]; + +2049 +cp +[ +n + - +i +] = 0; + +2051 + + = +dp +; + +2053 i( + + ! +dp +) + +2055 + `memy +( +d +, +tmp +, +IN6ADDRSZ +); + +2057 + } +} + +2059  + $p_r_gs +( +pe_ms + * +ms +) + +2061 +ut32_t + +p_rou_tbl_e + = 0; + +2062 +ut32_t + +nd_rou_tbl_e + = 0; + +2063 +ut32_t + +pts_mac_li_e + = 0; + +2064 +ut32_t + +numArg +; + +2065 +ut32_t + +n_vnf_thads_e + = 0; + +2067 +ut32_t + +pktq__v_e + = 0; + +2068 +ut32_t + +v_to_pub_m_e + = 0; + +2070 +ut8_t + +n_v__pt + = 0; + +2071  +i +; + +2072  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +2073 +_pt_d_a +[ +i +] = 0; + +2074 +v_to_pub_m +[ +i +] = 0xff; + +2075 +pub_to_v_m +[ +i +] = 0xff; + +2078 + `RTE_SET_USED +( +pts_mac_li_e +); + +2079 + `RTE_SET_USED +( +nd_rou_tbl_e +); + +2080 + `RTE_SET_USED +( +p_rou_tbl_e +); + +2081  +numArg + = 0;umArg < +ms +-> +n_gs +;umArg++) { + +2082 * +g_me + = +ms +-> +gs_me +[ +numArg +]; + +2083 * +g_vue + = +ms +-> +gs_vue +[ +numArg +]; + +2086 i( + `rcmp +( +g_me +, "arp_timer_expiry") == 0) { + +2087 +p_timeout + = + `oi +( +g_vue +); + +2091 i( + `rcmp +( +g_me +, "pktq_in_prv") == 0) { + +2092 i( +pktq__v_e +) { + +2093 +tf + + +2097 +pktq__v_e + = 1; + +2099  +rxpt + = 0, +j + = 0; + +2100  +phy_pt_num +[5]; + +2101 * +tok + = + `ok +( +g_vue +, "RXQ"); + +2102  +tok +) { + +2103 +j + = 0; + +2104 ( +j + < 4&& ( +tok +[j] != '.')) { + +2105 +phy_pt_num +[ +j +] = +tok +[j]; + +2106 +j +++; + +2108 +phy_pt_num +[ +j +] = '\0'; + +2109 +rxpt + = + `oi +( +phy_pt_num +); + +2110 +v__pt_a +[ +n_v__pt +++] = +rxpt +; + +2111 i( +rxpt + < 0) + +2112 +rxpt + = 0; + +2113 +tf + + +2115 +tok +, +phy_pt_num +, +rxpt +); + +2116 +v__pt_a +[ +n_v__pt +++] = +rxpt +; + +2117 if( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +2118 +_pt_d_a +[ +rxpt +] = 1; + +2119 +tok + = + `ok +( +NULL +, "RXQ"); + +2122 i( +n_v__pt + == 0) { + +2123 +tf + + +2131 i( + `rcmp +( +g_me +, "prv_to_pub_map") == 0) { + +2132 i( +v_to_pub_m_e +) { + +2133 +tf + + +2137 +v_to_pub_m_e + = 1; + +2139  +rxpt + = 0, +txpt + = 0, +j + = 0, +k + = 0; + +2140  +rx_phy_pt_num +[5]; + +2141  +tx_phy_pt_num +[5]; + +2142 * +tok + = + `ok +( +g_vue +, "("); + +2143  +tok +) { + +2144 +j + = 0; + +2145 ( +j + < 4&& ( +tok +[j] != ',')) { + +2146 +rx_phy_pt_num +[ +j +] = +tok +[j]; + +2147 +j +++; + +2149 +rx_phy_pt_num +[ +j +] = '\0'; + +2150 +rxpt + = + `oi +( +rx_phy_pt_num +); + +2151 i( +rxpt + < 0) + +2152 +rxpt + = 0; + +2154 +j +++; + +2155 +k + = 0; + +2156 ( +k + < 4&& ( +tok +[ +j + + k] != ')')) { + +2157 +tx_phy_pt_num +[ +k +] = +tok +[ +j + + k]; + +2158 +k +++; + +2160 +tx_phy_pt_num +[ +k +] = '\0'; + +2161 +txpt + = + `oi +( +tx_phy_pt_num +); + +2162 i( +txpt + < 0) + +2163 +txpt + = 0; + +2165 + `RTE_LOG +( +INFO +, +LIBARP +, "token: %s," + +2168 +tok +, +rx_phy_pt_num +, +rxpt +, + +2169 +tx_phy_pt_num +, +txpt +); + +2171 i(( +rxpt + > +PIPELINE_MAX_PORT_IN +) || + +2172 ( +txpt + > +PIPELINE_MAX_PORT_IN +) || + +2173 ( +_pt_d_a +[ +rxpt +] != 1)) { + +2174 +tf + + +2176 +rxpt +, +txpt +, + +2177 +_pt_d_a +[ +rxpt +]); + +2181 +v_to_pub_m +[ +rxpt +] = +txpt +; + +2182 +pub_to_v_m +[ +txpt +] = +rxpt +; + +2183 +tok + = + `ok +( +NULL +, "("); + +2189 i( + `rcmp +( +g_me +, "n_vnf_threads") == 0) { + +2190 i( +n_vnf_thads_e +) + +2192 +n_vnf_thads_e + = 1; + +2193 + `im +( +g_vue +); + +2194 +num_vnf_thads + = + `oi +( +g_vue +); + +2195 i( +num_vnf_thads + <= 0) { + +2196 + `RTE_LOG +( +INFO +, +LIBARP +, + +2200 + `RTE_LOG +( +INFO +, +LIBARP +, "n_vnf_threads: 0x%x\n", + +2201 +num_vnf_thads +); + +2205 i( + `rcmp +( +g_me +, "lib_arp_debug") == 0) { + +2206 +ARPICMP_DEBUG + = + `oi +( +g_vue +); + +2212 i( + `rcmp +( +g_me +, "ports_mac_list") == 0) { + +2213 +pts_mac_li_e + = 1; + +2215 +ut32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2217  +byS +[ +MAC_NUM_BYTES +][3]; + +2218 +ut32_t + +by +[ +MAC_NUM_BYTES +]; + +2220 * +tok + = + `ok +( +g_vue +, " "); + +2221  +tok +) { + +2222 +k + = 0; + +2223  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2224  +j + = 0; j < 2; j++) { + +2225 +byS +[ +i +][ +j +] = +tok +[ +k +++]; + +2227 +byS +[ +i +][ +j +] = '\0'; + +2228 +k +++; + +2231  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2232 +by +[ +i +] = + `oul +( +byS +[i], +NULL +, 16); + +2235 i( +ARPICMP_DEBUG +) { + +2236 + `RTE_LOG +( +INFO +, +LIBARP +, "token: %s", + +2237 +tok +); + +2238  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2239 + `RTE_LOG +( +INFO +, +LIBARP +, + +2240 ", by[%u] %u", +i +, + +2241 +by +[ +i +]); + +2242 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +2245  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2246 +lk_hw_addr + + +2247 [ +lk_hw_addr_y_idx +]. +addr_bys + + +2248 [ +i +] = +by +[i]; + +2250 +lk_hw_addr_y_idx +++; + +2251 +tok + = + `ok +( +NULL +, " "); + +2258 i( + `rcmp +( +g_me +, "arp_route_tbl") == 0) { + +2259 +p_rou_tbl_e + = 1; + +2261 +ut32_t + +de_ + = 0, +mask + = 0, +tx_pt + = 0, +nh_ + = + +2262 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2263 +ut32_t + +p_rou_tbl_r_max_n + = 10; + +2264  +de__r +[ +p_rou_tbl_r_max_n +]; + +2265  +mask_r +[ +p_rou_tbl_r_max_n +]; + +2266  +tx_pt_r +[ +p_rou_tbl_r_max_n +]; + +2267  +nh__r +[ +p_rou_tbl_r_max_n +]; + +2268 * +tok + = + `ok +( +g_vue +, "("); + +2269  +tok +) { + +2270 +i + = 0; + +2271 ( +i + < ( +p_rou_tbl_r_max_n + - 1)) + +2272 && ( +tok +[ +i +] != ',')) { + +2273 +de__r +[ +i +] = +tok +[i]; + +2274 +i +++; + +2276 +de__r +[ +i +] = '\0'; + +2277 +de_ + = + `oul +( +de__r +, +NULL +, 16); + +2279 +i +++; + +2280 +j + = 0; + +2281 ( +j + < ( +p_rou_tbl_r_max_n + - 1)) + +2282 && ( +tok +[ +i + + +j +] != ',')) { + +2283 +mask_r +[ +j +] = +tok +[ +i + + j]; + +2284 +j +++; + +2286 +mask_r +[ +j +] = '\0'; + +2287 +mask + = + `oul +( +mask_r +, +NULL +, 16); + +2289 +j +++; + +2290 +k + = 0; + +2291 ( +k + < ( +p_rou_tbl_r_max_n + - 1)) + +2292 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2293 +tx_pt_r +[ +k +] = +tok +[ +i + + +j + + k]; + +2294 +k +++; + +2296 +tx_pt_r +[ +k +] = '\0'; + +2297 +tx_pt + = + `oul +( +tx_pt_r +, +NULL +, 16); + +2299 +k +++; + +2300 +l + = 0; + +2301 ( +l + < ( +p_rou_tbl_r_max_n + - 1)) + +2302 && ( +tok +[ +i + + +j + + +k + + +l +] != ')')) { + +2303 +nh__r +[ +l +] = +tok +[ +i + + +j + + +k + +]; + +2304 +l +++; + +2306 +nh__r +[ +l +] = '\0'; + +2307 +nh_ + = + `oul +( +nh__r +, +NULL +, 16); + +2310 + `RTE_LOG +( +INFO +, +LIBARP +, "token: %s, " + +2315 +tok +, +de__r +, +de_ +, + +2316 +mask_r +, +mask +, +tx_pt_r +, + +2317 +tx_pt +, +nh__r +, +nh_ +); + +2328 +lib_p_rou_b +[ +p_rou_tbl_dex +]. + + = + +2329 +de_ +; + +2330 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +mask + = + +2331 +mask +; + +2332 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +pt + = + +2333 +tx_pt +; + +2334 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +nh + = + +2335 +nh_ +; + +2336 +p_rou_tbl_dex +++; + +2337 +tok + = + `ok +( +NULL +, "("); + +2344 i( + `rcmp +( +g_me +, "nd_route_tbl") == 0) { + +2345 +nd_rou_tbl_e + = 1; + +2347 +ut8_t + +de_v6 +[16], +dth + = 0, +tx_pt + = + +2348 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2349 +ut8_t + +nd_rou_tbl_r_max_n + = 128; + +2350  +de_v6_r +[ +nd_rou_tbl_r_max_n +]; + +2351  +dth_r +[ +nd_rou_tbl_r_max_n +]; + +2352  +tx_pt_r +[ +nd_rou_tbl_r_max_n +]; + +2353  +nh_v6_r +[ +nd_rou_tbl_r_max_n +]; + +2354 * +tok + = + `ok +( +g_vue +, "("); + +2355  +tok +) { + +2356 +i + = 0; + +2357 ( +i + < ( +nd_rou_tbl_r_max_n + - 1)) + +2358 && ( +tok +[ +i +] != ',')) { + +2359 +de_v6_r +[ +i +] = +tok +[i]; + +2360 +i +++; + +2362 +de_v6_r +[ +i +] = '\0'; + +2363 + `my___v6 +( +AF_INET6 +, +de_v6_r +, + +2364 & +de_v6 +); + +2366 +i +++; + +2367 +j + = 0; + +2368 ( +j + < ( +nd_rou_tbl_r_max_n + - 1)) + +2369 && ( +tok +[ +i + + +j +] != ',')) { + +2370 +dth_r +[ +j +] = +tok +[ +i + + j]; + +2371 +j +++; + +2373 +dth_r +[ +j +] = '\0'; + +2375  +s +; + +2376  +s + = 0; +dth_r +[s] != '\0'; ++s) + +2377 +dth + = dth * 10 + +dth_r +[ +s +] - '0'; + +2379 +j +++; + +2380 +k + = 0; + +2381 ( +k + < ( +nd_rou_tbl_r_max_n + - 1)) + +2382 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2383 +tx_pt_r +[ +k +] = +tok +[ +i + + +j + + k]; + +2384 +k +++; + +2386 +tx_pt_r +[ +k +] = '\0'; + +2387 +tx_pt + = + `oul +( +tx_pt_r +, +NULL +, 16); + +2389 +k +++; + +2390 +l + = 0; + +2391 ( +l + < ( +nd_rou_tbl_r_max_n + - 1)) + +2392 && ( +tok +[ +i + + +j + + +k + + +l +] != ')')) { + +2393 +nh_v6_r +[ +l +] = +tok +[ +i + + +j + + +k + +]; + +2394 +l +++; + +2396 +nh_v6_r +[ +l +] = '\0'; + +2397 + `my___v6 +( +AF_INET6 +, +nh_v6_r +, + +2398 & +nh_v6 +); + +2401  +i + = 0; i < 16; i++) { + +2402 +lib_nd_rou_b + + +2403 [ +nd_rou_tbl_dex +]. +v6 +[ +i +] = + +2404 +de_v6 +[ +i +]; + +2405 +lib_nd_rou_b + + +2406 [ +nd_rou_tbl_dex +]. +nhv6 +[ +i +] = + +2407 +nh_v6 +[ +i +]; + +2409 +lib_nd_rou_b +[ +nd_rou_tbl_dex +]. +dth + = + +2410 +dth +; + +2411 +lib_nd_rou_b +[ +nd_rou_tbl_dex +]. +pt + = + +2412 +tx_pt +; + +2414 +nd_rou_tbl_dex +++; + +2415 +tok + = + `ok +( +NULL +, "("); + +2434 + } +} + +2436  + $lib_p_ +( +pe_ms + * +ms +, + +2437 +__e_unud +  +p_ms + * +p +) + +2440 + `RTE_LOG +( +INFO +, +LIBARP +, "ARP initialization ...\n"); + +2443 i( + `p_r_gs +( +ms +)) { + +2444 + `RTE_LOG +( +INFO +, +LIBARP +, "arp_parse_args failed ...\n"); + +2449 +lib_p_pktmbuf_tx_po + = + +2450 + `e_pktmbuf_po_ +("lib_p_mbuf_tx_po", +NB_ARPICMP_MBUF +, 32, + +2451 0, +RTE_MBUF_DEFAULT_BUF_SIZE +, + +2452 + `e_sock_id +()); + +2454 i( +lib_p_pktmbuf_tx_po + = +NULL +) { + +2455 + `RTE_LOG +( +INFO +, +LIBARP +, "ARP mbufool create failed.\n"); + +2459 +lib_p_pkt + = + `e_pktmbuf_loc +( +lib_p_pktmbuf_tx_po +); + +2460 i( +lib_p_pkt + = +NULL +) { + +2461 + `RTE_LOG +( +INFO +, +LIBARP +, "ARPib_arp_pktlloc failed.\n"); + +2465 +p_hash_ms +. +sock_id + = + `e_sock_id +(); + +2466 +p_hash_ms +. +s + = +MAX_NUM_ARP_ENTRIES +; + +2467 +p_hash_ms +. +key_n + = ( +p_key_v4 +); + +2468 +p_hash_hd + = + `e_hash_ +(& +p_hash_ms +); + +2470 i( +p_hash_hd + = +NULL +) { + +2471 + `RTE_LOG +( +INFO +, +LIBARP +, + +2473 +p_hash_ms +. +sock_id +); + +2475 + `RTE_LOG +( +INFO +, +LIBARP +, "arp_hash_handle %p\n\n", + +2476 (*) +p_hash_hd +); + +2481 +tim_mempo_p + = + `e_mempo_ +("timer_mempool_arp", + +2482 +tim_objs_mempo_cou +, + +2483 ( +e_tim +), + +2485 +NULL +, NULL, + +2486 +NULL +, NULL, + `e_sock_id +(), 0); + +2487 i( +tim_mempo_p + = +NULL +) { + +2488 + `e_nic +("timer_mempool createrror\n"); + +2490 + `e_tim_subsyem_ +(); + +2491 + `li_add_ty +( +ETHER_TYPE_ARP +, +oss_picmp_pkt_r +); + +2494 +nd_hash_ms +. +sock_id + = + `e_sock_id +(); + +2495 +nd_hash_ms +. +s + = +MAX_NUM_ND_ENTRIES +; + +2496 +nd_hash_ms +. +key_n + = ( +nd_key_v6 +); + +2497 +nd_hash_hd + = + `e_hash_ +(& +nd_hash_ms +); + +2498 i( +nd_hash_hd + = +NULL +) { + +2499 + `RTE_LOG +( +INFO +, +LIBARP +, + +2501 +nd_hash_ms +. +sock_id +); + +2503 + `RTE_LOG +( +INFO +, +LIBARP +, "nd_hash_handle %p\n\n", + +2504 (*) +nd_hash_hd +); + +2508 + } +} + +2510  + $p_tim_back +( +e_tim + * +tim +, * +g +) + +2512  +p_tim_key + * +move_key + = (p_tim_key *) +g +; + +2513 i( +ARPICMP_DEBUG +) + +2514 + `RTE_LOG +( +INFO +, +LIBARP +, "ARP TIMER callback :xpire :%d\n", + +2515 () +tim +-> +expe +); + +2516 i( +ARPICMP_DEBUG +) + +2517 + `RTE_LOG +( +INFO +, +LIBARP +, + +2519 ( +move_key +-> + + >> 24), + +2520 (( +move_key +-> + + & 0x00ff0000) >> 16), + +2521 (( +move_key +-> + + & 0x0000ff00) >> 8), + +2522 (( +move_key +-> + + & 0x000000ff)),emove_key-> +pt_id +); + +2523 + `move_p_y +(( +ut32_t + +move_key +-> + +, + +2524 ( +ut8_t + +move_key +-> +pt_id +, +g +); + +2526 + } +} + +2528  + $nd_tim_back +( +e_tim + * +tim +, * +g +) + +2530  +nd_tim_key + * +move_key + = (nd_tim_key *) +g +; + +2531 i( +ARPICMP_DEBUG +) + +2532 + `RTE_LOG +( +INFO +, +LIBARP +, "ndime callback :xpire :%d\n", + +2533 () +tim +-> +expe +); + +2534 + `move_nd_y_v6 +( +move_key +-> +v6 +,emove_key-> +pt_id +); + +2536 + } +} + +2538  + $_p_b +() + +2541  +i +; + +2542  +i + = 0; i < +MAX_ARP_DATA_ENTRY_TABLE +; i++) { + +2543 + `puϋ_p_y +((cڡ  +h_addr + *) + +2544 & +p_y_da_b +[ +i +]. +h_addr +, + +2545 +p_y_da_b +[ +i +]. + +, + +2546 ( +ut8_t + +p_y_da_b +[ +i +]. +pt +, + +2547 +STATIC_ARP +); + +2549 + `t_p_b +(); + +2551 + } +} + +2553  + $_nd_b +() + +2556  +i +; + +2557  +i + = 0; i < +MAX_ND_DATA_ENTRY_TABLE +; i++) { + +2558 + `puϋ_nd_y +((cڡ  +h_addr + *) + +2559 +nd_y_da_b +[ +i +]. +h_addr +, + +2560 +nd_y_da_b +[ +i +]. +v6 +, + +2561 ( +ut8_t + +nd_y_da_b +[ +i +]. +pt +, + +2562 +STATIC_ND +); + +2564 + `t_nd_b +(); + +2566 + } +} + +2568  + $nd_gtuous_p +( +l2_phy_r_t + * +pt +) + +2570  +h_hdr + * +h_h +; + +2571  +p_hdr + * +p_h +; + +2573  +e_mbuf + * +p_pkt + = +lib_p_pkt +; + +2575 i( +pt + = +NULL +) { + +2576 + `RTE_LOG +( +INFO +, +LIBARP +, "PORT ID DOWN.. %s\n", +__FUNCTION__ +); + +2581 i( +p_pkt + = +NULL +) { + +2582 i( +ARPICMP_DEBUG +) + +2583 + `RTE_LOG +( +INFO +, +LIBARP +, + +2588 +h_h + = + `e_pktmbuf_mtod +( +p_pkt +,  +h_hdr + *); + +2590 + `h_addr_cy +(& +brd_h_addr +, & +h_h +-> +d_addr +); + +2591 + `h_addr_cy +(( +h_addr + *) + +2592 & +pt +-> +maddr +[0], & +h_h +-> +s_addr +); + +2593 +h_h +-> +h_ty + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_ARP +); + +2595 +p_h + = ( +p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +2596 +p_h +-> +p_hrd + = + `CHECK_ENDIAN_16 +( +ARP_HRD_ETHER +); + +2597 +p_h +-> +p_o + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_IPv4 +); + +2598 +p_h +-> +p_h + = +ETHER_ADDR_LEN +; + +2599 +p_h +-> +p_n + = ( +ut32_t +); + +2600 +p_h +-> +p_ + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +2602 + `h_addr_cy +(( +h_addr + *) + +2603 & +pt +-> +maddr +[0], & +p_h +-> +p_da +. +p_sha +); + +2604 i( +pt +-> +v4_li + = +NULL +) { + +2605 i( +ARPICMP_DEBUG +) + +2606 + `RTE_LOG +( +INFO +, +LIBARP +, "port->ipv4_list is NULL.. %s\n", + +2607 +__FUNCTION__ +); + +2610 +p_h +-> +p_da +. +p_s + = ((( +v4li_t + *( +pt +-> +v4_li +))-> +addr +); + +2611 + `h_addr_cy +(& +nu_h_addr +, & +p_h +-> +p_da +. +p_tha +); + +2613 +p_h +-> +p_da +. +p_t + = 0; + +2617 +p_pkt +-> +pkt_n + = 42; + +2618 +p_pkt +-> +da_n + = 42; + +2620 i( +ARPICMP_DEBUG +) { + +2621 + `RTE_LOG +( +INFO +, +LIBARP +, "SENDING GRATUITOUS ARP REQUEST\n"); + +2622 + `t_mbuf +("TX", +pt +-> +pmdid +, +p_pkt +, +__LINE__ +); + +2624 +pt +-> + `sm_sg_pkt +t, +p_pkt +); + +2625 + } +} + +2627  + $t_pdebug +( +ag +) + +2629 i( +ag +) { + +2630 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned on\n\r"); + +2631 +ARPICMP_DEBUG + = 1; + +2632 +NDIPV6_DEBUG + = 1; + +2635 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned off\n\r"); + +2636 +ARPICMP_DEBUG + = 0; + +2637 +NDIPV6_DEBUG + = 0; + +2639 + } +} + +2641  + $t_imeout +( +ut32_t + +timeout_v +) + +2643 i( +timeout_v + == 0) { + +2644 + `RTE_LOG +( +INFO +, +LIBARP +, "Cannot be zero...\n\r"); + +2647 i( +ARPICMP_DEBUG +) + +2648 + `RTE_LOG +( +INFO +, +LIBARP +, + +2650 +p_timeout +, +timeout_v +); + +2651 +p_timeout + = +timeout_v +; + +2652 i( +ARPICMP_DEBUG +) + +2653 + `RTE_LOG +( +INFO +, +LIBARP +, "set_arptimeout:rp_timeout %u\n\r", + +2654 +p_timeout +); + +2655 + } +} + + @VIL/l2l3_stack/lib_arp.h + +17 #ide +__INCLUDE_LIB_ARP_H__ + + +18  + #__INCLUDE_LIB_ARP_H__ + + + ) + +20  + ~ + +21  + ~"e_h.h +" + +22  + ~"l2_o.h +" + +23  + ~"p.h +" + +25  + #ND_IPV6_ADDR_SIZE + 16 + + ) + +26  + #ND_IPV6_TIMER_EXPIRY + 300 + + ) + +27  + #ARP_TIMER_EXPIRY + 1800 + + ) + +28  + #TIMER_MILLISECOND + 1 + + ) + +29  + #RTE_LOGTYPE_LIBARP + +RTE_LOGTYPE_USER1 + + + ) + +30  + #MAX_ND_RT_ENTRY + 16 + + ) + +31  + #MAX_ARP_RT_ENTRY + 16 + + ) + +37  + slib_p_rou_b_y + { + +38 +ut32_t + + m +; + +39 +ut32_t + + mmask +; + +40 +ut32_t + + mpt +; + +41 +ut32_t + + mnh +; + +48  + slib_nd_rou_b_y + { + +49 +ut8_t + + mv6 +[16]; + +50 +ut8_t + + mdth +; + +51 +ut32_t + + mpt +; + +52 +ut8_t + + mnhv6 +[16]; + +55  +lib_nd_rou_b_y + +lib_nd_rou_b +[ +MAX_ND_RT_ENTRY +]; + +56  +lib_p_rou_b_y + +lib_p_rou_b +[ +MAX_ARP_RT_ENTRY +]; + +59 + mARP_FOUND +, + +60 + mARP_NOT_FOUND +, + +61 + mNH_NOT_FOUND +, + +64 + ep_key_ty + { + +65 + mARP_IPV4 +, + +66 + mND_IPV6 +, + +69  + sp_key_v4 + { + +70 +ut32_t + + m +; + +71 +ut8_t + + mpt_id +; + +72 +ut8_t + + mfr1 +; + +73 +ut8_t + + mfr2 +; + +74 +ut8_t + + mfr3 +; + +80  + snd_key_v6 + { + +81 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +82 +ut8_t + + mpt_id +; + +83 +ut8_t + + mfr1 +; + +84 +ut8_t + + mfr2 +; + +85 +ut8_t + + mfr3 +; + +91  + sp_key + { + +92 +p_key_ty + + mty +; + +94  +p_key_v4 + + mv4 +; + +95 } + mkey +; + +103  + snd_tim_key + { + +104 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +105 +ut8_t + + mpt_id +; + +106 } + g__e_che_igd +; + +112  + sp_tim_key + { + +113 +ut32_t + + m +; + +114 +ut8_t + + mpt_id +; + +115 } + g__e_che_igd +; + +117 +ut32_t + +ARPICMP_DEBUG +; + +119  + #COMPLETE + 1 + + ) + +120  + #INCOMPLETE + 0 + + ) + +122 +ut32_t + +NDIPV6_DEBUG +; + +124  + #ICMPv6_COMPLETE + 1 + + ) + +125  + #ICMPv6_INCOMPLETE + 0 + + ) + +126  + #STATIC_ARP + 1 + + ) + +127  + #DYNAMIC_ARP + 0 + + ) + +128  + #STATIC_ND + 1 + + ) + +129  + #DYNAMIC_ND + 0 + + ) + +136  + sp_y_da + { + +137  +h_addr + + mh_addr +; + +138 +ut32_t + + m +; + +139 +ut8_t + + mpt +; + +140 +ut8_t + + mus +; + +141 +ut8_t + + mmode +; + +142 +ut8_t + + my_cou +; + +143  +e_tim + * + mtim +; + +144  +p_tim_key + * + mtim_key +; + +145 } +__ibu__ + (( +cked +)); + +152  + sb_p_y_da + { + +153 +ut8_t + + mh_addr +[6]; + +154 +ut8_t + + mpt +; + +155 +ut8_t + + mus +; + +156 +ut32_t + + m +; + +157 } +__ibu__ + (( +cked +)); + +164  + snd_y_da + { + +165  +h_addr + + mh_addr +; + +166 +ut8_t + + mpt +; + +167 +ut8_t + + mus +; + +168 +ut8_t + + mmode +; + +169 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +170  +e_tim + * + mtim +; + +171 } +__ibu__ + (( +cked +)); + +179  + sb_nd_y_da + { + +180 +ut8_t + + mh_addr +[6]; + +181 +ut8_t + + mpt +; + +182 +ut8_t + + mus +; + +183 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +184  +e_tim + * + mtim +; + +185 } +__ibu__ + (( +cked +)); + +201  +g_de_mac_addss +(cڡ +ut32_t + +addr +, ut32_* +phy_pt +, + +202  +h_addr + * +hw_addr +, +ut32_t + * +nh +); + +216  +g_de_mac_addr_pt +(cڡ +ut32_t + +addr +, + +217 +ut32_t + * +phy_pt +,  +h_addr + * +hw_addr +); + +230  +g_de_mac_addr +(cڡ +ut32_t + +addr +, ut32_* +phy_pt +, + +231  +h_addr + * +hw_addr +); + +246  +g_de_mac_addss_v6 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +247  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + +262  +g_de_mac_addss_v6_pt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +263  +h_addr + * +hw_addr +, + +264 +ut8_t + +nhv6 +[]); + +272  +h_addr + * +g_lk_hw_addr +( +ut8_t + +out_pt +); + +279  +t_p_b +(); + +286  +t_nd_b +(); + +295  +move_p_y +( +ut32_t + +addr +, +ut8_t + +ptid +, * +g +); + +305  +move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +ptid +); + +318  +puϋ_p_y +(cڡ  +h_addr + * +hw_addr +, +ut32_t + +addr +, + +319 +ut8_t + +ptid +, ut8_ +mode +); + +333  +puϋ_nd_y +(cڡ  +h_addr + * +hw_addr +, +ut8_t + + +[], + +334 +ut8_t + +ptid +, ut8_ +mode +); + +344  +que_p +( +ut8_t + +pt_id +, +ut32_t + + +); + +353  +e_mbuf + * +que_echo +( +ut32_t + +pt_id +, ut32_ + +); + +362  +e_mbuf + * +que_icmpv6_echo +( +ut8_t + +v6 +[], +l2_phy_r_t + * +pt +); + +371  +e_mbuf + * +que_nd +( +ut8_t + +v6 +[], +l2_phy_r_t + * +pt +); + +382  +oss_picmp_pkt +( +e_mbuf + * +pkt +, +l2_phy_r_t + * +pt +); + +390  +p_y_da + * +ve_p_y +(cڡ  +p_key_v4 + +p_key +); + +399  +nd_y_da + * +ve_nd_y +( +nd_key_v6 + +nd_key +); + +405  +lib_p_ +( +pe_ms + * +ms +,  +p_ms + * +p +); + +407  +t_pt_to_ldb_m +( +ut8_t + +pe_num +); + +412 +ut8_t + +g_pt_to_ldb_m +(ut8_ +phy_pt_id +); + +414  +t_phy_pt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +415  +t_phy_out_m +( +ut8_t + +pe_num +, ut8_* +m +); + +421 +ut8_t + +g_ldb_out_id +(ut8_ +au_phy_pt +); + +422 +ut8_t + +g_vnf_t_num +(ut8_ +pe_num +); + +424  +pes_pt_fo +(); + +425  +pes_m_fo +(); + +434  +p_tim_back +( +e_tim + *, * +g +); + +443  +nd_tim_back +( +e_tim + * +tim +, * +g +); + +449  +_p_b +(); + +454  +_nd_b +(); + +467  +oss_picmp_pkt_r +( +e_mbuf + ** +pkt +, +ut16_t + +pkt_num +, + +468 +ut64_t + +pkt_mask +, +l2_phy_r_t + * +pt +); + +475  +nd_gtuous_p +( +l2_phy_r_t + * +pt +); + +481  +t_pdebug +( +ag +); + +487  +t_imeout +( +ut32_t + +timeout_v +); + +495 +ut32_t + +g_nh +(uint32_t, uint32_t *); + +505  +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pt +, ut8_ +nhv6 +[]); + + @VIL/l2l3_stack/lib_icmpv6.c + +18  + ~"lib_icmpv6.h +" + +20  + $t_pkt +( +ut8_t + * +rd +) + +22  +i + = 0, +j + = 0; + +24 + `tf +("Packet Contents:\n"); + +26  +i + = 0; i < 20; i++) { + +27  +j + = 0; j < 20; j++) + +28 + `tf +("%02x ", +rd +[(20 * +i ++ +j +]); + +30 + `tf +("\n"); + +32 + } +} + +34  +ut16_t + + $icmpv6_v6_nd_checksum +( +e_mbuf + * +pkt +) + +36  +h_hdr + * +h_h +; + +37  +v6_hdr + * +v6_h +; + +38  +icmpv6_hdr + * +icmpv6_h +; + +40 +size_t + +tm +, +offt +; + +41 +ut8_t + * +tmack +, * +ack +; + +43 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +44 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +45 +icmpv6_h + = + +46 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +48 +ut32_t + +yldn + = 0x20; + +49 +yldn + = + `e_bsw32 +(payloadlen); + +51 +tm + = 40 + ( +icmpv6_hdr ++ ( +icmpv6_nd_hdr +); + +52 +tm + = + `RTE_CACHE_LINE_ROUNDUP +(tmplen); + +53 +tmack + = + `e_zmloc +( +NULL +, +tm +, +RTE_CACHE_LINE_SIZE +); + +54 +ack + = +tmack +; + +56 +offt + = 16; + +57 + `memy +( +ack +, & +v6_h +-> +c_addr +[0], +offt +); + +58 +ack + + +offt +; + +59 + `memy +( +ack +, & +v6_h +-> +d_addr +[0], +offt +); + +60 +ack + + +offt +; + +61 * +ack + = 0; + +62 +ack +++; + +63 * +ack + = 0; + +64 +ack +++; + +65 * +ack + = 0; + +66 +ack +++; + +67 + `memy +( +ack +, & +v6_h +-> +o +, 1); + +68 +ack +++; + +69 + `memy +( +ack +, & +yldn +, 4); + +70 +ack + += 4; + +71 + `memy +( +ack +, +icmpv6_h +, + +72 ( +icmpv6_hdr ++ ( +icmpv6_nd_hdr +)); + +74 i( +ARPICMP_DEBUG +) + +75 + `t_pkt +( +tmack +); + +77  + `e_w_cksum +( +tmack +, +tm +); + +78 + } +} + +80  +ut16_t + + $icmpv6_v6_echo_checksum +( +e_mbuf + * +pkt +) + +82  +h_hdr + * +h_h +; + +83  +v6_hdr + * +v6_h +; + +84  +icmpv6_hdr + * +icmpv6_h +; + +86 +size_t + +tm +, +offt +; + +87 +ut8_t + * +tmack +, * +ack +; + +89 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +90 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +91 +icmpv6_h + = + +92 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +94 +ut32_t + +yldn + = + `e_bsw16 +( +v6_h +-> +yld_n +); + +95 +ut32_t + +yldn_sw + = + `e_bsw32 +( +yldn +); + +97 i( +ARPICMP_DEBUG +) + +98 + `tf +("%s:ayldn: %u\n", +__FUNCTION__ +, +yldn +); + +100 +tm + = 40 + +yldn +; + +101 +tm + = + `RTE_CACHE_LINE_ROUNDUP +(tmplen); + +102 +tmack + = + `e_zmloc +( +NULL +, +tm +, +RTE_CACHE_LINE_SIZE +); + +103 +ack + = +tmack +; + +105 +offt + = 16; + +106 + `memy +( +ack +, & +v6_h +-> +c_addr +[0], +offt +); + +107 +ack + + +offt +; + +108 + `memy +( +ack +, & +v6_h +-> +d_addr +[0], +offt +); + +109 +ack + + +offt +; + +110 * +ack + = 0; + +111 +ack +++; + +112 * +ack + = 0; + +113 +ack +++; + +114 * +ack + = 0; + +115 +ack +++; + +116 + `memy +( +ack +, & +v6_h +-> +o +, 1); + +117 +ack +++; + +118 + `memy +( +ack +, & +yldn_sw +, 4); + +119 +ack + += 4; + +120 + `memy +( +ack +, +icmpv6_h +, +yldn +); + +122 i( +ARPICMP_DEBUG +) + +123 + `t_pkt +( +tmack +); + +125  + `e_w_cksum +( +tmack +, +tm +); + +126 + } +} + +128  + $oss_icmpv6_pkt +( +e_mbuf + * +pkt +, +l2_phy_r_t + * +pt +) + +131  +h_hdr + * +h_h +; + +132  +v6_hdr + * +v6_h +; + +133  +icmpv6_hdr + * +icmpv6_h +; + +134  +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +135 +ut8_t + +v6_addr +[16]; + +136 +ut8_t + +i + = 0; + +137 +ut8_t + +q_tv6 +[16]; + +140 i( +pt + = +NULL +) { + +141 + `tf +("port is NULL"); + +143 } i( +pt +-> +v6_li + = +NULL +) { + +144 + `tf +("IPV6ddressot configured onink\n"); + +148 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +149 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +150 +icmpv6_h + = + +151 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +153 i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REQUEST +) + +154 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +155  +i + = 0; i < 16; i++) { + +156 +v6_addr +[ +i +] = +v6_h +-> +c_addr +[i]; + +159 + `h_addr_cy +(& +h_h +-> +s_addr +, &h_h-> +d_addr +); + +160 + `h_addr_cy +(( +h_addr + *)& +pt +-> +maddr +[0], + +161 & +h_h +-> +s_addr +); + +163  +i + = 0; i < 16; i++) + +164 +v6_h +-> +c_addr +[ +i +] = ipv6_h-> +d_addr +[i]; + +165  +i + = 0; i < 16; i++) + +166 +v6_h +-> +d_addr +[ +i +] = +v6_addr +[i]; + +168 +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REPLY +; + +169 +icmpv6_h +-> +icmpv6_cksum + = 0; + +170 +icmpv6_h +-> +icmpv6_cksum + = ~ + `icmpv6_v6_echo_checksum +( +pkt +); + +171 +pt +-> + `sm_bulk_pkts +t, & +pkt +, 1); + +174 } i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REPLY +) + +175 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +176  +nd_key_v6 + +nd_key +; + +177 +nd_key +. +pt_id + = +pt +-> +pmdid +; + +178  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +179 +nd_key +. +v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +182 +nd_key +. +fr1 + = 0; + +183 +nd_key +. +fr2 + = 0; + +184 +nd_key +. +fr3 + = 0; + +187  +nd_y_da + * +w_nd_da + = + `ve_nd_y +( +nd_key +); + +188 i( +w_nd_da + = +NULL +) { + +189 +tf + + +191 +nd_key +. +pt_id +); + +192  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +193 + `tf +("%02X%02X ", +nd_key +. +v6 +[ +i +], + +194 +nd_key +. +v6 +[ +i + + 1]); + +199 +w_nd_da +-> +us + = +COMPLETE +; + +200 } i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_NEIGHBOR_SOLICITATION +) + +201 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +203 +icmpv6_nd_h + = + +204 ( +icmpv6_nd_hdr + *)((*) +icmpv6_h + + + +205 ( +icmpv6_hdr +)); + +206  +h_addr + * +c_hw_addr + = & +h_h +-> +s_addr +; + +207 +ut8_t + +c_v6 +[16], +d_v6 +[16]; + +208 +ut16_t + +mui_addr +; + +210  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +211 +c_v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +212  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +213 +d_v6 +[ +i +] = +v6_h +-> +d_addr +[i]; + +215 +mui_addr + = +d_v6 +[0]; + +218 i(( +IPV6_MULTICAST + & (( +mui_addr + << 8| +d_v6 +[1])) + +219 || ! + `memcmp +(& +pt +-> +maddr +[0], & +h_h +-> +d_addr +, 6)) { + +220 + `puϋ_nd_y +( +c_hw_addr +, +c_v6 +, +pt +-> +pmdid +, + +221 +DYNAMIC_ND +); + +224  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +225 +q_tv6 +[ +i +] = +icmpv6_nd_h +-> +rg_v6 +[i]; + +227 i(! +memcmp + + +228 (& +q_tv6 +[0], + +229 &(( +v6li_t + * +pt +-> +v6_li +)-> +addr +[0], + +232 + `h_addr_cy +(& +h_h +-> +s_addr +, &h_h-> +d_addr +); + +233 + `h_addr_cy +(( +h_addr + *)& +pt +-> + +234 +maddr +[0], & +h_h +-> +s_addr +); + +237  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +238 +v6_h +-> +d_addr +[ +i +] = + +239 +v6_h +-> +c_addr +[ +i +]; + +240  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +241 +v6_h +-> +c_addr +[ +i +] = +q_tv6 +[i]; + +242 +icmpv6_h +-> +icmpv6_ty + = + +243 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +244 +icmpv6_nd_h +-> +ty + = +e_Tg_Lk_Lay_Addss +; + +245 +icmpv6_nd_h +-> +ngth + = 1; + +246 + `memy +(& +icmpv6_nd_h +-> +lk_y_addr +[0], + +247 & +pt +-> +maddr +[0], 6); + +248 +icmpv6_nd_h +-> +icmpv6_rved + = 0; + +249 +icmpv6_nd_h +-> +icmpv6_rved + |= + +250 +e_u_to_be_32 + + +251 ( +NEIGHBOR_ROUTER_OVERRIDE_SET +); + +253 +icmpv6_h +-> +icmpv6_cksum + = 0; + +254 +icmpv6_h +-> +icmpv6_cksum + = + +255 ~ + `icmpv6_v6_nd_checksum +( +pkt +); + +257 +pt +-> + `sm_bulk_pkts +t, & +pkt +, 1); + +259 } i( +ARPICMP_DEBUG +) { + +260 +tf + + +266 i( +ARPICMP_DEBUG +) { + +267 +tf + + +272 } i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_NEIGHBOR_ADVERTISEMENT +) + +273 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +274  +h_addr + * +c_hw_addr + = & +h_h +-> +s_addr +; + +275 +ut8_t + +v6 +[16]; + +276  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +277 +v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +280 + `puϋ_nd_y +( +c_hw_addr +, +v6 +, +pt +-> +pmdid +, +DYNAMIC_ND +); + +282 i( +ARPICMP_DEBUG +) { + +283 + `tf +("ICMPv6 Type %d Not Supported yet !!!\n", + +284 +icmpv6_h +-> +icmpv6_ty +); + +288 + `e_pktmbuf_ +( +pkt +); + +289 + } +} + +291  +e_mbuf + * + $que_icmpv6_echo +( +ut8_t + +v6 +[], +l2_phy_r_t + * +pt +) + +293  +h_hdr + * +h_h +; + +294  +v6_hdr + * +v6_h +; + +295  +icmpv6_hdr + * +icmpv6_h +; + +296  +icmpv6_fo_hdr + * +icmpv6_fo_h +; + +297  +i +; + +298 +ut8_t + * +icmp_da +; + +300  +e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +301 i( +icmpv6_pkt + = +NULL +) { + +302 i( +ARPICMP_DEBUG +) + +303 + `tf +("Errorllocating icmpv6_pktte_mbuf\n"); + +304  +NULL +; + +307 +h_h + = + `e_pktmbuf_mtod +( +icmpv6_pkt +,  +h_hdr + *); + +309 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +310 +icmpv6_h + = + +311 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +312 +icmpv6_fo_h + = + +313 ( +icmpv6_fo_hdr + *)((*) +icmpv6_h + + + +314 ( +icmpv6_hdr +)); + +316 + `h_addr_cy +(( +h_addr + *)& +pt +-> +maddr +[0], & +h_h +-> +s_addr +); + +317 +h_h +-> +h_ty + = + `e_bsw16 +(0x86dd); + +318  +i + = 0; i < 6; i++) { + +319 +h_h +-> +d_addr +. +addr_bys +[ +i +] = 0; + +322 +v6_h +-> +vtc_ow + = + `e_bsw32 +(0x60000000); + +323 +v6_h +-> +yld_n + = + `e_bsw16 +(64); + +324 +v6_h +-> +o + = 58; + +325 +v6_h +-> +h_lims + = 64; + +327  +i + = 0; i < 16; i++) { + +328 +v6_h +-> +c_addr +[ +i +] = 0x0; + +329 +v6_h +-> +d_addr +[ +i +] = +v6 +[i]; + +332 +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REQUEST +; + +333 +icmpv6_h +-> +icmpv6_code + = 0; + +334 +icmpv6_fo_h +-> +icmpv6_idt + = + `e_bsw16 +(0x5151); + +335 +icmpv6_fo_h +-> +icmpv6_q_nb + = + `e_bsw16 +(0x1); + +337 +icmp_da + = ( +ut8_t + * +icmpv6_h + + 8; + +338  +i + = 0; i < 56; i++) { + +339 * +icmp_da + = +i + + 1; + +340 +icmp_da +++; + +342 +icmpv6_h +-> +icmpv6_cksum + = 0; + +343 +icmpv6_h +-> +icmpv6_cksum + = ~ + `icmpv6_v6_echo_checksum +( +icmpv6_pkt +); + +345 +icmpv6_pkt +-> +pkt_n + = + +346 ( +h_hdr ++ ( +v6_hdr +) + 64; + +347 +icmpv6_pkt +-> +da_n + = icmpv6_pkt-> +pkt_n +; + +349  +icmpv6_pkt +; + +350 + } +} + +352  +e_mbuf + * + $que_nd +( +ut8_t + +v6 +[], +l2_phy_r_t + * +pt +) + +354  +h_hdr + * +h_h +; + +355  +v6_hdr + * +v6_h +; + +356  +icmpv6_hdr + * +icmpv6_h +; + +357  +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +358  +i +; + +360  +e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +361 i( +icmpv6_pkt + = +NULL +) { + +362 i( +ARPICMP_DEBUG +) + +363 + `tf +("Errorllocating icmpv6_pktte_mbuf\n"); + +364  +NULL +; + +367 +h_h + = + `e_pktmbuf_mtod +( +icmpv6_pkt +,  +h_hdr + *); + +369 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +370 +icmpv6_h + = + +371 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +372 +icmpv6_nd_h + = + +373 ( +icmpv6_nd_hdr + *)((*) +icmpv6_h + + + +374 ( +icmpv6_hdr +)); + +376 + `h_addr_cy +(( +h_addr + *)& +pt +-> +maddr +[0], & +h_h +-> +s_addr +); + +377 +h_h +-> +h_ty + = + `e_bsw16 +(0x86dd); + +378  +i + = 0; i < 6; i++) { + +379 +h_h +-> +d_addr +. +addr_bys +[ +i +] = 0; + +382 +v6_h +-> +vtc_ow + = 0x60000000; + +383 +v6_h +-> +yld_n + = + `e_bsw16 +(32); + +384 +v6_h +-> +o + = 58; + +385 +v6_h +-> +h_lims + = 64; + +387  +i + = 0; i < 16; i++) { + +388 +v6_h +-> +c_addr +[ +i +] = 0x0; + +389 +v6_h +-> +d_addr +[ +i +] = +v6 +[i]; + +392 +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_NEIGHBOR_SOLICITATION +; + +393 +icmpv6_h +-> +icmpv6_code + = 0; + +395 +icmpv6_nd_h +-> +icmpv6_rved + = 0x0; + +396  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +397 +icmpv6_nd_h +-> +rg_v6 +[ +i +] = +v6 +[i]; + +398 +icmpv6_nd_h +-> +ty + = +e_Sour_Lk_Lay_Addss +; + +399 +icmpv6_nd_h +-> +ngth + = 1; + +400 + `memy +(& +icmpv6_nd_h +-> +lk_y_addr +[0], & +pt +-> +maddr +[0], 6); + +402 +icmpv6_h +-> +icmpv6_cksum + = 0; + +403 +icmpv6_h +-> +icmpv6_cksum + = ~ + `icmpv6_v6_nd_checksum +( +icmpv6_pkt +); + +405 +icmpv6_pkt +-> +pkt_n + = + +406 ( +h_hdr ++ ( +v6_hdr +) + 32; + +407 +icmpv6_pkt +-> +da_n + = icmpv6_pkt-> +pkt_n +; + +409  +icmpv6_pkt +; + +410 + } +} + + @VIL/l2l3_stack/lib_icmpv6.h + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~"lib_p.h +" + +35  + ~ + +36  + ~"e_h.h +" + +42  + sicmpv6_hdr + { + +43 +ut8_t + + micmpv6_ty +; + +44 +ut8_t + + micmpv6_code +; + +45 +ut16_t + + micmpv6_cksum +; + +46 } +__ibu__ + (( +__cked__ +)); + +51  + sicmpv6_fo_hdr + { + +52 +ut16_t + + micmpv6_idt +; + +53 +ut16_t + + micmpv6_q_nb +; + +54 } +__ibu__ + (( +__cked__ +)); + +59  + sicmpv6_nd_hdr + { + +61 +ut32_t + + micmpv6_rved +; + +63 +ut8_t + + mrg_v6 +[16]; + +64 +ut8_t + + mty +; + +65 +ut8_t + + mngth +; + +66 +ut8_t + + mlk_y_addr +[6]; + +67 } +__ibu__ + (( +__cked__ +)); + +70  + #ICMPV6_PROTOCOL_ID + 58 + + ) + +71  + #ICMPV6_ECHO_REQUEST + 0x0080 + + ) + +72  + #ICMPV6_ECHO_REPLY + 0x0081 + + ) + +73  + #ICMPV6_NEIGHBOR_SOLICITATION + 0x0087 + + ) + +74  + #ICMPV6_NEIGHBOR_ADVERTISEMENT + 0x0088 + + ) + +75  + #IPV6_MULTICAST + 0xFF02 + + ) + +77  + #NEIGHBOR_SOLICITATION_SET + 0x40000000 + + ) + +78  + #NEIGHBOR_ROUTER_OVERRIDE_SET + 0xa0000000 + + ) + +79 + eicmpv6_lk_y_Addss_ty + { + +80 + me_Sour_Lk_Lay_Addss + = 1, + +81 + me_Tg_Lk_Lay_Addss +, + +82 + me_Lk_Lay_Addss + + +88 +ut8_t + +is_mui_v6_addr +(ut8_ +v6 +[]); + +93  + sicmpv6_pt_addss + { + +94 +ut32_t + + mv6 +[16]; + +95 +ut64_t + + mmac_addr +; + +101  +icmpv6_pt_addss + + gicmpv6_pt_addss +[ +RTE_MAX_ETHPORTS +]; + +103  + #MAX_NUM_ICMPv6_ENTRIES + 64 + + ) + +104  +e_mbuf + * + glib_icmpv6_pkt +; + +113  +oss_icmpv6_pkt +( +e_mbuf + * +pkt +, +l2_phy_r_t + * +pt +); + + @VIL/l2l3_stack/main_l2l3.c + +17 #ide +__INCLUDE_MAIN__ + + +18  + #__INCLUDE_MAIN_H__ + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~ + +40  + ~ + +41  + ~ + +42  + ~ + +43  + ~ + +44  + ~ + +45  + ~ + +46  + ~ + +47  + ~ + +48  + ~ + +49  + ~ + +50  + ~ + +51  + ~ + +52  + ~ + +53  + ~ + +54  + ~ + +55  + ~ + +56  + ~ + +57  + ~ + +58  + ~ + +59  + ~ + +60  + ~ + +61  + ~ + +62  + ~ + +63  + ~ + +64  + ~"lib_p.h +" + +65  + ~"l2_o.h +" + +66  + ~"r.h +" + +67  + ~"l3fwd_comm.h +" + +68  + ~"l3fwd_m4.h +" + +69  + ~"l3fwd_m6.h +" + +70  + #TIMER_RESOLUTION_CYCLES + 20000000ULL + + ) + +71  + glce_id + = 1; + +72  +cvt_r_to_numic +(); + +73  +sockaddr_ + + gaddr1 +, + gaddr2 +, + gaddr3 +, + gaddr4 +; + +74 +ut8_t + + gv6_addr0 +[16] = { + +78 +ut8_t + + gv6_addr1 +[16] = { + +83 +pt_cfig_t + + gptcf +[5] = { + +85 . +pt_id + = 0, + +86 . + gx_queue + = 1, + +87 . + gx_queue + = 1, + +88 . + ge + = 1, + +89 . + gomisc + = 1, + +90 . + gmempo + = { + +91 . +bufr_size + = 2048 + ( +e_mbuf +) + + +92 +RTE_PKTMBUF_HEADROOM +, + +93 . + gpo_size + = 32 * 1024, + +94 . + gche_size + = 256, + +95 . + gu_sock_id + = 0, + +97 . + gpt_cf + = { + +98 . +lk_ds + = 0, + +99 . + grxmode + = { + +100 . +mq_mode + = +ETH_MQ_RX_NONE +, + +101 . + ghd_l + = 0, + +102 . + ghw__checksum + = 0, + +103 . + ghw_vn_fr + = 0, + +104 . + ghw_vn_r + = 0, + +105 . + ghw_vn_exnd + = 0, + +106 . + gjumbo_ame + = 0, + +107 . + ghw_r_c + = 0, + +108 . + gab_s + = 0, + +109 . + gmax_rx_pkt_n + = 9000, + +110 . + gl_hdr_size + = 0, + +112 + g_adv_cf + = { + +113 . +rss_cf + = { + +114 . +rss_key + = +NULL +, + +115 . + grss_key_n + = 40, + +116 . + grss_hf + = 0, + +119 . + gtxmode + = { + +120 . +mq_mode + = +ETH_MQ_TX_NONE +,}, + +121 . + gbk_mode + = 0, + +122 . + g_cf + = { + +123 . +lsc + = 1, + +127 . + grx_cf + = { + +128 . +rx_thsh + = { + +129 . +hsh + = 8, + +130 . + ghthsh + = 8, + +131 . + gwthsh + = 4, + +133 . + grx__thsh + = 64, + +134 . + grx_dr_ + = 0, + +135 . + grx_deed_t + = 0, + +137 . + gtx_cf + = { + +138 . +tx_thsh + = { + +139 . +hsh + = 36, + +140 . + ghthsh + = 0, + +141 . + gwthsh + = 0, = + +143 . + gtx_rs_thsh + = 0, + +144 . + gtx__thsh + = 0, + +145 . + gtxq_ags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | +ETH_TXQ_FLAGS_NOOFFLOADS +, + +146 . + gtx_deed_t + = 0, + +150 . + gpt_id + = 1, + +151 . + gx_queue + = 1, + +152 . + gx_queue + = 1, + +153 . + ge + = 1, + +154 . + gomisc + = 1, + +155 . + gmempo + = { + +156 . +bufr_size + = 2048 + ( +e_mbuf +) + + +157 +RTE_PKTMBUF_HEADROOM +, + +158 . + gpo_size + = 32 * 1024, + +159 . + gche_size + = 256, + +160 . + gu_sock_id + = 0, + +162 . + gpt_cf + = { + +163 . +lk_ds + = 0, + +164 . + grxmode + = { + +165 . +mq_mode + = +ETH_MQ_RX_NONE +, + +166 . + ghd_l + = 0, + +167 . + ghw__checksum + = 0, + +168 . + ghw_vn_fr + = 0, + +169 . + ghw_vn_r + = 0, + +170 . + ghw_vn_exnd + = 0, + +171 . + gjumbo_ame + = 0, + +172 . + ghw_r_c + = 0, + +173 . + gab_s + = 0, + +174 . + gmax_rx_pkt_n + = 9000, + +175 . + gl_hdr_size + = 0, + +177 + g_adv_cf + = { + +178 . +rss_cf + = { + +179 . +rss_key + = +NULL +, + +180 . + grss_key_n + = 40, + +181 . + grss_hf + = 0, + +184 . + gtxmode + = { + +185 . +mq_mode + = +ETH_MQ_TX_NONE +,}, + +186 . + gbk_mode + = 0, + +187 . + g_cf + = { + +188 . +lsc + = 1, + +192 . + grx_cf + = { + +193 . +rx_thsh + = { + +194 . +hsh + = 8, + +195 . + ghthsh + = 8, + +196 . + gwthsh + = 4, + +198 . + grx__thsh + = 64, + +199 . + grx_dr_ + = 0, + +200 . + grx_deed_t + = 0, + +202 . + gtx_cf + = { + +203 . +tx_thsh + = { + +204 . +hsh + = 36, + +205 . + ghthsh + = 0, + +206 . + gwthsh + = 0, = + +208 . + gtx_rs_thsh + = 0, + +209 . + gtx__thsh + = 0, + +210 . + gtxq_ags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | +ETH_TXQ_FLAGS_NOOFFLOADS +, + +211 . + gtx_deed_t + = 0, + +216  +__ibu__ + (( +nܑu +)) + +217  +lce_malo + ( +__ibu__ + (( +unud +)) + +218 * +g +) + +220 +l2_phy_r_t + * + gpt +; + +221 +t8_t + + gptid +; + +222  +e_mbuf + * + gpkts_bur +[ +IFM_BURST_SIZE +]; + +223 +ut32_t + + gnb_tx +, + gnb_rx +; + +224 cڡ +ut64_t + + gd_tsc + = + +225 ( +e_g_tsc_hz +(+ +US_PER_S + - 1/ US_PER_S * +BURST_TX_DRAIN_US +; + +226 +ut64_t + + gev_tsc + = 0, + gcur_tsc +, + gdiff_tsc +; + +228 + gpt + = +ifm_g_f_pt +(); + +229  + gpt + ! +NULL +) { + +230 +e_tim_mage +(); + +231 + gptid + = +pt +-> +pmdid +; + +232 + gcur_tsc + = +e_rdtsc +(); + +233 + gdiff_tsc + = +cur_tsc + - +ev_tsc +; + +236 i( +uiky +( +diff_tsc + > +d_tsc +)) { + +237 i( + gpt +-> + gtx_buf_n + > 0) { + +238 +RTE_SET_USED +( +nb_tx +); + +241 + gpt +-> + gtx_buf_n + = 0; + +243 + gev_tsc + = +cur_tsc +; + +245 + gnb_rx + = +pt +-> +ve_bulk_pkts +( +ptid +, 0, +pkts_bur +); + +246 + gpt +-> + gn_rxpkts + + +nb_rx +; + +247 +oc_hdr_cv +( +pkts_bur +, +nb_rx +, +pt +); + +248 + gpt + = +ifm_g_xt_pt +( +ptid +); + +249 i( + gpt + ! +NULL +) + +250 +ev_tsc + = +cur_tsc +; + +255  + $cvt_r_to_numic +() + +257 + `memt +(& +addr1 +, '\0', ( +sockaddr_ +)); + +258 +addr1 +. +s_addr +. +s_addr + = + `_addr +("30.0.0.10"); + +259 + `memt +(& +addr2 +, '\0', ( +sockaddr_ +)); + +260 +addr2 +. +s_addr +. +s_addr + = + `_addr +("120.0.0.10"); + +261 + } +} + +263  + $ma +( +gc +, ** +gv +) + +265  +t + = 0; + +267 +t + = + `e_l_ +( +gc +, +gv +); + +268 i( +t + < 0) + +269 + `e_ex +( +EXIT_FAILURE +, "Invalid EALarameters\n"); + +272 + `ifm_ +(); + +273 + `ifm_cfigu_pts +( +ptcf +); + +278 + `ifm_add_v6_pt +(0, +v6_addr0 +, 96); + +279 + `ifm_add_v6_pt +(1, +v6_addr1 +, 96); + +280 + `t_r_das +(); + +283 + `l3fwd_ +(); + +284 + `_p_b +(); + +285 + `_nd_b +(); + +286 + `puϋ_m_rous +(); + +289  +ii +; + +290  +ii + = 0; ii < 16; ii += 2) { + +291 + `tf +("%02X%02X ", +v6_addr0 +[ +ii +], ipv6_addr0[ii + 1]); + +293 + `tf +("\n"); + +294  +ii + = 0; ii < 16; ii += 2) { + +295 + `tf +("%02X%02X ", +v6_addr1 +[ +ii +], ipv6_addr1[ii + 1]); + +297 + `tf +("REMOTE LAUNCH STARTED........\n"); + +298 + `e_l_me_unch +( +lce_malo +, +NULL +, +lce_id +); + +299 + `tf +("REMOTE LAUNCH DONE.......\n"); + +300 i( + `e_l_wa_lce +( +lce_id +) < 0) { + +303 + } +} + + @VIL/l2l3_stack/tsx.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~"e_omic.h +" + +23  + ~"tsx.h +" + +24  + gmax_s + = 3; + +27 + $run_uid + ( +ut32_t + +x +, ut32_ +ecx +, ut32_* +abcd +) + +29 +ut32_t + +ebx + = 0, +edx + = 0; + +31 #i + `defed +( +__i386__ +&& defed ( +__PIC__ +) + +33 + `__asm__ + ("mov%%ebx, %%ed\n\uid \n\xchg%%ebx, %%edi":"=D" ( +ebx +), + +35 + `__asm__ + ("uid":"+b" ( +ebx +), + +37 "+a" ( +x +), "+c" ( +ecx +), "=d" ( +edx +)); + +38 +abcd +[0] = +x +; + +39 +abcd +[1] = +ebx +; + +40 +abcd +[2] = +ecx +; + +41 +abcd +[3] = +edx +; + +42 + } +} + +45 + $check_x0_ymm + () + +47 +ut32_t + +x0 +; + +48 + `__asm__ + ("xgbv" : "" ( +x0 +) : "c" (0) : "%edx"); + +49  (( +x0 + & 6) == 6); + +50 + } +} + +53 + $check_4th_g_l_ce_us + () + +55 +ut32_t + +abcd +[4]; + +56 +ut32_t + +fma_movbe_osxve_mask + = ((1 << 12) | (1 << 22) | (1 << 27)); + +57 +ut32_t + +avx2_bmi12_mask + = (1 << 5) | (1 << 3) | (1 << 8); + +62 + `run_uid + (1, 0, +abcd +); + +63 i(( +abcd +[2] & +fma_movbe_osxve_mask +) != fma_movbe_osxsave_mask) { + +64 + `tf + ("Failing in if cond-1\n"); + +67 i(! + `check_x0_ymm + ()) { + +68 + `tf + ("Failing in if cond-2\n"); + +75 + `run_uid + (7, 0, +abcd +); + +76 i(( +abcd +[1] & +avx2_bmi12_mask +) !=vx2_bmi12_mask) { + +77 + `tf + ("Failing in if cond-3\n"); + +81 + `run_uid + (0x80000001, 0, +abcd +); + +82 i(( +abcd +[2] & (1 << 5)) == 0) { + +83 + `tf + ("Failing in if cond-4\n"); + +87 + `run_uid + (7, 0, +abcd +); + +88 i(( +abcd +[1] & (1 << 11)) == 0) { + +89 + `tf + ("Failing in if cond-5\n"); + +93 + `run_uid + (7, 0, +abcd +); + +94 i(( +abcd +[1] & (1 << 4)) == 0) { + +95 + `tf + ("Failing in if cond-6\n"); + +99 + } +} + +102 + $n_u_l_ce_4th_g_us + () + +104  +the_4th_g_us_avaab + = -1; + +106 i( +the_4th_g_us_avaab + < 0) + +107 +the_4th_g_us_avaab + = + `check_4th_g_l_ce_us + (); + +108  +the_4th_g_us_avaab +; + +109 + } +} + +112 + $m_ + () + +114 +b܋d + = ( +e_omic64_t + + `RTE_ATOMIC64_INIT + (0); + +117 + } +}  + +119 + $m_lock + () + +121  +đrs + = 0; + +123 ++ +đrs +; + +124  +us + = + `_xbeg + (); + +125 i( +us + = +_XBEGIN_STARTED +) { + +126 i(! + `is_h_locked + ()) + +130 + `_xabt + (0xff); + +133 + `e_omic64_c + (& +b܋d +); + +134 +tf + + +136 +đrs +, +us +); + +138 i(( +us + & +_XABORT_EXPLICIT +) + +139 && + `_XABORT_CODE + ( +us +=0xf&& !(u& +_XABORT_NESTED +)) { + +140  + `is_h_locked + ()) + +141 + `_mm_u + (); + +143 i(!( +us + & +_XABORT_RETRY +)) + +145 i( +đrs + > +max_s +) + +148 + `h_lock + (); + +150 + } +} + +153 + $m_uock + () + +155 i( + `is_h_locked + ()) + +156 + `h_a + (); + +159 + `_xd + (); + +161 + } +} + +164 + $is_m_locked + () + +166  (( + `_x + ()); + +167 + } +} + + @VIL/l2l3_stack/tsx.h + +16 #ide +_TSX_H_ + + +17  + #_RSX_H_ + + + ) + +18  + ~ + +19  + #TRUE + 1 + + ) + +20  + #FALSE + 0 + + ) + +22 vީ + gmux_v +; + +24 +e_omic64_t + + gb܋d +; + +26  +h_ +(); + +27  +h_lock +(); + +28  +h_a +(); + +29  +is_h_locked +(); + +31  +m_ +(); + +32  +m_lock +(); + +33  +m_uock +(); + +34  +is_m_locked +(); + +36  +n_u_l_ce_4th_g_us +(); + + @VIL/pipeline_arpicmp/pipeline_arpicmp.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"p.h +" + +24  + ~"pe_comm_.h +" + +25  + ~"pe_picmp_be.h +" + +26  + ~"pe_picmp.h +" + +27  + ~"vnf_comm.h +" + +29  + ~"p.h +" + +30  + ~"vnf_comm.h +" + +31 #ide +VNF_ACL + + +32  + ~"lib_p.h +" + +35  + ~ + +36  + ~ + +37  + ~ + +39 +ut16_t + + gvbo_v + = 1; + +40 +ut16_t + + gnb_pkt_r_bur + = +DEF_PKT_BURST +; + +46 #ifde +__GCC__ + + +47  + #RTE_BE_TO_CPU_16 +( +be_16_v + + `e_be_to_u_16 +((be_16_v)) + + ) + +48  + #RTE_CPU_TO_BE_16 +( +u_16_v + + `e_u_to_be_16 +((u_16_v)) + + ) + +50 #i +RTE_BYTE_ORDER + = +RTE_BIG_ENDIAN + + +51  + #RTE_BE_TO_CPU_16 +( +be_16_v +(be_16_v) + + ) + +52  + #RTE_CPU_TO_BE_16 +( +u_16_v +(u_16_v) + + ) + +54  + #RTE_BE_TO_CPU_16 +( +be_16_v +) \ + +55 (( +ut16_t +(((( +be_16_v +& 0xFF<< 8| ((be_16_v>> 8))) + + ) + +56  + #RTE_CPU_TO_BE_16 +( +u_16_v +) \ + +57 (( +ut16_t +(((( +u_16_v +& 0xFF<< 8| ((u_16_v>> 8))) + + ) + +65  + scmd_p_add_su + { + +66 +cmdle_fixed_rg_t + + mp_rg +; + +67 +ut32_t + + mp +; + +68 +cmdle_fixed_rg_t + + mdd_rg +; + +69 +ut32_t + + mpt_id +; + +70 +cmdle_addr_t + + m +; + +71  +h_addr + + mmaddr +; + +76 + $cmd_p_add_rd +(* +rd_su +, + +77 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +79  +cmd_p_add_su + * +ms + = +rd_su +; + +80 +ut8_t + +v6 +[16]; + +83  +pe_p_icmp_p_key + +key +; + +84 +key +. +ty + = +PIPELINE_ARP_ICMP_ARP_IPV4 +; + +85 +key +.key. +v4 +. +pt_id + = +ms +->port_id; + +86 +key +.key. +v4 +. + + = + `e_u_to_be_32 +( +ms +->. +addr +.v4. +s_addr +); + +87 + `puϋ_p_y +(& +q +-> +maddr +, + `e_bsw32 +eq-> +key +.key. +v4 +. + +), + +88 +q +-> +key +.key. +v4 +. +pt_id +); + +90 i( +ms +-> + +. +my + = +AF_INET +) { + +91 + `puϋ_p_y +(& +ms +-> +maddr +, + +92 + `e_u_to_be_32 +( +ms +-> + +. +addr +. + +93 +v4 +. +s_addr +), + +94 +ms +-> +pt_id + + +95 #ide +VNF_ACL + + +96 , +STATIC_ARP + + +100 + `memy +( +v6 +, +ms +-> + +. +addr +.v6. +s6_addr +, 16); + +101 + `puϋ_nd_y +(& +ms +-> +maddr +, +v6 +,ams-> +pt_id + + +102 #ide +VNF_ACL + + +103 , +STATIC_ND + + +107 + } +} + +109  +cmdle_r_tok_rg_t + + gcmd_p_add_p_rg + = + +110 +TOKEN_STRING_INITIALIZER +( +cmd_p_add_su +, +p_rg +, + +113  +cmdle_r_tok_num_t + + gcmd_p_add_p + = + +114 +TOKEN_NUM_INITIALIZER +( +cmd_p_add_su +, +p +, +UINT32 +); + +116  +cmdle_r_tok_rg_t + + gcmd_p_add_p_rg + = + +117 +TOKEN_STRING_INITIALIZER +( +cmd_p_add_su +, +dd_rg +, "arpadd"); + +119  +cmdle_r_tok_num_t + + gcmd_p_add_pt_id + = + +120 +TOKEN_NUM_INITIALIZER +( +cmd_p_add_su +, +pt_id +, +UINT32 +); + +122  +cmdle_r_tok_addr_t + + gcmd_p_add_ + = + +123 +TOKEN_IPADDR_INITIALIZER +( +cmd_p_add_su +, + +); + +125  +cmdle_r_tok_haddr_t + + gcmd_p_add_maddr + = + +126 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_p_add_su +, +maddr +); + +128  +cmdle_r__t + + gcmd_p_add + = { + +129 . +f + = +cmd_p_add_rd +, + +130 . + gda + = +NULL +, + +131 . + ghp_r + = "ARPdd", + +132 . + gtoks + = { + +133 (*)& +cmd_p_add_p_rg +, + +134 (*)& +cmd_p_add_p +, + +135 (*)& +cmd_p_add_p_rg +, + +136 (*)& +cmd_p_add_pt_id +, + +137 (*)& +cmd_p_add_ +, + +138 (*)& +cmd_p_add_maddr +, + +139 +NULL +, + +147  + scmd_p_d_su + { + +148 +cmdle_fixed_rg_t + + mp_rg +; + +149 +ut32_t + + mp +; + +150 +cmdle_fixed_rg_t + + mp_rg +; + +151 +ut32_t + + mpt_id +; + +152 +cmdle_addr_t + + m +; + +156 + $cmd_p_d_rd +(* +rd_su +, + +157 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +159  +cmd_p_d_su + * +ms + = +rd_su +; + +160 +ut8_t + +v6 +[16]; + +163  +pe_p_icmp_p_key + +key +; + +164 +key +. +ty + = +PIPELINE_ARP_ICMP_ARP_IPV4 +; + +165 +key +.key. +v4 +. + + = + `e_u_to_be_32 +( +ms +->. +addr +.v4. +s_addr +); + +166 +key +.key. +v4 +. +pt_id + = +ms +->port_id; + +167 + `move_p_y +( + `e_bsw32 +( +q +-> +key +.key. +v4 +. + +), + +168 +q +-> +key +.key. +v4 +. +pt_id +); + +170 i( +ms +-> + +. +my + = +AF_INET +) { + +171 + `move_p_y +( + `e_u_to_be_32 +( +ms +-> + +. +addr +. +v4 +. +s_addr +), + +172 +ms +-> +pt_id + + +173 #ide +VNF_ACL + + +174 , +NULL + + +178 + `memy +( +v6 +, +ms +-> + +. +addr +.v6. +s6_addr +, 16); + +179 + `move_nd_y_v6 +( +v6 +, +ms +-> +pt_id +); + +181 + } +} + +183  +cmdle_r_tok_rg_t + + gcmd_p_d_p_rg + = + +184 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, + +187  +cmdle_r_tok_num_t + + gcmd_p_d_p + = + +188 +TOKEN_NUM_INITIALIZER +( +cmd_p_d_su +, +p +, +UINT32 +); + +190  +cmdle_r_tok_rg_t + + gcmd_p_d_p_rg + = + +191 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "arpdel"); + +193  +cmdle_r_tok_num_t + + gcmd_p_d_pt_id + = + +194 +TOKEN_NUM_INITIALIZER +( +cmd_p_d_su +, +pt_id +, +UINT32 +); + +196  +cmdle_r_tok_addr_t + + gcmd_p_d_ + = + +197 +TOKEN_IPADDR_INITIALIZER +( +cmd_p_d_su +, + +); + +199  +cmdle_r__t + + gcmd_p_d + = { + +200 . +f + = +cmd_p_d_rd +, + +201 . + gda + = +NULL +, + +202 . + ghp_r + = "ARP delete", + +203 . + gtoks + = { + +204 (*)& +cmd_p_d_p_rg +, + +205 (*)& +cmd_p_d_p +, + +206 (*)& +cmd_p_d_p_rg +, + +207 (*)& +cmd_p_d_pt_id +, + +208 (*)& +cmd_p_d_ +, + +209 +NULL +, + +220 + $cmd_p_q_rd +(* +rd_su +, + +221 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +223  +cmd_p_d_su + * +ms + = +rd_su +; + +226  +p_key_v4 + +key +; + +232 +key +. + + = + `e_u_to_be_32 +( +ms +->. +addr +. +v4 +. +s_addr +); + +233 +key +. +pt_id + = +ms +->port_id; + +234 +key +. +fr1 + = 0; + +235 +key +. +fr2 + = 0; + +236 +key +. +fr3 + = 0; + +238  +p_y_da + * +p_da + = + `ve_p_y +( +key +); + +240 i( +p_da +) { + +241 i( +ARPICMP_DEBUG +) + +242 + `tf +("ARPntryxists for ip 0x%x,ort %d\n", + +243 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +247 i( +ARPICMP_DEBUG +) + +248 + `tf +("ARP -equestingrp for ip 0x%x,ort %d\n", + +249 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +251 #ifde +VNF_ACL + + +252 + `que_p_wp +( +ms +-> +pt_id +,ams-> + +. +addr +. +v4 +. +s_addr +); + +254 + `que_p +( +ms +-> +pt_id +,ams-> + +. +addr +. +v4 +. +s_addr +); + +257 + } +} + +259  +cmdle_r_tok_rg_t + + gcmd_p_q_rg + = + +260 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "arpreq"); + +262  +cmdle_r__t + + gcmd_p_q + = { + +263 . +f + = +cmd_p_q_rd +, + +264 . + gda + = +NULL +, + +265 . + ghp_r + = "ARPequest", + +266 . + gtoks + = { + +267 (*)& +cmd_p_d_p_rg +, + +268 (*)& +cmd_p_d_p +, + +269 (*)& +cmd_p_q_rg +, + +270 (*)& +cmd_p_d_pt_id +, + +271 (*)& +cmd_p_d_ +, + +272 +NULL +, + +283 + $cmd_icmp_echo_q_rd +(* +rd_su +, + +284 +__e_unud +  +cmdle + * + +, + +285 +__e_unud + * +da +) + +287  +cmd_p_d_su + * +ms + = +rd_su +; + +289 i( +ARPICMP_DEBUG +) + +290 + `tf +("Echo Req Handler ip %x,ort %d\n", + +291 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +293 + `que_echo +( +ms +-> +pt_id +,ams-> + +. +addr +. +v4 +. +s_addr +); + +294 + } +} + +296  +cmdle_r_tok_rg_t + + gcmd_icmp_echo_q_rg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "icmpecho"); + +299  +cmdle_r__t + + gcmd_icmp_echo_q + = { + +300 . +f + = +cmd_icmp_echo_q_rd +, + +301 . + gda + = +NULL +, + +302 . + ghp_r + = "ICMPchoequest", + +303 . + gtoks + = { + +304 (*)& +cmd_p_d_p_rg +, + +305 (*)& +cmd_p_d_p +, + +306 (*)& +cmd_icmp_echo_q_rg +, + +307 (*)& +cmd_p_d_pt_id +, + +308 (*)& +cmd_p_d_ +, + +309 +NULL +, + +317  + scmd_p_ls_su + { + +318 +cmdle_fixed_rg_t + + mp_rg +; + +319 +ut32_t + + mp +; + +320 +cmdle_fixed_rg_t + + mp_rg +; + +324 + $cmd_p_ls_rd +( +__e_unud + * +rd_su +, + +325 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +327 + `tf +("\nARPable ...\n"); + +328 + `tf +("-------------\n"); + +329 + `t_p_b +(); + +331 +tf + + +334 + `tf +("\nND IPv6able:\n"); + +335 + `tf +("--------------\n"); + +336 + `t_nd_b +(); + +337 + } +} + +339  +cmdle_r_tok_rg_t + + gcmd_p_ls_p_rg + = + +340 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +343  +cmdle_r_tok_num_t + + gcmd_p_ls_p + = + +344 +TOKEN_NUM_INITIALIZER +( +cmd_p_ls_su +, +p +, +UINT32 +); + +346  +cmdle_r_tok_rg_t + + gcmd_p_ls_p_rg + = + +347 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +350  +cmdle_r__t + + gcmd_p_ls + = { + +351 . +f + = +cmd_p_ls_rd +, + +352 . + gda + = +NULL +, + +353 . + ghp_r + = "ARPist", + +354 . + gtoks + = { + +355 (*)& +cmd_p_ls_p_rg +, + +356 (*)& +cmd_p_ls_p +, + +357 (*)& +cmd_p_ls_p_rg +, + +358 +NULL +, + +366  + scmd_show_pts_fo_su + { + +367 +cmdle_fixed_rg_t + + mp_rg +; + +368 +ut32_t + + mp +; + +369 +cmdle_fixed_rg_t + + mp_rg +; + +373 + $cmd_show_pts_fo_rd +( +__e_unud + * +rd_su +, + +374 +__e_unud +  +cmdle + * + +, + +375 +__e_unud + * +da +) + +377 + `show_pts_fo +(); + +378 + } +} + +380  +cmdle_r_tok_rg_t + + gcmd_show_pts_fo_rg + = + +381 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +384  +cmdle_r__t + + gcmd_show_pts_fo + = { + +385 . +f + = +cmd_show_pts_fo_rd +, + +386 . + gda + = +NULL +, + +387 . + ghp_r + = "showorts info", + +388 . + gtoks + = { + +389 (*)& +cmd_p_ls_p_rg +, + +390 (*)& +cmd_p_ls_p +, + +391 (*)& +cmd_show_pts_fo_rg +, + +392 +NULL +, + +396 #ide +VNF_ACL + + +397  + scmd_p_dbg_su + { + +398 +cmdle_fixed_rg_t + + mpdbg_r +; + +399 +ut32_t + + mag +; + +402 +cmdle_r_tok_rg_t + + gcmd_p_dbg_rg + = + +403 +TOKEN_STRING_INITIALIZER +( +cmd_p_dbg_su +, +pdbg_r +, + +405 +cmdle_r_tok_num_t + + gcmd_p_dbg_ag + = + +406 +TOKEN_NUM_INITIALIZER +( +cmd_p_dbg_su +, +ag +, +UINT32 +); + +409 +cmd_p_dbg_r +( + +410 * +rd_su +, + +411 +__ibu__ +(( +unud +) +cmdle + * + +, + +412 +__e_unud + * +da +) + +414  +cmd_p_dbg_su + * + gms + = +rd_su +; + +415 if( + gms +) + +417 +t_pdebug +( +ms +-> +ag +); + +421 +tf +("%s: PamiNULL", +__FUNCTION__ +); + +425 +cmdle_r__t + + gcmd_p_dbg + = { + +426 . +f + = +cmd_p_dbg_r +, + +427 . + gda + = +NULL +, + +428 . + ghp_r + = "Turn on/off(1/0)rp debug", + +429 . + gtoks + = { + +430 (*)& +cmd_p_dbg_rg +, + +431 (*)& +cmd_p_dbg_ag +, + +432 +NULL +, + +436  + scmd_p_tim_su + { + +437 +cmdle_fixed_rg_t + + mim_r +; + +438 +ut32_t + + mim_v +; + +441 +cmdle_r_tok_rg_t + + gcmd_p_tim_rg + = + +442 +TOKEN_STRING_INITIALIZER +( +cmd_p_tim_su +, +im_r +, + +444 +cmdle_r_tok_num_t + + gcmd_p_tim_v + = + +445 +TOKEN_NUM_INITIALIZER +( +cmd_p_tim_su +, +im_v +, +UINT32 +); + +448 +cmd_p_tim_r +( + +449 * +rd_su +, + +450 +__ibu__ +(( +unud +) +cmdle + * + +, + +451 +__e_unud + * +da +) + +453  +cmd_p_tim_su + * + gms + = +rd_su +; + +454 if( + gms +) + +456 +t_imeout +( +ms +-> +im_v +); + +460 +tf +("%s: PamiNULL", +__FUNCTION__ +); + +464 +cmdle_r__t + + gcmd_p_tim + = { + +465 . +f + = +cmd_p_tim_r +, + +466 . + gda + = +NULL +, + +467 . + ghp_r + = "Timerxpiry val by def 10 sec", + +468 . + gtoks + = { + +469 (*)& +cmd_p_tim_rg +, + +470 (*)& +cmd_p_tim_v +, + +471 +NULL +, + +483 + $pkt_bur_io_fwd +( +fwd_am + * +fs +) + +485  +e_mbuf + * +pkts_bur +[ +MAX_PKT_BURST +]; + +486 +ut16_t + +nb_rx +; + +487 +ut16_t + +nb_tx +; + +489 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +490 +ut64_t + +t_tsc +; + +491 +ut64_t + +d_tsc +; + +492 +ut64_t + +ce_cyes +; + +495 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +496 +t_tsc + = + `e_rdtsc +(); + +502 +nb_rx + = + `e_h_rx_bur +( +fs +-> +rx_pt +, fs-> +rx_queue +, +pkts_bur +, + +503 +nb_pkt_r_bur +); + +504 i( + `uiky +( +nb_rx + == 0)) + +507 #ifde +RTE_TEST_PMD_RECORD_BURST_STATS + + +508 +fs +-> +rx_bur_s +. +pkt_bur_ad +[ +nb_rx +]++; + +511 +fs +-> +rx_cks + + +nb_rx +; + +512 +nb_tx + = + `e_h_tx_bur +( +fs +-> +tx_pt +, fs-> +tx_queue +, +pkts_bur +, +nb_rx +); + +513 +fs +-> +tx_cks + + +nb_tx +; + +515 #ifde +RTE_TEST_PMD_RECORD_BURST_STATS + + +516 +fs +-> +tx_bur_s +. +pkt_bur_ad +[ +nb_tx +]++; + +519 i( + `uiky +( +nb_tx + < +nb_rx +)) { + +520 +fs +-> +fwd_drݳd + +( +nb_rx + - +nb_tx +); + +522 + `e_pktmbuf_ +( +pkts_bur +[ +nb_tx +]); + +523 } ++ +nb_tx + < +nb_rx +); + +526 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +527 +d_tsc + = + `e_rdtsc +(); + +528 +ce_cyes + = ( +d_tsc + - +t_tsc +); + +529 +fs +-> +ce_cyes + = ( +ut64_t +) (fs->core_cycles + core_cycles); + +531 + } +} + +534  +fwd_ge + + gio_fwd_ge + = { + +535 . +fwd_mode_me + = "io", + +536 . + gpt_fwd_beg + = +NULL +, + +537 . + gpt_fwd_d + = +NULL +, + +538 . + gck_fwd + = +pkt_bur_io_fwd +, + +541  +le +  + $t_h_addr +( + +542 cڡ * +wh +, + +543  +h_addr + * +h_addr +) + +545  +buf +[ +ETHER_ADDR_FMT_SIZE +]; + +546 + `h_fm_addr +( +buf +, +ETHER_ADDR_FMT_SIZE +, +h_addr +); + +547 + `tf +("%s%s", +wh +, +buf +); + +548 + } +} + +554 + $pkt_bur_ive +( +fwd_am + * +fs +) + +556  +e_mbuf + * +pkts_bur +[ +MAX_PKT_BURST +]; + +557  +e_mbuf + * +mb +; + +558  +h_hdr + * +h_hdr +; + +559 +ut16_t + +h_ty +; + +560 +ut64_t + +_ags +; + +561 +ut16_t + +nb_rx +; + +562 +ut16_t + +i +, +ck_ty +; + +563 +ut16_t + +is_psuti +; + +565 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +566 +ut64_t + +t_tsc +; + +567 +ut64_t + +d_tsc +; + +568 +ut64_t + +ce_cyes +; + +571 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +572 +t_tsc + = + `e_rdtsc +(); + +578 +nb_rx + = + `e_h_rx_bur +( +fs +-> +rx_pt +, fs-> +rx_queue +, +pkts_bur +, + +579 +nb_pkt_r_bur +); + +580 i( + `uiky +( +nb_rx + == 0)) + +583 #ifde +RTE_TEST_PMD_RECORD_BURST_STATS + + +584 +fs +-> +rx_bur_s +. +pkt_bur_ad +[ +nb_rx +]++; + +587 +fs +-> +rx_cks + + +nb_rx +; + +592 i( +vbo_v + > 0) + +593 + `tf +("port %u/queue %u:eceived %uackets\n", + +594 ( +fs +-> +rx_pt +, + +595 ( +fs +-> +rx_queue +, + +596 ( +nb_rx +); + +597  +i + = 0; i < +nb_rx +; i++) { + +598 +mb + = +pkts_bur +[ +i +]; + +599 i( +vbo_v + == 0) { + +600 + `e_pktmbuf_ +( +mb +); + +603 +h_hdr + = + `e_pktmbuf_mtod +( +mb +,  +h_hdr + *); + +604 +h_ty + = + `RTE_BE_TO_CPU_16 +( +h_hdr +-> +h_ty +); + +605 +_ags + = +mb +->ol_flags; + +606 +ck_ty + = +mb +->packet_type; + +607 +is_psuti + = + `RTE_ETH_IS_TUNNEL_PKT +( +ck_ty +); + +609 + `t_h_addr +(" src=", & +h_hdr +-> +s_addr +); + +610 + `t_h_addr +(" - d=", & +h_hdr +-> +d_addr +); + +611 + `tf +(" -ype=0x%04x -ength=%u -b_segs=%d", + +612 +h_ty +, ( +mb +-> +pkt_n +, + +613 () +mb +-> +nb_gs +); + +614 i( +_ags + & +PKT_RX_RSS_HASH +) { + +615 + `tf +(" - RSS hash=0x%x", () + +616 +mb +-> +hash +. +rss +); + +617 + `tf +(" - RSS queue=0x%x", () + +618 +fs +-> +rx_queue +); + +619 } i( +_ags + & +PKT_RX_FDIR +) { + +620 + `tf +(" - FDIR matched "); + +621 i( +_ags + & +PKT_RX_FDIR_ID +) + +622 + `tf +("ID=0x%x", + +623 +mb +-> +hash +. +fd +. +hi +); + +624 i( +_ags + & +PKT_RX_FDIR_FLX +) + +625 + `tf +("flex bytes=0x%08x %08x", + +626 +mb +-> +hash +. +fd +. +hi +, mb->hash.fd. +lo +); + +628 + `tf +("hash=0x%x ID=0x%x ", + +629 +mb +-> +hash +. +fd +.hash, mb->hash.fd. +id +); + +631 i( +_ags + & +PKT_RX_VLAN_PKT +) + +632 + `tf +(" - VLANci=0x%x", +mb +-> +vn_tci +); + +633 i( +_ags + & +PKT_RX_QINQ_PKT +) + +634 + `tf +(" - QinQ VLANci=0x%x, VLANci outer=0x%x", + +635 +mb +-> +vn_tci +, mb-> +vn_tci_our +); + +636 i( +mb +-> +ck_ty +) { + +637 +ut32_t + +y +; + +640 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_L2_MASK +; + +641  +y +) { + +642  +RTE_PTYPE_L2_ETHER +: + +643 + `tf +(" - (outer) L2ype: ETHER"); + +645  +RTE_PTYPE_L2_ETHER_TIMESYNC +: + +646 + `tf +(" - (outer) L2ype: ETHER_Timesync"); + +648  +RTE_PTYPE_L2_ETHER_ARP +: + +649 + `tf +(" - (outer) L2ype: ETHER_ARP"); + +651  +RTE_PTYPE_L2_ETHER_LLDP +: + +652 + `tf +(" - (outer) L2ype: ETHER_LLDP"); + +655 + `tf +(" - (outer) L2ype: Unknown"); + +660 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_L3_MASK +; + +661  +y +) { + +662  +RTE_PTYPE_L3_IPV4 +: + +663 + `tf +(" - (outer) L3ype: IPV4"); + +665  +RTE_PTYPE_L3_IPV4_EXT +: + +666 + `tf +(" - (outer) L3ype: IPV4_EXT"); + +668  +RTE_PTYPE_L3_IPV6 +: + +669 + `tf +(" - (outer) L3ype: IPV6"); + +671  +RTE_PTYPE_L3_IPV4_EXT_UNKNOWN +: + +672 + `tf +(" - (outer) L3ype: IPV4_EXT_UNKNOWN"); + +674  +RTE_PTYPE_L3_IPV6_EXT +: + +675 + `tf +(" - (outer) L3ype: IPV6_EXT"); + +677  +RTE_PTYPE_L3_IPV6_EXT_UNKNOWN +: + +678 + `tf +(" - (outer) L3ype: IPV6_EXT_UNKNOWN"); + +681 + `tf +(" - (outer) L3ype: Unknown"); + +686 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_L4_MASK +; + +687  +y +) { + +688  +RTE_PTYPE_L4_TCP +: + +689 + `tf +(" - (outer) L4ype: TCP"); + +691  +RTE_PTYPE_L4_UDP +: + +692 + `tf +(" - (outer) L4ype: UDP"); + +694  +RTE_PTYPE_L4_FRAG +: + +695 + `tf +(" - (outer) L4ype: L4_FRAG"); + +697  +RTE_PTYPE_L4_SCTP +: + +698 + `tf +(" - (outer) L4ype: SCTP"); + +700  +RTE_PTYPE_L4_ICMP +: + +701 + `tf +(" - (outer) L4ype: ICMP"); + +703  +RTE_PTYPE_L4_NONFRAG +: + +704 + `tf +(" - (outer) L4ype: L4_NONFRAG"); + +707 + `tf +(" - (outer) L4ype: Unknown"); + +712 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_TUNNEL_MASK +; + +713  +y +) { + +714  +RTE_PTYPE_TUNNEL_IP +: + +715 + `tf +(" - Tunnelype: IP"); + +717  +RTE_PTYPE_TUNNEL_GRE +: + +718 + `tf +(" - Tunnelype: GRE"); + +720  +RTE_PTYPE_TUNNEL_VXLAN +: + +721 + `tf +(" - Tunnelype: VXLAN"); + +723  +RTE_PTYPE_TUNNEL_NVGRE +: + +724 + `tf +(" - Tunnelype: NVGRE"); + +726  +RTE_PTYPE_TUNNEL_GENEVE +: + +727 + `tf +(" - Tunnelype: GENEVE"); + +729  +RTE_PTYPE_TUNNEL_GRENAT +: + +730 + `tf +(" - Tunnelype: GRENAT"); + +733 + `tf +(" - Tunnelype: Unknown"); + +738 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_INNER_L2_MASK +; + +739  +y +) { + +740  +RTE_PTYPE_INNER_L2_ETHER +: + +741 + `tf +(" - Inner L2ype: ETHER"); + +743  +RTE_PTYPE_INNER_L2_ETHER_VLAN +: + +744 + `tf +(" - Inner L2ype: ETHER_VLAN"); + +747 + `tf +(" - Inner L2ype: Unknown"); + +751 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_INNER_L3_MASK +; + +752  +y +) { + +753  +RTE_PTYPE_INNER_L3_IPV4 +: + +754 + `tf +(" - Inner L3ype: IPV4"); + +756  +RTE_PTYPE_INNER_L3_IPV4_EXT +: + +757 + `tf +(" - Inner L3ype: IPV4_EXT"); + +759  +RTE_PTYPE_INNER_L3_IPV6 +: + +760 + `tf +(" - Inner L3ype: IPV6"); + +762  +RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN +: + +763 + `tf +(" - Inner L3ype: " + +766  +RTE_PTYPE_INNER_L3_IPV6_EXT +: + +767 + `tf +(" - Inner L3ype: IPV6_EXT"); + +769  +RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN +: + +770 + `tf +(" - Inner L3ype: " + +774 + `tf +(" - Inner L3ype: Unknown"); + +779 +y + = +mb +-> +ck_ty + & +RTE_PTYPE_INNER_L4_MASK +; + +780  +y +) { + +781  +RTE_PTYPE_INNER_L4_TCP +: + +782 + `tf +(" - Inner L4ype: TCP"); + +784  +RTE_PTYPE_INNER_L4_UDP +: + +785 + `tf +(" - Inner L4ype: UDP"); + +787  +RTE_PTYPE_INNER_L4_FRAG +: + +788 + `tf +(" - Inner L4ype: L4_FRAG"); + +790  +RTE_PTYPE_INNER_L4_SCTP +: + +791 + `tf +(" - Inner L4ype: SCTP"); + +793  +RTE_PTYPE_INNER_L4_ICMP +: + +794 + `tf +(" - Inner L4ype: ICMP"); + +796  +RTE_PTYPE_INNER_L4_NONFRAG +: + +797 + `tf +(" - Inner L4ype: L4_NONFRAG"); + +800 + `tf +(" - Inner L4ype: Unknown"); + +803 + `tf +("\n"); + +805 + `tf +("Unknownacketype\n"); + +806 i( +is_psuti +) { + +807  +v4_hdr + *ipv4_hdr; + +808  +v6_hdr + *ipv6_hdr; + +809  +udp_hdr + *udp_hdr; + +810 +ut8_t + +l2_n +; + +811 +ut8_t + +l3_n +; + +812 +ut8_t + +l4_n +; + +813 +ut8_t + +l4_o +; + +814  +vxn_hdr + *vxlan_hdr; + +816 +l2_n + = ( +h_hdr +); + +819 i( + `RTE_ETH_IS_IPV4_HDR +( +ck_ty +)) { + +820 +l3_n + = ( +v4_hdr +); + +821 +v4_hdr + = + `e_pktmbuf_mtod_offt +( +mb +, + +822  +v4_hdr + *, + +823 +l2_n +); + +824 +l4_o + = +v4_hdr +-> +xt_o_id +; + +826 +l3_n + = ( +v6_hdr +); + +827 +v6_hdr + = + `e_pktmbuf_mtod_offt +( +mb +, + +828  +v6_hdr + *, + +829 +l2_n +); + +830 +l4_o + = +v6_hdr +-> +o +; + +832 i( +l4_o + = +IPPROTO_UDP +) { + +833 +udp_hdr + = + `e_pktmbuf_mtod_offt +( +mb +, + +834  +udp_hdr + *, + +835 +l2_n + + +l3_n +); + +836 +l4_n + = ( +udp_hdr +); + +837 +vxn_hdr + = + `e_pktmbuf_mtod_offt +( +mb +, + +838  +vxn_hdr + *, + +839 +l2_n + + +l3_n + + +l4_n +); + +841 + `tf +(" - VXLANacket:acketype =%d, " + +843 +ck_ty +, + +844 + `RTE_BE_TO_CPU_16 +( +udp_hdr +-> +d_pt +), + +845 + `e_be_to_u_32 +( + +846 +vxn_hdr +-> +vx_vni +) >> 8); + +849 + `tf +(" - Reivqueue=0x%x", ( +fs +-> +rx_queue +); + +850 + `tf +("\n"); + +851 i( +_ags + != 0) { + +852  +rxf +; + +853 cڡ * +me +; + +855  +rxf + = 0;x< ( +mb +-> +_ags +) * 8;xf++) { + +856 i(( +_ags + & (1ULL << +rxf +)) == 0) + +858 +me + = + `e_g_rx__ag_me +(1ULL << +rxf +); + +859 i( +me + = +NULL +) + +861 + `tf +(" %s\n", +me +); + +864 + `e_pktmbuf_ +( +mb +); + +867 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +868 +d_tsc + = + `e_rdtsc +(); + +869 +ce_cyes + = ( +d_tsc + - +t_tsc +); + +870 +fs +-> +ce_cyes + = ( +ut64_t +) (fs->core_cycles + core_cycles); + +872 + } +} + +874  +fwd_ge + + grx_ly_ge + = { + +875 . +fwd_mode_me + = "rxonly", + +876 . + gpt_fwd_beg + = +NULL +, + +877 . + gpt_fwd_d + = +NULL +, + +878 . + gck_fwd + = +pkt_bur_ive +, + +882  + scmd_t_fwd_mode_su + { + +883 +cmdle_fixed_rg_t + + mt +; + +884 +cmdle_fixed_rg_t + + mfwd +; + +885 +cmdle_fixed_rg_t + + mmode +; + +891  +fwd_ge + * + gfwd_ges +[] = { + +892 & +io_fwd_ge +, + +894 & +mac_fwd_ge +, + +895 & +mac_y_fwd_ge +, + +896 & +mac_sw_ge +, + +897 & +ow_g_ge +, + +899 & +rx_ly_ge +, + +901 & +tx_ly_ge +, + +902 & +csum_fwd_ge +, + +903 & +icmp_echo_ge +, + +904 #ifde +RTE_LIBRTE_IEEE1588 + + +905 & +1588_fwd_ge +, + +908 +NULL +, + +911  +fwd_ge + * + gcur_fwd_g + = & +io_fwd_ge +; + +913  + $t_pkt_fwdg_mode +(cڡ * +fwd_mode_me +) + +915  +fwd_ge + * +fwd_g +; + +916  +i +; + +918 +i + = 0; + +919 ( +fwd_g + = +fwd_ges +[ +i +]! +NULL +) { + +920 i(! + `rcmp +( +fwd_g +-> +fwd_mode_me +, fwd_mode_name)) { + +921 + `tf +("Set %sacket forwarding mode\n", + +922 +fwd_mode_me +); + +923 +cur_fwd_g + = +fwd_g +; + +926 +i +++; + +928 + `tf +("Invid %ck fwdg mode\n", +fwd_mode_me +); + +929 + } +} + +931  +cmd_t_fwd_mode_rd +(* +rd_su +, + +932 +__ibu__ +(( +unud +) +cmdle + * + +, + +933 +__ibu__ +(( +unud +)* +da +) + +935  +cmd_t_fwd_mode_su + * + gs + = +rd_su +; + +937 +t_pkt_fwdg_mode +( +s +-> +mode +); + +940 +cmdle_r_tok_rg_t + + gcmd_tfwd_t + = + +941 +TOKEN_STRING_INITIALIZER +( +cmd_t_fwd_mode_su +, +t +, "set"); + +942 +cmdle_r_tok_rg_t + + gcmd_tfwd_fwd + = + +943 +TOKEN_STRING_INITIALIZER +( +cmd_t_fwd_mode_su +, +fwd +, "fwd"); + +944 +cmdle_r_tok_rg_t + + gcmd_tfwd_mode + = + +945 +TOKEN_STRING_INITIALIZER +( +cmd_t_fwd_mode_su +, +mode +, + +948 +cmdle_r__t + + gcmd_t_fwd_mode + = { + +949 . +f + = +cmd_t_fwd_mode_rd +, + +950 . + gda + = +NULL +, + +951 . + ghp_r + = +NULL +, + +952 . + gtoks + = { + +953 (*)& +cmd_tfwd_t +, + +954 (*)& +cmd_tfwd_fwd +, + +955 (*)& +cmd_tfwd_mode +, + +956 +NULL +, + +962  +ut16_t + + +963 + $r2owty +(* +rg +) + +965 +ut8_t + +i + = 0; + +967  +r +[32]; + +968 +ut16_t + +ty +; + +969 } +owty_r +[] = { + +970 {"w", +RTE_ETH_FLOW_RAW +}, + +971 {"v4", +RTE_ETH_FLOW_IPV4 +}, + +972 {"v4-ag", +RTE_ETH_FLOW_FRAG_IPV4 +}, + +973 {"v4-t", +RTE_ETH_FLOW_NONFRAG_IPV4_TCP +}, + +974 {"v4-udp", +RTE_ETH_FLOW_NONFRAG_IPV4_UDP +}, + +975 {"v4-sp", +RTE_ETH_FLOW_NONFRAG_IPV4_SCTP +}, + +976 {"v4-h", +RTE_ETH_FLOW_NONFRAG_IPV4_OTHER +}, + +977 {"v6", +RTE_ETH_FLOW_IPV6 +}, + +978 {"v6-ag", +RTE_ETH_FLOW_FRAG_IPV6 +}, + +979 {"v6-t", +RTE_ETH_FLOW_NONFRAG_IPV6_TCP +}, + +980 {"v6-udp", +RTE_ETH_FLOW_NONFRAG_IPV6_UDP +}, + +981 {"v6-sp", +RTE_ETH_FLOW_NONFRAG_IPV6_SCTP +}, + +982 {"v6-h", +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER +}, + +983 {"l2_yld", +RTE_ETH_FLOW_L2_PAYLOAD +}, + +986  +i + = 0; i < + `RTE_DIM +( +owty_r +); i++) { + +987 i(! + `rcmp +( +owty_r +[ +i +]. +r +, +rg +)) + +988  +owty_r +[ +i +]. +ty +; + +990  +RTE_ETH_FLOW_UNKNOWN +; + +991 + } +} + +993  +le +  + +994 + $r_exbys +(cڡ * +q_g +, +ut8_t + * +exbys +, +ut16_t + +max_num +) + +996  +s +[256]; + +997 cڡ * +p +, * +p0 + = +q_g +; + +998 * +d +; + +999  +t_d +; + +1000 * +r_d +[ +max_num +]; + +1001  +i +; + +1002  +size +; + +1003  +t + = -1; + +1005 +p + = + `rchr +( +p0 +, '('); + +1006 i( +p + = +NULL +) + +1008 ++ +p +; + +1009 +p0 + = + `rchr +( +p +, ')'); + +1010 i( +p0 + = +NULL +) + +1013 +size + = +p0 + - +p +; + +1014 i( +size + >( +s +)) + +1017 + `tf +( +s +, (s), "%.*s", +size +, +p +); + +1018 +t + = + `e_rl +( +s +, (s), +r_d +, +max_num +, ','); + +1019 i( +t + < 0 || > +max_num +) + +1021  +i + = 0; i < +t +; i++) { + +1022 +o + = 0; + +1023 +t_d + = + `oul +( +r_d +[ +i +], & +d +, 0); + +1024 i( +o + !0 || * +d + !'\0' || +t_d + > +UINT8_MAX +) + +1026 +exbys +[ +i +] = ( +ut8_t +) +t_d +; + +1028  +t +; + +1029 + } +} + +1032  + scmd_ow_de_su + { + +1033 +cmdle_fixed_rg_t + + mow_de_fr +; + +1034 +ut8_t + + mpt_id +; + +1035 +cmdle_fixed_rg_t + + mmode +; + +1036 +cmdle_fixed_rg_t + + mmode_vue +; + +1037 +cmdle_fixed_rg_t + + ms +; + +1038 +cmdle_fixed_rg_t + + mow +; + +1039 +cmdle_fixed_rg_t + + mow_ty +; + +1040 +cmdle_fixed_rg_t + + mh +; + +1041 +ut16_t + + mh_ty +; + +1042 +cmdle_fixed_rg_t + + mc +; + +1043 +cmdle_addr_t + + m_c +; + +1044 +ut16_t + + mpt_c +; + +1045 +cmdle_fixed_rg_t + + md +; + +1046 +cmdle_addr_t + + m_d +; + +1047 +ut16_t + + mpt_d +; + +1048 +cmdle_fixed_rg_t + + mvify_g +; + +1049 +ut32_t + + mvify_g_vue +; + +1050 +cmdle_addr_t + + mtos +; + +1051 +ut8_t + + mtos_vue +; + +1052 +cmdle_addr_t + + mo +; + +1053 +ut8_t + + mo_vue +; + +1054 +cmdle_addr_t + + ml +; + +1055 +ut8_t + + ml_vue +; + +1056 +cmdle_fixed_rg_t + + mvn +; + +1057 +ut16_t + + mvn_vue +; + +1058 +cmdle_fixed_rg_t + + mexbys +; + +1059 +cmdle_fixed_rg_t + + mexbys_vue +; + +1060 +cmdle_fixed_rg_t + + mpf_vf +; + +1061 +cmdle_fixed_rg_t + + mdr +; + +1062 +cmdle_fixed_rg_t + + mqueue +; + +1063 +ut16_t + + mqueue_id +; + +1064 +cmdle_fixed_rg_t + + mfd_id +; + +1065 +ut32_t + + mfd_id_vue +; + +1066 +cmdle_fixed_rg_t + + mmac +; + +1067  +h_addr + + mmac_addr +; + +1068 +cmdle_fixed_rg_t + + mtu– +; + +1069 +cmdle_fixed_rg_t + + mtu–_ty +; + +1070 +cmdle_fixed_rg_t + + mtu–_id +; + +1071 +ut32_t + + mtu–_id_vue +; + +1075 +cmd_ow_de_fr_rd +(* +rd_su +, + +1076 +__ibu__ +(( +unud +) +cmdle + * + +, + +1077 +__ibu__ +(( +unud +)* +da +) + +1079  +cmd_ow_de_su + * + gs + = +rd_su +; + +1080  +e_h_fd_fr + + gy +; + +1081 +ut8_t + + gexbys +[ +RTE_ETH_FDIR_MAX_FLEXLEN +]; + +1082 * + gd +; + +1083  + gvf_id +; + +1084  + gt + = 0; + +1086 i( + gab_hwlb +) { + +1087 +tf +("Hash Filter islready Defined !\n"); + +1088 +tf +("Please undefine HWLD flagnd define " + +1093 + gt + = +e_h_dev_fr_su܋d +( +s +-> +pt_id +, +RTE_ETH_FILTER_FDIR +); + +1094 i( + gt + < 0) { + +1095 +tf +("flow director isot supported onort %u.\n", + +1096 +s +-> +pt_id +); + +1099 +memt +( +exbys +, 0, (flexbytes)); + +1100 +memt +(& +y +, 0, ( +e_h_fd_fr +)); + +1102 i( + gfd_cf +. + gmode + = +RTE_FDIR_MODE_PERFECT_MAC_VLAN +) { + +1103 i( +rcmp +( +s +-> +mode_vue +, "MAC-VLAN")) { + +1104 +tf +("Please set modeo MAC-VLAN.\n"); + +1107 } i( + gfd_cf +. + gmode + = +RTE_FDIR_MODE_PERFECT_TUNNEL +) { + +1108 i( +rcmp +( +s +-> +mode_vue +, "Tunnel")) { + +1109 +tf +("Please set modeo Tunnel.\n"); + +1113 i( +rcmp +( +s +-> +mode_vue +, "IP")) { + +1114 +tf +("Please set modeo IP.\n"); + +1119 + gy +. + gput +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1122 + gt + = +r_exbys +( +s +-> +exbys_vue +, + +1123 +exbys +, + +1124 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1125 i( + gt + < 0) { + +1126 +tf +("error: Cannotarse flexbytes input.\n"); + +1130  + gy +. + gput +. + gow_ty +) { + +1131  + gRTE_ETH_FLOW_FRAG_IPV4 +: + +1132  +RTE_ETH_FLOW_NONFRAG_IPV4_OTHER +: + +1133 +y +. +put +. +ow +. +4_ow +. +o + = +s +-> +o_vue +; + +1134  + gRTE_ETH_FLOW_NONFRAG_IPV4_UDP +: + +1135  +RTE_ETH_FLOW_NONFRAG_IPV4_TCP +: + +1136 +IPV4_ADDR_TO_UINT +( +s +-> +_d +, + +1137 +y +. +put +. +ow +. +4_ow +. +d_ +); + +1138 +IPV4_ADDR_TO_UINT +( +s +-> +_c +, + +1139 +y +. +put +. +ow +. +4_ow +. +c_ +); + +1140 + gy +. + gput +. + gow +. + g4_ow +. + gtos + = +s +-> +tos_vue +; + +1141 + gy +. + gput +. + gow +. + g4_ow +. + gl + = +s +-> +l_vue +; + +1143 + gy +. + gput +. + gow +. + gudp4_ow +. + gd_pt + = + +1144 +e_u_to_be_16 +( +s +-> +pt_d +); + +1145 + gy +. + gput +. + gow +. + gudp4_ow +. + gc_pt + = + +1146 +e_u_to_be_16 +( +s +-> +pt_c +); + +1149  + gRTE_ETH_FLOW_NONFRAG_IPV4_SCTP +: + +1150 +IPV4_ADDR_TO_UINT +( +s +-> +_d +, + +1151 +y +. +put +. +ow +. +sp4_ow +. + +. +d_ +); + +1152 +IPV4_ADDR_TO_UINT +( +s +-> +_c +, + +1153 +y +. +put +. +ow +. +sp4_ow +. + +. +c_ +); + +1154 + gy +. + gput +. + gow +. + g4_ow +. + gtos + = +s +-> +tos_vue +; + +1155 + gy +. + gput +. + gow +. + g4_ow +. + gl + = +s +-> +l_vue +; + +1157 + gy +. + gput +. + gow +. + gsp4_ow +. + gd_pt + = + +1158 +e_u_to_be_16 +( +s +-> +pt_d +); + +1159 + gy +. + gput +. + gow +. + gsp4_ow +. + gc_pt + = + +1160 +e_u_to_be_16 +( +s +-> +pt_c +); + +1161 + gy +. + gput +. + gow +. + gsp4_ow +. + gvify_g + = + +1162 +e_u_to_be_32 +( +s +-> +vify_g_vue +); + +1165  + gRTE_ETH_FLOW_FRAG_IPV6 +: + +1166  +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER +: + +1167 +y +. +put +. +ow +. +v6_ow +. +o + = +s +-> +o_vue +; + +1168  + gRTE_ETH_FLOW_NONFRAG_IPV6_UDP +: + +1169  +RTE_ETH_FLOW_NONFRAG_IPV6_TCP +: + +1170 +IPV6_ADDR_TO_ARRAY +( +s +-> +_d +, + +1171 +y +. +put +. +ow +. +v6_ow +. +d_ +); + +1172 +IPV6_ADDR_TO_ARRAY +( +s +-> +_c +, + +1173 +y +. +put +. +ow +. +v6_ow +. +c_ +); + +1174 + gy +. + gput +. + gow +. + gv6_ow +. + gtc + = +s +-> +tos_vue +; + +1175 + gy +. + gput +. + gow +. + gv6_ow +. + gh_lims + = +s +-> +l_vue +; + +1177 + gy +. + gput +. + gow +. + gudp6_ow +. + gd_pt + = + +1178 +e_u_to_be_16 +( +s +-> +pt_d +); + +1179 + gy +. + gput +. + gow +. + gudp6_ow +. + gc_pt + = + +1180 +e_u_to_be_16 +( +s +-> +pt_c +); + +1183  + gRTE_ETH_FLOW_NONFRAG_IPV6_SCTP +: + +1184 +IPV6_ADDR_TO_ARRAY +( +s +-> +_d +, + +1185 +y +. +put +. +ow +. +sp6_ow +. + +. +d_ +); + +1186 +IPV6_ADDR_TO_ARRAY +( +s +-> +_c +, + +1187 +y +. +put +. +ow +. +sp6_ow +. + +. +c_ +); + +1188 + gy +. + gput +. + gow +. + gv6_ow +. + gtc + = +s +-> +tos_vue +; + +1189 + gy +. + gput +. + gow +. + gv6_ow +. + gh_lims + = +s +-> +l_vue +; + +1191 + gy +. + gput +. + gow +. + gsp6_ow +. + gd_pt + = + +1192 +e_u_to_be_16 +( +s +-> +pt_d +); + +1193 + gy +. + gput +. + gow +. + gsp6_ow +. + gc_pt + = + +1194 +e_u_to_be_16 +( +s +-> +pt_c +); + +1195 + gy +. + gput +. + gow +. + gsp6_ow +. + gvify_g + = + +1196 +e_u_to_be_32 +( +s +-> +vify_g_vue +); + +1198  + gRTE_ETH_FLOW_L2_PAYLOAD +: + +1199 +y +. +put +. +ow +. +l2_ow +. +h_ty + = + +1200 +e_u_to_be_16 +( +s +-> +h_ty +); + +1206 i( + gfd_cf +. + gmode + = +RTE_FDIR_MODE_PERFECT_MAC_VLAN +) + +1207 () +e_memy +(& +y +. +put +. +ow +. +mac_vn_ow +. +mac_addr +, + +1208 & +s +-> +mac_addr +, + +1209 ( +h_addr +)); + +1211 i( + gfd_cf +. + gmode + = +RTE_FDIR_MODE_PERFECT_TUNNEL +) { + +1212 () +e_memy +(& +y +. +put +. +ow +. +tu–_ow +. +mac_addr +, + +1213 & +s +-> +mac_addr +, + +1214 ( +h_addr +)); + +1215 + gy +. + gput +. + gow +. + gtu–_ow +. + gtu–_ty + = + +1216 +r2fd_tu–ty +( +s +-> +tu–_ty +); + +1217 + gy +. + gput +. + gow +. + gtu–_ow +. + gtu–_id + = + +1218 +e_u_to_be_32 +( +s +-> +tu–_id_vue +); + +1222 () +e_memy +( +y +. +put +. +ow_ext +. +exbys +, + +1223 +exbys +, + +1224 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1226 + gy +. + gput +. + gow_ext +. + gvn_tci + = +e_u_to_be_16 +( +s +-> +vn_vue +); + +1228 + gy +. + gai +. + gex_off + = 0; + +1229 i(! +rcmp +( +s +-> +dr +, "drop")) + +1230 + gy +. + gai +. + gbehavi + = +RTE_ETH_FDIR_REJECT +; + +1232 + gy +. + gai +. + gbehavi + = +RTE_ETH_FDIR_ACCEPT +; + +1234 i(! +rcmp +( +s +-> +pf_vf +, "pf")) + +1235 + gy +. + gput +. + gow_ext +. + gis_vf + = 0; + +1236 i(! +cmp +( +s +-> +pf_vf +, "vf", 2)) { + +1237  +e_h_dev_fo + + gdev_fo +; + +1239 +memt +(& +dev_fo +, 0, (dev_info)); + +1240 +e_h_dev_fo_g +( +s +-> +pt_id +, & +dev_fo +); + +1241 + go + = 0; + +1242 + gvf_id + = +oul +( +s +-> +pf_vf + + 2, & +d +, 10); + +1243 i( + go + !0 || * +d + !'\0' || +vf_id + > +dev_fo +. +max_vfs +) { + +1244 +tf +("vidam %s.\n", +s +-> +pf_vf +); + +1247 + gy +. + gput +. + gow_ext +. + gis_vf + = 1; + +1248 + gy +. + gput +. + gow_ext +. + gd_id + = ( +ut16_t +) +vf_id +; + +1250 +tf +("vidam %s.\n", +s +-> +pf_vf +); + +1254 + gy +. + gai +. + gpt_us + = +RTE_ETH_FDIR_REPORT_ID +; + +1255 + gy +. + gai +. + grx_queue + = +s +-> +queue_id +; + +1256 + gy +. + gso_id + = +s +-> +fd_id_vue +; + +1257 i(! +rcmp +( +s +-> +s +, "add")) + +1258 + gt + = +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_FDIR +, + +1259 +RTE_ETH_FILTER_ADD +, & +y +); + +1260 i(! +rcmp +( +s +-> +s +, "del")) + +1261 + gt + = +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_FDIR +, + +1262 +RTE_ETH_FILTER_DELETE +, & +y +); + +1264 + gt + = +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_FDIR +, + +1265 +RTE_ETH_FILTER_UPDATE +, & +y +); + +1266 i( + gt + < 0) + +1267 +tf +("flow directorrogrammingrror: (%s)\n", + +1268 + +(- +t +)); + +1274 +cmdle_r_tok_rg_t + + gcmd_ow_de_fr + = + +1275 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1276 +ow_de_fr +, "flow_director_filter"); + +1278 +cmdle_r_tok_num_t + + gcmd_ow_de_pt_id + = + +1279 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1280 +pt_id +, +UINT8 +); + +1283 +cmdle_r_tok_rg_t + + gcmd_ow_de_mode + = + +1284 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1285 +mode +, "mode"); + +1287 +cmdle_r_tok_rg_t + + gcmd_ow_de_mode_ + = + +1288 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1289 +mode_vue +, "IP"); + +1291 +cmdle_r_tok_rg_t + + gcmd_ow_de_s + = + +1292 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1293 +s +, "add#del#update"); + +1295 +cmdle_r_tok_rg_t + + gcmd_ow_de_ow + = + +1296 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1297 +ow +, "flow"); + +1299 +cmdle_r_tok_rg_t + + gcmd_ow_de_ow_ty + = + +1300 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1301 +ow_ty +, "ipv4-other#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#" + +1304 +cmdle_r_tok_rg_t + + gcmd_ow_de_c + = + +1305 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1306 +c +, "src"); + +1307 +cmdle_r_tok_addr_t + + gcmd_ow_de__c + = + +1308 +TOKEN_IPADDR_INITIALIZER +( +cmd_ow_de_su +, + +1309 +_c +); + +1310 +cmdle_r_tok_num_t + + gcmd_ow_de_pt_c + = + +1311 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1312 +pt_c +, +UINT16 +); + +1313 +cmdle_r_tok_rg_t + + gcmd_ow_de_d + = + +1314 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1315 +d +, "dst"); + +1316 +cmdle_r_tok_addr_t + + gcmd_ow_de__d + = + +1317 +TOKEN_IPADDR_INITIALIZER +( +cmd_ow_de_su +, + +1318 +_d +); + +1319 +cmdle_r_tok_num_t + + gcmd_ow_de_pt_d + = + +1320 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1321 +pt_d +, +UINT16 +); + +1323 +cmdle_r_tok_rg_t + + gcmd_ow_de_tos + = + +1324 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1325 +tos +, "tos"); + +1326 +cmdle_r_tok_num_t + + gcmd_ow_de_tos_vue + = + +1327 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1328 +tos_vue +, +UINT8 +); + +1330 +cmdle_r_tok_rg_t + + gcmd_ow_de_l + = + +1331 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1332 +l +, "ttl"); + +1333 +cmdle_r_tok_num_t + + gcmd_ow_de_l_vue + = + +1334 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1335 +l_vue +, +UINT8 +); + +1337 +cmdle_r_tok_rg_t + + gcmd_ow_de_vn + = + +1338 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1339 +vn +, "vlan"); + +1340 +cmdle_r_tok_num_t + + gcmd_ow_de_vn_vue + = + +1341 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1342 +vn_vue +, +UINT16 +); + +1343 +cmdle_r_tok_rg_t + + gcmd_ow_de_exbys + = + +1344 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1345 +exbys +, "flexbytes"); + +1346 +cmdle_r_tok_rg_t + + gcmd_ow_de_exbys_vue + = + +1347 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1348 +exbys_vue +, +NULL +); + +1349 +cmdle_r_tok_rg_t + + gcmd_ow_de_dr + = + +1350 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1351 +dr +, "drop#fwd"); + +1352 +cmdle_r_tok_rg_t + + gcmd_ow_de_pf_vf + = + +1353 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1354 +pf_vf +, +NULL +); + +1355 +cmdle_r_tok_rg_t + + gcmd_ow_de_queue + = + +1356 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1357 +queue +, "queue"); + +1358 +cmdle_r_tok_num_t + + gcmd_ow_de_queue_id + = + +1359 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1360 +queue_id +, +UINT16 +); + +1361 +cmdle_r_tok_rg_t + + gcmd_ow_de_fd_id + = + +1362 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1363 +fd_id +, "fd_id"); + +1364 +cmdle_r_tok_num_t + + gcmd_ow_de_fd_id_vue + = + +1365 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1366 +fd_id_vue +, +UINT32 +); + +1369 +cmdle_r__t + + gcmd_add_d_udp_ow_de + = { + +1370 . +f + = +cmd_ow_de_fr_rd +, + +1371 . + gda + = +NULL +, + +1372 . + ghp_r + = "add or deleten udp/tcp flow directorntry on NIC", + +1373 . + gtoks + = { + +1374 (*)& +cmd_ow_de_fr +, + +1375 (*)& +cmd_ow_de_pt_id +, + +1376 (*)& +cmd_ow_de_mode +, + +1377 (*)& +cmd_ow_de_mode_ +, + +1378 (*)& +cmd_ow_de_s +, + +1379 (*)& +cmd_ow_de_ow +, + +1380 (*)& +cmd_ow_de_ow_ty +, + +1381 (*)& +cmd_ow_de_c +, + +1382 (*)& +cmd_ow_de__c +, + +1383 (*)& +cmd_ow_de_pt_c +, + +1384 (*)& +cmd_ow_de_d +, + +1385 (*)& +cmd_ow_de__d +, + +1386 (*)& +cmd_ow_de_pt_d +, + +1387 (*)& +cmd_ow_de_tos +, + +1388 (*)& +cmd_ow_de_tos_vue +, + +1389 (*)& +cmd_ow_de_l +, + +1390 (*)& +cmd_ow_de_l_vue +, + +1391 (*)& +cmd_ow_de_vn +, + +1392 (*)& +cmd_ow_de_vn_vue +, + +1393 (*)& +cmd_ow_de_exbys +, + +1394 (*)& +cmd_ow_de_exbys_vue +, + +1395 (*)& +cmd_ow_de_dr +, + +1396 (*)& +cmd_ow_de_pf_vf +, + +1397 (*)& +cmd_ow_de_queue +, + +1398 (*)& +cmd_ow_de_queue_id +, + +1399 (*)& +cmd_ow_de_fd_id +, + +1400 (*)& +cmd_ow_de_fd_id_vue +, + +1401 +NULL +, + +1405 +cmdle_r_tok_rg_t + + gcmd_ow_de_h + = + +1406 +TOKEN_STRING_INITIALIZER +( +cmd_ow_de_su +, + +1407 +h +, "ether"); + +1408 +cmdle_r_tok_num_t + + gcmd_ow_de_h_ty + = + +1409 +TOKEN_NUM_INITIALIZER +( +cmd_ow_de_su +, + +1410 +h_ty +, +UINT16 +); + +1412 +cmdle_r__t + + gcmd_add_d_l2_ow_de + = { + +1413 . +f + = +cmd_ow_de_fr_rd +, + +1414 . + gda + = +NULL +, + +1415 . + ghp_r + = "add or delete L2 flow directorntry on NIC", + +1416 . + gtoks + = { + +1417 (*)& +cmd_ow_de_fr +, + +1418 (*)& +cmd_ow_de_pt_id +, + +1419 (*)& +cmd_ow_de_mode +, + +1420 (*)& +cmd_ow_de_mode_ +, + +1421 (*)& +cmd_ow_de_s +, + +1422 (*)& +cmd_ow_de_ow +, + +1423 (*)& +cmd_ow_de_ow_ty +, + +1424 (*)& +cmd_ow_de_h +, + +1425 (*)& +cmd_ow_de_h_ty +, + +1426 (*)& +cmd_ow_de_exbys +, + +1427 (*)& +cmd_ow_de_exbys_vue +, + +1428 (*)& +cmd_ow_de_dr +, + +1429 (*)& +cmd_ow_de_pf_vf +, + +1430 (*)& +cmd_ow_de_queue +, + +1431 (*)& +cmd_ow_de_queue_id +, + +1432 (*)& +cmd_ow_de_fd_id +, + +1433 (*)& +cmd_ow_de_fd_id_vue +, + +1434 +NULL +, + +1440  + scmd_t_hash_put_t_su + { + +1441 +cmdle_fixed_rg_t + + gt_hash_put_t +; + +1442 +ut8_t + + gpt_id +; + +1443 +cmdle_fixed_rg_t + + gow_ty +; + +1444 +cmdle_fixed_rg_t + + gt_fld0 +; + +1445 +cmdle_fixed_rg_t + + gt_fld1 +; + +1446 +cmdle_fixed_rg_t + + gt_fld2 +; + +1447 +cmdle_fixed_rg_t + + gt_fld3 +; + +1448 +cmdle_fixed_rg_t + + gt_fld4 +; + +1449 +cmdle_fixed_rg_t + + g +; + +1452  +e_h_put_t_fld + + +1453 +r2t +(* +rg +) + +1455 +ut16_t + + gi +; + +1458  + gr +[32]; + +1459 +e_h_put_t_fld + + gt +; + +1460 } + gt_b +[] = { + +1461 {"hty", +RTE_ETH_INPUT_SET_L2_ETHERTYPE +}, + +1462 {"ovn", +RTE_ETH_INPUT_SET_L2_OUTER_VLAN +}, + +1463 {"ivn", +RTE_ETH_INPUT_SET_L2_INNER_VLAN +}, + +1464 {"c-v4", +RTE_ETH_INPUT_SET_L3_SRC_IP4 +}, + +1465 {"d-v4", +RTE_ETH_INPUT_SET_L3_DST_IP4 +}, + +1466 {"v4-tos", +RTE_ETH_INPUT_SET_L3_IP4_TOS +}, + +1467 {"v4-o", +RTE_ETH_INPUT_SET_L3_IP4_PROTO +}, + +1468 {"v4-l", +RTE_ETH_INPUT_SET_L3_IP4_TTL +}, + +1469 {"c-v6", +RTE_ETH_INPUT_SET_L3_SRC_IP6 +}, + +1470 {"d-v6", +RTE_ETH_INPUT_SET_L3_DST_IP6 +}, + +1471 {"v6-tc", +RTE_ETH_INPUT_SET_L3_IP6_TC +}, + +1472 {"v6-xt-hd", +RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER +}, + +1473 {"v6-h-lims", +RTE_ETH_INPUT_SET_L3_IP6_HOP_LIMITS +}, + +1474 {"udp-c-pt", +RTE_ETH_INPUT_SET_L4_UDP_SRC_PORT +}, + +1475 {"udp-d-pt", +RTE_ETH_INPUT_SET_L4_UDP_DST_PORT +}, + +1476 {"t-c-pt", +RTE_ETH_INPUT_SET_L4_TCP_SRC_PORT +}, + +1477 {"t-d-pt", +RTE_ETH_INPUT_SET_L4_TCP_DST_PORT +}, + +1478 {"sp-c-pt", +RTE_ETH_INPUT_SET_L4_SCTP_SRC_PORT +}, + +1479 {"sp-d-pt", +RTE_ETH_INPUT_SET_L4_SCTP_DST_PORT +}, + +1480 {"sp-vi-g", +RTE_ETH_INPUT_SET_L4_SCTP_VERIFICATION_TAG +}, + +1481 {"udp-key", +RTE_ETH_INPUT_SET_TUNNEL_L4_UDP_KEY +}, + +1482 {"g-key", +RTE_ETH_INPUT_SET_TUNNEL_GRE_KEY +}, + +1483 {"d-1", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_1ST_WORD +}, + +1484 {"d-2nd", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_2ND_WORD +}, + +1485 {"d-3rd", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_3RD_WORD +}, + +1486 {"d-4th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_4TH_WORD +}, + +1487 {"d-5th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_5TH_WORD +}, + +1488 {"d-6th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_6TH_WORD +}, + +1489 {"d-7th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_7TH_WORD +}, + +1490 {"d-8th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_8TH_WORD +}, + +1491 {"ne", +RTE_ETH_INPUT_SET_NONE +}, + +1493  + gi + = 0; i < +RTE_DIM +( +t_b +); i++) { + +1494 i(! +rcmp +( +rg +, +t_b +[ +i +]. +r +)) + +1495  + gt_b +[ +i +]. + gt +; + +1498  + gRTE_ETH_INPUT_SET_UNKNOWN +; + +1502 +cmd_t_hash_put_t_1_rd +(* +rd_su +, + +1503 +__e_unud +  +cmdle + * + +, + +1504 +__e_unud + * +da +) + +1506  +cmd_t_hash_put_t_su + * + gs + = +rd_su +; + +1507  +e_h_hash_fr_fo + + gfo +; + +1509 i( + gab_ow_d +) { + +1510 +tf +("FDIR Filter is Defined!\n"); + +1511 +tf +("Please undefine FDIR_FILTER flagnd define " + +1516 +memt +(& +fo +, 0, (info)); + +1517 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1518 + gfo +.fo. + gput_t_cf +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1520 + gfo +.fo. + gput_t_cf +. + gfld +[0] = +r2t +( +s +-> +t_fld0 +); + +1521 + gfo +.fo. + gput_t_cf +. + gt_size + = 1; + +1523 i(! +rcmp +( +s +-> + +, "select")) + +1524 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_SELECT +; + +1525 i(! +rcmp +( +s +-> + +, "add")) + +1526 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_ADD +; + +1528 +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1529 +RTE_ETH_FILTER_SET +, & +fo +); + +1535 +cmd_t_hash_put_t_2_rd +(* +rd_su +, + +1536 +__e_unud +  +cmdle + * + +, + +1537 +__e_unud + * +da +) + +1539  +cmd_t_hash_put_t_su + * + gs + = +rd_su +; + +1540  +e_h_hash_fr_fo + + gfo +; + +1542 i( + gab_ow_d +) { + +1543 +tf +("FDIR Filter is Defined!\n"); + +1544 +tf +("Please undefine FDIR_FILTER flagnd define " + +1549 +memt +(& +fo +, 0, (info)); + +1550 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1551 + gfo +.fo. + gput_t_cf +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1553 + gfo +.fo. + gput_t_cf +. + gfld +[0] = +r2t +( +s +-> +t_fld0 +); + +1554 + gfo +.fo. + gput_t_cf +. + gfld +[1] = +r2t +( +s +-> +t_fld1 +); + +1556 + gfo +.fo. + gput_t_cf +. + gt_size + = 2; + +1558 i(! +rcmp +( +s +-> + +, "select")) + +1559 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_SELECT +; + +1560 i(! +rcmp +( +s +-> + +, "add")) + +1561 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_ADD +; + +1563 +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1564 +RTE_ETH_FILTER_SET +, & +fo +); + +1571 +cmd_t_hash_put_t_3_rd +(* +rd_su +, + +1572 +__e_unud +  +cmdle + * + +, + +1573 +__e_unud + * +da +) + +1575  +cmd_t_hash_put_t_su + * + gs + = +rd_su +; + +1576  +e_h_hash_fr_fo + + gfo +; + +1578 +memt +(& +fo +, 0, (info)); + +1579 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1580 + gfo +.fo. + gput_t_cf +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1582 + gfo +.fo. + gput_t_cf +. + gfld +[0] = +r2t +( +s +-> +t_fld0 +); + +1583 + gfo +.fo. + gput_t_cf +. + gfld +[1] = +r2t +( +s +-> +t_fld1 +); + +1584 + gfo +.fo. + gput_t_cf +. + gfld +[2] = +r2t +( +s +-> +t_fld2 +); + +1585 + gfo +.fo. + gput_t_cf +. + gt_size + = 3; + +1587 i(! +rcmp +( +s +-> + +, "select")) + +1588 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_SELECT +; + +1589 i(! +rcmp +( +s +-> + +, "add")) + +1590 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_ADD +; + +1592 +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1593 +RTE_ETH_FILTER_SET +, & +fo +); + +1597 +cmd_t_hash_put_t_4_rd +(* +rd_su +, + +1598 +__e_unud +  +cmdle + * + +, + +1599 +__e_unud + * +da +) + +1601  +cmd_t_hash_put_t_su + * + gs + = +rd_su +; + +1602  +e_h_hash_fr_fo + + gfo +; + +1604 i( + gab_ow_d +) { + +1605 +tf +("FDIR Filter is Defined!\n"); + +1606 +tf +("Please undefine FDIR_FILTER flagnd define " + +1611 +memt +(& +fo +, 0, (info)); + +1612 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1613 + gfo +.fo. + gput_t_cf +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1615 + gfo +.fo. + gput_t_cf +. + gfld +[0] = +r2t +( +s +-> +t_fld0 +); + +1616 + gfo +.fo. + gput_t_cf +. + gfld +[1] = +r2t +( +s +-> +t_fld1 +); + +1617 + gfo +.fo. + gput_t_cf +. + gfld +[2] = +r2t +( +s +-> +t_fld2 +); + +1618 + gfo +.fo. + gput_t_cf +. + gfld +[3] = +r2t +( +s +-> +t_fld3 +); + +1620 + gfo +.fo. + gput_t_cf +. + gt_size + = 4; + +1621 i(! +rcmp +( +s +-> + +, "select")) + +1622 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_SELECT +; + +1623 i(! +rcmp +( +s +-> + +, "add")) + +1624 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_ADD +; + +1626 +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1627 +RTE_ETH_FILTER_SET +, & +fo +); + +1633 +cmd_t_hash_put_t_5_rd +(* +rd_su +, + +1634 +__e_unud +  +cmdle + * + +, + +1635 +__e_unud + * +da +) + +1637  +cmd_t_hash_put_t_su + * + gs + = +rd_su +; + +1638  +e_h_hash_fr_fo + + gfo +; + +1640 +memt +(& +fo +, 0, (info)); + +1641 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1642 + gfo +.fo. + gput_t_cf +. + gow_ty + = +r2owty +( +s +-> +ow_ty +); + +1644 + gfo +.fo. + gput_t_cf +. + gfld +[0] = +r2t +( +s +-> +t_fld0 +); + +1645 + gfo +.fo. + gput_t_cf +. + gfld +[1] = +r2t +( +s +-> +t_fld1 +); + +1646 + gfo +.fo. + gput_t_cf +. + gfld +[2] = +r2t +( +s +-> +t_fld2 +); + +1647 + gfo +.fo. + gput_t_cf +. + gfld +[3] = +r2t +( +s +-> +t_fld3 +); + +1648 + gfo +.fo. + gput_t_cf +. + gfld +[4] = +r2t +( +s +-> +t_fld4 +); + +1650 + gfo +.fo. + gput_t_cf +. + gt_size + = 5; + +1651 i(! +rcmp +( +s +-> + +, "select")) + +1652 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_SELECT +; + +1653 i(! +rcmp +( +s +-> + +, "add")) + +1654 + gfo +.fo. + gput_t_cf +. + g + = +RTE_ETH_INPUT_SET_ADD +; + +1655 +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1656 +RTE_ETH_FILTER_SET +, & +fo +); + +1660 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_cmd + = + +1661 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1662 +t_hash_put_t +, "set_hash_input_set"); + +1663 +cmdle_r_tok_num_t + + gcmd_t_hash_put_t_pt_id + = + +1664 +TOKEN_NUM_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1665 +pt_id +, +UINT8 +); + +1666 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_ow_ty + = + +1667 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1668 +ow_ty +, + +1672 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_fld0 + = + +1673 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1674 +t_fld0 +, + +1678 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_fld1 + = + +1679 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1680 +t_fld1 +, + +1684 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_fld2 + = + +1685 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1686 +t_fld2 +, + +1689 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_fld3 + = + +1690 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1691 +t_fld3 +, + +1694 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_fld4 + = + +1695 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1696 +t_fld4 +, "ipv4-proto#ipv6-next-header#none"); + +1699 +cmdle_r_tok_rg_t + + gcmd_t_hash_put_t_ + = + +1700 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_put_t_su +, + +1701 + +, "select#add"); + +1703 +cmdle_r__t + + gcmd_t_hash_put_t_1 + = { + +1704 . +f + = +cmd_t_hash_put_t_1_rd +, + +1705 . + gda + = +NULL +, + +1706 . + ghp_r + = "set_hash_input_set_1 " + +1712 . + gtoks + = { + +1713 (*)& +cmd_t_hash_put_t_cmd +, + +1714 (*)& +cmd_t_hash_put_t_pt_id +, + +1715 (*)& +cmd_t_hash_put_t_ow_ty +, + +1716 (*)& +cmd_t_hash_put_t_fld0 +, + +1717 (*)& +cmd_t_hash_put_t_ +, + +1718 +NULL +, + +1722 +cmdle_r__t + + gcmd_t_hash_put_t_2 + = { + +1723 . +f + = +cmd_t_hash_put_t_2_rd +, + +1724 . + gda + = +NULL +, + +1725 . + ghp_r + = "set_hash_input_set_2 " + +1732 . + gtoks + = { + +1733 (*)& +cmd_t_hash_put_t_cmd +, + +1734 (*)& +cmd_t_hash_put_t_pt_id +, + +1735 (*)& +cmd_t_hash_put_t_ow_ty +, + +1736 (*)& +cmd_t_hash_put_t_fld0 +, + +1737 (*)& +cmd_t_hash_put_t_fld1 +, + +1738 (*)& +cmd_t_hash_put_t_ +, + +1739 +NULL +, + +1744 +cmdle_r__t + + gcmd_t_hash_put_t_3 + = { + +1745 . +f + = +cmd_t_hash_put_t_3_rd +, + +1746 . + gda + = +NULL +, + +1747 . + ghp_r + = "set_hash_input_set_3 " + +1757 . + gtoks + = { + +1758 (*)& +cmd_t_hash_put_t_cmd +, + +1759 (*)& +cmd_t_hash_put_t_pt_id +, + +1760 (*)& +cmd_t_hash_put_t_ow_ty +, + +1761 (*)& +cmd_t_hash_put_t_fld0 +, + +1762 (*)& +cmd_t_hash_put_t_fld1 +, + +1763 (*)& +cmd_t_hash_put_t_fld2 +, + +1764 (*)& +cmd_t_hash_put_t_ +, + +1765 +NULL +, + +1770 +cmdle_r__t + + gcmd_t_hash_put_t_4 + = { + +1771 . +f + = +cmd_t_hash_put_t_4_rd +, + +1772 . + gda + = +NULL +, + +1773 . + ghp_r + = "set_hash_input_set_4 " + +1782 . + gtoks + = { + +1783 (*)& +cmd_t_hash_put_t_cmd +, + +1784 (*)& +cmd_t_hash_put_t_pt_id +, + +1785 (*)& +cmd_t_hash_put_t_ow_ty +, + +1786 (*)& +cmd_t_hash_put_t_fld0 +, + +1787 (*)& +cmd_t_hash_put_t_fld1 +, + +1788 (*)& +cmd_t_hash_put_t_fld2 +, + +1789 (*)& +cmd_t_hash_put_t_fld3 +, + +1790 (*)& +cmd_t_hash_put_t_ +, + +1791 +NULL +, + +1795 +cmdle_r__t + + gcmd_t_hash_put_t_5 + = { + +1796 . +f + = +cmd_t_hash_put_t_5_rd +, + +1797 . + gda + = +NULL +, + +1798 . + ghp_r + = "set_hash_input_set_5 " + +1808 . + gtoks + = { + +1809 (*)& +cmd_t_hash_put_t_cmd +, + +1810 (*)& +cmd_t_hash_put_t_pt_id +, + +1811 (*)& +cmd_t_hash_put_t_ow_ty +, + +1812 (*)& +cmd_t_hash_put_t_fld0 +, + +1813 (*)& +cmd_t_hash_put_t_fld1 +, + +1814 (*)& +cmd_t_hash_put_t_fld2 +, + +1815 (*)& +cmd_t_hash_put_t_fld3 +, + +1816 (*)& +cmd_t_hash_put_t_fld4 +, + +1817 (*)& +cmd_t_hash_put_t_ +, + +1818 +NULL +, + +1824  + scmd_t_hash_glob_cfig_su + { + +1825 +cmdle_fixed_rg_t + + gt_hash_glob_cfig +; + +1826 +ut8_t + + gpt_id +; + +1827 +cmdle_fixed_rg_t + + ghash_func +; + +1828 +cmdle_fixed_rg_t + + gow_ty +; + +1829 +cmdle_fixed_rg_t + + gab +; + +1833 +cmd_t_hash_glob_cfig_rd +(* +rd_su +, + +1834 +__e_unud +  +cmdle + * + +, + +1835 +__e_unud + * +da +) + +1837  +cmd_t_hash_glob_cfig_su + * + gs + = +rd_su +; + +1838  +e_h_hash_fr_fo + + gfo +; + +1839 +ut32_t + + gy +, + gidx +, + gofft +; + +1840  + gt +; + +1842 i( +e_h_dev_fr_su܋d +( +s +-> +pt_id +, + +1843 +RTE_ETH_FILTER_HASH +) < 0) { + +1844 +tf +("RTE_ETH_FILTER_HASHot supported onort %d\n", + +1845 +s +-> +pt_id +); + +1848 +memt +(& +fo +, 0, (info)); + +1849 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_GLOBAL_CONFIG +; + +1850 i(! +rcmp +( +s +-> +hash_func +, "toeplitz")) + +1851 + gfo +.fo. + gglob_cf +. + ghash_func + = + +1852 +RTE_ETH_HASH_FUNCTION_TOEPLITZ +; + +1853 i(! +rcmp +( +s +-> +hash_func +, "simple_xor")) + +1854 + gfo +.fo. + gglob_cf +. + ghash_func + = + +1855 +RTE_ETH_HASH_FUNCTION_SIMPLE_XOR +; + +1856 i(! +rcmp +( +s +-> +hash_func +, "default")) + +1857 + gfo +.fo. + gglob_cf +. + ghash_func + = + +1858 +RTE_ETH_HASH_FUNCTION_DEFAULT +; + +1860 + gy + = +r2owty +( +s +-> +ow_ty +); + +1861 + gidx + = +y + / ( +CHAR_BIT + * ( +ut32_t +)); + +1862 + gofft + = +y + % ( +CHAR_BIT + * ( +ut32_t +)); + +1863 + gfo +.fo. + gglob_cf +. + gvid_b_mask +[ +idx +] |(1UL << +offt +); + +1864 i(! +rcmp +( +s +-> +ab +, "enable")) + +1865 if( + gidx + < + gRTE_SYM_HASH_MASK_ARRAY_SIZE +) + +1866 + gfo +.fo. + gglob_cf +. + gsym_hash_ab_mask +[ +idx +] |= + +1867 (1UL << +offt +); + +1868 + gt + = +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1869 +RTE_ETH_FILTER_SET +, & +fo +); + +1870 i( + gt + < 0) + +1871 +tf +("Cannot set global hash configurations byort %d\n", + +1872 +s +-> +pt_id +); + +1874 +tf +("Global hash configurations have been set " + +1875 "succssfuy by܈%d\n", +s +-> +pt_id +); + +1877 +cmdle_r_tok_rg_t + + gcmd_t_hash_glob_cfig_l + = + +1878 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_glob_cfig_su +, + +1879 +t_hash_glob_cfig +, "set_hash_global_config"); + +1880 +cmdle_r_tok_num_t + + gcmd_t_hash_glob_cfig_pt_id + = + +1881 +TOKEN_NUM_INITIALIZER +( +cmd_t_hash_glob_cfig_su +, + +1882 +pt_id +, +UINT8 +); + +1883 +cmdle_r_tok_rg_t + + gcmd_t_hash_glob_cfig_hash_func + = + +1884 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_glob_cfig_su +, + +1885 +hash_func +, "toeplitz#simple_xor#default"); + +1886 +cmdle_r_tok_rg_t + + gcmd_t_hash_glob_cfig_ow_ty + = + +1887 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_glob_cfig_su +, + +1888 +ow_ty +, + +1891 +cmdle_r_tok_rg_t + + gcmd_t_hash_glob_cfig_ab + = + +1892 +TOKEN_STRING_INITIALIZER +( +cmd_t_hash_glob_cfig_su +, + +1893 +ab +, "enable#disable"); + +1895 +cmdle_r__t + + gcmd_t_hash_glob_cfig + = { + +1896 . +f + = +cmd_t_hash_glob_cfig_rd +, + +1897 . + gda + = +NULL +, + +1898 . + ghp_r + = "set_hash_global_configort_id " + +1903 . + gtoks + = { + +1904 (*)& +cmd_t_hash_glob_cfig_l +, + +1905 (*)& +cmd_t_hash_glob_cfig_pt_id +, + +1906 (*)& +cmd_t_hash_glob_cfig_hash_func +, + +1907 (*)& +cmd_t_hash_glob_cfig_ow_ty +, + +1908 (*)& +cmd_t_hash_glob_cfig_ab +, + +1909 +NULL +, + +1914  + scmd_t_sym_hash_a_r_pt_su + { + +1915 +cmdle_fixed_rg_t + + gt_sym_hash_a_r_pt +; + +1916 +cmdle_fixed_rg_t + + gab +; + +1917 +ut8_t + + gpt_id +; + +1921 +cmd_t_sym_hash_r_pt_rd +(* +rd_su +, + +1922 +__e_unud +  +cmdle + * + +, + +1923 +__e_unud + * +da +) + +1925  +cmd_t_sym_hash_a_r_pt_su + * + gs + = +rd_su +; + +1926  +e_h_hash_fr_fo + + gfo +; + +1927  + gt +; + +1929 i( +e_h_dev_fr_su܋d +( +s +-> +pt_id +, + +1930 +RTE_ETH_FILTER_HASH +) < 0) { + +1931 +tf +("RTE_ETH_FILTER_HASHot supported onort: %d\n", + +1932 +s +-> +pt_id +); + +1936 +memt +(& +fo +, 0, (info)); + +1937 + gfo +. + gfo_ty + = +RTE_ETH_HASH_FILTER_SYM_HASH_ENA_PER_PORT +; + +1939 i(! +rcmp +( +s +-> +ab +, "enable")) + +1940 + gfo +.fo. + gab + = 1; + +1942 + gt + = +e_h_dev_fr_ +( +s +-> +pt_id +, +RTE_ETH_FILTER_HASH +, + +1943 +RTE_ETH_FILTER_SET +, & +fo +); + +1944 i( + gt + < 0) { + +1945 +tf +("Cannot set symmetric hashnableerort on " + +1946 "p܈%u\n", +s +-> +pt_id +); + +1949 +tf +("Symmetric hash has been seto %s onort %u\n", + +1950 +s +-> +ab +,es-> +pt_id +); + +1953 +cmdle_r_tok_rg_t + + gcmd_t_sym_hash_a_r_pt_l + = + +1954 +TOKEN_STRING_INITIALIZER +( +cmd_t_sym_hash_a_r_pt_su +, + +1955 +t_sym_hash_a_r_pt +, "set_sym_hash_ena_per_port"); + +1956 +cmdle_r_tok_num_t + + gcmd_t_sym_hash_a_r_pt_pt_id + = + +1957 +TOKEN_NUM_INITIALIZER +( +cmd_t_sym_hash_a_r_pt_su +, + +1958 +pt_id +, +UINT8 +); + +1959 +cmdle_r_tok_rg_t + + gcmd_t_sym_hash_a_r_pt_ab + = + +1960 +TOKEN_STRING_INITIALIZER +( +cmd_t_sym_hash_a_r_pt_su +, + +1961 +ab +, "enable#disable"); + +1963 +cmdle_r__t + + gcmd_t_sym_hash_a_r_pt + = { + +1964 . +f + = +cmd_t_sym_hash_r_pt_rd +, + +1965 . + gda + = +NULL +, + +1966 . + ghp_r + = "set_sym_hash_ena_per_portort_idnable|disable", + +1967 . + gtoks + = { + +1968 (*)& +cmd_t_sym_hash_a_r_pt_l +, + +1969 (*)& +cmd_t_sym_hash_a_r_pt_pt_id +, + +1970 (*)& +cmd_t_sym_hash_a_r_pt_ab +, + +1971 +NULL +, + +1977 +p_pe_picmp_y_dbg +( +p_ms + * +p +, + +1978 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +1980  +pe_picmp_y_dbg_msg_q + * + gq +; + +1981  +pe_picmp_y_dbg_msg_r + * + gr +; + +1984 i( + gp + = +NULL +) + +1988 + gq + = +p_msg_loc +( +p +); + +1989 i( + gq + = +NULL +) + +1992 + gq +-> + gty + = +PIPELINE_MSG_REQ_CUSTOM +; + +1993 + gq +-> + gsubty + = +PIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +; + +1994 + gq +-> + gda +[0] = +msg +[0]; + +1995 + gq +-> + gda +[1] = +msg +[1]; + +1997 + gr + = +p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +1998 i( + gr + = +NULL +) + +2002 i( + gr +-> + gus +) { + +2003 +p_msg_ +( +p +, +r +); + +2004 +tf +("E܄->u%d\n", +r +-> +us +); + +2009 +p_msg_ +( +p +, +r +); + +2019  + scmd_y_dbg_su + { + +2020 +cmdle_fixed_rg_t + + gp_rg +; + +2021 +ut32_t + + gp +; + +2022 +cmdle_fixed_rg_t + + gy_rg +; + +2023 +cmdle_fixed_rg_t + + gdbg_rg +; + +2024 +ut8_t + + gcmd +; + +2025 +ut8_t + + gd1 +; + +2029 +cmd_y_dbg_rd +(* +rd_su +, + +2030 +__e_unud +  +cmdle + * + +, * +da +) + +2032  +cmd_y_dbg_su + * + gms + = +rd_su +; + +2033  +p_ms + * + gp + = +da +; + +2034 +ut8_t + + gmsg +[2]; + +2035  + gus +; + +2037 + gmsg +[0] = +ms +-> +cmd +; + +2038 + gmsg +[1] = +ms +-> +d1 +; + +2039 + gus + = +p_pe_picmp_y_dbg +( +p +, +ms +-> +p +, +msg +); + +2041 i( + gus + != 0) { + +2042 +tf +("Dbg Command failed\n"); + +2047  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_p_rg + = + +2048 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +p_rg +, "p"); + +2050  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_p + = + +2051 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +p +, +UINT32 +); + +2053  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_y_rg + = + +2054 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, + +2055 +y_rg +, "txrx"); + +2057  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_dbg_rg + = + +2058 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +dbg_rg +, + +2061  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_cmd + = + +2062 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +cmd +, +UINT8 +); + +2064  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_d1 + = + +2065 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +d1 +, +UINT8 +); + +2067  +cmdle_r__t + + glb_cmd_y_dbg + = { + +2068 . +f + = +cmd_y_dbg_rd +, + +2069 . + gda + = +NULL +, + +2070 . + ghp_r + = "ARPICMP dbg cmd", + +2071 . + gtoks + = { + +2072 (*)& +lb_cmd_y_dbg_p_rg +, + +2073 (*)& +lb_cmd_y_dbg_p +, + +2074 (*)& +lb_cmd_y_dbg_y_rg +, + +2075 (*)& +lb_cmd_y_dbg_dbg_rg +, + +2076 (*)& +lb_cmd_y_dbg_cmd +, + +2077 (*)& +lb_cmd_y_dbg_d1 +, + +2078 +NULL +, + +2082  +cmdle_r_x_t + + gpe_cmds +[] = { + +2083 ( +cmdle_r__t + *& +lb_cmd_y_dbg +, + +2084 ( +cmdle_r__t + *& +cmd_p_add +, + +2085 ( +cmdle_r__t + *& +cmd_p_d +, + +2086 ( +cmdle_r__t + *& +cmd_p_q +, + +2087 ( +cmdle_r__t + *& +cmd_icmp_echo_q +, + +2088 ( +cmdle_r__t + *& +cmd_p_ls +, + +2089 ( +cmdle_r__t + *& +cmd_show_pts_fo +, + +2091 ( +cmdle_r__t + *& +cmd_t_fwd_mode +, + +2092 ( +cmdle_r__t + *& +cmd_add_d_udp_ow_de +, + +2093 ( +cmdle_r__t + *& +cmd_add_d_l2_ow_de +, + +2094 ( +cmdle_r__t + *& +cmd_t_hash_put_t_1 +, + +2095 ( +cmdle_r__t + *& +cmd_t_hash_put_t_2 +, + +2097 ( +cmdle_r__t + *& +cmd_t_hash_put_t_4 +, + +2099 ( +cmdle_r__t + *& +cmd_t_hash_glob_cfig +, + +2100 ( +cmdle_r__t + *& +cmd_t_sym_hash_a_r_pt +, + +2101 #ide +VNF_ACL + + +2102 ( +cmdle_r__t + *& +cmd_p_dbg +, + +2103 ( +cmdle_r__t + *& +cmd_p_tim +, + +2105 +NULL +, + +2108  +pe__s + + gpe_picmp__s + = { + +2109 . +f_ + = +NULL +, + +2110 . + gf_ + = +NULL +, + +2111 . + gcmds + = +pe_cmds +, + +2114  +pe_ty + + gpe_picmp + = { + +2115 . +me + = "ARPICMP", + +2116 . + gbe_s + = & +pe_picmp_be_s +, + +2117 . + g_s + = & +pe_picmp__s +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp.h + +17 #ide +__INCLUDE_PIPELINE_ARPICMP_H__ + + +18  + #__INCLUDE_PIPELINE_ARPICMP_H__ + + + ) + +20  + ~"pe.h +" + +21  + ~"pe_picmp_be.h +" + +26  +pe_ty + +pe_picmp +; + +28  + #MAX_PKT_BURST + 512 + + ) + +29  + #DEF_PKT_BURST + 32 + + ) + +32  +ut8_t + + tptid_t +; + +33  +ut16_t + + tqueueid_t +; + +34  +ut16_t + + tamid_t +; + +39  + sfwd_am + { + +42 +ptid_t + + mrx_pt +; + +44 +queueid_t + + mrx_queue +; + +46 +ptid_t + + mtx_pt +; + +48 +queueid_t + + mtx_queue +; + +50 +amid_t + + m_addr +; + +54  + mrx_cks +; + +56  + mtx_cks +; + +58  + mfwd_drݳd +; + +60  + mrx_bad__csum +; + +62  + mrx_bad_l4_csum +; + +63 #ifde +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +64 +ut64_t + + mce_cyes +; + +66 #ifde +RTE_TEST_PMD_RECORD_BURST_STATS + + +67  +pkt_bur_s + + mrx_bur_s +; + +68  +pkt_bur_s + + mtx_bur_s +; + +86 (* + tpt_fwd_beg_t +)( + tptid_t + + tpi +); + +87 (* + tpt_fwd_d_t +)( + tptid_t + + tpi +); + +88 (* + tck_fwd_t +)( + tfwd_am + * + tfs +); + +89  + sfwd_ge + { + +91 cڡ * +fwd_mode_me +; + +93 +pt_fwd_beg_t + +pt_fwd_beg +; + +95 +pt_fwd_d_t + +pt_fwd_d +; + +97 +ck_fwd_t + +ck_fwd +; + +99  + #IPV4_ADDR_TO_UINT +( +_addr +, + +) \ + +101 i(( +_addr +). +my + = +AF_INET +) \ + +102 ( + +( +_addr +). +addr +. +v4 +. +s_addr +; \ + +104 + `tf +("invalidarameter.\n"); \ + +107 + } +} 0) + + ) + +109  + #IPV6_ADDR_TO_ARRAY +( +_addr +, + +) \ + +111 i(( +_addr +). +my + = +AF_INET6 +) \ + +112 () + `e_memy +(&( + +), \ + +113 &(( +_addr +). +addr +. +v6 +), \ + +114 ( +6_addr +)); \ + +116 + `tf +("invalidarameter.\n"); \ + +119 } 0) + + ) + +121  +t_pkt_fwdg_mode +(cڡ * +fwd_mode_me +); + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.c + +17  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~ + +37  + ~ + +38  + ~ + +39  + ~"pe_ais_comm.h +" + +40  + ~"hash_func.h +" + +41  + ~"vnf_comm.h +" + +42  + ~"pe_comm_be.h +" + +43  + ~"pe_picmp_be.h +" + +44  + ~"rr.h +" + +45  + ~"hash_func.h +" + +46  + ~"vnf_comm.h +" + +47  + ~"p.h +" + +49  + ~"pe_comm_.h +" + +50 #ide +VNF_ACL + + +51  + ~"lib_p.h +" + +52  + ~"lib_icmpv6.h +" + +53  + ~"r.h +" + +56 #ifde +VNF_ACL + + +58  + #NB_ARPICMP_MBUF + 64 + + ) + +59  + #NB_NDICMP_MBUF + 64 + + ) + +60  + #IP_VERSION_4 + 0x40 + + ) + +62  + #IP_HDRLEN + 0x05 + + ) + +63  + #IP_VHL_DEF + ( +IP_VERSION_4 + | +IP_HDRLEN +) + + ) + +65  + #is_mui_v4_addr +( +v4_addr +) \ + +66 ((( + `e_be_to_u_32 +(( +v4_addr +)>> 24& 0x000000FF=0xE0) + + ) + +70  + #INADDRSZ + 4 + + ) + +71  + #IN6ADDRSZ + 16 + + ) + +72  +my___v6 +( +af +, cڡ * +c +, * +d +); + +73  +__v6 +(cڡ * +c +, * +d +); + +74  +__v4 +(cڡ * +c +, * +d +); + +76 +ut8_t + + gvnf_comm_p_lib_ +; + +77 +ut8_t + + gvnf_comm_nd_lib_ +; + +78 +ut8_t + + gldb_pe_cou +; + +80 +ut32_t + + gARPICMP_DEBUG +; + +81 +ut32_t + + gNDIPV6_DEBUG +; + +83 +ut32_t + + gp_rou_tbl_dex +; + +84 +ut32_t + + gnd_rou_tbl_dex +; + +85 +ut32_t + + glk_hw_addr_y_idx +; + +87 +ut32_t + + glib_p_g_mac_q +; + +88 +ut32_t + + glib_p_nh_found +; + +89 +ut32_t + + glib_p_no_nh_found +; + +90 +ut32_t + + glib_p_p_y_found +; + +91 +ut32_t + + glib_p_no_p_y_found +; + +92 +ut32_t + + glib_p_puϋ_ed +; + +93 +ut32_t + + glib_p_de_ed +; + +94 +ut32_t + + glib_p_dui_found +; + +96 +ut32_t + + glib_nd_g_mac_q +; + +97 +ut32_t + + glib_nd_nh_found +; + +98 +ut32_t + + glib_nd_no_nh_found +; + +99 +ut32_t + + glib_nd_nd_y_found +; + +100 +ut32_t + + glib_nd_no_p_y_found +; + +101 +ut32_t + + glib_nd_puϋ_ed +; + +102 +ut32_t + + glib_nd_de_ed +; + +103 +ut32_t + + glib_nd_dui_found +; + +105  +e_mempo + * + glib_p_pktmbuf_tx_po +; + +106  +e_mempo + * + glib_nd_pktmbuf_tx_po +; + +108  +e_mbuf + * + glib_p_pkt +; + +109  +e_mbuf + * + glib_nd_pkt +; + +111  +e_hash_ms + + gp_hash_ms + = { + +112 . +me + = "ARP", + +113 . + gs + = 64, + +114 . + grved + = 0, + +115 . + gkey_n + = ( +p_key_v4 +), + +116 . + ghash_func + = +e_jhash +, + +117 . + ghash_func__v + = 0, + +120  +e_hash_ms + + gnd_hash_ms + = { + +121 . +me + = "ND", + +122 . + gs + = 64, + +123 . + grved + = 0, + +124 . + gkey_n + = ( +nd_key_v6 +), + +125 . + ghash_func + = +e_jhash +, + +126 . + ghash_func__v + = 0, + +129  +e_hash + * + gp_hash_hd +; + +130  +e_hash + * + gnd_hash_hd +; + +134  +p_ms + * + gmyA +; + +135  +e_pe + * + gmyP +; + +136  +pe_picmp + * + ggp_p +; + +137 +ut8_t + + gnum_vnf_thads +; + +139 #ifde +VNF_ACL + + +141  + sp_pt_addss + { + +142 +ut32_t + + m +; + +143 +ut64_t + + mmac_addr +; + +146  +p_pt_addss + + gp_pt_addss +[ +RTE_MAX_ETHPORTS +]; + +148 +ut16_t + + gp_ma_offt +; + +151  + spe_picmp + { + +152  +pe + + mp +; + +153 +pe_msg_q_hdr + + +154 + mcuom_hdrs +[ +PIPELINE_ARPICMP_MSG_REQS +]; + +155 +ut64_t + + mivedPktCou +; + +156 +ut64_t + + mdrݳdPktCou +; + +157 +ut64_t + + mPktCou +; + +158 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +159 +ut8_t + + mout_id +[ +PIPELINE_MAX_PORT_IN +]; + +160 +ut8_t + + mpe_num +; + +161 } + g__e_che_igd +; + +163 #ifde +VNF_ACL + + +165  + #MAX_NUM_ARP_ENTRIES + 64 + + ) + +166  + #MAX_NUM_ND_ENTRIES + 64 + + ) + +169  +lib_nd_rou_b_y + + glib_nd_rou_b +[ +MAX_ND_RT_ENTRY +] = { + +204  +lib_p_rou_b_y + + glib_p_rou_b +[ +MAX_ARP_RT_ENTRY +] = { + +227  + $pes_pt_fo +() + +229  +p_ms + * +p + = +myA +; + +230 +ut8_t + +i +, +pe +; + +231  +pe + = 0;< +p +-> +n_pes +;ipeline++) { + +232 + `tf +("*** PIPELINE %d ***\n\n", +pe +); + +234 + `tf +("*** OUTPORTs ***\n"); + +235  +i + = 1; i < +p +-> +pe_ms +[ +pe +]. +n_pktq_out +; + +236 +i +++) { + +237  +p +-> +pe_ms +[ +pe +]. +pktq_out +[ +i +]. + +238 +ty +) { + +239  +APP_PKTQ_OUT_SWQ +: + +240 + `tf +("pktq_out[%d]:%s\n", +i +, + +241 +p +-> +swq_ms +[p-> +pe_ms + + +242 [ +pe +]. + +243 +pktq_out +[ +i +]. +id +]. +me +); + +245  +APP_PKTQ_OUT_HWQ +: + +246 + `tf +("pktq_out[%d]:%s\n", +i +, + +247 +p +-> +hwq_out_ms +[p-> +pe_ms + + +248 [ +pe +]. +pktq_out + + +249 [ +i +]. +id +]. +me +); + +252 + `tf +("Not OUT SWQ or HWQ\n"); + +255 + `tf +("*** INPORTs ***\n"); + +256  +i + = 0; i < +p +-> +pe_ms +[ +pe +]. +n_pktq_ +; i++) { + +257  +p +-> +pe_ms +[ +pe +]. +pktq_ +[ +i +] + +258 . +ty +) { + +259  +APP_PKTQ_IN_SWQ +: + +260 + `tf +("pktq_[%d]:%s\n", +i +, + +261 +p +-> +swq_ms +[p-> +pe_ms + + +262 [ +pe +]. + +263 +pktq_ +[ +i +]. +id +]. +me +); + +265  +APP_PKTQ_IN_HWQ +: + +266 + `tf +("pktq_[%d]:%s\n", +i +, + +267 +p +-> +hwq__ms +[p-> +pe_ms + + +268 [ +pe +]. + +269 +pktq_ +[ +i +]. +id +]. +me +); + +272 + `tf +("Not IN SWQ or HWQ\n"); + +276 + } +} + +278  + $pes_m_fo +() + +280  +i + = 0; + +282 + `tf +("PIPELINE_MAX_PORT_IN %d\n", +PIPELINE_MAX_PORT_IN +); + +283 + `tf +("lb_out_id[%d", +lb_out_id +[0]); + +284  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +285 + `tf +(",%d", +lb_out_id +[ +i +]); + +286 + `tf +("]\n"); + +288 + `tf +("vnf_to_ldb_m[%d", +vnf_to_ldb_m +[0]); + +289  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +290 + `tf +(",%d", +vnf_to_ldb_m +[ +i +]); + +291 + `tf +("]\n"); + +293 + `tf +("pt_to_ldb_m[%d", +pt_to_ldb_m +[0]); + +294  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +295 + `tf +(",%d", +pt_to_ldb_m +[ +i +]); + +296 + `tf +("]\n"); + +298 + `tf +("ldb_pe_nums[%d", +ldb_pe_nums +[0]); + +299  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +300 + `tf +(",%d", +ldb_pe_nums +[ +i +]); + +301 + `tf +("]\n"); + +303 + `tf +("ldb_pe[%p", +ldb_pe +[0]); + +304  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +305 + `tf +(",%p", +ldb_pe +[ +i +]); + +306 + `tf +("]\n"); + +307 + } +} + +309  + $gi_pe_Qs +( +ut8_t + +pe_num +,  +pe + * +p +) + +311  +e_pt_hdev_ad + * +hwq +; + +312  +e_pt_rg_wr + * +out_swq +; + +313  +e_pt_rg_ad + * +_swq +; + +314  +e_pe + * +e + = +p +->p; + +315 +ut8_t + +pt_cou + = 0; + +316  +queue_out + = 0xff, +queue_ + = 0xff; + +318 + `tf +("Clgegi_pe_Q PIPELINE%d\n", +pe_num +); + +319  +pt_cou + = 0;t_cou < +e +-> +num_pts_out +;ort_count++) { + +321  +myA +-> +pe_ms +[ +pe_num +]. + +322 +pktq_out +[ +pt_cou +]. +ty +){ + +324  +APP_PKTQ_OUT_SWQ +: + +326 i( +pt_cou + > +e +-> +num_pts_ +) { + +329 i( +e +-> +num_pts_out + %-> +num_pts_ +) + +330 i( +pt_cou + = +e +-> +num_pts_out + - 1) + +332  +mp +; + +333 +mp + = (( +pt_cou +% +e +-> +num_pts_ +); + +335 +_swq + = +e +-> +pts_ +[ +mp +]. +h_pt +; + +336 +out_swq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +337 + `tf +("in_swq : %s\n", + +338 +_swq +-> +rg +-> +me +); + +339  +us + = + +340 + `ssnf +( +_swq +-> +rg +-> +me +, "SWQ%d", + +341 & +queue_ +); + +342 i( +us + < 0) { + +343 + `tf +("Unableoead SWQumber\n"); + +346 + `tf +("out_swq: %s\n", + +347 +out_swq +-> +rg +-> +me +); + +348 +us + = + +349 + `ssnf +( +out_swq +-> +rg +-> +me +, "SWQ%d", + +350 & +queue_out +); + +351 i( +us + < 0) { + +352 + `tf +("Unableoead SWQumber\n"); + +355 i( +queue_ + < 128 && +queue_out + < 128) { + +356 +SWQ_to_Pt_m +[ +queue_out +] = + +357 +SWQ_to_Pt_m +[ +queue_ +]; + +358 + `tf +("SWQ_to_Pt_m[%d]%d\n", +queue_out +, + +359 +SWQ_to_Pt_m +[ +queue_out +]); + +364  +myA +-> +pe_ms +[ +pe_num +]. + +365 +pktq_ +[ +pt_cou +]. +ty +){ + +367  +APP_PKTQ_OUT_HWQ +: + +368 +hwq + = +e +-> +pts_ +[ +pt_cou +]. +h_pt +; + +369 +out_swq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +370 + `tf +("out_swq: %s\n", + +371 +out_swq +-> +rg +-> +me +); + +372  +us + = + +373 + `ssnf +( +out_swq +-> +rg +-> +me +, "SWQ%d", + +374 & +queue_out +); + +376 i( +us + < 0) { + +377 + `tf +("Unableoead SWQumber\n"); + +380 i( +queue_out + < 128) { + +381 +SWQ_to_Pt_m +[ +queue_out +] = +hwq +-> +pt_id +; + +382 + `tf +("SWQ_to_Pt_m[%d]%d\n", +queue_out +, + +383 +SWQ_to_Pt_m +[ +queue_out +]); + +387  +APP_PKTQ_OUT_SWQ +: + +388 +_swq + = +e +-> +pts_ +[ +pt_cou +]. +h_pt +; + +389 +out_swq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +390 + `tf +("in_swq : %s\n", + +391 +_swq +-> +rg +-> +me +); + +392 +us + = + +393 + `ssnf +( +_swq +-> +rg +-> +me +, "SWQ%d", + +394 & +queue_ +); + +395 i( +us + < 0) { + +396 + `tf +("Unableoead SWQumber\n"); + +399 + `tf +("out_swq: %s\n", + +400 +out_swq +-> +rg +-> +me +); + +401 +us + = + +402 + `ssnf +( +out_swq +-> +rg +-> +me +, "SWQ%d", + +403 & +queue_out +); + +404 i( +us + < 0) { + +405 + `tf +("Unableoead SWQumber\n"); + +408 i( +queue_ + < 128 && +queue_out + < 128){ + +409 +SWQ_to_Pt_m +[ +queue_out +] = + +410 +SWQ_to_Pt_m +[ +queue_ +]; + +411 + `tf +("SWQ_to_Pt_m[%d]%d\n", +queue_out +, + +412 +SWQ_to_Pt_m +[ +queue_out +]); + +417 + `tf +("Thisever hits\n"); + +422  +APP_PKTQ_OUT_HWQ +: + +423 + `tf +("This is HWQ\n"); + +427 + `tf +("set_phy_outport_map: Thisever hits\n"); + +430 + } +} + +432  + $t_lk_m +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +) + +434  +e_pt_hdev_wr + * +hwq +; + +435  +e_pt_rg_wr + * +out_swq +; + +436  +e_pe + * +e + = +p +->p; + +438 +ut8_t + +pt_cou + = 0; + +439  +dex + = 0, +queue_out + = 0xff; + +441 + `tf +("Clg s_lk_m iPIPELINE%d\n", +pe_num +); + +442  +pt_cou + = 0;t_cou < +e +-> +num_pts_out +;ort_count++) { + +444  +myA +-> +pe_ms +[ +pe_num +]. + +445 +pktq_out +[ +pt_cou +]. +ty +){ + +447  +APP_PKTQ_OUT_HWQ +: + +448 +hwq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +449 +m +[ +dex +++] = +hwq +-> +pt_id +; + +450 + `tf +("lks_m[%d]:%d\n", +dex + - 1, +m +[index - 1]); + +453  +APP_PKTQ_OUT_SWQ +: + +454 +out_swq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +455 + `tf +("set_link_map out_swq: %s\n", + +456 +out_swq +-> +rg +-> +me +); + +457  +us + = + `ssnf +( +out_swq +-> +rg +-> +me +, "SWQ%d", + +458 & +queue_out +); + +459 i( +us + < 0) { + +460 + `tf +("Unableoead SWQumber\n"); + +464 i( +queue_out + < 128) { + +465 +m +[ +dex +++] = +SWQ_to_Pt_m +[ +queue_out +]; + +466 + `tf +("lks_m[%s]:%d\n", +out_swq +-> +rg +-> +me +, + +467 +m +[ +dex + - 1]); + +472 + `tf +("set_phy_outport_map: Thisever hits\n"); + +475 + } +} + +477  + $t_out_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +) + +479 +ut8_t + +pt_cou + = 0; + +480  +queue_out + = 0xff, +dex + = 0; + +482  +e_pt_hdev_wr + * +hwq +; + +483  +e_pt_rg_wr + * +out_swq +; + +484  +e_pe + * +e + = +p +->p; + +486 + `tf +("\n**** set_outport_id() withipeline_num:%d ****\n\n", + +487 +pe_num +); + +488  +pt_cou + = 0; + +489 +pt_cou + < +e +-> +num_pts_out +; + +490 +pt_cou +++) { + +492  +myA +-> +pe_ms +[ +pe_num +]. + +493 +pktq_out +[ +pt_cou +]. +ty +) { + +495  +APP_PKTQ_OUT_HWQ +: + +496 +hwq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +499 +m +[ +hwq +-> +pt_id +] = +dex +; + +500 + `tf +("hwqort_id:%d index:%d\n", + +501 +hwq +-> +pt_id +, +dex +); + +502 +m +[ +hwq +-> +pt_id +] = +dex +++; + +503 + `tf +("hwqort_id:%d index:%d\n", + +504 +hwq +-> +pt_id +, +dex +-1); + +505 + `tf +("out_id[%d]:%d\n", +dex + - 1, + +506 +m +[ +dex + - 1]); + +510  +APP_PKTQ_OUT_SWQ +: + +513 i( +pt_cou + > +e +-> +num_pts_ +) + +514 i( +e +-> +num_pts_out + %-> +num_pts_ +) + +515 i( +pt_cou + = +e +-> +num_pts_out + - 1) + +517 +out_swq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +518 + `tf +("set_outport_id out_swq: %s\n", + +519 +out_swq +-> +rg +-> +me +); + +520  +mp + = + `ssnf +( +out_swq +-> +rg +-> +me +, "SWQ%d", + +521 & +queue_out +); + +522 i( +mp + < 0) { + +523 + `tf +("Unableoead SWQumber\n"); + +527 i( +queue_out + < 128 && +dex + >= 0) { + +528 +m +[ +SWQ_to_Pt_m +[ +queue_out +]] = +dex +++; + +529 + `tf +("out_id[%s]:%d\n", +out_swq +-> +rg +-> +me +, + +530 +m +[ +SWQ_to_Pt_m +[ +queue_out +]]); + +535 + `tf +(" "); + +539 + } +} + +541  + $t_phy_out_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +) + +543 +ut8_t + +pt_cou + = 0; + +544  +dex + = 0; + +546  +e_pt_hdev_wr + * +hwq +; + +547  +e_pe + * +e + = +p +->p; + +549 + `tf +("\n**** set_phy_outport_id() withipeline_num:%d ****\n\n", + +550 +pe_num +); + +551  +pt_cou + = 0; + +552 +pt_cou + < +myA +-> +pe_ms +[ +pe_num +]. +n_pktq_out +; + +553 +pt_cou +++) { + +555  +myA +-> +pe_ms +[ +pe_num +]. + +556 +pktq_out +[ +pt_cou +]. +ty +) { + +558  +APP_PKTQ_OUT_HWQ +: + +559 +hwq + = +e +-> +pts_out +[ +pt_cou +]. +h_pt +; + +560 +m +[ +hwq +-> +pt_id +] = +dex +++; + +561 + `tf +("out_id[%d]:%d\n", +dex + - 1, + +562 +m +[ +dex + - 1]); + +566 + `tf +(" "); + +570 + } +} + +572  + $t_phy_pt_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +) + +574 +ut8_t + +pt_cou + = 0; + +575  +dex + = 0; + +577  +e_pt_hdev_ad + * +hwq +; + +578  +e_pe + * +e + = +p +->p; + +580 + `tf +("\n**** set_phy_inport_id() withipeline_num:%d ****\n\n", + +581 +pe_num +); + +582  +pt_cou + = 0; + +583 +pt_cou + < +myA +-> +pe_ms +[ +pe_num +]. +n_pktq_ +; + +584 +pt_cou +++) { + +586  +myA +-> +pe_ms +[ +pe_num +]. + +587 +pktq_ +[ +pt_cou +]. +ty +) { + +589  +APP_PKTQ_OUT_HWQ +: + +590 +hwq + = +e +-> +pts_ +[ +pt_cou +]. +h_pt +; + +591 +m +[ +hwq +-> +pt_id +] = +dex +++; + +592 + `tf +("out_id[%d]:%d\n", +dex + - 1, + +593 +m +[ +dex + - 1]); + +597 + `tf +(" "); + +601 + } +} + +603 #ifde +VNF_ACL + + +605 +ut32_t + + $g_nh +( +ut32_t + + +, ut32_* +pt +) + +607  +i + = 0; + +608  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +609 i((( +lib_p_rou_b +[ +i +]. + +610 + + & +lib_p_rou_b +[ +i +]. +mask +) == + +611 ( + + & +lib_p_rou_b +[ +i +]. +mask +))) { + +613 * +pt + = +lib_p_rou_b +[ +i +].port; + +614 +lib_p_nh_found +++; + +615  +lib_p_rou_b +[ +i +]. +nh +; + +617 i( +ARPICMP_DEBUG + > 1) + +618 + `tf +("Noh match ip 0x%x,ort %u,_ip " + +620 + +, * +pt +, +lib_p_rou_b +[ +i +].ip, + +621 +lib_p_rou_b +[ +i +]. +pt +, + +622 +lib_p_rou_b +[ +i +]. +mask +, + +623 ( +lib_p_rou_b +[ +i +]. + + & + +624 +lib_p_rou_b +[ +i +]. +mask +), + +625 ( + + & +lib_p_rou_b +[ +i +]. +mask +)); + +627 i( +ARPICMP_DEBUG + && + +) + +628 + `tf +("NNH - i0x%x,܈%u\n", + +, * +pt +); + +629 +lib_p_no_nh_found +++; + +631 + } +} + +634  + $g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pt +, ut8_ +nhv6 +[]) + +636  +i + = 0; + +637 +ut8_t + +tmask_v6 +[16], +t_nd +[16], +t_ +[16]; + +638 +ut8_t + +k + = 0, +l + = 0, +dthags + = 0, +dthags1 + = 0; + +639 + `memt +( +tmask_v6 +, 0, (netmask_ipv6)); + +640 + `memt +( +t_nd +, 0, (netip_nd)); + +641 + `memt +( +t_ +, 0, (netip_in)); + +642 i(! +v6 +) + +644  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +646 + `cvt_efixn_to_tmask_v6 +( + +647 +lib_nd_rou_b +[ +i +]. +dth +, + +648 +tmask_v6 +); + +650  +k + = 0; k < 16; k++) { + +651 i( +lib_nd_rou_b +[ +i +]. +v6 +[ +k +] & +tmask_v6 +[k]) { + +652 +dthags +++; + +653 +t_nd +[ +k +] = +lib_nd_rou_b +[ +i +]. +v6 +[k]; + +657  +l + = 0; < 16;++) { + +658 i( +v6 +[ +l +] & +tmask_v6 +[l]) { + +659 +dthags1 +++; + +660 +t_ +[ +l +] = +v6 +[l]; + +663  +j + = 0; + +664 i(( +dthags + = +dthags1 +) + +665 && ( + `memcmp +( +t_nd +, +t_ +, + +666 ( +t_nd +)) == 0)) { + +668 * +pt + = +lib_nd_rou_b +[ +i +].port; + +669 +lib_nd_nh_found +++; + +671  +j + = 0; j < 16; j++) + +672 +nhv6 +[ +j +] = +lib_nd_rou_b +[ +i +].nhipv6[j]; + +677 i( +NDIPV6_DEBUG + > 1) + +678 + `tf +("Noh match\n"); + +679 +dthags + = 0; + +680 +dthags1 + = 0; + +682 i( +NDIPV6_DEBUG + && +v6 +) + +683 + `tf +("NNH - i0x%x,܈%u\n", +v6 +[0], * +pt +); + +684 +lib_nd_no_nh_found +++; + +685 + } +} + +688  + $g_de_mac_addr_pt +(cڡ +ut32_t + +addr +, + +689 +ut32_t + * +phy_pt +,  +h_addr + * +hw_addr +) + +691 +lib_p_g_mac_q +++; + +692 +ut32_t + +nh + = 0; + +694 +nh + = + `g_nh +( +addr +, +phy_pt +); + +695 i( +nh + == 0) { + +696 i( +ARPICMP_DEBUG + && +addr +) + +697 + `tf +("ARPICMPoh found for ip %x,ort %d\n", + +698 +addr +, * +phy_pt +); + +700  +NH_NOT_FOUND +; + +703  +p_y_da + * +t_p_da + = +NULL +; + +704  +p_key_v4 + +tmp_p_key +; + +705 +tmp_p_key +. +pt_id + = * +phy_pt +; + +706 +tmp_p_key +. + + = +nh +; + +708 +t_p_da + = + `ve_p_y +( +tmp_p_key +); + +709 i( +t_p_da + = +NULL +) { + +710 i( +ARPICMP_DEBUG + && +addr +) { + +711 +tf + + +713 +addr +, * +phy_pt +); + +714 + `t_p_b +(); + +716 +lib_p_no_p_y_found +++; + +717  +ARP_NOT_FOUND +; + +719 + `h_addr_cy +(& +t_p_da +-> +h_addr +, +hw_addr +); + +720 +lib_p_p_y_found +++; + +721  +ARP_FOUND +; + +722 + } +} + +725  + $g_de_mac_addss_v6 +( +ut8_t + +v6addr +[], +ut32_t + +phy_pt +, + +726  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +728  +i + = 0, +j + = 0, +ag + = 0; + +729 +lib_nd_g_mac_q +++; + +731 i( +v6addr +) + +732 + `g_nh_v6 +( +v6addr +, & +phy_pt +, +nhv6 +); + +733  +j + = 0; j < 16; j++) { + +734 i( +nhv6 +[ +j +]) + +735 +ag +++; + +737 i( +ag + == 0) { + +738 i( +v6addr +) { + +739 i( +NDIPV6_DEBUG + && +v6addr +) + +740 + `tf +("NDIPV6oh found for ipv6 " + +743 +v6addr +[0], ipv6addr[1], ipv6addr[2], ipv6addr[3], + +744 +v6addr +[4], ipv6addr[5], ipv6addr[6], ipv6addr[7], + +745 +v6addr +[8], ipv6addr[9], ipv6addr[10], + +746 +v6addr +[11], ipv6addr[12], ipv6addr[13], + +747 +v6addr +[14], ipv6addr[15], +phy_pt +); + +752  +nd_y_da + * +t_nd_da + = +NULL +; + +753  +nd_key_v6 + +tmp_nd_key +; + +754 +tmp_nd_key +. +pt_id + = +phy_pt +; + +756  +i + = 0; i < 16; i++) + +757 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +759 +t_nd_da + = + `ve_nd_y +( +tmp_nd_key +); + +760 i( +t_nd_da + = +NULL +) { + +761 i( +NDIPV6_DEBUG + && +v6addr +) { + +762 + `tf +("NDIPV6odntry found for ip %x,ort %d\n", + +763 +v6addr +[0], +phy_pt +); + +765 +lib_nd_no_p_y_found +++; + +768 + `h_addr_cy +(& +t_nd_da +-> +h_addr +, +hw_addr +); + +769 +lib_nd_nd_y_found +++; + +772 + } +} + +775  + $g_de_mac_addss_v6_pt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +776  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +778  +i + = 0, +j + = 0, +ag + = 0; + +779 +lib_nd_g_mac_q +++; + +781 + `g_nh_v6 +( +v6addr +, +phy_pt +, +nhv6 +); + +782  +j + = 0; j < 16; j++) { + +783 i( +nhv6 +[ +j +]) + +784 +ag +++; + +786 i( +ag + == 0) { + +787 i( +NDIPV6_DEBUG + && +v6addr +) + +788 + `tf +("NDIPV6oh found for ipv6 " + +791 +v6addr +[0], ipv6addr[1], ipv6addr[2], ipv6addr[3], + +792 +v6addr +[4], ipv6addr[5], ipv6addr[6], ipv6addr[7], + +793 +v6addr +[8], ipv6addr[9], ipv6addr[10], + +794 +v6addr +[11], ipv6addr[12], ipv6addr[13], + +795 +v6addr +[14], ipv6addr[15], * +phy_pt +); + +799  +nd_y_da + * +t_nd_da + = +NULL +; + +800  +nd_key_v6 + +tmp_nd_key +; + +801 +tmp_nd_key +. +pt_id + = * +phy_pt +; + +803  +i + = 0; i < 16; i++) + +804 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +806 +t_nd_da + = + `ve_nd_y +( +tmp_nd_key +); + +807 i( +t_nd_da + = +NULL +) { + +808 i( +NDIPV6_DEBUG + && +v6addr +) { + +809 + `tf +("NDIPV6odntry found for ip %x,ort %d\n", + +810 +v6addr +[0], * +phy_pt +); + +812 +lib_nd_no_p_y_found +++; + +815 + `h_addr_cy +(& +t_nd_da +-> +h_addr +, +hw_addr +); + +816 +lib_nd_nd_y_found +++; + +819 + } +} + +824  + slib_p_p_b_y + { + +825  +e_pe_b_y + + mhd +; + +826 +ut64_t + + mmaddr +; + +829 cڡ * + $p__me +( +ut16_t + +p_ +) + +831  + `CHECK_ENDIAN_16 +( +p_ +)) { + +832 ( +ARP_OP_REQUEST +): + +834 ( +ARP_OP_REPLY +): + +836 ( +ARP_OP_REVREQUEST +): + +838 ( +ARP_OP_REVREPLY +): + +840 ( +ARP_OP_INVREQUEST +): + +842 ( +ARP_OP_INVREPLY +): + +848 + } +} + +850  + $t_icmp_ck +( +icmp_hdr + * +icmp_h +) + +852 + `tf +(" ICMP:ype=%d (%s) code=%d id=%d seqnum=%d\n", + +853 +icmp_h +-> +icmp_ty +, + +854 ( +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REPLY + ? "Reply" : + +855 ( +icmp_h +-> +icmp_ty + == + +856 +IP_ICMP_ECHO_REQUEST + ? "Reqe" : "Undef")), +icmp_h +-> +icmp_code +, + +857 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_idt +), + +858 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_q_nb +)); + +859 + } +} + +861  + $t_v4_h +( +v4_hdr + * +_h +) + +863  +icmp_hdr + * +icmp_h + = + +864 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +865 + `tf +(" IPv4: Version=%d HLEN=%d Type=%d Length=%d\n", + +866 ( +_h +-> +vsi_ihl + & 0xf0) >> 4, (ip_h->version_ihl & 0x0f), + +867 +_h +-> +ty_of_rvi +, + `e_u_to_be_16 +(_h-> +tٮ_ngth +)); + +868 i( +_h +-> +xt_o_id + = +IPPROTO_ICMP +) + +869 + `t_icmp_ck +( +icmp_h +); + +870 + } +} + +872  + $t_p_ck +( +p_hdr + * +p_h +) + +874 + `tf +(" ARP: hrd=%droto=0x%04x hln=%d " + +876 + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +), + +877 + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +),_h-> +p_h +, + +878 +p_h +-> +p_n +, + `CHECK_ENDIAN_16 +׽_h-> +p_ +), + +879 + `p__me +( +p_h +-> +p_ +)); + +881 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +! +ARP_HRD_ETHER +) { + +882 + `tf +("incorrectrp_hrd format for IPv4 ARP (%d)\n", + +883 ( +p_h +-> +p_hrd +)); + +884 } i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +! +ETHER_TYPE_IPv4 +) { + +885 + `tf +("incorrectrp_pro format for IPv4 ARP (%d)\n", + +886 ( +p_h +-> +p_o +)); + +887 } i( +p_h +-> +p_h + != 6) { + +888 + `tf +("incorrectrp_hln format for IPv4 ARP (%d)\n", + +889 +p_h +-> +p_h +); + +890 } i( +p_h +-> +p_n + != 4) { + +891 + `tf +("incorrectrp_pln format for IPv4 ARP (%d)\n", + +892 +p_h +-> +p_n +); + +895 + `tf +(" sha=%02X:%02X:%02X:%02X:%02X:%02X", + +896 +p_h +-> +p_da +. +p_sha +. +addr_bys +[0], + +897 +p_h +-> +p_da +. +p_sha +. +addr_bys +[1], + +898 +p_h +-> +p_da +. +p_sha +. +addr_bys +[2], + +899 +p_h +-> +p_da +. +p_sha +. +addr_bys +[3], + +900 +p_h +-> +p_da +. +p_sha +. +addr_bys +[4], + +901 +p_h +-> +p_da +. +p_sha +. +addr_bys +[5]); + +902 + `tf +(" sip=%d.%d.%d.%d\n", + +903 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 24) & 0xFF, + +904 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 16) & 0xFF, + +905 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) >> 8) & 0xFF, + +906 + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_s +) & 0xFF); + +907 + `tf +("ha=%02X:%02X:%02X:%02X:%02X:%02X", + +908 +p_h +-> +p_da +. +p_tha +. +addr_bys +[0], + +909 +p_h +-> +p_da +. +p_tha +. +addr_bys +[1], + +910 +p_h +-> +p_da +. +p_tha +. +addr_bys +[2], + +911 +p_h +-> +p_da +. +p_tha +. +addr_bys +[3], + +912 +p_h +-> +p_da +. +p_tha +. +addr_bys +[4], + +913 +p_h +-> +p_da +. +p_tha +. +addr_bys +[5]); + +914 + `tf +("ip=%d.%d.%d.%d\n", + +915 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 24) & 0xFF, + +916 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 16) & 0xFF, + +917 ( + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) >> 8) & 0xFF, + +918 + `CHECK_ENDIAN_32 +( +p_h +-> +p_da +. +p_t +) & 0xFF); + +920 + } +} + +922  + $t_h +( +h_hdr + * +h_h +) + +924 + `tf +(" ETH: src=%02X:%02X:%02X:%02X:%02X:%02X", + +925 +h_h +-> +s_addr +. +addr_bys +[0], + +926 +h_h +-> +s_addr +. +addr_bys +[1], + +927 +h_h +-> +s_addr +. +addr_bys +[2], + +928 +h_h +-> +s_addr +. +addr_bys +[3], + +929 +h_h +-> +s_addr +. +addr_bys +[4],th_h->s_addr.addr_bytes[5]); + +930 + `tf +(" dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + +931 +h_h +-> +d_addr +. +addr_bys +[0], + +932 +h_h +-> +d_addr +. +addr_bys +[1], + +933 +h_h +-> +d_addr +. +addr_bys +[2], + +934 +h_h +-> +d_addr +. +addr_bys +[3], + +935 +h_h +-> +d_addr +. +addr_bys +[4],th_h->d_addr.addr_bytes[5]); + +937 + } +} + +940 + $t_mbuf +(cڡ * +rx_tx +,  +ptid +,  +e_mbuf + * +mbuf +, + +941  +le +) + +943  +h_hdr + * +h_h + = + `e_pktmbuf_mtod +( +mbuf +, ether_hdr *); + +944  +p_hdr + * +p_h + = + +945 ( +p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +946  +v4_hdr + * +v4_h + = + +947 ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +949 + `tf +("%s(%d): onort %dkt-len=%ub-segs=%u\n", + +950 +rx_tx +, +le +, +ptid +, +mbuf +-> +pkt_n +, mbuf-> +nb_gs +); + +951 + `t_h +( +h_h +); + +952  + `e_u_to_be_16 +( +h_h +-> +h_ty +)) { + +953  +ETHER_TYPE_IPv4 +: + +954 + `t_v4_h +( +v4_h +); + +956  +ETHER_TYPE_ARP +: + +957 + `t_p_ck +( +p_h +); + +960 + `tf +(" unknownacketype\n"); + +963 + `fush +( +dout +); + +964 + } +} + +966  +p_y_da + * + $ve_p_y +( +p_key_v4 + +p_key +) + +968  +p_y_da + * +t_p_da + = +NULL +; + +969 +p_key +. +fr1 + = 0; + +970 +p_key +. +fr2 + = 0; + +971 +p_key +. +fr3 + = 0; + +973  +t + = + `e_hash_lookup_da +( +p_hash_hd +, & +p_key +, + +974 (**)& +t_p_da +); + +975 i( +t + < 0) { + +976 i( +ARPICMP_DEBUG +) + +977 + `tf +("arp-hashookup failedet %d, " + +979 +t +, +EINVAL +, +ENOENT +); + +981  +t_p_da +; + +984  +NULL +; + +985 + } +} + +993  +nd_y_da + * + $ve_nd_y +( +nd_key_v6 + +nd_key +) + +995  +nd_y_da + * +t_nd_da + = +NULL +; + +996 +nd_key +. +fr1 + = 0; + +997 +nd_key +. +fr2 + = 0; + +998 +nd_key +. +fr3 + = 0; + +1001  +t + = + `e_hash_lookup_da +( +nd_hash_hd +, & +nd_key +, + +1002 (**)& +t_nd_da +); + +1003 i( +t + < 0) { + +1004 i( +NDIPV6_DEBUG +) + +1005 + `tf +("nd-hash:oookup Entry Found - " + +1007 +t +, +EINVAL +, +ENOENT +); + +1009  +t_nd_da +; + +1012  +NULL +; + +1013 + } +} + +1015  + $t_p_b +() + +1017 cڡ * +xt_key +; + +1018 * +xt_da +; + +1019 +ut32_t + + + = 0; + +1021 + `tf +("\tport hwddr status ipddr\n"); + +1023  + `e_hash_e +( +p_hash_hd +, & +xt_key +, & +xt_da +, & + +) + +1026  +p_y_da + * +tmp_p_da + = + +1027 ( +p_y_da + *) +xt_da +; + +1028  +p_key_v4 + +tmp_p_key +; + +1029 + `memy +(& +tmp_p_key +, +xt_key +, ( +p_key_v4 +)); + +1030 +tf + + +1032 +tmp_p_da +-> +pt +,mp_p_da-> +h_addr +. +addr_bys +[0], + +1033 +tmp_p_da +-> +h_addr +. +addr_bys +[1], + +1034 +tmp_p_da +-> +h_addr +. +addr_bys +[2], + +1035 +tmp_p_da +-> +h_addr +. +addr_bys +[3], + +1036 +tmp_p_da +-> +h_addr +. +addr_bys +[4], + +1037 +tmp_p_da +-> +h_addr +. +addr_bys +[5], + +1038 +tmp_p_da +-> +us + == + +1039 +COMPLETE + ? "COMPLETE" : "INCOMPLETE", + +1040 ( +tmp_p_da +-> + + >> 24), + +1041 (( +tmp_p_da +-> + + & 0x00ff0000) >> 16), + +1042 (( +tmp_p_da +-> + + & 0x0000ff00) >> 8), + +1043 (( +tmp_p_da +-> + + & 0x000000ff))); + +1046 +ut32_t + +i + = 0; + +1047 + `tf +("\nARPoutgab ha%drs\n", +p_rou_tbl_dex +); + +1048 + `tf +("\nIP_Address Mask Port NH_IP_Address\n"); + +1049  +i + = 0; i < +p_rou_tbl_dex +; i++) { + +1050 + `tf +("0x%x 0x%x %d 0x%x\n", + +1051 +lib_p_rou_b +[ +i +]. + +, + +1052 +lib_p_rou_b +[ +i +]. +mask +, + +1053 +lib_p_rou_b +[ +i +]. +pt +,ib_p_rou_b[i]. +nh +); + +1056 + `tf +("\nARP Stats: Total Queries %u, ok_NH %u,o_NH %u, " + +1058 +lib_p_g_mac_q +, +lib_p_nh_found +, +lib_p_no_nh_found +, + +1059 +lib_p_p_y_found +, +lib_p_no_p_y_found +, + +1060 +lib_p_puϋ_ed +, +lib_p_de_ed +, + +1061 +lib_p_dui_found +); + +1063 + `tf +("ARPab key i%lu\n", ( +p_key_v4 +)); + +1064 + } +} + +1067  + $t_nd_b +() + +1069 cڡ * +xt_key +; + +1070 * +xt_da +; + +1071 +ut32_t + + + = 0; + +1072 +ut8_t + +ii + = 0, +j + = 0, +k + = 0; + +1074 + `tf +("\tport hwddr status ipddr\n"); + +1076  + `e_hash_e +( +nd_hash_hd +, & +xt_key +, & +xt_da +, & + +) >= + +1079  +nd_y_da + * +tmp_nd_da + = + +1080 ( +nd_y_da + *) +xt_da +; + +1081  +nd_key_v6 + +tmp_nd_key +; + +1082 + `memy +(& +tmp_nd_key +, +xt_key +, ( +nd_key_v6 +)); + +1083 + `tf +("\t%4d %02X:%02X:%02X:%02X:%02X:%02X %10s\n", + +1084 +tmp_nd_da +-> +pt +, + +1085 +tmp_nd_da +-> +h_addr +. +addr_bys +[0], + +1086 +tmp_nd_da +-> +h_addr +. +addr_bys +[1], + +1087 +tmp_nd_da +-> +h_addr +. +addr_bys +[2], + +1088 +tmp_nd_da +-> +h_addr +. +addr_bys +[3], + +1089 +tmp_nd_da +-> +h_addr +. +addr_bys +[4], + +1090 +tmp_nd_da +-> +h_addr +. +addr_bys +[5], + +1091 +tmp_nd_da +-> +us + == + +1092 +COMPLETE + ? "COMPLETE" : "INCOMPLETE"); + +1093 + `tf +("\t\t\t\t\t\t"); + +1094  +ii + = 0; i< +ND_IPV6_ADDR_SIZE +; ii += 2) { + +1095 + `tf +("%02X%02X ", +tmp_nd_da +-> +v6 +[ +ii +], + +1096 +tmp_nd_da +-> +v6 +[ +ii + + 1]); + +1098 + `tf +("\n"); + +1101 +ut32_t + +i + = 0; + +1102 + `tf +("\n\nND IPV6outingable has %dntries\n", + +1103 +nd_rou_tbl_dex +); + +1104 + `tf +("\nIP_Address Depth Port NH_IP_Address\n"); + +1105  +i + = 0; i < +nd_rou_tbl_dex +; i++) { + +1106 + `tf +("\n"); + +1108  +j + = 0; j < +ND_IPV6_ADDR_SIZE +; j += 2) { + +1109 + `tf +("%02X%02X ", +lib_nd_rou_b +[ +i +]. +v6 +[ +j +], + +1110 +lib_nd_rou_b +[ +i +]. +v6 +[ +j + + 1]); + +1113 +tf + + +1115 +lib_nd_rou_b +[ +i +]. +dth +,ib_nd_rou_b[i]. +pt +); + +1116 + `tf +("\t\t\t\t\t\t\t\t\t"); + +1117  +k + = 0; k < +ND_IPV6_ADDR_SIZE +; k += 2) { + +1118 + `tf +("%02X%02X ", +lib_nd_rou_b +[ +i +]. +nhv6 +[ +k +], + +1119 +lib_nd_rou_b +[ +i +]. +v6 +[ +k + + 1]); + +1122 + `tf +("\nND IPV6 Stats:\nTotal Queries %u, ok_NH %u,o_NH %u," + +1124 +lib_nd_g_mac_q +, +lib_nd_nh_found +, +lib_nd_no_nh_found +, + +1125 +lib_nd_nd_y_found +, +lib_nd_no_p_y_found +, + +1126 +lib_nd_puϋ_ed +, +lib_nd_de_ed +, + +1127 +lib_nd_dui_found +); + +1128 + `tf +("NDab key i%lu\n\n", ( +nd_key_v6 +)); + +1129 + } +} + +1131  + $move_p_y +( +ut32_t + +addr +, +ut8_t + +ptid +) + +1136  +p_key_v4 + +p_key +; + +1137 +p_key +. +pt_id + = +ptid +; + +1138 +p_key +. + + = +addr +; + +1139 +p_key +. +fr1 + = 0; + +1140 +p_key +. +fr2 + = 0; + +1141 +p_key +. +fr3 + = 0; + +1143 +lib_p_de_ed +++; + +1145 i( +ARPICMP_DEBUG +) + +1146 + `tf +("move_p_y i%x,܈%d\n", +p_key +. + +, + +1147 +p_key +. +pt_id +); + +1148 + `e_hash_d_key +( +p_hash_hd +, & +p_key +); + +1149 + } +} + +1152  + $move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +ptid +) + +1156  +i + = 0; + +1157  +nd_key_v6 + +nd_key +; + +1158 +nd_key +. +pt_id + = +ptid +; + +1161  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +1162 +nd_key +. +v6 +[ +i +] = +v6addr +[i]; + +1164 +nd_key +. +fr1 + = 0; + +1165 +nd_key +. +fr2 + = 0; + +1166 +nd_key +. +fr3 + = 0; + +1168 +lib_nd_de_ed +++; + +1170 i( +NDIPV6_DEBUG +) { + +1171 + `tf +("Deleteste hashabledntry forort %d ipv6=", + +1172 +nd_key +. +pt_id +); + +1173  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) + +1174 + `tf +("%02X%02X ", +nd_key +. +v6 +[ +i +],d_key.ipv6[i + 1]); + +1176 + `e_hash_d_key +( +nd_hash_hd +, & +nd_key +); + +1177 + } +} + +1180 + $puϋ_p_y +(cڡ  +h_addr + * +hw_addr +, +ut32_t + +addr +, + +1181 +ut8_t + +ptid +) + +1185  +p_key_v4 + +p_key +; + +1186 +p_key +. +pt_id + = +ptid +; + +1187 +p_key +. + + = +addr +; + +1188 +p_key +. +fr1 + = 0; + +1189 +p_key +. +fr2 + = 0; + +1190 +p_key +. +fr3 + = 0; + +1192 +lib_p_puϋ_ed +++; + +1194 i( +ARPICMP_DEBUG +) + +1195 + `tf +("puϋ_p_y i%x,܈%d\n", +p_key +. + +, + +1196 +p_key +. +pt_id +); + +1197  +p_y_da + * +w_p_da + = + `ve_p_y +( +p_key +); + +1198 i( +w_p_da + + +1199 && + `is_me_h_addr +(& +w_p_da +-> +h_addr +, +hw_addr +)) { + +1200 i( +ARPICMP_DEBUG +) + +1201 + `tf +("p_yxi%x,܈%d\n", +p_key +. + +, + +1202 +p_key +. +pt_id +); + +1203 +lib_p_dui_found +++; + +1206 +w_p_da + = ( +p_y_da + *) + +1207 + `mloc +(( +p_y_da +)); + +1208 i( +w_p_da + = +NULL +) { + +1209 + `tf +("populate_arp_entry:new_arp_data is NULL\n"); + +1212 +w_p_da +-> +h_addr + = * +hw_addr +; + +1213 +w_p_da +-> +us + = +INCOMPLETE +; + +1214 +w_p_da +-> +pt + = +ptid +; + +1215 +w_p_da +-> + + = +addr +; + +1216 + `e_hash_add_key_da +( +p_hash_hd +, & +p_key +, +w_p_da +); + +1218 i( +ARPICMP_DEBUG +) { + +1220 + `tf +("\tARP:able update - hwaddr= " + +1223 +w_p_da +-> +h_addr +. +addr_bys +[0], + +1224 +w_p_da +-> +h_addr +. +addr_bys +[1], + +1225 +w_p_da +-> +h_addr +. +addr_bys +[2], + +1226 +w_p_da +-> +h_addr +. +addr_bys +[3], + +1227 +w_p_da +-> +h_addr +. +addr_bys +[4], + +1228 +w_p_da +-> +h_addr +. +addr_bys +[5], + +1229 ( +p_key +. + + >> 24), + +1230 (( +p_key +. + + & 0x00ff0000) >> 16), + +1231 (( +p_key +. + + & 0x0000ff00) >> 8), + +1232 (( +p_key +. + + & 0x000000ff)), +ptid +); + +1234 + `puts +(""); + +1236 + } +} + +1245 + $puϋ_nd_y +(cڡ  +h_addr + * +hw_addr +, +ut8_t + +v6 +[], + +1246 +ut8_t + +ptid +) + +1251 +ut8_t + +i +; + +1252  +nd_key_v6 + +nd_key +; + +1253 +nd_key +. +pt_id + = +ptid +; + +1255  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++ ) + +1256 +nd_key +. +v6 +[ +i +] = ipv6[i]; + +1258 + `tf +("\n"); + +1259 +nd_key +. +fr1 + = 0; + +1260 +nd_key +. +fr2 + = 0; + +1261 +nd_key +. +fr3 + = 0; + +1263 +lib_nd_puϋ_ed +++; + +1268  +nd_y_da + * +w_nd_da + = + `ve_nd_y +( +nd_key +); + +1270 i( +w_nd_da + && + `is_me_h_addr +(&w_nd_da-> +h_addr +, + +1271 +hw_addr +)) { + +1273 i( +NDIPV6_DEBUG +) { + +1274 + `tf +("nd_entryxistsort %d ipv6 = ", + +1275 +nd_key +. +pt_id +); + +1276  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1278 + `tf +("%02X%02X ", +nd_key +. +v6 +[ +i +], + +1279 +nd_key +. +v6 +[ +i + + 1]); + +1283 +lib_nd_dui_found +++; + +1284 i( +NDIPV6_DEBUG +) + +1285 + `tf +("nd_entryxists\n"); + +1289 +w_nd_da + = ( +nd_y_da + *) + +1290 + `mloc +(( +nd_y_da +)); + +1291 i( +w_nd_da + = +NULL +) { + +1292 + `tf +("populate_nd_entry:ew_nd_data is NULL\n"); + +1295 +w_nd_da +-> +h_addr + = * +hw_addr +; + +1296 +w_nd_da +-> +us + = +COMPLETE +; + +1297 +w_nd_da +-> +pt + = +ptid +; + +1299 i( +NDIPV6_DEBUG +) + +1300 + `tf +("populate_nd_entry ipv6="); + +1302  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++ ) + +1303 +w_nd_da +-> +v6 +[ +i +] = ipv6[i]; + +1305 i( +NDIPV6_DEBUG +) { + +1306  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1308 + `tf +("%02X%02X ", +w_nd_da +-> +v6 +[ +i +], + +1309 +w_nd_da +-> +v6 +[ +i + + 1]); + +1314 + `e_hash_add_key_da +( +nd_hash_hd +, & +nd_key +, +w_nd_da +); + +1316 i( +NDIPV6_DEBUG +) + +1317 + `tf +("\n....Added key-dataairtte hashable " + +1320 i( +NDIPV6_DEBUG +) { + +1322 + `tf +("\tND:able update - hwaddr= " + +1324 +w_nd_da +-> +h_addr +. +addr_bys +[0], + +1325 +w_nd_da +-> +h_addr +. +addr_bys +[1], + +1326 +w_nd_da +-> +h_addr +. +addr_bys +[2], + +1327 +w_nd_da +-> +h_addr +. +addr_bys +[3], + +1328 +w_nd_da +-> +h_addr +. +addr_bys +[4], + +1329 +w_nd_da +-> +h_addr +. +addr_bys +[5], +ptid +); + +1330 + `tf +("\tipv6="); + +1331  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1332 +w_nd_da +-> +v6 +[ +i +] = ipv6[i]; + +1333 + `tf +("%02X%02X ", +w_nd_da +-> +v6 +[ +i +], + +1334 +w_nd_da +-> +v6 +[ +i + + 1]); + +1337 + `tf +("\n"); + +1339 + `puts +(""); + +1342 + } +} + +1344  + $t_pkt1 +( +e_mbuf + * +pkt +) + +1346 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, 0); + +1347  +i + = 0, +j + = 0; + +1348 + `tf +("\nPacket Contents...\n"); + +1349  +i + = 0; i < 20; i++) { + +1350  +j + = 0; j < 20; j++) + +1351 + `tf +("%02x ", +rd +[(20 * +i ++ +j +]); + +1352 + `tf +("\n"); + +1354 + } +} + +1356  +h_addr + + gbrd_h_addr + = { + +1357 . +addr_bys +[0] = 0xFF, + +1358 . + gaddr_bys +[1] = 0xFF, + +1359 . + gaddr_bys +[2] = 0xFF, + +1360 . + gaddr_bys +[3] = 0xFF, + +1361 . + gaddr_bys +[4] = 0xFF, + +1362 . + gaddr_bys +[5] = 0xFF, + +1365 cڡ  +h_addr + + gnu_h_addr + = { + +1366 . +addr_bys +[0] = 0x00, + +1367 . + gaddr_bys +[1] = 0x00, + +1368 . + gaddr_bys +[2] = 0x00, + +1369 . + gaddr_bys +[3] = 0x00, + +1370 . + gaddr_bys +[4] = 0x00, + +1371 . + gaddr_bys +[5] = 0x00, + +1374  + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1375  +h_addr + + glk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1376 {. +addr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1377 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1378 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1379 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1380 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1381 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1382 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1383 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1384 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1385 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1386 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1387 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1388 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1389 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1390 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1391 {. + gaddr_bys + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1394  +h_addr + * + $g_lk_hw_addr +( +ut8_t + +out_pt +) + +1396  & +lk_hw_addr +[ +out_pt +]; + +1397 + } +} + +1400 + $que_icmp_echo +( +pt_id +, +ut32_t + + +,  +h_addr + * +gw_addr +) + +1402  +h_hdr + * +h_h +; + +1403  +v4_hdr + * +_h +; + +1404  +icmp_hdr + * +icmp_h +; + +1406  +p_lk_ms + * +lk +; + +1407 +lk + = & +myA +-> +lk_ms +[ +pt_id +]; + +1408 +p_pt_addss +[ +pt_id +]. + + = +lk +->ip; + +1409 +p_pt_addss +[ +pt_id +]. +mac_addr + = +lk +->mac_addr; + +1411  +e_mbuf + * +icmp_pkt + = +lib_p_pkt +; + +1412 i( +icmp_pkt + = +NULL +) { + +1413 i( +ARPICMP_DEBUG +) + +1414 + `tf +("Errorllocating icmp_pktte_mbuf\n"); + +1418 +h_h + = + `e_pktmbuf_mtod +( +icmp_pkt +,  +h_hdr + *); + +1419 + `h_addr_cy +( +gw_addr +, & +h_h +-> +d_addr +); + +1420 + `h_addr_cy +(( +h_addr + *) + +1421 & +p_pt_addss +[ +pt_id +]. +mac_addr +, & +h_h +-> +s_addr +); + +1422 +h_h +-> +h_ty + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_IPv4 +); + +1424 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1425 +icmp_h + = ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1427 +_h +-> +vsi_ihl + = +IP_VHL_DEF +; + +1428 +_h +-> +ty_of_rvi + = 0; + +1429 +_h +-> +tٮ_ngth + = + +1430 + `e_u_to_be_16 +(( +v4_hdr ++ ( +icmp_hdr +)); + +1431 +_h +-> +ck_id + = 0xaabb; + +1432 +_h +-> +agmt_offt + = 0x0000; + +1433 +_h +-> +time_to_live + = 64; + +1434 +_h +-> +xt_o_id + = +IPPROTO_ICMP +; + +1435 +_h +-> +c_addr + = + `e_bsw32 +( +p_pt_addss +[ +pt_id +]. + +); + +1436 +_h +-> +d_addr + = + +; + +1438 +_h +-> +hdr_checksum + = 0; + +1439 +_h +-> +hdr_checksum + = + `e_v4_cksum +(ip_h); + +1441 +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REQUEST +; + +1442 +icmp_h +-> +icmp_code + = 0; + +1443 +icmp_h +-> +icmp_idt + = 0xdead; + +1444 +icmp_h +-> +icmp_q_nb + = 0xbeef; + +1446 +icmp_h +-> +icmp_cksum + = ~ + `e_w_cksum +(icmp_h, ( +icmp_hdr +)); + +1448 +icmp_pkt +-> +pkt_n + = + +1449 ( +h_hdr ++ ( +v4_hdr +) + + +1450 ( +icmp_hdr +); + +1451 +icmp_pkt +-> +da_n + = icmp_pkt-> +pkt_n +; + +1453 i( +ARPICMP_DEBUG +) { + +1454 + `tf +("Sendingchoequest\n"); + +1455 + `t_mbuf +("TX", +pt_id +, +icmp_pkt +, +__LINE__ +); + +1458 + `e_pe_pt_out_ck_ +( +gp_p +-> +p +.p, + +1459 +gp_p +-> +out_id +[ +pt_id +], +icmp_pkt +); + +1460 +gp_p +-> +PktCou +++; + +1461 + } +} + +1463  + $que_echo +( +pt_id +, +ut32_t + + +) + +1465 () +pt_id +; + +1466 () + +; + +1468  +h_addr + +gw_addr +; + +1469 +ut32_t + +de_ + = + `e_bsw32 +( + +); + +1470 +ut32_t + +phy_pt +; + +1472 i( + `g_de_mac_addr_pt +( +de_ +, & +phy_pt +, & +gw_addr += +ARP_FOUND +) { + +1473 + `que_icmp_echo +( +phy_pt +, + +, & +gw_addr +); + +1477 i( +ARPICMP_DEBUG +) + +1478 + `tf +("Sendingchoequest ... get mac failed.\n"); + +1479 + } +} + +1481  + $que_p +( +ut8_t + +pt_id +, +ut32_t + + +,  +e_pe + * +e_p +) + +1483 () +pt_id +; + +1484 () + +; + +1486  +h_hdr + * +h_h +; + +1487  +p_hdr + * +p_h +; + +1489  +p_lk_ms + * +lk +; + +1490 +lk + = & +myA +-> +lk_ms +[ +pt_id +]; + +1491 +p_pt_addss +[ +pt_id +]. + + = +lk +->ip; + +1492 +p_pt_addss +[ +pt_id +]. +mac_addr + = +lk +->mac_addr; + +1494  +e_mbuf + * +p_pkt + = +lib_p_pkt +; + +1496 i( +p_pkt + = +NULL +) { + +1497 i( +ARPICMP_DEBUG +) + +1498 + `tf +("Errorllocatingrp_pktte_mbuf\n"); + +1502 +h_h + = + `e_pktmbuf_mtod +( +p_pkt +,  +h_hdr + *); + +1504 + `h_addr_cy +(& +brd_h_addr +, & +h_h +-> +d_addr +); + +1505 + `h_addr_cy +(( +h_addr + *) + +1506 & +p_pt_addss +[ +pt_id +]. +mac_addr +, & +h_h +-> +s_addr +); + +1507 +h_h +-> +h_ty + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_ARP +); + +1509 +p_h + = ( +p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1510 +p_h +-> +p_hrd + = + `CHECK_ENDIAN_16 +( +ARP_HRD_ETHER +); + +1511 +p_h +-> +p_o + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_IPv4 +); + +1512 +p_h +-> +p_h + = +ETHER_ADDR_LEN +; + +1513 +p_h +-> +p_n + = ( +ut32_t +); + +1514 +p_h +-> +p_ + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +1516 + `h_addr_cy +(( +h_addr + *) + +1517 & +p_pt_addss +[ +pt_id +]. +mac_addr +, + +1518 & +p_h +-> +p_da +. +p_sha +); + +1519 +p_h +-> +p_da +. +p_s + = + +1520 + `e_u_to_be_32 +( +p_pt_addss +[ +pt_id +]. + +); + +1521 + `h_addr_cy +(& +nu_h_addr +, & +p_h +-> +p_da +. +p_tha +); + +1522 +p_h +-> +p_da +. +p_t + = + `e_u_to_be_32 +( + +); + +1523 + `tf +("t:%x s :%x\n", +p_h +-> +p_da +. +p_t +, + +1524 +p_h +-> +p_da +. +p_s +); + +1530 +p_pkt +-> +pkt_n + = 42; + +1531 +p_pkt +-> +da_n + = 42; + +1533 i( +ARPICMP_DEBUG +) { + +1534 + `tf +("Sendingrpequest\n"); + +1535 + `t_mbuf +("TX", +pt_id +, +p_pkt +, +__LINE__ +); + +1538 + `e_pe_pt_out_ck_ +( +e_p +, +pt_id +, +p_pkt +); + +1539 +gp_p +-> +PktCou +++; + +1541 + } +} + +1543  + $que_p_wp +( +ut8_t + +pt_id +, +ut32_t + + +) + +1545 + `que_p +( +pt_id +, + +, +gp_p +-> +p +.p); + +1546 + } +} + +1548  + $oss_picmp_pkt +( + +1549  +e_mbuf + * +pkt +, + +1550 +ut32_t + +out_pt +, + +1551 +ut32_t + +pkt_mask +) + +1553 +ut8_t + +_pt_id + = +pkt +-> +pt +; + +1554  +p_lk_ms + * +lk +; + +1555  +h_hdr + * +h_h +; + +1556  +p_hdr + * +p_h +; + +1557  +v4_hdr + * +_h +; + +1558  +icmp_hdr + * +icmp_h +; + +1559 +ut32_t + +cksum +; + +1560 +ut32_t + +_addr +; + +1561 +ut32_t + +q_t +; + +1564 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +1566 i( +h_h +-> +h_ty + = + `e_u_to_be_16 +( +ETHER_TYPE_ARP +)) { + +1567 +p_h + = + +1568 ( +p_hdr + *)((*) +h_h + + + +1569 ( +h_hdr +)); + +1570 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_hrd +! +ARP_HRD_ETHER +) + +1571 +tf + + +1574 i( + `CHECK_ENDIAN_16 +( +p_h +-> +p_o +! +ETHER_TYPE_IPv4 +) + +1575 +tf + + +1578 i( +p_h +-> +p_h + != 6) + +1579 +tf + + +1582 i( +p_h +-> +p_n + != 4) + +1583 +tf + + +1587 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +1588 +p_pt_addss +[ +_pt_id +]. + + = +lk +->ip; + +1589 +p_pt_addss +[ +_pt_id +]. +mac_addr + = + +1590 +lk +-> +mac_addr +; + +1592 i( +p_h +-> +p_da +. +p_t + != + +1593 + `e_bsw32 +( +p_pt_addss +[ +_pt_id +]. + +)) { + +1594 +tf + + +1597 + `tf +("arp_tip = %x\n", + +1598 +p_h +-> +p_da +. +p_t +); + +1599 + `tf +("arp_port_addresses = %x\n", + +1600 +p_pt_addss +[ +_pt_id +]. + +); + +1601 + `tf +("_pt_id = %x\n", +_pt_id +); + +1602 + `tf +("arp_port_addresses[0] = %x\n", + +1603 +p_pt_addss +[0]. + +); + +1605 + `e_pe_ah_ck_dr +( +gp_p +-> +p +.p, + +1606 +pkt_mask +); + +1607 +gp_p +-> +drݳdPktCou +++; + +1614 i( +p_h +-> +p_ + == + +1615 + `e_u_to_be_16 +( +ARP_OP_REQUEST +)) { + +1617 i( +ARPICMP_DEBUG +) { + +1618 + `tf +("arp_op %d, ARP_OP_REQUEST %d\n", + +1619 +p_h +-> +p_ +, + +1620 + `e_u_to_be_16 +( +ARP_OP_REQUEST +)); + +1621 + `t_mbuf +("RX", +_pt_id +, +pkt +, +__LINE__ +); + +1624 + `puϋ_p_y +(( +h_addr + *) + +1625 & +p_h +-> +p_da +. +p_sha +, + +1626 +e_u_to_be_32 + + +1627 ( +p_h +-> +p_da +. +p_s +), + +1628 +_pt_id +); + +1631 +q_t + = +p_h +-> +p_da +. +p_t +; + +1632 + `h_addr_cy +(& +h_h +-> +s_addr +, &h_h-> +d_addr +); + +1635 + `h_addr_cy +(( +h_addr + *)& + +1636 +p_pt_addss +[ +_pt_id +]. +mac_addr +, + +1637 & +h_h +-> +s_addr +); + +1639 +p_h +-> +p_ + = + `e_u_to_be_16 +( +ARP_OP_REPLY +); + +1640 + `h_addr_cy +(& +h_h +-> +s_addr +, + +1641 & +p_h +-> +p_da +. +p_sha +); + +1642 +p_h +-> +p_da +. +p_t + = + +1643 +p_h +-> +p_da +. +p_s +; + +1644 +p_h +-> +p_da +. +p_s + = +q_t +; + +1645 + `h_addr_cy +(& +h_h +-> +d_addr +, + +1646 & +p_h +-> +p_da +. +p_tha +); + +1648 + `e_pe_pt_out_ck_ +( +gp_p +-> +p +.p, + +1649 +out_pt +, +pkt +); + +1650 +gp_p +-> +PktCou +++; + +1652 } i( +p_h +-> +p_ + == + +1653 + `e_u_to_be_16 +( +ARP_OP_REPLY +)) { + +1656 i( +ARPICMP_DEBUG +) { + +1657 + `tf +("ARP_OP_REPLYeceived"); + +1658 + `t_mbuf +("RX", +_pt_id +, +pkt +, + +1659 +__LINE__ +); + +1661 + `puϋ_p_y +(( +h_addr + *) + +1662 & +p_h +-> +p_da +. +p_sha +, + +1663 + `e_bsw32 +( +p_h +-> + +1664 +p_da +. +p_s +), + +1665 +_pt_id +); + +1668 + `e_pe_ah_ck_dr +( +gp_p +-> +p +.p, + +1669 +pkt_mask +); + +1670 +gp_p +-> +drݳdPktCou +++; + +1673 i( +ARPICMP_DEBUG +) + +1674 + `tf +("Invalid ARP opcode -ot " + +1676 +p_h +-> +p_ +); + +1680 +_h + = + +1681 ( +v4_hdr + *)((*) +h_h + + + +1682 ( +h_hdr +)); + +1683 +icmp_h + = + +1684 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1686 i( +h_h +-> +h_ty + = + `e_u_to_be_16 +( +ETHER_TYPE_IPv4 +)) { + +1688 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +1689 +p_pt_addss +[ +_pt_id +]. + + = +lk +->ip; + +1690 +p_pt_addss +[ +_pt_id +]. +mac_addr + = + +1691 +lk +-> +mac_addr +; + +1693 i(! + `is_me_h_addr +(( +h_addr + *) + +1694 & +p_pt_addss +[ +_pt_id +]. + +1695 +mac_addr +, & +h_h +-> +d_addr +)) { + +1697 i( +ARPICMP_DEBUG +) + +1698 + `tf +("Ethernet frameot destined " + +1702 } i( +_h +-> +xt_o_id + ! +IPPROTO_ICMP +) { + +1703 i( +ARPICMP_DEBUG +) + +1704 + `tf +("IProtocol ID isot seto " + +1707 } i(( +_h +-> +vsi_ihl + & 0xf0! +IP_VERSION_4 +) { + +1708 i( +ARPICMP_DEBUG +) + +1709 + `tf +("IP version otherhan 4 - " + +1712 } i(( +_h +-> +vsi_ihl + & 0x0f! +IP_HDRLEN +) { + +1713 i( +ARPICMP_DEBUG +) + +1714 + `tf +("Unknown IHL - discarding\n"); + +1717 i( +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REQUEST + + +1718 && +icmp_h +-> +icmp_code + == 0) { + +1719 i( +ARPICMP_DEBUG +) + +1720 + `t_mbuf +("RX", +_pt_id +, + +1721 +pkt +, +__LINE__ +); + +1723 +_addr + = +_h +-> +c_addr +; + +1724 + `h_addr_cy +(& +h_h +-> +s_addr +, + +1725 & +h_h +-> +d_addr +); + +1726 + `h_addr_cy +(( +h_addr + *) + +1727 & +p_pt_addss + + +1728 [ +_pt_id +]. +mac_addr +, + +1729 & +h_h +-> +s_addr +); + +1731 i( +_h +-> +d_addr + != + +1732 + `e_bsw32 +( +p_pt_addss + + +1733 [ +_pt_id +]. + +)) { + +1734 i( +ARPICMP_DEBUG +) { + +1735 + `tf +("IPv4acketot destined for " + +1738 + `tf +("ip_h->dst_addr = %u, " + +1741 +_h +-> +d_addr +, +_pt_id +, + +1742 +p_pt_addss +[ +_pt_id +]. + +); + +1746 i( +is_mui_v4_addr + + +1747 ( +_h +-> +d_addr +)) { + +1748 +ut32_t + +_c +; + +1750 +_c + = +e_be_to_u_32 + + +1751 ( +_addr +); + +1752 i(( +_c + & 0x00000003) == 1) + +1753 +_c + = (ip_src & + +1757 +_c + = (ip_src & + +1761 +_h +-> +c_addr + = + +1762 + `e_u_to_be_32 +( +_c +); + +1763 +_h +-> +d_addr + = +_addr +; + +1765 +_h +-> +hdr_checksum + = 0; + +1766 +_h +-> +hdr_checksum + = ~ + `e_w_cksum +( + +1767 +_h +, ( + +1768 +v4_hdr +)); + +1770 +_h +-> +c_addr + = ip_h-> +d_addr +; + +1771 +_h +-> +d_addr + = +_addr +; + +1774 +icmp_h +-> +icmp_ty + = + +1775 +IP_ICMP_ECHO_REPLY +; + +1776 +cksum + = ~ +icmp_h +-> +icmp_cksum + & 0xffff; + +1777 +cksum + +~ + `hts +( +IP_ICMP_ECHO_REQUEST + << 8) & 0xffff; + +1778 +cksum + + + `hts +( +IP_ICMP_ECHO_REPLY + << 8); + +1779 +cksum + = (cksum & 0xffff) + (cksum >> 16); + +1780 +cksum + = (cksum & 0xffff) + (cksum >> 16); + +1781 +icmp_h +-> +icmp_cksum + = ~ +cksum +; + +1783 i( +ARPICMP_DEBUG +) + +1784 + `t_mbuf +("TX", +_pt_id +, +pkt +, +__LINE__ +); + +1786 + `e_pe_pt_out_ck_ +( +gp_p +-> +p +.p, + +1787 +out_pt +, +pkt +); + +1788 +gp_p +-> +PktCou +++; + +1792 i( +icmp_h +-> +icmp_ty + = +IP_ICMP_ECHO_REPLY + + +1793 && +icmp_h +-> +icmp_code + == 0) { + +1794 i( +ARPICMP_DEBUG +) + +1795 + `t_mbuf +("RX", +_pt_id +, + +1796 +pkt +, +__LINE__ +); + +1798  +p_key_v4 + +p_key +; + +1799 +p_key +. +pt_id + = +_pt_id +; + +1800 +p_key +. + + = + +1801 + `e_bsw32 +( +_h +-> +c_addr +); + +1802 +p_key +. +fr1 + = 0; + +1803 +p_key +. +fr2 + = 0; + +1804 +p_key +. +fr3 + = 0; + +1806  +p_y_da + * +p_y + = + +1807 + `ve_p_y +( +p_key +); + +1808 i( +p_y + = +NULL +) { + +1809 + `tf +("Received unsolicited " + +1812 +p_key +. + +, + +1813 +p_key +. +pt_id +); + +1817 +p_y +-> +us + = +COMPLETE +; + +1819 + `e_pe_ah_ck_dr +( +gp_p +-> +p +.p, + +1820 +pkt_mask +); + +1821 +gp_p +-> +drݳdPktCou +++; + +1826 + } +} + +1841  + $my___v6 +( +af +, cڡ * +c +, * +d +) + +1843  +af +) { + +1844  +AF_INET +: + +1845  + `__v4 +( +c +, +d +); + +1846  +AF_INET6 +: + +1847  + `__v6 +( +c +, +d +); + +1849 +o + = +EAFNOSUPPORT +; + +1853 + } +} + +1865  + $__v4 +(cڡ * +c +, * +d +) + +1867 cڡ  +digs +[] = "0123456789"; + +1868  +w_dig +, +os +, +ch +; + +1869  +tmp +[ +INADDRSZ +], * + +; + +1871 +w_dig + = 0; + +1872 +os + = 0; + +1873 *( + + = +tmp +) = 0; + +1874 ( +ch + = * +c +++) != '\0') { + +1875 cڡ * +pch +; + +1877 +pch + = + `rchr +( +digs +, +ch +); + +1878 i( +pch + ! +NULL +) { + +1879  +w + = * + + * 10 + ( +pch + - +digs +); + +1881 i( +w + > 255) + +1883 i(! +w_dig +) { + +1884 i(++ +os + > 4) + +1886 +w_dig + = 1; + +1888 * + + = () +w +; + +1889 } i( +ch + ='.' && +w_dig +) { + +1890 i( +os + == 4) + +1892 *++ + + = 0; + +1893 +w_dig + = 0; + +1897 i( +os + < 4) + +1900 + `memy +( +d +, +tmp +, +INADDRSZ +); + +1902 + } +} + +1917  + $__v6 +(cڡ * +c +, * +d +) + +1919 cڡ  +xdigs_l +[] = "0123456789abcdef", + +1920 +xdigs_u +[] = "0123456789ABCDEF"; + +1921  +tmp +[ +IN6ADDRSZ +], * + + = 0, * +dp + = 0, * +cp + = 0; + +1922 cڡ * +xdigs + = 0, * +cuok + = 0; + +1923  +ch + = 0, +w_xdig + = 0, +cou_xdig + = 0; + +1924  +v + = 0; + +1925  +dblo_cou + = 0; + +1927 + `memt +(( + + = +tmp +), '\0', +IN6ADDRSZ +); + +1928 +dp + = + + + +IN6ADDRSZ +; + +1929 +cp + = +NULL +; + +1931 i(* +c + == ':') + +1932 i(*++ +c + != ':') + +1934 +cuok + = +c +; + +1935 +w_xdig + = +cou_xdig + = 0; + +1936 +v + = 0; + +1938 ( +ch + = * +c +++) != '\0') { + +1939 cڡ * +pch +; + +1941 +pch + = + `rchr +(( +xdigs + = +xdigs_l +), +ch +); + +1942 i( +pch + = +NULL +) + +1943 +pch + = + `rchr +(( +xdigs + = +xdigs_u +), +ch +); + +1944 i( +pch + ! +NULL +) { + +1945 i( +cou_xdig + >= 4) + +1947 +v + <<= 4; + +1948 +v + |( +pch + - +xdigs +); + +1949 i( +v + > 0xffff) + +1951 +w_xdig + = 1; + +1952 +cou_xdig +++; + +1955 i( +ch + == ':') { + +1956 +cuok + = +c +; + +1957 i(! +w_xdig +) { + +1958 i( +cp +) + +1960 +cp + = + +; + +1962 } i(* +c + == '\0') { + +1965 i( + + + ( +t16_t +> +dp +) + +1967 * + +++ = ()(( +v + >> 8) & 0xff); + +1968 * + +++ = ()( +v + & 0xff); + +1969 +w_xdig + = 0; + +1970 +cou_xdig + = 0; + +1971 +v + = 0; + +1972 +dblo_cou +++; + +1975 i( +ch + ='.' && (( + + + +INADDRSZ +< +dp +) && + +1976 + `__v4 +( +cuok +, + +) > 0) { + +1977 + + + +INADDRSZ +; + +1978 +w_xdig + = 0; + +1979 +dblo_cou + += 2; + +1984 i( +w_xdig +) { + +1985 i( + + + ( +t16_t +> +dp +) + +1987 * + +++ = ()(( +v + >> 8) & 0xff); + +1988 * + +++ = ()( +v + & 0xff); + +1989 +dblo_cou +++; + +1991 i( +cp + ! +NULL +) { + +1995 i( +dblo_cou + == 8) + +2002 cڡ  +n + = + + - +cp +; + +2003  +i +; + +2005  +i + = 1; i < +n +; i++) { + +2006 +dp +[- +i +] = +cp +[ +n + - i]; + +2007 +cp +[ +n + - +i +] = 0; + +2009 + + = +dp +; + +2011 i( + + ! +dp +) + +2013 + `memy +( +d +, +tmp +, +IN6ADDRSZ +); + +2015 + } +} + +2034 + $oss_icmpv6_pkt +( + +2035  +e_mbuf + * +pkt +, + +2036 +ut32_t + +out_pt +, + +2037 +__e_unud + +ut32_t + +pkt_num +) + +2040 +ut8_t + +_pt_id + = +pkt +-> +pt +; + +2041  +p_lk_ms + * +lk +; + +2042  +h_hdr + * +h_h +; + +2043  +v6_hdr + * +v6_h +; + +2044  +icmpv6_hdr + * +icmpv6_h +; + +2045  +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +2046 +ut8_t + +v6_addr +[16]; + +2047 +ut8_t + +i + = 0, +ag + = 1; + +2048 +ut8_t + +q_tv6 +[16]; + +2050 +h_h + = + `e_pktmbuf_mtod +( +pkt +,  +h_hdr + *); + +2051 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +2052 +icmpv6_h + = + +2053 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +2054  +e_mbuf + * +icmpv6_pkt + = +pkt +; + +2056 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +2057 +icmpv6_pt_addss +[ +_pt_id +]. +mac_addr + = +lk +->mac_addr; + +2059 i(! +is_me_h_addr + + +2060 (( +h_addr + *)& +icmpv6_pt_addss +[ +_pt_id +]. +mac_addr +, + +2061 & +h_h +-> +d_addr +)) { + +2062 i( +ARPICMP_DEBUG +) { + +2063 + `tf +("Ethernet frameot destined for MACddress " + +2067 i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REQUEST +) + +2068 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2069  +i + = 0; i < 16; i++) + +2070 +v6_addr +[ +i +] = +v6_h +-> +c_addr +[i]; + +2072  +i + = 0; i < 16; i++) { + +2073 i( +v6_h +-> +d_addr +[ +i +] != + +2074 +icmpv6_pt_addss +[ +_pt_id +]. +v6 +[ +i +]) { + +2075 +ag +++; + +2078 i(! +ag +) { + +2079 + `tf +("IPv6acketot destined for " + +2084 + `h_addr_cy +(& +h_h +-> +s_addr +, + +2085 & +h_h +-> +d_addr +); + +2086 + `h_addr_cy +(( +h_addr + *) + +2087 & +icmpv6_pt_addss + + +2088 [ +_pt_id +]. +mac_addr +, + +2089 & +h_h +-> +s_addr +); + +2091  +i + = 0; i < 16; i++) + +2092 +v6_h +-> +c_addr +[ +i +] = + +2093 +v6_h +-> +d_addr +[ +i +]; + +2094  +i + = 0; i < 16; i++) + +2095 +v6_h +-> +d_addr +[ +i +] = + +2096 +v6_addr +[ +i +]; + +2098 +icmpv6_h +-> +icmpv6_ty + = + +2099 +ICMPV6_ECHO_REPLY +; + +2101 +e_pe_pt_out_ck_ + + +2102 ( +gp_p +-> +p +.p, +out_pt +, +icmpv6_pkt +); + +2103 +gp_p +-> +PktCou +++; + +2107 } i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REPLY +) + +2108 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2109  +nd_key_v6 + +nd_key +; + +2110 +nd_key +. +pt_id + = +_pt_id +; + +2112  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2113 +nd_key +. +v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +2115 +nd_key +. +fr1 + = 0; + +2116 +nd_key +. +fr2 + = 0; + +2117 +nd_key +. +fr3 + = 0; + +2122  +nd_y_da + * +w_nd_da + = + +2123 + `ve_nd_y +( +nd_key +); + +2125 i( +w_nd_da + = +NULL +) { + +2126 + `tf +("Received unsolicited ICMPv6cho " + +2128 +nd_key +. +pt_id +); + +2129  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +2130 + `tf +("%02X%02X ", +nd_key +. +v6 +[ +i +], + +2131 +nd_key +. +v6 +[ +i + + 1]); + +2136 +w_nd_da +-> +us + = +COMPLETE +; + +2139 i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_NEIGHBOR_SOLICITATION +) + +2140 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2142 +icmpv6_nd_h + = + +2143 ( +icmpv6_nd_hdr + *)((*) +icmpv6_h + + + +2144 ( +icmpv6_hdr +)); + +2145  +h_addr + * +c_hw_addr + = & +h_h +-> +s_addr +; + +2146 +ut8_t + +c_v6 +[16], +d_v6 +[16]; + +2148  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2149 +c_v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +2150  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2151 +d_v6 +[ +i +] = +v6_h +-> +d_addr +[i]; + +2154 i(( +IPV6_MULTICAST + + +2155 && (( +d_v6 +[0] << 8) | dst_ipv6[1]))) { + +2156 i( +puϋ_nd_y + + +2157 ( +c_hw_addr +, +c_v6 +, +_pt_id +)) { + +2160  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2161 +q_tv6 +[ +i +] = + +2162 +icmpv6_nd_h +-> +rg_v6 +[ +i +]; + +2164 + `h_addr_cy +(& +h_h +-> +s_addr +, + +2165 & +h_h +-> +d_addr +); + +2166 + `h_addr_cy +(( +h_addr + *) + +2167 & +icmpv6_pt_addss + + +2168 [ +_pt_id +]. +mac_addr +, + +2169 & +h_h +-> +s_addr +); + +2172 + `h_addr_cy +(& +h_h +-> +s_addr +, + +2173 & +icmpv6_nd_h +-> + +2174 +lk_y_addss +); + +2175  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2176 +v6_h +-> +d_addr +[ +i +] = + +2177 +v6_h +-> +c_addr +[ +i +]; + +2178  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2179 +v6_h +-> +c_addr +[ +i +] = + +2180 +q_tv6 +[ +i +]; + +2181 +icmpv6_h +-> +icmpv6_ty + = + +2182 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +2183 +icmpv6_nd_h +-> +ty + = + +2184 +e_Tg_Lk_Lay_Addss +; + +2185 +icmpv6_nd_h +-> +icmpv6_rved + |= + +2186 +e_u_to_be_32 + + +2187 ( +NEIGHBOR_SOLICITATION_SET +); + +2189 +e_pe_pt_out_ck_ + + +2190 ( +gp_p +-> +p +.p, +out_pt +, +icmpv6_pkt +); + +2191 +gp_p +-> +PktCou +++; + +2194 i( +ARPICMP_DEBUG +) { + +2195 + `tf +("Non-Multicasted Neighbor " + +2198 + `tf +("............Some onelse " + +2204 i(( +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_NEIGHBOR_ADVERTISEMENT +) + +2205 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2206  +h_addr + * +c_hw_addr + = & +h_h +-> +s_addr +; + +2207 +ut8_t + +v6 +[16]; + +2208  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2209 +v6 +[ +i +] = +v6_h +-> +c_addr +[i]; + +2211 i( + `puϋ_nd_y +( +c_hw_addr +, +v6 +, +_pt_id +)) + +2212 i( +ARPICMP_DEBUG +) + +2213 + `tf +("Now on, unicast IPv6raffic " + +2217 i( +ARPICMP_DEBUG +) { + +2218 + `tf +("ICMPv6 Type %d Not Supported yet !!!\n", + +2219 +icmpv6_h +-> +icmpv6_ty +); + +2225 + } +} + +2227  + $que_icmpv6_echo +( +ut32_t + +pt_id +, +ut8_t + +v6 +[]) + +2229 () +pt_id +; + +2230 () +v6 +; + +2231  +i +; + +2233  +h_addr + +gw_addr +; + +2234 +ut8_t + +nhv6 +[16]; + +2235 +ut8_t + +de_v6 +[16]; + +2236 +ut32_t + +phy_pt +; + +2238  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2239 +de_v6 +[ +i +] = +v6 +[i]; + +2241 i( + `g_de_mac_addss_v6_pt +( +de_v6 +, & +phy_pt +, + +2242 & +gw_addr +, +nhv6 +)) { + +2243 + `que_icmpv6_echo_mesge +( +phy_pt +, +v6 +, & +gw_addr +); + +2247 i( +ARPICMP_DEBUG +) + +2248 + `tf +("Sending icmpv6choequest ... get mac failed.\n"); + +2249 + } +} + +2252 + $que_icmpv6_echo_mesge +( +ut16_t + +pt_id +, +ut8_t + +v6 +[], + +2253  +h_addr + * +gw_addr +) + +2255  +h_hdr + * +h_h +; + +2256  +v6_hdr + * +v6_h +; + +2257  +icmpv6_hdr + * +icmpv6_h +; + +2258  +icmpv6_fo_hdr + * +icmpv6_fo_h +; + +2259  +i +; + +2260  +p_lk_ms + * +lk +; + +2261 +lk + = & +mylk +[ +pt_id +]; + +2263  +i + = 0; i < 16; i++) + +2264 +icmpv6_pt_addss +[ +pt_id +]. +v6 +[ +i +] = +lk +->ipv6[i]; + +2266 +icmpv6_pt_addss +[ +pt_id +]. +mac_addr + = +lk +->mac_addr; + +2268  +e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +2269 i( +icmpv6_pkt + = +NULL +) { + +2270 i( +ARPICMP_DEBUG +) + +2271 + `tf +("Errorllocating icmpv6_pktte_mbuf\n"); + +2275 +h_h + = + `e_pktmbuf_mtod +( +icmpv6_pkt +,  +h_hdr + *); + +2276 + `h_addr_cy +( +gw_addr +, & +h_h +-> +d_addr +); + +2277 + `h_addr_cy +(( +h_addr + *)& +icmpv6_pt_addss +[ +pt_id +]. + +2278 +mac_addr +, & +h_h +-> +s_addr +); + +2279 +h_h +-> +h_ty + = + `CHECK_ENDIAN_16 +( +ETHER_TYPE_IPv6 +); + +2281 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +2282 +icmpv6_h + = + +2283 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +2284 +icmpv6_fo_h + = + +2285 ( +icmpv6_fo_hdr + *)((*) +icmpv6_h + + + +2286 ( +icmpv6_hdr +)); + +2288 +v6_h +-> +vtc_ow + = 0x60000000; + +2289 +v6_h +-> +yld_n + = 64; + +2290 +v6_h +-> +o + = 58; + +2291 +v6_h +-> +h_lims + = 64; + +2293  +i + = 0; i < 16; i++) { + +2294 +v6_h +-> +c_addr +[ +i +] = +icmpv6_pt_addss +[ +pt_id +]. +v6 +[i]; + +2295 +v6_h +-> +d_addr +[ +i +] = +v6 +[i]; + +2298 +icmpv6_h +-> +icmpv6_ty + = +ICMPV6_ECHO_REQUEST +; + +2299 +icmpv6_h +-> +icmpv6_code + = 0; + +2300 +icmpv6_fo_h +-> +icmpv6_idt + = 0x5151; + +2301 +icmpv6_fo_h +-> +icmpv6_q_nb + = 0x1; + +2303 +icmpv6_h +-> +icmpv6_cksum + = + +2304 ~ + `e_w_cksum +( +icmpv6_h +, ( +icmpv6_hdr +)); + +2306 +icmpv6_pkt +-> +pkt_n + = + +2307 ( +h_hdr ++ ( +v6_hdr +) + + +2308 ( +icmpv6_hdr +); + +2309 +icmpv6_pkt +-> +da_n + = icmpv6_pkt-> +pkt_n +; + +2311 i( +ARPICMP_DEBUG +) + +2312 + `tf +("Sending icmpv6choequest\n"); + +2314 + `e_pe_pt_out_ck_ +( +gp_p +-> +p +.p, + +2315 +gp_p +-> +out_id +[ +pt_id +], + +2316 +icmpv6_pkt +); + +2318 +gp_p +-> +PktCou +++; + +2319 + } +} + +2324 * +pe_picmp_msg_q_cuom_hdr +( +pe + * +p +, + +2325 * +msg +); + +2327  +pe_msg_q_hdr + + ghdrs +[] = { + +2328 [ +PIPELINE_MSG_REQ_PING +] = + +2329 +pe_msg_q_pg_hdr +, + +2330 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +2331 +pe_msg_q_s_pt__hdr +, + +2332 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +2333 +pe_msg_q_s_pt_out_hdr +, + +2334 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +2335 +pe_msg_q_s_b_hdr +, + +2336 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +2337 +pe_msg_q_pt__ab_hdr +, + +2338 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +2339 +pe_msg_q_pt__dib_hdr +, + +2340 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +2341 +pe_picmp_msg_q_cuom_hdr +, + +2345 * +pe_picmp_msg_q_y_dbg_hdr +( +pe + * +p +, + +2346 * +msg +); + +2347 * + $pe_picmp_msg_q_y_dbg_hdr +( + +2348 +__e_unud +  +pe + * +p +, + +2349 +__e_unud + * +msg +) + +2352  +NULL +; + +2353 + } +} + +2355  +__e_unud + +pe_msg_q_hdr + + gcuom_hdrs +[] = { + +2356 [ +PIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +] = + +2357 +pe_picmp_msg_q_y_dbg_hdr +, + +2371 * + $pe_picmp_msg_q_cuom_hdr +( +pe + * +p +, * +msg +) + +2373  +pe_picmp + * +p_p + = (pe_picm*) +p +; + +2374  +pe_cuom_msg_q + * +q + = +msg +; + +2375 +pe_msg_q_hdr + +f_hd +; + +2377 +f_hd + = ( +q +-> +subty + < +PIPELINE_ARPICMP_MSG_REQS +) ? + +2378 +p_p +-> +cuom_hdrs +[ +q +-> +subty +] : + +2379 +pe_msg_q_vid_hdr +; + +2381 i( +f_hd + = +NULL +) + +2382 +f_hd + = +pe_msg_q_vid_hdr +; + +2384  + `f_hd +( +p +, +q +); + +2385 + } +} + +2387 #ifde +VNF_ACL + + +2393 +pe_picmp_r_gs +( +pe_picmp + * +p +, + +2394  +pe_ms + * +ms +); + +2396 + $pe_picmp_r_gs +( + +2397 +__e_unud +  +pe_picmp + * +p +, + +2398  +pe_ms + * +ms +) + +2401 +ut32_t + +i +; + +2402 +ut32_t + +p_ma_offt_e + = 0; + +2404 +ut32_t + +p_rou_tbl_e + = 0; + +2405 +ut32_t + +nd_rou_tbl_e + = 0; + +2406 +ut32_t + +pts_mac_li_e + = 0; + +2407 +ut32_t + +pktq__v_e + = 0; + +2408 +ut32_t + +v_to_pub_m_e + = 0; + +2410 +ut8_t + +n_v__pt + = 0; + +2411  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +2412 +_pt_d_a +[ +i +] = 0; + +2413 +v_to_pub_m +[ +i +] = 0xff; + +2414 +pub_to_v_m +[ +i +] = 0xff; + +2417  +i + = 0; i < +ms +-> +n_gs +; i++) { + +2418 * +g_me + = +ms +-> +gs_me +[ +i +]; + +2419 * +g_vue + = +ms +-> +gs_vue +[ +i +]; + +2421 i( +ARPICMP_DEBUG + > 2) { + +2422 + `tf +("ARPrgs[%d]: %%d, %s\n", +i +, +g_me +, + +2423 + `oi +( +g_vue +),rg_value); + +2425 i( + `rcmp +( +g_me +, "arp_meta_offset") == 0) { + +2426 i( +p_ma_offt_e +) { + +2427 + `tf +("arp_meta_offset " + +2431 +p_ma_offt_e + = 1; + +2432 +p_ma_offt + = + `oi +( +g_vue +); + +2436 i( + `rcmp +( +g_me +, "pktq_in_prv") == 0) { + +2437 i( +pktq__v_e +) { + +2438 + `tf +("Duplicatektq_in_prv ... " + +2442 +pktq__v_e + = 1; + +2444  +rxpt + = 0, +j + = 0; + +2445  +phy_pt_num +[5]; + +2446 * +tok + = + `ok +( +g_vue +, "RXQ"); + +2447  +tok +) { + +2448 +j + = 0; + +2449 ( +j + < 4&& ( +tok +[j] != '.')) { + +2450 +phy_pt_num +[ +j +] = +tok +[j]; + +2451 +j +++; + +2453 +phy_pt_num +[ +j +] = '\0'; + +2454 +rxpt + = + `oi +( +phy_pt_num +); + +2455 + `tf +("token: %s,hy_port_str: %s, " + +2457 +tok +, +phy_pt_num +, +rxpt +); + +2459 +v__pt_a +[ +n_v__pt +++] = +rxpt +; + +2461 if( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +2462 +_pt_d_a +[ +rxpt +] = 1; + +2463 +tok + = + `ok +( +NULL +, "RXQ"); + +2466 i( +n_v__pt + == 0) { + +2467 +tf + + +2476 i( + `rcmp +( +g_me +, "prv_to_pub_map") == 0) { + +2477 i( +v_to_pub_m_e +) { + +2478 +tf + + +2483 +v_to_pub_m_e + = 1; + +2485  +rxpt + = 0, +txpt + = 0, +j + = 0, +k + = 0; + +2486  +rx_phy_pt_num +[5]; + +2487  +tx_phy_pt_num +[5]; + +2488 * +tok + = + `ok +( +g_vue +, "("); + +2489  +tok +) { + +2490 +j + = 0; + +2491 ( +j + < 4&& ( +tok +[j] != ',')) { + +2492 +rx_phy_pt_num +[ +j +] = +tok +[j]; + +2493 +j +++; + +2495 +rx_phy_pt_num +[ +j +] = '\0'; + +2496 +rxpt + = + `oi +( +rx_phy_pt_num +); + +2498 +j +++; + +2499 +k + = 0; + +2500 ( +k + < 4&& ( +tok +[ +j + + k] != ')')) { + +2501 +tx_phy_pt_num +[ +k +] = +tok +[ +j + + k]; + +2502 +k +++; + +2504 +tx_phy_pt_num +[ +k +] = '\0'; + +2505 +txpt + = + `oi +( +tx_phy_pt_num +); + +2506 i( +rxpt + < +PIPELINE_MAX_PORT_IN + && +txpt + < PIPELINE_MAX_PORT_IN){ + +2507 + `tf +("token: %s," + +2510 +tok +, +rx_phy_pt_num +, +rxpt +, + +2511 +tx_phy_pt_num +, +txpt +); + +2515 i(( +rxpt + > +PIPELINE_MAX_PORT_IN +) || + +2516 ( +txpt + > +PIPELINE_MAX_PORT_IN +) || + +2517 ( +_pt_d_a +[ +rxpt +] != 1)) { + +2518 + `tf +("CG-NAPTarserror - " + +2521 +rxpt +, +txpt +, +_pt_d_a +[rxport]); + +2525 +v_to_pub_m +[ +rxpt +] = +txpt +; + +2526 +pub_to_v_m +[ +txpt +] = +rxpt +; + +2527 +tok + = + `ok +( +NULL +, "("); + +2534 i( + `rcmp +( +g_me +, "lib_arp_debug") == 0) { + +2535 +ARPICMP_DEBUG + = + `oi +( +g_vue +); + +2541 i( + `rcmp +( +g_me +, "ports_mac_list") == 0) { + +2542 +pts_mac_li_e + = 1; + +2544 +ut32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2546  +byS +[ +MAC_NUM_BYTES +][3]; + +2547 +ut32_t + +by +[ +MAC_NUM_BYTES +]; + +2549 * +tok + = + `ok +( +g_vue +, " "); + +2550  +tok +) { + +2551 +k + = 0; + +2552  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2553  +j + = 0; j < 2; j++) + +2554 +byS +[ +i +][ +j +] = +tok +[ +k +++]; + +2555 +byS +[ +i +][ +j +] = '\0'; + +2556 +k +++; + +2559  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2560 +by +[ +i +] = + `oul +( +byS +[i], +NULL +, 16); + +2562 i( +ARPICMP_DEBUG +) { + +2563 + `tf +("tok: %s", +tok +); + +2564  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2565 + `tf +(", by[%u] %u", +i +, + +2566 +by +[ +i +]); + +2567 + `tf +("\n"); + +2570  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2571 +lk_hw_addr + + +2572 [ +lk_hw_addr_y_idx +]. +addr_bys + + +2573 [ +i +] = +by +[i]; + +2575 +lk_hw_addr_y_idx +++; + +2576 +tok + = + `ok +( +NULL +, " "); + +2583 i( + `rcmp +( +g_me +, "arp_route_tbl") == 0) { + +2584 +p_rou_tbl_e + = 1; + +2586 +ut32_t + +de_ + = 0, +mask + = 0, +tx_pt + = 0, +nh_ + = + +2587 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2588 +ut32_t + +p_rou_tbl_r_max_n + = 10; + +2589  +de__r +[ +p_rou_tbl_r_max_n +]; + +2590  +mask_r +[ +p_rou_tbl_r_max_n +]; + +2591  +tx_pt_r +[ +p_rou_tbl_r_max_n +]; + +2592  +nh__r +[ +p_rou_tbl_r_max_n +]; + +2593 * +tok + = + `ok +( +g_vue +, "("); + +2594  +tok +) { + +2595 +i + = 0; + +2596 ( +i + < ( +p_rou_tbl_r_max_n + - 1)) + +2597 && ( +tok +[ +i +] != ',')) { + +2598 +de__r +[ +i +] = +tok +[i]; + +2599 +i +++; + +2601 +de__r +[ +i +] = '\0'; + +2602 +de_ + = + `oul +( +de__r +, +NULL +, 16); + +2604 +i +++; + +2605 +j + = 0; + +2606 ( +j + < ( +p_rou_tbl_r_max_n + - 1)) + +2607 && ( +tok +[ +i + + +j +] != ',')) { + +2608 +mask_r +[ +j +] = +tok +[ +i + + j]; + +2609 +j +++; + +2611 +mask_r +[ +j +] = '\0'; + +2612 +mask + = + `oul +( +mask_r +, +NULL +, 16); + +2614 +j +++; + +2615 +k + = 0; + +2616 ( +k + < ( +p_rou_tbl_r_max_n + - 1)) + +2617 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2618 +tx_pt_r +[ +k +] = +tok +[ +i + + +j + + k]; + +2619 +k +++; + +2621 +tx_pt_r +[ +k +] = '\0'; + +2623 +tx_pt + = + `oul +( +tx_pt_r +, +NULL +, 16); + +2625 +k +++; + +2626 +l + = 0; + +2627 ( +l + < ( +p_rou_tbl_r_max_n + - 1)) + +2628 && ( +tok +[ +i + + +j + + +k + + +l +] != ')')) { + +2629 +nh__r +[ +l +] = +tok +[ +i + + +j + + +k + +]; + +2630 +l +++; + +2632 +nh__r +[ +l +] = '\0'; + +2634 +nh_ + = + `oul +( +nh__r +, +NULL +, 16); + +2636 i( +ARPICMP_DEBUG +) { + +2637 + `tf +("token: %s, " + +2642 +tok +, +de__r +, +de_ +, + +2643 +mask_r +, +mask +, +tx_pt_r +, + +2644 +tx_pt +, +nh__r +, +nh_ +); + +2647 i( +tx_pt + > +ms +-> +n_pts_out +) { + +2648 + `tf +("ARP-ICMParserror - " + +2650 +tx_pt +, +ms +-> +n_pts_out +); + +2656 +lib_p_rou_b +[ +p_rou_tbl_dex +]. + + = + +2657 +de_ +; + +2658 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +mask + = + +2659 +mask +; + +2660 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +pt + = + +2661 +tx_pt +; + +2662 +lib_p_rou_b +[ +p_rou_tbl_dex +]. +nh + = + +2663 +nh_ +; + +2664 +p_rou_tbl_dex +++; + +2665 +tok + = + `ok +( +NULL +, "("); + +2672 i( + `rcmp +( +g_me +, "nd_route_tbl") == 0) { + +2673 +nd_rou_tbl_e + = 1; + +2675 +ut8_t + +de_v6 +[16], +dth + = 0, +tx_pt + = + +2676 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2677 +ut8_t + +nd_rou_tbl_r_max_n + = 128; + +2678  +de_v6_r +[ +nd_rou_tbl_r_max_n +]; + +2679  +dth_r +[ +nd_rou_tbl_r_max_n +]; + +2680  +tx_pt_r +[ +nd_rou_tbl_r_max_n +]; + +2681  +nh_v6_r +[ +nd_rou_tbl_r_max_n +]; + +2682 * +tok + = + `ok +( +g_vue +, "("); + +2683  +tok +) { + +2684 +i + = 0; + +2685 ( +i + < ( +nd_rou_tbl_r_max_n + - 1)) + +2686 && ( +tok +[ +i +] != ',')) { + +2687 +de_v6_r +[ +i +] = +tok +[i]; + +2688 +i +++; + +2690 +de_v6_r +[ +i +] = '\0'; + +2691 + `my___v6 +( +AF_INET6 +, +de_v6_r +, + +2692 & +de_v6 +); + +2694 +i +++; + +2695 +j + = 0; + +2696 ( +j + < ( +nd_rou_tbl_r_max_n + - 1)) + +2697 && ( +tok +[ +i + + +j +] != ',')) { + +2698 +dth_r +[ +j +] = +tok +[ +i + + j]; + +2699 +j +++; + +2701 +dth_r +[ +j +] = '\0'; + +2703  +s +; + +2704  +s + = 0; +dth_r +[s] != '\0'; ++s) + +2705 +dth + = dth * 10 + +dth_r +[ +s +] - '0'; + +2707 +j +++; + +2708 +k + = 0; + +2709 ( +k + < ( +nd_rou_tbl_r_max_n + - 1)) + +2710 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2711 +tx_pt_r +[ +k +] = +tok +[ +i + + +j + + k]; + +2712 +k +++; + +2714 +tx_pt_r +[ +k +] = '\0'; + +2716 +tx_pt + = + `oul +( +tx_pt_r +, +NULL +, 16); + +2718 +k +++; + +2719 +l + = 0; + +2720 ( +l + < ( +nd_rou_tbl_r_max_n + - 1)) + +2721 && ( +tok +[ +i + + +j + + +k + + +l +] != ')')) { + +2722 +nh_v6_r +[ +l +] = +tok +[ +i + + +j + + +k + +]; + +2723 +l +++; + +2725 +nh_v6_r +[ +l +] = '\0'; + +2726 + `my___v6 +( +AF_INET6 +, +nh_v6_r +, + +2727 & +nh_v6 +); + +2730  +i + = 0; i < 16; i++) { + +2731 +lib_nd_rou_b + + +2732 [ +nd_rou_tbl_dex +]. +v6 +[ +i +] = + +2733 +de_v6 +[ +i +]; + +2734 +lib_nd_rou_b + + +2735 [ +nd_rou_tbl_dex +]. +nhv6 +[ +i +] = + +2736 +nh_v6 +[ +i +]; + +2738 +lib_nd_rou_b +[ +nd_rou_tbl_dex +]. +dth + = + +2739 +dth +; + +2740 +lib_nd_rou_b +[ +nd_rou_tbl_dex +]. +pt + = + +2741 +tx_pt +; + +2743 +nd_rou_tbl_dex +++; + +2744 +tok + = + `ok +( +NULL +, "("); + +2754 i(! +p_ma_offt_e +) { + +2755 + `tf +("ARPICMP:rp_meta_offsetot initialized\n"); + +2760 i(! +p_rou_tbl_e + && ! +nd_rou_tbl_e +) { + +2761 + `tf +("Neitherrp_route_tbl_presentor " + +2766 i(! +pktq__v_e +) { + +2767 + `tf +("pktq_in_prvot declared\n"); + +2771 i(! +pts_mac_li_e +) { + +2772 + `tf +("ports_mac_listot declared\n"); + +2777 + } +} + +2781 +ut32_t + + gpicmp_pkt_t_cou +; + +2782  +le +  + +2783 + $pkt_key_picmp +( +e_mbuf + * +pkt +, +ut32_t + +pkt_num +, * +g +) + +2786  +pe_picmp__pt_h_g + * + + = +g +; + +2787  +pe_picmp + * +p_p + = (pe_picm*) + +-> +p +; + +2789 +p_p +-> +ivedPktCou +++; + +2791 +ut8_t + +_pt_id + = +pkt +-> +pt +; + +2792 #ifde +VNF_ACL + + +2793  +p_lk_ms + * +lk +; + +2795 +ut8_t + * +oc +; + +2796 +ut32_t + +pkt_mask + = 1 << +pkt_num +; + +2797 +ut32_t + +h_o_offt + = +MBUF_HDR_ROOM + + 12; + +2799 +ut32_t + +_offt + = + +2800 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2802 #ifde +VNF_ACL + + +2803 +ut32_t + +out_pt +; + +2806 +ut16_t + * +h_o + = + +2807 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +h_o_offt +); + +2810 #ifde +VNF_ACL + + +2811 +ut32_t + +d_addr_offt + = + +2812 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2813 +ut32_t + * +d_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d_addr_offt +); + +2816 #ifde +IPV6 + + +2817 +ut32_t + +_offt_v6 + = + +2818 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IPV6_HDR_PROTOCOL_OFST +; + +2820 i( + `e_be_to_u_16 +(* +h_o += +ETHER_TYPE_IPv6 +) + +2821 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt_v6 +); + +2823 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt +); + +2825 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt +); + +2829 i(( +ARPICMP_DEBUG + > 2&& ( +picmp_pkt_t_cou + < 10)) { + +2830 + `t_pkt1 +( +pkt +); + +2831 +picmp_pkt_t_cou +++; + +2832 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +2834 + `e_be_to_u_16 +(* +h_o +), * +oc +, +ETH_TYPE_ARP +, + +2835 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +2838 #ifde +VNF_ACL + + +2839 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +2843 i(( + `e_be_to_u_16 +(* +h_o += +ETH_TYPE_ARP +) || + +2844 (( + `e_be_to_u_16 +(* +h_o += +ETH_TYPE_IPV4 +) + +2845 && (* +oc + = +IP_PROTOCOL_ICMP +) + +2846 #ifde +VNF_ACL + + +2847 && ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr +)) + +2851 #ifde +VNF_ACL + + +2852 +out_pt + = +p_p +-> +out_id +[ +_pt_id +]; + +2853 + `oss_picmp_pkt +( +pkt +, +out_pt +, +pkt_mask +); + +2855 + `oss_picmp_pkt +( +pkt +, + `ifm_g_pt +( +_pt_id +)); + +2859 #ifde +IPV6 + + +2860 i(( + `e_be_to_u_16 +(* +h_o += +ETH_TYPE_IPV6 +) + +2861 && (* +oc + = +ICMPV6_PROTOCOL_ID +)) { + +2862 #ifde +VNF_ACL + + +2863 +out_pt + = +p_p +-> +out_id +[ +_pt_id +]; + +2864 + `oss_icmpv6_pkt +( +pkt +, +out_pt +, +pkt_mask +); + +2866 + `oss_icmpv6_pkt +( +pkt +, + `ifm_g_pt +( +_pt_id +)); + +2874 + `e_pe_ah_ck_dr +( +p_p +-> +p +.p, +pkt_mask +); + +2875 +p_p +-> +drݳdPktCou +++; + +2877 + } +} + +2879  +le +  + +2880 + $pkt4_key_picmp +( +e_mbuf + ** +pkt +, +ut32_t + +pkt_num +, * +g +) + +2883  +pe_picmp__pt_h_g + * + + = +g +; + +2884  +pe_picmp + * +p_p + = (pe_picm*) + +-> +p +; + +2886 +p_p +-> +ivedPktCou + += 4; + +2888 +ut32_t + +h_o_offt + = +MBUF_HDR_ROOM + + 12; + +2889 +ut8_t + +_pt_id + = +pkt +[0]-> +pt +; + +2891 +ut32_t + +_offt + = + +2892 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2895 #ifde +VNF_ACL + + +2896 +ut32_t + +d_addr_offt + = + +2897 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2900 +ut32_t + +pkt_mask0 + = 1 << +pkt_num +; + +2901 +ut32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +2902 +ut32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +2903 +ut32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +2905 #ifde +VNF_ACL + + +2906 +ut32_t + +out_pt0 +; + +2907 +ut32_t + +out_pt1 +; + +2908 +ut32_t + +out_pt2 +; + +2909 +ut32_t + +out_pt3 +; + +2912 +ut16_t + * +h_o0 + = + +2913 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +h_o_offt +); + +2914 +ut16_t + * +h_o1 + = + +2915 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +h_o_offt +); + +2916 +ut16_t + * +h_o2 + = + +2917 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +h_o_offt +); + +2918 +ut16_t + * +h_o3 + = + +2919 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +h_o_offt +); + +2921 +ut8_t + * +oc0 +; + +2922 +ut8_t + * +oc1 +; + +2923 +ut8_t + * +oc2 +; + +2924 +ut8_t + * +oc3 +; + +2926 #ifde +VNF_ACL + + +2927 +ut32_t + * +d_addr0 + = + +2928 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d_addr_offt +); + +2929 +ut32_t + * +d_addr1 + = + +2930 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d_addr_offt +); + +2931 +ut32_t + * +d_addr2 + = + +2932 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d_addr_offt +); + +2933 +ut32_t + * +d_addr3 + = + +2934 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], +d_addr_offt +); + +2936  +p_lk_ms + * +lk0 +; + +2937  +p_lk_ms + * +lk1 +; + +2938  +p_lk_ms + * +lk2 +; + +2939  +p_lk_ms + * +lk3 +; + +2941 +lk0 + = & +myA +-> +lk_ms +[ +pkt +[0]-> +pt +]; + +2942 +lk1 + = & +myA +-> +lk_ms +[ +pkt +[1]-> +pt +]; + +2943 +lk2 + = & +myA +-> +lk_ms +[ +pkt +[2]-> +pt +]; + +2944 +lk3 + = & +myA +-> +lk_ms +[ +pkt +[3]-> +pt +]; + +2947 #ifde +IPV6 + + +2948 +ut32_t + +_offt_v6 + = + +2949 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IPV6_HDR_PROTOCOL_OFST +; + +2953 #ifde +IPV6 + + +2955 i( + `e_be_to_u_16 +(* +h_o0 += +ETHER_TYPE_IPv6 +) + +2956 +oc0 + = + +2957 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt_v6 +); + +2959 +oc0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt +); + +2962 i( + `e_be_to_u_16 +(* +h_o1 += +ETHER_TYPE_IPv6 +) + +2963 +oc1 + = + +2964 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt_v6 +); + +2966 +oc1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt +); + +2969 i( + `e_be_to_u_16 +(* +h_o2 += +ETHER_TYPE_IPv6 +) + +2970 +oc2 + = + +2971 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt_v6 +); + +2973 +oc2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt +); + +2976 i( + `e_be_to_u_16 +(* +h_o3 += +ETHER_TYPE_IPv6 +) + +2977 +oc3 + = + +2978 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt_v6 +); + +2980 +oc3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt +); + +2982 +oc0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt +); + +2983 +oc1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt +); + +2984 +oc2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt +); + +2985 +oc3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt +); + +2988 i(( +ARPICMP_DEBUG + > 2&& ( +picmp_pkt_t_cou + < 10)) { + +2989 + `t_pkt1 +( +pkt +[0]); + +2990 +picmp_pkt_t_cou +++; + +2991 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +2993 + `e_be_to_u_16 +(* +h_o0 +), * +oc0 +, +ETH_TYPE_ARP +, + +2994 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +2998 i(( + `e_be_to_u_16 +(* +h_o0 += +ETH_TYPE_ARP +) || + +2999 (( + `e_be_to_u_16 +(* +h_o0 += +ETH_TYPE_IPV4 +) + +3000 && (* +oc0 + = +IP_PROTOCOL_ICMP +) + +3001 #ifde +VNF_ACL + + +3002 && ( +lk0 +-> + + = + `e_be_to_u_32 +(* +d_addr0 +)) + +3006 #ifde +VNF_ACL + + +3007 +out_pt0 + = +p_p +-> +out_id +[ +pkt +[0]-> +pt +]; + +3008 + `oss_picmp_pkt +( +pkt +[0], +out_pt0 +, +pkt_mask0 +); + +3010 + `oss_picmp_pkt +( +pkt +[0], + `ifm_g_pt +( +_pt_id +)); + +3013  +PKT1 +; + +3015 #ifde +IPV6 + + +3016 i(( + `e_be_to_u_16 +(* +h_o0 += +ETH_TYPE_IPV6 +) + +3017 && (* +oc0 + = +ICMPV6_PROTOCOL_ID +)) { + +3019 #ifde +VNF_ACL + + +3020 +out_pt0 + = +p_p +-> +out_id +[ +pkt +[0]-> +pt +]; + +3021 + `oss_icmpv6_pkt +( +pkt +[0], +out_pt0 +, +pkt_mask0 +); + +3023 + `oss_icmpv6_pkt +( +pkt +[0], + `ifm_g_pt +( +_pt_id +)); + +3026  +PKT1 +; + +3031 + `e_pe_ah_ck_dr +( +p_p +-> +p +.p, +pkt_mask0 +); + +3032 +p_p +-> +drݳdPktCou +++; + +3034 +PKT1 +: + +3035 i(( +ARPICMP_DEBUG + > 2&& ( +picmp_pkt_t_cou + < 10)) { + +3036 + `t_pkt1 +( +pkt +[1]); + +3037 +picmp_pkt_t_cou +++; + +3038 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3040 + `e_be_to_u_16 +(* +h_o1 +), * +oc1 +, +ETH_TYPE_ARP +, + +3041 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +3044 i(( + `e_be_to_u_16 +(* +h_o1 += +ETH_TYPE_ARP +) || + +3045 (( + `e_be_to_u_16 +(* +h_o1 += +ETH_TYPE_IPV4 +) + +3046 && (* +oc1 + = +IP_PROTOCOL_ICMP +) + +3047 #ifde +VNF_ACL + + +3048 && ( +lk1 +-> + + = + `e_be_to_u_32 +(* +d_addr1 +)) + +3052 #ifde +VNF_ACL + + +3053 +out_pt1 + = +p_p +-> +out_id +[ +pkt +[1]-> +pt +]; + +3054 + `oss_picmp_pkt +( +pkt +[1], +out_pt1 +, +pkt_mask1 +); + +3056 + `oss_picmp_pkt +( +pkt +[1], + `ifm_g_pt +( +_pt_id +)); + +3058  +PKT2 +; + +3060 #ifde +IPV6 + + +3061 i(( + `e_be_to_u_16 +(* +h_o1 += +ETH_TYPE_IPV6 +) + +3062 && (* +oc1 + = +ICMPV6_PROTOCOL_ID +)) { + +3064 #ifde +VNF_ACL + + +3065 +out_pt1 + = +p_p +-> +out_id +[ +pkt +[1]-> +pt +]; + +3066 + `oss_icmpv6_pkt +( +pkt +[1], +out_pt1 +, +pkt_mask1 +); + +3068 + `oss_icmpv6_pkt +( +pkt +[1], + `ifm_g_pt +( +_pt_id +)); + +3071  +PKT2 +; + +3076 + `e_pe_ah_ck_dr +( +p_p +-> +p +.p, +pkt_mask1 +); + +3077 +p_p +-> +drݳdPktCou +++; + +3079 +PKT2 +: + +3080 i(( +ARPICMP_DEBUG + > 2&& ( +picmp_pkt_t_cou + < 10)) { + +3081 + `t_pkt1 +( +pkt +[2]); + +3082 +picmp_pkt_t_cou +++; + +3083 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3085 + `e_be_to_u_16 +(* +h_o2 +), * +oc2 +, +ETH_TYPE_ARP +, + +3086 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +3089 i(( + `e_be_to_u_16 +(* +h_o2 += +ETH_TYPE_ARP +) || + +3090 (( + `e_be_to_u_16 +(* +h_o2 += +ETH_TYPE_IPV4 +) + +3091 && (* +oc2 + = +IP_PROTOCOL_ICMP +) + +3092 #ifde +VNF_ACL + + +3093 && ( +lk2 +-> + + = + `e_be_to_u_32 +(* +d_addr2 +)) + +3097 #ifde +VNF_ACL + + +3098 +out_pt2 + = +p_p +-> +out_id +[ +pkt +[2]-> +pt +]; + +3099 + `oss_picmp_pkt +( +pkt +[2], +out_pt2 +, +pkt_mask2 +); + +3101 + `oss_picmp_pkt +( +pkt +[2], + `ifm_g_pt +( +_pt_id +)); + +3104  +PKT3 +; + +3106 #ifde +IPV6 + + +3107 i(( + `e_be_to_u_16 +(* +h_o2 += +ETH_TYPE_IPV6 +) + +3108 && (* +oc2 + = +ICMPV6_PROTOCOL_ID +)) { + +3110 #ifde +VNF_ACL + + +3111 +out_pt2 + = +p_p +-> +out_id +[ +pkt +[2]-> +pt +]; + +3112 + `oss_icmpv6_pkt +( +pkt +[2], +out_pt2 +, +pkt_mask2 +); + +3114 + `oss_icmpv6_pkt +( +pkt +[2], + `ifm_g_pt +( +_pt_id +)); + +3117  +PKT3 +; + +3122 + `e_pe_ah_ck_dr +( +p_p +-> +p +.p, +pkt_mask2 +); + +3123 +p_p +-> +drݳdPktCou +++; + +3125 +PKT3 +: + +3126 i(( +ARPICMP_DEBUG + > 2&& ( +picmp_pkt_t_cou + < 10)) { + +3127 + `t_pkt1 +( +pkt +[3]); + +3128 +picmp_pkt_t_cou +++; + +3129 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3131 + `e_be_to_u_16 +(* +h_o3 +), * +oc3 +, +ETH_TYPE_ARP +, + +3132 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +3135 i(( + `e_be_to_u_16 +(* +h_o3 += +ETH_TYPE_ARP +) || + +3136 (( + `e_be_to_u_16 +(* +h_o3 += +ETH_TYPE_IPV4 +) + +3137 && (* +oc3 + = +IP_PROTOCOL_ICMP +) + +3139 #ifde +VNF_ACL + + +3140 && ( +lk3 +-> + + = + `e_be_to_u_32 +(* +d_addr3 +)) + +3144 #ifde +VNF_ACL + + +3145 +out_pt3 + = +p_p +-> +out_id +[ +pkt +[3]-> +pt +]; + +3146 + `oss_picmp_pkt +( +pkt +[3], +out_pt3 +, +pkt_mask3 +); + +3148 + `oss_picmp_pkt +( +pkt +[3], + `ifm_g_pt +( +_pt_id +)); + +3153 #ifde +IPV6 + + +3154 i(( + `e_be_to_u_16 +(* +h_o3 += +ETH_TYPE_IPV6 +) + +3155 && (* +oc3 + = +ICMPV6_PROTOCOL_ID +)) { + +3157 #ifde +VNF_ACL + + +3158 +out_pt3 + = +p_p +-> +out_id +[ +pkt +[3]-> +pt +]; + +3159 + `oss_icmpv6_pkt +( +pkt +[3], +out_pt3 +, +pkt_mask3 +); + +3161 + `oss_icmpv6_pkt +( +pkt +[3], + `ifm_g_pt +( +_pt_id +)); + +3168 + `e_pe_ah_ck_dr +( +p_p +-> +p +.p, +pkt_mask3 +); + +3169 +p_p +-> +drݳdPktCou +++; + +3172 + } +} + +3174 +PIPELINE_ARPICMP_KEY_PORT_IN_AH +( + +3175 +pt__ah_picmp +, + +3176 +pkt_key_picmp +, + +3177 +pkt4_key_picmp +); + +3179 * + $pe_picmp_ +( +pe_ms + * +ms +, + +3180 +__e_unud + * +g +) + +3182  +pe + * +p +; + +3183  +pe_picmp + * +p_p +; + +3184 +ut32_t + +size +, +i +, +_pts_g_size +; + +3186 + `tf +("Startipeline_arpicmp_init\n"); + +3189 i(( +ms + = +NULL +) || + +3190 ( +ms +-> +n_pts_ + == 0) || + +3191 ( +ms +-> +n_pts_out + == 0)) + +3192  +NULL +; + +3195 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_picmp +)); + +3196 +p + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +3197 +p_p + = ( +pe_picmp + *) +p +; + +3198 i( +p + = +NULL +) + +3199  +NULL +; + +3202  +p_ms + * +p + = (p_m*) +g +; + +3203 +myA + = +g +; + +3205 + `PLOG +( +p +, +HIGH +, "ARPICMP"); + +3206 + `ry +( +p +-> +me +, +ms +->name); + +3207 +p +-> +log_v + = +ms +->log_level; + +3209 +p_p +-> +ivedPktCou + = 0; + +3210 +p_p +-> +drݳdPktCou + = 0; + +3212 #ifde +VNF_ACL + + +3213  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) + +3214 +p_p +-> +lks_m +[ +i +] = 0xff; + +3216 +p_p +-> +pe_num + = 0; + +3219 i( + `pe_picmp_r_gs +( +p_p +, +ms +)) + +3220  +NULL +; + +3222 #ide +VNF_ACL + + +3223 + `lib_p_ +( +ms +, +p +); + +3228  +e_pe_ms + +pe_ms + = { + +3229 . +me + = "ARPICMP", + +3230 . +sock_id + = +ms +->socket_id, + +3231 . +offt_pt_id + = 0, + +3235 +p +-> + `e_pe_ +(& +pe_ms +); + +3236 i( +p +->= +NULL +) { + +3237 + `e_ +( +p +); + +3238  +NULL +; + +3242 +p +-> +n_pts_ + = +ms +->n_ports_in; + +3243 +p +-> +n_pts_out + = +ms +->n_ports_out; + +3244 +p +-> +n_bs + = 1; + +3247 +_pts_g_size + = + `RTE_CACHE_LINE_ROUNDUP +( + +3248 (( +pe_picmp__pt_h_g +)) * + +3249 ( +ms +-> +n_pts_ +)); + +3250  +pe_picmp__pt_h_g + * + + = + +3251 ( +pe_picmp__pt_h_g + *) + `e_zmloc +( +NULL +, + +3252 +_pts_g_size +, + +3253 +RTE_CACHE_LINE_SIZE +); + +3254 i( + + = +NULL +) + +3255  +NULL +; + +3258  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +3260 ( + +[ +i +]). +p + = +p_p +; + +3261 ( + +[ +i +]). +_pt_id + = i; + +3262  +e_pe_pt__ms + +pt_ms + = { + +3263 . +s + = + +3264 + `pe_pt__ms_g_s +(& +ms +-> + +3265 +pt_ +[ +i +]), + +3266 . +g_ + = + +3267 + `pe_pt__ms_cvt +(& +ms +-> + +3268 +pt_ +[ +i +]), + +3269 . +f_ai + = +NULL +, + +3270 . +g_ah + = &( + +[ +i +]), + +3271 . +bur_size + = +ms +-> +pt_ +[ +i +].burst_size, + +3274 +pt_ms +. +f_ai + = +pt__ah_picmp +; + +3276  +us + = + `e_pe_pt__ +( +p +->p, + +3277 & +pt_ms +, + +3278 & +p +-> +pt__id +[ +i +]); + +3280 i( +us +) { + +3281 + `e_pe_ +( +p +->p); + +3282 + `e_ +( +p +); + +3283  +NULL +; + +3288  +i + = 0; i < +p +-> +n_pts_out +; i++) { + +3289  +e_pe_pt_out_ms + +pt_ms + = { + +3290 . +s + = + +3291 + `pe_pt_out_ms_g_s +(& +ms +-> + +3292 +pt_out +[ +i +]), + +3293 . +g_ + = + +3294 + `pe_pt_out_ms_cvt +(& +ms +-> + +3295 +pt_out +[ +i +]), + +3296 . +f_ai + = +NULL +, + +3297 . +g_ah + = +NULL +, + +3300  +us + = + `e_pe_pt_out_ +( +p +->p, + +3301 & +pt_ms +, + +3302 & +p +-> +pt_out_id +[ +i +]); + +3304 i( +us +) { + +3305 + `e_pe_ +( +p +->p); + +3306 + `e_ +( +p +); + +3307  +NULL +; + +3310  +pe_num + = 0; + +3312  +us + = + `ssnf +( +ms +-> +me +, "PIPELINE%d", & +pe_num +); + +3314 i( +us + < 0) { + +3315  +NULL +; + +3316 + `tf +("Unableoeadipelineumber\n"); + +3319 +p_p +-> +pe_num + = ( +ut8_t +)ipeline_num; + +3321 + `gi_pe_Qs +( +p_p +-> +pe_num +, +p +); + +3322 + `t_phy_out_id +( +p_p +-> +pe_num +, +p +,_p-> +out_id +); + +3326  +e_pe_b_ms + +b_ms + = { + +3327 . +s + = & +e_b_ub_s +, + +3328 . +g_ + = +NULL +, + +3329 . +f_ai_h + = +NULL +, + +3330 . +f_ai_miss + = +NULL +, + +3331 . +g_ah + = +NULL +, + +3332 . +ai_da_size + = 0, + +3335  +us + = + `e_pe_b_ +( +p +->p, + +3336 & +b_ms +, + +3337 & +p +-> +b_id +[0]); + +3339 i( +us +) { + +3340 + `e_pe_ +( +p +->p); + +3341 + `e_ +( +p +); + +3342  +NULL +; + +3347  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +3349  +us + = + `e_pe_pt__c_to_b +( +p +->p, + +3350 +p +-> + +3351 +pt__id + + +3352 [ +i +], + +3353 +p +-> + +3354 +b_id +[0]); + +3356 i( +us +) { + +3357 + `e_pe_ +( +p +->p); + +3358 + `e_ +( +p +); + +3359  +NULL +; + +3365  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +3366  +us + = + `e_pe_pt__ab +( +p +->p, + +3367 +p +-> +pt__id +[ +i +]); + +3369 i( +us +) { + +3370 + `e_pe_ +( +p +->p); + +3371 + `e_ +( +p +); + +3372  +NULL +; + +3377 i( + `e_pe_check +( +p +->p) < 0) { + +3378 + `e_pe_ +( +p +->p); + +3379 + `e_ +( +p +); + +3380  +NULL +; + +3384 +p +-> +n_msgq + = +ms +->n_msgq; + +3385  +i + = 0; i < +p +-> +n_msgq +; i++) + +3386 +p +-> +msgq_ +[ +i +] = +ms +->msgq_in[i]; + +3387  +i + = 0; i < +p +-> +n_msgq +; i++) + +3388 +p +-> +msgq_out +[ +i +] = +ms +->msgq_out[i]; + +3391 + `memy +( +p +-> +hdrs +, handlers, (p->handlers)); + +3393 #ifde +VNF_ACL + + +3396 +lib_p_pktmbuf_tx_po + = + `e_pktmbuf_po_ +( + +3398 +NB_ARPICMP_MBUF +, 32, + +3399 0, +RTE_MBUF_DEFAULT_BUF_SIZE +, + +3400 + `e_sock_id +()); + +3402 i( +lib_p_pktmbuf_tx_po + = +NULL +) { + +3403 + `tf +("ARP mbufool create failed.\n"); + +3404  +NULL +; + +3407 +lib_p_pkt + = + `e_pktmbuf_loc +( +lib_p_pktmbuf_tx_po +); + +3408 i( +lib_p_pkt + = +NULL +) { + +3409 + `tf +("ARPib_arp_pktlloc failed.\n"); + +3410  +NULL +; + +3414 +p_hash_ms +. +sock_id + = + `e_sock_id +(); + +3415 +p_hash_ms +. +s + = +MAX_NUM_ARP_ENTRIES +; + +3416 +p_hash_hd + = + `e_hash_ +(& +p_hash_ms +); + +3418 i( +p_hash_hd + = +NULL +) { + +3419 + `tf +("ARPte_hash_create failed. socket %d ...\n", + +3420 +p_hash_ms +. +sock_id +); + +3421  +NULL +; + +3423 + `tf +("p_hash_hd %p\n\n", (*) +p_hash_hd +); + +3426 +nd_hash_ms +. +sock_id + = + `e_sock_id +(); + +3427 +nd_hash_ms +. +s + = +MAX_NUM_ND_ENTRIES +; + +3428 +nd_hash_hd + = + `e_hash_ +(& +nd_hash_ms +); + +3430 i( +nd_hash_hd + = +NULL +) { + +3431 + `tf +("NDte_hash_create failed. socket %d ...\n", + +3432 +nd_hash_ms +. +sock_id +); + +3433  +NULL +; + +3436 + `tf +("nd_hash_hd %p\n\n", (*) +nd_hash_hd +); + +3438  +p +; + +3439 + } +} + +3441  + $pe_picmp_ +(* +pe +) + +3443  +pe + * +p + = (pipeline *)pipeline; + +3446 i( +p + = +NULL +) + +3450 + `e_pe_ +( +p +->p); + +3451 + `e_ +( +p +); + +3453 + } +} + +3455  + $pe_picmp_tim +(* +pe +) + +3457  +pe + * +p + = (pipeline *)pipeline; + +3459 + `pe_msg_q_hd +( +p +); + +3460 + `e_pe_ush +( +p +->p); + +3463 + } +} + +3466 + $pe_picmp_ack +(* +pe +, +ut32_t + +pt_ +, ut32_* +pt_out +) + +3468  +pe + * +p + = (pipeline *)pipeline; + +3471 i(( +p + = +NULL +|| ( +pt_ + >p-> +n_pts_ +|| ( +pt_out + == NULL)) + +3474 * +pt_out + = +pt_ + / +p +-> +n_pts_ +; + +3476 + } +} + +3478  +pe_be_s + + gpe_picmp_be_s + = { + +3479 . +f_ + = +pe_picmp_ +, + +3480 . + gf_ + = +pe_picmp_ +, + +3481 . + gf_run + = +NULL +, + +3482 . + gf_tim + = +pe_picmp_tim +, + +3483 . + gf_ack + = +pe_picmp_ack +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.h + +17 #ide +__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + +18  + #__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + + ) + +20  + ~"pe_comm_be.h +" + +21  + #PIPELINE_ARPICMP_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +23 + `f_ah +( \ + +24 +__e_unud +  +e_pe + * +e_p +, \ + +25  +e_mbuf + ** +pkts +, \ + +26 +ut32_t + +n_pkts +, \ + +27 * +g +) \ + +29 +ut32_t + +i +, +j +; \ + +31  +j + = 0; j < +n_pkts +; j++) \ + +32 + `e_etch0 +( +pkts +[ +j +]); \ + +34  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +35 + `f_pkt4_wk +(& +pkts +[ +i +], i, +g +); \ + +37  ; +i + < +n_pkts +; i++) \ + +38 + `f_pkt_wk +( +pkts +[ +i +], i, +g +); \ + +42 } + + ) + +44  +p_ms + * +myA +; + +45  +t_pkt1 +( +e_mbuf + * +pkt +); + +46  +h_addr + * +g_lk_hw_addr +( +ut8_t + +out_pt +); + +47 #ifde +VNF_ACL + + +49  + ~ + +50  + ~"e_h.h +" + +51  + ~"p.h +" + +53 #i( +RTE_BYTE_ORDER + = +RTE_LITTLE_ENDIAN +) + +56  + #CHECK_ENDIAN_16 +( +x + + `e_be_to_u_16 +(x) + + ) + +57  + #CHECK_ENDIAN_32 +( +x + + `e_be_to_u_32 +(x) + + ) + +59  + #CHECK_ENDIAN_16 +( +x +(x) + + ) + +60  + #CHECK_ENDIAN_32 +( +x +(x) + + ) + +64  + #MAX_ARP_RT_ENTRY + 16 + + ) + +65  + #MAX_ND_RT_ENTRY + 16 + + ) + +67  + #ND_IPV6_ADDR_SIZE + 16 + + ) + +70 + mARP_FOUND +, + +71 + mARP_NOT_FOUND +, + +72 + mNH_NOT_FOUND +, + +75 + ep_key_ty + { + +76 + mARP_IPV4 +, + +78 + mND_IPV6 +, + +81  + sp_key_v4 + { + +82 +ut32_t + + m +; + +83 +ut8_t + + mpt_id +; + +84 +ut8_t + + mfr1 +; + +85 +ut8_t + + mfr2 +; + +86 +ut8_t + + mfr3 +; + +90  + snd_key_v6 + { + +93 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +94 +ut8_t + + mpt_id +; + +95 +ut8_t + + mfr1 +; + +96 +ut8_t + + mfr2 +; + +97 +ut8_t + + mfr3 +; + +100  + sp_key + { + +101 +p_key_ty + + mty +; + +103  +p_key_v4 + + mv4 +; + +104 } + mkey +; + +107  + slib_p_rou_b_y + { + +108 +ut32_t + + m +; + +109 +ut32_t + + mmask +; + +110 +ut32_t + + mpt +; + +111 +ut32_t + + mnh +; + +114  + slib_nd_rou_b_y + { + +115 +ut8_t + + mv6 +[16]; + +116 +ut8_t + + mdth +; + +117 +ut32_t + + mpt +; + +118 +ut8_t + + mnhv6 +[16]; + +120  +lib_p_rou_b_y + +lib_p_rou_b +[ +MAX_ARP_RT_ENTRY +]; + +121  +lib_nd_rou_b_y + +lib_nd_rou_b +[ +MAX_ND_RT_ENTRY +]; + +123 +ut8_t + +v__pt_a +[ +PIPELINE_MAX_PORT_IN +]; + +124  +cvt_efixn_to_tmask_v6 +( +ut32_t + +dth +, + +125 +ut8_t + +tmask_v6 +[]); + +126 +ut32_t + +g_nh +(uint32_t, uint32_t*); + +127  +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pt +, ut8_ +nhv6 +[]); + +129 +ut32_t + +ARPICMP_DEBUG +; + +133  + #COMPLETE + 1 + + ) + +135  + #INCOMPLETE + 0 + + ) + +138 +ut32_t + +NDIPV6_DEBUG +; + +141  + #ICMPv6_COMPLETE + 1 + + ) + +143  + #ICMPv6_INCOMPLETE + 0 + + ) + +145  + sp_y_da + { + +146  +h_addr + + mh_addr +; + +147 +ut8_t + + mpt +; + +148 +ut8_t + + mus +; + +149 +ut32_t + + m +; + +150 } +__ibu__ + (( +__cked__ +)); + +153  + snd_y_da + { + +154  +h_addr + + mh_addr +; + +155 +ut8_t + + mpt +; + +156 +ut8_t + + mus +; + +157 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +158 } +__ibu__ + (( +__cked__ +)); + +160  +g_de_mac_addss +(cڡ +ut32_t + +addr +, cڡ ut32_ +phy_pt +, + +161  +h_addr + * +hw_addr +, +ut32_t + * +nh +); + +162  +g_de_mac_addr +(cڡ +ut32_t + +addr +, cڡ ut32_ +phy_pt +, + +163  +h_addr + * +hw_addr +); + +165  +g_de_mac_addss_v6 +( +ut8_t + +v6addr +[], +ut32_t + +phy_pt +, + +166  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + +168  +lib_p_que_p +( + +169 cڡ +ut32_t + +addr +, + +170 cڡ +ut32_t + +phy_pt +, + +171  +e_pe + * +e_p +); + +173  +t_p_b +(); + +174  +t_nd_b +(); + +175  +move_p_y +( +ut32_t + +addr +, +ut8_t + +ptid +); + +176  +move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +ptid +); + +177  +puϋ_p_y +(cڡ  +h_addr + * +hw_addr +, +ut32_t + +addr +, + +178 +ut8_t + +ptid +); + +180  +puϋ_nd_y +(cڡ  +h_addr + * +hw_addr +, +ut8_t + + +[], + +181 +ut8_t + +ptid +); + +182  +que_p +( +ut8_t + +pt_id +, +ut32_t + + +,  +e_pe + * +e_p +); + +183  +que_p_wp +( +ut8_t + +pt_id +, +ut32_t + + +); + +184  +que_echo +( +pt_id +, +ut32_t + + +); + +186  +oss_picmp_pkt +( +e_mbuf + * +pkt +, +ut32_t + +out_pt +, + +187 +ut32_t + +pkt_num +); + +189  +p_y_da + * +ve_p_y +(cڡ  +p_key_v4 + +p_key +); + +190  +nd_y_da + * +ve_nd_y +( +nd_key_v6 + +nd_key +); + +192  +nd_y_da + * +ve_nd_y +( +nd_key_v6 + +nd_key +); + +194  +lib_nd_ + +p_ms + * +p +); + +195  +t_pkt1 +( +e_mbuf + * +pkt +); + +199 +ut8_t + + glb_out_id +[ +PIPELINE_MAX_PORT_IN +]; + +200  +pe + * + gldb_pe +[ +PIPELINE_MAX_PORT_IN +]; + +201  +pe + * + gl_pe +[ +PIPELINE_MAX_PORT_IN +]; + +202 +ut8_t + + gvnf_to_ldb_m +[ +PIPELINE_MAX_PORT_IN +]; + +203 +ut8_t + + gpt_to_ldb_m +[ +PIPELINE_MAX_PORT_IN +]; + +204 +ut8_t + + gldb_pe_nums +[ +PIPELINE_MAX_PORT_IN +]; + +207 +ut8_t + + glb_out_id +[ +PIPELINE_MAX_PORT_IN +]; + +208  +pe + * + gp_pe +[ +PIPELINE_MAX_PORT_IN +]; + +209 +ut8_t + + gvnf_to_p_m +[ +PIPELINE_MAX_PORT_IN +]; + +210 +ut8_t + + gpt_to_p_m +[ +PIPELINE_MAX_PORT_IN +]; + +211 +ut8_t + + gp_pe_nums +[ +PIPELINE_MAX_PORT_IN +]; + +214  +t_pt_to_ldb_m +( +ut8_t + +pe_num +); + +215 +ut8_t + +g_pt_to_ldb_m +(ut8_ +phy_pt_id +); + +218  +t_phy_pt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +219  +t_phy_out_m +( +ut8_t + +pe_num +, ut8_* +m +); + +221  +t_out_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +); + +223 +ut8_t + +g_ldb_out_id +(ut8_ +au_phy_pt +); + +225 +ut8_t + +g_vnf_t_num +(ut8_ +pe_num +); + +227  +pes_pt_fo +(); + +228  +pes_m_fo +(); + +229  +gi_ldb_to_p +( +ut8_t + +pe_num +,  +pe + * +p +, + +230 +__e_unud +  +p_ms + * +p +); + +232 +ut8_t + + gSWQ_to_Pt_m +[128]; + +234  +pe_be_s + +pe_picmp_be_s +; + +235  +gi_pe_Qs +( +ut8_t + +pe_num +,  +pe + * +p +); + +236  +t_lk_m +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +); + +237  +t_out_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +); + +238  +t_phy_out_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +); + +239  +t_phy_pt_id +( +ut8_t + +pe_num +,  +pe + * +p +, ut8_* +m +); + +244 + epe_picmp_msg_q_ty + { + +245 + mPIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +, + +246 + mPIPELINE_ARPICMP_MSG_REQS + + +252  + spe_picmp_y_dbg_msg_q + { + +253 +pe_msg_q_ty + + mty +; + +254 +pe_picmp_msg_q_ty + + msubty +; + +257 +ut8_t + + mda +[2]; + +264  + spe_picmp__pt_h_g + { + +265  +pe_picmp + * + mp +; + +266 +ut8_t + + m_pt_id +; + +269  + spe_picmp_y_dbg_msg_r + { + +270  + mus +; + +273 #ifde +VNF_ACL + + +276  + sicmpv6_hdr + { + +277 +ut8_t + + micmpv6_ty +; + +278 +ut8_t + + micmpv6_code +; + +279 +ut16_t + + micmpv6_cksum +; + +280 } +__ibu__ + (( +__cked__ +)); + +285  + sicmpv6_fo_hdr + { + +286 +ut16_t + + micmpv6_idt +; + +287 +ut16_t + + micmpv6_q_nb +; + +288 } +__ibu__ + (( +__cked__ +)); + +293  + sicmpv6_nd_hdr + { + +295 +ut32_t + + micmpv6_rved +; + +298 +ut8_t + + mrg_v6 +[16]; + +300 +ut8_t + + mty +; + +301 +ut8_t + + mngth +; + +302  +h_addr + + mlk_y_addss +; + +303 } +__ibu__ + (( +__cked__ +)); + +306  + #ICMPV6_PROTOCOL_ID + 58 + + ) + +307  + #ICMPV6_ECHO_REQUEST + 0x0080 + + ) + +308  + #ICMPV6_ECHO_REPLY + 0x0081 + + ) + +309  + #ICMPV6_NEIGHBOR_SOLICITATION + 0x0087 + + ) + +310  + #ICMPV6_NEIGHBOR_ADVERTISEMENT + 0x0088 + + ) + +311  + #IPV6_MULTICAST + 0xFF02 + + ) + +313  + #NEIGHBOR_SOLICITATION_SET + 0x40000000 + + ) + +314 + eicmpv6_lk_y_Addss_ty + { + +315 + me_Sour_Lk_Lay_Addss + = 1, + +316 + me_Tg_Lk_Lay_Addss +, + +317 + me_Lk_Lay_Addss + + +320 +ut8_t + +is_mui_v6_addr +(ut8_ +v6 +[]); + +321  + sicmpv6_pt_addss + { + +322 +ut32_t + + mv6 +[16]; + +323 +ut64_t + + mmac_addr +; + +326  +icmpv6_pt_addss + + gicmpv6_pt_addss +[ +RTE_MAX_ETHPORTS +]; + +328  + #MAX_NUM_ICMPv6_ENTRIES + 64 + + ) + +330  +e_mbuf + * + glib_icmpv6_pkt +; + +331  +que_icmpv6_echo +( +ut32_t + +pt_id +, +ut8_t + +v6 +[]); + +332  +que_icmpv6_echo_mesge +( +ut16_t + +pt_id +, +ut8_t + +v6 +[], + +333  +h_addr + * +gw_addr +); + +335 +oss_icmpv6_pkt +( +e_mbuf + * +pkt +, +ut32_t + +out_pt +, ut32_ +pkt_num +); + +337  +g_de_mac_addr_pt +(cڡ +ut32_t + +addr +, + +338 +ut32_t + * +phy_pt +,  +h_addr + * +hw_addr +); + +340  +g_de_mac_addss_v6_pt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pt +, + +341  +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + + @VIL/pipeline_common/pipeline_common_be.c + +17  + ~ + +18  + ~ + +19  + ~ + +21  + ~"pe_comm_be.h +" + +24 + $pe_msg_q_pg_hdr +( +__e_unud +  +pe + * +p +, + +25 * +msg +) + +27  +pe_msg_r + * +r + = +msg +; + +29 +r +-> +us + = 0; + +31  +r +; + +32 + } +} + +35 + $pe_msg_q_s_pt__hdr +( +pe + * +p +, + +36 * +msg +) + +38  +pe_s_msg_q + * +q + = +msg +; + +39  +pe_s_pt__msg_r + * +r + = +msg +; + +40 +ut32_t + +pt_id +; + +43 i( +q +-> +id + > +p +-> +n_pts_ +) { + +44 +r +-> +us + = -1; + +45  +r +; + +47 +pt_id + = +p +-> +pt__id +[ +q +-> +id +]; + +50 +r +-> +us + = + `e_pe_pt__s_ad +( +p +->p, + +51 +pt_id +, + +52 & +r +-> +s +, + +55  +r +; + +56 + } +} + +59 + $pe_msg_q_s_pt_out_hdr +( +pe + * +p +, + +60 * +msg +) + +62  +pe_s_msg_q + * +q + = +msg +; + +63  +pe_s_pt_out_msg_r + * +r + = +msg +; + +64 +ut32_t + +pt_id +; + +67 i( +q +-> +id + > +p +-> +n_pts_out +) { + +68 +r +-> +us + = -1; + +69  +r +; + +71 +pt_id + = +p +-> +pt_out_id +[ +q +-> +id +]; + +74 +r +-> +us + = + `e_pe_pt_out_s_ad +( +p +->p, + +75 +pt_id +, + +76 & +r +-> +s +, + +79  +r +; + +80 + } +} + +83 + $pe_msg_q_s_b_hdr +( +pe + * +p +, + +84 * +msg +) + +86  +pe_s_msg_q + * +q + = +msg +; + +87  +pe_s_b_msg_r + * +r + = +msg +; + +88 +ut32_t + +b_id +; + +91 i( +q +-> +id + > +p +-> +n_bs +) { + +92 +r +-> +us + = -1; + +93  +r +; + +95 +b_id + = +p +->b_id[ +q +-> +id +]; + +98 +r +-> +us + = + `e_pe_b_s_ad +( +p +->p, + +99 +b_id +, + +100 & +r +-> +s +, + +103  +r +; + +104 + } +} + +107 + $pe_msg_q_pt__ab_hdr +( +pe + * +p +, + +108 * +msg +) + +110  +pe_pt__msg_q + * +q + = +msg +; + +111  +pe_msg_r + * +r + = +msg +; + +112 +ut32_t + +pt_id +; + +115 i( +q +-> +pt_id + > +p +-> +n_pts_ +) { + +116 +r +-> +us + = -1; + +117  +r +; + +119 +pt_id + = +p +-> +pt__id +[ +q +->port_id]; + +122 +r +-> +us + = + `e_pe_pt__ab +( +p +->p, + +123 +pt_id +); + +125  +r +; + +126 + } +} + +129 + $pe_msg_q_pt__dib_hdr +( +pe + * +p +, + +130 * +msg +) + +132  +pe_pt__msg_q + * +q + = +msg +; + +133  +pe_msg_r + * +r + = +msg +; + +134 +ut32_t + +pt_id +; + +137 i( +q +-> +pt_id + > +p +-> +n_pts_ +) { + +138 +r +-> +us + = -1; + +139  +r +; + +141 +pt_id + = +p +-> +pt__id +[ +q +->port_id]; + +144 +r +-> +us + = + `e_pe_pt__dib +( +p +->p, + +145 +pt_id +); + +147  +r +; + +148 + } +} + +151 + $pe_msg_q_vid_hdr +( +__e_unud +  +pe + * +p +, + +152 * +msg +) + +154  +pe_msg_r + * +r + = +msg +; + +156 +r +-> +us + = -1; + +158  +r +; + +159 + } +} + +162 + $pe_msg_q_hd +( +pe + * +p +) + +164 +ut32_t + +msgq_id +; + +166  +msgq_id + = 0; msgq_id < +p +-> +n_msgq +; msgq_id++) { + +168  +pe_msg_q + * +q +; + +169 +pe_msg_q_hdr + +f_hd +; + +171 +q + = + `pe_msg_cv +( +p +, +msgq_id +); + +172 i( +q + = +NULL +) + +175 +f_hd + = ( +q +-> +ty + < +PIPELINE_MSG_REQS +) ? + +176 +p +-> +hdrs +[ +q +-> +ty +] : + +177 +pe_msg_q_vid_hdr +; + +179 i( +f_hd + = +NULL +) + +180 +f_hd + = +pe_msg_q_vid_hdr +; + +182 + `pe_msg_nd +( +p +, + +183 +msgq_id +, + +184 + `f_hd +( +p +, (* +q +)); + +189 + } +} + + @VIL/pipeline_common/pipeline_common_be.h + +17 #ide +__INCLUDE_PIPELINE_COMMON_BE_H__ + + +18  + #__INCLUDE_PIPELINE_COMMON_BE_H__ + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +24  + ~"pe_be.h +" + +26  + gpe +; + +28 + epe_msg_q_ty + { + +29 + mPIPELINE_MSG_REQ_PING + = 0, + +30 + mPIPELINE_MSG_REQ_STATS_PORT_IN +, + +31 + mPIPELINE_MSG_REQ_STATS_PORT_OUT +, + +32 + mPIPELINE_MSG_REQ_STATS_TABLE +, + +33 + mPIPELINE_MSG_REQ_PORT_IN_ENABLE +, + +34 + mPIPELINE_MSG_REQ_PORT_IN_DISABLE +, + +35 + mPIPELINE_MSG_REQ_CUSTOM +, + +36 + mPIPELINE_MSG_REQS + + +39 *(* + tpe_msg_q_hdr +)( + tpe + * + tp +, * + tmsg +); + +41  + spe + { + +42  +e_pe + * + mp +; + +43 +ut32_t + + mpt__id +[ +PIPELINE_MAX_PORT_IN +]; + +44 +ut32_t + + mpt_out_id +[ +PIPELINE_MAX_PORT_OUT +]; + +45 +ut32_t + + mb_id +[ +PIPELINE_MAX_TABLES +]; + +46  +e_rg + * + mmsgq_ +[ +PIPELINE_MAX_MSGQ_IN +]; + +47  +e_rg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +49 +ut32_t + + mn_pts_ +; + +50 +ut32_t + + mn_pts_out +; + +51 +ut32_t + + mn_bs +; + +52 +ut32_t + + mn_msgq +; + +54 +pe_msg_q_hdr + + mhdrs +[ +PIPELINE_MSG_REQS +]; + +55  + mme +[ +PIPELINE_NAME_SIZE +]; + +56 +ut32_t + + mlog_v +; + +59 + epe_log_v + { + +60 + mPIPELINE_LOG_LEVEL_HIGH + = 1, + +61 + mPIPELINE_LOG_LEVEL_LOW +, + +62 + mPIPELINE_LOG_LEVELS + + +65  + #PLOG +( +p +, +v +, +fmt +, ...) \ + +67 i( +p +-> +log_v + > +PIPELINE_LOG_LEVEL_ + ## +v +) \ + +68 + `rtf +( +dout +, "[%s] " +fmt + "\n", +p +-> +me +, ## +__VA_ARGS__ +);\ + +69 } 0) + + ) + +71  +le + * + +72 + $pe_msg_cv +( +pe + * +p +, + +73 +ut32_t + +msgq_id +) + +75  +e_rg + * +r + = +p +-> +msgq_ +[ +msgq_id +]; + +76 * +msg +; + +77  +us + = + `e_rg_sc_dequeue +( +r +, & +msg +); + +79 i( +us + != 0) + +80  +NULL +; + +82  +msg +; + +83 + } +} + +85  +le +  + +86 + $pe_msg_nd +( +pe + * +p +, + +87 +ut32_t + +msgq_id +, + +88 * +msg +) + +90  +e_rg + * +r + = +p +-> +msgq_out +[ +msgq_id +]; + +91  +us +; + +94 +us + = + `e_rg__queue +( +r +, +msg +); + +95 }  +us + =- +ENOBUFS +); + +96 + } +} + +98  + spe_msg_q + { + +99 +pe_msg_q_ty + + mty +; + +102  + spe_s_msg_q + { + +103 +pe_msg_q_ty + + mty +; + +104 +ut32_t + + mid +; + +107  + spe_pt__msg_q + { + +108 +pe_msg_q_ty + + mty +; + +109 +ut32_t + + mpt_id +; + +112  + spe_cuom_msg_q + { + +113 +pe_msg_q_ty + + mty +; + +114 +ut32_t + + msubty +; + +117  + spe_msg_r + { + +118  + mus +; + +121  + spe_s_pt__msg_r + { + +122  + mus +; + +123  +e_pe_pt__s + + ms +; + +126  + spe_s_pt_out_msg_r + { + +127  + mus +; + +128  +e_pe_pt_out_s + + ms +; + +131  + spe_s_b_msg_r + { + +132  + mus +; + +133  +e_pe_b_s + + ms +; + +136 * +pe_msg_q_pg_hdr +( +pe + * +p +, * +msg +); + +137 * +pe_msg_q_s_pt__hdr +( +pe + * +p +, * +msg +); + +138 * +pe_msg_q_s_pt_out_hdr +( +pe + * +p +, * +msg +); + +139 * +pe_msg_q_s_b_hdr +( +pe + * +p +, * +msg +); + +140 * +pe_msg_q_pt__ab_hdr +( +pe + * +p +, * +msg +); + +141 * +pe_msg_q_pt__dib_hdr +( +pe + * +p +, * +msg +); + +142 * +pe_msg_q_vid_hdr +( +pe + * +p +, * +msg +); + +144  +pe_msg_q_hd +( +pe + * +p +); + + @VIL/pipeline_common/pipeline_common_fe.c + +17  + ~ + +18  + ~ + +19  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~"pe_comm_.h +" + +34 #ide +VNF_ACL + + +35  + ~"r.h +" + +39 + $p_pe_pg +( +p_ms + * +p +, + +40 +ut32_t + +pe_id +) + +42  +p_pe_ms + * +p +; + +43  +pe_msg_q + * +q +; + +44  +pe_msg_r + * +r +; + +45  +us + = 0; + +48 i( +p + = +NULL +) + +51 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +52 i( +p + = +NULL +) + +56 +q + = + `p_msg_loc +( +p +); + +57 i( +q + = +NULL +) + +61 +q +-> +ty + = +PIPELINE_MSG_REQ_PING +; + +64 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +65 i( +r + = +NULL +) + +69 +us + = +r +->status; + +72 + `p_msg_ +( +p +, +r +); + +74  +us +; + +75 + } +} + +78 + $p_pe_s_pt_ +( +p_ms + * +p +, + +79 +ut32_t + +pe_id +, + +80 +ut32_t + +pt_id +, + +81  +e_pe_pt__s + * +s +) + +83  +p_pe_ms + * +p +; + +84  +pe_s_msg_q + * +q +; + +85  +pe_s_pt__msg_r + * +r +; + +86  +us + = 0; + +89 i(( +p + = +NULL +) || + +90 ( +s + = +NULL +)) + +93 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +94 i(( +p + = +NULL +) || + +95 ( +pt_id + > +p +-> +n_pktq_ +)) + +99 +q + = + `p_msg_loc +( +p +); + +100 i( +q + = +NULL +) + +104 +q +-> +ty + = +PIPELINE_MSG_REQ_STATS_PORT_IN +; + +105 +q +-> +id + = +pt_id +; + +108 +r + = ( +pe_s_pt__msg_r + *) + +109 + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +110 i( +r + = +NULL +) + +114 +us + = +r +->status; + +115 i( +us + == 0) + +116 + `memy +( +s +, & +r +->stats, (rsp->stats)); + +119 + `p_msg_ +( +p +, +r +); + +121  +us +; + +122 + } +} + +125 + $p_pe_s_pt_out +( +p_ms + * +p +, + +126 +ut32_t + +pe_id +, + +127 +ut32_t + +pt_id +, + +128  +e_pe_pt_out_s + * +s +) + +130  +p_pe_ms + * +p +; + +131  +pe_s_msg_q + * +q +; + +132  +pe_s_pt_out_msg_r + * +r +; + +133  +us + = 0; + +136 i(( +p + = +NULL +) || + +137 ( +pe_id + > +p +-> +n_pes +) || + +138 ( +s + = +NULL +)) + +141 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +142 i(( +p + = +NULL +) || + +143 ( +pt_id + > +p +-> +n_pktq_out +)) + +147 +q + = + `p_msg_loc +( +p +); + +148 i( +q + = +NULL +) + +152 +q +-> +ty + = +PIPELINE_MSG_REQ_STATS_PORT_OUT +; + +153 +q +-> +id + = +pt_id +; + +156 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +157 i( +r + = +NULL +) + +161 +us + = +r +->status; + +162 i( +us + == 0) + +163 + `memy +( +s +, & +r +->stats, (rsp->stats)); + +166 + `p_msg_ +( +p +, +r +); + +168  +us +; + +169 + } +} + +172 + $p_pe_s_b +( +p_ms + * +p +, + +173 +ut32_t + +pe_id +, + +174 +ut32_t + +b_id +, + +175  +e_pe_b_s + * +s +) + +177  +p_pe_ms + * +p +; + +178  +pe_s_msg_q + * +q +; + +179  +pe_s_b_msg_r + * +r +; + +180  +us + = 0; + +183 i(( +p + = +NULL +) || + +184 ( +s + = +NULL +)) + +187 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +188 i( +p + = +NULL +) + +192 +q + = + `p_msg_loc +( +p +); + +193 i( +q + = +NULL +) + +197 +q +-> +ty + = +PIPELINE_MSG_REQ_STATS_TABLE +; + +198 +q +-> +id + = +b_id +; + +201 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +202 i( +r + = +NULL +) + +206 +us + = +r +->status; + +207 i( +us + == 0) + +208 + `memy +( +s +, & +r +->stats, (rsp->stats)); + +211 + `p_msg_ +( +p +, +r +); + +213  +us +; + +214 + } +} + +217 + $p_pe_pt__ab +( +p_ms + * +p +, + +218 +ut32_t + +pe_id +, + +219 +ut32_t + +pt_id +) + +221  +p_pe_ms + * +p +; + +222  +pe_pt__msg_q + * +q +; + +223  +pe_msg_r + * +r +; + +224  +us + = 0; + +227 i( +p + = +NULL +) + +230 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +231 i(( +p + = +NULL +) || + +232 ( +pt_id + > +p +-> +n_pktq_ +)) + +236 +q + = + `p_msg_loc +( +p +); + +237 i( +q + = +NULL +) + +241 +q +-> +ty + = +PIPELINE_MSG_REQ_PORT_IN_ENABLE +; + +242 +q +-> +pt_id + =ort_id; + +245 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +246 i( +r + = +NULL +) + +250 +us + = +r +->status; + +253 + `p_msg_ +( +p +, +r +); + +255  +us +; + +256 + } +} + +259 + $p_pe_pt__dib +( +p_ms + * +p +, + +260 +ut32_t + +pe_id +, + +261 +ut32_t + +pt_id +) + +263  +p_pe_ms + * +p +; + +264  +pe_pt__msg_q + * +q +; + +265  +pe_msg_r + * +r +; + +266  +us + = 0; + +269 i( +p + = +NULL +) + +272 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +pe_id +, +p +); + +273 i(( +p + = +NULL +) || + +274 ( +pt_id + > +p +-> +n_pktq_ +)) + +278 +q + = + `p_msg_loc +( +p +); + +279 i( +q + = +NULL +) + +283 +q +-> +ty + = +PIPELINE_MSG_REQ_PORT_IN_DISABLE +; + +284 +q +-> +pt_id + =ort_id; + +287 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +288 i( +r + = +NULL +) + +292 +us + = +r +->status; + +295 + `p_msg_ +( +p +, +r +); + +297  +us +; + +298 + } +} + +301 + $p_lk_cfig +( +p_ms + * +p +, + +302 +ut32_t + +lk_id +, + +303 +ut32_t + + +, + +304 +ut32_t + +dth +) + +306  +p_lk_ms + * +p +; + +307 +ut32_t + +i +, +tmask +, +ho +, +b +; + +310 i( +p + = +NULL +) + +313 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +314 i( +p + = +NULL +) { + +315 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +316 +lk_id +); + +320 i( +p +-> +e +) { + +321 + `APP_LOG +( +p +, +HIGH +, "%s is UP,lease bring it DOWN first", + +322 +p +-> +me +); + +326 +tmask + = (~0U<< (32 - +dth +); + +327 +ho + = + + & +tmask +; + +328 +b + = +ho + | (~ +tmask +); + +330 i(( + + == 0) || + +331 ( + + = +UINT32_MAX +) || + +332 ( + + = +ho +) || + +333 ( + + = +b +)) { + +334 + `APP_LOG +( +p +, +HIGH +, "Illegal IPddress"); + +338  +i + = 0; i < +p +-> +n_lks +; i++) { + +339  +p_lk_ms + * +lk + = & +p +-> +lk_ms +[ +i +]; + +340 +mylk +[ +i +] = * +lk +; + +341 i( + `rcmp +( +p +-> +me +, +lk +->name) == 0) + +344 i( +lk +-> + + == ip) { + +345 + `APP_LOG +( +p +, +HIGH +, + +347 +lk +-> +me +); + +352 i(( +dth + == 0) || (depth > 32)) { + +353 + `APP_LOG +( +p +, +HIGH +, "Illegal value for deptharameter " + +354 "(%" +PRIu32 + ")", + +355 +dth +); + +360 +p +-> + + = ip; + +361 +p +-> +dth + = depth; + +362 #ide +VNF_ACL + + +363 i( + `ifm_add_v4_pt +( +lk_id +, + `e_bsw32 +( + +), +dth += +IFM_FAILURE +) + +368 + } +} + +371  + $cvt_efixn_to_tmask_v6 +( +ut32_t + +dth +, +ut8_t + +tmask_v6 +[]) + +373  +mod +, +div +, +i +; + +375 + `memt +( +tmask_v6 +, 0, 16); + +377 +mod + = +dth + % 8; + +378 +div + = +dth + / 8; + +380  +i + = 0; i < +div +; i++) + +381 +tmask_v6 +[ +i +] = 0xff; + +383 +tmask_v6 +[ +i +] = (~0 << (8 - +mod +)); + +386 + } +} + +389 + $g_ho_pti_v6 +( +ut8_t + +v6 +[], ut8_ +tmask +[], ut8_ +ho_v6 +[]) + +391  +i +; + +393  +i + = 0; i < 16; i++) { + +394 +ho_v6 +[ +i +] = +v6 +[i] & +tmask +[i]; + +398 + } +} + +401 + $g_b_pti_v6 +( +ut8_t + +ho +[], ut8_ +tmask +[], ut8_ +b_v6 +[]) + +403  +i +; + +405  +i + = 0; i < 16; i++) { + +406 +b_v6 +[ +i +] = +ho +[i] | ~ +tmask +[i]; + +410 + } +} + +413 + $p_lk_cfig_v6 +( +p_ms + * +p +, + +414 +ut32_t + +lk_id +, +ut8_t + +v6 +[], ut32_ +dth +) + +416  +p_lk_ms + * +p +; + +417 +ut32_t + +i +; + +418 +ut8_t + +tmask_v6 +[16], +ho +[16], +b +[16]; + +421 i( +p + = +NULL +) + +424 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +425 i( +p + = +NULL +) { + +426 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +427 +lk_id +); + +431 i( +p +-> +e +) { + +432 + `APP_LOG +( +p +, +HIGH +, "%s is UP,lease bring it DOWN first", + +433 +p +-> +me +); + +437 + `cvt_efixn_to_tmask_v6 +( +dth +, +tmask_v6 +); + +438 + `g_ho_pti_v6 +( +v6 +, +tmask_v6 +, +ho +); + +439 + `g_b_pti_v6 +( +ho +, +tmask_v6 +, +b +); + +441  +i + = 0; i < +p +-> +n_lks +; i++) { + +442  +p_lk_ms + * +lk + = & +p +-> +lk_ms +[ +i +]; + +444 i( + `rcmp +( +p +-> +me +, +lk +->name) == 0) + +447 i(! + `memcmp +( +lk +-> +v6 +, ipv6, 16)) { + +448 + `APP_LOG +( +p +, +HIGH +, + +450 +lk +-> +me +); + +455 i(( +dth + == 0) || (depth > 128)) { + +456 + `APP_LOG +( +p +, +HIGH +, "Illegal value for deptharameter " + +457 "(%" +PRIu32 + ")", +dth +); + +462 + `memy +( +p +-> +v6 +, ipv6, 16); + +464 +p +-> +dth_v6 + = +dth +; + +471 #ide +VNF_ACL + + +472 i( + `ifm_add_v6_pt +( +lk_id +, +v6 +, +dth += +IFM_FAILURE +) + +476 + } +} + +479 + $p_lk_up +( +p_ms + * +p +, + +480 +ut32_t + +lk_id +) + +482  +p_lk_ms + * +p +; + +485 i( +p + = +NULL +) + +488 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +489 i( +p + = +NULL +) { + +490 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +491 +lk_id +); + +496 i( +p +-> +e +) { + +497 + `APP_LOG +( +p +, +HIGH +, "%iady UP", +p +-> +me +); + +502 +ut8_t + +mp +[16]; + +504 + `memt +( +mp +, 0, 16); + +506 i(( +p +-> + + || + `memcmp +-> +v6 +, +mp +, 16)) == 0) { + +507 + `APP_LOG +( +p +, +HIGH +, "%IPddsin s", +p +-> +me +); + +511 + `p_lk_up_ +( +p +, +p +); + +514 + } +} + +517 + $p_lk_down +( +p_ms + * +p +, + +518 +ut32_t + +lk_id +) + +520  +p_lk_ms + * +p +; + +523 i( +p + = +NULL +) + +526 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +527 i( +p + = +NULL +) { + +528 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +529 +lk_id +); + +534 i( +p +-> +e + == 0) { + +535 + `APP_LOG +( +p +, +HIGH +, "%iady DOWN", +p +-> +me +); + +539 + `p_lk_down_ +( +p +, +p +); + +542 + } +} + +548  + scmd_pg_su + { + +549 +cmdle_fixed_rg_t + + mp_rg +; + +550 +ut32_t + + mpe_id +; + +551 +cmdle_fixed_rg_t + + mpg_rg +; + +555 + $cmd_pg_rd +( + +556 * +rd_su +, + +557 +__e_unud +  +cmdle + * + +, + +558 * +da +) + +560  +cmd_pg_su + * +ms + = +rd_su +; + +561  +p_ms + * +p + = +da +; + +562  +us +; + +564 +us + = + `p_pe_pg +( +p +, +ms +-> +pe_id +); + +565 i( +us + != 0) + +566 + `tf +("Command failed\n"); + +567 + } +} + +569 +cmdle_r_tok_rg_t + + gcmd_pg_p_rg + = + +570 +TOKEN_STRING_INITIALIZER +( +cmd_pg_su +, +p_rg +, "p"); + +572 +cmdle_r_tok_num_t + + gcmd_pg_pe_id + = + +573 +TOKEN_NUM_INITIALIZER +( +cmd_pg_su +, +pe_id +, +UINT32 +); + +575 +cmdle_r_tok_rg_t + + gcmd_pg_pg_rg + = + +576 +TOKEN_STRING_INITIALIZER +( +cmd_pg_su +, +pg_rg +, "ping"); + +578 +cmdle_r__t + + gcmd_pg + = { + +579 . +f + = +cmd_pg_rd +, + +580 . + gda + = +NULL +, + +581 . + ghp_r + = "Pipelineing", + +582 . + gtoks + = { + +583 (*& +cmd_pg_p_rg +, + +584 (*& +cmd_pg_pe_id +, + +585 (*& +cmd_pg_pg_rg +, + +586 +NULL +, + +594  + scmd_s_pt__su + { + +595 +cmdle_fixed_rg_t + + mp_rg +; + +596 +ut32_t + + mpe_id +; + +597 +cmdle_fixed_rg_t + + ms_rg +; + +598 +cmdle_fixed_rg_t + + mpt_rg +; + +599 +cmdle_fixed_rg_t + + m_rg +; + +600 +ut32_t + + mpt__id +; + +604 + $cmd_s_pt__rd +( + +605 * +rd_su +, + +606 +__e_unud +  +cmdle + * + +, + +607 * +da +) + +609  +cmd_s_pt__su + * +ms + = +rd_su +; + +610  +p_ms + * +p + = +da +; + +611  +e_pe_pt__s + +s +; + +612  +us +; + +614 +us + = + `p_pe_s_pt_ +( +p +, + +615 +ms +-> +pe_id +, + +616 +ms +-> +pt__id +, + +617 & +s +); + +619 i( +us + != 0) { + +620 + `tf +("Command failed\n"); + +625 + `tf +("P%" +PRIu32 + " - stats for inputort %" PRIu32 ":\n" + +626 "\tPkt: %" +PRIu64 + "\n" + +627 "\tPktdrݳd by AH: %" +PRIu64 + "\n" + +628 "\tPktdrݳd by oth: %" +PRIu64 + "\n", + +629 +ms +-> +pe_id +, + +630 +ms +-> +pt__id +, + +631 +s +.s. +n_pkts_ +, + +632 +s +. +n_pkts_drݳd_by_ah +, + +633 +s +.s. +n_pkts_dr +); + +634 + } +} + +636 +cmdle_r_tok_rg_t + + gcmd_s_pt__p_rg + = + +637 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt__su +, +p_rg +, + +640 +cmdle_r_tok_num_t + + gcmd_s_pt__pe_id + = + +641 +TOKEN_NUM_INITIALIZER +( +cmd_s_pt__su +, +pe_id +, + +642 +UINT32 +); + +644 +cmdle_r_tok_rg_t + + gcmd_s_pt__s_rg + = + +645 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt__su +, +s_rg +, + +648 +cmdle_r_tok_rg_t + + gcmd_s_pt__pt_rg + = + +649 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt__su +, +pt_rg +, + +652 +cmdle_r_tok_rg_t + + gcmd_s_pt___rg + = + +653 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt__su +, +_rg +, + +656 +cmdle_r_tok_num_t + + gcmd_s_pt__pt__id + = + +657 +TOKEN_NUM_INITIALIZER +( +cmd_s_pt__su +, +pt__id +, + +658 +UINT32 +); + +660 +cmdle_r__t + + gcmd_s_pt_ + = { + +661 . +f + = +cmd_s_pt__rd +, + +662 . + gda + = +NULL +, + +663 . + ghp_r + = "Pipeline inputort stats", + +664 . + gtoks + = { + +665 (*& +cmd_s_pt__p_rg +, + +666 (*& +cmd_s_pt__pe_id +, + +667 (*& +cmd_s_pt__s_rg +, + +668 (*& +cmd_s_pt__pt_rg +, + +669 (*& +cmd_s_pt___rg +, + +670 (*& +cmd_s_pt__pt__id +, + +671 +NULL +, + +679  + scmd_s_pt_out_su + { + +680 +cmdle_fixed_rg_t + + mp_rg +; + +681 +ut32_t + + mpe_id +; + +682 +cmdle_fixed_rg_t + + ms_rg +; + +683 +cmdle_fixed_rg_t + + mpt_rg +; + +684 +cmdle_fixed_rg_t + + mout_rg +; + +685 +ut32_t + + mpt_out_id +; + +689 + $cmd_s_pt_out_rd +( + +690 * +rd_su +, + +691 +__e_unud +  +cmdle + * + +, + +692 * +da +) + +695  +cmd_s_pt_out_su + * +ms + = +rd_su +; + +696  +p_ms + * +p + = +da +; + +697  +e_pe_pt_out_s + +s +; + +698  +us +; + +700 +us + = + `p_pe_s_pt_out +( +p +, + +701 +ms +-> +pe_id +, + +702 +ms +-> +pt_out_id +, + +703 & +s +); + +705 i( +us + != 0) { + +706 + `tf +("Command failed\n"); + +711 + `tf +("P%" +PRIu32 + " - stats for outputort %" PRIu32 ":\n" + +712 "\tPkt: %" +PRIu64 + "\n" + +713 "\tPktdrݳd by AH: %" +PRIu64 + "\n" + +714 "\tPktdrݳd by oth: %" +PRIu64 + "\n", + +715 +ms +-> +pe_id +, + +716 +ms +-> +pt_out_id +, + +717 +s +.s. +n_pkts_ +, + +718 +s +. +n_pkts_drݳd_by_ah +, + +719 +s +.s. +n_pkts_dr +); + +720 + } +} + +722 +cmdle_r_tok_rg_t + + gcmd_s_pt_out_p_rg + = + +723 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt_out_su +, +p_rg +, + +726 +cmdle_r_tok_num_t + + gcmd_s_pt_out_pe_id + = + +727 +TOKEN_NUM_INITIALIZER +( +cmd_s_pt_out_su +, +pe_id +, + +728 +UINT32 +); + +730 +cmdle_r_tok_rg_t + + gcmd_s_pt_out_s_rg + = + +731 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt_out_su +, +s_rg +, + +734 +cmdle_r_tok_rg_t + + gcmd_s_pt_out_pt_rg + = + +735 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt_out_su +, +pt_rg +, + +738 +cmdle_r_tok_rg_t + + gcmd_s_pt_out_out_rg + = + +739 +TOKEN_STRING_INITIALIZER +( +cmd_s_pt_out_su +, +out_rg +, + +742 +cmdle_r_tok_num_t + + gcmd_s_pt_out_pt_out_id + = + +743 +TOKEN_NUM_INITIALIZER +( +cmd_s_pt_out_su +, +pt_out_id +, + +744 +UINT32 +); + +746 +cmdle_r__t + + gcmd_s_pt_out + = { + +747 . +f + = +cmd_s_pt_out_rd +, + +748 . + gda + = +NULL +, + +749 . + ghp_r + = "Pipeline outputort stats", + +750 . + gtoks + = { + +751 (*& +cmd_s_pt_out_p_rg +, + +752 (*& +cmd_s_pt_out_pe_id +, + +753 (*& +cmd_s_pt_out_s_rg +, + +754 (*& +cmd_s_pt_out_pt_rg +, + +755 (*& +cmd_s_pt_out_out_rg +, + +756 (*& +cmd_s_pt_out_pt_out_id +, + +757 +NULL +, + +765  + scmd_s_b_su + { + +766 +cmdle_fixed_rg_t + + mp_rg +; + +767 +ut32_t + + mpe_id +; + +768 +cmdle_fixed_rg_t + + ms_rg +; + +769 +cmdle_fixed_rg_t + + mb_rg +; + +770 +ut32_t + + mb_id +; + +774 + $cmd_s_b_rd +( + +775 * +rd_su +, + +776 +__e_unud +  +cmdle + * + +, + +777 * +da +) + +779  +cmd_s_b_su + * +ms + = +rd_su +; + +780  +p_ms + * +p + = +da +; + +781  +e_pe_b_s + +s +; + +782  +us +; + +784 +us + = + `p_pe_s_b +( +p +, + +785 +ms +-> +pe_id +, + +786 +ms +-> +b_id +, + +787 & +s +); + +789 i( +us + != 0) { + +790 + `tf +("Command failed\n"); + +795 + `tf +("P%" +PRIu32 + " - stats forable %" PRIu32 ":\n" + +796 "\tPkt: %" +PRIu64 + "\n" + +797 "\tPkt whookumiss: %" +PRIu64 + "\n" + +798 "\tPkt whookuh drݳd by AH: %" +PRIu64 + "\n" + +799 "\tPkt whookuh drݳd by oths: %" +PRIu64 + "\n" + +800 "\tPkt whookumisdrݳd by AH: %" +PRIu64 + "\n" + +801 "\tPkt whookumisdrݳd by oths: %" +PRIu64 + "\n", + +802 +ms +-> +pe_id +, + +803 +ms +-> +b_id +, + +804 +s +.s. +n_pkts_ +, + +805 +s +.s. +n_pkts_lookup_miss +, + +806 +s +. +n_pkts_drݳd_by_lkp_h_ah +, + +807 +s +. +n_pkts_drݳd_lkp_h +, + +808 +s +. +n_pkts_drݳd_by_lkp_miss_ah +, + +809 +s +. +n_pkts_drݳd_lkp_miss +); + +810 + } +} + +812 +cmdle_r_tok_rg_t + + gcmd_s_b_p_rg + = + +813 +TOKEN_STRING_INITIALIZER +( +cmd_s_b_su +, +p_rg +, + +816 +cmdle_r_tok_num_t + + gcmd_s_b_pe_id + = + +817 +TOKEN_NUM_INITIALIZER +( +cmd_s_b_su +, +pe_id +, + +818 +UINT32 +); + +820 +cmdle_r_tok_rg_t + + gcmd_s_b_s_rg + = + +821 +TOKEN_STRING_INITIALIZER +( +cmd_s_b_su +, +s_rg +, + +824 +cmdle_r_tok_rg_t + + gcmd_s_b_b_rg + = + +825 +TOKEN_STRING_INITIALIZER +( +cmd_s_b_su +, +b_rg +, + +828 +cmdle_r_tok_num_t + + gcmd_s_b_b_id + = + +829 +TOKEN_NUM_INITIALIZER +( +cmd_s_b_su +, +b_id +, +UINT32 +); + +831 +cmdle_r__t + + gcmd_s_b + = { + +832 . +f + = +cmd_s_b_rd +, + +833 . + gda + = +NULL +, + +834 . + ghp_r + = "Pipelineable stats", + +835 . + gtoks + = { + +836 (*& +cmd_s_b_p_rg +, + +837 (*& +cmd_s_b_pe_id +, + +838 (*& +cmd_s_b_s_rg +, + +839 (*& +cmd_s_b_b_rg +, + +840 (*& +cmd_s_b_b_id +, + +841 +NULL +, + +849  + scmd_pt__ab_su + { + +850 +cmdle_fixed_rg_t + + mp_rg +; + +851 +ut32_t + + mpe_id +; + +852 +cmdle_fixed_rg_t + + mpt_rg +; + +853 +cmdle_fixed_rg_t + + m_rg +; + +854 +ut32_t + + mpt__id +; + +855 +cmdle_fixed_rg_t + + mab_rg +; + +859 + $cmd_pt__ab_rd +( + +860 * +rd_su +, + +861 +__e_unud +  +cmdle + * + +, + +862 * +da +) + +864  +cmd_pt__ab_su + * +ms + = +rd_su +; + +865  +p_ms + * +p + = +da +; + +866  +us +; + +868 +us + = + `p_pe_pt__ab +( +p +, + +869 +ms +-> +pe_id +, + +870 +ms +-> +pt__id +); + +872 i( +us + != 0) + +873 + `tf +("Command failed\n"); + +874 + } +} + +876 +cmdle_r_tok_rg_t + + gcmd_pt__ab_p_rg + = + +877 +TOKEN_STRING_INITIALIZER +( +cmd_pt__ab_su +, +p_rg +, + +880 +cmdle_r_tok_num_t + + gcmd_pt__ab_pe_id + = + +881 +TOKEN_NUM_INITIALIZER +( +cmd_pt__ab_su +, +pe_id +, + +882 +UINT32 +); + +884 +cmdle_r_tok_rg_t + + gcmd_pt__ab_pt_rg + = + +885 +TOKEN_STRING_INITIALIZER +( +cmd_pt__ab_su +, +pt_rg +, + +888 +cmdle_r_tok_rg_t + + gcmd_pt__ab__rg + = + +889 +TOKEN_STRING_INITIALIZER +( +cmd_pt__ab_su +, +_rg +, + +892 +cmdle_r_tok_num_t + + gcmd_pt__ab_pt__id + = + +893 +TOKEN_NUM_INITIALIZER +( +cmd_pt__ab_su +, +pt__id +, + +894 +UINT32 +); + +896 +cmdle_r_tok_rg_t + + gcmd_pt__ab_ab_rg + = + +897 +TOKEN_STRING_INITIALIZER +( +cmd_pt__ab_su +, + +898 +ab_rg +, "enable"); + +900 +cmdle_r__t + + gcmd_pt__ab + = { + +901 . +f + = +cmd_pt__ab_rd +, + +902 . + gda + = +NULL +, + +903 . + ghp_r + = "Pipeline inputortnable", + +904 . + gtoks + = { + +905 (*& +cmd_pt__ab_p_rg +, + +906 (*& +cmd_pt__ab_pe_id +, + +907 (*& +cmd_pt__ab_pt_rg +, + +908 (*& +cmd_pt__ab__rg +, + +909 (*& +cmd_pt__ab_pt__id +, + +910 (*& +cmd_pt__ab_ab_rg +, + +911 +NULL +, + +919  + scmd_pt__dib_su + { + +920 +cmdle_fixed_rg_t + + mp_rg +; + +921 +ut32_t + + mpe_id +; + +922 +cmdle_fixed_rg_t + + mpt_rg +; + +923 +cmdle_fixed_rg_t + + m_rg +; + +924 +ut32_t + + mpt__id +; + +925 +cmdle_fixed_rg_t + + mdib_rg +; + +929 + $cmd_pt__dib_rd +( + +930 * +rd_su +, + +931 +__e_unud +  +cmdle + * + +, + +932 * +da +) + +934  +cmd_pt__dib_su + * +ms + = +rd_su +; + +935  +p_ms + * +p + = +da +; + +936  +us +; + +938 +us + = + `p_pe_pt__dib +( +p +, + +939 +ms +-> +pe_id +, + +940 +ms +-> +pt__id +); + +942 i( +us + != 0) + +943 + `tf +("Command failed\n"); + +944 + } +} + +946 +cmdle_r_tok_rg_t + + gcmd_pt__dib_p_rg + = + +947 +TOKEN_STRING_INITIALIZER +( +cmd_pt__dib_su +, +p_rg +, + +950 +cmdle_r_tok_num_t + + gcmd_pt__dib_pe_id + = + +951 +TOKEN_NUM_INITIALIZER +( +cmd_pt__dib_su +, +pe_id +, + +952 +UINT32 +); + +954 +cmdle_r_tok_rg_t + + gcmd_pt__dib_pt_rg + = + +955 +TOKEN_STRING_INITIALIZER +( +cmd_pt__dib_su +, +pt_rg +, + +958 +cmdle_r_tok_rg_t + + gcmd_pt__dib__rg + = + +959 +TOKEN_STRING_INITIALIZER +( +cmd_pt__dib_su +, +_rg +, + +962 +cmdle_r_tok_num_t + + gcmd_pt__dib_pt__id + = + +963 +TOKEN_NUM_INITIALIZER +( +cmd_pt__dib_su +, +pt__id +, + +964 +UINT32 +); + +966 +cmdle_r_tok_rg_t + + gcmd_pt__dib_dib_rg + = + +967 +TOKEN_STRING_INITIALIZER +( +cmd_pt__dib_su +, + +968 +dib_rg +, "disable"); + +970 +cmdle_r__t + + gcmd_pt__dib + = { + +971 . +f + = +cmd_pt__dib_rd +, + +972 . + gda + = +NULL +, + +973 . + ghp_r + = "Pipeline inputort disable", + +974 . + gtoks + = { + +975 (*& +cmd_pt__dib_p_rg +, + +976 (*& +cmd_pt__dib_pe_id +, + +977 (*& +cmd_pt__dib_pt_rg +, + +978 (*& +cmd_pt__dib__rg +, + +979 (*& +cmd_pt__dib_pt__id +, + +980 (*& +cmd_pt__dib_dib_rg +, + +981 +NULL +, + +990 + $t_lk_fo +( +p_lk_ms + * +p +) + +992  +e_h_s + +s +; + +993  +h_addr + * +mac_addr +; + +994 +ut32_t + +tmask + = (~0U<< (32 - +p +-> +dth +); + +995 +ut32_t + +ho + = +p +-> + + & +tmask +; + +996 +ut32_t + +b + = +ho + | (~ +tmask +); + +998 + `memt +(& +s +, 0, (stats)); + +999 + `e_h_s_g +( +p +-> +pmd_id +, & +s +); + +1001 +mac_addr + = ( +h_addr + *& +p +->mac_addr; + +1003 i( + ` +( +p +-> +pci_bdf +)) + +1004 + `tf +("%s(%s): flags=<%s>\n", + +1005 +p +-> +me +, + +1006 +p +-> +pci_bdf +, + +1007 ( +p +-> +e +) ? "UP" : "DOWN"); + +1009 + `tf +("%s: flags=<%s>\n", + +1010 +p +-> +me +, + +1011 ( +p +-> +e +) ? "UP" : "DOWN"); + +1013 i( +p +-> + +) + +1014 + `tf +("\t %" +PRIu32 + ".%" PRIu32 + +1015 ".%" +PRIu32 + ".%" PRIu32 + +1016 "mask %" +PRIu32 + ".%" PRIu32 + +1017 ".%" +PRIu32 + ".%" PRIu32 " " + +1018 "brd %" +PRIu32 + ".%" PRIu32 + +1019 ".%" +PRIu32 + ".%" PRIu32 "\n", + +1020 ( +p +-> + + >> 24) & 0xFF, + +1021 ( +p +-> + + >> 16) & 0xFF, + +1022 ( +p +-> + + >> 8) & 0xFF, + +1023 +p +-> + + & 0xFF, + +1024 ( +tmask + >> 24) & 0xFF, + +1025 ( +tmask + >> 16) & 0xFF, + +1026 ( +tmask + >> 8) & 0xFF, + +1027 +tmask + & 0xFF, + +1028 ( +b + >> 24) & 0xFF, + +1029 ( +b + >> 16) & 0xFF, + +1030 ( +b + >> 8) & 0xFF, + +1031 +b + & 0xFF); + +1033 + `tf +("\th %02" +PRIx32 + ":%02" PRIx32 ":%02" PRIx32 + +1034 ":%02" +PRIx32 + ":%02" PRIx32 ":%02" PRIx32 "\n", + +1035 +mac_addr +-> +addr_bys +[0], + +1036 +mac_addr +-> +addr_bys +[1], + +1037 +mac_addr +-> +addr_bys +[2], + +1038 +mac_addr +-> +addr_bys +[3], + +1039 +mac_addr +-> +addr_bys +[4], + +1040 +mac_addr +-> +addr_bys +[5]); + +1042 + `tf +("\tRXack%" +PRIu64 + + +1043 " by%" +PRIu64 + + +1045 +s +. +acks +, + +1046 +s +. +ibys +); + +1048 + `tf +("\tRXܠ%" +PRIu64 + + +1049 " misd %" +PRIu64 + + +1050 "o-mbu%" +PRIu64 + + +1052 +s +. +s +, + +1053 +s +. +imisd +, + +1054 +s +. +rx_nombuf +); + +1056 + `tf +("\tTXack%" +PRIu64 + + +1057 " by%" +PRIu64 + "\n", + +1058 +s +. +acks +, + +1059 +s +. +obys +); + +1061 + `tf +("\tTXܠ%" +PRIu64 + + +1063 +s +. +ۼs +); + +1065 + `tf +("\n"); + +1066 + } +} + +1068  + scmd_lk_cfig_su + { + +1069 +cmdle_fixed_rg_t + + mlk_rg +; + +1070 +ut32_t + + mlk_id +; + +1071 +cmdle_fixed_rg_t + + mcfig_rg +; + +1072 +cmdle_addr_t + + m +; + +1073 +ut32_t + + mdth +; + +1077 +cmd_lk_cfig_rd +( + +1078 * +rd_su +, + +1079 +__ibu__ +(( +unud +) +cmdle + * + +, + +1080 * +da +) + +1082  +cmd_lk_cfig_su + * + gms + = +rd_su +; + +1083  +p_ms + * + gp + = +da +; + +1084  + gus +; + +1086 +ut32_t + + glk_id + = +ms +-> +lk_id +; + +1087 +ut32_t + + g +; + +1088 +ut8_t + + gv6 +[16]; + +1089 i( + gms +-> + g +. + gmy + = +AF_INET +) + +1090 + + = +e_bsw32 +(( +ut32_t + +ms +->. +addr +. +v4 +. +s_addr +); + +1092 +memy +( +v6 +, +ms +-> + +. +addr +.v6. +s6_addr +, 16); + +1094 +ut32_t + + gdth + = +ms +-> +dth +; + +1096 i( + gms +-> + g +. + gmy + = +AF_INET +) + +1097 +us + = +p_lk_cfig +( +p +, +lk_id +, + +, +dth +); + +1099 + gus + = +p_lk_cfig_v6 +( +p +, +lk_id +, +v6 +, +dth +); + +1101 i( + gus +) + +1102 +tf +("Command failed\n"); + +1104  +p_lk_ms + * + gp +; + +1106 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +1107 i( + gp +) + +1108 +t_lk_fo +( +p +); + +1112 +cmdle_r_tok_rg_t + + gcmd_lk_cfig_lk_rg + = + +1113 +TOKEN_STRING_INITIALIZER +( +cmd_lk_cfig_su +, +lk_rg +, + +1116 +cmdle_r_tok_num_t + + gcmd_lk_cfig_lk_id + = + +1117 +TOKEN_NUM_INITIALIZER +( +cmd_lk_cfig_su +, +lk_id +, +UINT32 +); + +1119 +cmdle_r_tok_rg_t + + gcmd_lk_cfig_cfig_rg + = + +1120 +TOKEN_STRING_INITIALIZER +( +cmd_lk_cfig_su +, +cfig_rg +, + +1123 +cmdle_r_tok_addr_t + + gcmd_lk_cfig_ + = + +1124 +TOKEN_IPADDR_INITIALIZER +( +cmd_lk_cfig_su +, + +); + +1126 +cmdle_r_tok_num_t + + gcmd_lk_cfig_dth + = + +1127 +TOKEN_NUM_INITIALIZER +( +cmd_lk_cfig_su +, +dth +, +UINT32 +); + +1129 +cmdle_r__t + + gcmd_lk_cfig + = { + +1130 . +f + = +cmd_lk_cfig_rd +, + +1131 . + gda + = +NULL +, + +1132 . + ghp_r + = "Link configuration", + +1133 . + gtoks + = { + +1134 (*)& +cmd_lk_cfig_lk_rg +, + +1135 (*)& +cmd_lk_cfig_lk_id +, + +1136 (*)& +cmd_lk_cfig_cfig_rg +, + +1137 (*)& +cmd_lk_cfig_ +, + +1138 (*)& +cmd_lk_cfig_dth +, + +1139 +NULL +, + +1147  + scmd_lk_up_su + { + +1148 +cmdle_fixed_rg_t + + mlk_rg +; + +1149 +ut32_t + + mlk_id +; + +1150 +cmdle_fixed_rg_t + + mup_rg +; + +1154 +cmd_lk_up_rd +( + +1155 * +rd_su +, + +1156 +__ibu__ +(( +unud +) +cmdle + * + +, + +1157 * +da +) + +1159  +cmd_lk_up_su + * + gms + = +rd_su +; + +1160  +p_ms + * + gp + = +da +; + +1161  + gus +; + +1163 + gus + = +p_lk_up +( +p +, +ms +-> +lk_id +); + +1164 i( + gus + != 0) + +1165 +tf +("Command failed\n"); + +1167  +p_lk_ms + * + gp +; + +1169 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +ms +-> +lk_id +, + +1170 +p +); + +1171 i( + gp +) + +1172 +t_lk_fo +( +p +); + +1176 +cmdle_r_tok_rg_t + + gcmd_lk_up_lk_rg + = + +1177 +TOKEN_STRING_INITIALIZER +( +cmd_lk_up_su +, +lk_rg +, + +1180 +cmdle_r_tok_num_t + + gcmd_lk_up_lk_id + = + +1181 +TOKEN_NUM_INITIALIZER +( +cmd_lk_up_su +, +lk_id +, +UINT32 +); + +1183 +cmdle_r_tok_rg_t + + gcmd_lk_up_up_rg + = + +1184 +TOKEN_STRING_INITIALIZER +( +cmd_lk_up_su +, +up_rg +, "up"); + +1186 +cmdle_r__t + + gcmd_lk_up + = { + +1187 . +f + = +cmd_lk_up_rd +, + +1188 . + gda + = +NULL +, + +1189 . + ghp_r + = "Link UP", + +1190 . + gtoks + = { + +1191 (*)& +cmd_lk_up_lk_rg +, + +1192 (*)& +cmd_lk_up_lk_id +, + +1193 (*)& +cmd_lk_up_up_rg +, + +1194 +NULL +, + +1202  + scmd_lk_down_su + { + +1203 +cmdle_fixed_rg_t + + mlk_rg +; + +1204 +ut32_t + + mlk_id +; + +1205 +cmdle_fixed_rg_t + + mdown_rg +; + +1209 +cmd_lk_down_rd +( + +1210 * +rd_su +, + +1211 +__ibu__ +(( +unud +) +cmdle + * + +, + +1212 * +da +) + +1214  +cmd_lk_down_su + * + gms + = +rd_su +; + +1215  +p_ms + * + gp + = +da +; + +1216  + gus +; + +1218 + gus + = +p_lk_down +( +p +, +ms +-> +lk_id +); + +1219 i( + gus + != 0) + +1220 +tf +("Command failed\n"); + +1222  +p_lk_ms + * + gp +; + +1224 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +ms +-> +lk_id +, + +1225 +p +); + +1226 i( + gp +) + +1227 +t_lk_fo +( +p +); + +1231 +cmdle_r_tok_rg_t + + gcmd_lk_down_lk_rg + = + +1232 +TOKEN_STRING_INITIALIZER +( +cmd_lk_down_su +, +lk_rg +, + +1235 +cmdle_r_tok_num_t + + gcmd_lk_down_lk_id + = + +1236 +TOKEN_NUM_INITIALIZER +( +cmd_lk_down_su +, +lk_id +, +UINT32 +); + +1238 +cmdle_r_tok_rg_t + + gcmd_lk_down_down_rg + = + +1239 +TOKEN_STRING_INITIALIZER +( +cmd_lk_down_su +, +down_rg +, + +1242 +cmdle_r__t + + gcmd_lk_down + = { + +1243 . +f + = +cmd_lk_down_rd +, + +1244 . + gda + = +NULL +, + +1245 . + ghp_r + = "Link DOWN", + +1246 . + gtoks + = { + +1247 (*& +cmd_lk_down_lk_rg +, + +1248 (*& +cmd_lk_down_lk_id +, + +1249 (*& +cmd_lk_down_down_rg +, + +1250 +NULL +, + +1258  + scmd_lk_ls_su + { + +1259 +cmdle_fixed_rg_t + + mlk_rg +; + +1260 +cmdle_fixed_rg_t + + mls_rg +; + +1264 +cmd_lk_ls_rd +( + +1265 +__ibu__ +(( +unud +)* +rd_su +, + +1266 +__ibu__ +(( +unud +) +cmdle + * + +, + +1267 * +da +) + +1269  +p_ms + * + gp + = +da +; + +1270 +ut32_t + + glk_id +; + +1272  + glk_id + = 0;k_id < + gp +-> + gn_lks +;ink_id++) { + +1273  +p_lk_ms + * + gp +; + +1275 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_ms +, "LINK", +lk_id +, +p +); + +1276 i( + gp +) + +1277 +t_lk_fo +( +p +); + +1279 #ide +VNF_ACL + + +1280 +t_r_das +(); + +1284 +cmdle_r_tok_rg_t + + gcmd_lk_ls_lk_rg + = + +1285 +TOKEN_STRING_INITIALIZER +( +cmd_lk_ls_su +, +lk_rg +, + +1288 +cmdle_r_tok_rg_t + + gcmd_lk_ls_ls_rg + = + +1289 +TOKEN_STRING_INITIALIZER +( +cmd_lk_ls_su +, +ls_rg +, "ls"); + +1291 +cmdle_r__t + + gcmd_lk_ls + = { + +1292 . +f + = +cmd_lk_ls_rd +, + +1293 . + gda + = +NULL +, + +1294 . + ghp_r + = "Linkist", + +1295 . + gtoks + = { + +1296 (*)& +cmd_lk_ls_lk_rg +, + +1297 (*)& +cmd_lk_ls_ls_rg +, + +1298 +NULL +, + +1306  + scmd_qu_su + { + +1307 +cmdle_fixed_rg_t + + mqu +; + +1311 + $cmd_qu_rd +( + +1312 +__e_unud + * +rd_su +, + +1313  +cmdle + * + +, + +1314 +__e_unud + * +da +) + +1316 + `cmdle_qu +( + +); + +1317 + } +} + +1319  +cmdle_r_tok_rg_t + + gcmd_qu_qu + = + +1320 +TOKEN_STRING_INITIALIZER +( +cmd_qu_su +, +qu +, "quit"); + +1322  +cmdle_r__t + + gcmd_qu + = { + +1323 . +f + = +cmd_qu_rd +, + +1324 . + gda + = +NULL +, + +1325 . + ghp_r + = "Quit", + +1326 . + gtoks + = { + +1327 (*& +cmd_qu_qu +, + +1328 +NULL +, + +1337 + $p_run_fe +( + +1338 +cmdle_r_x_t + * +x +, + +1339 cڡ * +fe_me +) + +1341  +cmdle + * +fe_ +; + +1342  +fd +; + +1344 +fd + = + `ݒ +( +fe_me +, +O_RDONLY +); + +1345 i( +fd + < 0) { + +1346 + `tf +("Cn of\"%s\"\n", +fe_me +); + +1350 +fe_ + = + `cmdle_w +( +x +, "", +fd +, 1); + +1351 + `cmdle_ +( +fe_ +); + +1352 + `o +( +fd +); + +1353 + } +} + +1355  + scmd_run_fe_su + { + +1356 +cmdle_fixed_rg_t + + mrun_rg +; + +1357  + mfe_me +[ +APP_FILE_NAME_SIZE +]; + +1361 +cmd_run_rd +( + +1362 * +rd_su +, + +1363  +cmdle + * + +, + +1364 +__ibu__ +(( +unud +)* +da +) + +1366  +cmd_run_fe_su + * + gms + = +rd_su +; + +1368 +p_run_fe +( + +-> +x +, +ms +-> +fe_me +); + +1371 +cmdle_r_tok_rg_t + + gcmd_run_run_rg + = + +1372 +TOKEN_STRING_INITIALIZER +( +cmd_run_fe_su +, +run_rg +, + +1375 +cmdle_r_tok_rg_t + + gcmd_run_fe_me + = + +1376 +TOKEN_STRING_INITIALIZER +( +cmd_run_fe_su +, +fe_me +, +NULL +); + +1378 +cmdle_r__t + + gcmd_run + = { + +1379 . +f + = +cmd_run_rd +, + +1380 . + gda + = +NULL +, + +1381 . + ghp_r + = "Run CLI script file", + +1382 . + gtoks + = { + +1383 (*& +cmd_run_run_rg +, + +1384 (*& +cmd_run_fe_me +, + +1385 +NULL +, + +1389  +cmdle_r_x_t + + gpe_comm_cmds +[] = { + +1390 ( +cmdle_r__t + *& +cmd_qu +, + +1391 ( +cmdle_r__t + *& +cmd_run +, + +1393 ( +cmdle_r__t + *& +cmd_lk_cfig +, + +1394 ( +cmdle_r__t + *& +cmd_lk_up +, + +1395 ( +cmdle_r__t + *& +cmd_lk_down +, + +1396 ( +cmdle_r__t + *& +cmd_lk_ls +, + +1398 ( +cmdle_r__t + *& +cmd_pg +, + +1399 ( +cmdle_r__t + *& +cmd_s_pt_ +, + +1400 ( +cmdle_r__t + *& +cmd_s_pt_out +, + +1401 ( +cmdle_r__t + *& +cmd_s_b +, + +1402 ( +cmdle_r__t + *& +cmd_pt__ab +, + +1403 ( +cmdle_r__t + *& +cmd_pt__dib +, + +1404 +NULL +, + +1408 + $p_pe_comm_cmd_push +( +p_ms + * +p +) + +1410 +ut32_t + +n_cmds +, +i +; + +1413 +n_cmds + = + `RTE_DIM +( +pe_comm_cmds +) - 1; + +1414 i( +n_cmds + > +APP_MAX_CMDS + - +p +->n_cmds) + +1415  - +ENOMEM +; + +1418 + `memy +(& +p +-> +cmds +[p-> +n_cmds +], + +1419 +pe_comm_cmds +, + +1420 +n_cmds + * ( +cmdle_r_x_t +)); + +1422  +i + = 0; i < +n_cmds +; i++) + +1423 +p +-> +cmds +[p-> +n_cmds + + +i +]-> +da + =pp; + +1425 +p +-> +n_cmds + +=_cmds; + +1426 +p +-> +cmds +[p-> +n_cmds +] = +NULL +; + +1429 + } +} + + @VIL/pipeline_common/pipeline_common_fe.h + +17 #ide +__INCLUDE_PIPELINE_COMMON_FE_H__ + + +18  + #__INCLUDE_PIPELINE_COMMON_FE_H__ + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +25  + ~"pe_comm_be.h +" + +26  + ~"pe.h +" + +27  + ~"p.h +" + +29 #ide +MSG_TIMEOUT_DEFAULT + + +30  + #MSG_TIMEOUT_DEFAULT + 1000 + + ) + +32  +p_lk_ms + + gmylk +[ +APP_MAX_LINKS +]; + +33  +le +  +p_pe_da + * + +34 + $p_pe_da +( +p_ms + * +p +, +ut32_t + +id +) + +36  +p_pe_ms + * +ms +; + +38 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, "PIPELINE", +id +, +ms +); + +39 i( +ms + = +NULL +) + +40  +NULL +; + +42  & +p +-> +pe_da +[ +ms + --> +pe_ms +]; + +43 + } +} + +45  +le + * + +46 + $p_pe_da_ +( +p_ms + * +p +, +ut32_t + +id +,  +pe_ty + * +y +) + +48  +p_pe_da + * +pe_da +; + +50 +pe_da + = + `p_pe_da +( +p +, +id +); + +51 i( +pe_da + = +NULL +) + +52  +NULL +; + +54 i( + `rcmp +( +pe_da +-> +y +-> +me +,type->name) != 0) + +55  +NULL +; + +57 i( +pe_da +-> +abd + == 0) + +58  +NULL +; + +60  +pe_da +-> + +; + +61 + } +} + +63  +le +  +e_rg + * + +64 + $p_pe_msgq__g +( +p_ms + * +p +, + +65 +ut32_t + +pe_id +) + +67  +p_msgq_ms + * +p +; + +69 + `APP_PARAM_FIND_BY_ID +( +p +-> +msgq_ms +, + +71 +pe_id +, + +72 +p +); + +73 i( +p + = +NULL +) + +74  +NULL +; + +76  +p +-> +msgq +[ +p + --> +msgq_ms +]; + +77 + } +} + +79  +le +  +e_rg + * + +80 + $p_pe_msgq_out_g +( +p_ms + * +p +, + +81 +ut32_t + +pe_id +) + +83  +p_msgq_ms + * +p +; + +85 + `APP_PARAM_FIND_BY_ID +( +p +-> +msgq_ms +, + +87 +pe_id +, + +88 +p +); + +89 i( +p + = +NULL +) + +90  +NULL +; + +92  +p +-> +msgq +[ +p + --> +msgq_ms +]; + +93 + } +} + +95  +le + * + +96 + $p_msg_loc +( +__e_unud +  +p_ms + * +p +) + +98  + `e_mloc +( +NULL +, 2048, +RTE_CACHE_LINE_SIZE +); + +99 + } +} + +101  +le +  + +102 + $p_msg_ +( +__e_unud +  +p_ms + * +p +, + +103 * +msg +) + +105 + `e_ +( +msg +); + +106 + } +} + +108  +le +  + +109 + $p_msg_nd +( +p_ms + * +p +, + +110 +ut32_t + +pe_id +, + +111 * +msg +) + +113  +e_rg + * +r + = + `p_pe_msgq__g +( +p +, +pe_id +); + +114  +us +; + +117 +us + = + `e_rg__queue +( +r +, +msg +); + +118 }  +us + =- +ENOBUFS +); + +119 + } +} + +121  +le + * + +122 + $p_msg_cv +( +p_ms + * +p +, + +123 +ut32_t + +pe_id +) + +125  +e_rg + * +r + = + `p_pe_msgq_out_g +( +p +, +pe_id +); + +126 * +msg +; + +127  +us + = + `e_rg_sc_dequeue +( +r +, & +msg +); + +129 i( +us + != 0) + +130  +NULL +; + +132  +msg +; + +133 + } +} + +135  +le + * + +136 + $p_msg_nd_cv +( +p_ms + * +p +, + +137 +ut32_t + +pe_id +, + +138 * +msg +, + +139 +ut32_t + +timeout_ms +) + +141  +e_rg + * +r_q + = + `p_pe_msgq__g +( +p +, +pe_id +); + +142  +e_rg + * +r_r + = + `p_pe_msgq_out_g +( +p +, +pe_id +); + +143 +ut64_t + +hz + = + `e_g_tsc_hz +(); + +144 * +msg_cv + = +NULL +; + +145 +ut64_t + +ddle +; + +146  +us + = 0; + +150 if( +r_q +) + +151 +us + = + `e_rg__queue +( +r_q +, (* +msg +); + +152 }  +us + =- +ENOBUFS +); + +155 +ddle + = ( +timeout_ms +) ? + +156 ( + `e_rdtsc +(+ (( +hz + * +timeout_ms +) / 1000)) : + +157 +UINT64_MAX +; + +160 i( + `e_rdtsc +(> +ddle +) + +161  +NULL +; + +162 i( +r_r +) + +163 +us + = + `e_rg_sc_dequeue +( +r_r +, & +msg_cv +); + +164 }  +us + != 0); + +166  +msg_cv +; + +167 + } +} + +170 +p_pe_pg +( +p_ms + * +p +, + +171 +ut32_t + +pe_id +); + +174 +p_pe_s_pt_ +( +p_ms + * +p +, + +175 +ut32_t + +pe_id +, + +176 +ut32_t + +pt_id +, + +177  +e_pe_pt__s + * +s +); + +180 +p_pe_s_pt_out +( +p_ms + * +p +, + +181 +ut32_t + +pe_id +, + +182 +ut32_t + +pt_id +, + +183  +e_pe_pt_out_s + * +s +); + +186 +p_pe_s_b +( +p_ms + * +p +, + +187 +ut32_t + +pe_id +, + +188 +ut32_t + +b_id +, + +189  +e_pe_b_s + * +s +); + +192 +p_pe_pt__ab +( +p_ms + * +p +, + +193 +ut32_t + +pe_id +, + +194 +ut32_t + +pt_id +); + +197 +p_pe_pt__dib +( +p_ms + * +p +, + +198 +ut32_t + +pe_id +, + +199 +ut32_t + +pt_id +); + +202 +p_lk_cfig +( +p_ms + * +p +, + +203 +ut32_t + +lk_id +, + +204 +ut32_t + + +, + +205 +ut32_t + +dth +); + +208 +p_lk_up +( +p_ms + * +p +, + +209 +ut32_t + +lk_id +); + +212 +p_lk_down +( +p_ms + * +p +, + +213 +ut32_t + +lk_id +); + +216 +p_pe_comm_cmd_push +( +p_ms + * +p +); + +219  +cvt_efixn_to_tmask_v6 +( +ut32_t + +dth +, +ut8_t + +tmask_v6 +[]); + +222 +g_ho_pti_v6 +( +ut8_t + +v6 +[], ut8_ +tmask +[], ut8_ +ho_v6 +[]); + +225 +g_b_pti_v6 +( +ut8_t + +ho +[], ut8_ +tmask +[], ut8_ +b_v6 +[]); + +228 +p_lk_cfig_v6 +( +p_ms + * +p +, + +229 +ut32_t + +lk_id +, +ut8_t + +v6 +[], ut32_ +dth +); + + @VIL/pipeline_loadb/pipeline_loadb.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"p.h +" + +24  + ~"pe_comm_.h +" + +25  + ~"pe_ldb.h +" + +26  + ~"vnf_comm.h +" + +28  + ~"pe_picmp_be.h +" + +32 + $p_pe_ldb_y_dbg +( +p_ms + * +p +, + +33 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +35  +pe_ldb_y_dbg_msg_q + * +q +; + +36  +pe_ldb_y_dbg_msg_r + * +r +; + +39 i( +p + = +NULL +) + +43 +q + = + `p_msg_loc +( +p +); + +44 i( +q + = +NULL +) + +47 +q +-> +ty + = +PIPELINE_MSG_REQ_CUSTOM +; + +48 +q +-> +subty + = +PIPELINE_LOADB_MSG_REQ_ENTRY_DBG +; + +49 +q +-> +da +[0] = +msg +[0]; + +50 +q +-> +da +[1] = +msg +[1]; + +52 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +53 i( +r + = +NULL +) + +57 i( +r +-> +us +) { + +58 + `p_msg_ +( +p +, +r +); + +59 + `tf +("E܄->u%d\n", +r +-> +us +); + +64 + `p_msg_ +( +p +, +r +); + +67 + } +} + +73  + scmd_y_dbg_su + { + +74 +cmdle_fixed_rg_t + + mp_rg +; + +75 +ut32_t + + mp +; + +76 +cmdle_fixed_rg_t + + my_rg +; + +77 +cmdle_fixed_rg_t + + mdbg_rg +; + +78 +ut8_t + + mcmd +; + +79 +ut8_t + + md1 +; + +83 + $cmd_y_dbg_rd +(* +rd_su +, + +84 +__e_unud +  +cmdle + * + +, * +da +) + +86  +cmd_y_dbg_su + * +ms + = +rd_su +; + +87  +p_ms + * +p + = +da +; + +88 +ut8_t + +msg +[2]; + +89  +us +; + +91 +msg +[0] = +ms +-> +cmd +; + +92 +msg +[1] = +ms +-> +d1 +; + +93 +us + = + `p_pe_ldb_y_dbg +( +p +, +ms +-> +p +, +msg +); + +95 i( +us + != 0) { + +96 + `tf +("Dbg Command failed\n"); + +99 + } +} + +101  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_p_rg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +p_rg +, "p"); + +104  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +p +, +UINT32 +); + +107  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_y_rg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, + +109 +y_rg +, "lbentry"); + +111  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_dbg_rg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +dbg_rg +, + +115  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +cmd +, +UINT8 +); + +118  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +d1 +, +UINT8 +); + +121  +cmdle_r__t + + glb_cmd_y_dbg + = { + +122 . +f + = +cmd_y_dbg_rd +, + +123 . + gda + = +NULL +, + +124 . + ghp_r + = "LOADB dbg cmd", + +125 . + gtoks + = { + +126 (*)& +lb_cmd_y_dbg_p_rg +, + +127 (*)& +lb_cmd_y_dbg_p +, + +128 (*)& +lb_cmd_y_dbg_y_rg +, + +129 (*)& +lb_cmd_y_dbg_dbg_rg +, + +130 (*)& +lb_cmd_y_dbg_cmd +, + +131 (*)& +lb_cmd_y_dbg_d1 +, + +132 +NULL +, + +162  + scmd_p_add_su + { + +163 +cmdle_fixed_rg_t + + mp_rg +; + +164 +ut32_t + + mp +; + +165 +cmdle_fixed_rg_t + + mdd_rg +; + +166 +ut32_t + + mpt_id +; + +167 +cmdle_addr_t + + m +; + +168  +h_addr + + mmaddr +; + +173 + $cmd_p_add_rd +(* +rd_su +, + +174 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +176  +cmd_p_add_su + * +ms + = +rd_su +; + +177 +ut8_t + +v6 +[16]; + +186 i( +ms +-> + +. +my + = +AF_INET +) { + +187 + `puϋ_p_y +(& +ms +-> +maddr +, + +188 + `e_u_to_be_32 +( +ms +-> + +. +addr +. + +189 +v4 +. +s_addr +), + +190 +ms +-> +pt_id +, +STATIC_ARP +); + +192 + `memy +( +v6 +, +ms +-> + +. +addr +.v6. +s6_addr +, 16); + +193 + `puϋ_nd_y +(& +ms +-> +maddr +, +v6 +,ams-> +pt_id +, +STATIC_ND +); + +195 + } +} + +197  +cmdle_r_tok_rg_t + + gcmd_p_add_p_rg + = + +198 +TOKEN_STRING_INITIALIZER +( +cmd_p_add_su +, +p_rg +, + +201  +cmdle_r_tok_num_t + + gcmd_p_add_p + = + +202 +TOKEN_NUM_INITIALIZER +( +cmd_p_add_su +, +p +, +UINT32 +); + +204  +cmdle_r_tok_rg_t + + gcmd_p_add_p_rg + = + +205 +TOKEN_STRING_INITIALIZER +( +cmd_p_add_su +, +dd_rg +, "arpadd"); + +207  +cmdle_r_tok_num_t + + gcmd_p_add_pt_id + = + +208 +TOKEN_NUM_INITIALIZER +( +cmd_p_add_su +, +pt_id +, +UINT32 +); + +210  +cmdle_r_tok_addr_t + + gcmd_p_add_ + = + +211 +TOKEN_IPADDR_INITIALIZER +( +cmd_p_add_su +, + +); + +213  +cmdle_r_tok_haddr_t + + gcmd_p_add_maddr + = + +214 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_p_add_su +, +maddr +); + +216  +cmdle_r__t + + gcmd_p_add + = { + +217 . +f + = +cmd_p_add_rd +, + +218 . + gda + = +NULL +, + +219 . + ghp_r + = "ARPdd", + +220 . + gtoks + = { + +221 (*)& +cmd_p_add_p_rg +, + +222 (*)& +cmd_p_add_p +, + +223 (*)& +cmd_p_add_p_rg +, + +224 (*)& +cmd_p_add_pt_id +, + +225 (*)& +cmd_p_add_ +, + +226 (*)& +cmd_p_add_maddr +, + +227 +NULL +, + +235  + scmd_p_d_su + { + +236 +cmdle_fixed_rg_t + + mp_rg +; + +237 +ut32_t + + mp +; + +238 +cmdle_fixed_rg_t + + mp_rg +; + +239 +ut32_t + + mpt_id +; + +240 +cmdle_addr_t + + m +; + +244 + $cmd_p_d_rd +(* +rd_su +, + +245 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +247  +cmd_p_d_su + * +ms + = +rd_su +; + +248 +ut8_t + +v6 +[16]; + +257 i( +ms +-> + +. +my + = +AF_INET +) { + +258 + `move_p_y +( + `e_u_to_be_32 +( +ms +-> + +. +addr +. +v4 +. +s_addr +), + +259 +ms +-> +pt_id +, +NULL +); + +261 + `memy +( +v6 +, +ms +-> + +. +addr +.v6. +s6_addr +, 16); + +262 + `move_nd_y_v6 +( +v6 +, +ms +-> +pt_id +); + +264 + } +} + +266  +cmdle_r_tok_rg_t + + gcmd_p_d_p_rg + = + +267 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, + +270  +cmdle_r_tok_num_t + + gcmd_p_d_p + = + +271 +TOKEN_NUM_INITIALIZER +( +cmd_p_d_su +, +p +, +UINT32 +); + +273  +cmdle_r_tok_rg_t + + gcmd_p_d_p_rg + = + +274 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "arpdel"); + +276  +cmdle_r_tok_num_t + + gcmd_p_d_pt_id + = + +277 +TOKEN_NUM_INITIALIZER +( +cmd_p_d_su +, +pt_id +, +UINT32 +); + +279  +cmdle_r_tok_addr_t + + gcmd_p_d_ + = + +280 +TOKEN_IPADDR_INITIALIZER +( +cmd_p_d_su +, + +); + +282  +cmdle_r__t + + gcmd_p_d + = { + +283 . +f + = +cmd_p_d_rd +, + +284 . + gda + = +NULL +, + +285 . + ghp_r + = "ARP delete", + +286 . + gtoks + = { + +287 (*)& +cmd_p_d_p_rg +, + +288 (*)& +cmd_p_d_p +, + +289 (*)& +cmd_p_d_p_rg +, + +290 (*)& +cmd_p_d_pt_id +, + +291 (*)& +cmd_p_d_ +, + +292 +NULL +, + +303 + $cmd_p_q_rd +(* +rd_su +, + +304 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +306  +cmd_p_d_su + * +ms + = +rd_su +; + +309  +p_key_v4 + +key +; + +315 +key +. + + = + `e_u_to_be_32 +( +ms +->. +addr +. +v4 +. +s_addr +); + +316 +key +. +pt_id + = +ms +->port_id; + +317 +key +. +fr1 + = 0; + +318 +key +. +fr2 + = 0; + +319 +key +. +fr3 + = 0; + +321  +p_y_da + * +p_da + = + `ve_p_y +( +key +); + +323 i( +p_da +) { + +324 i( +ARPICMP_DEBUG +) + +325 + `tf +("ARPntryxists for ip 0x%x,ort %d\n", + +326 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +330 i( +ARPICMP_DEBUG +) + +331 + `tf +("ARP -equestingrp for ip 0x%x,ort %d\n", + +332 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +333 + `que_p +( +ms +-> +pt_id +,ams-> + +. +addr +. +v4 +. +s_addr +); + +335 + } +} + +337  +cmdle_r_tok_rg_t + + gcmd_p_q_rg + = + +338 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "arpreq"); + +340  +cmdle_r__t + + gcmd_p_q + = { + +341 . +f + = +cmd_p_q_rd +, + +342 . + gda + = +NULL +, + +343 . + ghp_r + = "ARPequest", + +344 . + gtoks + = { + +345 (*)& +cmd_p_d_p_rg +, + +346 (*)& +cmd_p_d_p +, + +347 (*)& +cmd_p_q_rg +, + +348 (*)& +cmd_p_d_pt_id +, + +349 (*)& +cmd_p_d_ +, + +350 +NULL +, + +361 + $cmd_icmp_echo_q_rd +(* +rd_su +, + +362 +__e_unud +  +cmdle + * + +, + +363 +__e_unud + * +da +) + +365  +cmd_p_d_su + * +ms + = +rd_su +; + +366  +e_mbuf + * +pkt +; + +367 +l2_phy_r_t + * +pt + = (l2_phy_r_* + `ifm_g_pt +(( +ut8_t +) +ms +-> +pt_id +); + +369 i( +ARPICMP_DEBUG +) + +370 + `tf +("Echo Req Handler ip %x,ort %d\n", + +371 +ms +-> + +. +addr +. +v4 +. +s_addr +,ams-> +pt_id +); + +373 +pkt + = + `que_echo +( +ms +-> +pt_id +,ams-> + +. +addr +. +v4 +. +s_addr +); + +374 +pt +-> + `sm_sg_pkt +t, +pkt +); + +375 + } +} + +377  +cmdle_r_tok_rg_t + + gcmd_icmp_echo_q_rg + = + +378 +TOKEN_STRING_INITIALIZER +( +cmd_p_d_su +, +p_rg +, "icmpecho"); + +380  +cmdle_r__t + + gcmd_icmp_echo_q + = { + +381 . +f + = +cmd_icmp_echo_q_rd +, + +382 . + gda + = +NULL +, + +383 . + ghp_r + = "ICMPchoequest", + +384 . + gtoks + = { + +385 (*)& +cmd_p_d_p_rg +, + +386 (*)& +cmd_p_d_p +, + +387 (*)& +cmd_icmp_echo_q_rg +, + +388 (*)& +cmd_p_d_pt_id +, + +389 (*)& +cmd_p_d_ +, + +390 +NULL +, + +398  + scmd_p_ls_su + { + +399 +cmdle_fixed_rg_t + + mp_rg +; + +400 +ut32_t + + mp +; + +401 +cmdle_fixed_rg_t + + mp_rg +; + +405 + $cmd_p_ls_rd +( +__e_unud + * +rd_su +, + +406 +__e_unud +  +cmdle + * + +, __e_unud * +da +) + +408 + `tf +("\nARPable ...\n"); + +409 + `tf +("-------------\n"); + +410 + `t_p_b +(); + +412 +tf + + +415 + `tf +("\nND IPv6able:\n"); + +416 + `tf +("--------------\n"); + +417 + `t_nd_b +(); + +418 + } +} + +420  +cmdle_r_tok_rg_t + + gcmd_p_ls_p_rg + = + +421 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +424  +cmdle_r_tok_num_t + + gcmd_p_ls_p + = + +425 +TOKEN_NUM_INITIALIZER +( +cmd_p_ls_su +, +p +, +UINT32 +); + +427  +cmdle_r_tok_rg_t + + gcmd_p_ls_p_rg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +431  +cmdle_r__t + + gcmd_p_ls + = { + +432 . +f + = +cmd_p_ls_rd +, + +433 . + gda + = +NULL +, + +434 . + ghp_r + = "ARPist", + +435 . + gtoks + = { + +436 (*)& +cmd_p_ls_p_rg +, + +437 (*)& +cmd_p_ls_p +, + +438 (*)& +cmd_p_ls_p_rg +, + +439 +NULL +, + +447  + scmd_show_pts_fo_su + { + +448 +cmdle_fixed_rg_t + + mp_rg +; + +449 +ut32_t + + mp +; + +450 +cmdle_fixed_rg_t + + mp_rg +; + +454 + $cmd_show_pts_fo_rd +( +__e_unud + * +rd_su +, + +455 +__e_unud +  +cmdle + * + +, + +456 +__e_unud + * +da +) + +458 + `show_pts_fo +(); + +459 + } +} + +461  +cmdle_r_tok_rg_t + + gcmd_show_pts_fo_rg + = + +462 +TOKEN_STRING_INITIALIZER +( +cmd_p_ls_su +, +p_rg +, + +465  +cmdle_r__t + + gcmd_show_pts_fo + = { + +466 . +f + = +cmd_show_pts_fo_rd +, + +467 . + gda + = +NULL +, + +468 . + ghp_r + = "showorts info", + +469 . + gtoks + = { + +470 (*)& +cmd_p_ls_p_rg +, + +471 (*)& +cmd_p_ls_p +, + +472 (*)& +cmd_show_pts_fo_rg +, + +473 +NULL +, + +478  +cmdle_r_x_t + + gpe_cmds +[] = { + +479 ( +cmdle_r__t + *& +lb_cmd_y_dbg +, + +480 +NULL +, + +483  +pe__s + + gpe_ldb__s + = { + +484 . +f_ + = +NULL +, + +485 . + gf_ + = +NULL +, + +486 . + gcmds + = +pe_cmds +, + +489  +pe_ty + + gpe_ldb + = { + +490 . +me + = "LOADB", + +491 . + gbe_s + = & +pe_ldb_be_s +, + +492 . + g_s + = & +pe_ldb__s +, + + @VIL/pipeline_loadb/pipeline_loadb.h + +17 #ide +__INCLUDE_PIPELINE_LOADB_H__ + + +18  + #__INCLUDE_PIPELINE_LOADB_H__ + + + ) + +20  + ~"pe.h +" + +21  + ~"pe_ldb_be.h +" + +27  +pe_ty + +pe_ldb +; + + @VIL/pipeline_loadb/pipeline_loadb_be.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +35  + ~ + +36  + ~"pe_ldb_be.h +" + +37  + ~"pe_ais_comm.h +" + +38  + ~"hash_func.h +" + +39  + ~"pe_picmp_be.h +" + +40  + ~"vnf_comm.h +" + +41  + ~"p.h +" + +43  + #BYTES_TO_BITS + 8 + + ) + +44  + #ROTATE_15_BITS + 15 + + ) + +46  + #MAX_VNF_THREADS + 16 + + ) + +48  + gpkt_bur_t +; + +50 +ut8_t + + gLOADB_DEBUG +; + +51 +ut8_t + + gtٮ_vnf_thads +; + +52 +ut32_t + + gphypt_offt +; + +54  + spe_ldb + { + +55  +pe + + mp +; + +56 +pe_msg_q_hdr + + mcuom_hdrs +[ +PIPELINE_LOADB_MSG_REQS +]; + +58 +ut8_t + + mn_vnf_thads +; + +59 +ut8_t + + mn_lb_tues +; + +60 +ut32_t + + mout_offt +; + +61 +ut64_t + + mivedLBPktCou +; + +62 +ut64_t + + mdrݳdLBPktCou +; + +63 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +64 +ut8_t + + mout_id +[ +PIPELINE_MAX_PORT_IN +]; + +65 +ut8_t + + mn_v_Q +; + +66 +ut8_t + + mn_pub_Q +; + +67 +ut8_t + + mpe_num +; + +68 } + g__e_che_igd +; + +70 +ut8_t + + gdeu_rss_key +[] = { + +78 * +pe_ldb_msg_q_cuom_hdr +( +pe + * +p +, + +79 * +msg +); + +81  +pe_msg_q_hdr + + ghdrs +[] = { + +82 [ +PIPELINE_MSG_REQ_PING +] = + +83 +pe_msg_q_pg_hdr +, + +84 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +85 +pe_msg_q_s_pt__hdr +, + +86 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +87 +pe_msg_q_s_pt_out_hdr +, + +88 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +89 +pe_msg_q_s_b_hdr +, + +90 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +91 +pe_msg_q_pt__ab_hdr +, + +92 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +93 +pe_msg_q_pt__dib_hdr +, + +94 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +95 +pe_ldb_msg_q_cuom_hdr +, + +99 * +pe_ldb_msg_q_y_dbg_hdr +( +pe + *, + +100 * +msg +); + +102  +pe_msg_q_hdr + + gcuom_hdrs +[] = { + +103 [ +PIPELINE_LOADB_MSG_REQ_ENTRY_DBG +] = + +104 +pe_ldb_msg_q_y_dbg_hdr +, + +110  + sldb_b_y + { + +111  +e_pe_b_y + + mhd +; + +112 } + g__e_che_igd +; + +114 * + $pe_ldb_msg_q_cuom_hdr +( +pe + * +p +, * +msg +) + +116  +pe_ldb + * +p_lb + = (pe_ldb *) +p +; + +117  +pe_cuom_msg_q + * +q + = +msg +; + +118 +pe_msg_q_hdr + +f_hd +; + +120 +f_hd + = ( +q +-> +subty + < +PIPELINE_LOADB_MSG_REQS +) ? + +121 +p_lb +-> +cuom_hdrs +[ +q +-> +subty +] : + +122 +pe_msg_q_vid_hdr +; + +124 i( +f_hd + = +NULL +) + +125 +f_hd + = +pe_msg_q_vid_hdr +; + +127  + `f_hd +( +p +, +q +); + +128 + } +} + +130 +ut32_t + + glb_pkt_t_cou +; + +132 +ut8_t + + $lcuϋ_lb_thad_v +( +e_mbuf + * +pkt +, * +g +) + +134 +ut32_t + +hash_key +[2], +hash_v4 +; + +135 +ut32_t + +mp1 +, +mp2 +, +mp3 +; + +136 +ut8_t + +thad +; + +137  +pe_ldb__pt_h_g + * + + = +g +; + +138  +pe_ldb + * +p_ldb + = (pe_ldb * + +-> +p +; + +139 +ut8_t + +hads + = +p_ldb +-> +n_vnf_thads +; + +140  +e_thash_tue + +tue +; + +142 +ut32_t + * +c_addr +; + +143 +ut32_t + * +d_addr +; + +144 +ut16_t + * +c_pt +; + +145 +ut16_t + * +d_pt +; + +146 +ut8_t + * +oc +; + +147  +lb_pkt + *lb_pkt = (lb_pkt *) + +148 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +150 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty += +ETHER_TYPE_IPv6 +) { + +151 +c_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pt +. +v6 +.src_addr; + +152 +d_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pt +. +v6 +.dst_addr; + +153 +c_pt + = & +lb_pkt +-> +v6_pt +.src_port; + +154 +d_pt + = & +lb_pkt +-> +v6_pt +.dst_port; + +155 +oc + = & +lb_pkt +-> +v6_pt +. +v6 +. +o +; + +157 +c_addr + = & +lb_pkt +-> +v4_pt +. +v4 +.src_addr; + +158 +d_addr + = & +lb_pkt +-> +v4_pt +. +v4 +.dst_addr; + +159 +c_pt + = & +lb_pkt +-> +v4_pt +.src_port; + +160 +d_pt + = & +lb_pkt +-> +v4_pt +.dst_port; + +161 +oc + = & +lb_pkt +-> +v4_pt +. +v4 +. +xt_o_id +; + +164  +p_ldb +-> +n_lb_tues +) { + +169 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty += +ETHER_TYPE_IPv6 +) + +170 +mp1 + = + `e_bsw32 +( +d_addr +[3]^ * +d_pt +; + +172 +mp1 + = * +d_addr + ^ * +d_pt +; + +174 +mp2 + = ( +mp1 + >> 24) ^ (temp1 >> 16) ^ + +175 ( +mp1 + >> 8) ^emp1; + +177 +mp3 + = ( +mp2 + >> 4) ^ (temp2 & 0xf); + +180 +thad + = +mp3 + % +hads +; + +182 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +183 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +184  +thad +; + +189 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty += +ETHER_TYPE_IPv6 +) + +190 +hash_key +[0] = + `e_bsw32 +( +d_addr +[3]); + +192 +hash_key +[0] = + `e_bsw32 +(* +d_addr +); + +195 +hash_v4 + = + `e_jhash +(& +hash_key +[0], 4, 0); + +198 +thad + = ( +hash_v4 + % +hads +); + +201 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +202 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +204 i( +LOADB_DEBUG + > 3) + +205 + `tf +("thread: %u hash: %x hash_key: %x\n", + +206 +thad +, +hash_v4 +, +hash_key +[0]); + +207  +thad +; + +212 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +) == + +213 +ETHER_TYPE_IPv6 +) { + +214 +hash_key +[0] = + `e_bsw32 +( +d_addr +[3]); + +215 +hash_key +[1] = * +d_pt + << 16; + +217 +hash_key +[0] = + `e_bsw32 +(* +d_addr +); + +218 +hash_key +[1] = * +d_pt + << 16; + +221 +hash_v4 + = + `e_jhash +(& +hash_key +[0], 6, 0); + +224 +thad + = ( +hash_v4 + % +hads +); + +227 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +228 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +230 i( +LOADB_DEBUG + > 3) { + +231 + `tf +("public_addr: %xublic_port: %x\n", + +232 +hash_key +[0], * +d_pt +); + +233 + `tf +("thread: %u hash: %x hash_key0: %x " + +234 "hash_key1: %x\n", +thad +, +hash_v4 +, + +235 +hash_key +[0], hash_key[1]); + +237  +thad +; + +240 + `tf +("Invid_lb_tues: %d\n", +p_ldb +-> +n_lb_tues +); + +245 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +) == + +246 +ETHER_TYPE_IPv6 +) { + +247 +tue +. +v4 +. +c_addr + = + `e_bsw32 +(src_addr[3]); + +248 +tue +. +v4 +. +d_addr + = + `e_bsw32 +(dst_addr[3]); + +249 +tue +. +v4 +. +t + = * +c_pt +; + +250 +tue +. +v4 +. +dpt + = * +d_pt +; + +252 +tue +. +v4 +. +c_addr + = + `e_bsw32 +(*src_addr); + +253 +tue +. +v4 +. +d_addr + = + `e_bsw32 +(*dst_addr); + +254 +tue +. +v4 +. +t + = * +c_pt +; + +255 +tue +. +v4 +. +dpt + = * +d_pt +; + +258 +hash_v4 + = + `e_sorss +(( +ut32_t + *)& +tue +, + +259 +RTE_THASH_V4_L4_LEN +, + +260 +deu_rss_key +); + +264 +thad + = ( +hash_v4 + % +hads +); + +267 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +268 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +270 i( +LOADB_DEBUG + > 3) { + +271 + `tf +("src_addr: %x dst_addr: %x src_port: %x " + +272 "d_pt: %x\n", +tue +. +v4 +. +c_addr +,ue.v4. +d_addr +, + +273 +tue +. +v4 +. +t +,ue.v4. +dpt +); + +274 + `tf +("thad: %u hash: %x\n", +thad +, +hash_v4 +); + +277  +thad +; + +281 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +) == + +282 +ETHER_TYPE_IPv6 +) { + +284 +c_addr + += 3; + +285 +d_addr + += 3; + +289 +mp1 + = * +c_addr + ^ * +d_addr + ^ * +c_pt + ^ + +290 * +d_pt + ^ * +oc +; + +292 +mp2 + = ( +mp1 + >> 24) ^ (temp1 >> 16) ^ (temp1 >> 8) ^emp1; + +293 +mp3 + = ( +mp2 + >> 4) ^ (temp2 & 0xf); + +298 +thad + = ( +mp3 + % +hads +); + +301 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +302 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +304 i( +LOADB_DEBUG + > 3) { + +305 + `tf +("thread: %uemp1: %xemp2: %xemp3: %x\n", + +306 +thad +, +mp1 +, +mp2 +, +mp3 +); + +307 + `tf +("src_addr: %x dst_addr: %x src_port: %x " + +308 "d_pt: %xroc: %x\n", * +c_addr +, * +d_addr +, + +309 * +c_pt +, * +d_pt +, * +oc +); + +311  +thad +; + +314 + `tf +("Invid_lb_tues: %d\n", +p_ldb +-> +n_lb_tues +); + +318 + } +} + +320 +ut8_t + + $lcuϋ_lb_thad_pub +( +e_mbuf + * +pkt +, * +g +) + +322 +ut32_t + +hash_key +[2], +hash_v4 +; + +323 +ut32_t + +mp1 +, +mp2 +, +mp3 +; + +324 +ut8_t + +thad +; + +325  +pe_ldb__pt_h_g + * + + = +g +; + +326  +pe_ldb + * +p_ldb + = (pe_ldb * + +-> +p +; + +327 +ut8_t + +hads + = +p_ldb +-> +n_vnf_thads +; + +328  +e_thash_tue + +tue +; + +330 +ut32_t + * +c_addr +; + +331 +ut32_t + * +d_addr +; + +332 +ut16_t + * +c_pt +; + +333 +ut16_t + * +d_pt +; + +334 +ut8_t + * +oc +; + +335  +lb_pkt + *lb_pkt = (lb_pkt *) + +336 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +337 +MBUF_HDR_ROOM +); + +339 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty += +ETHER_TYPE_IPv6 +) { + +340 +c_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pt +. +v6 +.src_addr; + +341 +d_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pt +. +v6 +.dst_addr; + +342 +c_pt + = & +lb_pkt +-> +v6_pt +.src_port; + +343 +d_pt + = & +lb_pkt +-> +v6_pt +.dst_port; + +344 +oc + = & +lb_pkt +-> +v6_pt +. +v6 +. +o +; + +346 +c_addr + = & +lb_pkt +-> +v4_pt +. +v4 +.src_addr; + +347 +d_addr + = & +lb_pkt +-> +v4_pt +. +v4 +.dst_addr; + +348 +c_pt + = & +lb_pkt +-> +v4_pt +.src_port; + +349 +d_pt + = & +lb_pkt +-> +v4_pt +.dst_port; + +350 +oc + = & +lb_pkt +-> +v4_pt +. +v4 +. +xt_o_id +; + +353  +p_ldb +-> +n_lb_tues +) { + +358 +mp1 + = * +c_addr + ^ * +c_pt +; + +359 +mp2 + = ( +mp1 + >> 24) ^ (temp1 >> 16) ^ + +360 ( +mp1 + >> 8) ^emp1; + +361 +mp3 + = ( +mp2 + >> 4) ^ (temp2 & 0xf); + +364 +thad + = +mp3 + % +hads +; + +366 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +367 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +369  +thad +; + +374 +hash_key +[0] = + `e_bsw32 +(* +c_addr +); + +377 +hash_v4 + = + `e_jhash +(& +hash_key +[0], 4, 0); + +380 +thad + = +hash_v4 + % +hads +; + +382 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +383 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +385 i( +LOADB_DEBUG + > 3) + +386 + `tf +("thread: %u hash: %x hash_key: %x\n", + +387 +thad +, +hash_v4 +, +hash_key +[0]); + +388  +thad +; + +393 +hash_key +[0] = + `e_bsw32 +(* +c_addr +); + +394 +hash_key +[1] = * +c_pt + << 16; + +397 +hash_v4 + = + `e_jhash +(& +hash_key +[0], 6, 0); + +400 +thad + = +hash_v4 + % +hads +; + +402 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +403 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +405 i( +LOADB_DEBUG + > 3) { + +406 + `tf +("thread: %u hash: %x hash_key0: %x " + +407 "hash_key1: %x\n", +thad +, +hash_v4 +, + +408 +hash_key +[0], hash_key[1]); + +409 + `tf +("public_addr: %xublic_port: %x\n", + +410 +hash_key +[0], * +c_pt +); + +412  +thad +; + +415 + `tf +("Invid_lb_tues: %d\n", +p_ldb +-> +n_lb_tues +); + +420 +tue +. +v4 +. +c_addr + = + `e_bsw32 +(*src_addr); + +421 +tue +. +v4 +. +d_addr + = + `e_bsw32 +(*dst_addr); + +422 +tue +. +v4 +. +t + = * +c_pt +; + +423 +tue +. +v4 +. +dpt + = * +d_pt +; + +426 +hash_v4 + = + `e_sorss +(( +ut32_t + *)& +tue +, + +427 +RTE_THASH_V4_L4_LEN +, +deu_rss_key +); + +431 +thad + = +hash_v4 + % +hads +; + +433 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +434 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +436 i( +LOADB_DEBUG + > 3) { + +437 + `tf +("src_addr: %x dst_addr: %x src_port: %x " + +438 "d_pt: %x\n", +tue +. +v4 +. +c_addr +, + +439 +tue +. +v4 +. +d_addr +,ue.v4. +t +,ue.v4. +dpt +); + +441 + `tf +("thad: %u hash: %x\n", +thad +, +hash_v4 +); + +443  +thad +; + +447 i( + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +) == + +448 +ETHER_TYPE_IPv6 +) { + +450 +c_addr + += 3; + +451 +d_addr + += 3; + +455 +mp1 + = * +c_addr + ^ * +d_addr + ^ * +c_pt + ^ + +456 * +d_pt + ^ * +oc +; + +457 +mp2 + = ( +mp1 + >> 24) ^ (temp1 >> 16) ^ + +458 ( +mp1 + >> 8) ^emp1; + +459 +mp3 + = ( +mp2 + >> 4) ^ (temp2 & 0xf); + +462 +thad + = +mp3 + % +hads +; + +464 +thad + = + +-> +_pt_id + + ( +p_ldb +-> +p +. +n_pts_ + * + +465 ( +thad + + 1- +p_ldb +-> +p +. +n_pts_ +); + +467 i( +LOADB_DEBUG + > 3) { + +468 + `tf +("src_addr: %x dst_addr: %x src_port: %x " + +469 "d_pt: %xroc: %x\n", * +c_addr +, * +d_addr +, + +470 * +c_pt +, * +d_pt +, * +oc +); + +472 + `tf +("thread: %uemp1: %xemp2: %xemp3: %x\n", + +473 +thad +, +mp1 +, +mp2 +, +mp3 +); + +476  +thad +; + +479 + `tf +("Invid_lb_tues: %d\n", +p_ldb +-> +n_lb_tues +); + +483 + } +} + +485  +le +  + +486 + $pkt_wk_ldb_key_v +( + +487  +e_mbuf + * +pkt +, + +488 +__e_unud + +ut32_t + +pkt_num +, + +489 * +g +) + +491  +pe_ldb__pt_h_g + * + + = +g +; + +492  +pe_ldb + * +p_ldb + = (pe_ldb *) + +-> +p +; + +493 +ut32_t + +out_offt + = +p_ldb +->outport_offset; + +495  +lb_pkt + *lb_pkt = (lb_pkt *) + +496 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +497 +MBUF_HDR_ROOM +); + +498 +ut32_t + * +out_pt + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +499 +out_offt +); + +501 #ifde +MY_LOADB_DBG_PRINT + + +502 i( +LOADB_DEBUG + == 3) + +503 + `tf +("Startkt_work_loadb_key\n"); + +506 i(( +LOADB_DEBUG + > 2&& ( +lb_pkt_t_cou + < 10)) { + +507 + `t_pkt1 +( +pkt +); + +508 +lb_pkt_t_cou +++; + +509 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +511 + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +), + +512 +lb_pkt +-> +v4_pt +. +v4 +. +xt_o_id +, +ETH_TYPE_ARP +, + +513 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +517 * +out_pt + = + `lcuϋ_lb_thad_v +( +pkt +, +g +); + +519 +p_ldb +-> +ivedLBPktCou +++; + +521 #ifde +MY_LOADB_DBG_PRINT + + +522 i( +LOADB_DEBUG + == 3) + +523 + `tf +("Endkt_work_loadb_key\n"); + +525 + } +} + +527  +le +  + +528 + $pkt_wk_ldb_key_pub +( + +529  +e_mbuf + * +pkt +, + +530 +__e_unud + +ut32_t + +pkt_num +, + +531 * +g +) + +533  +pe_ldb__pt_h_g + * + + = +g +; + +534  +pe_ldb + * +p_ldb + = (pe_ldb *) + +-> +p +; + +535 +ut32_t + +out_offt + = +p_ldb +->outport_offset; + +537  +lb_pkt + *lb_pkt = (lb_pkt *) + +538 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +539 +MBUF_HDR_ROOM +); + +540 +ut32_t + * +out_pt + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +541 +out_offt +); + +543 #ifde +MY_LOADB_DBG_PRINT + + +544 i( +LOADB_DEBUG + == 3) + +545 + `tf +("Startkt_work_loadb_key\n"); + +548 i(( +LOADB_DEBUG + > 2&& ( +lb_pkt_t_cou + < 10)) { + +549 + `t_pkt1 +( +pkt +); + +550 +lb_pkt_t_cou +++; + +551 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +553 + `e_be_to_u_16 +( +lb_pkt +-> +h +. +h_ty +), + +554 +lb_pkt +-> +v4_pt +. +v4 +. +xt_o_id +, +ETH_TYPE_ARP +, + +555 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +559 * +out_pt + = + `lcuϋ_lb_thad_pub +( +pkt +, +g +); + +561 +p_ldb +-> +ivedLBPktCou +++; + +562 #ifde +MY_LOADB_DBG_PRINT + + +563 i( +LOADB_DEBUG + == 3) + +564 + `tf +("Endkt_work_loadb_key\n"); + +566 + } +} + +568  +le +  + +569 + $pkt4_wk_ldb_key_v +( + +570  +e_mbuf + ** +pkt +, + +571 +__e_unud + +ut32_t + +pkt_num +, + +572 * +g +) + +574  +pe_ldb__pt_h_g + * + + = +g +; + +575  +pe_ldb + * +p_ldb + = (pe_ldb *) + +-> +p +; + +576 +ut32_t + +out_offt + = +p_ldb +->outport_offset; + +578 +ut32_t + * +out_pt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +579 +out_offt +); + +580 +ut32_t + * +out_pt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +581 +out_offt +); + +582 +ut32_t + * +out_pt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +583 +out_offt +); + +584 +ut32_t + * +out_pt3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], + +585 +out_offt +); + +587  +lb_pkt + * +lb_pkt0 + = (lb_pkt *) + +588 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], + +589 +MBUF_HDR_ROOM +); + +590  +lb_pkt + * +lb_pkt1 + = (lb_pkt *) + +591 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], + +592 +MBUF_HDR_ROOM +); + +593  +lb_pkt + * +lb_pkt2 + = (lb_pkt *) + +594 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], + +595 +MBUF_HDR_ROOM +); + +596  +lb_pkt + * +lb_pkt3 + = (lb_pkt *) + +597 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], + +598 +MBUF_HDR_ROOM +); + +600 #ifde +MY_LOADB_DBG_PRINT + + +601 i( +LOADB_DEBUG + == 3) + +602 + `tf +("Startkt4_work_loadb_key\n"); + +605 i(( +LOADB_DEBUG + > 2&& ( +lb_pkt_t_cou + < 10)) { + +606 + `t_pkt1 +( +pkt +[0]); + +607 +lb_pkt_t_cou +++; + +609 + `tf +("\nEth Typ %x, Prot %x\n", + +610 + `e_be_to_u_16 +( +lb_pkt0 +-> +h +. +h_ty +), + +611 +lb_pkt0 +-> +v4_pt +. +v4 +. +xt_o_id +); + +613 + `t_pkt1 +( +pkt +[1]); + +614 +lb_pkt_t_cou +++; + +616 + `tf +("\nEth Typ %x, Prot %x\n", + +617 + `e_be_to_u_16 +( +lb_pkt1 +-> +h +. +h_ty +), + +618 +lb_pkt1 +-> +v4_pt +. +v4 +. +xt_o_id +); + +620 + `t_pkt1 +( +pkt +[2]); + +621 +lb_pkt_t_cou +++; + +623 + `tf +("\nEth Typ %x, Prot %x\n", + +624 + `e_be_to_u_16 +( +lb_pkt2 +-> +h +. +h_ty +), + +625 +lb_pkt2 +-> +v4_pt +. +v4 +. +xt_o_id +); + +627 + `t_pkt1 +( +pkt +[3]); + +628 +lb_pkt_t_cou +++; + +630 + `tf +("\nEth Typ %x, Prot %x\n", + +631 + `e_be_to_u_16 +( +lb_pkt3 +-> +h +. +h_ty +), + +632 +lb_pkt3 +-> +v4_pt +. +v4 +. +xt_o_id +); + +634 * +out_pt0 + = + `lcuϋ_lb_thad_v +( +pkt +[0], +g +); + +635 * +out_pt1 + = + `lcuϋ_lb_thad_v +( +pkt +[1], +g +); + +636 * +out_pt2 + = + `lcuϋ_lb_thad_v +( +pkt +[2], +g +); + +637 * +out_pt3 + = + `lcuϋ_lb_thad_v +( +pkt +[3], +g +); + +639 +p_ldb +-> +ivedLBPktCou + += 4; + +641 #ifde +MY_LOADB_DBG_PRINT + + +642 i( +LOADB_DEBUG + == 3) + +643 + `tf +("Endkt4_work_loadb_key\n"); + +646 + } +} + +648  +le +  + +649 + $pkt4_wk_ldb_key_pub +( + +650  +e_mbuf + ** +pkt +, + +651 +__e_unud + +ut32_t + +pkt_num +, + +652 * +g +) + +654  +pe_ldb__pt_h_g + * + + = +g +; + +655  +pe_ldb + * +p_ldb + = (pe_ldb *) + +-> +p +; + +656 +ut32_t + +out_offt + = +p_ldb +->outport_offset; + +658 +ut32_t + * +out_pt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +659 +out_offt +); + +660 +ut32_t + * +out_pt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +661 +out_offt +); + +662 +ut32_t + * +out_pt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +663 +out_offt +); + +664 +ut32_t + * +out_pt3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], + +665 +out_offt +); + +667  +lb_pkt + * +lb_pkt0 + = (lb_pkt *) + +668 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], + +669 +MBUF_HDR_ROOM +); + +670  +lb_pkt + * +lb_pkt1 + = (lb_pkt *) + +671 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], + +672 +MBUF_HDR_ROOM +); + +673  +lb_pkt + * +lb_pkt2 + = (lb_pkt *) + +674 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], + +675 +MBUF_HDR_ROOM +); + +676  +lb_pkt + * +lb_pkt3 + = (lb_pkt *) + +677 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], + +678 +MBUF_HDR_ROOM +); + +680 #ifde +MY_LOADB_DBG_PRINT + + +681 i( +LOADB_DEBUG + == 3) + +682 + `tf +("Startkt4_work_loadb_key\n"); + +685 i(( +LOADB_DEBUG + > 2&& ( +lb_pkt_t_cou + < 10)) { + +686 + `t_pkt1 +( +pkt +[0]); + +687 +lb_pkt_t_cou +++; + +689 + `tf +("\nEth Typ %x, Prot %x\n", + +690 + `e_be_to_u_16 +( +lb_pkt0 +-> +h +. +h_ty +), + +691 +lb_pkt0 +-> +v4_pt +. +v4 +. +xt_o_id +); + +693 + `t_pkt1 +( +pkt +[1]); + +694 +lb_pkt_t_cou +++; + +696 + `tf +("\nEth Typ %x, Prot %x\n", + +697 + `e_be_to_u_16 +( +lb_pkt1 +-> +h +. +h_ty +), + +698 +lb_pkt1 +-> +v4_pt +. +v4 +. +xt_o_id +); + +700 + `t_pkt1 +( +pkt +[2]); + +701 +lb_pkt_t_cou +++; + +703 + `tf +("\nEth Typ %x, Prot %x\n", + +704 + `e_be_to_u_16 +( +lb_pkt2 +-> +h +. +h_ty +), + +705 +lb_pkt2 +-> +v4_pt +. +v4 +. +xt_o_id +); + +707 + `t_pkt1 +( +pkt +[3]); + +708 +lb_pkt_t_cou +++; + +710 + `tf +("\nEth Typ %x, Prot %x\n", + +711 + `e_be_to_u_16 +( +lb_pkt3 +-> +h +. +h_ty +), + +712 +lb_pkt3 +-> +v4_pt +. +v4 +. +xt_o_id +); + +714 * +out_pt0 + = + `lcuϋ_lb_thad_v +( +pkt +[0], +g +); + +715 * +out_pt1 + = + `lcuϋ_lb_thad_pub +( +pkt +[1], +g +); + +716 * +out_pt2 + = + `lcuϋ_lb_thad_pub +( +pkt +[2], +g +); + +717 * +out_pt3 + = + `lcuϋ_lb_thad_pub +( +pkt +[3], +g +); + +719 +p_ldb +-> +ivedLBPktCou + += 4; + +720 #ifde +MY_LOADB_DBG_PRINT + + +721 i( +LOADB_DEBUG + == 3) + +722 + `tf +("Endkt4_work_loadb_key\n"); + +725 + } +} + +727 +PIPELINE_LOADB_KEY_PORT_IN_AH +( +pt__ah_ldb_key_v +, + +728 +pkt_wk_ldb_key_v +, + +729 +pkt4_wk_ldb_key_v +); + +731 +PIPELINE_LOADB_KEY_PORT_IN_AH +( +pt__ah_ldb_key_pub +, + +732 +pkt_wk_ldb_key_pub +, + +733 +pkt4_wk_ldb_key_pub +); + +736 + $pe_ldb_r_gs +( +pe_ldb + * +p +, + +737  +pe_ms + * +ms +) + +739 +ut32_t + +out_offt_e + = 0; + +740 +ut32_t + +n_vnf_thads_e + = 0; + +741 +ut32_t + +pktq__v_e + = 0; + +742 +ut32_t + +v_que_hdr_e + = 0; + +743 +ut32_t + +v_to_pub_m_e + = 0; + +744 +ut8_t + +n_v__pt + = 0; + +745 +ut32_t + +i +; + +748 +p +-> +n_lb_tues + = 0; + +750 i( +LOADB_DEBUG + > 2) + +751 + `tf +("LOADBipeline_loadb_parse_argsarams->n_args: %d\n", + +752 +ms +-> +n_gs +); + +754  +i + = 0; i < +ms +-> +n_gs +; i++) { + +755 * +g_me + = +ms +-> +gs_me +[ +i +]; + +756 * +g_vue + = +ms +-> +gs_vue +[ +i +]; + +758 i( +LOADB_DEBUG + > 2) + +759 + `tf +("LOADBrgs[%d]: %%d, %s\n", +i +, +g_me +, + +760 + `oi +( +g_vue +),rg_value); + +763 i( + `rcmp +( +g_me +, "outport_offset") == 0) { + +764 i( +out_offt_e +) + +766 +out_offt_e + = 1; + +768 +p +-> +out_offt + = + `oi +( +g_vue +); + +769 i( +p +-> +out_offt + <= 0) { + +770 + `tf +("Outport_offset is invalid\n"); + +773 + `tf +("out_offt: 0x%x\n", +p +-> +out_offt +); + +777 i( + `rcmp +( +g_me +, "n_vnf_threads") == 0) { + +778 i( +n_vnf_thads_e +) + +780 +n_vnf_thads_e + = 1; + +782 +p +-> +n_vnf_thads + = + `oi +( +g_vue +); + +784 +tٮ_vnf_thads + + +p +-> +n_vnf_thads +; + +786 i(( +p +-> +n_vnf_thads + <= 0) + +787 || ( +tٮ_vnf_thads + > +MAX_VNF_THREADS +)) { + +788 + `tf +("n_vnf_threads : MIN->0 MAX->16\n"); + +791 + `tf +("n_vnf_thad : 0x%x\n", +p +-> +n_vnf_thads +); + +792 + `tf +("tٮ_vnf_thads: 0x%x\n", +tٮ_vnf_thads +); + +797 i( + `rcmp +( +g_me +, "pktq_in_prv") == 0) { + +798 i( +pktq__v_e +) { + +799 + `tf +("Duplicatektq_in_prv ... " + +803 +pktq__v_e + = 1; + +805  +rxpt + = 0, +j + = 0; + +806  +phy_pt_num +[8]; + +807 * +tok + = + `ok +( +g_vue +, "RXQ"); + +808  +tok +) { + +809 +j + = 0; + +810 ( +j + < 7&& ( +tok +[j] != '.')) { + +811 +phy_pt_num +[ +j +] = +tok +[j]; + +812 +j +++; + +814 +phy_pt_num +[ +j +] = '\0'; + +815 +rxpt + = + `oi +( +phy_pt_num +); + +816 + `tf +("token: %s,hy_port_str: %s, " + +818 +tok +, +phy_pt_num +, +rxpt +); + +819 +v__pt_a +[ +n_v__pt +++] = +rxpt +; + +821 i( +rxpt + < 0xff){ + +822 if( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +823 +_pt_d_a +[ +rxpt +] = 1; + +825 +tok + = + `ok +( +NULL +, "RXQ"); + +828 i( +n_v__pt + == 0) { + +829 + `tf +("VNF commonarserror - " + +838 i( + `rcmp +( +g_me +, "prv_que_handler") == 0) { + +840 i( +v_que_hdr_e +) { + +841 + `tf +("Duplicatektq_in_prv ..\n\n"); + +844 +v_que_hdr_e + = 1; + +845 +n_v__pt + = 0; + +847 * +tok +; + +848  +rxpt + = 0; + +850 +tok + = + `ok +( +g_vue +, "("); + +851 +tok + = + `ok +(token, ")"); + +852 +tok + = + `ok +(token, ","); + +853 + `tf +("*****rv_que_handler *****\n"); + +854 i( +tok +) + +855 + `tf +("rg i:%s\n", +tok +); + +857 i( +tok +) + +859 + `tf +("rg i:%s\n", +tok +); + +862  +tok + ! +NULL +) { + +863 + `tf +(" %s\n", +tok +); + +864 +rxpt + = + `oi +( +tok +); + +865 +v_que_pt_dex +[ +n_v__pt +++] = +rxpt +; + +866 i( +rxpt + < 0xff){ + +867 if( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +868 +_pt_egss_v +[ +rxpt +] = 1; + +870 +p +-> +n_v_Q +++; + +871 +tok + = + `ok +( +NULL +, ","); + +874 i( +n_v__pt + == 0) { + +875 + `tf +("VNF commonarserr -orv RXhyort\n"); + +882 i( + `rcmp +( +g_me +, "prv_to_pub_map") == 0) { + +883 i( +v_to_pub_m_e +) { + +884 + `tf +("Duplicatedrv_to_pub_map ... " + +888 +v_to_pub_m_e + = 1; + +890  +rxpt + = 0, +txpt + = 0, +j + = 0, +k + = 0; + +891  +rx_phy_pt_num +[5]; + +892  +tx_phy_pt_num +[5]; + +893 * +tok + = + `ok +( +g_vue +, "("); + +894  +tok +) { + +895 +j + = 0; + +896 ( +j + < 4&& ( +tok +[j] != ',')) { + +897 +rx_phy_pt_num +[ +j +] = +tok +[j]; + +898 +j +++; + +900 +rx_phy_pt_num +[ +j +] = '\0'; + +901 +rxpt + = + `oi +( +rx_phy_pt_num +); + +903 +j +++; + +904 +k + = 0; + +905 ( +k + < 4&& ( +tok +[ +j ++k] != ')')) { + +906 +tx_phy_pt_num +[ +k +] = +tok +[ +j ++k]; + +907 +k +++; + +909 +tx_phy_pt_num +[ +k +] = '\0'; + +910 +txpt + = + `oi +( +tx_phy_pt_num +); + +912 + `tf +("token: %s,rx_phy_port_str: %s,hy_port_num " + +914 +tok +, +rx_phy_pt_num +, +rxpt +, + +915 +tx_phy_pt_num +, +txpt +); + +916 if( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +917 i(( +rxpt + > +PIPELINE_MAX_PORT_IN +) || + +918 ( +txpt + > +PIPELINE_MAX_PORT_IN +) || + +919 ( +_pt_d_a +[ +rxpt +] != 1)) { + +920 + `tf +("CG-NAPTarserror - " + +922 "Tx %d, Rx D %d\n", +rxpt +, +txpt +, + +923 +_pt_d_a +[ +rxpt +]); + +927 i( +rxpt + < 0xff){ + +928 i( +rxpt + < +PIPELINE_MAX_PORT_IN +) + +929 +v_to_pub_m +[ +rxpt +] = +txpt +; + +931 i( +txpt + < 0xff) + +932 if( +txpt + < +PIPELINE_MAX_PORT_IN +) + +933 +pub_to_v_m +[ +txpt +] = +rxpt +; + +934 +tok + = + `ok +( +NULL +, "("); + +940 i( + `rcmp +( +g_me +, "n_lb_tuples") == 0) { + +941 +p +-> +n_lb_tues + = + `oi +( +g_vue +); + +942 + `tf +("n_lb_tues: 0x%x\n", +p +-> +n_lb_tues +); + +946 i( + `rcmp +( +g_me +, "loadb_debug") == 0) { + +947 +LOADB_DEBUG + = + `oi +( +g_vue +); + +955 i(( +n_vnf_thads_e + =0|| ( +out_offt_e + == 0)) + +960 + } +} + +962  + $check_ldb_thad +( + +963  +p_ms + * +p +, + +964  +pe_ms + * +ms +, + +965 +t32_t + +n_vnf_thads +) + +967 +ut32_t + +i +; + +968  +pe_num + = 0; + +969  +cou + = 0; + +970  +dt_ + = + `ssnf +( +ms +-> +me +, "PIPELINE%d", & +pe_num +); + +971 i( +dt_ + != 1) + +974  +i + = +pe_num + + 2; i < +p +-> +n_pes +; i++) { + +975  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +976 i(! + `cmp +( +p +-> +ty +, "LOADB", + ` +(p->type))) + +978 +cou +++; + +980 i( +n_vnf_thads + ! +cou +) + +984 + } +} + +986 * + $pe_ldb_ +( + +987  +pe_ms + * +ms +, + +988 +__e_unud + * +g +) + +992  +pe + * +p +; + +993  +pe_ldb + * +p_ldb +; + +994 +ut32_t + +size +, +i +, +_pts_g_size +; + +997 i(( +ms + = +NULL +) || + +998 ( +ms +-> +n_pts_ + =0|| (ms-> +n_pts_out + == 0)) + +999  +NULL +; + +1002 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_ldb +)); + +1003 +p + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1004 +p_ldb + = ( +pe_ldb + *) +p +; + +1005 i( +p + = +NULL +) + +1006  +NULL +; + +1008 + `ry +( +p +-> +me +, +ms +->name); + +1009 +p +-> +log_v + = +ms +->log_level; + +1011 + `PLOG +( +p +, +HIGH +, "LOADB"); + +1013 +p_ldb +-> +n_vnf_thads + = 0; + +1014 +p_ldb +-> +out_offt + = 0; + +1015 +p_ldb +-> +ivedLBPktCou + = 0; + +1016 +p_ldb +-> +drݳdLBPktCou + = 0; + +1017  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +1018 +p_ldb +-> +lks_m +[ +i +] = 0xff; + +1020 +p_ldb +-> +pe_num + = 0xff; + +1021 +p_ldb +-> +n_v_Q + = 0; + +1022 +p_ldb +-> +n_pub_Q + = 0; + +1026 i( + `pe_ldb_r_gs +( +p_ldb +, +ms +)) + +1027  +NULL +; + +1031  +e_pe_ms + +pe_ms + = { + +1032 . +me + = "LOADB", + +1033 . +sock_id + = +ms +->socket_id, + +1034 . +offt_pt_id + = 0, + +1037 +p +-> + `e_pe_ +(& +pe_ms +); + +1038 i( +p +->= +NULL +) { + +1039 + `e_ +( +p +); + +1040  +NULL +; + +1043 + `tf +("Ldb->%p, sock %d\n", +p +->p, + +1044 +pe_ms +. +sock_id +); + +1048 +_pts_g_size + = + +1049 + `RTE_CACHE_LINE_ROUNDUP +((( +pe_ldb__pt_h_g +)) + +1050 * ( +ms +-> +n_pts_ +)); + +1051  +pe_ldb__pt_h_g + * + + = + +1052 ( +pe_ldb__pt_h_g + *) + +1053 + `e_zmloc +( +NULL +, + +1054 +_pts_g_size +, + +1055 +RTE_CACHE_LINE_SIZE +); + +1056 i( + + = +NULL +) + +1057  +NULL +; + +1059 + `tf +("o%p\n", + +); + +1062 +p +-> +n_pts_ + = +ms +->n_ports_in; + +1063  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +1065 ( + +[ +i +]). +p + = +p_ldb +; + +1066 ( + +[ +i +]). +_pt_id + = i; + +1068  +e_pe_pt__ms + +pt_ms + = { + +1069 . +s + = + +1070 + `pe_pt__ms_g_s +(& +ms +-> +pt_ + + +1071 [ +i +]), + +1072 . +g_ + = + +1073 + `pe_pt__ms_cvt +(& +ms +-> +pt_ + + +1074 [ +i +]), + +1076 . +f_ai + = +NULL +, + +1077 . +g_ah + = &( + +[ +i +]), + +1078 . +bur_size + = +ms +-> +pt_ +[ +i +].burst_size, + +1082 i( + `is_pt_dex_iv +( +i +)) { + +1083 + `tf +("LOADB %d܈iPrv\n", +i +); + +1084 +pt_ms +. +f_ai + = +pt__ah_ldb_key_v +; + +1086 + `tf +("LOADB %d܈iPub\n", +i +); + +1087 +pt_ms +. +f_ai + = +pt__ah_ldb_key_pub +; + +1090  +us + = + `e_pe_pt__ +( +p +->p, + +1091 & +pt_ms +, + +1092 & +p +-> +pt__id +[ +i +]); + +1094 i( +us +) { + +1095 + `e_pe_ +( +p +->p); + +1096 + `e_ +( +p +); + +1097  +NULL +; + +1102 +p_ldb +-> +n_pub_Q + =_ldb-> +p +. +n_pts_ + -_ldb-> +n_v_Q +; + +1103 + `tf +("LOADB :_prv_Q - %d_pub_Q - %d\n", + +1104 +p_ldb +-> +n_v_Q +,_ldb-> +n_pub_Q +); + +1106  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +1107 + `tf +("is_pt_dex_iv(%d): %d\n", +i +, + +1108 + `is_pt_dex_iv +( +i +)); + +1109 + `tf +("is_phy_pt_iv(%d): %d\n", +i +, + +1110 + `is_phy_pt_iv +( +i +)); + +1111 + `tf +("ai hd˸o%d:%p\n", +i +, + +1112 +p_ldb +-> +p +.p-> +pts_ +[ +i +]. +f_ai +); + +1116 +p +-> +n_pts_out + = +ms +->n_ports_out; + +1117  +i + = 0; i < +p +-> +n_pts_out +; i++) { + +1118  +e_pe_pt_out_ms + +pt_ms + = { + +1119 . +s + = + +1120 + `pe_pt_out_ms_g_s +(& +ms +-> +pt_out + + +1121 [ +i +]), + +1122 . +g_ + = + +1123 + `pe_pt_out_ms_cvt +(& +ms +-> +pt_out + + +1124 [ +i +]), + +1125 . +f_ai + = +NULL +, + +1126 . +g_ah + = +NULL +, + +1129  +us + = + `e_pe_pt_out_ +( +p +->p, + +1130 & +pt_ms +, + +1131 & +p +-> +pt_out_id +[ +i +]); + +1133 i( +us +) { + +1134 + `e_pe_ +( +p +->p); + +1135 + `e_ +( +p +); + +1136  +NULL +; + +1139 + `tf +("Ou܈p->pt_out_id[%d] %p\n", +i +, + +1140 & +p +-> +pt_out_id +[ +i +]); + +1143  +pe_num + = 0; + +1144  +dt_ + = + `ssnf +( +ms +-> +me +, "PIPELINE%d", & +pe_num +); + +1145 i( +dt_ + != 1) { + +1146 + `tf +("Unableoeadipelineumber\n"); + +1147  +NULL +; + +1149 +p_ldb +-> +pe_num + =ipeline_num; + +1151 + `t_out_id +( +pe_num +, +p +, +lb_out_id +); + +1152 + `t_phy_out_m +( +pe_num +, +p_ldb +-> +lks_m +); + +1154 + `t_pt_to_ldb_m +( +pe_num +); + +1156 + `gi_ldb_to_p +( +pe_num +, +p +, +p +); + +1158 + `gi_pe_Qs +( +p_ldb +-> +pe_num +, +p +); + +1159 + `t_lk_m +( +p_ldb +-> +pe_num +, +p +,_ldb-> +lks_m +); + +1163 +p +-> +n_bs + = 1; + +1166  +e_b_y_ms + +b_y_ms + = { + +1167 . +n_s + = +MAX_VNF_THREADS +, + +1168 . +offt + = +p_ldb +-> +out_offt +, + +1170  +e_pe_b_ms + +b_ms + = { + +1171 . +s + = & +e_b_y_s +, + +1172 . +g_ + = & +b_y_ms +, + +1173 . +f_ai_h + = +NULL +, + +1174 . +f_ai_miss + = +NULL +, + +1175 . +g_ah + = +p_ldb +, + +1176 . +ai_da_size + = 0, + +1179  +us +; + +1181 +us + = + `e_pe_b_ +( +p +->p, + +1182 & +b_ms +, + +1183 & +p +-> +b_id +[0]); + +1185 i( +us +) { + +1186 + `e_pe_ +( +p +->p); + +1187 + `e_ +( +p +); + +1188  +NULL +; + +1193  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +1194  +us + = + `e_pe_pt__c_to_b +( + +1195 +p +->p, + +1196 +p +-> +pt__id +[ +i +], + +1197 +p +-> +b_id +[0]); + +1199 i( +us +) { + +1200 + `e_pe_ +( +p +->p); + +1201 + `e_ +( +p +); + +1202  +NULL +; + +1207  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +1208  +us + = + `e_pe_pt__ab +( +p +->p, + +1209 +p +-> +pt__id +[ +i +]); + +1211 i( +us +) { + +1212 + `e_pe_ +( +p +->p); + +1213 + `e_ +( +p +); + +1214  +NULL +; + +1220  +i + = 0; i < +MAX_VNF_THREADS +; i++) { + +1221  +e_b_y_key + +key + = { + +1222 . +pos + = +i +, + +1224  +ldb_b_y + +y +; + +1225 +y +. +hd +. +ai + = +RTE_PIPELINE_ACTION_PORT +; + +1227 i( +i + < +p +-> +n_pts_out +) { + +1228 +y +. +hd +. +pt_id + = +p +-> +pt_out_id +[ +i +]; + +1229 + `tf +("\n%d,->pt_out_id[%d] %d", +i +, i, + +1230 +p +-> +pt_out_id +[ +i +]); + +1233 +y +. +hd +. +pt_id + = +p +-> +pt_out_id +[0]; + +1234 +y +. +hd +. +ai + = +RTE_PIPELINE_ACTION_DROP +; + +1237  +e_pe_b_y + * +y_r +; + +1238  +key_found +, +us +; + +1239 +us + = + `e_pe_b_y_add +( + +1240 +p +->p, + +1241 +p +-> +b_id +[0], + +1242 & +key +, + +1243 ( +e_pe_b_y + *) + +1244 & +y +, + +1245 & +key_found +, + +1246 & +y_r +); + +1247 i( +us +) { + +1248 + `e_pe_ +( +p +->p); + +1249 + `e_ +( +p +); + +1250  +NULL +; + +1256  +e_pe_b_y + +deu_y + = { + +1257 . +ai + = +RTE_PIPELINE_ACTION_PORT +, + +1259 . +pt_id + = +p +-> +pt_out_id +[0], + +1262  +e_pe_b_y + * +deu_y_r +; + +1264  +us + = + `e_pe_b_deu_y_add +( + +1265 +p +->p, + +1266 +p +-> +b_id +[0], + +1267 & +deu_y +, + +1268 & +deu_y_r +); + +1270 i( +us +) { + +1271 + `e_pe_ +( +p +->p); + +1272 + `e_ +( +p +); + +1273  +NULL +; + +1279 i( + `e_pe_check +( +p +->p) < 0) { + +1280 + `e_pe_ +( +p +->p); + +1281 + `e_ +( +p +); + +1282  +NULL +; + +1286 +p +-> +n_msgq + = +ms +->n_msgq; + +1287  +i + = 0; i < +p +-> +n_msgq +; i++) + +1288 +p +-> +msgq_ +[ +i +] = +ms +->msgq_in[i]; + +1289  +i + = 0; i < +p +-> +n_msgq +; i++) + +1290 +p +-> +msgq_out +[ +i +] = +ms +->msgq_out[i]; + +1293 + `memy +( +p +-> +hdrs +, handlers, (p->handlers)); + +1294 + `memy +( +p_ldb +-> +cuom_hdrs +, + +1295 +cuom_hdrs +, ( +p_ldb +->custom_handlers)); + +1297  +p +; + +1298 + } +} + +1300  + $pe_ldb_ +(* +pe +) + +1302  +pe + * +p + = (pipeline *)pipeline; + +1305 i( +p + = +NULL +) + +1309 + `e_pe_ +( +p +->p); + +1310 + `e_ +( +p +); + +1312 + } +} + +1315 + $pe_ldb_ack +(* +pe +, + +1316 +__e_unud + +ut32_t + +pt_ +, ut32_* +pt_out +) + +1318  +pe + * +p + = (pipeline *)pipeline; + +1321 i(( +p + = +NULL +|| ( +pt_ + >p-> +n_pts_ +|| ( +pt_out + == NULL)) + +1324 i( +p +-> +n_pts_ + == 1) { + +1325 * +pt_out + = 0; + +1330 + } +} + +1332  + $pe_ldb_tim +(* +pe +) + +1334  +pe + * +p + = (pipeline *)pipeline; + +1336 + `pe_msg_q_hd +( +p +); + +1337 + `e_pe_ush +( +p +->p); + +1340 + } +} + +1342 * + $pe_ldb_msg_q_y_dbg_hdr +( +pe + * +p +, * +msg +) + +1344  +pe_ldb_y_dbg_msg_r + * +r + = +msg +; + +1345 +ut8_t + * +Msg + = +msg +; + +1346  +pe_ldb + * +p_ldb + = (pe_ldb *) +p +; + +1348 +r +-> +us + = 0; + +1350 + `tf +("LoadB debug handler called withrgs %x %x, offset %d\n", + +1351 +Msg +[ +LOADB_DBG_CMD_OFST +], Msg[LOADB_DBG_CMD_OFST + 1], + +1352 +LOADB_DBG_CMD_OFST +); + +1354 i( +Msg +[ +LOADB_DBG_CMD_OFST +] = +LOADB_DBG_CMD_STATS_SHOW +) { + +1355 + `tf +("\nLdB Pack Sts: Reived %" +PRIu64 + "\n", + +1356 +p_ldb +-> +ivedLBPktCou +); + +1357  +r +; + +1359 i( +Msg +[ +LOADB_DBG_CMD_OFST +] = +LOADB_DBG_CMD_STATS_CLEAR +) { + +1360 + `tf +("\nLdB Pack Sts: Reived %" +PRIu64 + "\n", + +1361 +p_ldb +-> +ivedLBPktCou +); + +1362 +p_ldb +-> +ivedLBPktCou + = 0; + +1363  +r +; + +1366 i( +Msg +[ +LOADB_DBG_CMD_OFST +] = +LOADB_DBG_CMD_DBG_LEVEL +) { + +1367 +LOADB_DEBUG + = +Msg +[ +LOADB_DBG_CMD_OFST + + 1]; + +1368 + `tf +("LOADB Debugev s%d\n", +LOADB_DEBUG +); + +1369 +lb_pkt_t_cou + = 0; + +1370  +r +; + +1372 i( +Msg +[ +LOADB_DBG_CMD_OFST +] = +LOADB_DBG_CMD_DBG_SHOW +) { + +1373 + `tf +("\nLdB DBG Lev: %u\n", +LOADB_DEBUG +); + +1374  +r +; + +1376 i( +Msg +[ +LOADB_DBG_CMD_OFST +] = +LOADB_DBG_CMD_IF_STATS +) { + +1377 + `tf +("\n"); + +1378 +ut8_t + +i +, +j +; + +1380  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +1381  +e_h_s + +s +; + +1382 + `e_h_s_g +( +p_ldb +-> +lks_m +[ +i +], & +s +); + +1383 i( + `is_phy_pt_iv +( +i +)) + +1384 + `tf +("PrivP܈St%d\n", +i +); + +1386 + `tf +("PubliP܈St %d\n", +i +); + +1387 + `tf +("\n\tack: %" +PRIu64 + "\n\topackets : %" + +1388 +PRIu64 + "\n\tierrors : %" PRIu64 + +1389 "\n\tۼܠ : %" +PRIu64 + "\n\trx_nombuf: %" + +1390 +PRIu64 + "\n", +s +. +acks +, sts. +acks +, + +1391 +s +. +s +, sts. +ۼs +, sts. +rx_nombuf +); + +1392 i( + `is_phy_pt_iv +( +i +)) + +1393 + `tf +("Private Q: "); + +1395 + `tf +("Public Q: "); + +1396  +j + = 0; j < +RTE_ETHDEV_QUEUE_STAT_CNTRS +; j++) + +1397 + `tf +(" %" +PRIu64 + ", %" PRIu64 "|", + +1398 +s +. +q_acks +[ +j +], + +1399 +s +. +q_acks +[ +j +]); + +1401 + `tf +("\n\n"); + +1404  +r +; + +1407  +r +; + +1409 + } +} + +1411  +pe_be_s + + gpe_ldb_be_s + = { + +1412 . +f_ + = +pe_ldb_ +, + +1413 . + gf_ + = +pe_ldb_ +, + +1414 . + gf_run + = +NULL +, + +1415 . + gf_tim + = +pe_ldb_tim +, + +1416 . + gf_ack + = +pe_ldb_ack +, + + @VIL/pipeline_loadb/pipeline_loadb_be.h + +17 #ide +__INCLUDE_PIPELINE_LOADB_BE_H__ + + +18  + #__INCLUDE_PIPELINE_LOADB_BE_H__ + + + ) + +20  + ~ + +21  + ~"pe_comm_be.h +" + +22  + ~ + +24  + #MBUF_HDR_ROOM + 256 + + ) + +25  + #ETH_HDR_SIZE + 14 + + ) + +26  + #IP_HDR_SRC_ADR_OFST + 12 + + ) + +27  + #IP_HDR_DST_ADR_OFST + 16 + + ) + +28  + #IP_HDR_PROTOCOL_OFST + 9 + + ) + +29  + #IP_HDR_SIZE + 20 + + ) + +30  + #IPV6_HDR_SRC_ADR_OFST + 8 + + ) + +31  + #IPV6_HDR_DST_ADR_OFST + 24 + + ) + +32  + #IPV6_HDR_PROTOCOL_OFST + 6 + + ) + +33  + #IPV6_HDR_SIZE + 40 + + ) + +34  + #IP_PROTOCOL_TCP + 6 + + ) + +35  + #IP_PROTOCOL_UDP + 17 + + ) + +36  + #PIPELINE_LOADB_KEY_MAX_SIZE + 64 + + ) + +38  + #LOADB_ING_DIR + 0 + + ) + +39  + #LOADB_EGR_DIR + 1 + + ) + +41  + #LOADB_DBG_CMD_OFST + 8 + + ) + +42  + #LOADB_DBG_CMD_STATS_SHOW + 0 + + ) + +43  + #LOADB_DBG_CMD_STATS_CLEAR + 1 + + ) + +44  + #LOADB_DBG_CMD_DBG_LEVEL + 2 + + ) + +45  + #LOADB_DBG_CMD_DBG_SHOW + 3 + + ) + +46  + #LOADB_DBG_CMD_IF_STATS + 4 + + ) + +47  + #LOADB_DBG_CMD_OFST1 + 10 + + ) + +49  + #PIPELINE_LOADB_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +51 + `f_ah +( \ + +52 +__e_unud +  +e_pe + * +e_p +, \ + +53  +e_mbuf + ** +pkts +, \ + +54 +ut32_t + +n_pkts +, \ + +55 * +g +) \ + +57 +ut32_t + +i +, +j +; \ + +59  +j + = 0; j < +n_pkts +; j++) \ + +60 + `e_etch0 +( +pkts +[ +j +]); \ + +61 +pkt_bur_t + = 0; \ + +62  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +63 + `f_pkt4_wk +(& +pkts +[ +i +], i, +g +); \ + +65  ; +i + < +n_pkts +; i++) \ + +66 + `f_pkt_wk +( +pkts +[ +i +], i, +g +); \ + +70 } + + ) + +72 +ut8_t + +LOADB_DEBUG +; + +73 +ut8_t + +_pt_egss_v +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ut8_t + +v_que_pt_dex +[ +PIPELINE_MAX_PORT_IN +]; + +75 +ut8_t + +_pt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +77 +ut8_t + +g__pt_d +(uint8_t); + +78 +ut8_t + +is_pt_dex_iv +( +ut16_t +); + +79 +ut8_t + +is_phy_pt_iv +( +ut16_t +); + +80 +ut32_t + +g_v_to_pub_pt +(ut32_* +_addr +, +ut8_t + +ty +); + +81 +ut32_t + +g_pub_to_v_pt +(ut32_* +_addr +, +ut8_t + +ty +); + +82 +ut8_t + +v_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +90  + spe_ldb__pt_h_g + { + +91  +pe_ldb + * + mp +; + +92 +ut8_t + + m_pt_id +; + +98 + epe_ldb_msg_q_ty + { + +100 + mPIPELINE_LOADB_MSG_REQ_ENTRY_DBG +, + +101 + mPIPELINE_LOADB_MSG_REQS + + +107  + spe_ldb_y_dbg_msg_q + { + +108 +pe_msg_q_ty + + mty +; + +109 +pe_ldb_msg_q_ty + + msubty +; + +112 +ut8_t + + mda +[5]; + +115  + spe_ldb_y_dbg_msg_r + { + +116  + mus +; + +117 * + my_r +; + +120  +pe_be_s + +pe_ldb_be_s +; + +121  + sv4_hdr_pt + { + +122  +v4_hdr + + mv4 +; + +123 +ut16_t + + mc_pt +; + +124 +ut16_t + + md_pt +; + +126 } +__ibu__ +(( +__cked__ +)); + +127  + sv6_hdr_pt + { + +128  +v6_hdr + + mv6 +; + +129 +ut16_t + + mc_pt +; + +130 +ut16_t + + md_pt +; + +132 } +__ibu__ +(( +__cked__ +)); + +134  + slb_pkt + { + +135  +h_hdr + + mh +; + +137  +v4_hdr_pt + + mv4_pt +; + +138  +v6_hdr_pt + + mv6_pt +; + +140 } +__ibu__ +(( +__cked__ +)); + +142 +ut8_t + +lcuϋ_lb_thad_v +( +e_mbuf + * +pkt +, * +g +); + +143 +ut8_t + +lcuϋ_lb_thad_pub +( +e_mbuf + * +pkt +, * +g +); + +144  +check_ldb_thad +( + +145  +p_ms + * +p +, + +146  +pe_ms + * +ms +, + +147 +t32_t + +n_vnf_thads +); + + @VIL/pipeline_master/pipeline_master.c + +17  + ~"pe_ma.h +" + +18  + ~"pe_ma_be.h +" + +20  +pe__s + + gpe_ma__s + = { + +21 . +f_ + = +NULL +, + +22 . + gf_ + = +NULL +, + +23 . + gcmds + = +NULL +, + +26  +pe_ty + + gpe_ma + = { + +27 . +me + = "MASTER", + +28 . + gbe_s + = & +pe_ma_be_s +, + +29 . + g_s + = & +pe_ma__s +, + + @VIL/pipeline_master/pipeline_master.h + +17 #ide +__INCLUDE_PIPELINE_MASTER_H__ + + +18  + #__INCLUDE_PIPELINE_MASTER_H__ + + + ) + +20  + ~"pe.h +" + +22  +pe_ty + +pe_ma +; + + @VIL/pipeline_master/pipeline_master_be.c + +17  + ~ + +18  + ~ + +20  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28  + ~"p.h +" + +29  + ~"pe_ma_be.h +" + +31  + spe_ma + { + +32  +p_ms + * + mp +; + +33  +cmdle + * + m +; + +34  + mst_fe_de +; + +35 } + g__e_che_igd +; + +38 + $pe_ +( +__e_unud +  +pe_ms + * +ms +, * +g +) + +40  +p_ms + * +p + = (p_m* +g +; + +41  +pe_ma + * +p +; + +42 +ut32_t + +size +; + +45 i( +p + = +NULL +) + +46  +NULL +; + +49 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_ma +)); + +50 +p + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +51 i( +p + = +NULL +) + +52  +NULL +; + +55 +p +-> +p + =pp; + +57 +p +-> + + = + `cmdle_d_w +( +p +-> +cmds +, "pipeline> "); + +58 i( +p +-> + + = +NULL +) { + +59 + `e_ +( +p +); + +60  +NULL +; + +63 +p +-> +st_fe_de + = 0; + +64 i( +p +-> +st_fe + = +NULL +) + +65 +p +-> +st_fe_de + = 1; + +67  (* +p +; + +68 + } +} + +71 + $pe_ +(* +pe +) + +73  +pe_ma + * +p + = (pe_ma * +pe +; + +75 i( +p + = +NULL +) + +76  - +EINVAL +; + +78 + `cmdle_d_ex +( +p +-> + +); + +79 + `e_ +( +p +); + +82 + } +} + +85 + $pe_run +(* +pe +) + +87  +pe_ma + * +p + = (pe_ma * +pe +; + +88  +us +; + +90 i( +p +-> +st_fe_de + == 0) { + +91  +p_ms + * +p + = +p +->app; + +92  +fd + = + `ݒ +( +p +-> +st_fe +, +O_RDONLY +); + +94 i( +fd + < 0) + +95 + `tf +("Cannot open CLI script file \"%s\"\n", + +96 +p +-> +st_fe +); + +98  +cmdle + * +fe_ +; + +100 + `tf +("Running CLI script file \"%s\" ...\n", + +101 +p +-> +st_fe +); + +102 +fe_ + = + `cmdle_w +( +p +-> + +-> +x +, "", +fd +, 1); + +103 + `cmdle_ +( +fe_ +); + +104 + `o +( +fd +); + +107 +p +-> +st_fe_de + = 1; + +110 +us + = + `cmdle_pl +( +p +-> + +); + +111 i( +us + < 0) + +112 + `e_nic +("CLIȔr (%" +PRId32 + ")\n", +us +); + +113 i( +us + = +RDLINE_EXITED +) { + +114 + `cmdle_d_ex +( +p +-> + +); + +115 + `e_ex +(0, "Bye!\n"); + +119 + } +} + +122 + $pe_tim +( +__e_unud + * +pe +) + +124 + `e_tim_mage +(); + +126 + } +} + +128  +pe_be_s + + gpe_ma_be_s + = { + +129 . +f_ + = +pe_ +, + +130 . + gf_ + = +pe_ +, + +131 . + gf_run + = +pe_run +, + +132 . + gf_tim + = +pe_tim +, + +133 . + gf_ack + = +NULL +, + + @VIL/pipeline_master/pipeline_master_be.h + +17 #ide +__INCLUDE_PIPELINE_MASTER_BE_H__ + + +18  + #__INCLUDE_PIPELINE_MASTER_BE_H__ + + + ) + +20  + ~"pe_comm_be.h +" + +22  +pe_be_s + +pe_ma_be_s +; + + @VIL/pipeline_passthrough/pipeline_passthrough.c + +17  + ~"pe_shrough.h +" + +18  + ~"pe_shrough_be.h +" + +20  +pe__s + + gpe_shrough__s + = { + +21 . +f_ + = +NULL +, + +22 . + gf_ + = +NULL +, + +23 . + gcmds + = +NULL +, + +26  +pe_ty + + gpe_shrough + = { + +27 . +me + = "PASS-THROUGH", + +28 . + gbe_s + = & +pe_shrough_be_s +, + +29 . + g_s + = & +pe_shrough__s +, + + @VIL/pipeline_passthrough/pipeline_passthrough.h + +17 #ide +__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + +18  + #__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + + ) + +20  + ~"pe.h +" + +22  +pe_ty + +pe_shrough +; + + @VIL/pipeline_passthrough/pipeline_passthrough_be.c + +17  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +26  + ~"pe_shrough_be.h +" + +27  + ~"pe_ais_comm.h +" + +28  + ~"rr.h +" + +29  + ~"hash_func.h +" + +31  + spe_shrough + { + +32  +pe + + mp +; + +33  +pe_shrough_ms + + mms +; + +34 +e_b_hash__hash + + mf_hash +; + +35 } + g__e_che_igd +; + +37  +pe_msg_q_hdr + + ghdrs +[] = { + +38 [ +PIPELINE_MSG_REQ_PING +] = + +39 +pe_msg_q_pg_hdr +, + +40 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +41 +pe_msg_q_s_pt__hdr +, + +42 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +43 +pe_msg_q_s_pt_out_hdr +, + +44 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +45 +pe_msg_q_s_b_hdr +, + +46 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +47 +pe_msg_q_pt__ab_hdr +, + +48 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +49 +pe_msg_q_pt__dib_hdr +, + +50 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +51 +pe_msg_q_vid_hdr +, + +54  +le + +__ibu__ +(( +ways_le +))  + +55 + $pkt_wk +( + +56  +e_mbuf + * +pkt +, + +57 * +g +, + +58 +ut32_t + +dma_size +, + +59 +ut32_t + +hash_abd +, + +60 +ut32_t + +lb_hash +, + +61 +ut32_t + +pt_out_pow2 +) + +63  +pe_shrough + * +p + = +g +; + +65 +ut64_t + * +dma_d + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +66 +p +-> +ms +. +dma_d_offt +); + +67 +ut64_t + * +dma_c + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +68 +p +-> +ms +. +dma_c_offt +); + +69 +ut64_t + * +dma_mask + = (ut64_* +p +-> +ms +. +dma_c_mask +; + +70 +ut32_t + * +dma_hash + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +71 +p +-> +ms +. +dma_hash_offt +); + +72 +ut32_t + +i +; + +75  +i + = 0; i < ( +dma_size + / 8); i++) + +76 +dma_d +[ +i +] = +dma_c +[i] & +dma_mask +[i]; + +79 i( +hash_abd +) { + +80 +ut32_t + +hash + = +p +-> + `f_hash +( +dma_d +, +dma_size +, 0); + +81 * +dma_hash + = +hash +; + +83 i( +lb_hash +) { + +84 +ut32_t + +pt_out +; + +86 i( +pt_out_pow2 +) + +87 +pt_out + + +88 +hash + & ( +p +->p. +n_pts_out + - 1); + +90 +pt_out + + +91 +hash + % +p +->p. +n_pts_out +; + +93 + `e_pe_pt_out_ck_ +( +p +->p.p, + +94 +pt_out +, +pkt +); + +97 + } +} + +99  +le + +__ibu__ +(( +ways_le +))  + +100 + $pkt4_wk +( + +101  +e_mbuf + ** +pkts +, + +102 * +g +, + +103 +ut32_t + +dma_size +, + +104 +ut32_t + +hash_abd +, + +105 +ut32_t + +lb_hash +, + +106 +ut32_t + +pt_out_pow2 +) + +108  +pe_shrough + * +p + = +g +; + +110 +ut64_t + * +dma_d0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +111 +p +-> +ms +. +dma_d_offt +); + +112 +ut64_t + * +dma_d1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +113 +p +-> +ms +. +dma_d_offt +); + +114 +ut64_t + * +dma_d2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +115 +p +-> +ms +. +dma_d_offt +); + +116 +ut64_t + * +dma_d3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +117 +p +-> +ms +. +dma_d_offt +); + +119 +ut64_t + * +dma_c0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +120 +p +-> +ms +. +dma_c_offt +); + +121 +ut64_t + * +dma_c1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +122 +p +-> +ms +. +dma_c_offt +); + +123 +ut64_t + * +dma_c2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +124 +p +-> +ms +. +dma_c_offt +); + +125 +ut64_t + * +dma_c3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +126 +p +-> +ms +. +dma_c_offt +); + +128 +ut64_t + * +dma_mask + = (ut64_* +p +-> +ms +. +dma_c_mask +; + +130 +ut32_t + * +dma_hash0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[0], + +131 +p +-> +ms +. +dma_hash_offt +); + +132 +ut32_t + * +dma_hash1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[1], + +133 +p +-> +ms +. +dma_hash_offt +); + +134 +ut32_t + * +dma_hash2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[2], + +135 +p +-> +ms +. +dma_hash_offt +); + +136 +ut32_t + * +dma_hash3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[3], + +137 +p +-> +ms +. +dma_hash_offt +); + +139 +ut32_t + +i +; + +142  +i + = 0; i < ( +dma_size + / 8); i++) { + +143 +dma_d0 +[ +i +] = +dma_c0 +[i] & +dma_mask +[i]; + +144 +dma_d1 +[ +i +] = +dma_c1 +[i] & +dma_mask +[i]; + +145 +dma_d2 +[ +i +] = +dma_c2 +[i] & +dma_mask +[i]; + +146 +dma_d3 +[ +i +] = +dma_c3 +[i] & +dma_mask +[i]; + +150 i( +hash_abd +) { + +151 +ut32_t + +hash0 + = +p +-> + `f_hash +( +dma_d0 +, +dma_size +, 0); + +152 +ut32_t + +hash1 + = +p +-> + `f_hash +( +dma_d1 +, +dma_size +, 0); + +153 +ut32_t + +hash2 + = +p +-> + `f_hash +( +dma_d2 +, +dma_size +, 0); + +154 +ut32_t + +hash3 + = +p +-> + `f_hash +( +dma_d3 +, +dma_size +, 0); + +156 * +dma_hash0 + = +hash0 +; + +157 * +dma_hash1 + = +hash1 +; + +158 * +dma_hash2 + = +hash2 +; + +159 * +dma_hash3 + = +hash3 +; + +161 i( +lb_hash +) { + +162 +ut32_t + +pt_out0 +, +pt_out1 +, +pt_out2 +, +pt_out3 +; + +164 i( +pt_out_pow2 +) { + +165 +pt_out0 + + +166 +hash0 + & ( +p +->p. +n_pts_out + - 1); + +167 +pt_out1 + + +168 +hash1 + & ( +p +->p. +n_pts_out + - 1); + +169 +pt_out2 + + +170 +hash2 + & ( +p +->p. +n_pts_out + - 1); + +171 +pt_out3 + + +172 +hash3 + & ( +p +->p. +n_pts_out + - 1); + +174 +pt_out0 + + +175 +hash0 + % +p +->p. +n_pts_out +; + +176 +pt_out1 + + +177 +hash1 + % +p +->p. +n_pts_out +; + +178 +pt_out2 + + +179 +hash2 + % +p +->p. +n_pts_out +; + +180 +pt_out3 + + +181 +hash3 + % +p +->p. +n_pts_out +; + +183 + `e_pe_pt_out_ck_ +( +p +->p.p, + +184 +pt_out0 +, +pkts +[0]); + +185 + `e_pe_pt_out_ck_ +( +p +->p.p, + +186 +pt_out1 +, +pkts +[1]); + +187 + `e_pe_pt_out_ck_ +( +p +->p.p, + +188 +pt_out2 +, +pkts +[2]); + +189 + `e_pe_pt_out_ck_ +( +p +->p.p, + +190 +pt_out3 +, +pkts +[3]); + +193 + } +} + +195  + #PKT_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +196  +le + \ + +197 +pkt_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +198 ## +_lb +## +lb_hash +## +_pw +## + `pt_pow2 +( \ + +199  +e_mbuf + * +pkt +, \ + +200 * +g +) \ + +202 + `pkt_wk +( +pkt +, +g +, +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +); \ + +203 } + + ) + +205  + #PKT4_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +206  +le + \ + +207 +pkt4_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +208 ## +_lb +## +lb_hash +## +_pw +## + `pt_pow2 +( \ + +209  +e_mbuf + ** +pkts +, \ + +210 * +g +) \ + +212 + `pkt4_wk +( +pkts +, +g +, +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +); \ + +213 } + + ) + +215  + #pt__ah +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +216 + `PKT_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +217 + `PKT4_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +218 + `PIPELINE_PORT_IN_AH +( +pt__ah_size +## +dma_size +## +_hash + \ + +219 ## +hash_abd +## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +, \ + +220 +pkt_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +221 ## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +, \ + +222 +pkt4_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +223 ## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +) + + ) + +226  + #pt__ah_lb +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +227 + `PKT_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +228 + `PKT4_WORK +( +dma_size +, +hash_abd +, +lb_hash +, +pt_pow2 +) \ + +229 + `PIPELINE_PORT_IN_AH_HIJACK_ALL +( \ + +230 +pt__ah_size +## +dma_size +## +_hash +## +hash_abd + \ + +231 ## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +, \ + +232 +pkt_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +233 ## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +, \ + +234 +pkt4_wk_size +## +dma_size +## +_hash +## +hash_abd + \ + +235 ## +_lb +## +lb_hash +## +_pw +## +pt_pow2 +) + + ) + +239 + $pt__ah +(8, 0, 0, 0) + +240 + $pt__ah +(8, 1, 0, 0) + +241 + $pt__ah_lb +(8, 1, 1, 0) + +242 + $pt__ah_lb +(8, 1, 1, 1) + +244 + $pt__ah +(16, 0, 0, 0) + +245 + $pt__ah +(16, 1, 0, 0) + +246 + $pt__ah_lb +(16, 1, 1, 0) + +247 + $pt__ah_lb +(16, 1, 1, 1) + +249 + $pt__ah +(24, 0, 0, 0) + +250 + $pt__ah +(24, 1, 0, 0) + +251 + $pt__ah_lb +(24, 1, 1, 0) + +252 + $pt__ah_lb +(24, 1, 1, 1) + +254 + $pt__ah +(32, 0, 0, 0) + +255 + $pt__ah +(32, 1, 0, 0) + +256 + $pt__ah_lb +(32, 1, 1, 0) + +257 + $pt__ah_lb +(32, 1, 1, 1) + +259 + $pt__ah +(40, 0, 0, 0) + +260 + $pt__ah +(40, 1, 0, 0) + +261 + $pt__ah_lb +(40, 1, 1, 0) + +262 + $pt__ah_lb +(40, 1, 1, 1) + +264 + $pt__ah +(48, 0, 0, 0) + +265 + $pt__ah +(48, 1, 0, 0) + +266 + $pt__ah_lb +(48, 1, 1, 0) + +267 + $pt__ah_lb +(48, 1, 1, 1) + +269 + $pt__ah +(56, 0, 0, 0) + +270 + $pt__ah +(56, 1, 0, 0) + +271 + $pt__ah_lb +(56, 1, 1, 0) + +272 + $pt__ah_lb +(56, 1, 1, 1) + +274 + $pt__ah +(64, 0, 0, 0) + +275 + $pt__ah +(64, 1, 0, 0) + +276 + $pt__ah_lb +(64, 1, 1, 0) + +277 + $pt__ah_lb +(64, 1, 1, 1) + +279  +e_pe_pt__ai_hdr + + +280 + $g_pt__ah +( +pe_shrough + * +p +) + +282 i( +p +-> +ms +. +dma_abd + == 0) + +283  +NULL +; + +285 i( +p +-> +ms +. +dma_hash_abd +) { + +286 i( +p +-> +ms +. +lb_hash_abd +) { + +287 i( + `e_is_pow_of_2 +( +p +->p. +n_pts_out +)) + +288  +p +-> +ms +. +dma_size +) { + +290 8:  +pt__ah_size8_hash1_lb1_pw1 +; + +291 16:  +pt__ah_size16_hash1_lb1_pw1 +; + +292 24:  +pt__ah_size24_hash1_lb1_pw1 +; + +293 32:  +pt__ah_size32_hash1_lb1_pw1 +; + +294 40:  +pt__ah_size40_hash1_lb1_pw1 +; + +295 48:  +pt__ah_size48_hash1_lb1_pw1 +; + +296 56:  +pt__ah_size56_hash1_lb1_pw1 +; + +297 64:  +pt__ah_size64_hash1_lb1_pw1 +; + +298 :  +NULL +; + +301  +p +-> +ms +. +dma_size +) { + +303 8:  +pt__ah_size8_hash1_lb1_pw0 +; + +304 16:  +pt__ah_size16_hash1_lb1_pw0 +; + +305 24:  +pt__ah_size24_hash1_lb1_pw0 +; + +306 32:  +pt__ah_size32_hash1_lb1_pw0 +; + +307 40:  +pt__ah_size40_hash1_lb1_pw0 +; + +308 48:  +pt__ah_size48_hash1_lb1_pw0 +; + +309 56:  +pt__ah_size56_hash1_lb1_pw0 +; + +310 64:  +pt__ah_size64_hash1_lb1_pw0 +; + +311 :  +NULL +; + +314  +p +-> +ms +. +dma_size +) { + +316 8:  +pt__ah_size8_hash1_lb0_pw0 +; + +317 16:  +pt__ah_size16_hash1_lb0_pw0 +; + +318 24:  +pt__ah_size24_hash1_lb0_pw0 +; + +319 32:  +pt__ah_size32_hash1_lb0_pw0 +; + +320 40:  +pt__ah_size40_hash1_lb0_pw0 +; + +321 48:  +pt__ah_size48_hash1_lb0_pw0 +; + +322 56:  +pt__ah_size56_hash1_lb0_pw0 +; + +323 64:  +pt__ah_size64_hash1_lb0_pw0 +; + +324 :  +NULL +; + +327  +p +-> +ms +. +dma_size +) { + +329 8:  +pt__ah_size8_hash0_lb0_pw0 +; + +330 16:  +pt__ah_size16_hash0_lb0_pw0 +; + +331 24:  +pt__ah_size24_hash0_lb0_pw0 +; + +332 32:  +pt__ah_size32_hash0_lb0_pw0 +; + +333 40:  +pt__ah_size40_hash0_lb0_pw0 +; + +334 48:  +pt__ah_size48_hash0_lb0_pw0 +; + +335 56:  +pt__ah_size56_hash0_lb0_pw0 +; + +336 64:  +pt__ah_size64_hash0_lb0_pw0 +; + +337 :  +NULL +; + +339 + } +} + +342 + $pe_shrough_r_gs +( +pe_shrough_ms + * +p +, + +343  +pe_ms + * +ms +) + +345 +ut32_t + +dma_d_offt_e + = 0; + +346 +ut32_t + +dma_c_offt_e + = 0; + +347 +ut32_t + +dma_c_mask_e + = 0; + +348 +ut32_t + +dma_size_e + = 0; + +349 +ut32_t + +dma_hash_offt_e + = 0; + +350 +ut32_t + +lb_e + = 0; + +351 +ut32_t + +i +; + +352  +dma_mask_r +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + * 2]; + +355 +p +-> +dma_abd + = 0; + +356 +p +-> +dma_hash_abd + = 0; + +357 +p +-> +lb_hash_abd + = 0; + +358 + `memt +( +p +-> +dma_c_mask +, 0xFF, (p->dma_src_mask)); + +360  +i + = 0; i < +ms +-> +n_gs +; i++) { + +361 * +g_me + = +ms +-> +gs_me +[ +i +]; + +362 * +g_vue + = +ms +-> +gs_vue +[ +i +]; + +365 i( + `rcmp +( +g_me +, "dma_dst_offset") == 0) { + +366  +us +; + +368 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +369 +dma_d_offt_e + =0, +ms +-> +me +, + +370 +g_me +); + +371 +dma_d_offt_e + = 1; + +373 +us + = + `rr_ad_ut32 +(& +p +-> +dma_d_offt +, + +374 +g_vue +); + +375 + `PIPELINE_PARSE_ERR_INV_VAL +(( +us + !- +EINVAL +), + +376 +ms +-> +me +, +g_me +, +g_vue +); + +377 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +us + !- +ERANGE +), + +378 +ms +-> +me +, +g_me +, +g_vue +); + +380 +p +-> +dma_abd + = 1; + +386 i( + `rcmp +( +g_me +, "dma_src_offset") == 0) { + +387  +us +; + +389 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +390 +dma_c_offt_e + =0, +ms +-> +me +, + +391 +g_me +); + +392 +dma_c_offt_e + = 1; + +394 +us + = + `rr_ad_ut32 +(& +p +-> +dma_c_offt +, + +395 +g_vue +); + +396 + `PIPELINE_PARSE_ERR_INV_VAL +(( +us + !- +EINVAL +), + +397 +ms +-> +me +, +g_me +, +g_vue +); + +398 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +us + !- +ERANGE +), + +399 +ms +-> +me +, +g_me +, +g_vue +); + +401 +p +-> +dma_abd + = 1; + +407 i( + `rcmp +( +g_me +, "dma_size") == 0) { + +408  +us +; + +410 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +411 +dma_size_e + =0, +ms +-> +me +, + +412 +g_me +); + +413 +dma_size_e + = 1; + +415 +us + = + `rr_ad_ut32 +(& +p +-> +dma_size +, + +416 +g_vue +); + +417 + `PIPELINE_PARSE_ERR_INV_VAL +((( +us + !- +EINVAL +) && + +418 ( +p +-> +dma_size + != 0) && + +419 (( +p +-> +dma_size + % 8) == 0)), + +420 +ms +-> +me +, +g_me +, +g_vue +); + +421 + `PIPELINE_PARSE_ERR_OUT_RNG +((( +us + !- +ERANGE +) && + +422 ( +p +-> +dma_size + <= + +423 +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX +)), + +424 +ms +-> +me +, +g_me +, +g_vue +); + +426 +p +-> +dma_abd + = 1; + +432 i( + `rcmp +( +g_me +, "dma_src_mask") == 0) { + +433  +mask_r_n + = + ` +( +g_vue +); + +435 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +436 +dma_c_mask_e + == 0, + +437 +ms +-> +me +, +g_me +); + +438 +dma_c_mask_e + = 1; + +440 + `PIPELINE_ARG_CHECK +(( +mask_r_n + < + +441 ( +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + * 2)), + +443 "\"%s\"olg", +ms +-> +me +, + +444 +g_me +); + +446 + `tf +( +dma_mask_r +, +mask_r_n + + 1, + +447 "%s", +g_vue +); + +449 +p +-> +dma_abd + = 1; + +455 i( + `rcmp +( +g_me +, "dma_hash_offset") == 0) { + +456  +us +; + +458 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +459 +dma_hash_offt_e + == 0, + +460 +ms +-> +me +, +g_me +); + +461 +dma_hash_offt_e + = 1; + +463 +us + = + `rr_ad_ut32 +(& +p +-> +dma_hash_offt +, + +464 +g_vue +); + +465 + `PIPELINE_PARSE_ERR_INV_VAL +(( +us + !- +EINVAL +), + +466 +ms +-> +me +, +g_me +, +g_vue +); + +467 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +us + !- +ERANGE +), + +468 +ms +-> +me +, +g_me +, +g_vue +); + +470 +p +-> +dma_hash_abd + = 1; + +471 +p +-> +dma_abd + = 1; + +477 i( + `rcmp +( +g_me +, "lb") == 0) { + +478 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +479 +lb_e + == 0, + +480 +ms +-> +me +, +g_me +); + +481 +lb_e + = 1; + +483 i(( + `rcmp +( +g_vue +, "hash") == 0) || + +484 ( + `rcmp +( +g_vue +, "HASH") == 0)) + +485 +p +-> +lb_hash_abd + = 1; + +487 + `PIPELINE_PARSE_ERR_INV_VAL +(0, + +488 +ms +-> +me +, + +489 +g_me +, + +490 +g_vue +); + +496 + `PIPELINE_PARSE_ERR_INV_ENT +(0, +ms +-> +me +, +g_me +); + +500 + `PIPELINE_ARG_CHECK +(( +dma_d_offt_e + = +p +-> +dma_abd +), + +502 "\"dma_d_offt\"", +ms +-> +me +); + +503 + `PIPELINE_ARG_CHECK +(( +dma_c_offt_e + = +p +-> +dma_abd +), + +505 "\"dma_c_offt\"", +ms +-> +me +); + +506 + `PIPELINE_ARG_CHECK +(( +dma_size_e + = +p +-> +dma_abd +), + +508 "\"dma_size\"", +ms +-> +me +); + +509 + `PIPELINE_ARG_CHECK +(( +dma_hash_offt_e + = +p +-> +dma_abd +), + +511 "\"dma_hash_offt\"", +ms +-> +me +); + +512 + `PIPELINE_ARG_CHECK +(( +p +-> +lb_hash_abd + +dma_hash_abd +), + +514 "\"dma_hash_offt\"", +ms +-> +me +); + +516 i( +dma_c_mask_e +) { + +517 +ut32_t + +dma_size + = +p +->dma_size; + +518  +us +; + +520 + `PIPELINE_ARG_CHECK +(( + ` +( +dma_mask_r +) == + +521 ( +dma_size + * 2)), "Parserror in section " + +523 "digs", +ms +-> +me +, ( +dma_size + * 2)); + +525 +us + = + `r_hex_rg +( +dma_mask_r +, +p +-> +dma_c_mask +, + +526 & +p +-> +dma_size +); + +528 + `PIPELINE_PARSE_ERR_INV_VAL +((( +us + == 0) && + +529 ( +dma_size + = +p +->dma_size)), +ms +-> +me +, + +530 "dma_c_mask", +dma_mask_r +); + +534 + } +} + +537  +e_b_hash__hash + + +538 + $g_hash_funi +( +pe_shrough + * +p +) + +540  +p +-> +ms +. +dma_size +) { + +542 8:  +hash_deu_key8 +; + +543 16:  +hash_deu_key16 +; + +544 24:  +hash_deu_key24 +; + +545 32:  +hash_deu_key32 +; + +546 40:  +hash_deu_key40 +; + +547 48:  +hash_deu_key48 +; + +548 56:  +hash_deu_key56 +; + +549 64:  +hash_deu_key64 +; + +550 :  +NULL +; + +552 + } +} + +555 + $pe_shrough_ +( +pe_ms + * +ms +, + +556 +__e_unud + * +g +) + +558  +pe + * +p +; + +559  +pe_shrough + * +p_ +; + +560 +ut32_t + +size +, +i +; + +563 i(( +ms + = +NULL +) || + +564 ( +ms +-> +n_pts_ + == 0) || + +565 ( +ms +-> +n_pts_out + == 0) || + +566 ( +ms +-> +n_pts_ + +n_pts_out +) || + +567 ( +ms +-> +n_pts_ + %ams-> +n_pts_out +)) + +568  +NULL +; + +571 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_shrough +)); + +572 +p + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +573 +p_ + = ( +pe_shrough + * +p +; + +574 i( +p + = +NULL +) + +575  +NULL +; + +577 + `ry +( +p +-> +me +, +ms +->name); + +578 +p +-> +log_v + = +ms +->log_level; + +580 + `PLOG +( +p +, +HIGH +, "Pass-through"); + +583 i( + `pe_shrough_r_gs +(& +p_ +-> +ms +,arams)) + +584  +NULL +; + +585 +p_ +-> +f_hash + = + `g_hash_funi +(p_pt); + +589  +e_pe_ms + +pe_ms + = { + +590 . +me + = "PASS-THROUGH", + +591 . +sock_id + = +ms +->socket_id, + +592 . +offt_pt_id + = 0, + +595 +p +-> + `e_pe_ +(& +pe_ms +); + +596 i( +p +->= +NULL +) { + +597 + `e_ +( +p +); + +598  +NULL +; + +602 +p +-> +n_pts_ + = +ms +->n_ports_in; + +603 +p +-> +n_pts_out + = +ms +->n_ports_out; + +604 +p +-> +n_bs + =-> +n_pts_ +; + +607  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +608  +e_pe_pt__ms + +pt_ms + = { + +609 . +s + = + `pe_pt__ms_g_s +( + +610 & +ms +-> +pt_ +[ +i +]), + +611 . +g_ + = + `pe_pt__ms_cvt +( + +612 & +ms +-> +pt_ +[ +i +]), + +613 . +f_ai + = + `g_pt__ah +( +p_ +), + +614 . +g_ah + = +p_ +, + +615 . +bur_size + = +ms +-> +pt_ +[ +i +].burst_size, + +618  +us + = + `e_pe_pt__ +( +p +->p, + +619 & +pt_ms +, + +620 & +p +-> +pt__id +[ +i +]); + +622 i( +us +) { + +623 + `e_pe_ +( +p +->p); + +624 + `e_ +( +p +); + +625  +NULL +; + +630  +i + = 0; i < +p +-> +n_pts_out +; i++) { + +631  +e_pe_pt_out_ms + +pt_ms + = { + +632 . +s + = + `pe_pt_out_ms_g_s +( + +633 & +ms +-> +pt_out +[ +i +]), + +634 . +g_ + = + `pe_pt_out_ms_cvt +( + +635 & +ms +-> +pt_out +[ +i +]), + +636 . +f_ai + = +NULL +, + +637 . +g_ah + = +NULL +, + +640  +us + = + `e_pe_pt_out_ +( +p +->p, + +641 & +pt_ms +, + +642 & +p +-> +pt_out_id +[ +i +]); + +644 i( +us +) { + +645 + `e_pe_ +( +p +->p); + +646 + `e_ +( +p +); + +647  +NULL +; + +652  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +653  +e_pe_b_ms + +b_ms + = { + +654 . +s + = & +e_b_ub_s +, + +655 . +g_ + = +NULL +, + +656 . +f_ai_h + = +NULL +, + +657 . +f_ai_miss + = +NULL +, + +658 . +g_ah + = +NULL +, + +659 . +ai_da_size + = 0, + +662  +us + = + `e_pe_b_ +( +p +->p, + +663 & +b_ms +, + +664 & +p +-> +b_id +[ +i +]); + +666 i( +us +) { + +667 + `e_pe_ +( +p +->p); + +668 + `e_ +( +p +); + +669  +NULL +; + +674  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +675  +us + = + `e_pe_pt__c_to_b +( +p +->p, + +676 +p +-> +pt__id +[ +i +], + +677 +p +-> +b_id +[ +i +]); + +679 i( +us +) { + +680 + `e_pe_ +( +p +->p); + +681 + `e_ +( +p +); + +682  +NULL +; + +687  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +688  +e_pe_b_y + +deu_y + = { + +689 . +ai + = +RTE_PIPELINE_ACTION_PORT +, + +690 {. +pt_id + = +p +-> +pt_out_id +[ + +691 +i + / ( +p +-> +n_pts_ + /-> +n_pts_out +)]}, + +694  +e_pe_b_y + * +deu_y_r +; + +696  +us + = + `e_pe_b_deu_y_add +( +p +->p, + +697 +p +-> +b_id +[ +i +], + +698 & +deu_y +, + +699 & +deu_y_r +); + +701 i( +us +) { + +702 + `e_pe_ +( +p +->p); + +703 + `e_ +( +p +); + +704  +NULL +; + +709  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +710  +us + = + `e_pe_pt__ab +( +p +->p, + +711 +p +-> +pt__id +[ +i +]); + +713 i( +us +) { + +714 + `e_pe_ +( +p +->p); + +715 + `e_ +( +p +); + +716  +NULL +; + +721 i( + `e_pe_check +( +p +->p) < 0) { + +722 + `e_pe_ +( +p +->p); + +723 + `e_ +( +p +); + +724  +NULL +; + +728 +p +-> +n_msgq + = +ms +->n_msgq; + +729  +i + = 0; i < +p +-> +n_msgq +; i++) + +730 +p +-> +msgq_ +[ +i +] = +ms +->msgq_in[i]; + +731  +i + = 0; i < +p +-> +n_msgq +; i++) + +732 +p +-> +msgq_out +[ +i +] = +ms +->msgq_out[i]; + +735 + `memy +( +p +-> +hdrs +, handlers, (p->handlers)); + +737  +p +; + +738 + } +} + +741 + $pe_shrough_ +(* +pe +) + +743  +pe + * +p + = (pipeline *)ipeline; + +746 i( +p + = +NULL +) + +750 + `e_pe_ +( +p +->p); + +751 + `e_ +( +p +); + +753 + } +} + +756 + $pe_shrough_tim +(* +pe +) + +758  +pe + * +p + = (pipeline *)ipeline; + +760 + `pe_msg_q_hd +( +p +); + +761 + `e_pe_ush +( +p +->p); + +764 + } +} + +767 + $pe_shrough_ack +(* +pe +, +ut32_t + +pt_ +, ut32_* +pt_out +) + +769  +pe + * +p + = (pipeline *)ipeline; + +772 i(( +p + = +NULL +) || + +773 ( +pt_ + > +p +-> +n_pts_ +) || + +774 ( +pt_out + = +NULL +)) + +777 * +pt_out + = +pt_ + / +p +-> +n_pts_ +; + +779 + } +} + +781  +pe_be_s + + gpe_shrough_be_s + = { + +782 . +f_ + = +pe_shrough_ +, + +783 . + gf_ + = +pe_shrough_ +, + +784 . + gf_run + = +NULL +, + +785 . + gf_tim + = +pe_shrough_tim +, + +786 . + gf_ack + = +pe_shrough_ack +, + + @VIL/pipeline_passthrough/pipeline_passthrough_be.h + +17 #ide +__INCLUDE_PIPELINE_PASSTHROUGH_BE_H__ + + +18  + #__INCLUDE_PIPELINE_PASSTHROUGH_BE_H__ + + + ) + +20  + ~"pe_comm_be.h +" + +22  + #PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + 64 + + ) + +24  + spe_shrough_ms + { + +25 +ut32_t + + mdma_abd +; + +26 +ut32_t + + mdma_d_offt +; + +27 +ut32_t + + mdma_c_offt +; + +28 +ut8_t + + mdma_c_mask +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX +]; + +29 +ut32_t + + mdma_size +; + +31 +ut32_t + + mdma_hash_abd +; + +32 +ut32_t + + mdma_hash_offt +; + +33 +ut32_t + + mlb_hash_abd +; + +37 +pe_shrough_r_gs +( +pe_shrough_ms + * +p +, + +38  +pe_ms + * +ms +); + +40  +pe_be_s + +pe_shrough_be_s +; + + @VIL/pipeline_txrx/pipeline_txrx.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"p.h +" + +24  + ~"pe_comm_.h +" + +25  + ~"pe_txrx.h +" + +26  + ~"vnf_comm.h +" + +28  + ~"pe_picmp_be.h +" + +31 + $p_pe_txrx_y_dbg +( +p_ms + * +p +, + +32 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +34  +pe_txrx_y_dbg_msg_q + * +q +; + +35  +pe_txrx_y_dbg_msg_r + * +r +; + +38 i( +p + = +NULL +) + +42 +q + = + `p_msg_loc +( +p +); + +43 i( +q + = +NULL +) + +46 +q +-> +ty + = +PIPELINE_MSG_REQ_CUSTOM +; + +47 +q +-> +subty + = +PIPELINE_TXRX_MSG_REQ_ENTRY_DBG +; + +48 +q +-> +da +[0] = +msg +[0]; + +49 +q +-> +da +[1] = +msg +[1]; + +51 +r + = + `p_msg_nd_cv +( +p +, +pe_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +52 i( +r + = +NULL +) + +56 i( +r +-> +us +) { + +57 + `p_msg_ +( +p +, +r +); + +58 + `tf +("E܄->u%d\n", +r +-> +us +); + +63 + `p_msg_ +( +p +, +r +); + +66 + } +} + +73  + scmd_y_dbg_su + { + +74 +cmdle_fixed_rg_t + + mp_rg +; + +75 +ut32_t + + mp +; + +76 +cmdle_fixed_rg_t + + my_rg +; + +77 +cmdle_fixed_rg_t + + mdbg_rg +; + +78 +ut8_t + + mcmd +; + +79 +ut8_t + + md1 +; + +83 + $cmd_y_dbg_rd +(* +rd_su +, + +84 +__e_unud +  +cmdle + * + +, * +da +) + +86  +cmd_y_dbg_su + * +ms + = +rd_su +; + +87  +p_ms + * +p + = +da +; + +88 +ut8_t + +msg +[2]; + +89  +us +; + +91 +msg +[0] = +ms +-> +cmd +; + +92 +msg +[1] = +ms +-> +d1 +; + +93 +us + = + `p_pe_txrx_y_dbg +( +p +, +ms +-> +p +, +msg +); + +95 i( +us + != 0) { + +96 + `tf +("Dbg Command failed\n"); + +99 + } +} + +101  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_p_rg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +p_rg +, "p"); + +104  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +p +, +UINT32 +); + +107  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_y_rg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, + +109 +y_rg +, "txrx"); + +111  +cmdle_r_tok_rg_t + + glb_cmd_y_dbg_dbg_rg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_su +, +dbg_rg +, + +115  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +cmd +, +UINT8 +); + +118  +cmdle_r_tok_num_t + + glb_cmd_y_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_su +, +d1 +, +UINT8 +); + +121  +cmdle_r__t + + glb_cmd_y_dbg + = { + +122 . +f + = +cmd_y_dbg_rd +, + +123 . + gda + = +NULL +, + +124 . + ghp_r + = "TXRX dbg cmd", + +125 . + gtoks + = { + +126 (*)& +lb_cmd_y_dbg_p_rg +, + +127 (*)& +lb_cmd_y_dbg_p +, + +128 (*)& +lb_cmd_y_dbg_y_rg +, + +129 (*)& +lb_cmd_y_dbg_dbg_rg +, + +130 (*)& +lb_cmd_y_dbg_cmd +, + +131 (*)& +lb_cmd_y_dbg_d1 +, + +132 +NULL +, + +136  +cmdle_r_x_t + + gpe_cmds +[] = { + +137 ( +cmdle_r__t + *& +lb_cmd_y_dbg +, + +138 +NULL +, + +141  +pe__s + + gpe_txrx__s + = { + +142 . +f_ + = +NULL +, + +143 . + gf_ + = +NULL +, + +144 . + gcmds + = +pe_cmds +, + +147  +pe_ty + + gpe_txrx + = { + +148 . +me + = "TXRX", + +149 . + gbe_s + = & +pe_txrx_be_s +, + +150 . + g_s + = & +pe_txrx__s +, + + @VIL/pipeline_txrx/pipeline_txrx.h + +17 #ide +__INCLUDE_PIPELINE_TXRX_H__ + + +18  + #__INCLUDE_PIPELINE_TXRX_H__ + + + ) + +20  + ~"pe.h +" + +21  + ~"pe_txrx_be.h +" + +26  +pe_ty + +pe_txrx +; + + @VIL/pipeline_txrx/pipeline_txrx_be.c + +17  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +26  + ~"pe_txrx_be.h +" + +27  + ~"pe_ais_comm.h +" + +28  + ~"rr.h +" + +29  + ~"hash_func.h +" + +30  + ~"pe_picmp_be.h +" + +31  + ~"vnf_comm.h +" + +32  + ~"p.h +" + +33 #ide +VNF_ACL + + +34  + ~"lib_icmpv6.h +" + +37 +ut8_t + + gTXRX_DEBUG +; + +38  + gpkt_bur_t +; + +40  + spe_txrx + { + +41  +pe + + mp +; + +42 +pe_msg_q_hdr + + +43 + mcuom_hdrs +[ +PIPELINE_TXRX_MSG_REQS +]; + +44 +ut64_t + + mivedPktCou +; + +45 +ut64_t + + mdrݳdPktCou +; + +46 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +47 +ut8_t + + mout_id +[ +PIPELINE_MAX_PORT_IN +]; + +48 +ut8_t + + mpe_num +; + +49 +ut8_t + + mtxrx_ty +; + +50 } + g__e_che_igd +; + +53 + mTYPE_TXTX +, + +54 + mTYPE_RXRX +, + +56 * +pe_txrx_msg_q_cuom_hdr +( +pe + * +p +, + +57 * +msg +); + +59  +pe_msg_q_hdr + + ghdrs +[] = { + +60 [ +PIPELINE_MSG_REQ_PING +] = + +61 +pe_msg_q_pg_hdr +, + +62 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +63 +pe_msg_q_s_pt__hdr +, + +64 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +65 +pe_msg_q_s_pt_out_hdr +, + +66 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +67 +pe_msg_q_s_b_hdr +, + +68 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +69 +pe_msg_q_pt__ab_hdr +, + +70 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +71 +pe_msg_q_pt__dib_hdr +, + +72 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +73 +pe_txrx_msg_q_cuom_hdr +, + +77 * +pe_txrx_msg_q_y_dbg_hdr +( +pe + * +p +, + +78 * +msg +); + +79 * + $pe_txrx_msg_q_y_dbg_hdr +( + +80 +__e_unud +  +pe + * +p +, + +81 +__e_unud + * +msg +) + +84  +NULL +; + +85 + } +} + +87  +__e_unud + +pe_msg_q_hdr + + gcuom_hdrs +[] = { + +88 [ +PIPELINE_TXRX_MSG_REQ_ENTRY_DBG +] = + +89 +pe_txrx_msg_q_y_dbg_hdr +, + +103 * + $pe_txrx_msg_q_cuom_hdr +( +pe + * +p +, * +msg +) + +105  +pe_txrx + * +p_txrx + = (pe_txrx *) +p +; + +106  +pe_cuom_msg_q + * +q + = +msg +; + +107 +pe_msg_q_hdr + +f_hd +; + +109 +f_hd + = ( +q +-> +subty + < +PIPELINE_TXRX_MSG_REQS +) ? + +110 +p_txrx +-> +cuom_hdrs +[ +q +-> +subty +] : + +111 +pe_msg_q_vid_hdr +; + +113 i( +f_hd + = +NULL +) + +114 +f_hd + = +pe_msg_q_vid_hdr +; + +116  + `f_hd +( +p +, +q +); + +117 + } +} + +123 +pe_txrx_r_gs +( +pe_txrx + * +p +, + +124  +pe_ms + * +ms +); + +126 + $pe_txrx_r_gs +( +pe_txrx + * +p +, + +127  +pe_ms + * +ms +) + +129 +ut32_t + +i +; + +130 +ut8_t + +txrx_ty_e + = 0; + +132 i( +TXRX_DEBUG + > 2) + +133 + `tf +("TXRXipeline_txrx_parse_argsarams->n_args: %d\n", + +134 +ms +-> +n_gs +); + +136  +i + = 0; i < +ms +-> +n_gs +; i++) { + +137 * +g_me + = +ms +-> +gs_me +[ +i +]; + +138 * +g_vue + = +ms +-> +gs_vue +[ +i +]; + +140 i( +TXRX_DEBUG + > 2) + +141 + `tf +("TXRXrgs[%d]: %%d, %s\n", +i +, +g_me +, + +142 + `oi +( +g_vue +),rg_value); + +145 i( + `rcmp +( +g_me +, "pipeline_txrx_type") == 0) { + +146 i( +txrx_ty_e +) + +148 +txrx_ty_e + = 1; + +151 i( + `rcmp +( +g_vue +, "TXTX") == 0) { + +152 +p +-> +txrx_ty + = +TYPE_TXTX +; + +153 + `tf +("pipeline_txrx_type is TXTX\n"); + +155 i( + `rcmp +( +g_vue +, "RXRX") == 0) { + +156 +p +-> +txrx_ty + = +TYPE_RXRX +; + +157 + `tf +("pipeline_txrx_type is RXRX\n"); + +163 i(! +txrx_ty_e +) { + +164 + `tf +("TXRXypeot specified\n"); + +170 + } +} + +172 +ut32_t + + gtxrx_pkt_t_cou +; + +173  +le +  + +174 + $pkt_wk_txrx +( +e_mbuf + * +pkt +, +ut32_t + +pkt_num +, * +g +) + +177  +pe_txrx__pt_h_g + * + + = +g +; + +178  +pe_txrx + * +p_txrx + = (pe_txrx *) + +-> +p +; + +179 +ut8_t + +siced_node_mui_addr +[16] = + +182 +p_txrx +-> +ivedPktCou +++; + +184 i( +p_txrx +-> +txrx_ty + = +TYPE_TXTX +) + +187 +ut8_t + +_pt_id + = +pkt +-> +pt +; + +188 +ut32_t + +h_o_offt + = +MBUF_HDR_ROOM + + 12; + +190 +ut32_t + +pkt_mask + = 1 << +pkt_num +; + +192 +ut32_t + +out_pt + = +p_txrx +-> +p +. +n_pts_out + - 1; + +194 +ut16_t + * +h_o + = + +195 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +h_o_offt +); + +197 +ut8_t + * +oc +; + +198 +ut32_t + +_offt + = + +199 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +201 #ifde +IPV6 + + +202  +v6_hdr + * +v6_h +; + +203 +v6_h + = + `e_pktmbuf_mtod_offt + ( +pkt +,  +v6_hdr + *, ( +h_hdr +)); + +204 +ut32_t + +_offt_v6 + = + +205 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IPV6_HDR_PROTOCOL_OFST +; + +207 i( + `e_be_to_u_16 +(* +h_o += +ETHER_TYPE_IPv6 +) + +208 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt_v6 +); + +210 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt +); + +212 +oc + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +_offt +); + +216 i(( +TXRX_DEBUG + > 2&& ( +txrx_pkt_t_cou + < 10)) { + +217 + `t_pkt1 +( +pkt +); + +218 +txrx_pkt_t_cou +++; + +219 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +221 + `e_be_to_u_16 +(* +h_o +), * +oc +, +ETH_TYPE_ARP +, + +222 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +225  +p_lk_ms + * +lk +; + +227 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +230 +ut32_t + +d_addr_offt + = + +231 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +232 +ut32_t + * +d_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d_addr_offt +); + +234 i( +TXRX_DEBUG + > 2) + +235 i( + `e_be_to_u_16 +(* +h_o += +ETH_TYPE_IPV4 +) + +236 + `tf + ("%s:kIp: %x, d_addr: %x\n", +__FUNCTION__ +, +lk +-> + +, * +d_addr +); + +239  + `e_be_to_u_16 +(* +h_o +)) { + +240  +ETH_TYPE_ARP +: + +241 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +242 +out_pt +, +pkt +); + +243 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask +); + +246  +ETH_TYPE_IPV4 +: + +247 i((* +oc + = +IP_PROTOCOL_ICMP +) && + +248 ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr +))) { + +249 i( + `is_phy_pt_iv +( +pkt +-> +pt +)) { + +250 + `e_pe_pt_out_ck_ +( + +251 +p_txrx +-> +p +.p, + +252 +out_pt +, +pkt +); + +253 + `e_pe_ah_ck_dr +( + +254 +p_txrx +-> +p +.p, + +255 +pkt_mask +); + +261 #ifde +IPV6 + + +262  +ETH_TYPE_IPV6 +: + +263 i(* +oc + = +ICMPV6_PROTOCOL_ID +) { + +264 #ide +VNF_ACL + + +265 i(! + `memcmp +( +v6_h +-> +d_addr +, +lk +-> +v6 +, 16) + +266 || ! + `memcmp +( +v6_h +-> +d_addr +, +siced_node_mui_addr +, 13)) { + +268 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +269 +out_pt +, +pkt +); + +270 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask +); + +271 #ide +VNF_ACL + + +273 + `tf +("Droppinghe IPv6kt\n"); + +274 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask +); + +282 + `tf +("Droppinghekt\n"); + +283 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask +); + +288 + } +} + +290  +le +  + +291 + $pkt4_wk_txrx +( +e_mbuf + ** +pkt +, +ut32_t + +pkt_num +, * +g +) + +293  +pe_txrx__pt_h_g + * + + = +g +; + +294  +pe_txrx + * +p_txrx + = (pe_txrx *) + +-> +p +; + +295 +ut8_t + +siced_node_mui_addr +[16] = + +299 i( +p_txrx +-> +txrx_ty + = +TYPE_TXTX +) + +302 +ut16_t + +_pt_id + = (* +pkt +)-> +pt +; + +303 +ut32_t + +h_o_offt + = +MBUF_HDR_ROOM + + 12; + +306 +ut32_t + +pkt_mask0 + = 1 << +pkt_num +; + +307 +ut32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +308 +ut32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +309 +ut32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +312 +ut32_t + +out_pt + = +p_txrx +-> +p +. +n_pts_out + - 1; + +314 +ut16_t + * +h_o0 + = + +315 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +h_o_offt +); + +316 +ut16_t + * +h_o1 + = + +317 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +h_o_offt +); + +318 +ut16_t + * +h_o2 + = + +319 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +h_o_offt +); + +320 +ut16_t + * +h_o3 + = + +321 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +h_o_offt +); + +323 +ut8_t + * +oc0 +, * +oc1 +, * +oc2 +, * +oc3 +; + +324 +ut32_t + +_offt + = + +325 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +327 #ifde +IPV6 + + +328  +v6_hdr + * +v6_h0 +, * +v6_h1 +, * +v6_h2 +, * +v6_h3 +; + +329 +v6_h0 + = + `e_pktmbuf_mtod_offt + ( +pkt +[0],  +v6_hdr + *, ( +h_hdr +)); + +330 +ut32_t + +_offt_v6 + = + +331 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IPV6_HDR_PROTOCOL_OFST +; + +334 i( + `e_be_to_u_16 +(* +h_o0 += +ETHER_TYPE_IPv6 +) + +335 +oc0 + = + +336 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt_v6 +); + +338 +oc0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt +); + +341 +v6_h1 + = + `e_pktmbuf_mtod_offt + ( +pkt +[1],  +v6_hdr + *, ( +h_hdr +)); + +342 i( + `e_be_to_u_16 +(* +h_o1 += +ETHER_TYPE_IPv6 +) + +343 +oc1 + = + +344 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt_v6 +); + +346 +oc1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt +); + +349 +v6_h2 + = + `e_pktmbuf_mtod_offt + ( +pkt +[2],  +v6_hdr + *, ( +h_hdr +)); + +350 i( + `e_be_to_u_16 +(* +h_o2 += +ETHER_TYPE_IPv6 +) + +351 +oc2 + = + +352 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt_v6 +); + +354 +oc2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt +); + +357 +v6_h3 + = + `e_pktmbuf_mtod_offt + ( +pkt +[3],  +v6_hdr + *, ( +h_hdr +)); + +358 i( + `e_be_to_u_16 +(* +h_o3 += +ETHER_TYPE_IPv6 +) + +359 +oc3 + = + +360 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt_v6 +); + +362 +oc3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt +); + +364 +oc0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +_offt +); + +365 +oc1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +_offt +); + +366 +oc2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +_offt +); + +367 +oc3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +_offt +); + +370 i(( +TXRX_DEBUG + > 2&& ( +txrx_pkt_t_cou + < 10)) { + +371 + `t_pkt1 +( +pkt +[0]); + +372 +txrx_pkt_t_cou +++; + +373 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +375 + `e_be_to_u_16 +(* +h_o0 +), * +oc0 +, +ETH_TYPE_ARP +, + +376 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +379  +p_lk_ms + * +lk +; + +381 +lk + = & +myA +-> +lk_ms +[ +_pt_id +]; + +384 +ut32_t + +d_addr_offt0 + = + +385 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +386 +ut32_t + * +d_addr0 + = + +387 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d_addr_offt0 +); + +389 i( +TXRX_DEBUG + > 2) + +390 i( + `e_be_to_u_16 +(* +h_o0 += +ETH_TYPE_IPV4 +) + +391 + `tf + ("%s:kIp: %x, d_addr0: %x\n", +__FUNCTION__ +, +lk +-> + +, * +d_addr0 +); + +394  + `e_be_to_u_16 +(* +h_o0 +)) { + +395  +ETH_TYPE_ARP +: + +396 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +397 +out_pt +, +pkt +[0]); + +398 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +401  +ETH_TYPE_IPV4 +: + +402 i((* +oc0 + = +IP_PROTOCOL_ICMP +) && + +403 ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr0 +))) { + +404 i( + `is_phy_pt_iv +( +pkt +[0]-> +pt +)) { + +405 + `e_pe_pt_out_ck_ +( + +406 +p_txrx +-> +p +.p, +out_pt +, +pkt +[0]); + +407 + `e_pe_ah_ck_dr +( + +408 +p_txrx +-> +p +.p, +pkt_mask0 +); + +414 #ifde +IPV6 + + +415  +ETH_TYPE_IPV6 +: + +416 i(* +oc0 + = +ICMPV6_PROTOCOL_ID +) { + +417 #ide +VNF_ACL + + +418 i(! + `memcmp +( +v6_h0 +-> +d_addr +, +lk +-> +v6 +, 16) + +419 || ! + `memcmp +( +v6_h0 +-> +d_addr +, +siced_node_mui_addr +, 13)) { + +421 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +422 +out_pt +, +pkt +[0]); + +423 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +425 #ide +VNF_ACL + + +427 + `tf +("Droppinghe IPv6kt\n"); + +428 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +436 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +441 i(( +TXRX_DEBUG + > 2&& ( +txrx_pkt_t_cou + < 10)) { + +442 + `t_pkt1 +( +pkt +[1]); + +443 +txrx_pkt_t_cou +++; + +444 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +446 + `e_be_to_u_16 +(* +h_o1 +), * +oc1 +, +ETH_TYPE_ARP +, + +447 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +451 +ut32_t + +d_addr_offt1 + = + +452 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +453 +ut32_t + * +d_addr1 + = + +454 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d_addr_offt1 +); + +456 i( +TXRX_DEBUG + > 2) + +457 i( + `e_be_to_u_16 +(* +h_o1 += +ETH_TYPE_IPV4 +) + +458 + `tf + ("%s:kIp: %x, d_addr1: %x\n", +__FUNCTION__ +, +lk +-> + +, * +d_addr1 +); + +460  + `e_be_to_u_16 +(* +h_o1 +)) { + +461  +ETH_TYPE_ARP +: + +462 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +463 +out_pt +, +pkt +[1]); + +464 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +467  +ETH_TYPE_IPV4 +: + +468 i((* +oc1 + = +IP_PROTOCOL_ICMP +) && + +469 ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr1 +))) { + +470 i( + `is_phy_pt_iv +( +pkt +[1]-> +pt +)) { + +471 + `e_pe_pt_out_ck_ +( + +472 +p_txrx +-> +p +.p, + +473 +out_pt +, +pkt +[1]); + +474 + `e_pe_ah_ck_dr +( + +475 +p_txrx +-> +p +.p, + +476 +pkt_mask1 +); + +482 #ifde +IPV6 + + +483  +ETH_TYPE_IPV6 +: + +484 i(* +oc1 + = +ICMPV6_PROTOCOL_ID +) { + +485 #ide +VNF_ACL + + +486 i(! + `memcmp +( +v6_h1 +-> +d_addr +, +lk +-> +v6 +, 16) + +487 || ! + `memcmp +( +v6_h1 +-> +d_addr +, +siced_node_mui_addr +, 13)) { + +489 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +490 +out_pt +, +pkt +[1]); + +491 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +492 #ide +VNF_ACL + + +494 + `tf +("Droppinghe IPv6kt\n"); + +495 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +503 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +507 i(( +TXRX_DEBUG + > 2&& ( +txrx_pkt_t_cou + < 10)) { + +508 + `t_pkt1 +( +pkt +[2]); + +509 +txrx_pkt_t_cou +++; + +510 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +512 + `e_be_to_u_16 +(* +h_o2 +), * +oc2 +, +ETH_TYPE_ARP +, + +513 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +517 +ut32_t + +d_addr_offt2 + = + +518 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +519 +ut32_t + * +d_addr2 + = + +520 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d_addr_offt2 +); + +522 i( +TXRX_DEBUG + > 2) + +523 i( + `e_be_to_u_16 +(* +h_o2 += +ETH_TYPE_IPV4 +) + +524 + `tf + ("%s:kIp: %x, d_addr2: %x\n", +__FUNCTION__ +, +lk +-> + +, * +d_addr2 +); + +526  + `e_be_to_u_16 +(* +h_o2 +)) { + +527  +ETH_TYPE_ARP +: + +528 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +529 +out_pt +, +pkt +[2]); + +530 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +533  +ETH_TYPE_IPV4 +: + +534 i((* +oc2 + = +IP_PROTOCOL_ICMP +) && + +535 ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr2 +))) { + +536 i( + `is_phy_pt_iv +( +pkt +[2]-> +pt +)) { + +537 + `e_pe_pt_out_ck_ +( + +538 +p_txrx +-> +p +.p, + +539 +out_pt +, +pkt +[2]); + +540 + `e_pe_ah_ck_dr +( + +541 +p_txrx +-> +p +.p, + +542 +pkt_mask2 +); + +548 #ifde +IPV6 + + +549  +ETH_TYPE_IPV6 +: + +550 i(* +oc2 + = +ICMPV6_PROTOCOL_ID +) { + +551 #ide +VNF_ACL + + +552 i(! + `memcmp +( +v6_h2 +-> +d_addr +, +lk +-> +v6 +, 16) + +553 || ! + `memcmp +( +v6_h2 +-> +d_addr +, +siced_node_mui_addr +, 13)) { + +555 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +556 +out_pt +, +pkt +[2]); + +557 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +558 #ide +VNF_ACL + + +560 + `tf +("Droppinghe IPv6kt\n"); + +561 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +569 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +573 i(( +TXRX_DEBUG + > 2&& ( +txrx_pkt_t_cou + < 10)) { + +574 + `t_pkt1 +( +pkt +[3]); + +575 +txrx_pkt_t_cou +++; + +576 + `tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +578 + `e_be_to_u_16 +(* +h_o3 +), * +oc3 +, +ETH_TYPE_ARP +, + +579 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +583 +ut32_t + +d_addr_offt3 + = + +584 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +585 +ut32_t + * +d_addr3 + = + +586 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d_addr_offt3 +); + +588 i( +TXRX_DEBUG + > 2) + +589 i( + `e_be_to_u_16 +(* +h_o3 += +ETH_TYPE_IPV4 +) + +590 + `tf + ("%s:kIp: %x, d_addr3: %x\n", +__FUNCTION__ +, +lk +-> + +, * +d_addr3 +); + +592  + `e_be_to_u_16 +(* +h_o3 +)) { + +593  +ETH_TYPE_ARP +: + +594 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +595 +out_pt +, +pkt +[3]); + +596 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +599  +ETH_TYPE_IPV4 +: + +600 i((* +oc3 + = +IP_PROTOCOL_ICMP +) && + +601 ( +lk +-> + + = + `e_be_to_u_32 +(* +d_addr3 +))) { + +602 i( + `is_phy_pt_iv +( +pkt +[3]-> +pt +)) { + +603 + `e_pe_pt_out_ck_ +( + +604 +p_txrx +-> +p +.p, + +605 +out_pt +, +pkt +[3]); + +606 + `e_pe_ah_ck_dr +( + +607 +p_txrx +-> +p +.p, + +608 +pkt_mask3 +); + +614 #ifde +IPV6 + + +615  +ETH_TYPE_IPV6 +: + +616 i(* +oc3 + = +ICMPV6_PROTOCOL_ID +) { + +617 #ide +VNF_ACL + + +618 i(! + `memcmp +( +v6_h3 +-> +d_addr +, +lk +-> +v6 +, 16) + +619 || ! + `memcmp +( +v6_h3 +-> +d_addr +, +siced_node_mui_addr +, 13)) { + +621 + `e_pe_pt_out_ck_ +( +p_txrx +-> +p +.p, + +622 +out_pt +, +pkt +[3]); + +623 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +624 #ide +VNF_ACL + + +626 + `tf +("Droppinghe IPv6kt\n"); + +627 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +635 + `e_pe_ah_ck_dr +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +639 +p_txrx +-> +ivedPktCou + += 4; + +641 + } +} + +643 +PIPELINE_TXRX_KEY_PORT_IN_AH +( +pt__ah_txrx +, +pkt_wk_txrx +, +pkt4_wk_txrx +); + +645 * + $pe_txrx_ +( +pe_ms + * +ms +, + +646 +__e_unud + * +g +) + +648  +pe + * +p +; + +649  +pe_txrx + * +p_ +; + +650 +ut32_t + +size +, +i +, +_pts_g_size +; + +652 + `tf +("Startipeline_txrx_init\n"); + +655 i(( +ms + = +NULL +) || + +656 ( +ms +-> +n_pts_ + == 0) || + +657 ( +ms +-> +n_pts_out + == 0)) + +658  +NULL +; + +661 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_txrx +)); + +662 +p + = + `e_zmloc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +663 +p_ + = ( +pe_txrx + *) +p +; + +664 i( +p + = +NULL +) + +665  +NULL +; + +667 + `PLOG +( +p +, +HIGH +, "TXRX"); + +668 + `ry +( +p +-> +me +, +ms +->name); + +669 +p +-> +log_v + = +ms +->log_level; + +671 +p_ +-> +ivedPktCou + = 0; + +672 +p_ +-> +drݳdPktCou + = 0; + +673  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) + +674 +p_ +-> +lks_m +[ +i +] = 0xff; + +676 +p_ +-> +pe_num + = 0; + +677 + `tf +("txrx initialization of variables done\n"); + +680 i( + `pe_txrx_r_gs +( +p_ +, +ms +)) + +681  +NULL +; + +685  +e_pe_ms + +pe_ms + = { + +686 . +me + = "TXRX", + +687 . +sock_id + = +ms +->socket_id, + +688 . +offt_pt_id + = 0, + +691 +p +-> + `e_pe_ +(& +pe_ms +); + +692 i( +p +->= +NULL +) { + +693 + `e_ +( +p +); + +694  +NULL +; + +698 +p +-> +n_pts_ + = +ms +->n_ports_in; + +699 +p +-> +n_pts_out + = +ms +->n_ports_out; + +700 +p +-> +n_bs + =-> +n_pts_ +; + +703 +_pts_g_size + = + +704 + `RTE_CACHE_LINE_ROUNDUP +(( + +705 ( +pe_txrx__pt_h_g +)) * + +706 ( +ms +-> +n_pts_ +)); + +707  +pe_txrx__pt_h_g + * + + = + +708 ( +pe_txrx__pt_h_g + *) + `e_zmloc +( +NULL +, + +709 +_pts_g_size +, + +710 +RTE_CACHE_LINE_SIZE +); + +711 i( + + = +NULL +) + +712  +NULL +; + +714  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +716 ( + +[ +i +]). +p + = +p_ +; + +717 ( + +[ +i +]). +_pt_id + = i; + +718  +e_pe_pt__ms + +pt_ms + = { + +719 . +s + = + +720 + `pe_pt__ms_g_s +(& +ms +-> + +721 +pt_ +[ +i +]), + +722 . +g_ + = + +723 + `pe_pt__ms_cvt +(& +ms +-> + +724 +pt_ +[ +i +]), + +725 . +f_ai + = +NULL +, + +726 . +g_ah + = &( + +[ +i +]), + +727 . +bur_size + = +ms +-> +pt_ +[ +i +].burst_size, + +730 +pt_ms +. +f_ai + = +pt__ah_txrx +; + +732  +us + = + `e_pe_pt__ +( +p +->p, + +733 & +pt_ms +, + +734 & +p +-> +pt__id +[ +i +]); + +736 i( +us +) { + +737 + `e_pe_ +( +p +->p); + +738 + `e_ +( +p +); + +739  +NULL +; + +744  +i + = 0; i < +p +-> +n_pts_out +; i++) { + +745  +e_pe_pt_out_ms + +pt_ms + = { + +746 . +s + = + +747 + `pe_pt_out_ms_g_s +(& +ms +-> + +748 +pt_out +[ +i +]), + +749 . +g_ + = + +750 + `pe_pt_out_ms_cvt +(& +ms +-> + +751 +pt_out +[ +i +]), + +752 . +f_ai + = +NULL +, + +753 . +g_ah + = +NULL +, + +756  +us + = + `e_pe_pt_out_ +( +p +->p, + +757 & +pt_ms +, + +758 & +p +-> +pt_out_id +[ +i +]); + +760 i( +us +) { + +761 + `e_pe_ +( +p +->p); + +762 + `e_ +( +p +); + +763  +NULL +; + +767  +pe_num + = 0; + +768  +us + = + `ssnf +( +ms +-> +me +, "PIPELINE%d", & +pe_num +); + +769 i( +us + < 0) { + +770 + `tf +("Unableoeadipelineumber\n"); + +771  +NULL +; + +773 +p_ +-> +pe_num + = ( +ut8_t +)ipeline_num; + +775 + `gi_pe_Qs +( +p_ +-> +pe_num +, +p +); + +776 + `t_lk_m +( +p_ +-> +pe_num +, +p +,_-> +lks_m +); + +777 + `t_out_id +( +p_ +-> +pe_num +, +p +,_-> +out_id +); + +780  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +781  +e_pe_b_ms + +b_ms + = { + +782 . +s + = & +e_b_ub_s +, + +783 . +g_ + = +NULL +, + +784 . +f_ai_h + = +NULL +, + +785 . +f_ai_miss + = +NULL +, + +786 . +g_ah + = +NULL +, + +787 . +ai_da_size + = 0, + +790  +us + = + `e_pe_b_ +( +p +->p, + +791 & +b_ms +, + +792 & +p +-> +b_id +[ +i +]); + +794 i( +us +) { + +795 + `e_pe_ +( +p +->p); + +796 + `e_ +( +p +); + +797  +NULL +; + +802  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +803  +us + = + `e_pe_pt__c_to_b +( +p +->p, + +804 +p +-> + +805 +pt__id + + +806 [ +i +], + +807 +p +-> + +808 +b_id +[ +i +]); + +810 i( +us +) { + +811 + `e_pe_ +( +p +->p); + +812 + `e_ +( +p +); + +813  +NULL +; + +818  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +819  +e_pe_b_y + +deu_y + = { + +820 . +ai + = +RTE_PIPELINE_ACTION_PORT +, + +821 . +pt_id + = +p +-> +pt_out_id +[ +i +], + +824  +e_pe_b_y + * +deu_y_r +; + +826  +us + = + `e_pe_b_deu_y_add +( + +827 +p +->p, + +828 +p +-> + +829 +b_id +[ +i +], + +830 & +deu_y +, + +831 & +deu_y_r +); + +833 i( +us +) { + +834 + `e_pe_ +( +p +->p); + +835 + `e_ +( +p +); + +836  +NULL +; + +841  +i + = 0; i < +p +-> +n_pts_ +; i++) { + +842  +us + = + `e_pe_pt__ab +( +p +->p, + +843 +p +-> +pt__id +[ +i +]); + +845 i( +us +) { + +846 + `e_pe_ +( +p +->p); + +847 + `e_ +( +p +); + +848  +NULL +; + +853 i( + `e_pe_check +( +p +->p) < 0) { + +854 + `e_pe_ +( +p +->p); + +855 + `e_ +( +p +); + +856  +NULL +; + +860 +p +-> +n_msgq + = +ms +->n_msgq; + +861  +i + = 0; i < +p +-> +n_msgq +; i++) + +862 +p +-> +msgq_ +[ +i +] = +ms +->msgq_in[i]; + +863  +i + = 0; i < +p +-> +n_msgq +; i++) + +864 +p +-> +msgq_out +[ +i +] = +ms +->msgq_out[i]; + +867 + `memy +( +p +-> +hdrs +, handlers, (p->handlers)); + +869  +p +; + +870 + } +} + +872  + $pe_txrx_ +(* +pe +) + +874  +pe + * +p + = (pipeline *)pipeline; + +877 i( +p + = +NULL +) + +881 + `e_pe_ +( +p +->p); + +882 + `e_ +( +p +); + +884 + } +} + +886  + $pe_txrx_tim +(* +pe +) + +888  +pe + * +p + = (pipeline *)pipeline; + +890 + `pe_msg_q_hd +( +p +); + +891 + `e_pe_ush +( +p +->p); + +894 + } +} + +897 + $pe_txrx_ack +(* +pe +, +ut32_t + +pt_ +, ut32_* +pt_out +) + +899  +pe + * +p + = (pipeline *)pipeline; + +902 i(( +p + = +NULL +|| ( +pt_ + >p-> +n_pts_ +|| ( +pt_out + == NULL)) + +905 * +pt_out + = +pt_ + / +p +-> +n_pts_ +; + +907 + } +} + +909  +pe_be_s + + gpe_txrx_be_s + = { + +910 . +f_ + = +pe_txrx_ +, + +911 . + gf_ + = +pe_txrx_ +, + +912 . + gf_run + = +NULL +, + +913 . + gf_tim + = +pe_txrx_tim +, + +914 . + gf_ack + = +pe_txrx_ack +, + + @VIL/pipeline_txrx/pipeline_txrx_be.h + +17 #ide +__INCLUDE_PIPELINE_TXRX_BE_H__ + + +18  + #__INCLUDE_PIPELINE_TXRX_BE_H__ + + + ) + +20  + ~"pe_comm_be.h +" + +21  + #PIPELINE_TXRX_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +23 + `f_ah +( \ + +24 +__e_unud +  +e_pe + * +e_p +, \ + +25  +e_mbuf + ** +pkts +, \ + +26 +ut32_t + +n_pkts +, \ + +27 * +g +) \ + +29 +ut32_t + +i +, +j +; \ + +31  +j + = 0; j < +n_pkts +; j++) \ + +32 + `e_etch0 +( +pkts +[ +j +]); \ + +34 +pkt_bur_t + = 0; \ + +35  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +36 + `f_pkt4_wk +(& +pkts +[ +i +], i, +g +); \ + +38  ; +i + < +n_pkts +; i++) \ + +39 + `f_pkt_wk +( +pkts +[ +i +], i, +g +); \ + +43 } + + ) + +45  +pe_be_s + +pe_txrx_be_s +; + +49 + epe_txrx_msg_q_ty + { + +50 + mPIPELINE_TXRX_MSG_REQ_ENTRY_DBG +, + +51 + mPIPELINE_TXRX_MSG_REQS + + +56  + spe_txrx_y_dbg_msg_q + { + +57 +pe_msg_q_ty + + mty +; + +58 +pe_txrx_msg_q_ty + + msubty +; + +61 +ut8_t + + mda +[5]; + +67  + spe_txrx__pt_h_g + { + +68  +pe_txrx + * + mp +; + +69 +ut8_t + + m_pt_id +; + +72  + spe_txrx_y_dbg_msg_r + { + +73  + mus +; + + @vnf_common/app.h + +17 #ide +__INCLUDE_APP_H__ + + +18  + #__INCLUDE_APP_H__ + + + ) + +20  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +30  + ~ + +32  + ~"u_ce_m.h +" + +33  + ~"pe.h +" + +35  + #APP_PARAM_NAME_SIZE + +PIPELINE_NAME_SIZE + + + ) + +36  + #APP_LINK_PCI_BDF_SIZE + 32 + + ) + +37  +p_lk_ms + * + gfd_p_lk +; + +38  + sp_mempo_ms + { + +39 * + mme +; + +40 +ut32_t + + mrd +; + +41 +ut32_t + + mbufr_size +; + +42 +ut32_t + + mpo_size +; + +43 +ut32_t + + mche_size +; + +44 +ut32_t + + mu_sock_id +; + +47  + sp_lk_ms + { + +48 * + mme +; + +49 +ut32_t + + mrd +; + +50 +ut32_t + + mpmd_id +; + +51 +ut32_t + + mp_q +; + +52 +ut32_t + + mt_syn_q +; + +53 +ut32_t + + m_lol_q +; + +54 +ut32_t + + mt_lol_q +; + +55 +ut32_t + + mudp_lol_q +; + +56 +ut32_t + + msp_lol_q +; + +57 +ut32_t + + me +; + +58 +ut32_t + + m +; + +59 +ut8_t + + mv6 +[16]; + +60 +ut32_t + + mdth +; + +61 +ut32_t + + mdth_v6 +; + +62 +ut64_t + + mmac_addr +; + +63  + mpci_bdf +[ +APP_LINK_PCI_BDF_SIZE +]; + +65  +e_h_cf + + mcf +; + +66 +ut8_t + + momisc +; + +69  + sp_pktq_hwq__ms + { + +70 * + mme +; + +71 +ut32_t + + mrd +; + +72 +ut32_t + + mmempo_id +; + +73 +ut32_t + + msize +; + +74 +ut32_t + + mbur +; + +76  +e_h_rxcf + + mcf +; + +79  + sp_pktq_hwq_out_ms + { + +80 * + mme +; + +81 +ut32_t + + mrd +; + +82 +ut32_t + + msize +; + +83 +ut32_t + + mbur +; + +84 +ut32_t + + mdrss +; + +85 +ut64_t + + mn_s +; + +86  +e_h_txcf + + mcf +; + +89  + sp_pktq_swq_ms + { + +90 * + mme +; + +91 +ut32_t + + mrd +; + +92 +ut32_t + + msize +; + +93 +ut32_t + + mbur_ad +; + +94 +ut32_t + + mbur_wre +; + +95 +ut32_t + + mdrss +; + +96 +ut64_t + + mn_s +; + +97 +ut32_t + + mu_sock_id +; + +98 +ut32_t + + mv4_ag +; + +99 +ut32_t + + mv6_ag +; + +100 +ut32_t + + mv4_s +; + +101 +ut32_t + + mv6_s +; + +102 +ut32_t + + mmtu +; + +103 +ut32_t + + mmada_size +; + +104 +ut32_t + + mmempo_de_id +; + +105 +ut32_t + + mmempo_de_id +; + +108 #ide +APP_FILE_NAME_SIZE + + +109  + #APP_FILE_NAME_SIZE + 256 + + ) + +112 #ide +APP_MAX_SCHED_SUBPORTS + + +113  + #APP_MAX_SCHED_SUBPORTS + 8 + + ) + +116 #ide +APP_MAX_SCHED_PIPES + + +117  + #APP_MAX_SCHED_PIPES + 4096 + + ) + +120  + sp_pktq_tm_ms + { + +121 * + mme +; + +122 +ut32_t + + mrd +; + +123 cڡ * + mfe_me +; + +124  +e_sched_pt_ms + + msched_pt_ms +; + +125  +e_sched_subpt_ms + + +126 + msched_subpt_ms +[ +APP_MAX_SCHED_SUBPORTS +]; + +127  +e_sched_pe_ms + + +128 + msched_pe_ofes +[ +RTE_SCHED_PIPE_PROFILES_PER_PORT +]; + +129  + msched_pe_to_ofe +[ +APP_MAX_SCHED_SUBPORTS + * +APP_MAX_SCHED_PIPES +]; + +130 +ut32_t + + mbur_ad +; + +131 +ut32_t + + mbur_wre +; + +134  + sp_pktq_sour_ms + { + +135 * + mme +; + +136 +ut32_t + + mrd +; + +137 +ut32_t + + mmempo_id +; + +138 +ut32_t + + mbur +; + +139 * + mfe_me +; + +140 +ut32_t + + mn_bys_r_pkt +; + +143  + sp_pktq_sk_ms + { + +144 * + mme +; + +145 +ut8_t + + mrd +; + +146 * + mfe_me +; + +147 +ut32_t + + mn_pkts_to_dump +; + +150  + sp_msgq_ms + { + +151 * + mme +; + +152 +ut32_t + + mrd +; + +153 +ut32_t + + msize +; + +154 +ut32_t + + mu_sock_id +; + +157 + ep_pktq__ty + { + +158 + mAPP_PKTQ_IN_HWQ +, + +159 + mAPP_PKTQ_IN_SWQ +, + +160 + mAPP_PKTQ_IN_TM +, + +161 + mAPP_PKTQ_IN_SOURCE +, + +164  + sp_pktq__ms + { + +165 +p_pktq__ty + + mty +; + +166 +ut32_t + + mid +; + +169 + ep_pktq_out_ty + { + +170 + mAPP_PKTQ_OUT_HWQ +, + +171 + mAPP_PKTQ_OUT_SWQ +, + +172 + mAPP_PKTQ_OUT_TM +, + +173 + mAPP_PKTQ_OUT_SINK +, + +176  + sp_pktq_out_ms + { + +177 +p_pktq_out_ty + + mty +; + +178 +ut32_t + + mid +; + +181 #ide +APP_PIPELINE_TYPE_SIZE + + +182  + #APP_PIPELINE_TYPE_SIZE + 64 + + ) + +185  + #APP_MAX_PIPELINE_PKTQ_IN + +PIPELINE_MAX_PORT_IN + + + ) + +186  + #APP_MAX_PIPELINE_PKTQ_OUT + +PIPELINE_MAX_PORT_OUT + + + ) + +187  + #APP_MAX_PIPELINE_MSGQ_IN + +PIPELINE_MAX_MSGQ_IN + + + ) + +188  + #APP_MAX_PIPELINE_MSGQ_OUT + +PIPELINE_MAX_MSGQ_OUT + + + ) + +190  + #APP_MAX_PIPELINE_ARGS + +PIPELINE_MAX_ARGS + + + ) + +192  + sp_pe_ms + { + +193 * + mme +; + +194 +ut8_t + + mrd +; + +196  + mty +[ +APP_PIPELINE_TYPE_SIZE +]; + +198 +ut32_t + + msock_id +; + +199 +ut32_t + + mce_id +; + +200 +ut32_t + + mhyr_th_id +; + +202  +p_pktq__ms + + mpktq_ +[ +APP_MAX_PIPELINE_PKTQ_IN +]; + +203  +p_pktq_out_ms + + mpktq_out +[ +APP_MAX_PIPELINE_PKTQ_OUT +]; + +204 +ut32_t + + mmsgq_ +[ +APP_MAX_PIPELINE_MSGQ_IN +]; + +205 +ut32_t + + mmsgq_out +[ +APP_MAX_PIPELINE_MSGQ_OUT +]; + +207 +ut32_t + + mn_pktq_ +; + +208 +ut32_t + + mn_pktq_out +; + +209 +ut32_t + + mn_msgq_ +; + +210 +ut32_t + + mn_msgq_out +; + +212 +ut32_t + + mtim_riod +; + +214 * + mgs_me +[ +APP_MAX_PIPELINE_ARGS +]; + +215 * + mgs_vue +[ +APP_MAX_PIPELINE_ARGS +]; + +216 +ut32_t + + mn_gs +; + +219  + sp_pe_da + { + +220 * + mbe +; + +221 * + m +; + +222  +pe_ty + * + my +; + +223 +ut64_t + + mtim_riod +; + +224 +ut32_t + + mabd +; + +227  + sp_thad_pe_da + { + +228 +ut32_t + + mpe_id +; + +229 * + mbe +; + +230 +pe_be__run + + mf_run +; + +231 +pe_be__tim + + mf_tim +; + +232 +ut64_t + + mtim_riod +; + +233 +ut64_t + + mddle +; + +236 #ide +APP_MAX_THREAD_PIPELINES + + +237  + #APP_MAX_THREAD_PIPELINES + 32 + + ) + +240 #ide +APP_THREAD_TIMER_PERIOD + + +241  + #APP_THREAD_TIMER_PERIOD + 1 + + ) + +244  + sp_thad_da + { + +245  +p_thad_pe_da + + mgur +[ +APP_MAX_THREAD_PIPELINES +]; + +246  +p_thad_pe_da + + mcuom +[ +APP_MAX_THREAD_PIPELINES +]; + +248 +ut32_t + + mn_gur +; + +249 +ut32_t + + mn_cuom +; + +251 +ut64_t + + mtim_riod +; + +252 +ut64_t + + mthad_q_ddle +; + +254 +ut64_t + + mddle +; + +256  +e_rg + * + mmsgq_ +; + +257  +e_rg + * + mmsgq_out +; + +259 +ut64_t + + mhdroom_time +; + +260 +ut64_t + + mhdroom_cyes +; + +261  + mhdroom_tio +; + +264 #ide +APP_MAX_LINKS + + +265  + #APP_MAX_LINKS + 32 + + ) + +268  + sp_l_ms + { + +270 * + mcem +; + +273 +ut32_t + + mma_lce_e +; + +274 +ut32_t + + mma_lce +; + +277 +ut32_t + + mchls_e +; + +278 +ut32_t + + mchls +; + +281 +ut32_t + + mmemy_e +; + +282 +ut32_t + + mmemy +; + +285 +ut32_t + + mnks_e +; + +286 +ut32_t + + mnks +; + +289 * + mpci_bckli +[ +APP_MAX_LINKS +]; + +292 * + mpci_whi +[ +APP_MAX_LINKS +]; + +295 * + mvdev +[ +APP_MAX_LINKS +]; + +298 +ut32_t + + mvmwe_tsc_m_e +; + +299  + mvmwe_tsc_m +; + +302 * + moc_ty +; + +305 * + msyog +; + +308 +ut32_t + + mlog_v_e +; + +309 +ut32_t + + mlog_v +; + +312 +ut32_t + + mvsi_e +; + +313  + mvsi +; + +316 +ut32_t + + mhp_e +; + +317  + mhp +; + +320 +ut32_t + + mno_huge_e +; + +321  + mno_huge +; + +324 +ut32_t + + mno_pci_e +; + +325  + mno_pci +; + +328 +ut32_t + + mno_ht_e +; + +329  + mno_ht +; + +332 +ut32_t + + mno_shcf_e +; + +333  + mno_shcf +; + +336 * + madd_driv +; + +339 * + msock_mem +; + +342 * + mhuge_d +; + +345 * + mfe_efix +; + +348 * + mba_vddr +; + +351 +ut32_t + + m_uio_dev_e +; + +352  + m_uio_dev +; + +355 * + mvfio_ +; + +358 +ut32_t + + mx_dom0_e +; + +359  + mx_dom0 +; + +362 #ide +APP_APPNAME_SIZE + + +363  + #APP_APPNAME_SIZE + 256 + + ) + +366 #ide +APP_MAX_MEMPOOLS + + +367  + #APP_MAX_MEMPOOLS + 8 + + ) + +370 #ide +APP_LINK_MAX_HWQ_IN + + +371  + #APP_LINK_MAX_HWQ_IN + 64 + + ) + +374 #ide +APP_LINK_MAX_HWQ_OUT + + +375  + #APP_LINK_MAX_HWQ_OUT + 64 + + ) + +378  + #APP_MAX_HWQ_IN + ( +APP_MAX_LINKS + * +APP_LINK_MAX_HWQ_IN +) + + ) + +380  + #APP_MAX_HWQ_OUT + ( +APP_MAX_LINKS + * +APP_LINK_MAX_HWQ_OUT +) + + ) + +382 #ide +APP_MAX_PKTQ_SWQ + + +383  + #APP_MAX_PKTQ_SWQ + 256 + + ) + +386  + #APP_MAX_PKTQ_TM + +APP_MAX_LINKS + + + ) + +388 #ide +APP_MAX_PKTQ_SOURCE + + +389  + #APP_MAX_PKTQ_SOURCE + 32 + + ) + +392 #ide +APP_MAX_PKTQ_SINK + + +393  + #APP_MAX_PKTQ_SINK + 32 + + ) + +396 #ide +APP_MAX_MSGQ + + +397  + #APP_MAX_MSGQ + 128 + + ) + +400 #ide +APP_MAX_PIPELINES + + +401  + #APP_MAX_PIPELINES + 64 + + ) + +404 #ide +APP_EAL_ARGC + + +405  + #APP_EAL_ARGC + 32 + + ) + +408 #ide +APP_MAX_PIPELINE_TYPES + + +409  + #APP_MAX_PIPELINE_TYPES + 64 + + ) + +412 #ide +APP_MAX_THREADS + + +413  + #APP_MAX_THREADS + +RTE_MAX_LCORE + + + ) + +416 #ide +APP_MAX_CMDS + + +417  + #APP_MAX_CMDS + 128 + + ) + +420 #ide +APP_THREAD_HEADROOM_STATS_COLLECT + + +421  + #APP_THREAD_HEADROOM_STATS_COLLECT + 1 + + ) + +424 +ut8_t + + gab_hwlb +; + +425 +ut8_t + + gab_ow_d +; + +427  + #APP_CORE_MASK_SIZE + \ + +428 ( +RTE_MAX_LCORE + / 64 + ((RTE_MAX_LCORE % 64? 1 : 0)) + + ) + +430  + sp_ms + { + +432  + mp_me +[ +APP_APPNAME_SIZE +]; + +433 cڡ * + mcfig_fe +; + +434 cڡ * + mst_fe +; + +435 cڡ * + mrr_fe +; + +436 cڡ * + mouut_fe +; + +437 cڡ * + mroc +; + +438 cڡ * + mroc_gs +; + +439 +ut64_t + + mpt_mask +; + +440 +ut32_t + + mlog_v +; + +442  +p_l_ms + + ml_ms +; + +443  +p_mempo_ms + + mmempo_ms +[ +APP_MAX_MEMPOOLS +]; + +444  +p_lk_ms + + mlk_ms +[ +APP_MAX_LINKS +]; + +445  +p_pktq_hwq__ms + + mhwq__ms +[ +APP_MAX_HWQ_IN +]; + +446  +p_pktq_hwq_out_ms + + mhwq_out_ms +[ +APP_MAX_HWQ_OUT +]; + +447  +p_pktq_swq_ms + + mswq_ms +[ +APP_MAX_PKTQ_SWQ +]; + +448  +p_pktq_tm_ms + + mtm_ms +[ +APP_MAX_PKTQ_TM +]; + +449  +p_pktq_sour_ms + + msour_ms +[ +APP_MAX_PKTQ_SOURCE +]; + +450  +p_pktq_sk_ms + + msk_ms +[ +APP_MAX_PKTQ_SINK +]; + +451  +p_msgq_ms + + mmsgq_ms +[ +APP_MAX_MSGQ +]; + +452  +p_pe_ms + + mpe_ms +[ +APP_MAX_PIPELINES +]; + +454 +ut32_t + + mn_mempos +; + +455 +ut32_t + + mn_lks +; + +456 +ut32_t + + mn_pktq_hwq_ +; + +457 +ut32_t + + mn_pktq_hwq_out +; + +458 +ut32_t + + mn_pktq_swq +; + +459 +ut32_t + + mn_pktq_tm +; + +460 +ut32_t + + mn_pktq_sour +; + +461 +ut32_t + + mn_pktq_sk +; + +462 +ut32_t + + mn_msgq +; + +463 +ut32_t + + mn_pes +; + +465 +ut32_t + + mhd_csum_q +; + +466 +ut32_t + + mn_hwlb_q +; + +468 * + ml_gv +[1 + +APP_EAL_ARGC +]; + +469  +u_ce_m + * + mce_m +; + +470 +ut64_t + + mce_mask +[ +APP_CORE_MASK_SIZE +]; + +471  +e_mempo + * + mmempo +[ +APP_MAX_MEMPOOLS +]; + +472  +e_rg + * + mswq +[ +APP_MAX_PKTQ_SWQ +]; + +473  +e_sched_pt + * + mtm +[ +APP_MAX_PKTQ_TM +]; + +474  +e_rg + * + mmsgq +[ +APP_MAX_MSGQ +]; + +475  +pe_ty + + mpe_ty +[ +APP_MAX_PIPELINE_TYPES +]; + +476  +p_pe_da + + mpe_da +[ +APP_MAX_PIPELINES +]; + +477  +p_thad_da + + mthad_da +[ +APP_MAX_THREADS +]; + +478 +cmdle_r_x_t + + mcmds +[ +APP_MAX_CMDS + + 1]; + +480  + ml_gc +; + +481 +ut32_t + + mn_pe_tys +; + +482 +ut32_t + + mn_cmds +; + +485  + #APP_PARAM_VALID +( +obj +((obj)-> +me + ! +NULL +) + + ) + +487  + #APP_PARAM_COUNT +( +obj_y +, +n_objs +) \ + +489 +size_t + +i +; \ + +491 +n_objs + = 0; \ + +492  +i + = 0; i < + `RTE_DIM +( +obj_y +); i++) \ + +493 i( + `APP_PARAM_VALID +(&(( +obj_y +)[ +i +]))) \ + +494 +n_objs +++; \ + +495 } + + ) + +497  + #APP_PARAM_FIND +( +obj_y +, +key +) \ + +499 +ssize_t + +obj_idx +; \ + +500 cڡ +ssize_t + +obj_cou + = + `RTE_DIM +( +obj_y +); \ + +502  +obj_idx + = 0; obj_idx < +obj_cou +; obj_idx++) { \ + +503 i(! + `APP_PARAM_VALID +(&(( +obj_y +)[ +obj_idx +]))) \ + +506 i( + `rcmp +( +key +, ( +obj_y +)[ +obj_idx +]. +me +) == 0) \ + +509 +obj_idx + < +obj_cou + ? obj_idx : - +ENOENT +; \ + +510 }) + + ) + +512  + #APP_PARAM_FIND_BY_ID +( +obj_y +, +efix +, +id +, +obj +) \ + +514  +me +[ +APP_PARAM_NAME_SIZE +]; \ + +515 +ssize_t + +pos +; \ + +517 + `rtf +( +me +, +efix + "%" +PRIu32 +, +id +); \ + +518 +pos + = + `APP_PARAM_FIND +( +obj_y +, +me +); \ + +519 +obj + = ( +pos + < 0? +NULL + : &(( +obj_y +)[pos]); \ + +520 } 0) + + ) + +522  + #APP_PARAM_GET_ID +( +obj +, +efix +, +id +) \ + +524 + `ssnf +( +obj +-> +me +, +efix + "%" +SCNu32 +, & +id +); \ + +526 + + ) + +527  + #APP_PARAM_ADD +( +obj_y +, +obj_me +) \ + +529 +ssize_t + +obj_idx +; \ + +530 cڡ +ssize_t + +obj_cou + = + `RTE_DIM +( +obj_y +); \ + +532 +obj_idx + = + `APP_PARAM_FIND +( +obj_y +, +obj_me +); \ + +533 i( +obj_idx + < 0) { \ + +534  +obj_idx + = 0; obj_idx < +obj_cou +; obj_idx++) { \ + +535 i(! + `APP_PARAM_VALID +(&(( +obj_y +)[ +obj_idx +]))) \ + +539 i( +obj_idx + < +obj_cou +) { \ + +540 ( +obj_y +)[ +obj_idx +]. +me + = + `rdup +( +obj_me +); \ + +541 i(( +obj_y +)[ +obj_idx +]. +me + = +NULL +) \ + +542 +obj_idx + = - +EINVAL +; \ + +544 +obj_idx + = - +ENOMEM +; \ + +546 +obj_idx +; \ + +547 }) + + ) + +549  + #APP_CHECK +( +exp +, +fmt +, ...) \ + +551 i(!( +exp +)) { \ + +552 + `rtf +( +dr +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +553 + `abt +(); \ + +555 } 0) + + ) + +557 + ep_log_v + { + +558 + mAPP_LOG_LEVEL_HIGH + = 1, + +559 + mAPP_LOG_LEVEL_LOW +, + +560 + mAPP_LOG_LEVELS + + +563  + #APP_LOG +( +p +, +v +, +fmt +, ...) \ + +565 i( +p +-> +log_v + > +APP_LOG_LEVEL_ + ## +v +) \ + +566 + `rtf +( +dout +, "[APP] " +fmt + "\n", ## +__VA_ARGS__ +); \ + +567 } 0) + + ) + +569  +le + +ut32_t + + +570 + $p_lk_g_n_rxq +( +p_ms + * +p +,  +p_lk_ms + * +lk +) + +572 +ut32_t + +n_rxq + = 0, +lk_id +, +i +; + +573 +ut32_t + +n_pktq_hwq_ + = + `RTE_MIN +( +p +->n_pktq_hwq_in, + +574 + `RTE_DIM +( +p +-> +hwq__ms +)); + +576 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +578  +i + = 0; i < +n_pktq_hwq_ +; i++) { + +579  +p_pktq_hwq__ms + * +p + = & +p +-> +hwq__ms +[ +i +]; + +580 +ut32_t + +rxq_lk_id +, +rxq_queue_id +; + +582 + `ssnf +( +p +-> +me +, "RXQ%" +SCNu32 + ".%" SCNu32, + +583 & +rxq_lk_id +, & +rxq_queue_id +); + +584 i( +rxq_lk_id + = +lk_id +) + +585 +n_rxq +++; + +588  +n_rxq +; + +589 + } +} + +591  +le + +ut32_t + + +592 + $p_lk_g_n_txq +( +p_ms + * +p +,  +p_lk_ms + * +lk +) + +594 +ut32_t + +n_txq + = 0, +lk_id +, +i +; + +595 +ut32_t + +n_pktq_hwq_out + = + `RTE_MIN +( +p +->n_pktq_hwq_out, + +596 + `RTE_DIM +( +p +-> +hwq_out_ms +)); + +598 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +600  +i + = 0; i < +n_pktq_hwq_out +; i++) { + +601  +p_pktq_hwq_out_ms + * +p + = & +p +-> +hwq_out_ms +[ +i +]; + +602 +ut32_t + +txq_lk_id +, +txq_queue_id +; + +604 + `ssnf +( +p +-> +me +, "TXQ%" +SCNu32 + ".%" SCNu32, + +605 & +txq_lk_id +, & +txq_queue_id +); + +606 i( +txq_lk_id + = +lk_id +) + +607 +n_txq +++; + +610  +n_txq +; + +611 + } +} + +613  +le + +ut32_t + + +614 + $p_rxq_g_ads +( +p_ms + * +p +,  +p_pktq_hwq__ms + * +rxq +) + +616 +ut32_t + +pos + = +rxq + - +p +-> +hwq__ms +; + +617 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +618 + `RTE_DIM +( +p +-> +pe_ms +)); + +619 +ut32_t + +n_ads + = 0, +i +; + +621  +i + = 0; i < +n_pes +; i++) { + +622  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +623 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +-> +pktq_ +)); + +624 +ut32_t + +j +; + +626  +j + = 0; j < +n_pktq_ +; j++) { + +627  +p_pktq__ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +629 i(( +pktq +-> +ty + = +APP_PKTQ_IN_HWQ +) && + +630 ( +pktq +-> +id + = +pos +)) + +631 +n_ads +++; + +635  +n_ads +; + +636 + } +} + +638  +le + +ut32_t + + +639 + $p_swq_g_ads +( +p_ms + * +p +,  +p_pktq_swq_ms + * +swq +) + +641 +ut32_t + +pos + = +swq + - +p +-> +swq_ms +; + +642 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +643 + `RTE_DIM +( +p +-> +pe_ms +)); + +644 +ut32_t + +n_ads + = 0, +i +; + +646  +i + = 0; i < +n_pes +; i++) { + +647  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +648 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +-> +pktq_ +)); + +649 +ut32_t + +j +; + +651  +j + = 0; j < +n_pktq_ +; j++) { + +652  +p_pktq__ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +654 i(( +pktq +-> +ty + = +APP_PKTQ_IN_SWQ +) && + +655 ( +pktq +-> +id + = +pos +)) + +656 +n_ads +++; + +660  +n_ads +; + +661 + } +} + +663  +le + +ut32_t + + +664 + $p_tm_g_ads +( +p_ms + * +p +,  +p_pktq_tm_ms + * +tm +) + +666 +ut32_t + +pos + = +tm + - +p +-> +tm_ms +; + +667 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +668 + `RTE_DIM +( +p +-> +pe_ms +)); + +669 +ut32_t + +n_ads + = 0, +i +; + +671  +i + = 0; i < +n_pes +; i++) { + +672  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +673 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +-> +pktq_ +)); + +674 +ut32_t + +j +; + +676  +j + = 0; j < +n_pktq_ +; j++) { + +677  +p_pktq__ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +679 i(( +pktq +-> +ty + = +APP_PKTQ_IN_TM +) && + +680 ( +pktq +-> +id + = +pos +)) + +681 +n_ads +++; + +685  +n_ads +; + +686 + } +} + +688  +le + +ut32_t + + +689 + $p_sour_g_ads +( +p_ms + * +p +, + +690  +p_pktq_sour_ms + * +sour +) + +692 +ut32_t + +pos + = +sour + - +p +-> +sour_ms +; + +693 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +694 + `RTE_DIM +( +p +-> +pe_ms +)); + +695 +ut32_t + +n_ads + = 0, +i +; + +697  +i + = 0; i < +n_pes +; i++) { + +698  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +699 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +-> +pktq_ +)); + +700 +ut32_t + +j +; + +702  +j + = 0; j < +n_pktq_ +; j++) { + +703  +p_pktq__ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +705 i(( +pktq +-> +ty + = +APP_PKTQ_IN_SOURCE +) && + +706 ( +pktq +-> +id + = +pos +)) + +707 +n_ads +++; + +711  +n_ads +; + +712 + } +} + +714  +le + +ut32_t + + +715 + $p_msgq_g_ads +( +p_ms + * +p +,  +p_msgq_ms + * +msgq +) + +717 +ut32_t + +pos + = +msgq + - +p +-> +msgq_ms +; + +718 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +719 + `RTE_DIM +( +p +-> +pe_ms +)); + +720 +ut32_t + +n_ads + = 0, +i +; + +722  +i + = 0; i < +n_pes +; i++) { + +723  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +724 +ut32_t + +n_msgq_ + = + `RTE_MIN +( +p +->n_msgq_, + `RTE_DIM +-> +msgq_ +)); + +725 +ut32_t + +j +; + +727  +j + = 0; j < +n_msgq_ +; j++) + +728 i( +p +-> +msgq_ +[ +j +] = +pos +) + +729 +n_ads +++; + +732  +n_ads +; + +733 + } +} + +735  +le + +ut32_t + + +736 + $p_txq_g_wrs +( +p_ms + * +p +,  +p_pktq_hwq_out_ms + * +txq +) + +738 +ut32_t + +pos + = +txq + - +p +-> +hwq_out_ms +; + +739 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +740 + `RTE_DIM +( +p +-> +pe_ms +)); + +741 +ut32_t + +n_wrs + = 0, +i +; + +743  +i + = 0; i < +n_pes +; i++) { + +744  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +745 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +746 + `RTE_DIM +( +p +-> +pktq_out +)); + +747 +ut32_t + +j +; + +749  +j + = 0; j < +n_pktq_out +; j++) { + +750  +p_pktq_out_ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +752 i(( +pktq +-> +ty + = +APP_PKTQ_OUT_HWQ +) && + +753 ( +pktq +-> +id + = +pos +)) + +754 +n_wrs +++; + +758  +n_wrs +; + +759 + } +} + +761  +le + +ut32_t + + +762 + $p_swq_g_wrs +( +p_ms + * +p +,  +p_pktq_swq_ms + * +swq +) + +764 +ut32_t + +pos + = +swq + - +p +-> +swq_ms +; + +765 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +766 + `RTE_DIM +( +p +-> +pe_ms +)); + +767 +ut32_t + +n_wrs + = 0, +i +; + +769  +i + = 0; i < +n_pes +; i++) { + +770  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +771 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +772 + `RTE_DIM +( +p +-> +pktq_out +)); + +773 +ut32_t + +j +; + +775  +j + = 0; j < +n_pktq_out +; j++) { + +776  +p_pktq_out_ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +778 i(( +pktq +-> +ty + = +APP_PKTQ_OUT_SWQ +) && + +779 ( +pktq +-> +id + = +pos +)) + +780 +n_wrs +++; + +784  +n_wrs +; + +785 + } +} + +787  +le + +ut32_t + + +788 + $p_tm_g_wrs +( +p_ms + * +p +,  +p_pktq_tm_ms + * +tm +) + +790 +ut32_t + +pos + = +tm + - +p +-> +tm_ms +; + +791 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +792 + `RTE_DIM +( +p +-> +pe_ms +)); + +793 +ut32_t + +n_wrs + = 0, +i +; + +795  +i + = 0; i < +n_pes +; i++) { + +796  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +797 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +798 + `RTE_DIM +( +p +-> +pktq_out +)); + +799 +ut32_t + +j +; + +801  +j + = 0; j < +n_pktq_out +; j++) { + +802  +p_pktq_out_ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +804 i(( +pktq +-> +ty + = +APP_PKTQ_OUT_TM +) && + +805 ( +pktq +-> +id + = +pos +)) + +806 +n_wrs +++; + +810  +n_wrs +; + +811 + } +} + +813  +le + +ut32_t + + +814 + $p_sk_g_wrs +( +p_ms + * +p +,  +p_pktq_sk_ms + * +sk +) + +816 +ut32_t + +pos + = +sk + - +p +-> +sk_ms +; + +817 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +818 + `RTE_DIM +( +p +-> +pe_ms +)); + +819 +ut32_t + +n_wrs + = 0, +i +; + +821  +i + = 0; i < +n_pes +; i++) { + +822  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +823 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +824 + `RTE_DIM +( +p +-> +pktq_out +)); + +825 +ut32_t + +j +; + +827  +j + = 0; j < +n_pktq_out +; j++) { + +828  +p_pktq_out_ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +830 i(( +pktq +-> +ty + = +APP_PKTQ_OUT_SINK +) && + +831 ( +pktq +-> +id + = +pos +)) + +832 +n_wrs +++; + +836  +n_wrs +; + +837 + } +} + +839  +le + +ut32_t + + +840 + $p_ce_is_abd +( +p_ms + * +p +, +ut32_t + +lce_id +) { + +841 ( +p +-> +ce_mask +[ +lce_id + / 64] & + +842 (1LLU << ( +lce_id + % 64))); + +843 + } +} + +845  +le +  + +846 + $p_ce_ab__ce_mask +( +p_ms + * +p +,  +lce_id +) { + +847 +p +-> +ce_mask +[ +lce_id + / 64] |= 1LLU << (lcore_id % 64); + +849 + } +} + +851  +le +  + +852 + $p_ce_bud_ce_mask_rg +( +p_ms + * +p +,  + +853 * +mask_bufr +) { + +854  +i +; + +856 +mask_bufr +[0] = '\0'; + +857  +i + = () + `RTE_DIM +( +p +-> +ce_mask +); i > 0; i--) { + +859  +bufr +[(64 / 8) * 2 + 1]; + +860 + `memt +( +bufr +, 0, (buffer)); + +861 + `tf +( +bufr +, (bufr), "%016" +PRIx64 +, + +862 +p +-> +ce_mask +[ +i +-1]); + +863 + `rt +( +mask_bufr +, +bufr +); + +865 + } +} + +867  +le + +ut32_t + + +868 + $p_msgq_g_wrs +( +p_ms + * +p +,  +p_msgq_ms + * +msgq +) + +870 +ut32_t + +pos + = +msgq + - +p +-> +msgq_ms +; + +871 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +872 + `RTE_DIM +( +p +-> +pe_ms +)); + +873 +ut32_t + +n_wrs + = 0, +i +; + +875  +i + = 0; i < +n_pes +; i++) { + +876  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +877 +ut32_t + +n_msgq_out + = + `RTE_MIN +( +p +->n_msgq_out, + +878 + `RTE_DIM +( +p +-> +msgq_out +)); + +879 +ut32_t + +j +; + +881  +j + = 0; j < +n_msgq_out +; j++) + +882 i( +p +-> +msgq_out +[ +j +] = +pos +) + +883 +n_wrs +++; + +886  +n_wrs +; + +887 + } +} + +889  +le +  +p_lk_ms + * + +890 + $p_g_lk_f_rxq +( +p_ms + * +p +,  +p_pktq_hwq__ms + * +p +) + +892  +lk_me +[ +APP_PARAM_NAME_SIZE +]; + +893 +ssize_t + +lk_m_idx +; + +894 +ut32_t + +rxq_lk_id +, +rxq_queue_id +; + +896 + `ssnf +( +p +-> +me +, "RXQ%" +SCNu32 + ".%" SCNu32, + +897 & +rxq_lk_id +, & +rxq_queue_id +); + +898 + `rtf +( +lk_me +, "LINK%" +PRIu32 +, +rxq_lk_id +); + +899 +lk_m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_ms +, +lk_me +); + +900 + `APP_CHECK +(( +lk_m_idx + >= 0), + +901 "Cn fd %f %s", +lk_me +, +p +-> +me +); + +903  & +p +-> +lk_ms +[ +lk_m_idx +]; + +904 + } +} + +906  +le +  +p_lk_ms + * + +907 + $p_g_lk_f_txq +( +p_ms + * +p +,  +p_pktq_hwq_out_ms + * +p +) + +909  +lk_me +[ +APP_PARAM_NAME_SIZE +]; + +910 +ssize_t + +lk_m_idx +; + +911 +ut32_t + +txq_lk_id +, +txq_queue_id +; + +913 + `ssnf +( +p +-> +me +, "TXQ%" +SCNu32 + ".%" SCNu32, + +914 & +txq_lk_id +, & +txq_queue_id +); + +915 + `rtf +( +lk_me +, "LINK%" +PRIu32 +, +txq_lk_id +); + +916 +lk_m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_ms +, +lk_me +); + +917 + `APP_CHECK +(( +lk_m_idx + >= 0), + +918 "Cn fd %f %s", +lk_me +, +p +-> +me +); + +920  & +p +-> +lk_ms +[ +lk_m_idx +]; + +921 + } +} + +923  +le +  +p_lk_ms + * + +924 + $p_g_lk_f_tm +( +p_ms + * +p +,  +p_pktq_tm_ms + * +p_tm +) + +926  +lk_me +[ +APP_PARAM_NAME_SIZE +]; + +927 +ut32_t + +lk_id +; + +928 +ssize_t + +lk_m_idx +; + +930 + `ssnf +( +p_tm +-> +me +, "TM%" +PRIu32 +, & +lk_id +); + +931 + `rtf +( +lk_me +, "LINK%" +PRIu32 +, +lk_id +); + +932 +lk_m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_ms +, +lk_me +); + +933 + `APP_CHECK +(( +lk_m_idx + >= 0), + +934 "Cn fd %f %s", +lk_me +, +p_tm +-> +me +); + +936  & +p +-> +lk_ms +[ +lk_m_idx +]; + +937 + } +} + +939  +p_cfig_ +( +p_ms + * +p +); + +941  +p_cfig_gs +( +p_ms + * +p +, + +942  +gc +, ** +gv +); + +944  +p_cfig_roc +( +p_ms + * +p +); + +946  +p_cfig_r +( +p_ms + * +p +, + +947 cڡ * +fe_me +); + +949  +p_cfig_r_tm +( +p_ms + * +p +); + +951  +p_cfig_ve +( +p_ms + * +p +, + +952 cڡ * +fe_me +); + +954  +p_cfig_check +( +p_ms + * +p +); + +956  +p_ +( +p_ms + * +p +); + +958  +p_thad +(* +g +); + +960  +p_pe_ty_gi +( +p_ms + * +p +, + +961  +pe_ty + * +y +); + +963  +pe_ty + * +p_pe_ty_fd +( +p_ms + * +p +, + +964 * +me +); + +966  +p_lk_up_ +( +p_ms + * +p +, + +967  +p_lk_ms + * + +); + +969  +p_lk_down_ +( +p_ms + * +p +, + +970  +p_lk_ms + * + +); + + @vnf_common/config_check.c + +17  + ~ + +19  + ~ + +21  + ~"p.h +" + +23 +ut8_t + + gg_n_hwq_ +; + +25 + $check_mempos +( +p_ms + * +p +) + +27 +ut32_t + +i +; + +29  +i + = 0; i < +p +-> +n_mempos +; i++) { + +30  +p_mempo_ms + * +p + = & +p +-> +mempo_ms +[ +i +]; + +32 + `APP_CHECK +(( +p +-> +po_size + > 0), + +33 "Mempo %sizi0\n", +p +-> +me +); + +35 + `APP_CHECK +(( +p +-> +che_size + > 0), + +36 "Mempo %chsizi0\n", +p +-> +me +); + +38 + `APP_CHECK +( + `e_is_pow_of_2 +( +p +-> +che_size +), + +39 "Mempo %chsiznهow o2\n", +p +-> +me +); + +41 + } +} + +44 + $check_lks +( +p_ms + * +p +) + +46 +ut32_t + +i +; + +49 i( +p +-> +pt_mask +) { + +50 +ut32_t + +n_lks_pt_mask + = + +51 + `__but_pcou +( +p +-> +pt_mask +); + +53 + `APP_CHECK +(( +p +-> +n_lks + = +n_lks_pt_mask +), + +57  +i + = 0; i < +p +-> +n_lks +; i++) { + +58  +p_lk_ms + * +lk + = & +p +-> +lk_ms +[ +i +]; + +59 +ut32_t + +rxq_max +, +n_rxq +, +n_txq +, +lk_id +, +i +; + +61 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +64 +rxq_max + = 0; + +65 i( +lk +-> +p_q + > +rxq_max +) + +66 +rxq_max + = +lk +-> +p_q +; + +67 i( +lk +-> +t_syn_q + > +rxq_max +) + +68 +rxq_max + = +lk +-> +t_syn_q +; + +69 i( +lk +-> +_lol_q + > +rxq_max +) + +70 +rxq_max + = +lk +-> +_lol_q +; + +71 i( +lk +-> +t_lol_q + > +rxq_max +) + +72 +rxq_max + = +lk +-> +t_lol_q +; + +73 i( +lk +-> +udp_lol_q + > +rxq_max +) + +74 +rxq_max + = +lk +-> +udp_lol_q +; + +75 i( +lk +-> +sp_lol_q + > +rxq_max +) + +76 +rxq_max + = +lk +-> +sp_lol_q +; + +78 if( +ab_hwlb + || +ab_ow_d +){ + +79 +g_n_hwq_ + = +p +-> +n_hwlb_q +; + +80 +rxq_max + = ( +g_n_hwq_ + - 1); + +81  +i + = +g_n_hwq_ +; i < +rxq_max +; i++) + +82 + `APP_CHECK +((( +lk +-> +p_q + = +i +) || + +83 ( +lk +-> +t_syn_q + = +i +) || + +84 ( +lk +-> +_lol_q + = +i +) || + +85 ( +lk +-> +t_lol_q + = +i +) || + +86 ( +lk +-> +udp_lol_q + = +i +) || + +87 ( +lk +-> +sp_lol_q + = +i +)), + +88 "%RXQn ctiguou(A)\n", +lk +-> +me +); + +92  +i + = 1; i < +rxq_max +; i++) + +93 + `APP_CHECK +((( +lk +-> +p_q + = +i +) || + +94 ( +lk +-> +t_syn_q + = +i +) || + +95 ( +lk +-> +_lol_q + = +i +) || + +96 ( +lk +-> +t_lol_q + = +i +) || + +97 ( +lk +-> +udp_lol_q + = +i +) || + +98 ( +lk +-> +sp_lol_q + = +i +)), + +99 "%RXQn ctiguou(A)\n", +lk +-> +me +); + +101 +n_rxq + = + `p_lk_g_n_rxq +( +p +, +lk +); + +103 + `APP_CHECK +(( +n_rxq +), "%d۠n havy RXQ\n", +lk +-> +me +); + +104 + `tf +("n_rxq = %d\n", +n_rxq +); + +105 + `tf +("rxq_max = %d\n", +rxq_max +); + +109  +i + = 0; i < +n_rxq +; i++) { + +110  +me +[ +APP_PARAM_NAME_SIZE +]; + +111  +pos +; + +113 + `rtf +( +me +, "RXQ%" +PRIu32 + ".%" PRIu32, + +114 +lk_id +, +i +); + +115 +pos + = + `APP_PARAM_FIND +( +p +-> +hwq__ms +, +me +); + +116 + `APP_CHECK +(( +pos + >= 0), + +117 "%RXQn ctiguou(C)\n", +lk +-> +me +); + +121 +n_txq + = + `p_lk_g_n_txq +( +p +, +lk +); + +123 + `APP_CHECK +(( +n_txq +), "%d۠n havy TXQ\n", +lk +-> +me +); + +125  +i + = 0; i < +n_txq +; i++) { + +126  +me +[ +APP_PARAM_NAME_SIZE +]; + +127  +pos +; + +129 + `rtf +( +me +, "TXQ%" +PRIu32 + ".%" PRIu32, + +130 +lk_id +, +i +); + +131 +pos + = + `APP_PARAM_FIND +( +p +-> +hwq_out_ms +, +me +); + +132 + `APP_CHECK +(( +pos + >= 0), + +133 "%TXQn ctiguous\n", +lk +-> +me +); + +136 + } +} + +139 + $check_rxqs +( +p_ms + * +p +) + +141 +ut32_t + +i +; + +143  +i + = 0; i < +p +-> +n_pktq_hwq_ +; i++) { + +144  +p_pktq_hwq__ms + * +p + = & +p +-> +hwq__ms +[ +i +]; + +145 +ut32_t + +n_ads + = + `p_rxq_g_ads +( +p +, +p +); + +147 + `APP_CHECK +(( +p +-> +size + > 0), + +148 "%sizi0\n", +p +-> +me +); + +150 + `APP_CHECK +(( + `e_is_pow_of_2 +( +p +-> +size +)), + +151 "%sizinهow o2\n", +p +-> +me +); + +153 + `APP_CHECK +(( +p +-> +bur + > 0), + +154 "%bur sizi0\n", +p +-> +me +); + +156 + `APP_CHECK +(( +p +-> +bur + +size +), + +157 "%bur sizibiggh itsize\n", +p +-> +me +); + +159 + `APP_CHECK +(( +n_ads + != 0), + +160 "%hanػad\n", +p +-> +me +); + +162 + `APP_CHECK +(( +n_ads + == 1), + +163 "%hamܐth oÄd\n", +p +-> +me +); + +165 + } +} + +168 + $check_txqs +( +p_ms + * +p +) + +170 +ut32_t + +i +; + +172  +i + = 0; i < +p +-> +n_pktq_hwq_out +; i++) { + +173  +p_pktq_hwq_out_ms + * +p + = & +p +-> +hwq_out_ms +[ +i +]; + +174 +ut32_t + +n_wrs + = + `p_txq_g_wrs +( +p +, +p +); + +176 + `APP_CHECK +(( +p +-> +size + > 0), + +177 "%sizi0\n", +p +-> +me +); + +179 + `APP_CHECK +(( + `e_is_pow_of_2 +( +p +-> +size +)), + +180 "%sizinهow o2\n", +p +-> +me +); + +182 + `APP_CHECK +(( +p +-> +bur + > 0), + +183 "%bur sizi0\n", +p +-> +me +); + +185 + `APP_CHECK +(( +p +-> +bur + +size +), + +186 "%bur sizibiggh itsize\n", +p +-> +me +); + +188 + `APP_CHECK +(( +n_wrs + != 0), + +189 "%hanwr\n", +p +-> +me +); + +191 + `APP_CHECK +(( +n_wrs + == 1), + +192 "%hamܐth o wr\n", +p +-> +me +); + +194 + } +} + +197 + $check_swqs +( +p_ms + * +p +) + +199 +ut32_t + +i +; + +201  +i + = 0; i < +p +-> +n_pktq_swq +; i++) { + +202  +p_pktq_swq_ms + * +p + = & +p +-> +swq_ms +[ +i +]; + +203 +ut32_t + +n_ads + = + `p_swq_g_ads +( +p +, +p +); + +204 +ut32_t + +n_wrs + = + `p_swq_g_wrs +( +p +, +p +); + +205 +ut32_t + +n_ags +; + +207 + `APP_CHECK +(( +p +-> +size + > 0), + +208 "%sizi0\n", +p +-> +me +); + +210 + `APP_CHECK +(( + `e_is_pow_of_2 +( +p +-> +size +)), + +211 "%sizinهow o2\n", +p +-> +me +); + +213 + `APP_CHECK +(( +p +-> +bur_ad + > 0), + +214 "%ad bur sizi0\n", +p +-> +me +); + +216 + `APP_CHECK +(( +p +-> +bur_ad + +size +), + +218 +p +-> +me +); + +220 + `APP_CHECK +(( +p +-> +bur_wre + > 0), + +221 "%wrbur sizi0\n", +p +-> +me +); + +223 + `APP_CHECK +(( +p +-> +bur_wre + +size +), + +225 +p +-> +me +); + +227 + `APP_CHECK +(( +n_ads + != 0), + +228 "%hanػad\n", +p +-> +me +); + +230 i( +n_ads + > 1) + +231 + `APP_LOG +( +p +, +LOW +, "%hamܐth oÄd", +p +-> +me +); + +233 + `APP_CHECK +(( +n_wrs + != 0), + +234 "%hanwr\n", +p +-> +me +); + +236 i( +n_wrs + > 1) + +237 + `APP_LOG +( +p +, +LOW +, "%hamܐth o wr", +p +-> +me +); + +239 +n_ags + = +p +-> +v4_ag + +-> +v6_ag + +-> +v4_s + +-> +v6_s +; + +241 + `APP_CHECK +(( +n_ags + < 2), + +243 +p +-> +me +); + +245 + `APP_CHECK +((!(( +n_ads + > 1&& ( +n_ags + == 1))), + +248 +p +-> +me +); + +250 + `APP_CHECK +((!(( +n_wrs + > 1&& ( +n_ags + == 1))), + +253 +p +-> +me +); + +255 +n_ags + = +p +-> +v4_s + +-> +v6_s +; + +257 + `APP_CHECK +((!(( +p +-> +drss + =1&& ( +n_ags + == 1))), + +258 "%hadrswhsmbly modabd\n", +p +-> +me +); + +260 +n_ags + = +p +-> +v4_ag + +-> +v6_ag +; + +262 i( +n_ags + == 1) { + +263 +ut16_t + +_hdr_size + = ( +p +-> +v4_ag +? ( +v4_hdr +) : + +264 ( +v6_hdr +); + +266 + `APP_CHECK +(( +p +-> +mtu + > +_hdr_size +), + +267 "%mtu sizism˸th ihd\n", +p +-> +me +); + +269 + `APP_CHECK +((!(( +p +-> +mtu + - +_hdr_size +) % 8)), + +270 "%mtu sizicܻ\n", +p +-> +me +); + +273 + } +} + +276 + $check_tms +( +p_ms + * +p +) + +278 +ut32_t + +i +; + +280  +i + = 0; i < +p +-> +n_pktq_tm +; i++) { + +281  +p_pktq_tm_ms + * +p + = & +p +-> +tm_ms +[ +i +]; + +282 +ut32_t + +n_ads + = + `p_tm_g_ads +( +p +, +p +); + +283 +ut32_t + +n_wrs + = + `p_tm_g_wrs +( +p +, +p +); + +285 + `APP_CHECK +(( +n_ads + != 0), + +286 "%hanػad\n", +p +-> +me +); + +288 + `APP_CHECK +(( +n_ads + == 1), + +289 "%hamܐth oÄd\n", +p +-> +me +); + +291 + `APP_CHECK +(( +n_wrs + != 0), + +292 "%hanwr\n", +p +-> +me +); + +294 + `APP_CHECK +(( +n_wrs + == 1), + +295 "%hamܐth o wr\n", +p +-> +me +); + +297 + } +} + +300 + $check_sours +( +p_ms + * +p +) + +302 +ut32_t + +i +; + +304  +i + = 0; i < +p +-> +n_pktq_sour +; i++) { + +305  +p_pktq_sour_ms + * +p + = & +p +-> +sour_ms +[ +i +]; + +306 +ut32_t + +n_ads + = + `p_sour_g_ads +( +p +, +p +); + +308 + `APP_CHECK +(( +n_ads + != 0), + +309 "%hanػad\n", +p +-> +me +); + +311 + `APP_CHECK +(( +n_ads + == 1), + +312 "%hamܐth oÄd\n", +p +-> +me +); + +314 + } +} + +317 + $check_sks +( +p_ms + * +p +) + +319 +ut32_t + +i +; + +321  +i + = 0; i < +p +-> +n_pktq_sk +; i++) { + +322  +p_pktq_sk_ms + * +p + = & +p +-> +sk_ms +[ +i +]; + +323 +ut32_t + +n_wrs + = + `p_sk_g_wrs +( +p +, +p +); + +325 + `APP_CHECK +(( +n_wrs + != 0), + +326 "%hanwr\n", +p +-> +me +); + +328 + `APP_CHECK +(( +n_wrs + == 1), + +329 "%hamܐth o wr\n", +p +-> +me +); + +331 + } +} + +334 + $check_msgqs +( +p_ms + * +p +) + +336 +ut32_t + +i +; + +338  +i + = 0; i < +p +-> +n_msgq +; i++) { + +339  +p_msgq_ms + * +p + = & +p +-> +msgq_ms +[ +i +]; + +340 +ut32_t + +n_ads + = + `p_msgq_g_ads +( +p +, +p +); + +341 +ut32_t + +n_wrs + = + `p_msgq_g_wrs +( +p +, +p +); + +342 +ut32_t + +msgq_q_pe +, +msgq_r_pe +; + +343 +ut32_t + +msgq_q_ce +, +msgq_r_ce +; + +345 + `APP_CHECK +(( +p +-> +size + > 0), + +346 "%sizi0\n", +p +-> +me +); + +348 + `APP_CHECK +(( + `e_is_pow_of_2 +( +p +-> +size +)), + +349 "%sizinهow o2\n", +p +-> +me +); + +351 +msgq_q_pe + = ( + `cmp +( +p +-> +me +, "MSGQ-REQ-PIPELINE", + +352 + ` +("MSGQ-REQ-PIPELINE")) == 0); + +354 +msgq_r_pe + = ( + `cmp +( +p +-> +me +, "MSGQ-RSP-PIPELINE", + +355 + ` +("MSGQ-RSP-PIPELINE")) == 0); + +357 +msgq_q_ce + = ( + `cmp +( +p +-> +me +, "MSGQ-REQ-CORE", + +358 + ` +("MSGQ-REQ-CORE")) == 0); + +360 +msgq_r_ce + = ( + `cmp +( +p +-> +me +, "MSGQ-RSP-CORE", + +361 + ` +("MSGQ-RSP-CORE")) == 0); + +363 i(( +msgq_q_pe + == 0) && + +364 ( +msgq_r_pe + == 0) && + +365 ( +msgq_q_ce + == 0) && + +366 ( +msgq_r_ce + == 0)) { + +367 + `APP_CHECK +(( +n_ads + != 0), + +368 "%hanػad\n", +p +-> +me +); + +370 + `APP_CHECK +(( +n_ads + == 1), + +371 "%hamܐth oÄd\n", +p +-> +me +); + +373 + `APP_CHECK +(( +n_wrs + != 0), + +374 "%hanwr\n", +p +-> +me +); + +376 + `APP_CHECK +(( +n_wrs + == 1), + +377 "%hamܐth o wr\n", +p +-> +me +); + +380 i( +msgq_q_pe +) { + +381  +p_pe_ms + * +pe +; + +382 +ut32_t + +pe_id +; + +384 + `APP_PARAM_GET_ID +( +p +, "MSGQ-REQ-PIPELINE", +pe_id +); + +386 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, + +388 +pe_id +, + +389 +pe +); + +391 + `APP_CHECK +(( +pe + ! +NULL +), + +393 +p +-> +me +); + +396 i( +msgq_r_pe +) { + +397  +p_pe_ms + * +pe +; + +398 +ut32_t + +pe_id +; + +400 + `APP_PARAM_GET_ID +( +p +, "MSGQ-RSP-PIPELINE", +pe_id +); + +402 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_ms +, + +404 +pe_id +, + +405 +pe +); + +407 + `APP_CHECK +(( +pe + ! +NULL +), + +409 +p +-> +me +); + +412 + } +} + +415 + $check_pes +( +p_ms + * +p +) + +417 +ut32_t + +i +; + +419  +i + = 0; i < +p +-> +n_pes +; i++) { + +420  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +422 + `APP_CHECK +(( +p +-> +n_msgq_ + =p-> +n_msgq_out +), + +424 "thnumb oouuMSGQs\n", +p +-> +me +); + +426 + } +} + +429 + $p_cfig_check +( +p_ms + * +p +) + +431 + `check_mempos +( +p +); + +432 + `check_lks +( +p +); + +433 + `check_rxqs +( +p +); + +434 + `check_txqs +( +p +); + +435 + `check_swqs +( +p +); + +436 + `check_tms +( +p +); + +437 + `check_sours +( +p +); + +438 + `check_sks +( +p +); + +439 + `check_msgqs +( +p +); + +440 + `check_pes +( +p +); + +443 + } +} + + @vnf_common/config_parse.c + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +32  + ~"p.h +" + +33  + ~"rr.h +" + +39  +p_ms + + gp_ms_deu + = { + +40 . +cfig_fe + = "./config/ip_pipeline.cfg", + +41 . + glog_v + = +APP_LOG_LEVEL_HIGH +, + +42 . + gpt_mask + = 0, + +44 . + gl_ms + = { + +45 . +chls + = 4, + +49 cڡ  +p_mempo_ms + + gmempo_ms_deu + = { + +50 . +rd + = 0, + +51 . + gbufr_size + = 2048 + ( +e_mbuf ++ +RTE_PKTMBUF_HEADROOM +, + +52 . + gpo_size + = 32 * 1024, + +53 . + gche_size + = 256, + +54 . + gu_sock_id + = 0, + +57 cڡ  +p_lk_ms + + glk_ms_deu + = { + +58 . +rd + = 0, + +59 . + gpmd_id + = 0, + +60 . + gp_q + = 0, + +61 . + gt_syn_q + = 0, + +62 . + g_lol_q + = 0, + +63 . + gt_lol_q + = 0, + +64 . + gudp_lol_q + = 0, + +65 . + gsp_lol_q + = 0, + +66 . + ge + = 0, + +67 . + g + = 0, + +68 . + gv6 + = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + +69 . + gdth + = 0, + +70 . + gdth_v6 + = 0, + +71 . + gmac_addr + = 0, + +72 . + gpci_bdf + = {0}, + +74 . + gcf + = { + +75 . +lk_ds + = 0, + +76 . + grxmode + = { + +77 . +mq_mode + = +ETH_MQ_RX_NONE +, + +79 . + ghd_l + = 0, + +80 . + ghw__checksum + = 0, + +81 . + ghw_vn_fr + = 0, + +82 . + ghw_vn_r + = 0, + +83 . + ghw_vn_exnd + = 0, + +84 . + gjumbo_ame + = 0, + +85 . + ghw_r_c + = 0, + +86 . + gab_s + = 0, + +88 . + gmax_rx_pkt_n + = 9000, + +89 . + gl_hdr_size + = 0, + +91 . + gtxmode + = { + +92 . +mq_mode + = +ETH_MQ_TX_NONE +, + +94 . + gbk_mode + = 0, + +95 #ide +VNF_ACL + + +96 #ifde +LSC_GRARP + + +97 . + g_cf + = { + +98 . +lsc + = 1, + +104 . + gomisc + = 1, + +107 cڡ  +p_pktq_hwq__ms + + gdeu_hwq__ms + = { + +108 . +rd + = 0, + +109 . + gmempo_id + = 0, + +110 . + gsize + = 128, + +111 . + gbur + = 32, + +113 . + gcf + = { + +114 . +rx_thsh + = { + +115 . +hsh + = 8, + +116 . + ghthsh + = 8, + +117 . + gwthsh + = 4, + +119 . + grx__thsh + = 64, + +120 . + grx_dr_ + = 0, + +121 . + grx_deed_t + = 0, + +125 cڡ  +p_pktq_hwq_out_ms + + gdeu_hwq_out_ms + = { + +126 . +rd + = 0, + +127 . + gsize + = 512, + +128 . + gbur + = 32, + +129 . + gdrss + = 0, + +130 . + gn_s + = 0, + +132 . + gcf + = { + +133 . +tx_thsh + = { + +134 . +hsh + = 36, + +135 . + ghthsh + = 0, + +136 . + gwthsh + = 0, + +138 . + gtx_rs_thsh + = 0, + +139 . + gtx__thsh + = 0, + +140 . + gtxq_ags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | + +141 +ETH_TXQ_FLAGS_NOOFFLOADS +, + +142 . + gtx_deed_t + = 0, + +146 cڡ  +p_pktq_swq_ms + + gdeu_swq_ms + = { + +147 . +rd + = 0, + +148 . + gsize + = 256, + +149 . + gbur_ad + = 32, + +150 . + gbur_wre + = 32, + +151 . + gdrss + = 0, + +152 . + gn_s + = 0, + +153 . + gu_sock_id + = 0, + +154 . + gv4_ag + = 0, + +155 . + gv6_ag + = 0, + +156 . + gv4_s + = 0, + +157 . + gv6_s + = 0, + +158 . + gmtu + = 0, + +159 . + gmada_size + = 0, + +160 . + gmempo_de_id + = 0, + +161 . + gmempo_de_id + = 0, + +164  +p_pktq_tm_ms + + gdeu_tm_ms + = { + +165 . +rd + = 0, + +166 . + gfe_me + = "./config/tm_profile.cfg", + +167 . + gbur_ad + = 64, + +168 . + gbur_wre + = 32, + +171  +p_pktq_sour_ms + + gdeu_sour_ms + = { + +172 . +rd + = 0, + +173 . + gmempo_id + = 0, + +174 . + gbur + = 32, + +175 . + gfe_me + = +NULL +, + +176 . + gn_bys_r_pkt + = 0, + +179  +p_pktq_sk_ms + + gdeu_sk_ms + = { + +180 . +rd + = 0, + +181 . + gfe_me + = +NULL +, + +182 . + gn_pkts_to_dump + = 0, + +185  +p_msgq_ms + + gdeu_msgq_ms + = { + +186 . +rd + = 0, + +187 . + gsize + = 64, + +188 . + gu_sock_id + = 0, + +191  +p_pe_ms + + gdeu_pe_ms + = { + +192 . +rd + = 0, + +193 . + gsock_id + = 0, + +194 . + gce_id + = 0, + +195 . + ghyr_th_id + = 0, + +196 . + gn_pktq_ + = 0, + +197 . + gn_pktq_out + = 0, + +198 . + gn_msgq_ + = 0, + +199 . + gn_msgq_out + = 0, + +200 . + gtim_riod + = 1, + +201 . + gn_gs + = 0, + +204 cڡ  + gp_uge +[] = + +220 + $p_t_uge +(* +gme +) + +222 + `e_ex +(0, +p_uge +, +gme +, +p_ms_deu +. +cfig_fe +); + +223 + } +} + +225  + #sk_whe_as +( +pos +) \ + +227 + `__tyof__ +( +pos + +_p + = (pos); \ + +228  ; + `isa +(* +_p +); _p++); \ + +229 +_p +; \ + +230 }) + + ) + +232  + #PARSER_PARAM_ADD_CHECK +( +su +, +ms_y +, +i_me +) \ + +234 + `APP_CHECK +(( +su + !- +EINVAL +), \ + +236 + `APP_CHECK +(( +su + !- +ENOMEM +), \ + +237 "P:omy \"%s\" seis", +i_me +); \ + +238 + `APP_CHECK +((( +su + >0&& ( +ms_y +)[su]. +rd + == 0),\ + +239 "P: dui \"%s\" sei", +i_me +); \ + +240 + `APP_CHECK +(( +su + >= 0), \ + +241 "P ii \"%s\"", +i_me +); \ + +242 } 0) + + ) + +245 + $rr_ad_g_bo +(cڡ * +p +) + +247 +p + = + `sk_whe_as +(p); + +248  +su + = - +EINVAL +; + +250 i((( +p +[0] == 'y') && (p[1] == 'e') && (p[2] == 's')) || + +251 (( +p +[0] == 'Y') && (p[1] == 'E') && (p[2] == 'S'))) { + +252 +p + += 3; + +253 +su + = 1; + +256 i((( +p +[0] == 'o') && (p[1] == 'n')) || + +257 (( +p +[0] == 'O') && (p[1] == 'N'))) { + +258 +p + += 2; + +259 +su + = 1; + +262 i((( +p +[0] == 'n') && (p[1] == 'o')) || + +263 (( +p +[0] == 'N') && (p[1] == 'O'))) { + +264 +p + += 2; + +265 +su + = 0; + +268 i((( +p +[0] == 'o') && (p[1] == 'f') && (p[2] == 'f')) || + +269 (( +p +[0] == 'O') && (p[1] == 'F') && (p[2] == 'F'))) { + +270 +p + += 3; + +271 +su + = 0; + +274 +p + = + `sk_whe_as +(p); + +276 i( +p +[0] != '\0') + +277  - +EINVAL +; + +279  +su +; + +280 + } +} + +282  + #PARSE_ERROR +( +exp +, +i +, +y +) \ + +283 + `APP_CHECK +( +exp +, "P ii \"%s\":ry \"%s\"\n", +i +, +y +) + + ) + +285  + #PARSE_ERROR_MESSAGE +( +exp +, +i +, +y +, +mesge +) \ + +286 + `APP_CHECK +( +exp +, "Parserror in section \"%s\",ntry \"%s\": %s\n", \ + +287 +i +, +y +, +mesge +) + + ) + +290  + #PARSE_ERROR_MALLOC +( +exp +) \ + +291 + `APP_CHECK +( +exp +, "P: memy\n") + + ) + +293  + #PARSE_ERROR_SECTION +( +exp +, +i +) \ + +294 + `APP_CHECK +( +exp +, "P ii \"%s\"", +i +) + + ) + +296  + #PARSE_ERROR_SECTION_NO_ENTRIES +( +exp +, +i +) \ + +297 + `APP_CHECK +( +exp +, "P ii \"%s\":ؒs\n", +i +) + + ) + +299  + #PARSE_WARNING_IGNORED +( +exp +, +i +, +y +) \ + +301 i(!( +exp +)) \ + +302 + `rtf +( +dr +, "Parse warning in section \"%s\": " \ + +303 "y \"%s\" iigned\n", +i +, +y +); \ + +304 0) + + ) + +306  + #PARSE_ERROR_INVALID +( +exp +, +i +, +y +) \ + +307 + `APP_CHECK +( +exp +, "Parserror in section \"%s\": unrecognizedntry \"%s\"\n",\ + +308 +i +, +y +) + + ) + +310  + #PARSE_ERROR_DUPLICATE +( +exp +, +i +, +y +) \ + +311 + `APP_CHECK +( +exp +, "Parserror in section \"%s\": duplicatentry \"%s\"\n",\ + +312 +i +, +y +) + + ) + +315 + $rr_ad_ut64 +( +ut64_t + * +vue +, cڡ * +p +) + +317 * +xt +; + +318 +ut64_t + +v +; + +320 +p + = + `sk_whe_as +(p); + +321 i(! + `isdig +(* +p +)) + +322  - +EINVAL +; + +324 +v + = + `oul +( +p +, & +xt +, 10); + +325 i( +p + = +xt +) + +326  - +EINVAL +; + +328 +p + = +xt +; + +329 * +p +) { + +331 +v + *= 1024ULL; + +334 +v + *= 1024ULL; + +337 +v + *= 1024ULL; + +341 +v + *= 1024ULL; + +342 +p +++; + +346 +p + = + `sk_whe_as +(p); + +347 i(* +p + != '\0') + +348  - +EINVAL +; + +350 * +vue + = +v +; + +352 + } +} + +355 + $rr_ad_ut32 +( +ut32_t + * +vue +, cڡ * +p +) + +357 +ut64_t + +v + = 0; + +358  +t + = + `rr_ad_ut64 +(& +v +, +p +); + +360 i( +t + < 0) + +361  +t +; + +363 i( +v + > +UINT32_MAX +) + +364  - +ERANGE +; + +366 * +vue + = +v +; + +368 + } +} + +371 + $r_pe_ce +( +ut32_t + * +sock +, + +372 +ut32_t + * +ce +, + +373 +ut32_t + * +ht +, + +374 cڡ * +y +) + +376 +size_t + +num_n +; + +377  +num +[8]; + +379 +ut32_t + +s + = 0, +c + = 0, +h + = 0, +v +; + +380 +ut8_t + +s_rd + = 0, +c_rd + = 0, +h_rd + = 0; + +381 cڡ * +xt + = + `sk_whe_as +( +y +); + +382  +ty +; + +385 * +xt + != '\0') { + +387 i( +s_rd + && +c_rd + && +h_rd +) + +388  - +EINVAL +; + +390 +ty + = * +xt +; + +391  +ty +) { + +394 i( +s_rd + || +c_rd + || +h_rd +) + +395  - +EINVAL +; + +396 +s_rd + = 1; + +397 +xt +++; + +401 i( +c_rd + || +h_rd +) + +402  - +EINVAL +; + +403 +c_rd + = 1; + +404 +xt +++; + +408 i( +h_rd +) + +409  - +EINVAL +; + +410 +h_rd + = 1; + +411 +xt +++; + +415 i(! + `isdig +(* +xt +|| +s_rd + || +c_rd + || +h_rd +) + +416  - +EINVAL +; + +418 +ty + = 'C'; + +421  +num_n + = 0; * +xt + != '\0';ext++,um_len++) { + +422 i( +num_n + = + `RTE_DIM +( +num +)) + +423  - +EINVAL +; + +425 i(! + `isdig +(* +xt +)) + +428 +num +[ +num_n +] = * +xt +; + +431 i( +num_n + =0 && +ty + != 'h' &&ype != 'H') + +432  - +EINVAL +; + +434 i( +num_n + !0 && ( +ty + == 'h' ||ype == 'H')) + +435  - +EINVAL +; + +436 if( +num_n + < ( +num +)) + +437 +num +[ +num_n +] = '\0'; + +438 +v + = + ` +( +num +, +NULL +, 10); + +440 +h + = 0; + +441  +ty +) { + +444 +s + = +v +; + +448 +c + = +v +; + +452 +h + = 1; + +457 * +sock + = +s +; + +458 * +ce + = +c +; + +459 * +ht + = +h +; + +461 + } +} + +463  +ut32_t + + +464 + $g_hex_v +( +c +) + +466  +c +) { + +469  +c + - '0'; + +471  +c + - 'A' + 10; + +473  +c + - 'a' + 10; + +477 + } +} + +480 + $r_hex_rg +(* +c +, +ut8_t + * +d +, +ut32_t + * +size +) + +482 * +c +; + +483 +ut32_t + +n +, +i +; + +486 i(( +c + = +NULL +) || + +487 ( +d + = +NULL +) || + +488 ( +size + = +NULL +) || + +489 (* +size + == 0)) + +492 +n + = + ` +( +c +); + +493 i((( +n + & 3) != 0) || + +494 ( +n + > (* +size +) * 2)) + +496 * +size + = +n + / 2; + +498  +c + = +c +; *c != 0; c++) { + +499 i((((* +c +) >= '0') && ((*c) <= '9')) || + +500 (((* +c +) >= 'A') && ((*c) <= 'F')) || + +501 (((* +c +) >= 'a') && ((*c) <= 'f'))) + +508  +i + = 0; i < * +size +; i++) + +509 +d +[ +i +] = + `g_hex_v +( +c +[2 * i]) * 16 + + +510 + `g_hex_v +( +c +[2 * +i + + 1]); + +513 + } +} + +515  +size_t + + +516 + $sk_digs +(cڡ * +c +) + +518 +size_t + +i +; + +520  +i + = 0; + `isdig +( +c +[i]); i++); + +522  +i +; + +523 + } +} + +526 + $vide_me +(cڡ * +me +, cڡ * +efix +,  +num +) + +528 +size_t + +i +, +j +; + +530  +i + = 0; ( +me +[i] !'\0'&& ( +efix +[i] != '\0'); i++) { + +531 i( +me +[ +i +] ! +efix +[i]) + +535 i( +efix +[ +i +] != '\0') + +538 i(! +num +) { + +539 i( +me +[ +i +] != '\0') + +545 i( +num + == 2) { + +546 +j + = + `sk_digs +(& +me +[ +i +]); + +547 +i + + +j +; + +548 i(( +j + =0|| ( +me +[ +i +] != '.')) + +550 +i +++; + +553 i( +num + == 1) { + +554 +j + = + `sk_digs +(& +me +[ +i +]); + +555 +i + + +j +; + +556 i(( +j + =0|| ( +me +[ +i +] != '\0')) + +561 + } +} + +564 + $r_l +( +p_ms + * +p +, + +565 cڡ * +i_me +, + +566  +e_cfgfe + * +cfg +) + +568  +p_l_ms + * +p + = & +p +-> +l_ms +; + +569  +e_cfgfe_y + * +s +; + +570  +n_s +, +i +; + +572 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +573 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +575 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +576 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +578 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +580  +i + = 0; i < +n_s +; i++) { + +581  +e_cfgfe_y + * +y + = & +s +[ +i +]; + +584 i( + `rcmp +( +y +-> +me +, "c") == 0) { + +585 + `PARSE_WARNING_IGNORED +(0, +i_me +, +y +-> +me +); + +590 i( + `rcmp +( +y +-> +me +, "l") == 0) { + +591 + `PARSE_WARNING_IGNORED +(0, +i_me +, +y +-> +me +); + +596 i( + `rcmp +( +y +-> +me +, "lcores") == 0) { + +597 + `PARSE_ERROR_DUPLICATE +(( +p +-> +cem + = +NULL +), + +598 +i_me +, + +599 +y +-> +me +); + +600 +p +-> +cem + = + `rdup +( +y +-> +vue +); + +605 i( + `rcmp +( +y +-> +me +, "master_lcore") == 0) { + +606  +us +; + +608 + `PARSE_ERROR_DUPLICATE +(( +p +-> +ma_lce_e + == 0), + +609 +i_me +, + +610 +y +-> +me +); + +611 +p +-> +ma_lce_e + = 1; + +613 +us + = + `rr_ad_ut32 +(& +p +-> +ma_lce +, + +614 +y +-> +vue +); + +615 + `PARSE_ERROR +(( +us + =0), +i_me +, +y +-> +me +); + +620 i( + `rcmp +( +y +-> +me +, "n") == 0) { + +621  +us +; + +623 + `PARSE_ERROR_DUPLICATE +(( +p +-> +chls_e + == 0), + +624 +i_me +, + +625 +y +-> +me +); + +626 +p +-> +chls_e + = 1; + +628 +us + = + `rr_ad_ut32 +(& +p +-> +chls +, +y +-> +vue +); + +629 + `PARSE_ERROR +(( +us + =0), +i_me +, +y +-> +me +); + +634 i( + `rcmp +( +y +-> +me +, "m") == 0) { + +635  +us +; + +637 + `PARSE_ERROR_DUPLICATE +(( +p +-> +memy_e + == 0), + +638 +i_me +, + +639 +y +-> +me +); + +640 +p +-> +memy_e + = 1; + +642 +us + = + `rr_ad_ut32 +(& +p +-> +memy +, +y +-> +vue +); + +643 + `PARSE_ERROR +(( +us + =0), +i_me +, +y +-> +me +); + +648 i( + `rcmp +( +y +-> +me +, "r") == 0) { + +649  +us +; + +651 + `PARSE_ERROR_DUPLICATE +(( +p +-> +nks_e + == 0), + +652 +i_me +, + +653 +y +-> +me +); + +654 +p +-> +nks_e + = 1; + +656 +us + = + `rr_ad_ut32 +(& +p +-> +nks +, +y +-> +vue +); + +657 + `PARSE_ERROR +(( +us + =0), +i_me +, +y +-> +me +); + +662 i(( + `rcmp +( +y +-> +me +, "pci_blacklist") == 0) || + +663 ( + `rcmp +( +y +-> +me +, "b") == 0)) { + +664 +ut32_t + +i +; + +666  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +667 i( +p +-> +pci_bckli +[ +i +]) + +670 +p +-> +pci_bckli +[ +i +] = + +671 + `rdup +( +y +-> +vue +); + +672 + `PARSE_ERROR_MALLOC +( +p +-> +pci_bckli +[ +i +]); + +677 + `PARSE_ERROR_MESSAGE +(( +i + < +APP_MAX_LINKS +), + +678 +i_me +, +y +-> +me +, + +684 i(( + `rcmp +( +y +-> +me +, "pci_whitelist") == 0) || + +685 ( + `rcmp +( +y +-> +me +, "w") == 0)) { + +686 +ut32_t + +i +; + +688 + `PARSE_ERROR_MESSAGE +(( +p +-> +pt_mask + != 0), + +689 +i_me +, +y +-> +me +, "entryo be " + +693  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +694 i( +p +-> +pci_whi +[ +i +]) + +697 +p +-> +pci_whi +[ +i +] = + `rdup +( +y +-> +vue +); + +698 + `PARSE_ERROR_MALLOC +( +p +-> +pci_whi +[ +i +]); + +703 + `PARSE_ERROR_MESSAGE +(( +i + < +APP_MAX_LINKS +), + +704 +i_me +, +y +-> +me +, + +710 i( + `rcmp +( +y +-> +me +, "vdev") == 0) { + +711 +ut32_t + +i +; + +713  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +714 i( +p +-> +vdev +[ +i +]) + +717 +p +-> +vdev +[ +i +] = + `rdup +( +y +-> +vue +); + +718 + `PARSE_ERROR_MALLOC +( +p +-> +vdev +[ +i +]); + +723 + `PARSE_ERROR_MESSAGE +(( +i + < +APP_MAX_LINKS +), + +724 +i_me +, +y +-> +me +, + +730 i( + `rcmp +( +y +-> +me +, "vmware_tsc_map") == 0) { + +731  +v +; + +733 + `PARSE_ERROR_DUPLICATE +(( +p +-> +vmwe_tsc_m_e + == 0), + +734 +i_me +, + +735 +y +-> +me +); + +736 +p +-> +vmwe_tsc_m_e + = 1; + +738 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +739 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +740 +p +-> +vmwe_tsc_m + = +v +; + +745 i( + `rcmp +( +y +-> +me +, "proc_type") == 0) { + +746 + `PARSE_ERROR_DUPLICATE +(( +p +-> +oc_ty + = +NULL +), + +747 +i_me +, + +748 +y +-> +me +); + +749 +p +-> +oc_ty + = + `rdup +( +y +-> +vue +); + +754 i( + `rcmp +( +y +-> +me +, "syslog") == 0) { + +755 + `PARSE_ERROR_DUPLICATE +(( +p +-> +syog + = +NULL +), + +756 +i_me +, + +757 +y +-> +me +); + +758 +p +-> +syog + = + `rdup +( +y +-> +vue +); + +763 i( + `rcmp +( +y +-> +me +, "log_level") == 0) { + +764  +us +; + +766 + `PARSE_ERROR_DUPLICATE +(( +p +-> +log_v_e + == 0), + +767 +i_me +, + +768 +y +-> +me +); + +769 +p +-> +log_v_e + = 1; + +771 +us + = + `rr_ad_ut32 +(& +p +-> +log_v +, + +772 +y +-> +vue +); + +773 + `PARSE_ERROR +(( +us + =0), +i_me +, +y +-> +me +); + +778 i( + `rcmp +( +y +-> +me +, "v") == 0) { + +779  +v +; + +781 + `PARSE_ERROR_DUPLICATE +(( +p +-> +vsi_e + == 0), + +782 +i_me +, + +783 +y +-> +me +); + +784 +p +-> +vsi_e + = 1; + +786 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +787 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +788 +p +-> +vsi + = +v +; + +793 i(( + `rcmp +( +y +-> +me +, "help") == 0) || + +794 ( + `rcmp +( +y +-> +me +, "h") == 0)) { + +795  +v +; + +797 + `PARSE_ERROR_DUPLICATE +(( +p +-> +hp_e + == 0), + +798 +i_me +, + +799 +y +-> +me +); + +800 +p +-> +hp_e + = 1; + +802 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +803 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +804 +p +-> +hp + = +v +; + +809 i( + `rcmp +( +y +-> +me +, "no_huge") == 0) { + +810  +v +; + +812 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_huge_e + == 0), + +813 +i_me +, + +814 +y +-> +me +); + +815 +p +-> +no_huge_e + = 1; + +817 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +818 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +819 +p +-> +no_huge + = +v +; + +824 i( + `rcmp +( +y +-> +me +, "no_pci") == 0) { + +825  +v +; + +827 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_pci_e + == 0), + +828 +i_me +, + +829 +y +-> +me +); + +830 +p +-> +no_pci_e + = 1; + +832 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +833 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +834 +p +-> +no_pci + = +v +; + +839 i( + `rcmp +( +y +-> +me +, "no_hpet") == 0) { + +840  +v +; + +842 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_ht_e + == 0), + +843 +i_me +, + +844 +y +-> +me +); + +845 +p +-> +no_ht_e + = 1; + +847 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +848 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +849 +p +-> +no_ht + = +v +; + +854 i( + `rcmp +( +y +-> +me +, "no_shconf") == 0) { + +855  +v +; + +857 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_shcf_e + == 0), + +858 +i_me +, + +859 +y +-> +me +); + +860 +p +-> +no_shcf_e + = 1; + +862 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +863 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +864 +p +-> +no_shcf + = +v +; + +869 i( + `rcmp +( +y +-> +me +, "d") == 0) { + +870 + `PARSE_ERROR_DUPLICATE +(( +p +-> +add_driv + = +NULL +), + +871 +i_me +, + +872 +y +-> +me +); + +873 +p +-> +add_driv + = + `rdup +( +y +-> +vue +); + +878 i( + `rcmp +( +y +-> +me +, "socket_mem") == 0) { + +879 + `PARSE_ERROR_DUPLICATE +(( +p +-> +sock_mem + = +NULL +), + +880 +i_me +, + +881 +y +-> +me +); + +882 +p +-> +sock_mem + = + `rdup +( +y +-> +vue +); + +887 i( + `rcmp +( +y +-> +me +, "huge_dir") == 0) { + +888 + `PARSE_ERROR_DUPLICATE +(( +p +-> +huge_d + = +NULL +), + +889 +i_me +, + +890 +y +-> +me +); + +891 +p +-> +huge_d + = + `rdup +( +y +-> +vue +); + +896 i( + `rcmp +( +y +-> +me +, "file_prefix") == 0) { + +897 + `PARSE_ERROR_DUPLICATE +(( +p +-> +fe_efix + = +NULL +), + +898 +i_me +, + +899 +y +-> +me +); + +900 +p +-> +fe_efix + = + `rdup +( +y +-> +vue +); + +905 i( + `rcmp +( +y +-> +me +, "base_virtaddr") == 0) { + +906 + `PARSE_ERROR_DUPLICATE +(( +p +-> +ba_vddr + = +NULL +), + +907 +i_me +, + +908 +y +-> +me +); + +909 +p +-> +ba_vddr + = + `rdup +( +y +-> +vue +); + +914 i( + `rcmp +( +y +-> +me +, "create_uio_dev") == 0) { + +915  +v +; + +917 + `PARSE_ERROR_DUPLICATE +(( +p +-> +_uio_dev_e + == 0), + +918 +i_me +, + +919 +y +-> +me +); + +920 +p +-> +_uio_dev_e + = 1; + +922 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +923 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +924 +p +-> +_uio_dev + = +v +; + +929 i( + `rcmp +( +y +-> +me +, "vfio_intr") == 0) { + +930 + `PARSE_ERROR_DUPLICATE +(( +p +-> +vfio_ + = +NULL +), + +931 +i_me +, + +932 +y +-> +me +); + +933 +p +-> +vfio_ + = + `rdup +( +y +-> +vue +); + +938 i( + `rcmp +( +y +-> +me +, "xen_dom0") == 0) { + +939  +v +; + +941 + `PARSE_ERROR_DUPLICATE +(( +p +-> +x_dom0_e + == 0), + +942 +i_me +, + +943 +y +-> +me +); + +944 +p +-> +x_dom0_e + = 1; + +946 +v + = + `rr_ad_g_bo +( +y +-> +vue +); + +947 + `PARSE_ERROR +(( +v + >0), +i_me +, +y +-> +me +); + +948 +p +-> +x_dom0 + = +v +; + +953 + `PARSE_ERROR_INVALID +(0, +i_me +, +y +-> +me +); + +956 + ` +( +s +); + +957 + } +} + +960 + $r_pe_pp_sour +( +p_ms + * +p +, + +961  +p_pe_ms + * +p +, + +962 cڡ * +fe_me +, cڡ * +_size +) + +964 cڡ * +xt + = +NULL +; + +965 * +d +; + +966 +ut32_t + +i +; + +967  +r_fe + = 0; + +969 i( +fe_me + && ! +_size +) { + +970 +xt + = +fe_me +; + +971 +r_fe + = 1; + +972 } i( +_size + && ! +fe_me +) { + +973 +xt + = +_size +; + +974 +r_fe + = 0; + +976  - +EINVAL +; + +978  +me +[ +APP_PARAM_NAME_SIZE +]; + +979 +size_t + +me_n +; + +981 i( +p +-> +n_pktq_ + == 0) + +982  - +EINVAL +; + +984 +i + = 0; + +985 * +xt + != '\0') { + +986 +ut32_t + +id +; + +988 i( +i + > +p +-> +n_pktq_ +) + +989  - +EINVAL +; + +991 +id + = +p +-> +pktq_ +[ +i +].id; + +993 +d + = + `rchr +( +xt +, ' '); + +994 i(! +d +) + +995 +me_n + = + ` +( +xt +); + +997 +me_n + = +d + - +xt +; + +999 i( +me_n + =0 ||ame_=( +me +)) + +1000  - +EINVAL +; + +1002 + `y +( +me +, +xt +, +me_n +); + +1003 +me +[ +me_n +] = '\0'; + +1004 +xt + + +me_n +; + +1005 i(* +xt + != '\0') + +1006 +xt +++; + +1008 i( +r_fe +) { + +1009 +p +-> +sour_ms +[ +id +]. +fe_me + = + `rdup +( +me +); + +1010 i( +p +-> +sour_ms +[ +id +]. +fe_me + = +NULL +) + +1011  - +ENOMEM +; + +1013 i( + `rr_ad_ut32 +( + +1014 & +p +-> +sour_ms +[ +id +]. +n_bys_r_pkt +, + +1015 +me +) != 0) { + +1016 i( +p +-> +sour_ms +[ +id +]. + +1017 +fe_me + ! +NULL +) + +1018 + ` +( +p +-> +sour_ms +[ +id +]. + +1019 +fe_me +); + +1020  - +EINVAL +; + +1024 +i +++; + +1026 i( +i + = +p +-> +n_pktq_ +) + +1030  - +EINVAL +; + +1031 + } +} + +1034 + $r_pe_pp_sk +( +p_ms + * +p +, + +1035  +p_pe_ms + * +p +, + +1036 cڡ * +fe_me +, cڡ * +n_pkts_to_dump +) + +1038 cڡ * +xt + = +NULL +; + +1039 * +d +; + +1040 +ut32_t + +i +; + +1041  +r_fe + = 0; + +1043 i( +fe_me + && ! +n_pkts_to_dump +) { + +1044 +xt + = +fe_me +; + +1045 +r_fe + = 1; + +1046 } i( +n_pkts_to_dump + && ! +fe_me +) { + +1047 +xt + = +n_pkts_to_dump +; + +1048 +r_fe + = 0; + +1050  - +EINVAL +; + +1052  +me +[ +APP_PARAM_NAME_SIZE +]; + +1053 +size_t + +me_n +; + +1055 i( +p +-> +n_pktq_out + == 0) + +1056  - +EINVAL +; + +1058 +i + = 0; + +1059 * +xt + != '\0') { + +1060 +ut32_t + +id +; + +1062 i( +i + > +p +-> +n_pktq_out +) + +1063  - +EINVAL +; + +1065 +id + = +p +-> +pktq_out +[ +i +].id; + +1067 +d + = + `rchr +( +xt +, ' '); + +1068 i(! +d +) + +1069 +me_n + = + ` +( +xt +); + +1071 +me_n + = +d + - +xt +; + +1073 i( +me_n + =0 ||ame_=( +me +)) + +1074  - +EINVAL +; + +1076 + `y +( +me +, +xt +, +me_n +); + +1077 +me +[ +me_n +] = '\0'; + +1078 +xt + + +me_n +; + +1079 i(* +xt + != '\0') + +1080 +xt +++; + +1082 i( +r_fe +) { + +1083 +p +-> +sk_ms +[ +id +]. +fe_me + = + `rdup +( +me +); + +1084 i( +p +-> +sk_ms +[ +id +]. +fe_me + = +NULL +) + +1085  - +ENOMEM +; + +1087 i( + `rr_ad_ut32 +( + +1088 & +p +-> +sk_ms +[ +id +]. +n_pkts_to_dump +, + +1089 +me +) != 0) { + +1090 i( +p +-> +sk_ms +[ +id +]. +fe_me + != + +1091 +NULL +) + +1092 + ` +( +p +-> +sk_ms +[ +id +]. + +1093 +fe_me +); + +1094  - +EINVAL +; + +1098 +i +++; + +1100 i( +i + = +p +-> +n_pktq_out +) + +1104  - +EINVAL +; + +1105 + } +} + +1108 + $r_pe_pktq_ +( +p_ms + * +p +, + +1109  +p_pe_ms + * +p +, + +1110 cڡ * +vue +) + +1112 cڡ * +xt + = +vue +; + +1113 if( +xt + = +NULL +) + +1114  - +EINVAL +; + +1115 * +d +; + +1116  +me +[ +APP_PARAM_NAME_SIZE +]; + +1117 +size_t + +me_n +; + +1119 * +xt + != '\0') { + +1120 +p_pktq__ty + +ty +; + +1121  +id +; + +1122 * +d_a +; + +1123 * +d_b +; + +1124 if( +xt + ! +NULL +) + +1125 +xt + = + `sk_whe_as +(next); + +1126 i(! +xt +) + +1129 +d_a + = + `rchr +( +xt +, ' '); + +1130 +d_b + = + `rchr +( +xt +, ' '); + +1132 i( +d_a + && (! +d_b +)) + +1133 +d + = +d_a +; + +1134 i((! +d_a +&& +d_b +) + +1135 +d + = +d_b +; + +1136 i( +d_a + && +d_b +) + +1137 +d + = + `RTE_MIN +( +d_a +, +d_b +); + +1139 +d + = +NULL +; + +1141 i(! +d +) + +1142 +me_n + = + ` +( +xt +); + +1144 +me_n + = +d + - +xt +; + +1146 i( +me_n + =0 ||ame_=( +me +)) + +1147  - +EINVAL +; + +1149 + `y +( +me +, +xt +, +me_n +); + +1150 +me +[ +me_n +] = '\0'; + +1151 +xt + + +me_n +; + +1152 i(* +xt + != '\0') + +1153 +xt +++; + +1155 i( + `vide_me +( +me +, "RXQ", 2) == 0) { + +1156 +ty + = +APP_PKTQ_IN_HWQ +; + +1157 +id + = + `APP_PARAM_ADD +( +p +-> +hwq__ms +, +me +); + +1158 } i( + `vide_me +( +me +, "SWQ", 1) == 0) { + +1159 +ty + = +APP_PKTQ_IN_SWQ +; + +1160 +id + = + `APP_PARAM_ADD +( +p +-> +swq_ms +, +me +); + +1161 } i( + `vide_me +( +me +, "TM", 1) == 0) { + +1162 +ty + = +APP_PKTQ_IN_TM +; + +1163 +id + = + `APP_PARAM_ADD +( +p +-> +tm_ms +, +me +); + +1164 } i( + `vide_me +( +me +, "SOURCE", 1) == 0) { + +1165 +ty + = +APP_PKTQ_IN_SOURCE +; + +1166 +id + = + `APP_PARAM_ADD +( +p +-> +sour_ms +, +me +); + +1168  - +EINVAL +; + +1170 i( +id + < 0) + +1171  +id +; + +1173 +p +-> +pktq_ +[p-> +n_pktq_ +]. +ty + =ype; + +1174 +p +-> +pktq_ +[p-> +n_pktq_ +]. +id + = ( +ut32_t +) id; + +1175 +p +-> +n_pktq_ +++; + +1179 + } +} + +1182 + $r_pe_pktq_out +( +p_ms + * +p +, + +1183  +p_pe_ms + * +p +, + +1184 cڡ * +vue +) + +1186 cڡ * +xt + = +vue +; + +1187 if( +xt + = +NULL +) + +1188  - +EINVAL +; + +1189 * +d +; + +1190  +me +[ +APP_PARAM_NAME_SIZE +]; + +1191 +size_t + +me_n +; + +1193 * +xt + != '\0') { + +1194 +p_pktq_out_ty + +ty +; + +1195  +id +; + +1196 * +d_a +; + +1197 * +d_b +; + +1198 if( +xt + ! +NULL +) + +1199 +xt + = + `sk_whe_as +(next); + +1200 i(! +xt +) + +1203 +d_a + = + `rchr +( +xt +, ' '); + +1204 +d_b + = + `rchr +( +xt +, ' '); + +1206 i( +d_a + && (! +d_b +)) + +1207 +d + = +d_a +; + +1208 i((! +d_a +&& +d_b +) + +1209 +d + = +d_b +; + +1210 i( +d_a + && +d_b +) + +1211 +d + = + `RTE_MIN +( +d_a +, +d_b +); + +1213 +d + = +NULL +; + +1215 i(! +d +) + +1216 +me_n + = + ` +( +xt +); + +1218 +me_n + = +d + - +xt +; + +1220 i( +me_n + =0 ||ame_=( +me +)) + +1221  - +EINVAL +; + +1223 + `y +( +me +, +xt +, +me_n +); + +1224 +me +[ +me_n +] = '\0'; + +1225 +xt + + +me_n +; + +1226 i(* +xt + != '\0') + +1227 +xt +++; + +1228 i( + `vide_me +( +me +, "TXQ", 2) == 0) { + +1229 +ty + = +APP_PKTQ_OUT_HWQ +; + +1230 +id + = + `APP_PARAM_ADD +( +p +-> +hwq_out_ms +, +me +); + +1231 } i( + `vide_me +( +me +, "SWQ", 1) == 0) { + +1232 +ty + = +APP_PKTQ_OUT_SWQ +; + +1233 +id + = + `APP_PARAM_ADD +( +p +-> +swq_ms +, +me +); + +1234 } i( + `vide_me +( +me +, "TM", 1) == 0) { + +1235 +ty + = +APP_PKTQ_OUT_TM +; + +1236 +id + = + `APP_PARAM_ADD +( +p +-> +tm_ms +, +me +); + +1237 } i( + `vide_me +( +me +, "SINK", 1) == 0) { + +1238 +ty + = +APP_PKTQ_OUT_SINK +; + +1239 +id + = + `APP_PARAM_ADD +( +p +-> +sk_ms +, +me +); + +1241  - +EINVAL +; + +1243 i( +id + < 0) + +1244  +id +; + +1246 +p +-> +pktq_out +[p-> +n_pktq_out +]. +ty + =ype; + +1247 +p +-> +pktq_out +[p-> +n_pktq_out +]. +id + = id; + +1248 +p +-> +n_pktq_out +++; + +1252 + } +} + +1255 + $r_pe_msgq_ +( +p_ms + * +p +, + +1256  +p_pe_ms + * +p +, + +1257 cڡ * +vue +) + +1259 cڡ * +xt + = +vue +; + +1260 if( +xt + = +NULL +) + +1261  - +EINVAL +; + +1262 * +d +; + +1263  +me +[ +APP_PARAM_NAME_SIZE +]; + +1264 +size_t + +me_n +; + +1265 +ssize_t + +idx +; + +1267 * +xt + != '\0') { + +1268 * +d_a +; + +1269 * +d_b +; + +1270 if( +xt + ! +NULL +) + +1271 +xt + = + `sk_whe_as +(next); + +1272 i(! +xt +) + +1275 +d_a + = + `rchr +( +xt +, ' '); + +1276 +d_b + = + `rchr +( +xt +, ' '); + +1278 i( +d_a + && (! +d_b +)) + +1279 +d + = +d_a +; + +1280 i((! +d_a +&& +d_b +) + +1281 +d + = +d_b +; + +1282 i( +d_a + && +d_b +) + +1283 +d + = + `RTE_MIN +( +d_a +, +d_b +); + +1285 +d + = +NULL +; + +1287 i(! +d +) + +1288 +me_n + = + ` +( +xt +); + +1290 +me_n + = +d + - +xt +; + +1292 i( +me_n + =0 ||ame_=( +me +)) + +1293  - +EINVAL +; + +1295 + `y +( +me +, +xt +, +me_n +); + +1296 +me +[ +me_n +] = '\0'; + +1297 +xt + + +me_n +; + +1298 i(* +xt + != '\0') + +1299 +xt +++; + +1301 i( + `vide_me +( +me +, "MSGQ", 1) != 0) + +1302  - +EINVAL +; + +1304 +idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1305 i( +idx + < 0) + +1306  +idx +; + +1308 +p +-> +msgq_ +[p-> +n_msgq_ +] = +idx +; + +1309 +p +-> +n_msgq_ +++; + +1313 + } +} + +1316 + $r_pe_msgq_out +( +p_ms + * +p +, + +1317  +p_pe_ms + * +p +, + +1318 cڡ * +vue +) + +1320 cڡ * +xt + = +vue +; + +1321 if( +xt + = +NULL +) + +1322  - +EINVAL +; + +1323 * +d +; + +1324  +me +[ +APP_PARAM_NAME_SIZE +]; + +1325 +size_t + +me_n +; + +1326 +ssize_t + +idx +; + +1328 * +xt + != '\0') { + +1329 * +d_a +; + +1330 * +d_b +; + +1331 if( +xt + ! +NULL +) + +1332 +xt + = + `sk_whe_as +(next); + +1333 i(! +xt +) + +1336 +d_a + = + `rchr +( +xt +, ' '); + +1337 +d_b + = + `rchr +( +xt +, ' '); + +1339 i( +d_a + && (! +d_b +)) + +1340 +d + = +d_a +; + +1341 i((! +d_a +&& +d_b +) + +1342 +d + = +d_b +; + +1343 i( +d_a + && +d_b +) + +1344 +d + = + `RTE_MIN +( +d_a +, +d_b +); + +1346 +d + = +NULL +; + +1348 i(! +d +) + +1349 +me_n + = + ` +( +xt +); + +1351 +me_n + = +d + - +xt +; + +1353 i( +me_n + =0 ||ame_=( +me +)) + +1354  - +EINVAL +; + +1356 + `y +( +me +, +xt +, +me_n +); + +1357 +me +[ +me_n +] = '\0'; + +1358 +xt + + +me_n +; + +1359 i(* +xt + != '\0') + +1360 +xt +++; + +1362 i( + `vide_me +( +me +, "MSGQ", 1) != 0) + +1363  - +EINVAL +; + +1365 +idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1366 i( +idx + < 0) + +1367  +idx +; + +1369 +p +-> +msgq_out +[p-> +n_msgq_out +] = +idx +; + +1370 +p +-> +n_msgq_out +++; + +1374 + } +} + +1377 + $r_pe +( +p_ms + * +p +, + +1378 cڡ * +i_me +, + +1379  +e_cfgfe + * +cfg +) + +1381  +me +[ +CFG_NAME_LEN +]; + +1382  +p_pe_ms + * +m +; + +1383  +e_cfgfe_y + * +s +; + +1384 +ssize_t + +m_idx +; + +1385  +n_s +, +i +; + +1387 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1388 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1390 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1391 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1393 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1395 +m_idx + = + `APP_PARAM_ADD +( +p +-> +pe_ms +, +i_me +); + +1396 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +pe_ms +, +i_me +); + +1398 +m + = & +p +-> +pe_ms +[ +m_idx +]; + +1400  +i + = 0; i < +n_s +; i++) { + +1401  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1403 i( + `rcmp +( +t +-> +me +, "type") == 0) { + +1404  +w_size + = + `tf +( +m +-> +ty +, + `RTE_DIM +(param->type), + +1405 "%s", +t +-> +vue +); + +1407 + `PARSE_ERROR +((( +w_size + > 0) && + +1408 ( +w_size + < () + `RTE_DIM +( +m +-> +ty +))), + +1409 +i_me +, + +1410 +t +-> +me +); + +1414 i( + `rcmp +( +t +-> +me +, "core") == 0) { + +1415  +us + = + `r_pe_ce +( + +1416 & +m +-> +sock_id +, &m-> +ce_id +, + +1417 & +m +-> +hyr_th_id +, +t +-> +vue +); + +1419 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1420 +t +-> +me +); + +1424 i( + `rcmp +( +t +-> +me +, "pktq_in") == 0) { + +1425  +us + = + `r_pe_pktq_ +( +p +, +m +, + +1426 +t +-> +vue +); + +1428 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1429 +t +-> +me +); + +1433 i( + `rcmp +( +t +-> +me +, "pktq_out") == 0) { + +1434  +us + = + `r_pe_pktq_out +( +p +, +m +, + +1435 +t +-> +vue +); + +1437 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1438 +t +-> +me +); + +1442 i( + `rcmp +( +t +-> +me +, "msgq_in") == 0) { + +1443  +us + = + `r_pe_msgq_ +( +p +, +m +, + +1444 +t +-> +vue +); + +1446 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1447 +t +-> +me +); + +1451 i( + `rcmp +( +t +-> +me +, "msgq_out") == 0) { + +1452  +us + = + `r_pe_msgq_out +( +p +, +m +, + +1453 +t +-> +vue +); + +1455 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1456 +t +-> +me +); + +1460 i( + `rcmp +( +t +-> +me +, "timer_period") == 0) { + +1461  +us + = + `rr_ad_ut32 +( + +1462 & +m +-> +tim_riod +, + +1463 +t +-> +vue +); + +1465 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1466 +t +-> +me +); + +1470 i( + `rcmp +( +t +-> +me +, "pcap_file_rd") == 0) { + +1471  +us +; + +1473 #ide +RTE_PORT_PCAP + + +1474 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1477 +us + = + `r_pe_pp_sour +( +p +, + +1478 +m +, +t +-> +vue +, +NULL +); + +1480 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1481 +t +-> +me +); + +1485 i( + `rcmp +( +t +-> +me +, "pcap_bytes_rd_per_pkt") == 0) { + +1486  +us +; + +1488 #ide +RTE_PORT_PCAP + + +1489 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1492 +us + = + `r_pe_pp_sour +( +p +, + +1493 +m +, +NULL +, +t +-> +vue +); + +1495 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1496 +t +-> +me +); + +1500 i( + `rcmp +( +t +-> +me +, "pcap_file_wr") == 0) { + +1501  +us +; + +1503 #ide +RTE_PORT_PCAP + + +1504 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1507 +us + = + `r_pe_pp_sk +( +p +, +m +, + +1508 +t +-> +vue +, +NULL +); + +1510 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1511 +t +-> +me +); + +1515 i( + `rcmp +( +t +-> +me +, "pcap_n_pkt_wr") == 0) { + +1516  +us +; + +1518 #ide +RTE_PORT_PCAP + + +1519 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1522 +us + = + `r_pe_pp_sk +( +p +, +m +, + +1523 +NULL +, +t +-> +vue +); + +1525 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1526 +t +-> +me +); + +1531 + `APP_CHECK +(( +m +-> +n_gs + < +APP_MAX_PIPELINE_ARGS +), + +1533 "pecifdams", +i_me +); + +1535 +m +-> +gs_me +[m-> +n_gs +] = + `rdup +( +t +-> +me +); + +1536 +m +-> +gs_vue +[m-> +n_gs +] = + `rdup +( +t +-> +vue +); + +1538 + `APP_CHECK +(( +m +-> +gs_me +[m-> +n_gs +] ! +NULL +) && + +1539 ( +m +-> +gs_vue +[m-> +n_gs +] ! +NULL +), + +1542 +m +-> +n_gs +++; + +1545 +m +-> +rd + = 1; + +1547 + `tf +( +me +, ame), "MSGQ-REQ-%s", +i_me +); + +1548 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1549 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +me +); + +1550 +p +-> +msgq_ms +[ +m_idx +]. +u_sock_id + = +m +-> +sock_id +; + +1551 +m +-> +msgq_ +[m-> +n_msgq_ +++] = +m_idx +; + +1553 + `tf +( +me +, ame), "MSGQ-RSP-%s", +i_me +); + +1554 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1555 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +me +); + +1556 +p +-> +msgq_ms +[ +m_idx +]. +u_sock_id + = +m +-> +sock_id +; + +1557 +m +-> +msgq_out +[m-> +n_msgq_out +++] = +m_idx +; + +1559 + `tf +( +me +, ame), "MSGQ-REQ-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +1560 +m +-> +sock_id +, + +1561 +m +-> +ce_id +, + +1562 ( +m +-> +hyr_th_id +) ? "h" : ""); + +1563 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1564 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +me +); + +1565 +p +-> +msgq_ms +[ +m_idx +]. +u_sock_id + = +m +-> +sock_id +; + +1567 + `tf +( +me +, ame), "MSGQ-RSP-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +1568 +m +-> +sock_id +, + +1569 +m +-> +ce_id +, + +1570 ( +m +-> +hyr_th_id +) ? "h" : ""); + +1571 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +me +); + +1572 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +me +); + +1573 +p +-> +msgq_ms +[ +m_idx +]. +u_sock_id + = +m +-> +sock_id +; + +1575 + ` +( +s +); + +1576 + } +} + +1579 + $r_mempo +( +p_ms + * +p +, + +1580 cڡ * +i_me +, + +1581  +e_cfgfe + * +cfg +) + +1583  +p_mempo_ms + * +m +; + +1584  +e_cfgfe_y + * +s +; + +1585 +ssize_t + +m_idx +; + +1586  +n_s +, +i +; + +1588 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1589 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1591 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1592 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1594 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1596 +m_idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, +i_me +); + +1597 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +mempo_ms +, +i_me +); + +1599 +m + = & +p +-> +mempo_ms +[ +m_idx +]; + +1601  +i + = 0; i < +n_s +; i++) { + +1602  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1604 i( + `rcmp +( +t +-> +me +, "buffer_size") == 0) { + +1605  +us + = + `rr_ad_ut32 +( + +1606 & +m +-> +bufr_size +, +t +-> +vue +); + +1608 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1609 +t +-> +me +); + +1613 i( + `rcmp +( +t +-> +me +, "pool_size") == 0) { + +1614  +us + = + `rr_ad_ut32 +( + +1615 & +m +-> +po_size +, +t +-> +vue +); + +1617 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1618 +t +-> +me +); + +1622 i( + `rcmp +( +t +-> +me +, "cache_size") == 0) { + +1623  +us + = + `rr_ad_ut32 +( + +1624 & +m +-> +che_size +, +t +-> +vue +); + +1626 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1627 +t +-> +me +); + +1631 i( + `rcmp +( +t +-> +me +, "cpu") == 0) { + +1632  +us + = + `rr_ad_ut32 +( + +1633 & +m +-> +u_sock_id +, +t +-> +vue +); + +1635 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1636 +t +-> +me +); + +1641 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1644 +m +-> +rd + = 1; + +1646 + ` +( +s +); + +1647 + } +} + +1650 + $r_lk +( +p_ms + * +p +, + +1651 cڡ * +i_me +, + +1652  +e_cfgfe + * +cfg +) + +1654  +p_lk_ms + * +m +; + +1655  +e_cfgfe_y + * +s +; + +1656  +n_s +, +i +; + +1657  +pci_bdf_e + = 0; + +1658 +ssize_t + +m_idx +; + +1660 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1661 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1663 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1664 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1666 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1668 +m_idx + = + `APP_PARAM_ADD +( +p +-> +lk_ms +, +i_me +); + +1669 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +lk_ms +, +i_me +); + +1671 +m + = & +p +-> +lk_ms +[ +m_idx +]; + +1673  +i + = 0; i < +n_s +; i++) { + +1674  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1676 i( + `rcmp +( +t +-> +me +, "promisc") == 0) { + +1677  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +1679 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +1680 +t +-> +me +); + +1681 +m +-> +omisc + = +us +; + +1685 i( + `rcmp +( +t +-> +me +, "arp_q") == 0) { + +1686  +us + = + `rr_ad_ut32 +(& +m +-> +p_q +, + +1687 +t +-> +vue +); + +1689 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1690 +t +-> +me +); + +1694 i( + `rcmp +( +t +-> +me +, "tcp_syn_q") == 0) { + +1695  +us + = + `rr_ad_ut32 +( + +1696 & +m +-> +t_syn_q +, +t +-> +vue +); + +1698 + `PARSE_ERROR +(( +us + =0), +i_me +, +t +-> +me +); + +1702 i( + `rcmp +( +t +-> +me +, "ip_local_q") == 0) { + +1703  +us + = + `rr_ad_ut32 +( + +1704 & +m +-> +_lol_q +, +t +-> +vue +); + +1706 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1707 +t +-> +me +); + +1712 i( + `rcmp +( +t +-> +me +, "tcp_local_q") == 0) { + +1713  +us + = + `rr_ad_ut32 +( + +1714 & +m +-> +t_lol_q +, +t +-> +vue +); + +1716 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1717 +t +-> +me +); + +1721 i( + `rcmp +( +t +-> +me +, "udp_local_q") == 0) { + +1722  +us + = + `rr_ad_ut32 +( + +1723 & +m +-> +udp_lol_q +, +t +-> +vue +); + +1725 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1726 +t +-> +me +); + +1730 i( + `rcmp +( +t +-> +me +, "sctp_local_q") == 0) { + +1731  +us + = + `rr_ad_ut32 +( + +1732 & +m +-> +sp_lol_q +, +t +-> +vue +); + +1734 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1735 +t +-> +me +); + +1739 i( + `rcmp +( +t +-> +me +, "pci_bdf") == 0) { + +1740 + `PARSE_ERROR_DUPLICATE +(( +pci_bdf_e + == 0), + +1741 +i_me +, +t +-> +me +); + +1743 + `tf +( +m +-> +pci_bdf +, +APP_LINK_PCI_BDF_SIZE +, + +1744 "%s", +t +-> +vue +); + +1745 +pci_bdf_e + = 1; + +1750 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1754 i( +p +-> +pt_mask +) + +1755 + `PARSE_ERROR_MESSAGE +(( +pci_bdf_e + == 0), + +1756 +i_me +, "pci_bdf", + +1759 + `PARSE_ERROR_MESSAGE +(( +pci_bdf_e +), + +1760 +i_me +, "pci_bdf", + +1764 +m +-> +rd + = 1; + +1766 + ` +( +s +); + +1767 + } +} + +1770 + $r_rxq +( +p_ms + * +p +, + +1771 cڡ * +i_me +, + +1772  +e_cfgfe + * +cfg +) + +1774  +p_pktq_hwq__ms + * +m +; + +1775  +e_cfgfe_y + * +s +; + +1776  +n_s +, +i +; + +1777 +ssize_t + +m_idx +; + +1779 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1780 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1782 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1783 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1785 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1787 +m_idx + = + `APP_PARAM_ADD +( +p +-> +hwq__ms +, +i_me +); + +1788 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +hwq__ms +, +i_me +); + +1790 +m + = & +p +-> +hwq__ms +[ +m_idx +]; + +1792  +i + = 0; i < +n_s +; i++) { + +1793  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1795 i( + `rcmp +( +t +-> +me +, "mempool") == 0) { + +1796  +us + = + `vide_me +( +t +-> +vue +, + +1798 +ssize_t + +idx +; + +1800 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1801 +t +-> +me +); + +1802 +idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, + +1803 +t +-> +vue +); + +1804 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +mempo_ms +, + +1805 +i_me +); + +1806 +m +-> +mempo_id + = +idx +; + +1810 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +1811  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +1812 +t +-> +vue +); + +1814 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1815 +t +-> +me +); + +1819 i( + `rcmp +( +t +-> +me +, "burst") == 0) { + +1820  +us + = + `rr_ad_ut32 +(& +m +-> +bur +, + +1821 +t +-> +vue +); + +1823 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1824 +t +-> +me +); + +1829 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1832 +m +-> +rd + = 1; + +1834 + ` +( +s +); + +1835 + } +} + +1838 + $r_txq +( +p_ms + * +p +, + +1839 cڡ * +i_me +, + +1840  +e_cfgfe + * +cfg +) + +1842  +p_pktq_hwq_out_ms + * +m +; + +1843  +e_cfgfe_y + * +s +; + +1844  +n_s +, +i +; + +1845 +ssize_t + +m_idx +; + +1847 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1848 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1850 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1851 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1853 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1855 +m_idx + = + `APP_PARAM_ADD +( +p +-> +hwq_out_ms +, +i_me +); + +1856 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +hwq_out_ms +, +i_me +); + +1858 +m + = & +p +-> +hwq_out_ms +[ +m_idx +]; + +1860  +i + = 0; i < +n_s +; i++) { + +1861  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1863 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +1864  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +1865 +t +-> +vue +); + +1867 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1868 +t +-> +me +); + +1872 i( + `rcmp +( +t +-> +me +, "burst") == 0) { + +1873  +us + = + `rr_ad_ut32 +(& +m +-> +bur +, + +1874 +t +-> +vue +); + +1876 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1877 +t +-> +me +); + +1881 i( + `rcmp +( +t +-> +me +, "dropless") == 0) { + +1882  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +1885 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +1886 +t +-> +me +); + +1887 +m +-> +drss + = +us +; + +1892 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +1895 +m +-> +rd + = 1; + +1897 + ` +( +s +); + +1898 + } +} + +1901 + $r_swq +( +p_ms + * +p +, + +1902 cڡ * +i_me +, + +1903  +e_cfgfe + * +cfg +) + +1905  +p_pktq_swq_ms + * +m +; + +1906  +e_cfgfe_y + * +s +; + +1907  +n_s +, +i +; + +1908 +ut32_t + +mtu_e + = 0; + +1909 +ut32_t + +mada_size_e + = 0; + +1910 +ut32_t + +mempo_de_e + = 0; + +1911 +ut32_t + +mempo_de_e + = 0; + +1913 +ssize_t + +m_idx +; + +1915 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +1916 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +1918 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +1919 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +1921 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +1923 +m_idx + = + `APP_PARAM_ADD +( +p +-> +swq_ms +, +i_me +); + +1924 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +swq_ms +, +i_me +); + +1926 +m + = & +p +-> +swq_ms +[ +m_idx +]; + +1928  +i + = 0; i < +n_s +; i++) { + +1929  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +1931 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +1932  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +1933 +t +-> +vue +); + +1935 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1936 +t +-> +me +); + +1940 i( + `rcmp +( +t +-> +me +, "burst_read") == 0) { + +1941  +us + = + `rr_ad_ut32 +(& + +1942 +m +-> +bur_ad +, +t +-> +vue +); + +1944 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1945 +t +-> +me +); + +1949 i( + `rcmp +( +t +-> +me +, "burst_write") == 0) { + +1950  +us + = + `rr_ad_ut32 +( + +1951 & +m +-> +bur_wre +, +t +-> +vue +); + +1953 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1954 +t +-> +me +); + +1958 i( + `rcmp +( +t +-> +me +, "dropless") == 0) { + +1959  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +1961 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +1962 +t +-> +me +); + +1963 +m +-> +drss + = +us +; + +1967 i( + `rcmp +( +t +-> +me +, "n_retries") == 0) { + +1968  +us + = + `rr_ad_ut64 +(& +m +-> +n_s +, + +1969 +t +-> +vue +); + +1971 + `PARSE_ERROR +(( +us + =0), +i_me +, + +1972 +t +-> +me +); + +1976 i( + `rcmp +( +t +-> +me +, "cpu") == 0) { + +1977  +us + = + `rr_ad_ut32 +( + +1978 & +m +-> +u_sock_id +, +t +-> +vue +); + +1980 + `PARSE_ERROR +(( +us + =0), +i_me +, +t +-> +me +); + +1984 i( + `rcmp +( +t +-> +me +, "ipv4_frag") == 0) { + +1985  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +1987 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +1988 +t +-> +me +); + +1990 +m +-> +v4_ag + = +us +; + +1991 i( +m +-> +mtu + == 0) + +1992 +m +-> +mtu + = 1500; + +1997 i( + `rcmp +( +t +-> +me +, "ipv6_frag") == 0) { + +1998  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +2000 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +2001 +t +-> +me +); + +2002 +m +-> +v6_ag + = +us +; + +2003 i( +m +-> +mtu + == 0) + +2004 +m +-> +mtu + = 1320; + +2008 i( + `rcmp +( +t +-> +me +, "ipv4_ras") == 0) { + +2009  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +2011 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +2012 +t +-> +me +); + +2013 +m +-> +v4_s + = +us +; + +2017 i( + `rcmp +( +t +-> +me +, "ipv6_ras") == 0) { + +2018  +us + = + `rr_ad_g_bo +( +t +-> +vue +); + +2020 + `PARSE_ERROR +(( +us + !- +EINVAL +), +i_me +, + +2021 +t +-> +me +); + +2022 +m +-> +v6_s + = +us +; + +2026 i( + `rcmp +( +t +-> +me +, "mtu") == 0) { + +2027  +us + = + `rr_ad_ut32 +(& +m +-> +mtu +, + +2028 +t +-> +vue +); + +2030 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2031 +t +-> +me +); + +2032 +mtu_e + = 1; + +2036 i( + `rcmp +( +t +-> +me +, "metadata_size") == 0) { + +2037  +us + = + `rr_ad_ut32 +( + +2038 & +m +-> +mada_size +, +t +-> +vue +); + +2040 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2041 +t +-> +me +); + +2042 +mada_size_e + = 1; + +2046 i( + `rcmp +( +t +-> +me +, "mempool_direct") == 0) { + +2047  +us + = + `vide_me +( +t +-> +vue +, + +2049 +ssize_t + +idx +; + +2051 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2052 +t +-> +me +); + +2054 +idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, + +2055 +t +-> +vue +); + +2056 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +mempo_ms +, + +2057 +i_me +); + +2058 +m +-> +mempo_de_id + = +idx +; + +2059 +mempo_de_e + = 1; + +2063 i( + `rcmp +( +t +-> +me +, "mempool_indirect") == 0) { + +2064  +us + = + `vide_me +( +t +-> +vue +, + +2066 +ssize_t + +idx +; + +2068 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2069 +t +-> +me +); + +2070 +idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, + +2071 +t +-> +vue +); + +2072 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +mempo_ms +, + +2073 +i_me +); + +2074 +m +-> +mempo_de_id + = +idx +; + +2075 +mempo_de_e + = 1; + +2080 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2083 + `APP_CHECK +((( +mtu_e +) && + +2084 (( +m +-> +v4_ag + =1|| (m-> +v6_ag + == 1))), + +2087 +i_me +); + +2089 + `APP_CHECK +((( +mada_size_e +) && + +2090 (( +m +-> +v4_ag + =1|| (m-> +v6_ag + == 1))), + +2093 "nهowed", +i_me +); + +2095 + `APP_CHECK +((( +mempo_de_e +) && + +2096 (( +m +-> +v4_ag + =1|| (m-> +v6_ag + == 1))), + +2099 "nهowed", +i_me +); + +2101 + `APP_CHECK +((( +mempo_de_e +) && + +2102 (( +m +-> +v4_ag + =1|| (m-> +v6_ag + == 1))), + +2105 "nهowed", +i_me +); + +2107 +m +-> +rd + = 1; + +2109 + ` +( +s +); + +2110 + } +} + +2113 + $r_tm +( +p_ms + * +p +, + +2114 cڡ * +i_me +, + +2115  +e_cfgfe + * +cfg +) + +2117  +p_pktq_tm_ms + * +m +; + +2118  +e_cfgfe_y + * +s +; + +2119  +n_s +, +i +; + +2120 +ssize_t + +m_idx +; + +2122 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2123 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2125 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2126 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2128 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2130 +m_idx + = + `APP_PARAM_ADD +( +p +-> +tm_ms +, +i_me +); + +2131 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +tm_ms +, +i_me +); + +2133 +m + = & +p +-> +tm_ms +[ +m_idx +]; + +2135  +i + = 0; i < +n_s +; i++) { + +2136  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2138 i( + `rcmp +( +t +-> +me +, "cfg") == 0) { + +2139 +m +-> +fe_me + = + `rdup +( +t +-> +vue +); + +2140 + `PARSE_ERROR_MALLOC +( +m +-> +fe_me + ! +NULL +); + +2144 i( + `rcmp +( +t +-> +me +, "burst_read") == 0) { + +2145  +us + = + `rr_ad_ut32 +( + +2146 & +m +-> +bur_ad +, +t +-> +vue +); + +2148 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2149 +t +-> +me +); + +2153 i( + `rcmp +( +t +-> +me +, "burst_write") == 0) { + +2154  +us + = + `rr_ad_ut32 +( + +2155 & +m +-> +bur_wre +, +t +-> +vue +); + +2157 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2158 +t +-> +me +); + +2163 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2166 +m +-> +rd + = 1; + +2168 + ` +( +s +); + +2169 + } +} + +2172 + $r_sour +( +p_ms + * +p +, + +2173 cڡ * +i_me +, + +2174  +e_cfgfe + * +cfg +) + +2176  +p_pktq_sour_ms + * +m +; + +2177  +e_cfgfe_y + * +s +; + +2178  +n_s +, +i +; + +2179 +ssize_t + +m_idx +; + +2180 +ut32_t + +pp_fe_e + = 0; + +2181 +ut32_t + +pp_size_e + = 0; + +2183 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2184 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2186 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2187 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2189 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2191 +m_idx + = + `APP_PARAM_ADD +( +p +-> +sour_ms +, +i_me +); + +2192 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +sour_ms +, +i_me +); + +2194 +m + = & +p +-> +sour_ms +[ +m_idx +]; + +2196  +i + = 0; i < +n_s +; i++) { + +2197  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2199 i( + `rcmp +( +t +-> +me +, "mempool") == 0) { + +2200  +us + = + `vide_me +( +t +-> +vue +, + +2202 +ssize_t + +idx +; + +2204 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2205 +t +-> +me +); + +2206 +idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, + +2207 +t +-> +vue +); + +2208 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +mempo_ms +, + +2209 +i_me +); + +2210 +m +-> +mempo_id + = +idx +; + +2214 i( + `rcmp +( +t +-> +me +, "burst") == 0) { + +2215  +us + = + `rr_ad_ut32 +(& +m +-> +bur +, + +2216 +t +-> +vue +); + +2218 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2219 +t +-> +me +); + +2223 i( + `rcmp +( +t +-> +me +, "pcap_file_rd")) { + +2224 + `PARSE_ERROR_DUPLICATE +(( +pp_fe_e + == 0), + +2225 +i_me +, +t +-> +me +); + +2227 +m +-> +fe_me + = + `rdup +( +t +-> +vue +); + +2229 + `PARSE_ERROR_MALLOC +( +m +-> +fe_me + ! +NULL +); + +2230 +pp_fe_e + = 1; + +2235 i( + `rcmp +( +t +-> +me +, "pcap_bytes_rd_per_pkt") == 0) { + +2236  +us +; + +2238 + `PARSE_ERROR_DUPLICATE +(( +pp_size_e + == 0), + +2239 +i_me +, +t +-> +me +); + +2241 +us + = + `rr_ad_ut32 +( + +2242 & +m +-> +n_bys_r_pkt +, +t +-> +vue +); + +2244 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2245 +t +-> +me +); + +2246 +pp_size_e + = 1; + +2252 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2255 +m +-> +rd + = 1; + +2257 + ` +( +s +); + +2258 + } +} + +2261 + $r_sk +( +p_ms + * +p +, + +2262 cڡ * +i_me +, + +2263  +e_cfgfe + * +cfg +) + +2265  +p_pktq_sk_ms + * +m +; + +2266  +e_cfgfe_y + * +s +; + +2267  +n_s +, +i +; + +2268 +ssize_t + +m_idx +; + +2269 +ut32_t + +pp_fe_e + = 0; + +2270 +ut32_t + +pp_n_pkt_e + = 0; + +2272 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2273 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2275 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2276 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2278 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2280 +m_idx + = + `APP_PARAM_ADD +( +p +-> +sk_ms +, +i_me +); + +2281 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +sk_ms +, +i_me +); + +2283 +m + = & +p +-> +sk_ms +[ +m_idx +]; + +2285  +i + = 0; i < +n_s +; i++) { + +2286  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2288 i( + `rcmp +( +t +-> +me +, "pcap_file_wr")) { + +2289 + `PARSE_ERROR_DUPLICATE +(( +pp_fe_e + == 0), + +2290 +i_me +, +t +-> +me +); + +2292 +m +-> +fe_me + = + `rdup +( +t +-> +vue +); + +2294 + `PARSE_ERROR_MALLOC +(( +m +-> +fe_me + ! +NULL +)); + +2299 i( + `rcmp +( +t +-> +me +, "pcap_n_pkt_wr")) { + +2300  +us +; + +2302 + `PARSE_ERROR_DUPLICATE +(( +pp_n_pkt_e + == 0), + +2303 +i_me +, +t +-> +me +); + +2305 +us + = + `rr_ad_ut32 +( + +2306 & +m +-> +n_pkts_to_dump +, +t +-> +vue +); + +2308 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2309 +t +-> +me +); + +2315 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2318 +m +-> +rd + = 1; + +2320 + ` +( +s +); + +2321 + } +} + +2324 + $r_msgq_q_pe +( +p_ms + * +p +, + +2325 cڡ * +i_me +, + +2326  +e_cfgfe + * +cfg +) + +2328  +p_msgq_ms + * +m +; + +2329  +e_cfgfe_y + * +s +; + +2330  +n_s +, +i +; + +2331 +ssize_t + +m_idx +; + +2333 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2334 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2336 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2337 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2339 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2341 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +i_me +); + +2342 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +i_me +); + +2344 +m + = & +p +-> +msgq_ms +[ +m_idx +]; + +2346  +i + = 0; i < +n_s +; i++) { + +2347  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2349 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +2350  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +2351 +t +-> +vue +); + +2353 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2354 +t +-> +me +); + +2359 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2362 +m +-> +rd + = 1; + +2363 + ` +( +s +); + +2364 + } +} + +2367 + $r_msgq_r_pe +( +p_ms + * +p +, + +2368 cڡ * +i_me +, + +2369  +e_cfgfe + * +cfg +) + +2371  +p_msgq_ms + * +m +; + +2372  +e_cfgfe_y + * +s +; + +2373  +n_s +, +i +; + +2374 +ssize_t + +m_idx +; + +2376 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2377 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2379 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2380 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2382 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2384 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +i_me +); + +2385 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +i_me +); + +2387 +m + = & +p +-> +msgq_ms +[ +m_idx +]; + +2389  +i + = 0; i < +n_s +; i++) { + +2390  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2392 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +2393  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +2394 +t +-> +vue +); + +2396 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2397 +t +-> +me +); + +2402 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2405 +m +-> +rd + = 1; + +2407 + ` +( +s +); + +2408 + } +} + +2411 + $r_msgq +( +p_ms + * +p +, + +2412 cڡ * +i_me +, + +2413  +e_cfgfe + * +cfg +) + +2415  +p_msgq_ms + * +m +; + +2416  +e_cfgfe_y + * +s +; + +2417  +n_s +, +i +; + +2418 +ssize_t + +m_idx +; + +2420 +n_s + = + `e_cfgfe_i_num_s +( +cfg +, +i_me +); + +2421 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +i_me +); + +2423 +s + = + `mloc +( +n_s + * ( +e_cfgfe_y +)); + +2424 + `PARSE_ERROR_MALLOC +( +s + ! +NULL +); + +2426 + `e_cfgfe_i_s +( +cfg +, +i_me +, +s +, +n_s +); + +2428 +m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_ms +, +i_me +); + +2429 + `PARSER_PARAM_ADD_CHECK +( +m_idx +, +p +-> +msgq_ms +, +i_me +); + +2431 +m + = & +p +-> +msgq_ms +[ +m_idx +]; + +2433  +i + = 0; i < +n_s +; i++) { + +2434  +e_cfgfe_y + * +t + = & +s +[ +i +]; + +2436 i( + `rcmp +( +t +-> +me +, "size") == 0) { + +2437  +us + = + `rr_ad_ut32 +(& +m +-> +size +, + +2438 +t +-> +vue +); + +2440 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2441 +t +-> +me +); + +2445 i( + `rcmp +( +t +-> +me +, "cpu") == 0) { + +2446  +us + = + `rr_ad_ut32 +( + +2447 & +m +-> +u_sock_id +, +t +-> +vue +); + +2449 + `PARSE_ERROR +(( +us + =0), +i_me +, + +2450 +t +-> +me +); + +2455 + `PARSE_ERROR_INVALID +(0, +i_me +, +t +-> +me +); + +2458 +m +-> +rd + = 1; + +2460 + ` +( +s +); + +2461 + } +} + +2463 (* + tcfig_i_ld +)( + tp_ms + * + tp +, + +2464 cڡ * + ti_me +, + +2465  + te_cfgfe + * + tcfg +); + +2467  + scfig_i + { + +2468 cڡ  +efix +[ +CFG_NAME_LEN +]; + +2469  +numbs +; + +2470 +cfig_i_ld + +ld +; + +2473 cڡ  +cfig_i + +cfg_fe_scheme +[] = { + +2474 {"EAL", 0, +r_l +}, + +2475 {"PIPELINE", 1, +r_pe +}, + +2476 {"MEMPOOL", 1, +r_mempo +}, + +2477 {"LINK", 1, +r_lk +}, + +2478 {"RXQ", 2, +r_rxq +}, + +2479 {"TXQ", 2, +r_txq +}, + +2480 {"SWQ", 1, +r_swq +}, + +2481 {"TM", 1, +r_tm +}, + +2482 {"SOURCE", 1, +r_sour +}, + +2483 {"SINK", 1, +r_sk +}, + +2484 {"MSGQ-REQ-PIPELINE", 1, +r_msgq_q_pe +}, + +2485 {"MSGQ-RSP-PIPELINE", 1, +r_msgq_r_pe +}, + +2486 {"MSGQ", 1, +r_msgq +}, + +2487 + } +}; + +2490 + $_imic_mempos +( +p_ms + * +p +) + +2492 +ssize_t + +idx +; + +2494 +idx + = + `APP_PARAM_ADD +( +p +-> +mempo_ms +, "MEMPOOL0"); + +2495 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +mempo_ms +, "start-up"); + +2496 + } +} + +2499 + $_imic_lks_om_pt_mask +( +p_ms + * +p +, + +2500 +ut64_t + +pt_mask +) + +2502 +ut32_t + +pmd_id +, +lk_id +; + +2504 +lk_id + = 0; + +2505  +pmd_id + = 0;md_id < +RTE_MAX_ETHPORTS +;md_id++) { + +2506  +me +[ +APP_PARAM_NAME_SIZE +]; + +2507 +ssize_t + +idx +; + +2509 i(( +pt_mask + & (1LLU << +pmd_id +)) == 0) + +2512 + `tf +( +me +, ame), "LINK%" +PRIu32 +, +lk_id +); + +2513 +idx + = + `APP_PARAM_ADD +( +p +-> +lk_ms +, +me +); + +2514 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +lk_ms +, +me +); + +2516 +p +-> +lk_ms +[ +idx +]. +pmd_id + =md_id; + +2517 +lk_id +++; + +2519 + } +} + +2522 + $assign_lk_pmd_id_om_pci_bdf +( +p_ms + * +p +) + +2524 +ut32_t + +i +; + +2526  +i + = 0; i < +p +-> +n_lks +; i++) { + +2527  +p_lk_ms + * +lk + = & +p +-> +lk_ms +[ +i +]; + +2529 +lk +-> +pmd_id + = +i +; + +2531 + } +} + +2534 + $p_cfig_r +( +p_ms + * +p +, cڡ * +fe_me +) + +2536  +e_cfgfe + * +cfg +; + +2537 ** +i_mes +; + +2538  +i +, +j +, +_cou +; + +2541 + `_imic_mempos +( +p +); + +2544 i( +p +-> +pt_mask +) + +2545 + `_imic_lks_om_pt_mask +( +p +,-> +pt_mask +); + +2548 +cfg + = + `e_cfgfe_ld +( +fe_me +, 0); + +2549 + `APP_CHECK +(( +cfg + ! +NULL +), "Parserror: Unableooad config " + +2550 "f%s", +fe_me +); + +2552 +_cou + = + `e_cfgfe_num_is +( +cfg +, +NULL +, 0); + +2553 + `APP_CHECK +(( +_cou + > 0), "Parserror:umber of sections " + +2554 " f\"%s\"u %d", +fe_me +, + +2555 +_cou +); + +2557 +i_mes + = + `mloc +( +_cou + * (*)); + +2558 + `PARSE_ERROR_MALLOC +( +i_mes + ! +NULL +); + +2560  +i + = 0; i < +_cou +; i++) + +2561 +i_mes +[ +i +] = + `mloc +( +CFG_NAME_LEN +); + +2563 + `e_cfgfe_is +( +cfg +, +i_mes +, +_cou +); + +2565  +i + = 0; i < +_cou +; i++) { + +2566 cڡ  +cfig_i + * +sch_s +; + +2567  +n +, +cfg_me_n +; + +2569 +cfg_me_n + = + ` +( +i_mes +[ +i +]); + +2572  +j + = 0; j < () + `RTE_DIM +( +cfg_fe_scheme +); j++) { + +2573 +sch_s + = & +cfg_fe_scheme +[ +j +]; + +2574 +n + = + ` +( +sch_s +-> +efix +); + +2576 i( +cfg_me_n + < +n +) + +2585 i(( +i_mes +[ +i +][ +n +] != '\0') && + +2586 ! + `isdig +( +i_mes +[ +i +][ +n +])) + +2589 i( + `cmp +( +sch_s +-> +efix +, +i_mes +[ +i +], +n +) == 0) + +2593 + `APP_CHECK +( +j + < () + `RTE_DIM +( +cfg_fe_scheme +), + +2595 +i_mes +[ +i +]); + +2597 + `APP_CHECK +( + `vide_me +( +i_mes +[ +i +], + +2598 +sch_s +-> +efix +, + +2599 +sch_s +-> +numbs +) == 0, + +2601 +i_mes +[ +i +]); + +2603 +sch_s +-> + `ld +( +p +, +i_mes +[ +i +], +cfg +); + +2606  +i + = 0; i < +_cou +; i++) + +2607 + ` +( +i_mes +[ +i +]); + +2609 + ` +( +i_mes +); + +2611 + `e_cfgfe_o +( +cfg +); + +2613 + `APP_PARAM_COUNT +( +p +-> +mempo_ms +,-> +n_mempos +); + +2614 + `APP_PARAM_COUNT +( +p +-> +lk_ms +,-> +n_lks +); + +2615 + `APP_PARAM_COUNT +( +p +-> +hwq__ms +,-> +n_pktq_hwq_ +); + +2616 + `APP_PARAM_COUNT +( +p +-> +hwq_out_ms +,-> +n_pktq_hwq_out +); + +2617 + `APP_PARAM_COUNT +( +p +-> +swq_ms +,-> +n_pktq_swq +); + +2618 + `APP_PARAM_COUNT +( +p +-> +tm_ms +,-> +n_pktq_tm +); + +2619 + `APP_PARAM_COUNT +( +p +-> +sour_ms +,-> +n_pktq_sour +); + +2620 + `APP_PARAM_COUNT +( +p +-> +sk_ms +,-> +n_pktq_sk +); + +2621 + `APP_PARAM_COUNT +( +p +-> +msgq_ms +,-> +n_msgq +); + +2622 + `APP_PARAM_COUNT +( +p +-> +pe_ms +,-> +n_pes +); + +2624 #ifde +RTE_PORT_PCAP + + +2625  +i + = 0; i < () +p +-> +n_pktq_sour +; i++) { + +2626  +p_pktq_sour_ms + * +p + = & +p +-> +sour_ms +[ +i +]; + +2628 + `APP_CHECK +(( +p +-> +fe_me +), "Parserror: missing " + +2630 +p +-> +me +); + +2633  +i + = 0; i < () +p +-> +n_pktq_sour +; i++) { + +2634  +p_pktq_sour_ms + * +p + = & +p +-> +sour_ms +[ +i +]; + +2636 + `APP_CHECK +((! +p +-> +fe_me +), "Parserror: invalid field " + +2637 "\"pp_fe_rd\" f \"%s\"", +p +-> +me +); + +2641 i( +p +-> +pt_mask + == 0) + +2642 + `assign_lk_pmd_id_om_pci_bdf +( +p +); + +2645 + `p_cfig_ve +( +p +,-> +ouut_fe +); + +2648 + `p_cfig_r_tm +( +p +); + +2651 + } +} + +2654 + $ve_l_ms +( +p_ms + * +p +, +FILE + * +f +) + +2656  +p_l_ms + * +p + = & +p +-> +l_ms +; + +2657 +ut32_t + +i +; + +2659 + `rtf +( +f +, "[EAL]\n"); + +2661 i( +p +-> +cem +) + +2662 + `rtf +( +f +, "%%s\n", "lces", +p +-> +cem +); + +2664 i( +p +-> +ma_lce_e +) + +2665 + `rtf +( +f +, "%%" +PRIu32 + "\n", + +2666 "ma_lce", +p +-> +ma_lce +); + +2668 + `rtf +( +f +, "%%" +PRIu32 + "\n", "n", +p +-> +chls +); + +2670 i( +p +-> +memy_e +) + +2671 + `rtf +( +f +, "%%" +PRIu32 + "\n", "m", +p +-> +memy +); + +2673 i( +p +-> +nks_e +) + +2674 + `rtf +( +f +, "%%" +PRIu32 + "\n", "r", +p +-> +nks +); + +2676  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2677 i( +p +-> +pci_bckli +[ +i +] = +NULL +) + +2680 + `rtf +( +f +, "%s = %s\n", "pci_blacklist", + +2681 +p +-> +pci_bckli +[ +i +]); + +2684  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2685 i( +p +-> +pci_whi +[ +i +] = +NULL +) + +2688 + `rtf +( +f +, "%s = %s\n", "pci_whitelist", + +2689 +p +-> +pci_whi +[ +i +]); + +2692  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2693 i( +p +-> +vdev +[ +i +] = +NULL +) + +2696 + `rtf +( +f +, "%s = %s\n", "vdev", + +2697 +p +-> +vdev +[ +i +]); + +2700 i( +p +-> +vmwe_tsc_m_e +) + +2701 + `rtf +( +f +, "%s = %s\n", "vmware_tsc_map", + +2702 ( +p +-> +vmwe_tsc_m +) ? "yes" : "no"); + +2704 i( +p +-> +oc_ty +) + +2705 + `rtf +( +f +, "%%s\n", "oc_ty", +p +-> +oc_ty +); + +2707 i( +p +-> +syog +) + +2708 + `rtf +( +f +, "%%s\n", "syog", +p +-> +syog +); + +2710 i( +p +-> +log_v_e +) + +2711 + `rtf +( +f +, "%%" +PRIu32 + "\n", "log_v", +p +-> +log_v +); + +2713 i( +p +-> +vsi_e +) + +2714 + `rtf +( +f +, "%%s\n", "v", ( +p +-> +vsi +) ? "yes" : "no"); + +2716 i( +p +-> +hp_e +) + +2717 + `rtf +( +f +, "%%s\n", "hp", ( +p +-> +hp +) ? "yes" : "no"); + +2719 i( +p +-> +no_huge_e +) + +2720 + `rtf +( +f +, "%%s\n", "no_huge", ( +p +-> +no_huge +) ? "yes" : "no"); + +2722 i( +p +-> +no_pci_e +) + +2723 + `rtf +( +f +, "%%s\n", "no_pci", ( +p +-> +no_pci +) ? "yes" : "no"); + +2725 i( +p +-> +no_ht_e +) + +2726 + `rtf +( +f +, "%%s\n", "no_ht", ( +p +-> +no_ht +) ? "yes" : "no"); + +2728 i( +p +-> +no_shcf_e +) + +2729 + `rtf +( +f +, "%s = %s\n", "no_shconf", + +2730 ( +p +-> +no_shcf +) ? "yes" : "no"); + +2732 i( +p +-> +add_driv +) + +2733 + `rtf +( +f +, "%%s\n", "d", +p +-> +add_driv +); + +2735 i( +p +-> +sock_mem +) + +2736 + `rtf +( +f +, "%%s\n", "sock_mem", +p +-> +sock_mem +); + +2738 i( +p +-> +huge_d +) + +2739 + `rtf +( +f +, "%%s\n", "huge_d", +p +-> +huge_d +); + +2741 i( +p +-> +fe_efix +) + +2742 + `rtf +( +f +, "%%s\n", "fe_efix", +p +-> +fe_efix +); + +2744 i( +p +-> +ba_vddr +) + +2745 + `rtf +( +f +, "%%s\n", "ba_vddr", +p +-> +ba_vddr +); + +2747 i( +p +-> +_uio_dev_e +) + +2748 + `rtf +( +f +, "%s = %s\n", "create_uio_dev", + +2749 ( +p +-> +_uio_dev +) ? "yes" : "no"); + +2751 i( +p +-> +vfio_ +) + +2752 + `rtf +( +f +, "%%s\n", "vfio_", +p +-> +vfio_ +); + +2754 i( +p +-> +x_dom0_e +) + +2755 + `rtf +( +f +, "%s = %s\n", "xen_dom0", + +2756 ( +p +-> +x_dom0 +) ? "yes" : "no"); + +2758 + `utc +('\n', +f +); + +2759 + } +} + +2762 + $ve_mempo_ms +( +p_ms + * +p +, +FILE + * +f +) + +2764  +p_mempo_ms + * +p +; + +2765 +size_t + +i +, +cou +; + +2767 +cou + = + `RTE_DIM +( +p +-> +mempo_ms +); + +2768  +i + = 0; i < +cou +; i++) { + +2769 +p + = & +p +-> +mempo_ms +[ +i +]; + +2770 i(! + `APP_PARAM_VALID +( +p +)) + +2773 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2774 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bufr_size", +p +-> +bufr_size +); + +2775 + `rtf +( +f +, "%%" +PRIu32 + "\n", "po_size", +p +-> +po_size +); + +2776 + `rtf +( +f +, "%%" +PRIu32 + "\n", "che_size", +p +-> +che_size +); + +2777 + `rtf +( +f +, "%%" +PRIu32 + "\n", "u", +p +-> +u_sock_id +); + +2779 + `utc +('\n', +f +); + +2781 + } +} + +2784 + $ve_lks_ms +( +p_ms + * +p +, +FILE + * +f +) + +2786  +p_lk_ms + * +p +; + +2787 +size_t + +i +, +cou +; + +2789 +cou + = + `RTE_DIM +( +p +-> +lk_ms +); + +2790  +i + = 0; i < +cou +; i++) { + +2791 +p + = & +p +-> +lk_ms +[ +i +]; + +2792 i(! + `APP_PARAM_VALID +( +p +)) + +2795 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2796 + `rtf +( +f +, "; %%" +PRIu32 + "\n", "pmd_id", +p +-> +pmd_id +); + +2797 + `rtf +( +f +, "%%s\n", "omisc", +p +-> +omisc + ? "yes" : "no"); + +2798 + `rtf +( +f +, "%%" +PRIu32 + "\n", "p_q", +p +-> +p_q +); + +2799 + `rtf +( +f +, "%%" +PRIu32 + "\n", "tcp_syn_q", + +2800 +p +-> +t_syn_q +); + +2801 + `rtf +( +f +, "%%" +PRIu32 + "\n", "_lol_q", +p +-> +_lol_q +); + +2802 + `rtf +( +f +, "%%" +PRIu32 + "\n", "t_lol_q", +p +-> +t_lol_q +); + +2803 + `rtf +( +f +, "%%" +PRIu32 + "\n", "udp_lol_q", +p +-> +udp_lol_q +); + +2804 + `rtf +( +f +, "%%" +PRIu32 + "\n", "sctp_local_q", + +2805 +p +-> +sp_lol_q +); + +2807 i( + ` +( +p +-> +pci_bdf +)) + +2808 + `rtf +( +f +, "%%s\n", "pci_bdf", +p +-> +pci_bdf +); + +2810 + `utc +('\n', +f +); + +2812 + } +} + +2815 + $ve_rxq_ms +( +p_ms + * +p +, +FILE + * +f +) + +2817  +p_pktq_hwq__ms + * +p +; + +2818 +size_t + +i +, +cou +; + +2820 +cou + = + `RTE_DIM +( +p +-> +hwq__ms +); + +2821  +i + = 0; i < +cou +; i++) { + +2822 +p + = & +p +-> +hwq__ms +[ +i +]; + +2823 i(! + `APP_PARAM_VALID +( +p +)) + +2826 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2827 + `rtf +( +f +, "%s = %s\n", + +2829 +p +-> +mempo_ms +[ +p +-> +mempo_id +]. +me +); + +2830 + `rtf +( +f +, "%%" +PRIu32 + "\n", "size", +p +-> +size +); + +2831 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur", +p +-> +bur +); + +2833 + `utc +('\n', +f +); + +2835 + } +} + +2838 + $ve_txq_ms +( +p_ms + * +p +, +FILE + * +f +) + +2840  +p_pktq_hwq_out_ms + * +p +; + +2841 +size_t + +i +, +cou +; + +2843 +cou + = + `RTE_DIM +( +p +-> +hwq_out_ms +); + +2844  +i + = 0; i < +cou +; i++) { + +2845 +p + = & +p +-> +hwq_out_ms +[ +i +]; + +2846 i(! + `APP_PARAM_VALID +( +p +)) + +2849 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2850 + `rtf +( +f +, "%%" +PRIu32 + "\n", "size", +p +-> +size +); + +2851 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur", +p +-> +bur +); + +2852 + `rtf +( +f +, "%s = %s\n", + +2854 +p +-> +drss + ? "yes" : "no"); + +2856 + `utc +('\n', +f +); + +2858 + } +} + +2861 + $ve_swq_ms +( +p_ms + * +p +, +FILE + * +f +) + +2863  +p_pktq_swq_ms + * +p +; + +2864 +size_t + +i +, +cou +; + +2866 +cou + = + `RTE_DIM +( +p +-> +swq_ms +); + +2867  +i + = 0; i < +cou +; i++) { + +2868 +p + = & +p +-> +swq_ms +[ +i +]; + +2869 i(! + `APP_PARAM_VALID +( +p +)) + +2872 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2873 + `rtf +( +f +, "%%" +PRIu32 + "\n", "size", +p +-> +size +); + +2874 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur_ad", +p +-> +bur_ad +); + +2875 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur_wre", +p +-> +bur_wre +); + +2876 + `rtf +( +f +, "%%s\n", "drss", +p +-> +drss + ? "yes" : "no"); + +2877 + `rtf +( +f +, "%%" +PRIu64 + "\n", "n_s", +p +-> +n_s +); + +2878 + `rtf +( +f +, "%%" +PRIu32 + "\n", "u", +p +-> +u_sock_id +); + +2879 + `rtf +( +f +, "%%s\n", "v4_ag", +p +-> +v4_ag + ? "yes" : "no"); + +2880 + `rtf +( +f +, "%%s\n", "v6_ag", +p +-> +v6_ag + ? "yes" : "no"); + +2881 + `rtf +( +f +, "%%s\n", "v4_s", +p +-> +v4_s + ? "yes" : "no"); + +2882 + `rtf +( +f +, "%%s\n", "v6_s", +p +-> +v6_s + ? "yes" : "no"); + +2883 i(( +p +-> +v4_ag + =1|| (p-> +v6_ag + == 1)) { + +2884 + `rtf +( +f +, "%%" +PRIu32 + "\n", "mtu", +p +-> +mtu +); + +2885 + `rtf +( +f +, "%%" +PRIu32 + "\n", "mada_size", +p +-> +mada_size +); + +2886 + `rtf +( +f +, "%s = %s\n", + +2888 +p +-> +mempo_ms +[ +p +-> +mempo_de_id +]. +me +); + +2889 + `rtf +( +f +, "%s = %s\n", + +2891 +p +-> +mempo_ms +[ +p +-> +mempo_de_id +]. +me +); + +2894 + `utc +('\n', +f +); + +2896 + } +} + +2899 + $ve_tm_ms +( +p_ms + * +p +, +FILE + * +f +) + +2901  +p_pktq_tm_ms + * +p +; + +2902 +size_t + +i +, +cou +; + +2904 +cou + = + `RTE_DIM +( +p +-> +tm_ms +); + +2905  +i + = 0; i < +cou +; i++) { + +2906 +p + = & +p +-> +tm_ms +[ +i +]; + +2907 i(! + `APP_PARAM_VALID +( +p +)) + +2910 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2911 + `rtf +( +f +, "%%s\n", "cfg", +p +-> +fe_me +); + +2912 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur_ad", +p +-> +bur_ad +); + +2913 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur_wre", +p +-> +bur_wre +); + +2915 + `utc +('\n', +f +); + +2917 + } +} + +2920 + $ve_sour_ms +( +p_ms + * +p +, +FILE + * +f +) + +2922  +p_pktq_sour_ms + * +p +; + +2923 +size_t + +i +, +cou +; + +2925 +cou + = + `RTE_DIM +( +p +-> +sour_ms +); + +2926  +i + = 0; i < +cou +; i++) { + +2927 +p + = & +p +-> +sour_ms +[ +i +]; + +2928 i(! + `APP_PARAM_VALID +( +p +)) + +2931 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2932 + `rtf +( +f +, "%s = %s\n", + +2934 +p +-> +mempo_ms +[ +p +-> +mempo_id +]. +me +); + +2935 + `rtf +( +f +, "%%" +PRIu32 + "\n", "bur", +p +-> +bur +); + +2936 + `rtf +( +f +, "%%s\n", "pp_fe_rd", +p +-> +fe_me +); + +2937 + `rtf +( +f +, "%%" +PRIu32 + "\n", "pcap_bytes_rd_per_pkt", + +2938 +p +-> +n_bys_r_pkt +); + +2939 + `utc +('\n', +f +); + +2941 + } +} + +2944 + $ve_sk_ms +( +p_ms + * +p +, +FILE + * +f +) + +2946  +p_pktq_sk_ms + * +p +; + +2947 +size_t + +i +, +cou +; + +2949 +cou + = + `RTE_DIM +( +p +-> +sk_ms +); + +2950  +i + = 0; i < +cou +; i++) { + +2951 +p + = & +p +-> +sk_ms +[ +i +]; + +2952 i(! + `APP_PARAM_VALID +( +p +)) + +2955 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2956 + `rtf +( +f +, "%%s\n", "pp_fe_wr", +p +-> +fe_me +); + +2957 + `rtf +( +f +, "%%" +PRIu32 + "\n", + +2958 "pp_n_pkt_wr", +p +-> +n_pkts_to_dump +); + +2959 + `utc +('\n', +f +); + +2961 + } +} + +2964 + $ve_msgq_ms +( +p_ms + * +p +, +FILE + * +f +) + +2966  +p_msgq_ms + * +p +; + +2967 +size_t + +i +, +cou +; + +2969 +cou + = + `RTE_DIM +( +p +-> +msgq_ms +); + +2970  +i + = 0; i < +cou +; i++) { + +2971 +p + = & +p +-> +msgq_ms +[ +i +]; + +2972 i(! + `APP_PARAM_VALID +( +p +)) + +2975 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2976 + `rtf +( +f +, "%%" +PRIu32 + "\n", "size", +p +-> +size +); + +2977 + `rtf +( +f +, "%%" +PRIu32 + "\n", "u", +p +-> +u_sock_id +); + +2979 + `utc +('\n', +f +); + +2981 + } +} + +2984 + $ve_pe_ms +( +p_ms + * +p +, +FILE + * +f +) + +2986 +size_t + +i +, +cou +; + +2988 +cou + = + `RTE_DIM +( +p +-> +pe_ms +); + +2989  +i + = 0; i < +cou +; i++) { + +2990  +p_pe_ms + * +p + = & +p +-> +pe_ms +[ +i +]; + +2992 i(! + `APP_PARAM_VALID +( +p +)) + +2996 + `rtf +( +f +, "[%s]\n", +p +-> +me +); + +2999 + `rtf +( +f +, "ty = %s\n", +p +-> +ty +); + +3002 + `rtf +( +f +, "cܐs%" +PRIu32 + "c%" PRIu32 "%s\n", + +3003 +p +-> +sock_id +, + +3004 +p +-> +ce_id +, + +3005 ( +p +-> +hyr_th_id +) ? "h" : ""); + +3008 i( +p +-> +n_pktq_ +) { + +3009 +ut32_t + +j +; + +3011 + `rtf +( +f +, "pktq_in ="); + +3012  +j + = 0; j < +p +-> +n_pktq_ +; j++) { + +3013  +p_pktq__ms + * + + = & +p +-> +pktq_ +[ +j +]; + +3014 * +me +; + +3016  + +-> +ty +) { + +3017  +APP_PKTQ_IN_HWQ +: + +3018 +me + = +p +-> +hwq__ms +[ + +-> +id +].name; + +3020  +APP_PKTQ_IN_SWQ +: + +3021 +me + = +p +-> +swq_ms +[ + +-> +id +].name; + +3023  +APP_PKTQ_IN_TM +: + +3024 +me + = +p +-> +tm_ms +[ + +-> +id +].name; + +3026  +APP_PKTQ_IN_SOURCE +: + +3027 +me + = +p +-> +sour_ms +[ + +-> +id +].name; + +3030 + `APP_CHECK +(0, "Systemrror " + +3035 + `rtf +( +f +, " %s", +me +); + +3037 + `rtf +( +f +, "\n"); + +3041 i( +p +-> +n_pktq_out +) { + +3042 +ut32_t + +j +; + +3044 + `rtf +( +f +, "pktq_out ="); + +3045  +j + = 0; j < +p +-> +n_pktq_out +; j++) { + +3046  +p_pktq_out_ms + * + + = + +3047 & +p +-> +pktq_out +[ +j +]; + +3048 * +me +; + +3050  + +-> +ty +) { + +3051  +APP_PKTQ_OUT_HWQ +: + +3052 +me + = +p +-> +hwq_out_ms +[ + +-> +id +].name; + +3054  +APP_PKTQ_OUT_SWQ +: + +3055 +me + = +p +-> +swq_ms +[ + +-> +id +].name; + +3057  +APP_PKTQ_OUT_TM +: + +3058 +me + = +p +-> +tm_ms +[ + +-> +id +].name; + +3060  +APP_PKTQ_OUT_SINK +: + +3061 +me + = +p +-> +sk_ms +[ + +-> +id +].name; + +3064 + `APP_CHECK +(0, "Systemrror " + +3069 + `rtf +( +f +, " %s", +me +); + +3071 + `rtf +( +f +, "\n"); + +3075 i( +p +-> +n_msgq_ +) { + +3076 +ut32_t + +j +; + +3078 + `rtf +( +f +, "msgq_in ="); + +3079  +j + = 0; j < +p +-> +n_msgq_ +; j++) { + +3080 +ut32_t + +id + = +p +-> +msgq_ +[ +j +]; + +3081 * +me + = +p +-> +msgq_ms +[ +id +].name; + +3083 + `rtf +( +f +, " %s", +me +); + +3085 + `rtf +( +f +, "\n"); + +3089 i( +p +-> +n_msgq_out +) { + +3090 +ut32_t + +j +; + +3092 + `rtf +( +f +, "msgq_out ="); + +3093  +j + = 0; j < +p +-> +n_msgq_out +; j++) { + +3094 +ut32_t + +id + = +p +-> +msgq_out +[ +j +]; + +3095 * +me + = +p +-> +msgq_ms +[ +id +].name; + +3097 + `rtf +( +f +, " %s", +me +); + +3099 + `rtf +( +f +, "\n"); + +3103 + `rtf +( +f +, "tim_riod = %" +PRIu32 + "\n", +p +-> +tim_riod +); + +3106 i( +p +-> +n_gs +) { + +3107 +ut32_t + +j +; + +3109  +j + = 0; j < +p +-> +n_gs +; j++) + +3110 + `rtf +( +f +, "%%s\n", +p +-> +gs_me +[ +j +], + +3111 +p +-> +gs_vue +[ +j +]); + +3114 + `rtf +( +f +, "\n"); + +3116 + } +} + +3119 + $p_cfig_ve +( +p_ms + * +p +, cڡ * +fe_me +) + +3121 +FILE + * +fe +; + +3122 * +me +, * +d_me +; + +3123  +us +; + +3125 +me + = + `rdup +( +fe_me +); + +3126 +d_me + = + `dme +( +me +); + +3127 +us + = + `acss +( +d_me +, +W_OK +); + +3128 + `APP_CHECK +(( +us + == 0), + +3130 "\"%s\"اvcfiguti\n", +d_me +); + +3132 +fe + = + `fݒ +( +fe_me +, "w"); + +3133 + `APP_CHECK +(( +fe + ! +NULL +), + +3135 +fe_me +); + +3137 + `ve_l_ms +( +p +, +fe +); + +3138 + `ve_pe_ms +( +p +, +fe +); + +3139 + `ve_mempo_ms +( +p +, +fe +); + +3140 + `ve_lks_ms +( +p +, +fe +); + +3141 + `ve_rxq_ms +( +p +, +fe +); + +3142 + `ve_txq_ms +( +p +, +fe +); + +3143 + `ve_swq_ms +( +p +, +fe +); + +3144 + `ve_tm_ms +( +p +, +fe +); + +3145 + `ve_sour_ms +( +p +, +fe +); + +3146 + `ve_sk_ms +( +p +, +fe +); + +3147 + `ve_msgq_ms +( +p +, +fe +); + +3149 + `fo +( +fe +); + +3150 + ` +( +me +); + +3151 + } +} + +3154 + $p_cfig_ +( +p_ms + * +p +) + +3156 +size_t + +i +; + +3158 + `memy +( +p +, & +p_ms_deu +, ( +p_ms +)); + +3160  +i + = 0; i < + `RTE_DIM +( +p +-> +mempo_ms +); i++) + +3161 + `memy +(& +p +-> +mempo_ms +[ +i +], + +3162 & +mempo_ms_deu +, + +3163 ( +p_mempo_ms +)); + +3165  +i + = 0; i < + `RTE_DIM +( +p +-> +lk_ms +); i++) + +3166 + `memy +(& +p +-> +lk_ms +[ +i +], + +3167 & +lk_ms_deu +, + +3168 ( +p_lk_ms +)); + +3170  +i + = 0; i < + `RTE_DIM +( +p +-> +hwq__ms +); i++) + +3171 + `memy +(& +p +-> +hwq__ms +[ +i +], + +3172 & +deu_hwq__ms +, + +3173 ( +deu_hwq__ms +)); + +3175  +i + = 0; i < + `RTE_DIM +( +p +-> +hwq_out_ms +); i++) + +3176 + `memy +(& +p +-> +hwq_out_ms +[ +i +], + +3177 & +deu_hwq_out_ms +, + +3178 ( +deu_hwq_out_ms +)); + +3180  +i + = 0; i < + `RTE_DIM +( +p +-> +swq_ms +); i++) + +3181 + `memy +(& +p +-> +swq_ms +[ +i +], + +3182 & +deu_swq_ms +, + +3183 ( +deu_swq_ms +)); + +3185  +i + = 0; i < + `RTE_DIM +( +p +-> +tm_ms +); i++) + +3186 + `memy +(& +p +-> +tm_ms +[ +i +], + +3187 & +deu_tm_ms +, + +3188 ( +deu_tm_ms +)); + +3190  +i + = 0; i < + `RTE_DIM +( +p +-> +sour_ms +); i++) + +3191 + `memy +(& +p +-> +sour_ms +[ +i +], + +3192 & +deu_sour_ms +, + +3193 ( +deu_sour_ms +)); + +3195  +i + = 0; i < + `RTE_DIM +( +p +-> +sk_ms +); i++) + +3196 + `memy +(& +p +-> +sk_ms +[ +i +], + +3197 & +deu_sk_ms +, + +3198 ( +deu_sk_ms +)); + +3200  +i + = 0; i < + `RTE_DIM +( +p +-> +msgq_ms +); i++) + +3201 + `memy +(& +p +-> +msgq_ms +[ +i +], + +3202 & +deu_msgq_ms +, + +3203 ( +deu_msgq_ms +)); + +3205  +i + = 0; i < + `RTE_DIM +( +p +-> +pe_ms +); i++) + +3206 + `memy +(& +p +-> +pe_ms +[ +i +], + +3207 & +deu_pe_ms +, + +3208 ( +deu_pe_ms +)); + +3211 + } +} + +3214 + $famedup +(cڡ * +fame +, cڡ * +suffix +) + +3216 * +s + = + `mloc +( + ` +( +fame ++ sn( +suffix +) + 1); + +3218 i(! +s +) + +3219  +NULL +; + +3221 + `rtf +( +s +, "%s%s", +fame +, +suffix +); + +3222  +s +; + +3223 + } +} + +3226 + $p_cfig_gs +( +p_ms + * +p +,  +gc +, ** +gv +) + +3228 cڡ * +݊ame +; + +3229  +t +, +ti_dex +; + +3230  +f_e +, +s_e +, +p_e +, +l_e +; + +3231  +roc_e +, +roc_ms_e +, +dib_csum_e +; + +3232  +hwlb_e +; + +3233  +ow_d_e +; + +3234  +sd + = 0; + +3236  +ti + +lgts +[] = { + +3242 { +NULL +, 0, 0, 0 } + +3246 + `y +( +p +-> +p_me +, +gv +[0], +APP_APPNAME_SIZE + - 1); + +3248 +f_e + = 0; + +3249 +s_e + = 0; + +3250 +p_e + = 0; + +3251 +l_e + = 0; + +3252 +dib_csum_e + = 0; + +3253 +roc_e + = 0; + +3254 +roc_ms_e + = 0; + +3255 +p +-> +hd_csum_q + =1; + +3256 +hwlb_e + = 0; + +3257 +ow_d_e + = 0; + +3260 ( +t + = + `gt_lg +( +gc +, +gv +, "f:s:p:l:", +lgts +, + +3261 & +ti_dex +)! +EOF +) + +3262  +t +) { + +3264 i( +f_e +) + +3265 + `e_nic +("Error: Config file isrovided " + +3267 +f_e + = 1; + +3269 i(! + ` +( +ݏrg +)) + +3270 + `e_nic +("Error: Config fileame isull\n"); + +3272 +p +-> +cfig_fe + = + `rdup +( +ݏrg +); + +3273 i( +p +-> +cfig_fe + = +NULL +) + +3274 + `e_nic +("Error: Memoryllocation failure\n"); + +3279 i( +s_e +) + +3280 + `e_nic +("Error: Script file isrovided " + +3282 +s_e + = 1; + +3284 i(! + ` +( +ݏrg +)) + +3285 + `e_nic +("Error: Script fileame isull\n"); + +3287 +p +-> +st_fe + = + `rdup +( +ݏrg +); + +3288 i( +p +-> +st_fe + = +NULL +) + +3289 + `e_nic +("Error: Memoryllocation failure\n"); + +3294 i( +p_e +) + +3295 + `e_nic +("Error: PORT_MASK isrovided " + +3297 +p_e + = 1; + +3299 i(( + `ssnf +( +ݏrg +, "%" +SCNx64 + "%n", & +p +-> +pt_mask +, + +3300 & +sd +) != 1) || + +3301 (( +size_t + +sd + ! + ` +( +ݏrg +))) + +3302 + `e_nic +("Error: PORT_MASK isot " + +3305 i( +p +-> +pt_mask + == 0) + +3306 + `e_nic +("Error: PORT_MASK isull\n"); + +3311 i( +l_e +) + +3312 + `e_nic +("Error: LOG_LEVEL isrovided " + +3314 +l_e + = 1; + +3316 i(( + `ssnf +( +ݏrg +, "%" +SCNu32 + "%n", & +p +-> +log_v +, + +3317 & +sd +) != 1) || + +3318 (( +size_t + +sd + ! + ` +( +ݏrg +)) || + +3319 ( +p +-> +log_v + > +APP_LOG_LEVELS +)) + +3320 + `e_nic +("Error: LOG_LEVEL invalid value\n"); + +3325 +݊ame + = +lgts +[ +ti_dex +]. +me +; + +3327 i( + `rcmp +( +݊ame +, "hwlb") == 0) { + +3328 i( +hwlb_e +) + +3329 + `e_nic +("Error: hwlbrgument " + +3331 +hwlb_e + = 1; + +3332 + `tf +(" HWLB is configured\n"); + +3334 +p +-> +n_hwlb_q + = + `oi +( +ݏrg +); + +3336 if(! +p +-> +n_hwlb_q +) + +3337 + `e_nic +("HWQs for HWLB must betleast 1\n"); + +3339 + `tf +("NoHWQf HWLB %d\n", +p +-> +n_hwlb_q +); + +3340 +ab_hwlb + = 1; + +3344 i( + `rcmp +( +݊ame +, "flow_dir") == 0) { + +3345 i( +ow_d_e +) + +3346 + `e_nic +("Error: flow_dirrgument " + +3348 +ow_d_e + = 1; + +3349 + `tf +(" FLOW DIR is configured\n"); + +3351 +ab_ow_d + = 1; + +3356 i( + `rcmp +( +݊ame +, "disable-hw-csum") == 0) { + +3357 i( +dib_csum_e +) + +3358 + `e_nic +("Error: disable-hw-csumrgument " + +3361 + `tf +("Disable TCP/UDP HW checksumi\n"); + +3362 +p +-> +hd_csum_q + = 0; + +3363 +dib_csum_e + = 1; + +3367 i( + `rcmp +( +݊ame +, "preproc") == 0) { + +3368 i( +roc_e +) + +3369 + `e_nic +("Error: Preprocessorrgument " + +3371 +roc_e + = 1; + +3373 +p +-> +roc + = + `rdup +( +ݏrg +); + +3377 i( + `rcmp +( +݊ame +, "preproc-args") == 0) { + +3378 i( +roc_ms_e +) + +3379 + `e_nic +("Error: Preprocessorrgs " + +3381 +roc_ms_e + = 1; + +3383 +p +-> +roc_gs + = + `rdup +( +ݏrg +); + +3387 + `p_t_uge +( +gv +[0]); + +3391 + `p_t_uge +( +gv +[0]); + +3394 +td + = 0; + +3397 i( +roc_ms_e + && ( +roc_e + == 0)) + +3398 + `e_nic +("Error: Preprocessorrgs specified while " + +3401 +p +-> +rr_fe + = +roc_e + ? + +3402 + `famedup +( +p +-> +cfig_fe +, ".preproc") : + +3403 + `rdup +( +p +-> +cfig_fe +); + +3404 +p +-> +ouut_fe + = + `famedup +׵-> +cfig_fe +, ".out"); + +3407 + } +} + +3410 + $p_cfig_roc +( +p_ms + * +p +) + +3412  +bufr +[256]; + +3413  +us +; + +3415 i( +p +-> +roc + = +NULL +) + +3418 +us + = + `acss +( +p +-> +cfig_fe +, +F_OK + | +R_OK +); + +3419 + `APP_CHECK +(( +us + == 0), "Error: Unableo open file %s", + +3420 +p +-> +cfig_fe +); + +3422 + `tf +( +bufr +, (buffer), "%s %s %s > %s", + +3423 +p +-> +roc +, + +3424 +p +-> +roc_gs + ?pp->preproc_args : "", + +3425 +p +-> +cfig_fe +, + +3426 +p +-> +rr_fe +); + +3428 +us + = + `syem +( +bufr +); + +3429 + `APP_CHECK +(( + `WIFEXITED +( +us +&& ( + `WEXITSTATUS +(status) == 0)), + +3431 +p +-> +cfig_fe +); + +3433  +us +; + +3434 + } +} + + @vnf_common/config_parse_tm.c + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +31  + ~"p.h +" + +34 + $tm_cfgfe_ld_sched_pt +( + +35  +e_cfgfe + * +fe +, + +36  +e_sched_pt_ms + * +pt_ms +) + +38 cڡ * +y +; + +39  +j +; + +41 +y + = + `e_cfgfe_g_y +( +fe +, "port", "frame overhead"); + +42 i( +y +) + +43 +pt_ms +-> +ame_ovhd + = ( +ut32_t +) + `oi +( +y +); + +45 +y + = + `e_cfgfe_g_y +( +fe +, "port", "mtu"); + +46 i( +y +) + +47 +pt_ms +-> +mtu + = ( +ut32_t +) + `oi +( +y +); + +49 +y + = + `e_cfgfe_g_y +( +fe +, + +52 i( +y +) + +53 +pt_ms +-> +n_subpts_r_pt + = ( +ut32_t + + `oi +( +y +); + +55 +y + = + `e_cfgfe_g_y +( +fe +, + +58 i( +y +) + +59 +pt_ms +-> +n_pes_r_subpt + = ( +ut32_t + + `oi +( +y +); + +61 +y + = + `e_cfgfe_g_y +( +fe +, "port", "queue sizes"); + +62 i( +y +) { + +63 * +xt +; + +65  +j + = 0; j < +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +; j++) { + +66 +pt_ms +-> +qsize +[ +j +] = ( +ut16_t +) + +67 + ` +( +y +, & +xt +, 10); + +68 i( +xt + = +NULL +) + +70 +y + = +xt +; + +74 #ifde +RTE_SCHED_RED + + +75  +j + = 0; j < +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +; j++) { + +76  +r +[32]; + +79 + `tf +( +r +, (r), "t%" +PRId32 + " wd m", +j +); + +80 +y + = + `e_cfgfe_g_y +( +fe +, "d", +r +); + +81 i( +y +) { + +82 * +xt +; + +83  +k +; + +86  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +87 +pt_ms +-> +d_ms +[ +j +][ +k +]. +m_th + + +88 ( +ut16_t +) + ` +( +y +, & +xt +, 10); + +89 i( +xt + = +NULL +) + +91 +y + = +xt +; + +96 + `tf +( +r +, (r), "t%" +PRId32 + " wd max", +j +); + +97 +y + = + `e_cfgfe_g_y +( +fe +, "d", +r +); + +98 i( +y +) { + +99 * +xt +; + +100  +k +; + +103  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +104 +pt_ms +-> +d_ms +[ +j +][ +k +]. +max_th + + +105 ( +ut16_t +) + ` +( +y +, & +xt +, 10); + +106 i( +xt + = +NULL +) + +108 +y + = +xt +; + +113 + `tf +( +r +, (r), "t%" +PRId32 + " wd invrob", +j +); + +114 +y + = + `e_cfgfe_g_y +( +fe +, "d", +r +); + +115 i( +y +) { + +116 * +xt +; + +117  +k +; + +120  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +121 +pt_ms +-> +d_ms +[ +j +][ +k +]. +maxp_v + + +122 ( +ut8_t +) + ` +( +y +, & +xt +, 10); + +124 i( +xt + = +NULL +) + +126 +y + = +xt +; + +131 + `tf +( +r +, (r), "t%" +PRId32 + " wd weight", +j +); + +132 +y + = + `e_cfgfe_g_y +( +fe +, "d", +r +); + +133 i( +y +) { + +134 * +xt +; + +135  +k +; + +138  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +139 +pt_ms +-> +d_ms +[ +j +][ +k +]. +wq_log2 + + +140 ( +ut8_t +) + ` +( +y +, & +xt +, 10); + +141 i( +xt + = +NULL +) + +143 +y + = +xt +; + +150 + } +} + +153 + $tm_cfgfe_ld_sched_pe +( + +154  +e_cfgfe + * +fe +, + +155  +e_sched_pt_ms + * +pt_ms +, + +156  +e_sched_pe_ms + * +pe_ms +) + +158  +i +, +j +; + +159 * +xt +; + +160 cڡ * +y +; + +161  +ofes +; + +163 +ofes + = + `e_cfgfe_num_is +( +fe +, + +165 +pt_ms +-> +n_pe_ofes + = +ofes +; + +167  +j + = 0; j < +ofes +; j++) { + +168  +pe_me +[32]; + +170 + `tf +( +pe_me +, (pipe_name), + +171 "pof%" +PRId32 +, +j +); + +173 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tbate"); + +174 i( +y +) + +175 +pe_ms +[ +j +]. +tb_ + = ( +ut32_t + + `oi +( +y +); + +177 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tb size"); + +178 i( +y +) + +179 +pe_ms +[ +j +]. +tb_size + = ( +ut32_t + + `oi +( +y +); + +181 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tceriod"); + +182 i( +y +) + +183 +pe_ms +[ +j +]. +tc_riod + = ( +ut32_t + + `oi +( +y +); + +185 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 0ate"); + +186 i( +y +) + +187 +pe_ms +[ +j +]. +tc_ +[0] = ( +ut32_t + + `oi +( +y +); + +189 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 1ate"); + +190 i( +y +) + +191 +pe_ms +[ +j +]. +tc_ +[1] = ( +ut32_t + + `oi +( +y +); + +193 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 2ate"); + +194 i( +y +) + +195 +pe_ms +[ +j +]. +tc_ +[2] = ( +ut32_t + + `oi +( +y +); + +197 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 3ate"); + +198 i( +y +) + +199 +pe_ms +[ +j +]. +tc_ +[3] = ( +ut32_t + + `oi +( +y +); + +201 #ifde +RTE_SCHED_SUBPORT_TC_OV + + +202 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, + +204 i( +y +) + +205 +pe_ms +[ +j +]. +tc_ov_weight + = ( +ut8_t +) + `oi +( +y +); + +208 +y + = + `e_cfgfe_g_y +( +fe +, + +209 +pe_me +, + +211 i( +y +) + +212  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +213 +pe_ms +[ +j +]. +w_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*0 + +i +] = + +214 ( +ut8_t + + ` +( +y +, & +xt +, 10); + +215 i( +xt + = +NULL +) + +217 +y + = +xt +; + +220 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 1 wrr weights"); + +221 i( +y +) + +222  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +223 +pe_ms +[ +j +]. +w_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*1 + +i +] = + +224 ( +ut8_t + + ` +( +y +, & +xt +, 10); + +225 i( +xt + = +NULL +) + +227 +y + = +xt +; + +230 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 2 wrr weights"); + +231 i( +y +) + +232  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +233 +pe_ms +[ +j +]. +w_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*2 + +i +] = + +234 ( +ut8_t + + ` +( +y +, & +xt +, 10); + +235 i( +xt + = +NULL +) + +237 +y + = +xt +; + +240 +y + = + `e_cfgfe_g_y +( +fe +, +pe_me +, "tc 3 wrr weights"); + +241 i( +y +) + +242  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +243 +pe_ms +[ +j +]. +w_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*3 + +i +] = + +244 ( +ut8_t + + ` +( +y +, & +xt +, 10); + +245 i( +xt + = +NULL +) + +247 +y + = +xt +; + +251 + } +} + +254 + $tm_cfgfe_ld_sched_subpt +( + +255  +e_cfgfe + * +fe +, + +256  +e_sched_subpt_ms + * +subpt_ms +, + +257 * +pe_to_ofe +) + +259 cڡ * +y +; + +260  +i +, +j +, +k +; + +262  +i + = 0; i < +APP_MAX_SCHED_SUBPORTS +; i++) { + +263  +c_me +[ +CFG_NAME_LEN +]; + +265 + `tf +( +c_me +, (sec_name), + +266 "subp܈%" +PRId32 +, +i +); + +268 i( + `e_cfgfe_has_i +( +fe +, +c_me +)) { + +269 +y + = + `e_cfgfe_g_y +( +fe +, + +270 +c_me +, + +272 i( +y +) + +273 +subpt_ms +[ +i +]. +tb_ + = + +274 ( +ut32_t + + `oi +( +y +); + +276 +y + = + `e_cfgfe_g_y +( +fe +, + +277 +c_me +, + +279 i( +y +) + +280 +subpt_ms +[ +i +]. +tb_size + = + +281 ( +ut32_t + + `oi +( +y +); + +283 +y + = + `e_cfgfe_g_y +( +fe +, + +284 +c_me +, + +286 i( +y +) + +287 +subpt_ms +[ +i +]. +tc_riod + = + +288 ( +ut32_t + + `oi +( +y +); + +290 +y + = + `e_cfgfe_g_y +( +fe +, + +291 +c_me +, + +293 i( +y +) + +294 +subpt_ms +[ +i +]. +tc_ +[0] = + +295 ( +ut32_t + + `oi +( +y +); + +297 +y + = + `e_cfgfe_g_y +( +fe +, + +298 +c_me +, + +300 i( +y +) + +301 +subpt_ms +[ +i +]. +tc_ +[1] = + +302 ( +ut32_t + + `oi +( +y +); + +304 +y + = + `e_cfgfe_g_y +( +fe +, + +305 +c_me +, + +307 i( +y +) + +308 +subpt_ms +[ +i +]. +tc_ +[2] = + +309 ( +ut32_t + + `oi +( +y +); + +311 +y + = + `e_cfgfe_g_y +( +fe +, + +312 +c_me +, + +314 i( +y +) + +315 +subpt_ms +[ +i +]. +tc_ +[3] = + +316 ( +ut32_t + + `oi +( +y +); + +318  +n_s + = + `e_cfgfe_i_num_s +( +fe +, + +319 +c_me +); + +320  +e_cfgfe_y + +s +[ +n_s +]; + +322 + `e_cfgfe_i_s +( +fe +, + +323 +c_me +, + +324 +s +, + +325 +n_s +); + +327  +j + = 0; j < +n_s +; j++) + +328 i( + `cmp +("pipe", + +329 +s +[ +j +]. +me +, + +331  +ofe +; + +332 * +toks +[2] = { +NULL +, NULL}; + +333  +n_toks +; + +334  +beg +, +d +; + +335  +me +[ +CFG_NAME_LEN + + 1]; + +337 +ofe + = + `oi +( +s +[ +j +]. +vue +); + +338 + `y +( +me +, + +339 +s +[ +j +]. +me +, + +340 ( +me +)); + +341 +n_toks + = + `e_rl +( + +342 & +me +[("pipe")], + +343 + `n +( +me +, +CFG_NAME_LEN +), + +344 +toks +, 2, '-'); + +346 +beg + = + `oi +( +toks +[0]); + +347 i( +n_toks + == 2) + +348 +d + = + `oi +( +toks +[1]); + +350 +d + = +beg +; + +352 i(( +d + > +APP_MAX_SCHED_PIPES +) || + +353 ( +beg + > +d +)) + +356  +k + = +beg +; k < +d +; k++) { + +357  +ofe_me +[ +CFG_NAME_LEN +]; + +359 + `tf +( +ofe_me +, + +360 ( +ofe_me +), + +361 "pof%" +PRId32 +, + +362 +ofe +); + +363 i( + `e_cfgfe_has_i +( +fe +, +ofe_me +)) + +364 +pe_to_ofe +[ +i + * +APP_MAX_SCHED_PIPES + + +k +] = +ofe +; + +366 + `e_ex +( +EXIT_FAILURE +, + +368 +s +[ +j +]. +vue +); + +375 + } +} + +378 + $tm_cfgfe_ld +( +p_pktq_tm_ms + * +tm +) + +380  +e_cfgfe + * +fe +; + +381 +ut32_t + +i +; + +383 + `memt +( +tm +-> +sched_subpt_ms +, 0, (tm->sched_subport_params)); + +384 + `memt +( +tm +-> +sched_pe_ofes +, 0, (tm->sched_pipe_profiles)); + +385 + `memt +(& +tm +-> +sched_pt_ms +, 0, (tm->sched_port_params)); + +386  +i + = 0; i < +APP_MAX_SCHED_SUBPORTS + * +APP_MAX_SCHED_PIPES +; i++) + +387 +tm +-> +sched_pe_to_ofe +[ +i +] = -1; + +389 +tm +-> +sched_pt_ms +. +pe_ofes + = &tm-> +sched_pe_ofes +[0]; + +391 i( +tm +-> +fe_me +[0] == '\0') + +394 +fe + = + `e_cfgfe_ld +( +tm +-> +fe_me +, 0); + +395 i( +fe + = +NULL +) + +398 + `tm_cfgfe_ld_sched_pt +( +fe +, + +399 & +tm +-> +sched_pt_ms +); + +400 + `tm_cfgfe_ld_sched_subpt +( +fe +, + +401 +tm +-> +sched_subpt_ms +, + +402 +tm +-> +sched_pe_to_ofe +); + +403 + `tm_cfgfe_ld_sched_pe +( +fe +, + +404 & +tm +-> +sched_pt_ms +, + +405 +tm +-> +sched_pe_ofes +); + +407 + `e_cfgfe_o +( +fe +); + +409 + } +} + +412 + $p_cfig_r_tm +( +p_ms + * +p +) + +414 +ut32_t + +i +; + +416  +i + = 0; i < + `RTE_DIM +( +p +-> +tm_ms +); i++) { + +417  +p_pktq_tm_ms + * +p + = & +p +-> +tm_ms +[ +i +]; + +418  +us +; + +420 i(! + `APP_PARAM_VALID +( +p +)) + +423 +us + = + `tm_cfgfe_ld +( +p +); + +424 + `APP_CHECK +( +us + == 0, + +426 +p +-> +me +, + +427 +p +-> +fe_me +); + +431 + } +} + + @vnf_common/cpu_core_map.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +22  + ~ + +24  + ~"u_ce_m.h +" + +26  + su_ce_m + { + +27 +ut32_t + + mn_max_socks +; + +28 +ut32_t + + mn_max_ces_r_sock +; + +29 +ut32_t + + mn_max_ht_r_ce +; + +30 +ut32_t + + mn_socks +; + +31 +ut32_t + + mn_ces_r_sock +; + +32 +ut32_t + + mn_ht_r_ce +; + +33  + mm +[0]; + +36  +le + +ut32_t + + +37 + $u_ce_m_pos +( +u_ce_m + * +m +, + +38 +ut32_t + +sock_id +, + +39 +ut32_t + +ce_id +, + +40 +ut32_t + +ht_id +) + +42  ( +sock_id + * +m +-> +n_max_ces_r_sock + + +ce_id +) * + +43 +m +-> +n_max_ht_r_ce + + +ht_id +; + +44 + } +} + +47 +u_ce_m_compu_l +( +u_ce_m + * +m +); + +50 +u_ce_m_compu_lux +( +u_ce_m + * +m +); + +53 +u_ce_m_compu_d_check +( +u_ce_m + * +m +); + +55  +u_ce_m + * + +56 + $u_ce_m_ +( +ut32_t + +n_max_socks +, + +57 +ut32_t + +n_max_ces_r_sock +, + +58 +ut32_t + +n_max_ht_r_ce +, + +59 +ut32_t + +l_lized +) + +61 +ut32_t + +m_size +, +m_mem_size +, +i +; + +62  +u_ce_m + * +m +; + +63  +us +; + +66 i(( +n_max_socks + == 0) || + +67 ( +n_max_ces_r_sock + == 0) || + +68 ( +n_max_ht_r_ce + == 0)) + +69  +NULL +; + +72 +m_size + = +n_max_socks + * +n_max_ces_r_sock + * +n_max_ht_r_ce +; + +73 +m_mem_size + = ( +u_ce_m ++ +m_size + * (); + +74 +m + = ( +u_ce_m + * + `mloc +( +m_mem_size +); + +75 i( +m + = +NULL +) + +76  +NULL +; + +79 +m +-> +n_max_socks + =_max_sockets; + +80 +m +-> +n_max_ces_r_sock + =_max_cores_per_socket; + +81 +m +-> +n_max_ht_r_ce + =_max_ht_per_core; + +82 +m +-> +n_socks + = 0; + +83 +m +-> +n_ces_r_sock + = 0; + +84 +m +-> +n_ht_r_ce + = 0; + +86  +i + = 0; i < +m_size +; i++) + +87 +m +->m[ +i +] = -1; + +89 +us + = ( +l_lized +) ? + +90 + `u_ce_m_compu_l +( +m +) : + +91 + `u_ce_m_compu_lux +( +m +); + +93 i( +us +) { + +94 + ` +( +m +); + +95  +NULL +; + +98 +us + = + `u_ce_m_compu_d_check +( +m +); + +99 i( +us +) { + +100 + ` +( +m +); + +101  +NULL +; + +104  +m +; + +105 + } +} + +108 + $u_ce_m_compu_l +( +u_ce_m + * +m +) + +110 +ut32_t + +sock_id +, +ce_id +, +ht_id +; + +113  +sock_id + = 0; sock_id < +m +-> +n_max_socks +; socket_id++) { + +114 +ut32_t + +n_deed +, +ce_id_ctig +; + +115  +lce_id +; + +117 +n_deed + = 0; + +118  +lce_id + = 0;ce_id < +RTE_MAX_LCORE +;core_id++) { + +119  +lce_cfig + * +p + = &lce_cfig[ +lce_id +]; + +121 i(( +p +-> +deed +&& (p-> +sock_id + == socket_id)) + +122 +n_deed +++; + +125 +ce_id_ctig + = 0; + +127  +ce_id + = 0; +n_deed + ; core_id++) { + +128 +ht_id + = 0; + +130  +lce_id + = 0; + +131 +lce_id + < +RTE_MAX_LCORE +; + +132 +lce_id +++) { + +133  +lce_cfig + * +p + = + +134 & +lce_cfig +[ +lce_id +]; + +136 i(( +p +-> +deed +) && + +137 ( +p +-> +sock_id + == socket_id) && + +138 ( +p +-> +ce_id + == core_id)) { + +139 +ut32_t + +pos + = + `u_ce_m_pos +( +m +, + +140 +sock_id +, + +141 +ce_id_ctig +, + +142 +ht_id +); + +144 +m +->m[ +pos +] = +lce_id +; + +145 +ht_id +++; + +146 +n_deed +--; + +150 i( +ht_id +) { + +151 +ce_id_ctig +++; + +152 i( +ce_id_ctig + == + +153 +m +-> +n_max_ces_r_sock +) + +160 + } +} + +163 + $u_ce_m_compu_d_check +( +u_ce_m + * +m +) + +165 +ut32_t + +sock_id +, +ce_id +, +ht_id +; + +168  +ht_id + = 0; ht_id < +m +-> +n_max_ht_r_ce +; ht_id++) { + +169 i( +m +->m[ +ht_id +] == -1) + +172 +m +-> +n_ht_r_ce +++; + +175 i( +m +-> +n_ht_r_ce + == 0) + +178  +ce_id + = 0; ce_id < +m +-> +n_max_ces_r_sock +; core_id++) { + +179 +ut32_t + +pos + = +ce_id + * +m +-> +n_max_ht_r_ce +; + +181 i( +m +->m[ +pos +] == -1) + +184 +m +-> +n_ces_r_sock +++; + +187 i( +m +-> +n_ces_r_sock + == 0) + +190  +sock_id + = 0; sock_id < +m +-> +n_max_socks +; socket_id++) { + +191 +ut32_t + +pos + = +sock_id + * +m +-> +n_max_ces_r_sock + * + +192 +m +-> +n_max_ht_r_ce +; + +194 i( +m +->m[ +pos +] == -1) + +197 +m +-> +n_socks +++; + +200 i( +m +-> +n_socks + == 0) + +205  +sock_id + = 0; sock_id < +m +-> +n_socks +; socket_id++) { + +206  +ce_id + = 0; ce_id < +m +-> +n_ces_r_sock +; core_id++) + +207  +ht_id + = 0; + +208 +ht_id + < +m +-> +n_max_ht_r_ce +; + +209 +ht_id +++) { + +210 +ut32_t + +pos + = ( +sock_id + * + +211 +m +-> +n_max_ces_r_sock + + +ce_id +) * + +212 +m +-> +n_max_ht_r_ce + + +ht_id +; + +214 i((( +ht_id + < +m +-> +n_ht_r_ce +) && + +215 ( +m +->m[ +pos +] == -1)) || + +216 (( +ht_id + > +m +-> +n_ht_r_ce +) && + +217 ( +m +->m[ +pos +] != -1))) + +221  ; +ce_id + < +m +-> +n_max_ces_r_sock +; core_id++) + +222  +ht_id + = 0; + +223 +ht_id + < +m +-> +n_max_ht_r_ce +; + +224 +ht_id +++) { + +225 +ut32_t + +pos + = + `u_ce_m_pos +( +m +, + +226 +sock_id +, + +227 +ce_id +, + +228 +ht_id +); + +230 i( +m +->m[ +pos +] != -1) + +236 + } +} + +238  + #FILE_LINUX_CPU_N_LCORES + \ + +239 "/sys/devis/syem/u/e" + + ) + +242 + $u_ce_m_g_n_lces_lux +() + +244  +bufr +[64], * +rg +; + +245 +FILE + * +fd +; + +247 +fd + = + `fݒ +( +FILE_LINUX_CPU_N_LCORES +, "r"); + +248 i( +fd + = +NULL +) + +251 i( + `fgs +( +bufr +, (bufr), +fd += +NULL +) { + +252 + `fo +( +fd +); + +256 + `fo +( +fd +); + +258 +rg + = + `dex +( +bufr +, '-'); + +259 i( +rg + = +NULL +) + +262  + `oi +(++ +rg +) + 1; + +263 + } +} + +265  + #FILE_LINUX_CPU_CORE_ID + \ + +266 "/sys/devis/syem/u/u%" +PRIu32 + "/togy/ce_id" + + ) + +269 + $u_ce_m_g_ce_id_lux +( +lce_id +) + +271  +bufr +[64]; + +272 +FILE + * +fd +; + +273  +ce_id +; + +275 + `tf +( +bufr +, (bufr), +FILE_LINUX_CPU_CORE_ID +, +lce_id +); + +276 +fd + = + `fݒ +( +bufr +, "r"); + +277 i( +fd + = +NULL +) + +280 i( + `fgs +( +bufr +, (bufr), +fd += +NULL +) { + +281 + `fo +( +fd +); + +285 + `fo +( +fd +); + +287 +ce_id + = + `oi +( +bufr +); + +288  +ce_id +; + +289 + } +} + +291  + #FILE_LINUX_CPU_SOCKET_ID + \ + +292 "/sys/devis/syem/u/u%" +PRIu32 + "/togy/physil_ckage_id" + + ) + +295 + $u_ce_m_g_sock_id_lux +( +lce_id +) + +297  +bufr +[64]; + +298 +FILE + * +fd +; + +299  +sock_id +; + +301 + `tf +( +bufr +, (bufr), +FILE_LINUX_CPU_SOCKET_ID +, +lce_id +); + +302 +fd + = + `fݒ +( +bufr +, "r"); + +303 i( +fd + = +NULL +) + +306 i( + `fgs +( +bufr +, (bufr), +fd += +NULL +) { + +307 + `fo +( +fd +); + +311 + `fo +( +fd +); + +313 +sock_id + = + `oi +( +bufr +); + +314  +sock_id +; + +315 + } +} + +318 + $u_ce_m_compu_lux +( +u_ce_m + * +m +) + +320 +ut32_t + +sock_id +, +ce_id +, +ht_id +; + +321  +n_lces +; + +323 +n_lces + = + `u_ce_m_g_n_lces_lux +(); + +324 i( +n_lces + <= 0) + +328  +sock_id + = 0; sock_id < +m +-> +n_max_socks +; socket_id++) { + +329 +ut32_t + +n_deed +, +ce_id_ctig +; + +330  +lce_id +; + +332 +n_deed + = 0; + +333  +lce_id + = 0;ce_id < +n_lces +;core_id++) { + +334  +lce_sock_id + = + +335 + `u_ce_m_g_sock_id_lux +( +lce_id +); + +337 i( +lce_sock_id + < 0) + +340 i((( +ut32_t + +lce_sock_id += +sock_id +) + +341 +n_deed +++; + +344 +ce_id_ctig + = 0; + +346  +ce_id + = 0; +n_deed + ; core_id++) { + +347 +ht_id + = 0; + +349  +lce_id + = 0;ce_id < +n_lces +;core_id++) { + +350  +lce_sock_id + = + +351 + `u_ce_m_g_sock_id_lux +( + +352 +lce_id +); + +354 i( +lce_sock_id + < 0) + +357  +lce_ce_id + = + +358 + `u_ce_m_g_ce_id_lux +( + +359 +lce_id +); + +361 i( +lce_ce_id + < 0) + +364 i((( +ut32_t + +lce_sock_id + = +sock_id +) && + +365 (( +ut32_t + +lce_ce_id + = +ce_id +)) { + +366 +ut32_t + +pos + = + `u_ce_m_pos +( +m +, + +367 +sock_id +, + +368 +ce_id_ctig +, + +369 +ht_id +); + +371 +m +->m[ +pos +] = +lce_id +; + +372 +ht_id +++; + +373 +n_deed +--; + +377 i( +ht_id +) { + +378 +ce_id_ctig +++; + +379 i( +ce_id_ctig + == + +380 +m +-> +n_max_ces_r_sock +) + +387 + } +} + +390 + $u_ce_m_t +( +u_ce_m + * +m +) + +392 +ut32_t + +sock_id +, +ce_id +, +ht_id +; + +394 i( +m + = +NULL +) + +397  +sock_id + = 0; sock_id < +m +-> +n_socks +; socket_id++) { + +398 + `tf +("Sock %" +PRIu32 + ":\n", +sock_id +); + +400  +ce_id + = 0; + +401 +ce_id + < +m +-> +n_ces_r_sock +; + +402 +ce_id +++) { + +403 + `tf +("[%" +PRIu32 + "] = [", +ce_id +); + +405  +ht_id + = 0; ht_id < +m +-> +n_ht_r_ce +; ht_id++) { + +406  +lce_id + = + `u_ce_m_g_lce_id +( +m +, + +407 +sock_id +, + +408 +ce_id +, + +409 +ht_id +); + +411 +ut32_t + +ce_id_nctig + = + +412 + `u_ce_m_g_ce_id_lux +( + +413 +lce_id +); + +415 + `tf +(" %" +PRId32 + " (%" +PRIu32 + ") ", + +416 +lce_id +, + +417 +ce_id_nctig +); + +420 + `tf +("]\n"); + +423 + } +} + +425 +ut32_t + + +426 + $u_ce_m_g_n_socks +( +u_ce_m + * +m +) + +428 i( +m + = +NULL +) + +431  +m +-> +n_socks +; + +432 + } +} + +434 +ut32_t + + +435 + $u_ce_m_g_n_ces_r_sock +( +u_ce_m + * +m +) + +437 i( +m + = +NULL +) + +440  +m +-> +n_ces_r_sock +; + +441 + } +} + +443 +ut32_t + + +444 + $u_ce_m_g_n_ht_r_ce +( +u_ce_m + * +m +) + +446 i( +m + = +NULL +) + +449  +m +-> +n_ht_r_ce +; + +450 + } +} + +453 + $u_ce_m_g_lce_id +( +u_ce_m + * +m +, + +454 +ut32_t + +sock_id +, + +455 +ut32_t + +ce_id +, + +456 +ut32_t + +ht_id +) + +458 +ut32_t + +pos +; + +460 i(( +m + = +NULL +) || + +461 ( +sock_id + > +m +-> +n_socks +) || + +462 ( +ce_id + > +m +-> +n_ces_r_sock +) || + +463 ( +ht_id + > +m +-> +n_ht_r_ce +)) + +466 +pos + = + `u_ce_m_pos +( +m +, +sock_id +, +ce_id +, +ht_id +); + +468  +m +->m[ +pos +]; + +469 + } +} + +472 + $u_ce_m_ +( +u_ce_m + * +m +) + +474 + ` +( +m +); + +475 + } +} + + @vnf_common/cpu_core_map.h + +17 #ide +__INCLUDE_CPU_CORE_MAP_H__ + + +18  + #__INCLUDE_CPU_CORE_MAP_H__ + + + ) + +20  + ~ + +22  + ~ + +24  + gu_ce_m +; + +26  +u_ce_m + * + +27 +u_ce_m_ +( +ut32_t + +n_max_socks +, + +28 +ut32_t + +n_max_ces_r_sock +, + +29 +ut32_t + +n_max_ht_r_ce +, + +30 +ut32_t + +l_lized +); + +32 +ut32_t + + +33 +u_ce_m_g_n_socks +( +u_ce_m + * +m +); + +35 +ut32_t + + +36 +u_ce_m_g_n_ces_r_sock +( +u_ce_m + * +m +); + +38 +ut32_t + + +39 +u_ce_m_g_n_ht_r_ce +( +u_ce_m + * +m +); + +42 +u_ce_m_g_lce_id +( +u_ce_m + * +m +, + +43 +ut32_t + +sock_id +, + +44 +ut32_t + +ce_id +, + +45 +ut32_t + +ht_id +); + +47  +u_ce_m_t +( +u_ce_m + * +m +); + +50 +u_ce_m_ +( +u_ce_m + * +m +); + + @vnf_common/hash_func.h + +16 #ide +__INCLUDE_HASH_FUNC_H__ + + +17  + #__INCLUDE_HASH_FUNC_H__ + + + ) + +19  +le + +ut64_t + + +20 + $hash_x_key8 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +22 +ut64_t + * +k + = +key +; + +23 +ut64_t + +x0 +; + +25 +x0 + = +ed + ^ +k +[0]; + +27  ( +x0 + >> 32) ^ xor0; + +28 + } +} + +30  +le + +ut64_t + + +31 + $hash_x_key16 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +33 +ut64_t + * +k + = +key +; + +34 +ut64_t + +x0 +; + +36 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +38  ( +x0 + >> 32) ^ xor0; + +39 + } +} + +41  +le + +ut64_t + + +42 + $hash_x_key24 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +44 +ut64_t + * +k + = +key +; + +45 +ut64_t + +x0 +; + +47 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +49 +x0 + ^ +k +[2]; + +51  ( +x0 + >> 32) ^ xor0; + +52 + } +} + +54  +le + +ut64_t + + +55 + $hash_x_key32 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +57 +ut64_t + * +k + = +key +; + +58 +ut64_t + +x0 +, +x1 +; + +60 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +61 +x1 + = +k +[2] ^ k[3]; + +63 +x0 + ^ +x1 +; + +65  ( +x0 + >> 32) ^ xor0; + +66 + } +} + +68  +le + +ut64_t + + +69 + $hash_x_key40 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +71 +ut64_t + * +k + = +key +; + +72 +ut64_t + +x0 +, +x1 +; + +74 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +75 +x1 + = +k +[2] ^ k[3]; + +77 +x0 + ^ +x1 +; + +79 +x0 + ^ +k +[4]; + +81  ( +x0 + >> 32) ^ xor0; + +82 + } +} + +84  +le + +ut64_t + + +85 + $hash_x_key48 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +87 +ut64_t + * +k + = +key +; + +88 +ut64_t + +x0 +, +x1 +, +x2 +; + +90 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +91 +x1 + = +k +[2] ^ k[3]; + +92 +x2 + = +k +[4] ^ k[5]; + +94 +x0 + ^ +x1 +; + +96 +x0 + ^ +x2 +; + +98  ( +x0 + >> 32) ^ xor0; + +99 + } +} + +101  +le + +ut64_t + + +102 + $hash_x_key56 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +104 +ut64_t + * +k + = +key +; + +105 +ut64_t + +x0 +, +x1 +, +x2 +; + +107 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +108 +x1 + = +k +[2] ^ k[3]; + +109 +x2 + = +k +[4] ^ k[5]; + +111 +x0 + ^ +x1 +; + +112 +x2 + ^ +k +[6]; + +114 +x0 + ^ +x2 +; + +116  ( +x0 + >> 32) ^ xor0; + +117 + } +} + +119  +le + +ut64_t + + +120 + $hash_x_key64 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +122 +ut64_t + * +k + = +key +; + +123 +ut64_t + +x0 +, +x1 +, +x2 +, +x3 +; + +125 +x0 + = ( +k +[0] ^ +ed +) ^ k[1]; + +126 +x1 + = +k +[2] ^ k[3]; + +127 +x2 + = +k +[4] ^ k[5]; + +128 +x3 + = +k +[6] ^ k[7]; + +130 +x0 + ^ +x1 +; + +131 +x2 + ^ +x3 +; + +133 +x0 + ^ +x2 +; + +135  ( +x0 + >> 32) ^ xor0; + +136 + } +} + +138 #i +defed +( +RTE_ARCH_X86_64 +&& defed( +RTE_MACHINE_CPUFLAG_SSE4_2 +) + +140  + ~ + +142  +le + +ut64_t + + +143 + $hash_c_key8 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +145 +ut64_t + * +k + = +key +; + +146 +ut64_t + +c0 +; + +148 +c0 + = + `_mm_c32_u64 +( +ed +, +k +[0]); + +150  +c0 +; + +151 + } +} + +153  +le + +ut64_t + + +154 + $hash_c_key16 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +156 +ut64_t + * +k + = +key +; + +157 +ut64_t + +k0 +, +c0 +, +c1 +; + +159 +k0 + = +k +[0]; + +161 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +162 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +164 +c0 + ^ +c1 +; + +166  +c0 +; + +167 + } +} + +169  +le + +ut64_t + + +170 + $hash_c_key24 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +172 +ut64_t + * +k + = +key +; + +173 +ut64_t + +k0 +, +k2 +, +c0 +, +c1 +; + +175 +k0 + = +k +[0]; + +176 +k2 + = +k +[2]; + +178 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +179 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +181 +c0 + = + `_mm_c32_u64 +(c0, +k2 +); + +183 +c0 + ^ +c1 +; + +185  +c0 +; + +186 + } +} + +188  +le + +ut64_t + + +189 + $hash_c_key32 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +191 +ut64_t + * +k + = +key +; + +192 +ut64_t + +k0 +, +k2 +, +c0 +, +c1 +, +c2 +, +c3 +; + +194 +k0 + = +k +[0]; + +195 +k2 + = +k +[2]; + +197 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +198 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +200 +c2 + = + `_mm_c32_u64 +( +k2 +, +k +[3]); + +201 +c3 + = +k2 + >> 32; + +203 +c0 + = + `_mm_c32_u64 +(c0, +c1 +); + +204 +c1 + = + `_mm_c32_u64 +( +c2 +, +c3 +); + +206 +c0 + ^ +c1 +; + +208  +c0 +; + +209 + } +} + +211  +le + +ut64_t + + +212 + $hash_c_key40 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +214 +ut64_t + * +k + = +key +; + +215 +ut64_t + +k0 +, +k2 +, +c0 +, +c1 +, +c2 +, +c3 +; + +217 +k0 + = +k +[0]; + +218 +k2 + = +k +[2]; + +220 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +221 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +223 +c2 + = + `_mm_c32_u64 +( +k2 +, +k +[3]); + +224 +c3 + = + `_mm_c32_u64 +( +k2 + >> 32, +k +[4]); + +226 +c0 + = + `_mm_c32_u64 +(c0, +c1 +); + +227 +c1 + = + `_mm_c32_u64 +( +c2 +, +c3 +); + +229 +c0 + ^ +c1 +; + +231  +c0 +; + +232 + } +} + +234  +le + +ut64_t + + +235 + $hash_c_key48 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +237 +ut64_t + * +k + = +key +; + +238 +ut64_t + +k0 +, +k2 +, +k5 +, +c0 +, +c1 +, +c2 +, +c3 +; + +240 +k0 + = +k +[0]; + +241 +k2 + = +k +[2]; + +242 +k5 + = +k +[5]; + +244 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +245 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +247 +c2 + = + `_mm_c32_u64 +( +k2 +, +k +[3]); + +248 +c3 + = + `_mm_c32_u64 +( +k2 + >> 32, +k +[4]); + +250 +c0 + = + `_mm_c32_u64 +(c0, ( +c1 + << 32^ +c2 +); + +251 +c1 + = + `_mm_c32_u64 +( +c3 +, +k5 +); + +253 +c0 + ^ +c1 +; + +255  +c0 +; + +256 + } +} + +258  +le + +ut64_t + + +259 + $hash_c_key56 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +261 +ut64_t + * +k + = +key +; + +262 +ut64_t + +k0 +, +k2 +, +k5 +, +c0 +, +c1 +, +c2 +, +c3 +, +c4 +, +c5 +; + +264 +k0 + = +k +[0]; + +265 +k2 + = +k +[2]; + +266 +k5 + = +k +[5]; + +268 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +269 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +271 +c2 + = + `_mm_c32_u64 +( +k2 +, +k +[3]); + +272 +c3 + = + `_mm_c32_u64 +( +k2 + >> 32, +k +[4]); + +274 +c4 + = + `_mm_c32_u64 +( +k5 +, +k +[6]); + +275 +c5 + = +k5 + >> 32; + +277 +c0 + = + `_mm_c32_u64 +(c0, ( +c1 + << 32^ +c2 +); + +278 +c1 + = + `_mm_c32_u64 +( +c3 +, ( +c4 + << 32^ +c5 +); + +280 +c0 + ^ +c1 +; + +282  +c0 +; + +283 + } +} + +285  +le + +ut64_t + + +286 + $hash_c_key64 +(* +key +, +__e_unud + +ut32_t + +key_size +, +ut64_t + +ed +) + +288 +ut64_t + * +k + = +key +; + +289 +ut64_t + +k0 +, +k2 +, +k5 +, +c0 +, +c1 +, +c2 +, +c3 +, +c4 +, +c5 +; + +291 +k0 + = +k +[0]; + +292 +k2 + = +k +[2]; + +293 +k5 + = +k +[5]; + +295 +c0 + = + `_mm_c32_u64 +( +k0 +, +ed +); + +296 +c1 + = + `_mm_c32_u64 +( +k0 + >> 32, +k +[1]); + +298 +c2 + = + `_mm_c32_u64 +( +k2 +, +k +[3]); + +299 +c3 + = + `_mm_c32_u64 +( +k2 + >> 32, +k +[4]); + +301 +c4 + = + `_mm_c32_u64 +( +k5 +, +k +[6]); + +302 +c5 + = + `_mm_c32_u64 +( +k5 + >> 32, +k +[7]); + +304 +c0 + = + `_mm_c32_u64 +(c0, ( +c1 + << 32^ +c2 +); + +305 +c1 + = + `_mm_c32_u64 +( +c3 +, ( +c4 + << 32^ +c5 +); + +307 +c0 + ^ +c1 +; + +309  +c0 +; + +310 + } +} + +312  + #hash_deu_key8 + +hash_c_key8 + + + ) + +313  + #hash_deu_key16 + +hash_c_key16 + + + ) + +314  + #hash_deu_key24 + +hash_c_key24 + + + ) + +315  + #hash_deu_key32 + +hash_c_key32 + + + ) + +316  + #hash_deu_key40 + +hash_c_key40 + + + ) + +317  + #hash_deu_key48 + +hash_c_key48 + + + ) + +318  + #hash_deu_key56 + +hash_c_key56 + + + ) + +319  + #hash_deu_key64 + +hash_c_key64 + + + ) + +323  + #hash_deu_key8 + +hash_x_key8 + + + ) + +324  + #hash_deu_key16 + +hash_x_key16 + + + ) + +325  + #hash_deu_key24 + +hash_x_key24 + + + ) + +326  + #hash_deu_key32 + +hash_x_key32 + + + ) + +327  + #hash_deu_key40 + +hash_x_key40 + + + ) + +328  + #hash_deu_key48 + +hash_x_key48 + + + ) + +329  + #hash_deu_key56 + +hash_x_key56 + + + ) + +330  + #hash_deu_key64 + +hash_x_key64 + + + ) + + @vnf_common/parser.h + +17 #ide +__INCLUDE_PARSER_H__ + + +18  + #__INCLUDE_PARSER_H__ + + + ) + +21 +rr_ad_g_bo +(cڡ * +p +); + +24 +rr_ad_ut64 +( +ut64_t + * +vue +, cڡ * +p +); + +27 +rr_ad_ut32 +( +ut32_t + * +vue +, cڡ * +p +); + +30 +r_hex_rg +(* +c +, +ut8_t + * +d +, +ut32_t + * +size +); + + @vnf_common/pipeline.h + +17 #ide +__INCLUDE_PIPELINE_H__ + + +18  + #__INCLUDE_PIPELINE_H__ + + + ) + +20  + ~ + +22  + ~"pe_be.h +" + +28 * (* + tpe___ +)( + tpe_ms + * + tms +, * + tg +); + +30 (* + tpe___ +)(* + tpe +); + +32  + spe__s + { + +33 +pe___ + +f_ +; + +34 +pe___ + +f_ +; + +35 +cmdle_r_x_t + * +cmds +; + +42  + spe_ty + { + +43 cڡ * +me +; + +46  +pe_be_s + * +be_s +; + +49  +pe__s + * +_s +; + +52  +le + +ut32_t + + +53 + $pe_ty_cmds_cou +( +pe_ty + * +y +) + +55 +cmdle_r_x_t + * +cmds +; + +56 +ut32_t + +n_cmds +; + +58 i( +y +-> +_s + = +NULL +) + +61 +cmds + = +y +-> +_s +->cmds; + +62 i( +cmds + = +NULL +) + +65  +n_cmds + = 0; +cmds +[n_cmds];_cmds++); + +67  +n_cmds +; + +68 + } +} + +71 +r_pe_ce +( +ut32_t + * +sock +, + +72 +ut32_t + * +ce +, + +73 +ut32_t + * +ht +, + +74 cڡ * +y +); + + @vnf_common/pipeline_actions_common.h + +16 #ide +__INCLUDE_PIPELINE_ACTIONS_COMMON_H__ + + +17  + #__INCLUDE_PIPELINE_ACTIONS_COMMON_H__ + + + ) + +19  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +26  + #PIPELINE_PORT_IN_AH +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +28 + `f_ah +( \ + +29 +__e_unud +  +e_pe + * +p +, \ + +30  +e_mbuf + ** +pkts +, \ + +31 +ut32_t + +n_pkts +, \ + +32 * +g +) \ + +34 +ut32_t + +i +; \ + +36  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +37 + `f_pkt4_wk +(& +pkts +[ +i +], +g +); \ + +39  ; +i + < +n_pkts +; i++) \ + +40 + `f_pkt_wk +( +pkts +[ +i +], +g +); \ + +43 } + + ) + +45  + #PIPELINE_PORT_IN_AH_HIJACK_ALL +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +47 + `f_ah +( \ + +48  +e_pe + * +p +, \ + +49  +e_mbuf + ** +pkts +, \ + +50 +ut32_t + +n_pkts +, \ + +51 * +g +) \ + +53 +ut64_t + +pkt_mask + = + `RTE_LEN2MASK +( +n_pkts +, uint64_t); \ + +54 +ut32_t + +i +; \ + +56 + `e_pe_ah_ck_hijack +( +p +, +pkt_mask +); \ + +58  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +59 + `f_pkt4_wk +(& +pkts +[ +i +], +g +); \ + +61  ; +i + < +n_pkts +; i++) \ + +62 + `f_pkt_wk +( +pkts +[ +i +], +g +); \ + +65 } + + ) + +67  + #PIPELINE_TABLE_AH_HIT +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +69 + `f_ah +( \ + +70 +__e_unud +  +e_pe + * +p +, \ + +71  +e_mbuf + ** +pkts +, \ + +72 +ut64_t + +pkts__mask +, \ + +73  +e_pe_b_y + ** +s +, \ + +74 * +g +) \ + +76 i(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +77 +ut64_t + +n_pkts + = + `__but_pcou +( +pkts__mask +); \ + +78 +ut32_t + +i +; \ + +80  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +81 + `f_pkt4_wk +(& +pkts +[ +i +], & +s +[i], +g +); \ + +83  ; +i + < +n_pkts +; i++) \ + +84 + `f_pkt_wk +( +pkts +[ +i +], +s +[i], +g +); \ + +86  ; +pkts__mask +; ) { \ + +87 +ut32_t + +pos + = + `__but_z +( +pkts__mask +); \ + +88 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +90 +pkts__mask + &~ +pkt_mask +; \ + +91 + `f_pkt_wk +( +pkts +[ +pos +], +s +[pos], +g +); \ + +95 } + + ) + +97  + #PIPELINE_TABLE_AH_MISS +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +99 + `f_ah +( \ + +100 +__e_unud +  +e_pe + * +p +, \ + +101  +e_mbuf + ** +pkts +, \ + +102 +ut64_t + +pkts__mask +, \ + +103  +e_pe_b_y + * +y +, \ + +104 * +g +) \ + +106 i(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +107 +ut64_t + +n_pkts + = + `__but_pcou +( +pkts__mask +); \ + +108 +ut32_t + +i +; \ + +110  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +111 + `f_pkt4_wk +(& +pkts +[ +i +], +y +, +g +); \ + +113  ; +i + < +n_pkts +; i++) \ + +114 + `f_pkt_wk +( +pkts +[ +i +], +y +, +g +); \ + +116  ; +pkts__mask +; ) { \ + +117 +ut32_t + +pos + = + `__but_z +( +pkts__mask +); \ + +118 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +120 +pkts__mask + &~ +pkt_mask +; \ + +121 + `f_pkt_wk +( +pkts +[ +pos +], +y +, +g +); \ + +125 } + + ) + +127  + #PIPELINE_TABLE_AH_HIT_DROP_TIME +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +129 + `f_ah +( \ + +130  +e_pe + * +p +, \ + +131  +e_mbuf + ** +pkts +, \ + +132 +ut64_t + +pkts_mask +, \ + +133  +e_pe_b_y + ** +s +, \ + +134 * +g +) \ + +136 +ut64_t + +pkts__mask + = +pkts_mask +; \ + +137 +ut64_t + +pkts_out_mask + = +pkts_mask +; \ + +138 +ut64_t + +time + = + `e_rdtsc +(); \ + +140 i(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +141 +ut64_t + +n_pkts + = + `__but_pcou +( +pkts__mask +); \ + +142 +ut32_t + +i +; \ + +144  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +145 +ut64_t + +mask + = + `f_pkt4_wk +(& +pkts +[ +i +], \ + +146 & +s +[ +i +], +g +, +time +); \ + +147 +pkts_out_mask + ^ +mask + << +i +; \ + +150  ; +i + < +n_pkts +; i++) { \ + +151 +ut64_t + +mask + = + `f_pkt_wk +( +pkts +[ +i +], \ + +152 +s +[ +i +], +g +, +time +); \ + +153 +pkts_out_mask + ^ +mask + << +i +; \ + +156  ; +pkts__mask +; ) { \ + +157 +ut32_t + +pos + = + `__but_z +( +pkts__mask +); \ + +158 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +159 +ut64_t + +mask + = + `f_pkt_wk +( +pkts +[ +pos +], \ + +160 +s +[ +pos +], +g +, +time +); \ + +162 +pkts__mask + &~ +pkt_mask +; \ + +163 +pkts_out_mask + ^ +mask + << +pos +; \ + +166 + `e_pe_ah_ck_dr +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +169 } + + ) + +171  + #PIPELINE_TABLE_AH_MISS_DROP_TIME +( +f_ah +, +f_pkt_wk +, +f_pkt4_wk +) \ + +173 + `f_ah +( \ + +174  +e_pe + * +p +, \ + +175  +e_mbuf + ** +pkts +, \ + +176 +ut64_t + +pkts_mask +, \ + +177  +e_pe_b_y + * +y +, \ + +178 * +g +) \ + +180 +ut64_t + +pkts__mask + = +pkts_mask +; \ + +181 +ut64_t + +pkts_out_mask + = +pkts_mask +; \ + +182 +ut64_t + +time + = + `e_rdtsc +(); \ + +184 i(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +185 +ut64_t + +n_pkts + = + `__but_pcou +( +pkts__mask +); \ + +186 +ut32_t + +i +; \ + +188  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +189 +ut64_t + +mask + = + `f_pkt4_wk +(& +pkts +[ +i +], \ + +190 +y +, +g +, +time +); \ + +191 +pkts_out_mask + ^ +mask + << +i +; \ + +194  ; +i + < +n_pkts +; i++) { \ + +195 +ut64_t + +mask + = + `f_pkt_wk +( +pkts +[ +i +], +y +, +g +, +time +);\ + +196 +pkts_out_mask + ^ +mask + << +i +; \ + +199  ; +pkts__mask +; ) { \ + +200 +ut32_t + +pos + = + `__but_z +( +pkts__mask +); \ + +201 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +202 +ut64_t + +mask + = + `f_pkt_wk +( +pkts +[ +pos +], \ + +203 +y +, +g +, +time +); \ + +205 +pkts__mask + &~ +pkt_mask +; \ + +206 +pkts_out_mask + ^ +mask + << +pos +; \ + +209 + `e_pe_ah_ck_dr +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +212 } + + ) + + @vnf_common/pipeline_be.h + +17 #ide +__INCLUDE_PIPELINE_BE_H__ + + +18  + #__INCLUDE_PIPELINE_BE_H__ + + + ) + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28 + epe_pt__ty + { + +29 + mPIPELINE_PORT_IN_ETHDEV_READER +, + +30 + mPIPELINE_PORT_IN_RING_READER +, + +31 + mPIPELINE_PORT_IN_RING_MULTI_READER +, + +32 + mPIPELINE_PORT_IN_RING_READER_IPV4_FRAG +, + +33 + mPIPELINE_PORT_IN_RING_READER_IPV6_FRAG +, + +34 + mPIPELINE_PORT_IN_SCHED_READER +, + +35 + mPIPELINE_PORT_IN_SOURCE +, + +38  + spe_pt__ms + { + +39 +pe_pt__ty + + mty +; + +41  +e_pt_hdev_ad_ms + + mhdev +; + +42  +e_pt_rg_ad_ms + + mrg +; + +43  +e_pt_rg_mui_ad_ms + + mrg_mui +; + +44  +e_pt_rg_ad_v4_ag_ms + + mrg_v4_ag +; + +45  +e_pt_rg_ad_v6_ag_ms + + mrg_v6_ag +; + +46  +e_pt_sched_ad_ms + + msched +; + +47  +e_pt_sour_ms + + msour +; + +48 } + mms +; + +49 +ut32_t + + mbur_size +; + +52  +le + * + +53 + $pe_pt__ms_cvt +( +pe_pt__ms + * +p +) + +55  +p +-> +ty +) { + +56  +PIPELINE_PORT_IN_ETHDEV_READER +: + +57  (*& +p +-> +ms +. +hdev +; + +58  +PIPELINE_PORT_IN_RING_READER +: + +59  (*& +p +-> +ms +. +rg +; + +60  +PIPELINE_PORT_IN_RING_MULTI_READER +: + +61  (*& +p +-> +ms +. +rg_mui +; + +62  +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +63  (*& +p +-> +ms +. +rg_v4_ag +; + +64  +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +65  (*& +p +-> +ms +. +rg_v6_ag +; + +66  +PIPELINE_PORT_IN_SCHED_READER +: + +67  (*& +p +-> +ms +. +sched +; + +68  +PIPELINE_PORT_IN_SOURCE +: + +69  (*& +p +-> +ms +. +sour +; + +71  +NULL +; + +73 + } +} + +75  +le +  +e_pt__s + * + +76 + $pe_pt__ms_g_s +( +pe_pt__ms + * +p +) + +78  +p +-> +ty +) { + +79  +PIPELINE_PORT_IN_ETHDEV_READER +: + +80  & +e_pt_hdev_ad_s +; + +81  +PIPELINE_PORT_IN_RING_READER +: + +82  & +e_pt_rg_ad_s +; + +83  +PIPELINE_PORT_IN_RING_MULTI_READER +: + +84  & +e_pt_rg_mui_ad_s +; + +85  +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +86  & +e_pt_rg_ad_v4_ag_s +; + +87  +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +88  & +e_pt_rg_ad_v6_ag_s +; + +89  +PIPELINE_PORT_IN_SCHED_READER +: + +90  & +e_pt_sched_ad_s +; + +91  +PIPELINE_PORT_IN_SOURCE +: + +92  & +e_pt_sour_s +; + +94  +NULL +; + +96 + } +} + +98 + epe_pt_out_ty + { + +99 + mPIPELINE_PORT_OUT_ETHDEV_WRITER +, + +100 + mPIPELINE_PORT_OUT_ETHDEV_WRITER_NODROP +, + +101 + mPIPELINE_PORT_OUT_RING_WRITER +, + +102 + mPIPELINE_PORT_OUT_RING_MULTI_WRITER +, + +103 + mPIPELINE_PORT_OUT_RING_WRITER_NODROP +, + +104 + mPIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +, + +105 + mPIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +, + +106 + mPIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +, + +107 + mPIPELINE_PORT_OUT_SCHED_WRITER +, + +108 + mPIPELINE_PORT_OUT_SINK +, + +111  + spe_pt_out_ms + { + +112 +pe_pt_out_ty + + mty +; + +114  +e_pt_hdev_wr_ms + + mhdev +; + +115  +e_pt_hdev_wr_nodr_ms + + mhdev_nodr +; + +116  +e_pt_rg_wr_ms + + mrg +; + +117  +e_pt_rg_mui_wr_ms + + mrg_mui +; + +118  +e_pt_rg_wr_nodr_ms + + mrg_nodr +; + +119  +e_pt_rg_mui_wr_nodr_ms + + mrg_mui_nodr +; + +120  +e_pt_rg_wr_v4_s_ms + + mrg_v4_s +; + +121  +e_pt_rg_wr_v6_s_ms + + mrg_v6_s +; + +122  +e_pt_sched_wr_ms + + msched +; + +123  +e_pt_sk_ms + + msk +; + +124 } + mms +; + +127  +le + * + +128 + $pe_pt_out_ms_cvt +( +pe_pt_out_ms + * +p +) + +130  +p +-> +ty +) { + +131  +PIPELINE_PORT_OUT_ETHDEV_WRITER +: + +132  (*& +p +-> +ms +. +hdev +; + +133  +PIPELINE_PORT_OUT_ETHDEV_WRITER_NODROP +: + +134  (*& +p +-> +ms +. +hdev_nodr +; + +135  +PIPELINE_PORT_OUT_RING_WRITER +: + +136  (*& +p +-> +ms +. +rg +; + +137  +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +138  (*& +p +-> +ms +. +rg_mui +; + +139  +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +140  (*& +p +-> +ms +. +rg_nodr +; + +141  +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +142  (*& +p +-> +ms +. +rg_mui_nodr +; + +143  +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +144  (*& +p +-> +ms +. +rg_v4_s +; + +145  +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +146  (*& +p +-> +ms +. +rg_v6_s +; + +147  +PIPELINE_PORT_OUT_SCHED_WRITER +: + +148  (*& +p +-> +ms +. +sched +; + +149  +PIPELINE_PORT_OUT_SINK +: + +150  (*& +p +-> +ms +. +sk +; + +152  +NULL +; + +154 + } +} + +156  +le + * + +157 + $pe_pt_out_ms_g_s +( +pe_pt_out_ms + * +p +) + +159  +p +-> +ty +) { + +160  +PIPELINE_PORT_OUT_ETHDEV_WRITER +: + +161  & +e_pt_hdev_wr_s +; + +162  +PIPELINE_PORT_OUT_ETHDEV_WRITER_NODROP +: + +163  & +e_pt_hdev_wr_nodr_s +; + +164  +PIPELINE_PORT_OUT_RING_WRITER +: + +165  & +e_pt_rg_wr_s +; + +166  +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +167  & +e_pt_rg_mui_wr_s +; + +168  +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +169  & +e_pt_rg_wr_nodr_s +; + +170  +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +171  & +e_pt_rg_mui_wr_nodr_s +; + +172  +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +173  & +e_pt_rg_wr_v4_s_s +; + +174  +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +175  & +e_pt_rg_wr_v6_s_s +; + +176  +PIPELINE_PORT_OUT_SCHED_WRITER +: + +177  & +e_pt_sched_wr_s +; + +178  +PIPELINE_PORT_OUT_SINK +: + +179  & +e_pt_sk_s +; + +181  +NULL +; + +183 + } +} + +185 #ide +PIPELINE_NAME_SIZE + + +186  + #PIPELINE_NAME_SIZE + 64 + + ) + +189 #ide +PIPELINE_MAX_PORT_IN + + +190  + #PIPELINE_MAX_PORT_IN + 64 + + ) + +193 #ide +PIPELINE_MAX_PORT_OUT + + +194  + #PIPELINE_MAX_PORT_OUT + 64 + + ) + +197 #ide +PIPELINE_MAX_TABLES + + +198  + #PIPELINE_MAX_TABLES + 64 + + ) + +201 #ide +PIPELINE_MAX_MSGQ_IN + + +202  + #PIPELINE_MAX_MSGQ_IN + 64 + + ) + +205 #ide +PIPELINE_MAX_MSGQ_OUT + + +206  + #PIPELINE_MAX_MSGQ_OUT + 64 + + ) + +209 #ide +PIPELINE_MAX_ARGS + + +210  + #PIPELINE_MAX_ARGS + 64 + + ) + +213  + spe_ms + { + +214  + mme +[ +PIPELINE_NAME_SIZE +]; + +216  +pe_pt__ms + + mpt_ +[ +PIPELINE_MAX_PORT_IN +]; + +217  +pe_pt_out_ms + + mpt_out +[ +PIPELINE_MAX_PORT_OUT +]; + +218  +e_rg + * + mmsgq_ +[ +PIPELINE_MAX_MSGQ_IN +]; + +219  +e_rg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +221 +ut32_t + + mn_pts_ +; + +222 +ut32_t + + mn_pts_out +; + +223 +ut32_t + + mn_msgq +; + +225  + msock_id +; + +227 * + mgs_me +[ +PIPELINE_MAX_ARGS +]; + +228 * + mgs_vue +[ +PIPELINE_MAX_ARGS +]; + +229 +ut32_t + + mn_gs +; + +231 +ut32_t + + mlog_v +; + +238 * (* + tpe_be__ +)( + tpe_ms + * + tms +, + +239 * + tg +); + +241 (* + tpe_be__ +)(* + tpe +); + +243 (* + tpe_be__run +)(* + tpe +); + +245 (* + tpe_be__tim +)(* + tpe +); + +247 (* + tpe_be__ack +)(* + tpe +, + +248 + tut32_t + + tpt_ +, + +249 + tut32_t + * + tpt_out +); + +251  + spe_be_s + { + +252 +pe_be__ + +f_ +; + +253 +pe_be__ + +f_ +; + +254 +pe_be__run + +f_run +; + +255 +pe_be__tim + +f_tim +; + +256 +pe_be__ack + +f_ack +; + +260  + #PIPELINE_ARG_CHECK +( +exp +, +fmt +, ...) \ + +262 i(!( +exp +)) { \ + +263 + `rtf +( +dr +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +266 + } +} 0) + + ) + +268  + #PIPELINE_PARSE_ERR_INV_VAL +( +exp +, +i +, +y +, +v +) \ + +269 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\":ntry \"%s\" " \ + +270 "havid vu(\"%s\")", +i +, +y +, +v +) + + ) + +272  + #PIPELINE_PARSE_ERR_OUT_RNG +( +exp +, +i +, +y +, +v +) \ + +273 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\":ntry \"%s\" " \ + +274 "vuiouong(\"%s\")", +i +, +y +, +v +) + + ) + +276  + #PIPELINE_PARSE_ERR_DUPLICATE +( +exp +, +i +, +y +) \ + +277 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": duplicated " \ + +278 "y \"%s\"", +i +, +y +) + + ) + +280  + #PIPELINE_PARSE_ERR_INV_ENT +( +exp +, +i +, +y +) \ + +281 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": invalidntry " \ + +282 "\"%s\"", +i +, +y +) + + ) + +284  + #PIPELINE_PARSE_ERR_MANDATORY +( +exp +, +i +, +y +) \ + +285 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": mandatory " \ + +286 "y \"%s\" imissg", +i +, +y +) + + ) + + @vnf_common/thread.c + +17  + ~ + +18  + ~ + +19  + ~ + +21  + ~"pe_comm_be.h +" + +22  + ~"p.h +" + +23  + ~"thad.h +" + +25 #i +APP_THREAD_HEADROOM_STATS_COLLECT + + +27  + #PIPELINE_RUN_REGULAR +( +thad +, +pe +) \ + +29 +ut64_t + +t0 + = + `e_rdtsc_eci +(); \ + +30  +n_pkts + = + `e_pe_run +( +pe +-> +p +); \ + +32 i( +n_pkts + == 0) { \ + +33 +ut64_t + +t1 + = + `e_rdtsc_eci +(); \ + +35 +thad +-> +hdroom_cyes + + +t1 + - +t0 +; \ + +37 } 0) + + ) + +40  + #PIPELINE_RUN_CUSTOM +( +thad +, +da +) \ + +42 +ut64_t + +t0 + = + `e_rdtsc_eci +(); \ + +43  +n_pkts + = +da +-> + `f_run +(da-> +be +); \ + +45 i( +n_pkts + == 0) { \ + +46 +ut64_t + +t1 + = + `e_rdtsc_eci +(); \ + +48 +thad +-> +hdroom_cyes + + +t1 + - +t0 +; \ + +50 } 0) + + ) + +54  + #PIPELINE_RUN_REGULAR +( +thad +, +pe +) \ + +55 + `e_pe_run +( +pe +-> +p +) + + ) + +57  + #PIPELINE_RUN_CUSTOM +( +thad +, +da +) \ + +58 +da +-> + `f_run +(da-> +be +) + + ) + +62  +le + * + +63 + $thad_msg_cv +( +e_rg + * +r +) + +65 * +msg +; + +66  +us + = + `e_rg_sc_dequeue +( +r +, & +msg +); + +68 i( +us + != 0) + +69  +NULL +; + +71  +msg +; + +72 + } +} + +74  +le +  + +75 + $thad_msg_nd +( +e_rg + * +r +, + +76 * +msg +) + +78  +us +; + +81 +us + = + `e_rg__queue +( +r +, +msg +); + +82 }  +us + =- +ENOBUFS +); + +83 + } +} + +86 + $thad_pe_ab +( +p_thad_da + * +t +, + +87  +thad_pe_ab_msg_q + * +q +) + +89  +p_thad_pe_da + * +p +; + +91 i( +q +-> +f_run + = +NULL +) { + +92 i( +t +-> +n_gur + > +APP_MAX_THREAD_PIPELINES +) + +95 i( +t +-> +n_cuom + > +APP_MAX_THREAD_PIPELINES +) + +99 +p + = ( +q +-> +f_run + = +NULL +) ? + +100 & +t +-> +gur +[t-> +n_gur +] : + +101 & +t +-> +cuom +[t-> +n_cuom +]; + +103 +p +-> +pe_id + = +q +->pipeline_id; + +104 +p +-> +be + = +q +->be; + +105 +p +-> +f_run + = +q +->f_run; + +106 +p +-> +f_tim + = +q +->f_timer; + +107 +p +-> +tim_riod + = +q +->timer_period; + +108 +p +-> +ddle + = 0; + +110 i( +q +-> +f_run + = +NULL +) + +111 +t +-> +n_gur +++; + +113 +t +-> +n_cuom +++; + +116 + } +} + +119 + $thad_pe_dib +( +p_thad_da + * +t +, + +120  +thad_pe_dib_msg_q + * +q +) + +122 +ut32_t + +n_gur + = + `RTE_MIN +( +t +->n_gur, + `RTE_DIM +-> +gur +)); + +123 +ut32_t + +n_cuom + = + `RTE_MIN +( +t +->n_cuom, + `RTE_DIM +-> +cuom +)); + +124 +ut32_t + +i +; + +127  +i + = 0; i < +n_gur +; i++) { + +128 i( +t +-> +gur +[ +i +]. +pe_id + ! +q +->pipeline_id) + +131 i( +i + < +n_gur + - 1) + +132 + `memy +(& +t +-> +gur +[ +i +], + +133 & +t +-> +gur +[ +i ++1], + +134 ( +n_gur + - 1 - +i +* ( +p_thad_pe_da +)); + +136 +n_gur +--; + +137 +t +-> +n_gur + =_regular; + +143  +i + = 0; i < +n_cuom +; i++) { + +144 i( +t +-> +cuom +[ +i +]. +pe_id + ! +q +->pipeline_id) + +147 i( +i + < +n_cuom + - 1) + +148 + `memy +(& +t +-> +cuom +[ +i +], + +149 & +t +-> +cuom +[ +i ++1], + +150 ( +n_cuom + - 1 - +i +* ( +p_thad_pe_da +)); + +152 +n_cuom +--; + +153 +t +-> +n_cuom + =_custom; + +160 + } +} + +163 + $thad_msg_q_hd +( +p_thad_da + * +t +) + +165 * +msg_r +; + +166  +thad_msg_q + * +q +; + +167  +thad_msg_r + * +r +; + +169 +msg_r + = + `thad_msg_cv +( +t +-> +msgq_ +); + +170 +q + = +msg_r +; + +171 +r + = +msg_r +; + +173 i( +q + ! +NULL +) + +174  +q +-> +ty +) { + +175  +THREAD_MSG_REQ_PIPELINE_ENABLE +: { + +176 +r +-> +us + = + `thad_pe_ab +( +t +, + +177 ( +thad_pe_ab_msg_q + * +q +); + +178 + `thad_msg_nd +( +t +-> +msgq_out +, +r +); + +182  +THREAD_MSG_REQ_PIPELINE_DISABLE +: { + +183 +r +-> +us + = + `thad_pe_dib +( +t +, + +184 ( +thad_pe_dib_msg_q + * +q +); + +185 + `thad_msg_nd +( +t +-> +msgq_out +, +r +); + +189  +THREAD_MSG_REQ_HEADROOM_READ +: { + +190  +thad_hdroom_ad_msg_r + * +r + = + +191 ( +thad_hdroom_ad_msg_r + *) + +192 +q +; + +194 +r +-> +hdroom_tio + = +t +->headroom_ratio; + +195 +r +-> +us + = 0; + +196 + `thad_msg_nd +( +t +-> +msgq_out +, +r +); + +204 + } +} + +207 + $thad_hdroom_upde +( +p_thad_da + * +t +, +ut64_t + +time +) + +209 +ut64_t + +time_diff + = +time + - +t +-> +hdroom_time +; + +211 +t +-> +hdroom_tio + = + +212 (( +t +-> +hdroom_cyes +/ (( +time_diff +); + +214 +t +-> +hdroom_cyes + = 0; + +215 +t +-> +hdroom_time + = + `e_rdtsc_eci +(); + +216 + } +} + +219 + $p_thad +(* +g +) + +221  +p_ms + * +p + = (p_m* +g +; + +222 +ut32_t + +ce_id + = + `e_lce_id +(), +i +, +j +; + +223  +p_thad_da + * +t + = & +p +-> +thad_da +[ +ce_id +]; + +225  +i + = 0; ; i++) { + +226 +ut32_t + +n_gur + = + `RTE_MIN +( +t +->n_gur, + `RTE_DIM +-> +gur +)); + +227 +ut32_t + +n_cuom + = + `RTE_MIN +( +t +->n_cuom, + `RTE_DIM +-> +cuom +)); + +230  +j + = 0; j < +n_gur +; j++) { + +231  +p_thad_pe_da + * +da + = & +t +-> +gur +[ +j +]; + +232  +pe + * +p + = +da +-> +be +; + +234 + `PIPELINE_RUN_REGULAR +( +t +, +p +); + +238  +j + = 0; j < +n_cuom +; j++) { + +239  +p_thad_pe_da + * +da + = & +t +-> +cuom +[ +j +]; + +241 + `PIPELINE_RUN_CUSTOM +( +t +, +da +); + +245 i(( +i + & 0xF) == 0) { + +246 +ut64_t + +time + = + `e_g_tsc_cyes +(); + +247 +ut64_t + +t_ddle + = +UINT64_MAX +; + +249 i( +time + < +t +-> +ddle +) + +253  +j + = 0; j < +n_gur +; j++) { + +254  +p_thad_pe_da + * +da + = + +255 & +t +-> +gur +[ +j +]; + +256 +ut64_t + +p_ddle + = +da +-> +ddle +; + +258 i( +p_ddle + < +time +) { + +259 +da +-> + `f_tim +(da-> +be +); + +260 +p_ddle + = +time + + +da +-> +tim_riod +; + +261 +da +-> +ddle + = +p_ddle +; + +264 i( +p_ddle + < +t_ddle +) + +265 +t_ddle + = +p_ddle +; + +269  +j + = 0; j < +n_cuom +; j++) { + +270  +p_thad_pe_da + * +da + = + +271 & +t +-> +cuom +[ +j +]; + +272 +ut64_t + +p_ddle + = +da +-> +ddle +; + +274 i( +p_ddle + < +time +) { + +275 +da +-> + `f_tim +(da-> +be +); + +276 +p_ddle + = +time + + +da +-> +tim_riod +; + +277 +da +-> +ddle + = +p_ddle +; + +280 i( +p_ddle + < +t_ddle +) + +281 +t_ddle + = +p_ddle +; + +286 +ut64_t + +ddle + = +t +-> +thad_q_ddle +; + +288 i( +ddle + < +time +) { + +289 + `thad_msg_q_hd +( +t +); + +290 + `thad_hdroom_upde +( +t +, +time +); + +291 +ddle + = +time + + +t +-> +tim_riod +; + +292 +t +-> +thad_q_ddle + = +ddle +; + +295 i( +ddle + < +t_ddle +) + +296 +t_ddle + = +ddle +; + +300 +t +-> +ddle + = +t_ddle +; + +305 + } +} + + @vnf_common/thread.h + +17 #ide +THREAD_H_ + + +18  + #THREAD_H_ + + + ) + +20  + ~"p.h +" + +21  + ~"pe_be.h +" + +23 + ethad_msg_q_ty + { + +24 + mTHREAD_MSG_REQ_PIPELINE_ENABLE + = 0, + +25 + mTHREAD_MSG_REQ_PIPELINE_DISABLE +, + +26 + mTHREAD_MSG_REQ_HEADROOM_READ +, + +27 + mTHREAD_MSG_REQS + + +30  + sthad_msg_q + { + +31 +thad_msg_q_ty + + mty +; + +34  + sthad_msg_r + { + +35  + mus +; + +41  + sthad_pe_ab_msg_q + { + +42 +thad_msg_q_ty + + mty +; + +44 +ut32_t + + mpe_id +; + +45 * + mbe +; + +46 +pe_be__run + + mf_run +; + +47 +pe_be__tim + + mf_tim +; + +48 +ut64_t + + mtim_riod +; + +51  + sthad_pe_ab_msg_r + { + +52  + mus +; + +58  + sthad_pe_dib_msg_q + { + +59 +thad_msg_q_ty + + mty +; + +61 +ut32_t + + mpe_id +; + +64  + sthad_pe_dib_msg_r + { + +65  + mus +; + +71  + sthad_hdroom_ad_msg_q + { + +72 +thad_msg_q_ty + + mty +; + +75  + sthad_hdroom_ad_msg_r + { + +76  + mus +; + +78  + mhdroom_tio +; + + @vnf_common/thread_fe.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +29  + ~"thad.h +" + +30  + ~"thad_.h +" + +31  + ~"pe.h +" + +32  + ~"pe_comm_.h +" + +33  + ~"p.h +" + +35  +le + * + +36 + $thad_msg_nd_cv +( +p_ms + * +p +, + +37 +ut32_t + +sock_id +, ut32_ +ce_id +, ut32_ +ht_id +, + +38 * +msg +, + +39 +ut32_t + +timeout_ms +) + +41  +e_rg + * +r_q + = + `p_thad_msgq__g +( +p +, + +42 +sock_id +, +ce_id +, +ht_id +); + +43 if( +r_q + = +NULL +) + +44  +NULL +; + +45  +e_rg + * +r_r + = + `p_thad_msgq_out_g +( +p +, + +46 +sock_id +, +ce_id +, +ht_id +); + +47 if( +r_r + = +NULL +) + +48  +NULL +; + +49 +ut64_t + +hz + = + `e_g_tsc_hz +(); + +50 * +msg_cv +; + +51 +ut64_t + +ddle +; + +52  +us +; + +56 +us + = + `e_rg__queue +( +r_q +, (* +msg +); + +57 }  +us + =- +ENOBUFS +); + +60 +ddle + = ( +timeout_ms +) ? + +61 ( + `e_rdtsc +(+ (( +hz + * +timeout_ms +) / 1000)) : + +62 +UINT64_MAX +; + +65 i( + `e_rdtsc +(> +ddle +) + +66  +NULL +; + +68 +us + = + `e_rg_sc_dequeue +( +r_r +, & +msg_cv +); + +69 }  +us + != 0); + +71  +msg_cv +; + +72 + } +} + +75 + $p_pe_ab +( +p_ms + * +p +, + +76 +ut32_t + +sock_id +, + +77 +ut32_t + +ce_id +, + +78 +ut32_t + +hyr_th_id +, + +79 +ut32_t + +pe_id +) + +81  +thad_pe_ab_msg_q + * +q +; + +82  +thad_pe_ab_msg_r + * +r +; + +83  +thad_id +; + +84  +p_pe_da + * +p +; + +85  +p_pe_ms + * +p_ms +; + +86  +pe_ty + * +p_ty +; + +87  +us +; + +89 i( +p + = +NULL +) + +92 +thad_id + = + `u_ce_m_g_lce_id +( +p +-> +ce_m +, + +93 +sock_id +, + +94 +ce_id +, + +95 +hyr_th_id +); + +97 i(( +thad_id + < 0|| ! + `p_ce_is_abd +( +p +,hread_id)) + +100 i( + `p_pe_da +( +p +, +pe_id += +NULL +) + +103 +p + = & +p +-> +pe_da +[ +pe_id +]; + +104 +p_ms + = & +p +-> +pe_ms +[ +pe_id +]; + +105 +p_ty + = + `p_pe_ty_fd +( +p +, +p_ms +-> +ty +); + +106 i( +p_ty + = +NULL +) + +109 i( +p +-> +abd + == 1) + +112 +q + = + `p_msg_loc +( +p +); + +113 i( +q + = +NULL +) + +116 +q +-> +ty + = +THREAD_MSG_REQ_PIPELINE_ENABLE +; + +117 +q +-> +pe_id + =ipeline_id; + +118 +q +-> +be + = +p +->be; + +119 +q +-> +f_run + = +p_ty +-> +be_s +->f_run; + +120 +q +-> +f_tim + = +p_ty +-> +be_s +->f_timer; + +121 +q +-> +tim_riod + = +p +->timer_period; + +123 +r + = + `thad_msg_nd_cv +( +p +, + +124 +sock_id +, +ce_id +, +hyr_th_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +125 i( +r + = +NULL +) + +128 +us + = +r +->status; + +129 + `p_msg_ +( +p +, +r +); + +131 i( +us + != 0) + +134 +p +-> +abd + = 1; + +136 + } +} + +139 + $p_pe_dib +( +p_ms + * +p +, + +140 +ut32_t + +sock_id +, + +141 +ut32_t + +ce_id +, + +142 +ut32_t + +hyr_th_id +, + +143 +ut32_t + +pe_id +) + +145  +thad_pe_dib_msg_q + * +q +; + +146  +thad_pe_dib_msg_r + * +r +; + +147  +thad_id +; + +148  +p_pe_da + * +p +; + +149  +us +; + +151 i( +p + = +NULL +) + +154 +thad_id + = + `u_ce_m_g_lce_id +( +p +-> +ce_m +, + +155 +sock_id +, + +156 +ce_id +, + +157 +hyr_th_id +); + +159 i(( +thad_id + < 0|| ! + `p_ce_is_abd +( +p +,hread_id)) + +162 i( + `p_pe_da +( +p +, +pe_id += +NULL +) + +165 +p + = & +p +-> +pe_da +[ +pe_id +]; + +167 i( +p +-> +abd + == 0) + +170 +q + = + `p_msg_loc +( +p +); + +171 i( +q + = +NULL +) + +174 +q +-> +ty + = +THREAD_MSG_REQ_PIPELINE_DISABLE +; + +175 +q +-> +pe_id + =ipeline_id; + +177 +r + = + `thad_msg_nd_cv +( +p +, + +178 +sock_id +, +ce_id +, +hyr_th_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +180 i( +r + = +NULL +) + +183 +us + = +r +->status; + +184 + `p_msg_ +( +p +, +r +); + +186 i( +us + != 0) + +189 +p +-> +abd + = 0; + +191 + } +} + +194 + $p_thad_hdroom +( +p_ms + * +p +, + +195 +ut32_t + +sock_id +, + +196 +ut32_t + +ce_id +, + +197 +ut32_t + +hyr_th_id +) + +199  +thad_hdroom_ad_msg_q + * +q +; + +200  +thad_hdroom_ad_msg_r + * +r +; + +201  +thad_id +; + +202  +us +; + +204 i( +p + = +NULL +) + +207 +thad_id + = + `u_ce_m_g_lce_id +( +p +-> +ce_m +, + +208 +sock_id +, + +209 +ce_id +, + +210 +hyr_th_id +); + +212 i(( +thad_id + < 0|| ! + `p_ce_is_abd +( +p +,hread_id)) + +215 +q + = + `p_msg_loc +( +p +); + +216 i( +q + = +NULL +) + +219 +q +-> +ty + = +THREAD_MSG_REQ_HEADROOM_READ +; + +221 +r + = + `thad_msg_nd_cv +( +p +, + +222 +sock_id +, +ce_id +, +hyr_th_id +, +q +, +MSG_TIMEOUT_DEFAULT +); + +224 i( +r + = +NULL +) + +227 +us + = +r +->status; + +229 i( +us + != 0) + +232 + `tf +("%.3f%%\n", +r +-> +hdroom_tio + * 100); + +235 + `p_msg_ +( +p +, +r +); + +238 + } +} + +244  + scmd_pe_ab_su + { + +245 +cmdle_fixed_rg_t + + mt_rg +; + +246 +cmdle_fixed_rg_t + + mt_id_rg +; + +247 +cmdle_fixed_rg_t + + mpe_rg +; + +248 +ut32_t + + mpe_id +; + +249 +cmdle_fixed_rg_t + + mab_rg +; + +253 + $cmd_pe_ab_rd +( + +254 * +rd_su +, + +255 +__e_unud +  +cmdle + * + +, + +256 * +da +) + +258  +cmd_pe_ab_su + * +ms + = +rd_su +; + +259  +p_ms + * +p + = +da +; + +260  +us +; + +261 +ut32_t + +ce_id +, +sock_id +, +hyr_th_id +; + +263 i( + `r_pe_ce +(& +sock_id +, + +264 & +ce_id +, + +265 & +hyr_th_id +, + +266 +ms +-> +t_id_rg +) != 0) { + +267 + `tf +("Command failed\n"); + +271 +us + = + `p_pe_ab +( +p +, + +272 +sock_id +, + +273 +ce_id +, + +274 +hyr_th_id +, + +275 +ms +-> +pe_id +); + +277 i( +us + != 0) + +278 + `tf +("Command failed\n"); + +279 + } +} + +281 +cmdle_r_tok_rg_t + + gcmd_pe_ab_t_rg + = + +282 +TOKEN_STRING_INITIALIZER +( +cmd_pe_ab_su +, +t_rg +, "t"); + +284 +cmdle_r_tok_rg_t + + gcmd_pe_ab_t_id_rg + = + +285 +TOKEN_STRING_INITIALIZER +( +cmd_pe_ab_su +, +t_id_rg +, + +286 +NULL +); + +288 +cmdle_r_tok_rg_t + + gcmd_pe_ab_pe_rg + = + +289 +TOKEN_STRING_INITIALIZER +( +cmd_pe_ab_su +, +pe_rg +, + +292 +cmdle_r_tok_num_t + + gcmd_pe_ab_pe_id + = + +293 +TOKEN_NUM_INITIALIZER +( +cmd_pe_ab_su +, +pe_id +, + +294 +UINT32 +); + +296 +cmdle_r_tok_rg_t + + gcmd_pe_ab_ab_rg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_pe_ab_su +, +ab_rg +, + +300 +cmdle_r__t + + gcmd_pe_ab + = { + +301 . +f + = +cmd_pe_ab_rd +, + +302 . + gda + = +NULL +, + +303 . + ghp_r + = "Enableipeline on specified core", + +304 . + gtoks + = { + +305 (*)& +cmd_pe_ab_t_rg +, + +306 (*)& +cmd_pe_ab_t_id_rg +, + +307 (*)& +cmd_pe_ab_pe_rg +, + +308 (*)& +cmd_pe_ab_pe_id +, + +309 (*)& +cmd_pe_ab_ab_rg +, + +310 +NULL +, + +318  + scmd_pe_dib_su + { + +319 +cmdle_fixed_rg_t + + mt_rg +; + +320 +cmdle_fixed_rg_t + + mt_id_rg +; + +321 +cmdle_fixed_rg_t + + mpe_rg +; + +322 +ut32_t + + mpe_id +; + +323 +cmdle_fixed_rg_t + + mdib_rg +; + +327 + $cmd_pe_dib_rd +( + +328 * +rd_su +, + +329 +__e_unud +  +cmdle + * + +, + +330 * +da +) + +332  +cmd_pe_dib_su + * +ms + = +rd_su +; + +333  +p_ms + * +p + = +da +; + +334  +us +; + +335 +ut32_t + +ce_id +, +sock_id +, +hyr_th_id +; + +337 i( + `r_pe_ce +(& +sock_id +, + +338 & +ce_id +, + +339 & +hyr_th_id +, + +340 +ms +-> +t_id_rg +) != 0) { + +341 + `tf +("Command failed\n"); + +345 +us + = + `p_pe_dib +( +p +, + +346 +sock_id +, + +347 +ce_id +, + +348 +hyr_th_id +, + +349 +ms +-> +pe_id +); + +351 i( +us + != 0) + +352 + `tf +("Command failed\n"); + +353 + } +} + +355 +cmdle_r_tok_rg_t + + gcmd_pe_dib_t_rg + = + +356 +TOKEN_STRING_INITIALIZER +( +cmd_pe_dib_su +, +t_rg +, "t"); + +358 +cmdle_r_tok_rg_t + + gcmd_pe_dib_t_id_rg + = + +359 +TOKEN_STRING_INITIALIZER +( +cmd_pe_dib_su +, +t_id_rg +, + +360 +NULL +); + +362 +cmdle_r_tok_rg_t + + gcmd_pe_dib_pe_rg + = + +363 +TOKEN_STRING_INITIALIZER +( +cmd_pe_dib_su +, + +364 +pe_rg +, "pipeline"); + +366 +cmdle_r_tok_num_t + + gcmd_pe_dib_pe_id + = + +367 +TOKEN_NUM_INITIALIZER +( +cmd_pe_dib_su +, +pe_id +, + +368 +UINT32 +); + +370 +cmdle_r_tok_rg_t + + gcmd_pe_dib_dib_rg + = + +371 +TOKEN_STRING_INITIALIZER +( +cmd_pe_dib_su +, +dib_rg +, + +374 +cmdle_r__t + + gcmd_pe_dib + = { + +375 . +f + = +cmd_pe_dib_rd +, + +376 . + gda + = +NULL +, + +377 . + ghp_r + = "Disableipeline on specified core", + +378 . + gtoks + = { + +379 (*)& +cmd_pe_dib_t_rg +, + +380 (*)& +cmd_pe_dib_t_id_rg +, + +381 (*)& +cmd_pe_dib_pe_rg +, + +382 (*)& +cmd_pe_dib_pe_id +, + +383 (*)& +cmd_pe_dib_dib_rg +, + +384 +NULL +, + +393  + scmd_thad_hdroom_su + { + +394 +cmdle_fixed_rg_t + + mt_rg +; + +395 +cmdle_fixed_rg_t + + mt_id_rg +; + +396 +cmdle_fixed_rg_t + + mhdroom_rg +; + +400 + $cmd_thad_hdroom_rd +( + +401 * +rd_su +, + +402 +__e_unud +  +cmdle + * + +, + +403 * +da +) + +405  +cmd_thad_hdroom_su + * +ms + = +rd_su +; + +406  +p_ms + * +p + = +da +; + +407  +us +; + +408 +ut32_t + +ce_id +, +sock_id +, +hyr_th_id +; + +410 i( + `r_pe_ce +(& +sock_id +, + +411 & +ce_id +, + +412 & +hyr_th_id +, + +413 +ms +-> +t_id_rg +) != 0) { + +414 + `tf +("Command failed\n"); + +418 +us + = + `p_thad_hdroom +( +p +, + +419 +sock_id +, + +420 +ce_id +, + +421 +hyr_th_id +); + +423 i( +us + != 0) + +424 + `tf +("Command failed\n"); + +425 + } +} + +427 +cmdle_r_tok_rg_t + + gcmd_thad_hdroom_t_rg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_thad_hdroom_su +, + +429 +t_rg +, "t"); + +431 +cmdle_r_tok_rg_t + + gcmd_thad_hdroom_t_id_rg + = + +432 +TOKEN_STRING_INITIALIZER +( +cmd_thad_hdroom_su +, + +433 +t_id_rg +, +NULL +); + +435 +cmdle_r_tok_rg_t + + gcmd_thad_hdroom_hdroom_rg + = + +436 +TOKEN_STRING_INITIALIZER +( +cmd_thad_hdroom_su +, + +437 +hdroom_rg +, "headroom"); + +439 +cmdle_r__t + + gcmd_thad_hdroom + = { + +440 . +f + = +cmd_thad_hdroom_rd +, + +441 . + gda + = +NULL +, + +442 . + ghp_r + = "Displayhread headroom", + +443 . + gtoks + = { + +444 (*)& +cmd_thad_hdroom_t_rg +, + +445 (*)& +cmd_thad_hdroom_t_id_rg +, + +446 (*)& +cmd_thad_hdroom_hdroom_rg +, + +447 +NULL +, + +452  +cmdle_r_x_t + + gthad_cmds +[] = { + +453 ( +cmdle_r__t + *& +cmd_pe_ab +, + +454 ( +cmdle_r__t + *& +cmd_pe_dib +, + +455 ( +cmdle_r__t + *& +cmd_thad_hdroom +, + +456 +NULL +, + +460 + $p_pe_thad_cmd_push +( +p_ms + * +p +) + +462 +ut32_t + +n_cmds +, +i +; + +465 +n_cmds + = + `RTE_DIM +( +thad_cmds +) - 1; + +466 i( +n_cmds + > +APP_MAX_CMDS + - +p +->n_cmds) + +467  - +ENOMEM +; + +470 + `memy +(& +p +-> +cmds +[p-> +n_cmds +], +thad_cmds +, + +471 +n_cmds + * ( +cmdle_r_x_t +)); + +473  +i + = 0; i < +n_cmds +; i++) + +474 +p +-> +cmds +[p-> +n_cmds + + +i +]-> +da + =pp; + +476 +p +-> +n_cmds + +=_cmds; + +477 +p +-> +cmds +[p-> +n_cmds +] = +NULL +; + +480 + } +} + + @vnf_common/thread_fe.h + +17 #ide +THREAD_FE_H_ + + +18  + #THREAD_FE_H_ + + + ) + +20  +le +  +e_rg + * + +21 + $p_thad_msgq__g +( +p_ms + * +p +, + +22 +ut32_t + +sock_id +, ut32_ +ce_id +, ut32_ +ht_id +) + +24  +msgq_me +[32]; + +25 +ssize_t + +m_idx +; + +27 + `tf +( +msgq_me +, (msgq_name), + +28 "MSGQ-REQ-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +29 +sock_id +, + +30 +ce_id +, + +31 ( +ht_id +) ? "h" : ""); + +32 +m_idx + = + `APP_PARAM_FIND +( +p +-> +msgq_ms +, +msgq_me +); + +34 i( +m_idx + < 0) + +35  +NULL +; + +37  +p +-> +msgq +[ +m_idx +]; + +38 + } +} + +40  +le +  +e_rg + * + +41 + $p_thad_msgq_out_g +( +p_ms + * +p +, + +42 +ut32_t + +sock_id +, ut32_ +ce_id +, ut32_ +ht_id +) + +44  +msgq_me +[32]; + +45 +ssize_t + +m_idx +; + +47 + `tf +( +msgq_me +, (msgq_name), + +48 "MSGQ-RSP-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +49 +sock_id +, + +50 +ce_id +, + +51 ( +ht_id +) ? "h" : ""); + +52 +m_idx + = + `APP_PARAM_FIND +( +p +-> +msgq_ms +, +msgq_me +); + +54 i( +m_idx + < 0) + +55  +NULL +; + +57  +p +-> +msgq +[ +m_idx +]; + +59 + } +} + +62 +p_pe_thad_cmd_push +( +p_ms + * +p +); + +65 +p_pe_ab +( +p_ms + * +p +, + +66 +ut32_t + +ce_id +, + +67 +ut32_t + +sock_id +, + +68 +ut32_t + +hyr_th_id +, + +69 +ut32_t + +pe_id +); + +72 +p_pe_dib +( +p_ms + * +p +, + +73 +ut32_t + +ce_id +, + +74 +ut32_t + +sock_id +, + +75 +ut32_t + +hyr_th_id +, + +76 +ut32_t + +pe_id +); + +79 +p_thad_hdroom +( +p_ms + * +p +, + +80 +ut32_t + +ce_id +, + +81 +ut32_t + +sock_id +, + +82 +ut32_t + +hyr_th_id +); + + @vnf_common/vnf_common.c + +17  + ~ + +18  + ~ + +19  + ~"vnf_comm.h +" + +20  + ~"pe_picmp_be.h +" + +21 #ide +VNF_ACL + + +22  + ~"lib_p.h +" + +25 +ut8_t + + g_pt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +26 +ut8_t + + gv_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +27 +ut8_t + + gpub_to_v_m +[ +PIPELINE_MAX_PORT_IN +]; + +28 +ut8_t + + gv__pt_a +[ +PIPELINE_MAX_PORT_IN +]; + +29 +ut8_t + + gv_que_pt_dex +[ +PIPELINE_MAX_PORT_IN +]; + +30 +ut8_t + + g_pt_egss_v +[ +PIPELINE_MAX_PORT_IN +]; + +32 +ut8_t + + $g__pt_d +( +ut8_t + +_pt_id +) + +34  +_pt_d_a +[ +_pt_id +]; + +35 + } +} + +37 +ut8_t + + $is_phy_pt_iv +( +ut16_t + +phy_pt +) + +39  +_pt_d_a +[ +phy_pt +]; + +40 + } +} + +42 +ut8_t + + $is_pt_dex_iv +( +ut16_t + +phy_pt +) + +44  +_pt_egss_v +[ +phy_pt +]; + +45 + } +} + +47 +ut32_t + + $g_v_to_pub_pt +( +ut32_t + * +_addr +, +ut8_t + +ty +) + +49 +ut32_t + +de_if + = 0xff; + +51  +ty +) { + +54 +ut32_t + +nh +; + +55 +nh + = + `g_nh +( +_addr +[0], & +de_if +); + +57 i( +nh +) + +58  +de_if +; + +64 +ut8_t + +nhv6 +[16]; + +65 + `g_nh_v6 +(( +ut8_t + *) +_addr +, & +de_if +, & +nhv6 +[0]); + +66 i( +de_if + != 0xff) + +67  +de_if +; + +73 + } +} + +75 +ut32_t + + $g_pub_to_v_pt +( +ut32_t + * +_addr +, +ut8_t + +ty +) + +77 +ut32_t + +de_if + = 0xff; + +79  +ty +) { + +82 +ut32_t + +nh +; + +83 +nh + = + `g_nh +( +_addr +[0], & +de_if +); + +85 i( +nh +) + +86  +de_if +; + +92 +ut8_t + +nhv6 +[16]; + +93 + `g_nh_v6 +(( +ut8_t + *) +_addr +, & +de_if +, & +nhv6 +[0]); + +94 i( +de_if + != 0xff) + +95  +de_if +; + +101 + } +} + +103  + $show_pts_fo +() + +105 + `tf +("\n_pt_d_a: %d %d %d %d %d", +_pt_d_a +[0], + +106 +_pt_d_a +[1], in_port_dir_a[2], in_port_dir_a[3], + +107 +_pt_d_a +[4]); + +109 +ut8_t + +i + = 0, +j + = 0; + +111 + `tf +("\nprv_to_pub_map: "); + +112  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +113 i( +v_to_pub_m +[ +i +] != 0xff) + +114 + `tf +("(%d,%d ", +i +, +v_to_pub_m +[i]); + +117 + `tf +("\npub_to_prv_map: "); + +118  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +119 i( +pub_to_v_m +[ +i +] != 0xff) + +120 + `tf +("(%d,%d ", +i +, +pub_to_v_m +[i]); + +123 + `tf +("\n%dr PtMAC Li\n", +lk_hw_addr_y_idx +); + +124  +j + = 0; j < +lk_hw_addr_y_idx +; j++) { + +125  +h_addr + * +lk_hw_addr + = + `g_lk_hw_addr +( +j +); + +127  +i + = 0; i < 6; i++) + +128 + `tf +(" %02x ", (( +h_addr + *) +lk_hw_addr +)-> +addr_bys +[ +i +]); + +129 + `tf +("\n"); + +131 + } +} + +133  + $im +(* +put +) + +135  +i +, +j + = 0; + +136  +n + = + ` +( +put +); + +137  +su +[ +n + + 1]; + +139 + `memt +( +su +, 0, (result)); + +140  +i + = 0; +put +[i] != '\0'; i++) { + +141 i(! + `isa +( +put +[ +i +])) + +142 +su +[ +j +++] = +put +[ +i +]; + +145 + `y +( +put +, +su +, +n +); + +146 + } +} + + @vnf_common/vnf_common.h + +17 #ide +__INCLUDE_VNF_COMMON_H__ + + +18  + #__INCLUDE_VNF_COMMON_H__ + + + ) + +20  + ~ + +21  + ~ + +23  + #MBUF_HDR_ROOM + 256 + + ) + +24  + #ETH_HDR_SIZE + 14 + + ) + +25  + #IP_HDR_SRC_ADR_OFST + 12 + + ) + +26  + #IP_HDR_DST_ADR_OFST + 16 + + ) + +27  + #IP_HDR_PROTOCOL_OFST + 9 + + ) + +28  + #IP_HDR_SIZE + 20 + + ) + +29  + #IPV6_HDR_SRC_ADR_OFST + 8 + + ) + +30  + #IPV6_HDR_DST_ADR_OFST + 24 + + ) + +31  + #IPV6_HDR_PROTOCOL_OFST + 6 + + ) + +32  + #IPV6_HDR_SIZE + 40 + + ) + +34  + #ETH_TYPE_ARP + 0x0806 + + ) + +35  + #ETH_TYPE_IPV4 + 0x0800 + + ) + +37  + #IP_PROTOCOL_ICMP + 1 + + ) + +38  + #IP_PROTOCOL_TCP + 6 + + ) + +39  + #IP_PROTOCOL_UDP + 17 + + ) + +41  + #ETH_TYPE_IPV6 + 0x86DD + + ) + +42  + #IP_PROTOCOL_ICMPV6 + 58 + + ) + +44  + #PKT_ING_DIR + 0 + + ) + +45  + #PKT_EGR_DIR + 1 + + ) + +47 #ide +PIPELINE_MAX_PORT_IN + + +48  + #PIPELINE_MAX_PORT_IN + 16 + + ) + +51  + #RTE_PIPELINE_MAX_NAME_SZ + 124 + + ) + +53  + #INVALID_DESTIF + 255 + + ) + +56 + mVNF_PRV_PORT_ID +, + +57 + mVNF_PUB_PORT_ID +, + +59  +show_pts_fo +(); + +60  +im +(* +put +); + +61 +ut8_t + +g__pt_d +(ut8_ +_pt_id +); + +62 +ut8_t + +is_phy_pt_iv +( +ut16_t + +phy_pt +); + +63 +ut32_t + +g_v_to_pub_pt +(ut32_* +_addr +, +ut8_t + +ty +); + +64 +ut32_t + +g_pub_to_v_pt +(ut32_* +_addr +, +ut8_t + +ty +); + +66  +le +  + $dr_pkt +( +ut32_t + +pkt_num +, +ut64_t + * +mask +) + +68 * +mask + ^1LLU << +pkt_num +; + +69 + } +} + +71 +ut8_t + +_pt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +72 +ut8_t + +v_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +73 +ut8_t + +pub_to_v_m +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ut8_t + +v__pt_a +[ +PIPELINE_MAX_PORT_IN +]; + +76 +ut32_t + +lk_hw_addr_y_idx +; + +78  + se_pt_ + { + +80  +e_pt__s + + ms +; + +81 +e_pe_pt__ai_hdr + + mf_ai +; + +82 * + mg_ah +; + +83 +ut32_t + + mbur_size +; + +86 +ut32_t + + mb_id +; + +89 * + mh_pt +; + +92  +e_pt_ + * + mxt +; + +95 +ut64_t + + mn_pkts_drݳd_by_ah +; + +98  + se_pt_out + { + +100  +e_pt_out_s + + ms +; + +101 +e_pe_pt_out_ai_hdr + + mf_ai +; + +102 * + mg_ah +; + +105 * + mh_pt +; + +108 +ut64_t + + mn_pkts_drݳd_by_ah +; + +111  + se_b + { + +113  +e_b_s + + ms +; + +114 +e_pe_b_ai_hdr_h + + mf_ai_h +; + +115 +e_pe_b_ai_hdr_miss + + mf_ai_miss +; + +116 * + mg_ah +; + +117  +e_pe_b_y + * + mdeu_y +; + +118 +ut32_t + + my_size +; + +120 +ut32_t + + mb_xt_id +; + +121 +ut32_t + + mb_xt_id_vid +; + +124 * + mh_b +; + +127 +ut64_t + + mn_pkts_drݳd_by_lkp_h_ah +; + +128 +ut64_t + + mn_pkts_drݳd_by_lkp_miss_ah +; + +129 +ut64_t + + mn_pkts_drݳd_lkp_h +; + +130 +ut64_t + + mn_pkts_drݳd_lkp_miss +; + +134  + se_pe + { + +136  + mme +[ +RTE_PIPELINE_MAX_NAME_SZ +]; + +137  + msock_id +; + +138 +ut32_t + + mofft_pt_id +; + +141  +e_pt_ + + mpts_ +[ +RTE_PIPELINE_PORT_IN_MAX +]; + +142  +e_pt_out + + mpts_out +[ +RTE_PIPELINE_PORT_OUT_MAX +]; + +143  +e_b + + mbs +[ +RTE_PIPELINE_TABLE_MAX +]; + +146 +ut32_t + + mnum_pts_ +; + +147 +ut32_t + + mnum_pts_out +; + +148 +ut32_t + + mnum_bs +; + +151 +ut64_t + + mabd_pt__mask +; + +152  +e_pt_ + * + mpt__xt +; + +155  +e_mbuf + * + mpkts +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +156  +e_pe_b_y + * + ms +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +157 +ut64_t + + mai_mask0 +[ +RTE_PIPELINE_ACTIONS +]; + +158 +ut64_t + + mai_mask1 +[ +RTE_PIPELINE_ACTIONS +]; + +159 +ut64_t + + mpkts_mask +; + +160 +ut64_t + + mn_pkts_ah_dr +; + +161 +ut64_t + + mpkts_dr_mask +; + +162 } + g__e_che_igd +; + +165  + se_pt_hdev_wr + { + +166  +e_pt_out_s + + ms +; + +168  +e_mbuf + * + mtx_buf +[2 * +RTE_PORT_IN_BURST_SIZE_MAX +]; + +169 +ut32_t + + mtx_bur_sz +; + +170 +ut16_t + + mtx_buf_cou +; + +171 +ut64_t + + mbsz_mask +; + +172 +ut16_t + + mqueue_id +; + +173 +ut8_t + + mpt_id +; + +175  + se_pt_hdev_ad + { + +176  +e_pt__s + + ms +; + +178 +ut16_t + + mqueue_id +; + +179 +ut8_t + + mpt_id +; + +181  + se_pt_rg_wr + { + +182  +e_pt_out_s + + ms +; + +184  +e_mbuf + * + mtx_buf +[2 * +RTE_PORT_IN_BURST_SIZE_MAX +]; + +185  +e_rg + * + mrg +; + +186 +ut32_t + + mtx_bur_sz +; + +187 +ut32_t + + mtx_buf_cou +; + +188 +ut64_t + + mbsz_mask +; + +189 +ut32_t + + mis_mui +; + +191  + se_pt_rg_ad + { + +192  +e_pt__s + + ms +; + +194  +e_rg + * + mrg +; + +197 +ut8_t + +g__pt_d +(ut8_ +_pt_id +); + +198 +ut8_t + +is_phy_pt_iv +( +ut16_t + +phy_pt +); + +199 +ut8_t + +is_pt_dex_iv +( +ut16_t + +phy_pt +); + + @vnf_common/vnf_define.h + +17 #ide +__INCLUDE_VNF_DEFINE_H__ + + +18  + #__INCLUDE_VNF_DEFINE_H__ + + + ) + +19  + #DEBUG_LEVEL_4 + 4 + + ) + +20  + #PKT_BUFFER_SIZE + 64 + + ) + +21  + #PVT_PUB_MAP + 2 + + ) + +22  + #IPV6_ADD_SIZE + 16 + + ) + +23  + #TWO_BYTE_PRINT + 3 + + ) + +24  + #VERSION_NO_BYTE + 4 + + ) + +25  + #BIT_CARRY + 16 + + ) + +26  + #HW_ADDR_SIZE + 20 + + ) + +27  + #IPV6_ADD_CMP_MULTI + 13 + + ) + +28  + #DIV_CONV_HZ_SEC + 1000 + + ) + + @/usr/include/arpa/inet.h + +18 #ide +_ARPA_INET_H + + +19  + #_ARPA_INET_H + 1 + + ) + +21  + ~ + +22  + ~ + +25 #ide +__sockn_t_defed + + +26  +__sockn_t + + tsockn_t +; + +27  + #__sockn_t_defed + + + ) + +30 +__BEGIN_DECLS + + +34 +_addr_t + + $_addr + (cڡ * +__ + +__THROW +; + +37 +_addr_t + + $_aof + ( +_addr + +__ + +__THROW +; + +41  +_addr + + $_makddr + ( +_addr_t + +__t +, in_addr_ +__ho +) + +42 +__THROW +; + +45 +_addr_t + + $_tof + ( +_addr + +__ + +__THROW +; + +49 +_addr_t + + $_twk + (cڡ * +__ + +__THROW +; + +53 * + $_ + ( +_addr + +__ + +__THROW +; + +58  + $_ + ( +__af +, cڡ * +__ri + +__ +, + +59 * +__ri + +__buf + +__THROW +; + +64 cڡ * + $_ + ( +__af +, cڡ * +__ri + +__ +, + +65 * +__ri + +__buf +, +sockn_t + +__n +) + +66 +__THROW +; + +70 #ifde +__USE_MISC + + +73  + $_ + (cڡ * +__ +,  +_addr + * +__p + +__THROW +; + +77 * + $_Ï + ( +_addr_t + +__t +, * +__buf +, +size_t + +__n + +__THROW +; + +82 * + $_t_ + ( +__af +, cڡ * +__ +,  +__bs +, + +83 * +__buf +, +size_t + +__n + +__THROW +; + +88  + $_t_ + ( +__af +, cڡ * +__ +, + +89 * +__buf +, +size_t + +__n + +__THROW +; + +94  + $_np_addr + (cڡ * +__ +, + +95 * +__buf +,  +__n + +__THROW +; + +99 * + $_np_ + ( +__n +, cڡ * +__ +, + +100 * +__buf + +__THROW +; + +103 +__END_DECLS + + + @/usr/include/ctype.h + +22 #idef +_CTYPE_H + + +23  + #_CTYPE_H + 1 + + ) + +25  + ~ + +26  + ~ + +28 + g__BEGIN_DECLS + + +30 #ide +_ISb + + +39  + ~ + +40 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +41  + #_ISb +( +b +(1 << (b)) + + ) + +43  + #_ISb +( +b +((b< 8 ? ((1 << (b)<< 8: ((1 << (b)>> 8)) + + ) + +48 + m_ISu + = +_ISb + (0), + +49 + m_ISlow + = +_ISb + (1), + +50 + m_ISpha + = +_ISb + (2), + +51 + m_ISdig + = +_ISb + (3), + +52 + m_ISxdig + = +_ISb + (4), + +53 + m_ISa + = +_ISb + (5), + +54 + m_ISt + = +_ISb + (6), + +55 + m_ISgph + = +_ISb + (7), + +56 + m_ISbnk + = +_ISb + (8), + +57 + m_ISl + = +_ISb + (9), + +58 + m_ISpun + = +_ISb + (10), + +59 + m_ISnum + = +_ISb + (11) + +79 cڡ ** + $__y_b_loc + () + +80 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +81 cڡ +__t32_t + ** + $__y_tow_loc + () + +82 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +83 cڡ +__t32_t + ** + $__y_tou_loc + () + +84 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +87 #ide +__lulus + + +88  + #__isy +( +c +, +ty +) \ + +89 ((* + `__y_b_loc + ())[(( +c +)] & ( +ty +) + + ) + +90 #i +defed + +__USE_EXTERN_INLINES + + +91  + #__isy_f +( +ty +) \ + +92 +__ex_le + \ + +93 +is +## + `ty + ( +__c + +__THROW + \ + +95  (* + `__y_b_loc + ())[(( +__c +)] & ( +_IS +## +ty +; \ + +96 + } + + ) +} + +99  + #__iscii +( +c +(((c& ~0x7f=0 + + ) + +100  + #__tscii +( +c +((c& 0x7f + + ) + +102  + #__exy +( +me +  + `me + ( +__THROW + + + ) + +104 +__BEGIN_NAMESPACE_STD + + +110 +__exy + ( +ium +); + +111 +__exy + ( +iha +); + +112 +__exy + ( +isl +); + +113 +__exy + ( +isdig +); + +114 +__exy + ( +iow +); + +115 +__exy + ( +isgph +); + +116 +__exy + ( +irt +); + +117 +__exy + ( +iun +); + +118 +__exy + ( +isa +); + +119 +__exy + ( +isu +); + +120 +__exy + ( +isxdig +); + +124  + $tow + ( +__c + +__THROW +; + +127  + $tou + ( +__c + +__THROW +; + +129 +__END_NAMESPACE_STD + + +133 #ifdef +__USE_ISOC99 + + +134 +__BEGIN_NAMESPACE_C99 + + +136 + `__exy + ( +isbnk +); + +138 +__END_NAMESPACE_C99 + + +141 #ifde +__USE_GNU + + +143  + $isy + ( +__c +,  +__mask + +__THROW +; + +146 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +150  + $iscii + ( +__c + +__THROW +; + +154  + $tscii + ( +__c + +__THROW +; + +158 + `__exy + ( +_tou +); + +159 + `__exy + ( +_tow +); + +163  + #__tobody +( +c +, +f +, +a +, +gs +) \ + +164 ( +__exnsi__ + \ + +165 ({  +__s +; \ + +166 i( ( +c +) > 1) \ + +168 i( + `__but_cڡt_p + ( +c +)) \ + +170  +__c + = ( +c +); \ + +171 +__s + = +__c + < -128 || __> 255 ? __: ( +a +)[__c]; \ + +174 +__s + = +f + +gs +; \ + +177 +__s + = ( +a +)[(( +c +)]; \ + +178 +__s +; + } +})) + + ) + +180 #i! +defed + +__NO_CTYPE + + +181 #ifde +__isy_f + + +182 + $__isy_f + ( +num +) + +183 + $__isy_f + ( +pha +) + +184 + $__isy_f + ( +l +) + +185 + $__isy_f + ( +dig +) + +186 + $__isy_f + ( +low +) + +187 + $__isy_f + ( +gph +) + +188 + $__isy_f + ( +t +) + +189 + $__isy_f + ( +pun +) + +190 + $__isy_f + ( +a +) + +191 + $__isy_f + ( +u +) + +192 + $__isy_f + ( +xdig +) + +193 #ifde +__USE_ISOC99 + + +194 + $__isy_f + ( +bnk +) + +196 #i +defed + +__isy + + +197  + #ium +( +c + + `__isy +((c), +_ISnum +) + + ) + +198  + #iha +( +c + + `__isy +((c), +_ISpha +) + + ) + +199  + #isl +( +c + + `__isy +((c), +_ISl +) + + ) + +200  + #isdig +( +c + + `__isy +((c), +_ISdig +) + + ) + +201  + #iow +( +c + + `__isy +((c), +_ISlow +) + + ) + +202  + #isgph +( +c + + `__isy +((c), +_ISgph +) + + ) + +203  + #irt +( +c + + `__isy +((c), +_ISt +) + + ) + +204  + #iun +( +c + + `__isy +((c), +_ISpun +) + + ) + +205  + #isa +( +c + + `__isy +((c), +_ISa +) + + ) + +206  + #isu +( +c + + `__isy +((c), +_ISu +) + + ) + +207  + #isxdig +( +c + + `__isy +((c), +_ISxdig +) + + ) + +208 #ifde +__USE_ISOC99 + + +209  + #isbnk +( +c + + `__isy +((c), +_ISbnk +) + + ) + +213 #ifde +__USE_EXTERN_INLINES + + +214 +__ex_le +  + +215 + `__NTH + ( + $tow + ( +__c +)) + +217  +__c + >-128 && __< 256 ? (* + `__y_tow_loc + ())[__c] : __c; + +218 + } +} + +220 +__ex_le +  + +221 +__NTH + ( + $tou + ( +__c +)) + +223  +__c + >-128 && __< 256 ? (* + `__y_tou_loc + ())[__c] : __c; + +224 + } +} + +227 #i +__GNUC__ + >2 && +defed + +__OPTIMIZE__ + && !defed +__lulus + + +228  + #tow +( +c + + `__tobody + (c, +tow +, * + `__y_tow_loc + (), (c)) + + ) + +229  + #tou +( +c + + `__tobody + (c, +tou +, * + `__y_tou_loc + (), (c)) + + ) + +232 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +233  + #iscii +( +c + + `__iscii + (c) + + ) + +234  + #tscii +( +c + + `__tscii + (c) + + ) + +236  + #_tow +( +c +(((* + `__y_tow_loc + ())[((c)]) + + ) + +237  + #_tou +( +c +(((* + `__y_tou_loc + ())[((c)]) + + ) + +243 #ifde +__USE_XOPEN2K8 + + +257  + ~ + +261  + #__isy_l +( +c +, +ty +, +lo +) \ + +262 (( +lo +)-> +__y_b +[(( +c +)] & ( +ty +) + + ) + +264  + #__exy_l +( +me +) \ + +265  + `me + (, +__lo_t + +__THROW + + + ) + +271 +__exy_l + ( +ium_l +); + +272 +__exy_l + ( +iha_l +); + +273 +__exy_l + ( +isl_l +); + +274 +__exy_l + ( +isdig_l +); + +275 +__exy_l + ( +iow_l +); + +276 +__exy_l + ( +isgph_l +); + +277 +__exy_l + ( +irt_l +); + +278 +__exy_l + ( +iun_l +); + +279 +__exy_l + ( +isa_l +); + +280 +__exy_l + ( +isu_l +); + +281 +__exy_l + ( +isxdig_l +); + +283 +__exy_l + ( +isbnk_l +); + +287  + $__tow_l + ( +__c +, +__lo_t + +__l + +__THROW +; + +288  + $tow_l + ( +__c +, +__lo_t + +__l + +__THROW +; + +291  + $__tou_l + ( +__c +, +__lo_t + +__l + +__THROW +; + +292  + $tou_l + ( +__c +, +__lo_t + +__l + +__THROW +; + +294 #i +__GNUC__ + >2 && +defed + +__OPTIMIZE__ + && !defed +__lulus + + +295  + #__tow_l +( +c +, +lo +) \ + +296 + `__tobody + ( +c +, +__tow_l +, ( +lo +)-> +__y_tow +, (c,o)) + + ) + +297  + #__tou_l +( +c +, +lo +) \ + +298 + `__tobody + ( +c +, +__tou_l +, ( +lo +)-> +__y_tou +, (c,o)) + + ) + +299  + #tow_l +( +c +, +lo + + `__tow_l + ((c), (lo)) + + ) + +300  + #tou_l +( +c +, +lo + + `__tou_l + ((c), (lo)) + + ) + +304 #ide +__NO_CTYPE + + +305  + #__ium_l +( +c +, +l + + `__isy_l +((c), +_ISnum +, (l)) + + ) + +306  + #__iha_l +( +c +, +l + + `__isy_l +((c), +_ISpha +, (l)) + + ) + +307  + #__isl_l +( +c +, +l + + `__isy_l +((c), +_ISl +, (l)) + + ) + +308  + #__isdig_l +( +c +, +l + + `__isy_l +((c), +_ISdig +, (l)) + + ) + +309  + #__iow_l +( +c +, +l + + `__isy_l +((c), +_ISlow +, (l)) + + ) + +310  + #__isgph_l +( +c +, +l + + `__isy_l +((c), +_ISgph +, (l)) + + ) + +311  + #__irt_l +( +c +, +l + + `__isy_l +((c), +_ISt +, (l)) + + ) + +312  + #__iun_l +( +c +, +l + + `__isy_l +((c), +_ISpun +, (l)) + + ) + +313  + #__isa_l +( +c +, +l + + `__isy_l +((c), +_ISa +, (l)) + + ) + +314  + #__isu_l +( +c +, +l + + `__isy_l +((c), +_ISu +, (l)) + + ) + +315  + #__isxdig_l +( +c +, +l + + `__isy_l +((c), +_ISxdig +, (l)) + + ) + +317  + #__isbnk_l +( +c +, +l + + `__isy_l +((c), +_ISbnk +, (l)) + + ) + +319 #ifde +__USE_MISC + + +320  + #__iscii_l +( +c +, +l +(), + `__iscii + (c)) + + ) + +321  + #__tscii_l +( +c +, +l +(), + `__tscii + (c)) + + ) + +324  + #ium_l +( +c +, +l + + `__ium_l + ((c), (l)) + + ) + +325  + #iha_l +( +c +, +l + + `__iha_l + ((c), (l)) + + ) + +326  + #isl_l +( +c +, +l + + `__isl_l + ((c), (l)) + + ) + +327  + #isdig_l +( +c +, +l + + `__isdig_l + ((c), (l)) + + ) + +328  + #iow_l +( +c +, +l + + `__iow_l + ((c), (l)) + + ) + +329  + #isgph_l +( +c +, +l + + `__isgph_l + ((c), (l)) + + ) + +330  + #irt_l +( +c +, +l + + `__irt_l + ((c), (l)) + + ) + +331  + #iun_l +( +c +, +l + + `__iun_l + ((c), (l)) + + ) + +332  + #isa_l +( +c +, +l + + `__isa_l + ((c), (l)) + + ) + +333  + #isu_l +( +c +, +l + + `__isu_l + ((c), (l)) + + ) + +334  + #isxdig_l +( +c +, +l + + `__isxdig_l + ((c), (l)) + + ) + +336  + #isbnk_l +( +c +, +l + + `__isbnk_l + ((c), (l)) + + ) + +338 #ifde +__USE_MISC + + +339  + #iscii_l +( +c +, +l + + `__iscii_l + ((c), (l)) + + ) + +340  + #tscii_l +( +c +, +l + + `__tscii_l + ((c), (l)) + + ) + +347 +__END_DECLS + + + @/usr/include/errno.h + +22 #idef +_ERRNO_H + + +26 #idef +__ed_Emh + + +27  + #_ERRNO_H + 1 + + ) + +28  + ~ + +31 + g__BEGIN_DECLS + + +35  + ~ + +36 #unde +__ed_Emh + + +38 #ifdef +_ERRNO_H + + +45 #idef +o + + +46  +o +; + +49 #ifde +__USE_GNU + + +54 * +ogm_voti_me +, * +ogm_voti_sht_me +; + +58 + g__END_DECLS + + +66 #i +defed + +__USE_GNU + || defed +__ed_r_t + + +67 #ide +__r_t_defed + + +68  + tr_t +; + +69  + #__r_t_defed + 1 + + ) + +71 #unde +__ed_r_t + + + @/usr/include/execinfo.h + +18 #ide +_EXECINFO_H + + +19  + #_EXECINFO_H + 1 + + ) + +21  + ~ + +23 +__BEGIN_DECLS + + +27  + $backa + (** +__y +,  +__size + + `__nnu + ((1)); + +32 ** + $backa_symbs + (*cڡ * +__y +,  +__size +) + +33 +__THROW + + `__nnu + ((1)); + +38  + $backa_symbs_fd + (*cڡ * +__y +,  +__size +,  +__fd +) + +39 +__THROW + + `__nnu + ((1)); + +41 +__END_DECLS + + + @/usr/include/fcntl.h + +22 #idef +_FCNTL_H + + +23  + #_FCNTL_H + 1 + + ) + +25  + ~ + +28 + g__BEGIN_DECLS + + +31  + ~ + +35  + ~ + +39 #ifde +__O_TMPFILE + + +40  + #__OPEN_NEEDS_MODE +( +oag +) \ + +41 ((( +oag +& +O_CREAT +!0 || ((oag& +__O_TMPFILE +=__O_TMPFILE) + + ) + +43  + #__OPEN_NEEDS_MODE +( +oag +(((oag& +O_CREAT +!0) + + ) + +49 #ide +__mode_t_defed + + +50  +__mode_t + + tmode_t +; + +51  + #__mode_t_defed + + + ) + +54 #ide +__off_t_defed + + +55 #ide +__USE_FILE_OFFSET64 + + +56  +__off_t + + toff_t +; + +58  +__off64_t + + toff_t +; + +60  + #__off_t_defed + + + ) + +63 #i +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +64  +__off64_t + + toff64_t +; + +65  + #__off64_t_defed + + + ) + +68 #ide +__pid_t_defed + + +69  +__pid_t + + tpid_t +; + +70  + #__pid_t_defed + + + ) + +74 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +75  + #__ed_timeec + + + ) + +76  + ~ + +77  + ~ + +79  + #S_IFMT + +__S_IFMT + + + ) + +80  + #S_IFDIR + +__S_IFDIR + + + ) + +81  + #S_IFCHR + +__S_IFCHR + + + ) + +82  + #S_IFBLK + +__S_IFBLK + + + ) + +83  + #S_IFREG + +__S_IFREG + + + ) + +84 #ifde +__S_IFIFO + + +85  + #S_IFIFO + +__S_IFIFO + + + ) + +87 #ifde +__S_IFLNK + + +88  + #S_IFLNK + +__S_IFLNK + + + ) + +90 #i( +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 +&& defed +__S_IFSOCK + + +91  + #S_IFSOCK + +__S_IFSOCK + + + ) + +96  + #S_ISUID + +__S_ISUID + + + ) + +97  + #S_ISGID + +__S_ISGID + + + ) + +99 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +101  + #S_ISVTX + +__S_ISVTX + + + ) + +104  + #S_IRUSR + +__S_IREAD + + + ) + +105  + #S_IWUSR + +__S_IWRITE + + + ) + +106  + #S_IXUSR + +__S_IEXEC + + + ) + +108  + #S_IRWXU + ( +__S_IREAD +| +__S_IWRITE +| +__S_IEXEC +) + + ) + +110  + #S_IRGRP + ( +S_IRUSR + >> 3 + + ) + +111  + #S_IWGRP + ( +S_IWUSR + >> 3 + + ) + +112  + #S_IXGRP + ( +S_IXUSR + >> 3 + + ) + +114  + #S_IRWXG + ( +S_IRWXU + >> 3) + + ) + +116  + #S_IROTH + ( +S_IRGRP + >> 3 + + ) + +117  + #S_IWOTH + ( +S_IWGRP + >> 3 + + ) + +118  + #S_IXOTH + ( +S_IXGRP + >> 3 + + ) + +120  + #S_IRWXO + ( +S_IRWXG + >> 3) + + ) + +123 #ifdef +__USE_MISC + + +124 #ide +R_OK + + +127  + #R_OK + 4 + + ) + +128  + #W_OK + 2 + + ) + +129  + #X_OK + 1 + + ) + +130  + #F_OK + 0 + + ) + +135 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +136  + #SEEK_SET + 0 + + ) + +137  + #SEEK_CUR + 1 + + ) + +138  + #SEEK_END + 2 + + ) + +146  +f + ( +__fd +,  +__cmd +, ...); + +155 #ide +__USE_FILE_OFFSET64 + + +156  + $ݒ + (cڡ * +__fe +,  +__oag +, ... + `__nnu + ((1)); + +158 #ifde +__REDIRECT + + +159  + `__REDIRECT + ( +ݒ +, (cڡ * +__fe +,  +__oag +, ...), +ݒ64 +) + +160 + `__nnu + ((1)); + +162  + #ݒ + +ݒ64 + + + ) + +165 #ifde +__USE_LARGEFILE64 + + +166  + $ݒ64 + (cڡ * +__fe +,  +__oag +, ... + `__nnu + ((1)); + +169 #ifde +__USE_ATFILE + + +179 #ide +__USE_FILE_OFFSET64 + + +180  + $ݒ + ( +__fd +, cڡ * +__fe +,  +__oag +, ...) + +181 + `__nnu + ((2)); + +183 #ifde +__REDIRECT + + +184  + `__REDIRECT + ( +ݒ +, ( +__fd +, cڡ * +__fe +,  +__oag +, + +185 ...), +ݒ64 + + `__nnu + ((2)); + +187  + #ݒ + +ݒ64 + + + ) + +190 #ifde +__USE_LARGEFILE64 + + +191  + $ݒ64 + ( +__fd +, cڡ * +__fe +,  +__oag +, ...) + +192 + `__nnu + ((2)); + +201 #ide +__USE_FILE_OFFSET64 + + +202  + $t + (cڡ * +__fe +, +mode_t + +__mode + + `__nnu + ((1)); + +204 #ifde +__REDIRECT + + +205  + `__REDIRECT + ( +t +, (cڡ * +__fe +, +mode_t + +__mode +), + +206 +t64 + + `__nnu + ((1)); + +208  + #t + +t64 + + + ) + +211 #ifde +__USE_LARGEFILE64 + + +212  + $t64 + (cڡ * +__fe +, +mode_t + +__mode + + `__nnu + ((1)); + +215 #i! +defed + +F_LOCK + && (defed +__USE_MISC + || (defed +__USE_XOPEN_EXTENDED + \ + +216 && ! +defed + +__USE_POSIX +)) + +225  + #F_ULOCK + 0 + + ) + +226  + #F_LOCK + 1 + + ) + +227  + #F_TLOCK + 2 + + ) + +228  + #F_TEST + 3 + + ) + +230 #ide +__USE_FILE_OFFSET64 + + +231  + `lockf + ( +__fd +,  +__cmd +, +off_t + +__n +); + +233 #ifde +__REDIRECT + + +234  + `__REDIRECT + ( +lockf +, ( +__fd +,  +__cmd +, +__off64_t + +__n +), +lockf64 +); + +236  + #lockf + +lockf64 + + + ) + +239 #ifde +__USE_LARGEFILE64 + + +240  + `lockf64 + ( +__fd +,  +__cmd +, +off64_t + +__n +); + +244 #ifde +__USE_XOPEN2K + + +247 #ide +__USE_FILE_OFFSET64 + + +248  + $posix_dvi + ( +__fd +, +off_t + +__offt +, off_ +__n +, + +249  +__advi + +__THROW +; + +251 #ifde +__REDIRECT_NTH + + +252  + `__REDIRECT_NTH + ( +posix_dvi +, ( +__fd +, +__off64_t + +__offt +, + +253 +__off64_t + +__n +,  +__advi +), + +254 +posix_dvi64 +); + +256  + #posix_dvi + +posix_dvi64 + + + ) + +259 #ifde +__USE_LARGEFILE64 + + +260  + $posix_dvi64 + ( +__fd +, +off64_t + +__offt +, off64_ +__n +, + +261  +__advi + +__THROW +; + +269 #ide +__USE_FILE_OFFSET64 + + +270  + `posix_o + ( +__fd +, +off_t + +__offt +, off_ +__n +); + +272 #ifde +__REDIRECT + + +273  + `__REDIRECT + ( +posix_o +, ( +__fd +, +__off64_t + +__offt +, + +274 +__off64_t + +__n +), + +275 +posix_o64 +); + +277  + #posix_o + +posix_o64 + + + ) + +280 #ifde +__USE_LARGEFILE64 + + +281  + `posix_o64 + ( +__fd +, +off64_t + +__offt +, off64_ +__n +); + +287 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + \ + +288 && +defed + +__va_g_ck_n + + +289  + ~ + +292 +__END_DECLS + + + @/usr/include/getopt.h + +19 #ide +_GETOPT_H + + +21 #ide +__ed_gt + + +22  + #_GETOPT_H + 1 + + ) + +32 #i! +defed + +__GNU_LIBRARY__ + + +33  + ~ + +36 #ide +__THROW + + +37 #ide +__GNUC_PREREQ + + +38  + #__GNUC_PREREQ +( +maj +, +m +(0) + + ) + +40 #i +defed + +__lulus + && +__GNUC_PREREQ + (2,8) + +41  + #__THROW + + `throw + () + + ) + +43  + #__THROW + + + ) + +47 #ifdef +__lulus + + +57 * +ݏrg +; + +71  +td +; + +76  +݋ +; + +80  +tt +; + +82 #ide +__ed_gt + + +104  + sti + + +106 cڡ * + gme +; + +109  + ghas_g +; + +110 * + gag +; + +111  + gv +; + +116  + #no_gumt + 0 + + ) + +117  + #qued_gumt + 1 + + ) + +118  + #tiڮ_gumt + 2 + + ) + +146 #ifde +__GNU_LIBRARY__ + + +150  +gt + ( +___gc +, *cڡ * +___gv +, cڡ * +__shtts +) + +151 +__THROW +; + +153 #i +defed + +__ed_gt + && defed +__USE_POSIX2 + \ + +154 && ! +defed + + g__USE_POSIX_IMPLICITLY + && !defed + g__USE_GNU + + +158 #ifde +__REDIRECT + + +159  +__REDIRECT_NTH + ( +gt +, ( +___gc +, *cڡ * +___gv +, + +160 cڡ * +__shtts +), + +161 +__posix_gt +); + +163  +__posix_gt + ( +___gc +, *cڡ * +___gv +, + +164 cڡ * +__shtts + +__THROW +; + +165  + #gt + +__posix_gt + + + ) + +169  +gt + (); + +172 #ide +__ed_gt + + +173  +gt_lg + ( +___gc +, *cڡ * +___gv +, + +174 cڡ * +__shtts +, + +175 cڡ  +ti + * +__lgts +, * +__lgd +) + +176 +__THROW +; + +177  +gt_lg_ly + ( +___gc +, *cڡ * +___gv +, + +178 cڡ * +__shtts +, + +179 cڡ  +ti + * +__lgts +, * +__lgd +) + +180 +__THROW +; + +184 #ifdef +__lulus + + +189 #unde +__ed_gt + + + @/usr/include/inttypes.h + +22 #ide +_INTTYPES_H + + +23  + #_INTTYPES_H + 1 + + ) + +25  + ~ + +27  + ~ + +30 #ide +____gwch_t_defed + + +31 #ifde +__lulus + + +32  + #__gwch_t + +wch_t + + + ) + +33 #i +defed + +__WCHAR_TYPE__ + + +34  +__WCHAR_TYPE__ + + t__gwch_t +; + +36  + #__ed_wch_t + + + ) + +37  + ~ + +38  +wch_t + + t__gwch_t +; + +40  + #____gwch_t_defed + 1 + + ) + +43 #i +__WORDSIZE + == 64 + +44  + #__PRI64_PREFIX + "l" + + ) + +45  + #__PRIPTR_PREFIX + "l" + + ) + +47  + #__PRI64_PREFIX + "" + + ) + +48  + #__PRIPTR_PREFIX + + + ) + +54  + #PRId8 + "d" + + ) + +55  + #PRId16 + "d" + + ) + +56  + #PRId32 + "d" + + ) + +57  + #PRId64 + +__PRI64_PREFIX + "d" + + ) + +59  + #PRIdLEAST8 + "d" + + ) + +60  + #PRIdLEAST16 + "d" + + ) + +61  + #PRIdLEAST32 + "d" + + ) + +62  + #PRIdLEAST64 + +__PRI64_PREFIX + "d" + + ) + +64  + #PRIdFAST8 + "d" + + ) + +65  + #PRIdFAST16 + +__PRIPTR_PREFIX + "d" + + ) + +66  + #PRIdFAST32 + +__PRIPTR_PREFIX + "d" + + ) + +67  + #PRIdFAST64 + +__PRI64_PREFIX + "d" + + ) + +70  + #PRIi8 + "i" + + ) + +71  + #PRIi16 + "i" + + ) + +72  + #PRIi32 + "i" + + ) + +73  + #PRIi64 + +__PRI64_PREFIX + "i" + + ) + +75  + #PRIiLEAST8 + "i" + + ) + +76  + #PRIiLEAST16 + "i" + + ) + +77  + #PRIiLEAST32 + "i" + + ) + +78  + #PRIiLEAST64 + +__PRI64_PREFIX + "i" + + ) + +80  + #PRIiFAST8 + "i" + + ) + +81  + #PRIiFAST16 + +__PRIPTR_PREFIX + "i" + + ) + +82  + #PRIiFAST32 + +__PRIPTR_PREFIX + "i" + + ) + +83  + #PRIiFAST64 + +__PRI64_PREFIX + "i" + + ) + +86  + #PRIo8 + "o" + + ) + +87  + #PRIo16 + "o" + + ) + +88  + #PRIo32 + "o" + + ) + +89  + #PRIo64 + +__PRI64_PREFIX + "o" + + ) + +91  + #PRIoLEAST8 + "o" + + ) + +92  + #PRIoLEAST16 + "o" + + ) + +93  + #PRIoLEAST32 + "o" + + ) + +94  + #PRIoLEAST64 + +__PRI64_PREFIX + "o" + + ) + +96  + #PRIoFAST8 + "o" + + ) + +97  + #PRIoFAST16 + +__PRIPTR_PREFIX + "o" + + ) + +98  + #PRIoFAST32 + +__PRIPTR_PREFIX + "o" + + ) + +99  + #PRIoFAST64 + +__PRI64_PREFIX + "o" + + ) + +102  + #PRIu8 + "u" + + ) + +103  + #PRIu16 + "u" + + ) + +104  + #PRIu32 + "u" + + ) + +105  + #PRIu64 + +__PRI64_PREFIX + "u" + + ) + +107  + #PRIuLEAST8 + "u" + + ) + +108  + #PRIuLEAST16 + "u" + + ) + +109  + #PRIuLEAST32 + "u" + + ) + +110  + #PRIuLEAST64 + +__PRI64_PREFIX + "u" + + ) + +112  + #PRIuFAST8 + "u" + + ) + +113  + #PRIuFAST16 + +__PRIPTR_PREFIX + "u" + + ) + +114  + #PRIuFAST32 + +__PRIPTR_PREFIX + "u" + + ) + +115  + #PRIuFAST64 + +__PRI64_PREFIX + "u" + + ) + +118  + #PRIx8 + "x" + + ) + +119  + #PRIx16 + "x" + + ) + +120  + #PRIx32 + "x" + + ) + +121  + #PRIx64 + +__PRI64_PREFIX + "x" + + ) + +123  + #PRIxLEAST8 + "x" + + ) + +124  + #PRIxLEAST16 + "x" + + ) + +125  + #PRIxLEAST32 + "x" + + ) + +126  + #PRIxLEAST64 + +__PRI64_PREFIX + "x" + + ) + +128  + #PRIxFAST8 + "x" + + ) + +129  + #PRIxFAST16 + +__PRIPTR_PREFIX + "x" + + ) + +130  + #PRIxFAST32 + +__PRIPTR_PREFIX + "x" + + ) + +131  + #PRIxFAST64 + +__PRI64_PREFIX + "x" + + ) + +134  + #PRIX8 + "X" + + ) + +135  + #PRIX16 + "X" + + ) + +136  + #PRIX32 + "X" + + ) + +137  + #PRIX64 + +__PRI64_PREFIX + "X" + + ) + +139  + #PRIXLEAST8 + "X" + + ) + +140  + #PRIXLEAST16 + "X" + + ) + +141  + #PRIXLEAST32 + "X" + + ) + +142  + #PRIXLEAST64 + +__PRI64_PREFIX + "X" + + ) + +144  + #PRIXFAST8 + "X" + + ) + +145  + #PRIXFAST16 + +__PRIPTR_PREFIX + "X" + + ) + +146  + #PRIXFAST32 + +__PRIPTR_PREFIX + "X" + + ) + +147  + #PRIXFAST64 + +__PRI64_PREFIX + "X" + + ) + +151  + #PRIdMAX + +__PRI64_PREFIX + "d" + + ) + +152  + #PRIiMAX + +__PRI64_PREFIX + "i" + + ) + +153  + #PRIoMAX + +__PRI64_PREFIX + "o" + + ) + +154  + #PRIuMAX + +__PRI64_PREFIX + "u" + + ) + +155  + #PRIxMAX + +__PRI64_PREFIX + "x" + + ) + +156  + #PRIXMAX + +__PRI64_PREFIX + "X" + + ) + +160  + #PRIdPTR + +__PRIPTR_PREFIX + "d" + + ) + +161  + #PRIiPTR + +__PRIPTR_PREFIX + "i" + + ) + +162  + #PRIoPTR + +__PRIPTR_PREFIX + "o" + + ) + +163  + #PRIuPTR + +__PRIPTR_PREFIX + "u" + + ) + +164  + #PRIxPTR + +__PRIPTR_PREFIX + "x" + + ) + +165  + #PRIXPTR + +__PRIPTR_PREFIX + "X" + + ) + +171  + #SCNd8 + "hhd" + + ) + +172  + #SCNd16 + "hd" + + ) + +173  + #SCNd32 + "d" + + ) + +174  + #SCNd64 + +__PRI64_PREFIX + "d" + + ) + +176  + #SCNdLEAST8 + "hhd" + + ) + +177  + #SCNdLEAST16 + "hd" + + ) + +178  + #SCNdLEAST32 + "d" + + ) + +179  + #SCNdLEAST64 + +__PRI64_PREFIX + "d" + + ) + +181  + #SCNdFAST8 + "hhd" + + ) + +182  + #SCNdFAST16 + +__PRIPTR_PREFIX + "d" + + ) + +183  + #SCNdFAST32 + +__PRIPTR_PREFIX + "d" + + ) + +184  + #SCNdFAST64 + +__PRI64_PREFIX + "d" + + ) + +187  + #SCNi8 + "hhi" + + ) + +188  + #SCNi16 + "hi" + + ) + +189  + #SCNi32 + "i" + + ) + +190  + #SCNi64 + +__PRI64_PREFIX + "i" + + ) + +192  + #SCNiLEAST8 + "hhi" + + ) + +193  + #SCNiLEAST16 + "hi" + + ) + +194  + #SCNiLEAST32 + "i" + + ) + +195  + #SCNiLEAST64 + +__PRI64_PREFIX + "i" + + ) + +197  + #SCNiFAST8 + "hhi" + + ) + +198  + #SCNiFAST16 + +__PRIPTR_PREFIX + "i" + + ) + +199  + #SCNiFAST32 + +__PRIPTR_PREFIX + "i" + + ) + +200  + #SCNiFAST64 + +__PRI64_PREFIX + "i" + + ) + +203  + #SCNu8 + "hhu" + + ) + +204  + #SCNu16 + "hu" + + ) + +205  + #SCNu32 + "u" + + ) + +206  + #SCNu64 + +__PRI64_PREFIX + "u" + + ) + +208  + #SCNuLEAST8 + "hhu" + + ) + +209  + #SCNuLEAST16 + "hu" + + ) + +210  + #SCNuLEAST32 + "u" + + ) + +211  + #SCNuLEAST64 + +__PRI64_PREFIX + "u" + + ) + +213  + #SCNuFAST8 + "hhu" + + ) + +214  + #SCNuFAST16 + +__PRIPTR_PREFIX + "u" + + ) + +215  + #SCNuFAST32 + +__PRIPTR_PREFIX + "u" + + ) + +216  + #SCNuFAST64 + +__PRI64_PREFIX + "u" + + ) + +219  + #SCNo8 + "hho" + + ) + +220  + #SCNo16 + "ho" + + ) + +221  + #SCNo32 + "o" + + ) + +222  + #SCNo64 + +__PRI64_PREFIX + "o" + + ) + +224  + #SCNoLEAST8 + "hho" + + ) + +225  + #SCNoLEAST16 + "ho" + + ) + +226  + #SCNoLEAST32 + "o" + + ) + +227  + #SCNoLEAST64 + +__PRI64_PREFIX + "o" + + ) + +229  + #SCNoFAST8 + "hho" + + ) + +230  + #SCNoFAST16 + +__PRIPTR_PREFIX + "o" + + ) + +231  + #SCNoFAST32 + +__PRIPTR_PREFIX + "o" + + ) + +232  + #SCNoFAST64 + +__PRI64_PREFIX + "o" + + ) + +235  + #SCNx8 + "hhx" + + ) + +236  + #SCNx16 + "hx" + + ) + +237  + #SCNx32 + "x" + + ) + +238  + #SCNx64 + +__PRI64_PREFIX + "x" + + ) + +240  + #SCNxLEAST8 + "hhx" + + ) + +241  + #SCNxLEAST16 + "hx" + + ) + +242  + #SCNxLEAST32 + "x" + + ) + +243  + #SCNxLEAST64 + +__PRI64_PREFIX + "x" + + ) + +245  + #SCNxFAST8 + "hhx" + + ) + +246  + #SCNxFAST16 + +__PRIPTR_PREFIX + "x" + + ) + +247  + #SCNxFAST32 + +__PRIPTR_PREFIX + "x" + + ) + +248  + #SCNxFAST64 + +__PRI64_PREFIX + "x" + + ) + +252  + #SCNdMAX + +__PRI64_PREFIX + "d" + + ) + +253  + #SCNiMAX + +__PRI64_PREFIX + "i" + + ) + +254  + #SCNoMAX + +__PRI64_PREFIX + "o" + + ) + +255  + #SCNuMAX + +__PRI64_PREFIX + "u" + + ) + +256  + #SCNxMAX + +__PRI64_PREFIX + "x" + + ) + +259  + #SCNdPTR + +__PRIPTR_PREFIX + "d" + + ) + +260  + #SCNiPTR + +__PRIPTR_PREFIX + "i" + + ) + +261  + #SCNoPTR + +__PRIPTR_PREFIX + "o" + + ) + +262  + #SCNuPTR + +__PRIPTR_PREFIX + "u" + + ) + +263  + #SCNxPTR + +__PRIPTR_PREFIX + "x" + + ) + +266 + g__BEGIN_DECLS + + +268 #i +__WORDSIZE + == 64 + +273  + mqu +; + +274  + mm +; + +275 } + timaxdiv_t +; + +282 +__exnsi__ +  + mqu +; + +283 +__exnsi__ +  + mm +; + +284 } + timaxdiv_t +; + +290 +tmax_t + + $imaxabs + ( +tmax_t + +__n + +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +293 +imaxdiv_t + + $imaxdiv + ( +tmax_t + +__num +, imax_ +__dom +) + +294 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +297 +tmax_t + + $oimax + (cڡ * +__ri + +__Ō +, + +298 ** +__ri + +__dr +,  +__ba + +__THROW +; + +301 +utmax_t + + $oumax + (cڡ * +__ri + +__Ō +, + +302 ** +__ri + +__dr +,  +__ba + +__THROW +; + +305 +tmax_t + + $wcoimax + (cڡ +__gwch_t + * +__ri + +__Ō +, + +306 +__gwch_t + ** +__ri + +__dr +,  +__ba +) + +307 +__THROW +; + +310 +utmax_t + + $wcoumax + (cڡ +__gwch_t + * +__ri + +__Ō +, + +311 +__gwch_t + ** +__ri + +__dr +,  +__ba +) + +312 +__THROW +; + +314 #ifde +__USE_EXTERN_INLINES + + +316 #i +__WORDSIZE + == 64 + +318  + $___ + (cڡ * +__ri + +__Ō +, + +319 ** +__ri + +__dr +, + +320  +__ba +,  +__group +) + +321 +__THROW + + `__nnu + ((1) +__wur +; + +323 +__ex_le + +tmax_t + + +324 + `__NTH + ( + $oimax + (cڡ * +__ri + +Ō +, **__ri +dr +, + +325  +ba +)) + +327  + `___ + ( +Ō +, +dr +, +ba +, 0); + +328 + } +} + +330  + $__oul_ + (cڡ * +__ri + +__Ō +, + +331 ** +__ri + +__dr +, + +332  +__ba +,  +__group +) + +333 +__THROW + + `__nnu + ((1) +__wur +; + +335 +__ex_le + +utmax_t + + +336 + `__NTH + ( + $oumax + (cڡ * +__ri + +Ō +, **__ri +dr +, + +337  +ba +)) + +339  + `__oul_ + ( +Ō +, +dr +, +ba +, 0); + +340 + } +} + +342  + $__wc_ + (cڡ +__gwch_t + * +__ri + +__Ō +, + +343 +__gwch_t + ** +__ri + +__dr +, + +344  +__ba +,  +__group +) + +345 +__THROW + + `__nnu + ((1) +__wur +; + +347 +__ex_le + +tmax_t + + +348 + `__NTH + ( + $wcoimax + (cڡ +__gwch_t + * +__ri + +Ō +, + +349 +__gwch_t + ** +__ri + +dr +,  +ba +)) + +351  + `__wc_ + ( +Ō +, +dr +, +ba +, 0); + +352 + } +} + +354  + $__wcoul_ + (cڡ +__gwch_t + * + +355 +__ri + +__Ō +, + +356 +__gwch_t + ** + +357 +__ri + +__dr +, + +358  +__ba +,  +__group +) + +359 +__THROW + + `__nnu + ((1) +__wur +; + +361 +__ex_le + +utmax_t + + +362 + `__NTH + ( + $wcoumax + (cڡ +__gwch_t + * +__ri + +Ō +, + +363 +__gwch_t + ** +__ri + +dr +,  +ba +)) + +365  + `__wcoul_ + ( +Ō +, +dr +, +ba +, 0); + +366 + } +} + +370 +__exnsi__ + + +371  + $__l_ + (cڡ * +__ri + +__Ō +, + +372 ** +__ri + +__dr +, + +373  +__ba +,  +__group +) + +374 +__THROW + + `__nnu + ((1) +__wur +; + +376 +__ex_le + +tmax_t + + +377 + `__NTH + ( + $oimax + (cڡ * +__ri + +Ō +, **__ri +dr +, + +378  +ba +)) + +380  + `__l_ + ( +Ō +, +dr +, +ba +, 0); + +381 + } +} + +383 +__exnsi__ + + +384  + $__ou_ + (const * + +385 +__ri + +__Ō +, + +387 +__ri + +__dr +, + +388  +__ba +, + +389  +__group +) + +390 +__THROW + + `__nnu + ((1) +__wur +; + +392 +__ex_le + +utmax_t + + +393 + `__NTH + ( + $oumax + (cڡ * +__ri + +Ō +, **__ri +dr +, + +394  +ba +)) + +396  + `__ou_ + ( +Ō +, +dr +, +ba +, 0); + +397 + } +} + +399 +__exnsi__ + + +400  + $__wcl_ + (cڡ +__gwch_t + * +__ri + +__Ō +, + +401 +__gwch_t + ** +__ri + +__dr +, + +402  +__ba +,  +__group +) + +403 +__THROW + + `__nnu + ((1) +__wur +; + +405 +__ex_le + +tmax_t + + +406 + `__NTH + ( + $wcoimax + (cڡ +__gwch_t + * +__ri + +Ō +, + +407 +__gwch_t + ** +__ri + +dr +,  +ba +)) + +409  + `__wcl_ + ( +Ō +, +dr +, +ba +, 0); + +410 + } +} + +413 +__exnsi__ + + +414  + $__wcou_ + (cڡ +__gwch_t + * + +415 +__ri + +__Ō +, + +416 +__gwch_t + ** + +417 +__ri + +__dr +, + +418  +__ba +, + +419  +__group +) + +420 +__THROW + + `__nnu + ((1) +__wur +; + +422 +__ex_le + +utmax_t + + +423 + `__NTH + ( + $wcoumax + (cڡ +__gwch_t + * +__ri + +Ō +, + +424 +__gwch_t + ** +__ri + +dr +,  +ba +)) + +426  + `__wcou_ + ( +Ō +, +dr +, +ba +, 0); + +427 + } +} + +432 + g__END_DECLS + + + @/usr/include/libgen.h + +18 #ide +_LIBGEN_H + + +19  + #_LIBGEN_H + 1 + + ) + +21  + ~ + +23 +__BEGIN_DECLS + + +26 * + $dme + (* +__th + +__THROW +; + +34 * + $__xpg_bame + (* +__th + +__THROW +; + +35  + #bame + +__xpg_bame + + + ) + +37 +__END_DECLS + + + @/usr/include/math.h + +23 #idef +_MATH_H + + +24  + #_MATH_H + 1 + + ) + +26  + ~ + +28 + g__BEGIN_DECLS + + +31  + ~ + +35  + ~ + +36 #ifde +__USE_ISOC99 + + +37  + ~ + +38  + ~ + +41  + ~ + +44  + ~ + +48  + ~ + +55  + #__SIMD_DECL +( +funi + + `__CONCAT + ( +__DECL_SIMD_ +, funi) + + ) + +57  + #__MATHCALL_VEC +( +funi +, +suffix +, +gs +) \ + +58 + `__SIMD_DECL + ( + `__MATH_PRECNAME + ( +funi +, +suffix +)) \ + +59 + `__MATHCALL + ( +funi +, +suffix +, +gs +) + + ) + +61  + #__MATHDECL_VEC +( +ty +, +funi +, +suffix +, +gs +) \ + +62 + `__SIMD_DECL + ( + `__MATH_PRECNAME + ( +funi +, +suffix +)) \ + +63 + `__MATHDECL +( +ty +, +funi +, +suffix +, +gs +) + + ) + +65  + #__MATHCALL +( +funi +, +suffix +, +gs +) \ + +66 + `__MATHDECL + ( +_Mdoub_ +, +funi +, +suffix +, +gs +) + + ) + +67  + #__MATHDECL +( +ty +, +funi +, +suffix +, +gs +) \ + +68 + `__MATHDECL_1 +( +ty +, +funi +, +suffix +, +gs +); \ + +69 + `__MATHDECL_1 +( +ty +, + `__CONCAT +( +__ +, +funi +), +suffix +, +gs +) + + ) + +70  + #__MATHCALLX +( +funi +, +suffix +, +gs +, +ib +) \ + +71 + `__MATHDECLX + ( +_Mdoub_ +, +funi +, +suffix +, +gs +, +ib +) + + ) + +72  + #__MATHDECLX +( +ty +, +funi +, +suffix +, +gs +, +ib +) \ + +73 + `__MATHDECL_1 +( +ty +, +funi +, +suffix +, +gs + + `__ibu__ + ( +ib +); \ + +74 + `__MATHDECL_1 +( +ty +, + `__CONCAT +( +__ +, +funi +), +suffix +, +gs + + `__ibu__ + ( +ib +) + + ) + +75  + #__MATHDECL_1 +( +ty +, +funi +, +suffix +, +gs +) \ + +76 +ty + + `__MATH_PRECNAME +( +funi +, +suffix + +gs + +__THROW + + + ) + +78  + #_Mdoub_ +  + + ) + +79  + #__MATH_PRECNAME +( +me +, +r + + `__CONCAT +ame,r) + + ) + +80  + #__MATH_DECLARING_DOUBLE + 1 + + ) + +81  + #_Mdoub_BEGIN_NAMESPACE + +__BEGIN_NAMESPACE_STD + + + ) + +82  + #_Mdoub_END_NAMESPACE + +__END_NAMESPACE_STD + + + ) + +83  + ~ + +84 #unde +_Mdoub_ + + +85 #unde +_Mdoub_BEGIN_NAMESPACE + + +86 #unde +_Mdoub_END_NAMESPACE + + +87 #unde +__MATH_PRECNAME + + +88 #unde +__MATH_DECLARING_DOUBLE + + +90 #ifde +__USE_ISOC99 + + +96 #ide +_Mt_ + + +97  + #_Mt_ +  + + ) + +99  + #_Mdoub_ + +_Mt_ + + + ) + +100  + #__MATH_PRECNAME +( +me +, +r +me## +f +## + ) +r + +101  + #__MATH_DECLARING_DOUBLE + 0 + + ) + +102  + #_Mdoub_BEGIN_NAMESPACE + +__BEGIN_NAMESPACE_C99 + + + ) + +103  + #_Mdoub_END_NAMESPACE + +__END_NAMESPACE_C99 + + + ) + +104  + ~ + +105 #unde +_Mdoub_ + + +106 #unde +_Mdoub_BEGIN_NAMESPACE + + +107 #unde +_Mdoub_END_NAMESPACE + + +108 #unde +__MATH_PRECNAME + + +109 #unde +__MATH_DECLARING_DOUBLE + + +111 #i!( +defed + +__NO_LONG_DOUBLE_MATH + && defed +_LIBC +) \ + +112 || +defed + +__LDBL_COMPAT + \ + +113 || +defed + +_LIBC_TEST + + +114 #ifde +__LDBL_COMPAT + + +116 #ifde +__USE_ISOC99 + + +117  + $__dbl_xowdf + ( +__x +,  +__y +) + +118 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +119 #ifde +__REDIRECT_NTH + + +120  + `__REDIRECT_NTH + ( +xowdf +, ( +__x +,  +__y +), + +121 +__dbl_xowdf +) + +122 + `__ibu__ + (( +__cڡ__ +)); + +123  + `__REDIRECT_NTH + ( +xowd +, ( +__x +,  +__y +), + +124 +x + + `__ibu__ + (( +__cڡ__ +)); + +125  + `__REDIRECT_NTH + ( +xowdl +, + +126 ( +__x +,  +__y +), + +127 +x + + `__ibu__ + (( +__cڡ__ +)); + +131 #unde +__MATHDECL_1 + + +132  + #__MATHDECL_2 +( +ty +, +funi +, +suffix +, +gs +, +s +) \ + +133 +ty + + `__REDIRECT_NTH +( + `__MATH_PRECNAME +( +funi +, +suffix +), \ + +134 +gs +, +s +) + + ) + +135  + #__MATHDECL_1 +( +ty +, +funi +, +suffix +, +gs +) \ + +136 + `__MATHDECL_2 +( +ty +, +funi +, +suffix +, +gs +, + `__CONCAT +(funi,suffix)) + + ) + +142 #ide +_Mlg_doub_ + + +143  + #_Mlg_doub_ +  + + ) + +145  + #_Mdoub_ + +_Mlg_doub_ + + + ) + +146  + #__MATH_PRECNAME +( +me +, +r +me## +l +## + ) +r + +147  + #__MATH_DECLARING_DOUBLE + 0 + + ) + +148  + #_Mdoub_BEGIN_NAMESPACE + +__BEGIN_NAMESPACE_C99 + + + ) + +149  + #_Mdoub_END_NAMESPACE + +__END_NAMESPACE_C99 + + + ) + +150  + #__MATH_DECLARE_LDOUBLE + 1 + + ) + +151  + ~ + +152 #unde +_Mdoub_ + + +153 #unde +_Mdoub_BEGIN_NAMESPACE + + +154 #unde +_Mdoub_END_NAMESPACE + + +155 #unde +__MATH_PRECNAME + + +156 #unde +__MATH_DECLARING_DOUBLE + + +161 #unde +__MATHDECL_1 + + +162 #unde +__MATHDECL + + +163 #unde +__MATHCALL + + +166 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +168  +signgam +; + +173 #ifde +__USE_ISOC99 + + +211 +FP_NAN + = + +212  + #FP_NAN + 0 + + ) + +213 +FP_NAN +, + +214 +FP_INFINITE + = + +215  + #FP_INFINITE + 1 + + ) + +216 +FP_INFINITE +, + +217 +FP_ZERO + = + +218  + #FP_ZERO + 2 + + ) + +219 +FP_ZERO +, + +220 +FP_SUBNORMAL + = + +221  + #FP_SUBNORMAL + 3 + + ) + +222 +FP_SUBNORMAL +, + +223 +FP_NORMAL + = + +224  + #FP_NORMAL + 4 + + ) + +225 +FP_NORMAL + + +233 #i + `__GNUC_PREREQ + (4,4&& ! +defed + +__SUPPORT_SNAN__ + \ + +234 && ! +defed + +__OPTIMIZE_SIZE__ + + +235  + #assify +( +x + + `__but_assify + ( +FP_NAN +, +FP_INFINITE +, \ + +236 +FP_NORMAL +, +FP_SUBNORMAL +, +FP_ZERO +, +x +) + + ) + +237 #i +defed + +__NO_LONG_DOUBLE_MATH + + +238  + #assify +( +x +) \ + +239 ( ( +x += (? + `__assifyf + (x: + `__assify + (x)) + + ) + +241  + #assify +( +x +) \ + +242 ( ( +x +) ==  () \ + +243 ? + `__assifyf + ( +x +) \ + +244 :  ( +x +) ==  () \ + +245 ? + `__assify + ( +x +: + `__assifyl + (x)) + + ) + +249 #i + `__GNUC_PREREQ + (4,0) + +250  + #signb +( +x +) \ + +251 ( ( +x +) ==  () \ + +252 ? + `__but_signbf + ( +x +) \ + +253 :  ( +x +) ==  () \ + +254 ? + `__but_signb + ( +x +: + `__but_signbl + (x)) + + ) + +256 #ifde +__NO_LONG_DOUBLE_MATH + + +257  + #signb +( +x +) \ + +258 ( ( +x += (? + `__signbf + (x: + `__signb + (x)) + + ) + +260  + #signb +( +x +) \ + +261 ( ( +x +) ==  () \ + +262 ? + `__signbf + ( +x +) \ + +263 :  ( +x +) ==  () \ + +264 ? + `__signb + ( +x +: + `__signbl + (x)) + + ) + +269 #i + `__GNUC_PREREQ + (4,4&& ! +defed + +__SUPPORT_SNAN__ + + +270  + #isfe +( +x + + `__but_isfe + (x) + + ) + +271 #i +defed + +__NO_LONG_DOUBLE_MATH + + +272  + #isfe +( +x +) \ + +273 ( ( +x += (? + `__fef + (x: + `__fe + (x)) + + ) + +275  + #isfe +( +x +) \ + +276 ( ( +x +) ==  () \ + +277 ? + `__fef + ( +x +) \ + +278 :  ( +x +) ==  () \ + +279 ? + `__fe + ( +x +: + `__f + (x)) + + ) + +283 #i + `__GNUC_PREREQ + (4,4&& ! +defed + +__SUPPORT_SNAN__ + + +284  + #im +( +x + + `__but_im + (x) + + ) + +286  + #im +( +x +( + `assify + (x= +FP_NORMAL +) + + ) + +291 #i + `__GNUC_PREREQ + (4,4&& ! +defed + +__SUPPORT_SNAN__ + + +292  + #i +( +x + + `__but_i + (x) + + ) + +293 #i +defed + +__NO_LONG_DOUBLE_MATH + + +294  + #i +( +x +) \ + +295 ( ( +x += (? + `__if + (x: + `__i + (x)) + + ) + +297  + #i +( +x +) \ + +298 ( ( +x +) ==  () \ + +299 ? + `__if + ( +x +) \ + +300 :  ( +x +) ==  () \ + +301 ? + `__i + ( +x +: + `__il + (x)) + + ) + +305 #i + `__GNUC_PREREQ + (4,4&& ! +defed + +__SUPPORT_SNAN__ + + +306  + #isf +( +x + + `__but_isf_sign + (x) + + ) + +307 #i +defed + +__NO_LONG_DOUBLE_MATH + + +308  + #isf +( +x +) \ + +309 ( ( +x += (? + `__isff + (x: + `__isf + (x)) + + ) + +311  + #isf +( +x +) \ + +312 ( ( +x +) ==  () \ + +313 ? + `__isff + ( +x +) \ + +314 :  ( +x +) ==  () \ + +315 ? + `__isf + ( +x +: + `__is + (x)) + + ) + +319  + #MATH_ERRNO + 1 + + ) + +320  + #MATH_ERREXCEPT + 2 + + ) + +325 #ide +__FAST_MATH__ + + +326  + #mh_rhdlg + ( +MATH_ERRNO + | +MATH_ERREXCEPT +) + + ) + +331 #ifde +__USE_GNU + + +333 #ifde +__NO_LONG_DOUBLE_MATH + + +334  + #issiglg +( +x +) \ + +335 ( ( +x += (? + `__issiglgf + (x: + `__issiglg + (x)) + + ) + +337  + #issiglg +( +x +) \ + +338 ( ( +x +) ==  () \ + +339 ? + `__issiglgf + ( +x +) \ + +340 :  ( +x +) ==  () \ + +341 ? + `__issiglg + ( +x +: + `__issiglgl + (x)) + + ) + +345 #ifdef +__USE_MISC + + +349 +_IEEE_ + = -1, + +350 +_SVID_ +, + +351 +_XOPEN_ +, + +352 +_POSIX_ +, + +353 +_ISOC_ + + +354 } + t_LIB_VERSION_TYPE +; + +359 +_LIB_VERSION_TYPE + +_LIB_VERSION +; + +363 #ifde +__USE_MISC + + +369 #ifde +__lulus + + +370  +__exi + + +372  +exi + + +375  +ty +; + +376 * +me +; + +377  +g1 +; + +378  +g2 +; + +379  +tv +; + +380 + } +}; + +382 #ifde +__lulus + + +383  + $mhr + ( +__exi + * +__exc + + `throw + (); + +385  + `mhr + ( +exi + * +__exc +); + +388  + #X_TLOSS + 1.41484755040568800000e+16 + + ) + +391  + #DOMAIN + 1 + + ) + +392  + #SING + 2 + + ) + +393  + #OVERFLOW + 3 + + ) + +394  + #UNDERFLOW + 4 + + ) + +395  + #TLOSS + 5 + + ) + +396  + #PLOSS + 6 + + ) + +399  + #HUGE + 3.40282347e+38F + + ) + +403 #ifde +__USE_XOPEN + + +405  + #MAXFLOAT + 3.40282347e+38F + + ) + +412 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +413  + #M_E + 2.7182818284590452354 + + ) + +414  + #M_LOG2E + 1.4426950408889634074 + + ) + +415  + #M_LOG10E + 0.43429448190325182765 + + ) + +416  + #M_LN2 + 0.69314718055994530942 + + ) + +417  + #M_LN10 + 2.30258509299404568402 + + ) + +418  + #M_PI + 3.14159265358979323846 + + ) + +419  + #M_PI_2 + 1.57079632679489661923 + + ) + +420  + #M_PI_4 + 0.78539816339744830962 + + ) + +421  + #M_1_PI + 0.31830988618379067154 + + ) + +422  + #M_2_PI + 0.63661977236758134308 + + ) + +423  + #M_2_SQRTPI + 1.12837916709551257390 + + ) + +424  + #M_SQRT2 + 1.41421356237309504880 + + ) + +425  + #M_SQRT1_2 + 0.70710678118654752440 + + ) + +431 #ifde +__USE_GNU + + +432  + #M_El + 2.718281828459045235360287471352662498L + + ) + +433  + #M_LOG2El + 1.442695040888963407359924681001892137L + + ) + +434  + #M_LOG10El + 0.434294481903251827651128918916605082L + + ) + +435  + #M_LN2l + 0.693147180559945309417232121458176568L + + ) + +436  + #M_LN10l + 2.302585092994045684017991454684364208L + + ) + +437  + #M_PIl + 3.141592653589793238462643383279502884L + + ) + +438  + #M_PI_2l + 1.570796326794896619231321691639751442L + + ) + +439  + #M_PI_4l + 0.785398163397448309615660845819875721L + + ) + +440  + #M_1_PIl + 0.318309886183790671537767526745028724L + + ) + +441  + #M_2_PIl + 0.636619772367581343075535053490057448L + + ) + +442  + #M_2_SQRTPIl + 1.128379167095512573896158903121545172L + + ) + +443  + #M_SQRT2l + 1.414213562373095048801688724209698079L + + ) + +444  + #M_SQRT1_2l + 0.707106781186547524400844362104849039L + + ) + +451 #i +defed + +__STRICT_ANSI__ + && !defed +__NO_MATH_INLINES + + +452  + #__NO_MATH_INLINES + 1 + + ) + +455 #i +defed + +__USE_ISOC99 + && + `__GNUC_PREREQ +(2,97) + +462  + #isg +( +x +, +y + + `__but_isg +(x, y) + + ) + +463  + #isgequ +( +x +, +y + + `__but_isgequ +(x, y) + + ) + +464  + #iess +( +x +, +y + + `__but_iess +(x, y) + + ) + +465  + #iesqu +( +x +, +y + + `__but_iesqu +(x, y) + + ) + +466  + #iessg +( +x +, +y + + `__but_iessg +(x, y) + + ) + +467  + #isunded +( +u +, +v + + `__but_isunded +(u, v) + + ) + +471 #ifde +__USE_EXTERN_INLINES + + +472  + ~ + +477 #i +defed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 + +478  + ~ + +481 #ifde +__USE_ISOC99 + + +485 #ide +isg + + +486  + #isg +( +x +, +y +) \ + +487 ( +__exnsi__ + \ + +488 ({ + `__tyof__ +( +x + +__x + = (x); __tyof__( +y + +__y + = (y); \ + +489 ! + `isunded + ( +__x +, +__y +&& __x > __y; + } +})) + + ) + +493 #ide +isgequ + + +494  + #isgequ +( +x +, +y +) \ + +495 ( +__exnsi__ + \ + +496 ({ + `__tyof__ +( +x + +__x + = (x); __tyof__( +y + +__y + = (y); \ + +497 ! + `isunded + ( +__x +, +__y +&& __x >__y; })) + + ) + +501 #ide +iess + + +502  + #iess +( +x +, +y +) \ + +503 ( +__exnsi__ + \ + +504 ({ + `__tyof__ +( +x + +__x + = (x); __tyof__( +y + +__y + = (y); \ + +505 ! + `isunded + ( +__x +, +__y +&& __x < __y; })) + + ) + +509 #ide +iesqu + + +510  + #iesqu +( +x +, +y +) \ + +511 ( +__exnsi__ + \ + +512 ({ + `__tyof__ +( +x + +__x + = (x); __tyof__( +y + +__y + = (y); \ + +513 ! + `isunded + ( +__x +, +__y +&& __x <__y; })) + + ) + +517 #ide +iessg + + +518  + #iessg +( +x +, +y +) \ + +519 ( +__exnsi__ + \ + +520 ({ + `__tyof__ +( +x + +__x + = (x); __tyof__( +y + +__y + = (y); \ + +521 ! + `isunded + ( +__x +, +__y +&& (__x < __y || __y < __x); })) + + ) + +525 #ide +isunded + + +526  + #isunded +( +u +, +v +) \ + +527 ( +__exnsi__ + \ + +528 ({ + `__tyof__ +( +u + +__u + = (u); __tyof__( +v + +__v + = (v); \ + +529 + `assify + ( +__u += +FP_NAN + || fpassify ( +__v +=FP_NAN; })) + + ) + +534 + g__END_DECLS + + + @/usr/include/netinet/in.h + +18 #idef +_NETINET_IN_H + + +19  + #_NETINET_IN_H + 1 + + ) + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +27 +__BEGIN_DECLS + + +30  +ut32_t + + t_addr_t +; + +31  + s_addr + + +33 +_addr_t + + ms_addr +; + +37  + ~ + +42 + mIPPROTO_IP + = 0, + +43  + #IPPROTO_IP + +IPPROTO_IP + + + ) + +44 + mIPPROTO_ICMP + = 1, + +45  + #IPPROTO_ICMP + +IPPROTO_ICMP + + + ) + +46 + mIPPROTO_IGMP + = 2, + +47  + #IPPROTO_IGMP + +IPPROTO_IGMP + + + ) + +48 + mIPPROTO_IPIP + = 4, + +49  + #IPPROTO_IPIP + +IPPROTO_IPIP + + + ) + +50 + mIPPROTO_TCP + = 6, + +51  + #IPPROTO_TCP + +IPPROTO_TCP + + + ) + +52 + mIPPROTO_EGP + = 8, + +53  + #IPPROTO_EGP + +IPPROTO_EGP + + + ) + +54 + mIPPROTO_PUP + = 12, + +55  + #IPPROTO_PUP + +IPPROTO_PUP + + + ) + +56 + mIPPROTO_UDP + = 17, + +57  + #IPPROTO_UDP + +IPPROTO_UDP + + + ) + +58 + mIPPROTO_IDP + = 22, + +59  + #IPPROTO_IDP + +IPPROTO_IDP + + + ) + +60 + mIPPROTO_TP + = 29, + +61  + #IPPROTO_TP + +IPPROTO_TP + + + ) + +62 + mIPPROTO_DCCP + = 33, + +63  + #IPPROTO_DCCP + +IPPROTO_DCCP + + + ) + +64 + mIPPROTO_IPV6 + = 41, + +65  + #IPPROTO_IPV6 + +IPPROTO_IPV6 + + + ) + +66 + mIPPROTO_RSVP + = 46, + +67  + #IPPROTO_RSVP + +IPPROTO_RSVP + + + ) + +68 + mIPPROTO_GRE + = 47, + +69  + #IPPROTO_GRE + +IPPROTO_GRE + + + ) + +70 + mIPPROTO_ESP + = 50, + +71  + #IPPROTO_ESP + +IPPROTO_ESP + + + ) + +72 + mIPPROTO_AH + = 51, + +73  + #IPPROTO_AH + +IPPROTO_AH + + + ) + +74 + mIPPROTO_MTP + = 92, + +75  + #IPPROTO_MTP + +IPPROTO_MTP + + + ) + +76 + mIPPROTO_BEETPH + = 94, + +77  + #IPPROTO_BEETPH + +IPPROTO_BEETPH + + + ) + +78 + mIPPROTO_ENCAP + = 98, + +79  + #IPPROTO_ENCAP + +IPPROTO_ENCAP + + + ) + +80 + mIPPROTO_PIM + = 103, + +81  + #IPPROTO_PIM + +IPPROTO_PIM + + + ) + +82 + mIPPROTO_COMP + = 108, + +83  + #IPPROTO_COMP + +IPPROTO_COMP + + + ) + +84 + mIPPROTO_SCTP + = 132, + +85  + #IPPROTO_SCTP + +IPPROTO_SCTP + + + ) + +86 + mIPPROTO_UDPLITE + = 136, + +87  + #IPPROTO_UDPLITE + +IPPROTO_UDPLITE + + + ) + +88 + mIPPROTO_MPLS + = 137, + +89  + #IPPROTO_MPLS + +IPPROTO_MPLS + + + ) + +90 + mIPPROTO_RAW + = 255, + +91  + #IPPROTO_RAW + +IPPROTO_RAW + + + ) + +92 + mIPPROTO_MAX + + +98 #ide +__USE_KERNEL_IPV6_DEFS + + +101 + mIPPROTO_HOPOPTS + = 0, + +102  + #IPPROTO_HOPOPTS + +IPPROTO_HOPOPTS + + + ) + +103 + mIPPROTO_ROUTING + = 43, + +104  + #IPPROTO_ROUTING + +IPPROTO_ROUTING + + + ) + +105 + mIPPROTO_FRAGMENT + = 44, + +106  + #IPPROTO_FRAGMENT + +IPPROTO_FRAGMENT + + + ) + +107 + mIPPROTO_ICMPV6 + = 58, + +108  + #IPPROTO_ICMPV6 + +IPPROTO_ICMPV6 + + + ) + +109 + mIPPROTO_NONE + = 59, + +110  + #IPPROTO_NONE + +IPPROTO_NONE + + + ) + +111 + mIPPROTO_DSTOPTS + = 60, + +112  + #IPPROTO_DSTOPTS + +IPPROTO_DSTOPTS + + + ) + +113 + mIPPROTO_MH + = 135 + +114  + #IPPROTO_MH + +IPPROTO_MH + + + ) + +119  +ut16_t + + t_pt_t +; + +124 + mIPPORT_ECHO + = 7, + +125 + mIPPORT_DISCARD + = 9, + +126 + mIPPORT_SYSTAT + = 11, + +127 + mIPPORT_DAYTIME + = 13, + +128 + mIPPORT_NETSTAT + = 15, + +129 + mIPPORT_FTP + = 21, + +130 + mIPPORT_TELNET + = 23, + +131 + mIPPORT_SMTP + = 25, + +132 + mIPPORT_TIMESERVER + = 37, + +133 + mIPPORT_NAMESERVER + = 42, + +134 + mIPPORT_WHOIS + = 43, + +135 + mIPPORT_MTP + = 57, + +137 + mIPPORT_TFTP + = 69, + +138 + mIPPORT_RJE + = 77, + +139 + mIPPORT_FINGER + = 79, + +140 + mIPPORT_TTYLINK + = 87, + +141 + mIPPORT_SUPDUP + = 95, + +144 + mIPPORT_EXECSERVER + = 512, + +145 + mIPPORT_LOGINSERVER + = 513, + +146 + mIPPORT_CMDSERVER + = 514, + +147 + mIPPORT_EFSSERVER + = 520, + +150 + mIPPORT_BIFFUDP + = 512, + +151 + mIPPORT_WHOSERVER + = 513, + +152 + mIPPORT_ROUTESERVER + = 520, + +155 + mIPPORT_RESERVED + = 1024, + +158 + mIPPORT_USERRESERVED + = 5000 + +166  + #IN_CLASSA +( +a +(((( +_addr_t +))& 0x80000000=0) + + ) + +167  + #IN_CLASSA_NET + 0xff000000 + + ) + +168  + #IN_CLASSA_NSHIFT + 24 + + ) + +169  + #IN_CLASSA_HOST + (0xfffffff& ~ +IN_CLASSA_NET +) + + ) + +170  + #IN_CLASSA_MAX + 128 + + ) + +172  + #IN_CLASSB +( +a +(((( +_addr_t +))& 0xc0000000=0x80000000) + + ) + +173  + #IN_CLASSB_NET + 0xffff0000 + + ) + +174  + #IN_CLASSB_NSHIFT + 16 + + ) + +175  + #IN_CLASSB_HOST + (0xfffffff& ~ +IN_CLASSB_NET +) + + ) + +176  + #IN_CLASSB_MAX + 65536 + + ) + +178  + #IN_CLASSC +( +a +(((( +_addr_t +))& 0xe0000000=0xc0000000) + + ) + +179  + #IN_CLASSC_NET + 0xffffff00 + + ) + +180  + #IN_CLASSC_NSHIFT + 8 + + ) + +181  + #IN_CLASSC_HOST + (0xfffffff& ~ +IN_CLASSC_NET +) + + ) + +183  + #IN_CLASSD +( +a +(((( +_addr_t +))& 0xf0000000=0xe0000000) + + ) + +184  + #IN_MULTICAST +( +a + + `IN_CLASSD +) + + ) + +186  + #IN_EXPERIMENTAL +( +a +(((( +_addr_t +))& 0xe0000000=0xe0000000) + + ) + +187  + #IN_BADCLASS +( +a +(((( +_addr_t +))& 0xf0000000=0xf0000000) + + ) + +190  + #INADDR_ANY + (( +_addr_t +0x00000000) + + ) + +192  + #INADDR_BROADCAST + (( +_addr_t +0xffffffff) + + ) + +194  + #INADDR_NONE + (( +_addr_t +0xffffffff) + + ) + +197  + #IN_LOOPBACKNET + 127 + + ) + +199 #ide +INADDR_LOOPBACK + + +200  + #INADDR_LOOPBACK + (( +_addr_t +0x7f000001 + + ) + +204  + #INADDR_UNSPEC_GROUP + (( +_addr_t +0xe0000000 + + ) + +205  + #INADDR_ALLHOSTS_GROUP + (( +_addr_t +0xe0000001 + + ) + +206  + #INADDR_ALLRTRS_GROUP + (( +_addr_t +0xe0000002 + + ) + +207  + #INADDR_MAX_LOCAL_GROUP + (( +_addr_t +0xe00000ff + + ) + +209 #ide +__USE_KERNEL_IPV6_DEFS + + +211  + s6_addr + + +215 +ut8_t + + m__u6_addr8 +[16]; + +216 #ifde +__USE_MISC + + +217 +ut16_t + + m__u6_addr16 +[8]; + +218 +ut32_t + + m__u6_addr32 +[4]; + +220 } + m__6_u +; + +221  + #s6_addr + +__6_u +. +__u6_addr8 + + + ) + +222 #ifde +__USE_MISC + + +223  + #s6_addr16 + +__6_u +. +__u6_addr16 + + + ) + +224  + #s6_addr32 + +__6_u +. +__u6_addr32 + + + ) + +229 cڡ  +6_addr + +6addr_y +; + +230 cڡ  +6_addr + +6addr_loback +; + +231  + #IN6ADDR_ANY_INIT + { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } + + ) + +232  + #IN6ADDR_LOOPBACK_INIT + { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } + + ) + +234  + #INET_ADDRSTRLEN + 16 + + ) + +235  + #INET6_ADDRSTRLEN + 46 + + ) + +239  + ssockaddr_ + + +241 +__SOCKADDR_COMMON + ( +s_ +); + +242 +_pt_t + + ms_pt +; + +243  +_addr + + ms_addr +; + +246  + ms_zo +[ ( +sockaddr +) - + +247 +__SOCKADDR_COMMON_SIZE + - + +248  ( +_pt_t +) - + +249  ( +_addr +)]; + +252 #ide +__USE_KERNEL_IPV6_DEFS + + +254  + ssockaddr_6 + + +256 +__SOCKADDR_COMMON + ( +s6_ +); + +257 +_pt_t + + ms6_pt +; + +258 +ut32_t + + ms6_owfo +; + +259  +6_addr + + ms6_addr +; + +260 +ut32_t + + ms6_sce_id +; + +264 #ifde +__USE_MISC + + +266  + s_mq + + +269  +_addr + + mimr_muɟddr +; + +272  +_addr + + mimr_r +; + +275  + s_mq_sour + + +278  +_addr + + mimr_muɟddr +; + +281  +_addr + + mimr_r +; + +284  +_addr + + mimr_souraddr +; + +288 #ide +__USE_KERNEL_IPV6_DEFS + + +290  + sv6_mq + + +293  +6_addr + + mv6mr_muɟddr +; + +296  + mv6mr_r +; + +300 #ifde +__USE_MISC + + +302  + sgroup_q + + +305 +ut32_t + + mgr_r +; + +308  +sockaddr_age + + mgr_group +; + +311  + sgroup_sour_q + + +314 +ut32_t + + mg_r +; + +317  +sockaddr_age + + mg_group +; + +320  +sockaddr_age + + mg_sour +; + +325  + s_msfr + + +328  +_addr + + mimsf_muɟddr +; + +331  +_addr + + mimsf_r +; + +334 +ut32_t + + mimsf_fmode +; + +337 +ut32_t + + mimsf_numc +; + +339  +_addr + + mimsf_i +[1]; + +342  + #IP_MSFILTER_SIZE +( +numc +( ( +_msfr +) \ + +343 -  ( +_addr +) \ + +344 + ( +numc +*  ( +_addr +)) + + ) + +346  + sgroup_fr + + +349 +ut32_t + + mgf_r +; + +352  +sockaddr_age + + mgf_group +; + +355 +ut32_t + + mgf_fmode +; + +358 +ut32_t + + mgf_numc +; + +360  +sockaddr_age + + mgf_i +[1]; + +363  + #GROUP_FILTER_SIZE +( +numc +( ( +group_fr +) \ + +364 -  ( +sockaddr_age +) \ + +365 + (( +numc +) \ + +366 *  ( +sockaddr_age +))) + + ) + +376 +ut32_t + + $ohl + ( +ut32_t + +__Îg + +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +377 +ut16_t + + $ohs + ( +ut16_t + +__tsht +) + +378 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +379 +ut32_t + + $htl + ( +ut32_t + +__holg +) + +380 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +381 +ut16_t + + $hts + ( +ut16_t + +__hosht +) + +382 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +384  + ~ + +387  + ~ + +389 #ifde +__OPTIMIZE__ + + +393 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +396  + #ohl +( +x +(x) + + ) + +397  + #ohs +( +x +(x) + + ) + +398  + #htl +( +x +(x) + + ) + +399  + #hts +( +x +(x) + + ) + +401 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +402  + #ohl +( +x + + `__bsw_32 + (x) + + ) + +403  + #ohs +( +x + + `__bsw_16 + (x) + + ) + +404  + #htl +( +x + + `__bsw_32 + (x) + + ) + +405  + #hts +( +x + + `__bsw_16 + (x) + + ) + +410 #ifde +__GNUC__ + + +411  + #IN6_IS_ADDR_UNSPECIFIED +( +a +) \ + +412 ( +__exnsi__ + \ + +413 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +414 +__a +-> +s6_addr32 +[0] == 0 \ + +415 && +__a +-> +s6_addr32 +[1] == 0 \ + +416 && +__a +-> +s6_addr32 +[2] == 0 \ + +417 && +__a +-> +s6_addr32 +[3] =0; + } +})) + + ) + +419  + #IN6_IS_ADDR_LOOPBACK +( +a +) \ + +420 ( +__exnsi__ + \ + +421 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +422 +__a +-> +s6_addr32 +[0] == 0 \ + +423 && +__a +-> +s6_addr32 +[1] == 0 \ + +424 && +__a +-> +s6_addr32 +[2] == 0 \ + +425 && +__a +-> +s6_addr32 +[3] = + `htl + (1); })) + + ) + +427  + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +428 ( +__exnsi__ + \ + +429 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +430 ( +__a +-> +s6_addr32 +[0] & + `htl + (0xffc00000)=ht(0x800000); })) + + ) + +432  + #IN6_IS_ADDR_SITELOCAL +( +a +) \ + +433 ( +__exnsi__ + \ + +434 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +435 ( +__a +-> +s6_addr32 +[0] & + `htl + (0xffc00000)=ht(0xc00000); })) + + ) + +437  + #IN6_IS_ADDR_V4MAPPED +( +a +) \ + +438 ( +__exnsi__ + \ + +439 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +440 +__a +-> +s6_addr32 +[0] == 0 \ + +441 && +__a +-> +s6_addr32 +[1] == 0 \ + +442 && +__a +-> +s6_addr32 +[2] = + `htl + (0xffff); })) + + ) + +444  + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +445 ( +__exnsi__ + \ + +446 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +447 +__a +-> +s6_addr32 +[0] == 0 \ + +448 && +__a +-> +s6_addr32 +[1] == 0 \ + +449 && +__a +-> +s6_addr32 +[2] == 0 \ + +450 && + `ohl + ( +__a +-> +s6_addr32 +[3]> 1; })) + + ) + +452  + #IN6_ARE_ADDR_EQUAL +( +a +, +b +) \ + +453 ( +__exnsi__ + \ + +454 ({ cڡ  +6_addr + * +__a + = (cڡ 6_add*( +a +); \ + +455 cڡ  +6_addr + * +__b + = (cڡ 6_add*( +b +); \ + +456 +__a +-> +s6_addr32 +[0] = +__b +->s6_addr32[0] \ + +457 && +__a +-> +s6_addr32 +[1] = +__b +->s6_addr32[1] \ + +458 && +__a +-> +s6_addr32 +[2] = +__b +->s6_addr32[2] \ + +459 && +__a +-> +s6_addr32 +[3] = +__b +->s6_addr32[3]; })) + + ) + +461  + #IN6_IS_ADDR_UNSPECIFIED +( +a +) \ + +462 (((cڡ +ut32_t + *( +a +))[0] == 0 \ + +463 && ((cڡ +ut32_t + *( +a +))[1] == 0 \ + +464 && ((cڡ +ut32_t + *( +a +))[2] == 0 \ + +465 && ((cڡ +ut32_t + *( +a +))[3] =0) + + ) + +467  + #IN6_IS_ADDR_LOOPBACK +( +a +) \ + +468 (((cڡ +ut32_t + *( +a +))[0] == 0 \ + +469 && ((cڡ +ut32_t + *( +a +))[1] == 0 \ + +470 && ((cڡ +ut32_t + *( +a +))[2] == 0 \ + +471 && ((cڡ +ut32_t + *( +a +))[3] = + `htl + (1)) + + ) + +473  + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +474 ((((cڡ +ut32_t + *( +a +))[0] & + `htl + (0xffc00000)) \ + +475 = + `htl + (0x800000)) + + ) + +477  + #IN6_IS_ADDR_SITELOCAL +( +a +) \ + +478 ((((cڡ +ut32_t + *( +a +))[0] & + `htl + (0xffc00000)) \ + +479 = + `htl + (0xc00000)) + + ) + +481  + #IN6_IS_ADDR_V4MAPPED +( +a +) \ + +482 ((((cڡ +ut32_t + *( +a +))[0] == 0) \ + +483 && (((cڡ +ut32_t + *( +a +))[1] == 0) \ + +484 && (((cڡ +ut32_t + *( +a +))[2] = + `htl + (0xffff))) + + ) + +486  + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +487 ((((cڡ +ut32_t + *( +a +))[0] == 0) \ + +488 && (((cڡ +ut32_t + *( +a +))[1] == 0) \ + +489 && (((cڡ +ut32_t + *( +a +))[2] == 0) \ + +490 && ( + `ohl + (((cڡ +ut32_t + *( +a +))[3]> 1)) + + ) + +492  + #IN6_ARE_ADDR_EQUAL +( +a +, +b +) \ + +493 ((((cڡ +ut32_t + *( +a +))[0] =((cڡ ut32_*( +b +))[0]) \ + +494 && (((cڡ +ut32_t + *( +a +))[1] =((cڡ ut32_*( +b +))[1]) \ + +495 && (((cڡ +ut32_t + *( +a +))[2] =((cڡ ut32_*( +b +))[2]) \ + +496 && (((cڡ +ut32_t + *( +a +))[3] =((cڡ ut32_*( +b +))[3])) + + ) + +499  + #IN6_IS_ADDR_MULTICAST +( +a +(((cڡ +ut8_t + *))[0] =0xff) + + ) + +501 #ifde +__USE_MISC + + +503  + $bdsvpt + ( +__sockfd +,  +sockaddr_ + * +__sock_ + +__THROW +; + +506  + $bdsvpt6 + ( +__sockfd +,  +sockaddr_6 + * +__sock_ +) + +507 +__THROW +; + +511  + #IN6_IS_ADDR_MC_NODELOCAL +( +a +) \ + +512 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +513 && ((((cڡ +ut8_t + *( +a +))[1] & 0xf=0x1)) + + ) + +515  + #IN6_IS_ADDR_MC_LINKLOCAL +( +a +) \ + +516 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +517 && ((((cڡ +ut8_t + *( +a +))[1] & 0xf=0x2)) + + ) + +519  + #IN6_IS_ADDR_MC_SITELOCAL +( +a +) \ + +520 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +521 && ((((cڡ +ut8_t + *( +a +))[1] & 0xf=0x5)) + + ) + +523  + #IN6_IS_ADDR_MC_ORGLOCAL +( +a +) \ + +524 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +525 && ((((cڡ +ut8_t + *( +a +))[1] & 0xf=0x8)) + + ) + +527  + #IN6_IS_ADDR_MC_GLOBAL +( +a +) \ + +528 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +529 && ((((cڡ +ut8_t + *( +a +))[1] & 0xf=0xe)) + + ) + +532 #ifde +__USE_GNU + + +533  +cmsghdr +; + +535 #ide +__USE_KERNEL_IPV6_DEFS + + +537  + s6_pktfo + + +539  +6_addr + +i6_addr +; + +540  +i6_ifdex +; + +544  + s6_mtufo + + +546  +sockaddr_6 + +6m_addr +; + +547 +ut32_t + +6m_mtu +; + +552  + $6_ti_a + ( +__nbys +) + +553 +__THROW + +__ibu_dd__ +; + +554  + $6_ti_ + (* +__bp +,  +cmsghdr + ** +__cmsgp +, + +555  +__ty + +__THROW + +__ibu_dd__ +; + +556  + $6_ti_nd + ( +cmsghdr + * +__cmsg +, + +557 cڡ +ut8_t + * +__typ +,  +__mux +, + +558  +__usy + +__THROW + +__ibu_dd__ +; + +559 +ut8_t + * + $6_ti_loc + ( +cmsghdr + * +__cmsg +,  +__d +, + +560  +__mux +,  +__usy +) + +561 +__THROW + +__ibu_dd__ +; + +562  + $6_ti_xt + (cڡ  +cmsghdr + * +__cmsg +, + +563 +ut8_t + ** +__p +) + +564 +__THROW + +__ibu_dd__ +; + +565  + $6_ti_fd + (cڡ  +cmsghdr + * +__cmsg +, + +566 +ut8_t + ** +__p +,  +__ty +) + +567 +__THROW + +__ibu_dd__ +; + +571  + $6_t_ + (* +__extbuf +, +sockn_t + +__ex + +__THROW +; + +572  + $6_t_nd + (* +__extbuf +, +sockn_t + +__ex +,  +__offt +, + +573 +ut8_t + +__ty +, +sockn_t + +__n +, ut8_ +__ign +, + +574 ** +__dabu + +__THROW +; + +575  + $6_t_fish + (* +__extbuf +, +sockn_t + +__ex +,  +__offt +) + +576 +__THROW +; + +577  + $6_t_t_v + (* +__dabuf +,  +__offt +, * +__v +, + +578 +sockn_t + +__vn + +__THROW +; + +579  + $6_t_xt + (* +__extbuf +, +sockn_t + +__ex +,  +__offt +, + +580 +ut8_t + * +__typ +, +sockn_t + * +__ +, + +581 ** +__dabu + +__THROW +; + +582  + $6_t_fd + (* +__extbuf +, +sockn_t + +__ex +,  +__offt +, + +583 +ut8_t + +__ty +, +sockn_t + * +__ +, + +584 ** +__dabu + +__THROW +; + +585  + $6_t_g_v + (* +__dabuf +,  +__offt +, * +__v +, + +586 +sockn_t + +__vn + +__THROW +; + +590 +sockn_t + + $6_h_a + ( +__ty +,  +__gmts + +__THROW +; + +591 * + $6_h_ + (* +__bp +, +sockn_t + +__bp_n +,  +__ty +, + +592  +__gmts + +__THROW +; + +593  + $6_h_add + (* +__bp +, cڡ  +6_addr + * +__addr + +__THROW +; + +594  + $6_h_v + (cڡ * +__ +, * +__out + +__THROW +; + +595  + $6_h_gmts + (cڡ * +__bp + +__THROW +; + +596  +6_addr + * + $6_h_gaddr + (cڡ * +__bp +,  +__dex +) + +597 +__THROW +; + +603  + $gv4sourfr + ( +__s +,  +_addr + +__r_addr +, + +604  +_addr + +__group +, +ut32_t + * +__fmode +, + +605 +ut32_t + * +__numc +,  +_addr + * +__i +) + +606 +__THROW +; + +609  + $tv4sourfr + ( +__s +,  +_addr + +__r_addr +, + +610  +_addr + +__group +, +ut32_t + +__fmode +, + +611 +ut32_t + +__numc +, + +612 cڡ  +_addr + * +__i +) + +613 +__THROW +; + +617  + $gsourfr + ( +__s +, +ut32_t + +__r_addr +, + +618 cڡ  +sockaddr + * +__group +, + +619 +sockn_t + +__grou +, +ut32_t + * +__fmode +, + +620 +ut32_t + * +__numc +, + +621  +sockaddr_age + * +__i + +__THROW +; + +624  + $tsourfr + ( +__s +, +ut32_t + +__r_addr +, + +625 cڡ  +sockaddr + * +__group +, + +626 +sockn_t + +__grou +, +ut32_t + +__fmode +, + +627 +ut32_t + +__numc +, + +628 cڡ  +sockaddr_age + * +__i + +__THROW +; + +631 +__END_DECLS + + + @/usr/include/setjmp.h + +22 #idef +_SETJMP_H + + +23  + #_SETJMP_H + 1 + + ) + +25  + ~ + +27 + g__BEGIN_DECLS + + +29  + ~ + +30  + ~ + +34  + s__jmp_buf_g + + +40 +__jmp_buf + + m__jmpbuf +; + +41  + m__mask_was_ved +; + +42 +__sigt_t + + m__ved_mask +; + +46 +__BEGIN_NAMESPACE_STD + + +48  +__jmp_buf_g + + tjmp_buf +[1]; + +52  + $tjmp + ( +jmp_buf + +__v + +__THROWNL +; + +54 +__END_NAMESPACE_STD + + +59  + $__sigtjmp + ( +__jmp_buf_g + +__v +[1],  +__vemask + +__THROWNL +; + +63  + $_tjmp + ( +__jmp_buf_g + +__v +[1] +__THROWNL +; + +67  + #tjmp +( +v + + `_tjmp + (v) + + ) + +70 +__BEGIN_NAMESPACE_STD + + +74  + $lgjmp + ( +__jmp_buf_g + +__v +[1],  +__v +) + +75 +__THROWNL + + `__ibu__ + (( +__nܑu__ +)); + +77 +__END_NAMESPACE_STD + + +79 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +83  + $_lgjmp + ( +__jmp_buf_g + +__v +[1],  +__v +) + +84 +__THROWNL + + `__ibu__ + (( +__nܑu__ +)); + +88 #ifdef +__USE_POSIX + + +92  +__jmp_buf_g + + tsigjmp_buf +[1]; + +96  + #sigtjmp +( +v +, +vemask + + `__sigtjmp + (v, savemask) + + ) + +102  + $siglgjmp + ( +sigjmp_buf + +__v +,  +__v +) + +103 +__THROWNL + + `__ibu__ + (( +__nܑu__ +)); + +108 #i +__USE_FORTIFY_LEVEL + > 0 + +109  + ~ + +112 +__END_DECLS + + + @/usr/include/signal.h + +22 #idef +_SIGNAL_H + + +24 #i! +defed + +__ed_sig_omic_t + && !defed +__ed_sigt_t + + +25  + #_SIGNAL_H + + + ) + +28  + ~ + +30 + g__BEGIN_DECLS + + +32  + ~ + +36 #i +defed + +__ed_sig_omic_t + || defed +_SIGNAL_H + + +37 #ide +__sig_omic_t_defed + + +38  + #__sig_omic_t_defed + + + ) + +39 +__BEGIN_NAMESPACE_STD + + +40  +__sig_omic_t + + tsig_omic_t +; + +41 + g__END_NAMESPACE_STD + + +43 #unde +__ed_sig_omic_t + + +46 #i +defed + +__ed_sigt_t + || (defed +_SIGNAL_H + && defed +__USE_POSIX +) + +47 #ide +__sigt_t_defed + + +48  + #__sigt_t_defed + + + ) + +49  +__sigt_t + + tsigt_t +; + +51 #unde +__ed_sigt_t + + +54 #ifde +_SIGNAL_H + + +56  + ~ + +57  + ~ + +59 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K + + +60 #ide +__pid_t_defed + + +61  +__pid_t + + tpid_t +; + +62  + #__pid_t_defed + + + ) + +64 #ifde +__USE_XOPEN + + +66 #ide +__uid_t_defed + + +67  +__uid_t + + tuid_t +; + +68  + #__uid_t_defed + + + ) + +72 #ifde +__USE_POSIX199309 + + +74  + #__ed_timeec + + + ) + +75  + ~ + +78 #i +defed + +__USE_POSIX199309 + || defed +__USE_XOPEN_EXTENDED + + +80  + ~ + +85 (* + t__sighdr_t +) (); + +90 +__sighdr_t + + $__sysv_sigl + ( +__sig +, +__sighdr_t + +__hdr +) + +91 +__THROW +; + +92 #ifde +__USE_GNU + + +93 +__sighdr_t + + $sysv_sigl + ( +__sig +, +__sighdr_t + +__hdr +) + +94 +__THROW +; + +100 +__BEGIN_NAMESPACE_STD + + +101 #ifde +__USE_MISC + + +102 +__sighdr_t + + $sigl + ( +__sig +, +__sighdr_t + +__hdr +) + +103 +__THROW +; + +106 #ifde +__REDIRECT_NTH + + +107 +__sighdr_t + + `__REDIRECT_NTH + ( +sigl +, + +108 ( +__sig +, +__sighdr_t + +__hdr +), + +109 +__sysv_sigl +); + +111  + #sigl + +__sysv_sigl + + + ) + +114 +__END_NAMESPACE_STD + + +116 #ifde +__USE_XOPEN + + +119 +__sighdr_t + + $bsd_sigl + ( +__sig +, +__sighdr_t + +__hdr +) + +120 +__THROW +; + +126 #ifde +__USE_POSIX + + +127  + $kl + ( +__pid_t + +__pid +,  +__sig + +__THROW +; + +130 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +134  + $kg + ( +__pid_t + +__pg +,  +__sig + +__THROW +; + +137 +__BEGIN_NAMESPACE_STD + + +139  + $i + ( +__sig + +__THROW +; + +140 +__END_NAMESPACE_STD + + +142 #ifde +__USE_MISC + + +144 +__sighdr_t + + $ssigl + ( +__sig +, +__sighdr_t + +__hdr +) + +145 +__THROW +; + +146  + $gsigl + ( +__sig + +__THROW +; + +149 #ifde +__USE_XOPEN2K8 + + +151  + `psigl + ( +__sig +, cڡ * +__s +); + +154  + `psigfo + (cڡ +sigfo_t + * +__pfo +, cڡ * +__s +); + +166 #ifde +__USE_XOPEN + + +167 #ifde +__GNUC__ + + +168  + $sigu + ( +__sig + + `__asm__ + ("__xpg_sigpause"); + +170  + `__sigu + ( +__sig__mask +,  +__is_sig +); + +172  + #sigu +( +sig + + `__sigu + ((sig), 1) + + ) + +177 #ifde +__USE_MISC + + +184  + #sigmask +( +sig + + `__sigmask +(sig) + + ) + +187  + $sigblock + ( +__mask + +__THROW + +__ibu_dd__ +; + +190  + $sigtmask + ( +__mask + +__THROW + +__ibu_dd__ +; + +193  + $siggmask + ( +__THROW + +__ibu_dd__ +; + +197 #ifde +__USE_MISC + + +198  + #NSIG + +_NSIG + + + ) + +201 #ifde +__USE_GNU + + +202  +__sighdr_t + + tsighdr_t +; + +206 #ifde +__USE_MISC + + +207  +__sighdr_t + + tsig_t +; + +210 #ifde +__USE_POSIX + + +213  + $sigemyt + ( +sigt_t + * +__t + +__THROW + + `__nnu + ((1)); + +216  + $sigflt + ( +sigt_t + * +__t + +__THROW + + `__nnu + ((1)); + +219  + $sigaddt + ( +sigt_t + * +__t +,  +__signo + +__THROW + + `__nnu + ((1)); + +222  + $sigdt + ( +sigt_t + * +__t +,  +__signo + +__THROW + + `__nnu + ((1)); + +225  + $sigismemb + (cڡ +sigt_t + * +__t +,  +__signo +) + +226 +__THROW + + `__nnu + ((1)); + +228 #ifde +__USE_GNU + + +230  + $sigimyt + (cڡ +sigt_t + * +__t + +__THROW + + `__nnu + ((1)); + +233  + $sigdt + ( +sigt_t + * +__t +, cڡ sigt_* +__ +, + +234 cڡ +sigt_t + * +__right + +__THROW + + `__nnu + ((1, 2, 3)); + +237  + $sigܣt + ( +sigt_t + * +__t +, cڡ sigt_* +__ +, + +238 cڡ +sigt_t + * +__right + +__THROW + + `__nnu + ((1, 2, 3)); + +243  + ~ + +246  + $sigocmask + ( +__how +, cڡ +sigt_t + * +__ri + +__t +, + +247 +sigt_t + * +__ri + +__ot + +__THROW +; + +254  + $sigsud + (cڡ +sigt_t + * +__t + + `__nnu + ((1)); + +257  + $sigai + ( +__sig +, cڡ  +sigai + * +__ri + +__a +, + +258  +sigai + * +__ri + +__ + +__THROW +; + +261  + $signdg + ( +sigt_t + * +__t + +__THROW + + `__nnu + ((1)); + +268  + $sigwa + (cڡ +sigt_t + * +__ri + +__t +, *__ri +__sig +) + +269 + `__nnu + ((1, 2)); + +271 #ifde +__USE_POSIX199309 + + +276  + $sigwafo + (cڡ +sigt_t + * +__ri + +__t +, + +277 +sigfo_t + * +__ri + +__fo + + `__nnu + ((1)); + +284  + $sigtimedwa + (cڡ +sigt_t + * +__ri + +__t +, + +285 +sigfo_t + * +__ri + +__fo +, + +286 cڡ  +timeec + * +__ri + +__timeout +) + +287 + `__nnu + ((1)); + +291  + $sigqueue + ( +__pid_t + +__pid +,  +__sig +, cڡ  +sigv + +__v +) + +292 +__THROW +; + +297 #ifde +__USE_MISC + + +301 cڡ *cڡ +_sys_sigli +[ +_NSIG +]; + +302 cڡ *cڡ +sys_sigli +[ +_NSIG +]; + +306  + ~ + +309  + $sigtu + ( +sigcڋxt + * +__s + +__THROW +; + +314 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +315  + #__ed_size_t + + + ) + +316  + ~ + +321  + $sigu + ( +__sig +,  +__u + +__THROW +; + +323  + ~ + +324 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +326  + ~ + +332  + $sigack + ( +sigack + * +__ss +, sigack * +__oss +) + +333 +__THROW + +__ibu_dd__ +; + +337  + $sigtack + (cڡ  +sigtack + * +__ri + +__ss +, + +338  +sigtack + * +__ri + +__oss + +__THROW +; + +342 #ifde +__USE_XOPEN_EXTENDED + + +346  + $sighd + ( +__sig + +__THROW +; + +349  + $sigl + ( +__sig + +__THROW +; + +352  + $sigigne + ( +__sig + +__THROW +; + +355 +__sighdr_t + + $sigt + ( +__sig +, +__sighdr_t + +__di + +__THROW +; + +358 #i +defed + +__USE_POSIX199506 + || defed +__USE_UNIX98 + + +361  + ~ + +362  + ~ + +369  + $__libc_cut_sigm + ( +__THROW +; + +371  + $__libc_cut_sigmax + ( +__THROW +; + +375 +__END_DECLS + + + @/usr/include/stdint.h + +22 #ide +_STDINT_H + + +23  + #_STDINT_H + 1 + + ) + +25  + ~ + +26  + ~ + +27  + ~ + +34 #ide +__t8_t_defed + + +35  + #__t8_t_defed + + + ) + +36 sigd  + tt8_t +; + +37  + tt16_t +; + +38  + tt32_t +; + +39 #i +__WORDSIZE + == 64 + +40  + tt64_t +; + +42 +__exnsi__ + + +43  + tt64_t +; + +48  + tut8_t +; + +49  + tut16_t +; + +50 #ide +__ut32_t_defed + + +51  + tut32_t +; + +52  + #__ut32_t_defed + + + ) + +54 #i +__WORDSIZE + == 64 + +55  + tut64_t +; + +57 +__exnsi__ + + +58  + tut64_t +; + +65 sigd  + tt_a8_t +; + +66  + tt_a16_t +; + +67  + tt_a32_t +; + +68 #i +__WORDSIZE + == 64 + +69  + tt_a64_t +; + +71 +__exnsi__ + + +72  + tt_a64_t +; + +76  + tut_a8_t +; + +77  + tut_a16_t +; + +78  + tut_a32_t +; + +79 #i +__WORDSIZE + == 64 + +80  + tut_a64_t +; + +82 +__exnsi__ + + +83  + tut_a64_t +; + +90 sigd  + tt_8_t +; + +91 #i +__WORDSIZE + == 64 + +92  + tt_16_t +; + +93  + tt_32_t +; + +94  + tt_64_t +; + +96  + tt_16_t +; + +97  + tt_32_t +; + +98 +__exnsi__ + + +99  + tt_64_t +; + +103  + tut_8_t +; + +104 #i +__WORDSIZE + == 64 + +105  + tut_16_t +; + +106  + tut_32_t +; + +107  + tut_64_t +; + +109  + tut_16_t +; + +110  + tut_32_t +; + +111 +__exnsi__ + + +112  + tut_64_t +; + +117 #i +__WORDSIZE + == 64 + +118 #ide +___t_defed + + +119  + t_t +; + +120  + #___t_defed + + + ) + +122  + tu_t +; + +124 #ide +___t_defed + + +125  + t_t +; + +126  + #___t_defed + + + ) + +128  + tu_t +; + +133 #i +__WORDSIZE + == 64 + +134  + ttmax_t +; + +135  + tutmax_t +; + +137 +__exnsi__ + + +138  + ttmax_t +; + +139 +__exnsi__ + + +140  + tutmax_t +; + +144 #i +__WORDSIZE + == 64 + +145  + #__INT64_C +( +c +## +L + + + ) + +146  + #__UINT64_C +( +c +## +UL + + + ) + +148  + #__INT64_C +( +c +## +LL + + + ) + +149  + #__UINT64_C +( +c +## +ULL + + + ) + +155  + #INT8_MIN + (-128) + + ) + +156  + #INT16_MIN + (-32767-1) + + ) + +157  + #INT32_MIN + (-2147483647-1) + + ) + +158  + #INT64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +160  + #INT8_MAX + (127) + + ) + +161  + #INT16_MAX + (32767) + + ) + +162  + #INT32_MAX + (2147483647) + + ) + +163  + #INT64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +166  + #UINT8_MAX + (255) + + ) + +167  + #UINT16_MAX + (65535) + + ) + +168  + #UINT32_MAX + (4294967295U) + + ) + +169  + #UINT64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +173  + #INT_LEAST8_MIN + (-128) + + ) + +174  + #INT_LEAST16_MIN + (-32767-1) + + ) + +175  + #INT_LEAST32_MIN + (-2147483647-1) + + ) + +176  + #INT_LEAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +178  + #INT_LEAST8_MAX + (127) + + ) + +179  + #INT_LEAST16_MAX + (32767) + + ) + +180  + #INT_LEAST32_MAX + (2147483647) + + ) + +181  + #INT_LEAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +184  + #UINT_LEAST8_MAX + (255) + + ) + +185  + #UINT_LEAST16_MAX + (65535) + + ) + +186  + #UINT_LEAST32_MAX + (4294967295U) + + ) + +187  + #UINT_LEAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +191  + #INT_FAST8_MIN + (-128) + + ) + +192 #i +__WORDSIZE + == 64 + +193  + #INT_FAST16_MIN + (-9223372036854775807L-1) + + ) + +194  + #INT_FAST32_MIN + (-9223372036854775807L-1) + + ) + +196  + #INT_FAST16_MIN + (-2147483647-1) + + ) + +197  + #INT_FAST32_MIN + (-2147483647-1) + + ) + +199  + #INT_FAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +201  + #INT_FAST8_MAX + (127) + + ) + +202 #i +__WORDSIZE + == 64 + +203  + #INT_FAST16_MAX + (9223372036854775807L) + + ) + +204  + #INT_FAST32_MAX + (9223372036854775807L) + + ) + +206  + #INT_FAST16_MAX + (2147483647) + + ) + +207  + #INT_FAST32_MAX + (2147483647) + + ) + +209  + #INT_FAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +212  + #UINT_FAST8_MAX + (255) + + ) + +213 #i +__WORDSIZE + == 64 + +214  + #UINT_FAST16_MAX + (18446744073709551615UL) + + ) + +215  + #UINT_FAST32_MAX + (18446744073709551615UL) + + ) + +217  + #UINT_FAST16_MAX + (4294967295U) + + ) + +218  + #UINT_FAST32_MAX + (4294967295U) + + ) + +220  + #UINT_FAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +224 #i +__WORDSIZE + == 64 + +225  + #INTPTR_MIN + (-9223372036854775807L-1) + + ) + +226  + #INTPTR_MAX + (9223372036854775807L) + + ) + +227  + #UINTPTR_MAX + (18446744073709551615UL) + + ) + +229  + #INTPTR_MIN + (-2147483647-1) + + ) + +230  + #INTPTR_MAX + (2147483647) + + ) + +231  + #UINTPTR_MAX + (4294967295U) + + ) + +236  + #INTMAX_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +238  + #INTMAX_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +241  + #UINTMAX_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +247 #i +__WORDSIZE + == 64 + +248  + #PTRDIFF_MIN + (-9223372036854775807L-1) + + ) + +249  + #PTRDIFF_MAX + (9223372036854775807L) + + ) + +251  + #PTRDIFF_MIN + (-2147483647-1) + + ) + +252  + #PTRDIFF_MAX + (2147483647) + + ) + +256  + #SIG_ATOMIC_MIN + (-2147483647-1) + + ) + +257  + #SIG_ATOMIC_MAX + (2147483647) + + ) + +260 #i +__WORDSIZE + == 64 + +261  + #SIZE_MAX + (18446744073709551615UL) + + ) + +263 #ifde +__WORDSIZE32_SIZE_ULONG + + +264  + #SIZE_MAX + (4294967295UL) + + ) + +266  + #SIZE_MAX + (4294967295U) + + ) + +271 #ide +WCHAR_MIN + + +273  + #WCHAR_MIN + +__WCHAR_MIN + + + ) + +274  + #WCHAR_MAX + +__WCHAR_MAX + + + ) + +278  + #WINT_MIN + (0u) + + ) + +279  + #WINT_MAX + (4294967295u) + + ) + +282  + #INT8_C +( +c + + ) +c + +283  + #INT16_C +( +c + + ) +c + +284  + #INT32_C +( +c + + ) +c + +285 #i +__WORDSIZE + == 64 + +286  + #INT64_C +( +c +## +L + + + ) + +288  + #INT64_C +( +c +## +LL + + + ) + +292  + #UINT8_C +( +c + + ) +c + +293  + #UINT16_C +( +c + + ) +c + +294  + #UINT32_C +( +c +## +U + + + ) + +295 #i +__WORDSIZE + == 64 + +296  + #UINT64_C +( +c +## +UL + + + ) + +298  + #UINT64_C +( +c +## +ULL + + + ) + +302 #i +__WORDSIZE + == 64 + +303  + #INTMAX_C +( +c +## +L + + + ) + +304  + #UINTMAX_C +( +c +## +UL + + + ) + +306  + #INTMAX_C +( +c +## +LL + + + ) + +307  + #UINTMAX_C +( +c +## +ULL + + + ) + + @/usr/include/stdio.h + +23 #ide +_STDIO_H + + +25 #i! +defed + +__ed_FILE + && !defed +__ed___FILE + + +26  + #_STDIO_H + 1 + + ) + +27  + ~ + +29 + g__BEGIN_DECLS + + +31  + #__ed_size_t + + + ) + +32  + #__ed_NULL + + + ) + +33  + ~ + +35  + ~ + +36  + #__ed_FILE + + + ) + +37  + #__ed___FILE + + + ) + +41 #i! +defed + +__FILE_defed + && defed +__ed_FILE + + +44  + g_IO_FILE +; + +46 +__BEGIN_NAMESPACE_STD + + +48  +_IO_FILE + + tFILE +; + +49 + g__END_NAMESPACE_STD + + +50 #i +defed + +__USE_LARGEFILE64 + || defed +__USE_POSIX + \ + +51 || +defed + + g__USE_ISOC99 + || defed + g__USE_XOPEN + \ + +52 || +defed + +__USE_POSIX2 + + +53 + $__USING_NAMESPACE_STD +( +FILE +) + +56  + #__FILE_defed + 1 + + ) + +58 #unde +__ed_FILE + + +61 #i! +defed + +____FILE_defed + && defed +__ed___FILE + + +64  +_IO_FILE + + t__FILE +; + +66  + #____FILE_defed + 1 + + ) + +68 #unde +__ed___FILE + + +71 #ifdef +_STDIO_H + + +72  + #_STDIO_USES_IOSTREAM + + + ) + +74  + ~ + +76 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +77 #ifde +__GNUC__ + + +78 #ide +_VA_LIST_DEFINED + + +79  +_G_va_li + + tva_li +; + +80  + #_VA_LIST_DEFINED + + + ) + +83  + ~ + +87 #ifde +__USE_XOPEN2K8 + + +88 #ide +__off_t_defed + + +89 #ide +__USE_FILE_OFFSET64 + + +90  +__off_t + + toff_t +; + +92  +__off64_t + + toff_t +; + +94  + #__off_t_defed + + + ) + +96 #i +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +97  +__off64_t + + toff64_t +; + +98  + #__off64_t_defed + + + ) + +101 #ide +__ssize_t_defed + + +102  +__ssize_t + + tssize_t +; + +103  + #__ssize_t_defed + + + ) + +108 +__BEGIN_NAMESPACE_STD + + +109 #ide +__USE_FILE_OFFSET64 + + +110  +_G_os_t + + tos_t +; + +112  +_G_os64_t + + tos_t +; + +114 +__END_NAMESPACE_STD + + +115 #ifde +__USE_LARGEFILE64 + + +116  +_G_os64_t + + tos64_t +; + +120  + #_IOFBF + 0 + + ) + +121  + #_IOLBF + 1 + + ) + +122  + #_IONBF + 2 + + ) + +126 #ide +BUFSIZ + + +127  + #BUFSIZ + +_IO_BUFSIZ + + + ) + +133 #ide +EOF + + +134  + #EOF + (-1) + + ) + +140  + #SEEK_SET + 0 + + ) + +141  + #SEEK_CUR + 1 + + ) + +142  + #SEEK_END + 2 + + ) + +143 #ifde +__USE_GNU + + +144  + #SEEK_DATA + 3 + + ) + +145  + #SEEK_HOLE + 4 + + ) + +149 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +151  + #P_tmpd + "/tmp" + + ) + +164  + ~ + +168  +_IO_FILE + * +d +; + +169  +_IO_FILE + * +dout +; + +170  +_IO_FILE + * +dr +; + +172  + #d + +d + + + ) + +173  + #dout + +dout + + + ) + +174  + #dr + +dr + + + ) + +176 +__BEGIN_NAMESPACE_STD + + +178  + $move + (cڡ * +__fame + +__THROW +; + +180  + $me + (cڡ * +__d +, cڡ * +__w + +__THROW +; + +181 +__END_NAMESPACE_STD + + +183 #ifde +__USE_ATFILE + + +185  + $mt + ( +__dfd +, cڡ * +__d +,  +__wfd +, + +186 cڡ * +__w + +__THROW +; + +189 +__BEGIN_NAMESPACE_STD + + +194 #ide +__USE_FILE_OFFSET64 + + +195 +FILE + * + $tmpfe + ( +__wur +; + +197 #ifde +__REDIRECT + + +198 +FILE + * + `__REDIRECT + ( +tmpfe +, (), +tmpfe64 + +__wur +; + +200  + #tmpfe + +tmpfe64 + + + ) + +204 #ifde +__USE_LARGEFILE64 + + +205 +FILE + * + $tmpfe64 + ( +__wur +; + +209 * + $tmam + (* +__s + +__THROW + +__wur +; + +210 +__END_NAMESPACE_STD + + +212 #ifde +__USE_MISC + + +215 * + $tmam_r + (* +__s + +__THROW + +__wur +; + +219 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +227 * + $mam + (cڡ * +__d +, cڡ * +__pfx +) + +228 +__THROW + +__ibu_mloc__ + +__wur +; + +232 +__BEGIN_NAMESPACE_STD + + +237  + `fo + ( +FILE + * +__am +); + +242  + `fush + ( +FILE + * +__am +); + +243 +__END_NAMESPACE_STD + + +245 #ifde +__USE_MISC + + +252  + `fush_uocked + ( +FILE + * +__am +); + +255 #ifde +__USE_GNU + + +262  + `fol + (); + +266 +__BEGIN_NAMESPACE_STD + + +267 #ide +__USE_FILE_OFFSET64 + + +272 +FILE + * + $fݒ + (cڡ * +__ri + +__fame +, + +273 cڡ * +__ri + +__modes + +__wur +; + +278 +FILE + * + $eݒ + (cڡ * +__ri + +__fame +, + +279 cڡ * +__ri + +__modes +, + +280 +FILE + * +__ri + +__am + +__wur +; + +282 #ifde +__REDIRECT + + +283 +FILE + * + `__REDIRECT + ( +fݒ +, (cڡ * +__ri + +__fame +, + +284 cڡ * +__ri + +__modes +), +fݒ64 +) + +285 +__wur +; + +286 +FILE + * + `__REDIRECT + ( +eݒ +, (cڡ * +__ri + +__fame +, + +287 cڡ * +__ri + +__modes +, + +288 +FILE + * +__ri + +__am +), +eݒ64 +) + +289 +__wur +; + +291  + #fݒ + +fݒ64 + + + ) + +292  + #eݒ + +eݒ64 + + + ) + +295 +__END_NAMESPACE_STD + + +296 #ifde +__USE_LARGEFILE64 + + +297 +FILE + * + $fݒ64 + (cڡ * +__ri + +__fame +, + +298 cڡ * +__ri + +__modes + +__wur +; + +299 +FILE + * + $eݒ64 + (cڡ * +__ri + +__fame +, + +300 cڡ * +__ri + +__modes +, + +301 +FILE + * +__ri + +__am + +__wur +; + +304 #ifdef +__USE_POSIX + + +306 +FILE + * + $fdݒ + ( +__fd +, cڡ * +__modes + +__THROW + +__wur +; + +309 #ifdef +__USE_GNU + + +312 +FILE + * + $fݒcook + (* +__ri + +__magic_cook +, + +313 cڡ * +__ri + +__modes +, + +314 +_IO_cook_io_funis_t + +__io_funcs + +__THROW + +__wur +; + +317 #ifde +__USE_XOPEN2K8 + + +319 +FILE + * + $fmemݒ + (* +__s +, +size_t + +__n +, cڡ * +__modes +) + +320 +__THROW + +__wur +; + +325 +FILE + * + $ݒ_memam + (** +__buoc +, +size_t + * +__sizoc + +__THROW + +__wur +; + +329 +__BEGIN_NAMESPACE_STD + + +332  + $tbuf + ( +FILE + * +__ri + +__am +, *__ri +__buf + +__THROW +; + +336  + $tvbuf + ( +FILE + * +__ri + +__am +, *__ri +__buf +, + +337  +__modes +, +size_t + +__n + +__THROW +; + +338 +__END_NAMESPACE_STD + + +340 #ifdef +__USE_MISC + + +343  + $tbufr + ( +FILE + * +__ri + +__am +, *__ri +__buf +, + +344 +size_t + +__size + +__THROW +; + +347  + $ebuf + ( +FILE + * +__am + +__THROW +; + +351 +__BEGIN_NAMESPACE_STD + + +356  + `rtf + ( +FILE + * +__ri + +__am +, + +357 cڡ * +__ri + +__fm +, ...); + +362  + `tf + (cڡ * +__ri + +__fm +, ...); + +364  + $rtf + (* +__ri + +__s +, + +365 cڡ * +__ri + +__fm +, ... +__THROWNL +; + +371  + `vrtf + ( +FILE + * +__ri + +__s +, cڡ *__ri +__fm +, + +372 +_G_va_li + +__g +); + +377  + `vtf + (cڡ * +__ri + +__fm +, +_G_va_li + +__g +); + +379  + $vrtf + (* +__ri + +__s +, cڡ *__ri +__fm +, + +380 +_G_va_li + +__g + +__THROWNL +; + +381 +__END_NAMESPACE_STD + + +383 #i +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +384 +__BEGIN_NAMESPACE_C99 + + +386  + $tf + (* +__ri + +__s +, +size_t + +__maxn +, + +387 cڡ * +__ri + +__fm +, ...) + +388 +__THROWNL + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 4))); + +390  + $vtf + (* +__ri + +__s +, +size_t + +__maxn +, + +391 cڡ * +__ri + +__fm +, +_G_va_li + +__g +) + +392 +__THROWNL + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 0))); + +393 +__END_NAMESPACE_C99 + + +396 #ifde +__USE_GNU + + +399  + $vartf + (** +__ri + +__r +, cڡ *__ri +__f +, + +400 +_G_va_li + +__g +) + +401 +__THROWNL + + `__ibu__ + (( + $__fm__ + ( +__tf__ +, 2, 0)) +__wur +; + +402  + $__artf + (** +__ri + +__r +, + +403 cڡ * +__ri + +__fmt +, ...) + +404 +__THROWNL + + `__ibu__ + (( + $__fm__ + ( +__tf__ +, 2, 3)) +__wur +; + +405  + $artf + (** +__ri + +__r +, + +406 cڡ * +__ri + +__fmt +, ...) + +407 +__THROWNL + + `__ibu__ + (( + $__fm__ + ( +__tf__ +, 2, 3)) +__wur +; + +410 #ifde +__USE_XOPEN2K8 + + +412  + $vdtf + ( +__fd +, cڡ * +__ri + +__fmt +, + +413 +_G_va_li + +__g +) + +414 + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 2, 0))); + +415  + $dtf + ( +__fd +, cڡ * +__ri + +__fmt +, ...) + +416 + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 2, 3))); + +420 +__BEGIN_NAMESPACE_STD + + +425  + $fsnf + ( +FILE + * +__ri + +__am +, + +426 cڡ * +__ri + +__fm +, ... +__wur +; + +431  + $snf + (cڡ * +__ri + +__fm +, ... +__wur +; + +433  + $ssnf + (cڡ * +__ri + +__s +, + +434 cڡ * +__ri + +__fm +, ... +__THROW +; + +436 #i +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +437 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +438 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +439 #ifde +__REDIRECT + + +443  + `__REDIRECT + ( +fsnf +, ( +FILE + * +__ri + +__am +, + +444 cڡ * +__ri + +__fm +, ...), + +445 +__isoc99_fsnf + +__wur +; + +446  + `__REDIRECT + ( +snf +, (cڡ * +__ri + +__fm +, ...), + +447 +__isoc99_snf + +__wur +; + +448  + `__REDIRECT_NTH + ( +ssnf +, (cڡ * +__ri + +__s +, + +449 cڡ * +__ri + +__fm +, ...), + +450 +__isoc99_ssnf +); + +452  + $__isoc99_fsnf + ( +FILE + * +__ri + +__am +, + +453 cڡ * +__ri + +__fm +, ... +__wur +; + +454  + $__isoc99_snf + (cڡ * +__ri + +__fm +, ... +__wur +; + +455  + $__isoc99_ssnf + (cڡ * +__ri + +__s +, + +456 cڡ * +__ri + +__fm +, ... +__THROW +; + +457  + #fsnf + +__isoc99_fsnf + + + ) + +458  + #snf + +__isoc99_snf + + + ) + +459  + #ssnf + +__isoc99_ssnf + + + ) + +463 +__END_NAMESPACE_STD + + +465 #ifdef +__USE_ISOC99 + + +466 +__BEGIN_NAMESPACE_C99 + + +471  + $vfsnf + ( +FILE + * +__ri + +__s +, cڡ *__ri +__fm +, + +472 +_G_va_li + +__g +) + +473 + `__ibu__ + (( + $__fm__ + ( +__snf__ +, 2, 0)) +__wur +; + +479  + $vsnf + (cڡ * +__ri + +__fm +, +_G_va_li + +__g +) + +480 + `__ibu__ + (( + $__fm__ + ( +__snf__ +, 1, 0)) +__wur +; + +483  + $vssnf + (cڡ * +__ri + +__s +, + +484 cڡ * +__ri + +__fm +, +_G_va_li + +__g +) + +485 +__THROW + + `__ibu__ + (( + `__fm__ + ( +__snf__ +, 2, 0))); + +487 #i! +defed + +__USE_GNU + \ + +488 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +489 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +490 #ifde +__REDIRECT + + +494  + `__REDIRECT + ( +vfsnf +, + +495 ( +FILE + * +__ri + +__s +, + +496 cڡ * +__ri + +__fm +, +_G_va_li + +__g +), + +497 +__isoc99_vfsnf +) + +498 + `__ibu__ + (( + $__fm__ + ( +__snf__ +, 2, 0)) +__wur +; + +499  + `__REDIRECT + ( +vsnf +, (cڡ * +__ri + +__fm +, + +500 +_G_va_li + +__g +), +__isoc99_vsnf +) + +501 + `__ibu__ + (( + $__fm__ + ( +__snf__ +, 1, 0)) +__wur +; + +502  + `__REDIRECT_NTH + ( +vssnf +, + +503 (cڡ * +__ri + +__s +, + +504 cڡ * +__ri + +__fm +, + +505 +_G_va_li + +__g +), +__isoc99_vssnf +) + +506 + `__ibu__ + (( + `__fm__ + ( +__snf__ +, 2, 0))); + +508  + $__isoc99_vfsnf + ( +FILE + * +__ri + +__s +, + +509 cڡ * +__ri + +__fm +, + +510 +_G_va_li + +__g + +__wur +; + +511  + $__isoc99_vsnf + (cڡ * +__ri + +__fm +, + +512 +_G_va_li + +__g + +__wur +; + +513  + $__isoc99_vssnf + (cڡ * +__ri + +__s +, + +514 cڡ * +__ri + +__fm +, + +515 +_G_va_li + +__g + +__THROW +; + +516  + #vfsnf + +__isoc99_vfsnf + + + ) + +517  + #vsnf + +__isoc99_vsnf + + + ) + +518  + #vssnf + +__isoc99_vssnf + + + ) + +522 +__END_NAMESPACE_C99 + + +526 +__BEGIN_NAMESPACE_STD + + +531  + `fgc + ( +FILE + * +__am +); + +532  + `gc + ( +FILE + * +__am +); + +538  + `gch + (); + +539 +__END_NAMESPACE_STD + + +543  + #gc +( +_ + + `_IO_gc + (_) + + ) + +545 #ifde +__USE_POSIX + + +550  + `gc_uocked + ( +FILE + * +__am +); + +551  + `gch_uocked + (); + +554 #ifde +__USE_MISC + + +561  + `fgc_uocked + ( +FILE + * +__am +); + +565 +__BEGIN_NAMESPACE_STD + + +573  + `utc + ( +__c +, +FILE + * +__am +); + +574  + `putc + ( +__c +, +FILE + * +__am +); + +580  + `putch + ( +__c +); + +581 +__END_NAMESPACE_STD + + +585  + #putc +( +_ch +, +_ + + `_IO_putc + (_ch, _) + + ) + +587 #ifde +__USE_MISC + + +594  + `utc_uocked + ( +__c +, +FILE + * +__am +); + +597 #ifde +__USE_POSIX + + +602  + `putc_uocked + ( +__c +, +FILE + * +__am +); + +603  + `putch_uocked + ( +__c +); + +607 #i +defed + +__USE_MISC + \ + +608 || ( +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +610  + `gw + ( +FILE + * +__am +); + +613  + `putw + ( +__w +, +FILE + * +__am +); + +617 +__BEGIN_NAMESPACE_STD + + +622 * + $fgs + (* +__ri + +__s +,  +__n +, +FILE + *__ri +__am +) + +623 +__wur +; + +625 #i! +defed + +__USE_ISOC11 + \ + +626 || ( +defed + +__lulus + && __cplusplus <= 201103L) + +638 * + $gs + (* +__s + +__wur + +__ibu_dd__ +; + +640 +__END_NAMESPACE_STD + + +642 #ifde +__USE_GNU + + +649 * + $fgs_uocked + (* +__ri + +__s +,  +__n +, + +650 +FILE + * +__ri + +__am + +__wur +; + +654 #ifdef +__USE_XOPEN2K8 + + +665 +_IO_ssize_t + + $__gdim + (** +__ri + +__l +, + +666 +size_t + * +__ri + +__n +,  +__dim +, + +667 +FILE + * +__ri + +__am + +__wur +; + +668 +_IO_ssize_t + + $gdim + (** +__ri + +__l +, + +669 +size_t + * +__ri + +__n +,  +__dim +, + +670 +FILE + * +__ri + +__am + +__wur +; + +678 +_IO_ssize_t + + $gle + (** +__ri + +__l +, + +679 +size_t + * +__ri + +__n +, + +680 +FILE + * +__ri + +__am + +__wur +; + +684 +__BEGIN_NAMESPACE_STD + + +689  + `uts + (cڡ * +__ri + +__s +, +FILE + *__ri +__am +); + +695  + `puts + (cڡ * +__s +); + +702  + `ungc + ( +__c +, +FILE + * +__am +); + +709 +size_t + + $d + (* +__ri + +__r +, +size_t + +__size +, + +710 +size_t + +__n +, +FILE + * +__ri + +__am + +__wur +; + +715 +size_t + + `fwre + (cڡ * +__ri + +__r +, size_ +__size +, + +716 +size_t + +__n +, +FILE + * +__ri + +__s +); + +717 +__END_NAMESPACE_STD + + +719 #ifde +__USE_GNU + + +726  + `uts_uocked + (cڡ * +__ri + +__s +, + +727 +FILE + * +__ri + +__am +); + +730 #ifde +__USE_MISC + + +737 +size_t + + $d_uocked + (* +__ri + +__r +, +size_t + +__size +, + +738 +size_t + +__n +, +FILE + * +__ri + +__am + +__wur +; + +739 +size_t + + `fwre_uocked + (cڡ * +__ri + +__r +, size_ +__size +, + +740 +size_t + +__n +, +FILE + * +__ri + +__am +); + +744 +__BEGIN_NAMESPACE_STD + + +749  + `fek + ( +FILE + * +__am +,  +__off +,  +__wh +); + +754  + $l + ( +FILE + * +__am + +__wur +; + +759  + `wd + ( +FILE + * +__am +); + +760 +__END_NAMESPACE_STD + + +767 #i +defed + +__USE_LARGEFILE + || defed +__USE_XOPEN2K + + +768 #ide +__USE_FILE_OFFSET64 + + +773  + `feko + ( +FILE + * +__am +, +__off_t + +__off +,  +__wh +); + +778 +__off_t + + $lo + ( +FILE + * +__am + +__wur +; + +780 #ifde +__REDIRECT + + +781  + `__REDIRECT + ( +feko +, + +782 ( +FILE + * +__am +, +__off64_t + +__off +,  +__wh +), + +783 +feko64 +); + +784 +__off64_t + + `__REDIRECT + ( +lo +, ( +FILE + * +__am +), +lo64 +); + +786  + #feko + +feko64 + + + ) + +787  + #lo + +lo64 + + + ) + +792 +__BEGIN_NAMESPACE_STD + + +793 #ide +__USE_FILE_OFFSET64 + + +798  + `fgpos + ( +FILE + * +__ri + +__am +, +os_t + *__ri +__pos +); + +803  + `fos + ( +FILE + * +__am +, cڡ +os_t + * +__pos +); + +805 #ifde +__REDIRECT + + +806  + `__REDIRECT + ( +fgpos +, ( +FILE + * +__ri + +__am +, + +807 +os_t + * +__ri + +__pos +), +fgpos64 +); + +808  + `__REDIRECT + ( +fos +, + +809 ( +FILE + * +__am +, cڡ +os_t + * +__pos +), +fos64 +); + +811  + #fgpos + +fgpos64 + + + ) + +812  + #fos + +fos64 + + + ) + +815 +__END_NAMESPACE_STD + + +817 #ifde +__USE_LARGEFILE64 + + +818  + `feko64 + ( +FILE + * +__am +, +__off64_t + +__off +,  +__wh +); + +819 +__off64_t + + $lo64 + ( +FILE + * +__am + +__wur +; + +820  + `fgpos64 + ( +FILE + * +__ri + +__am +, +os64_t + *__ri +__pos +); + +821  + `fos64 + ( +FILE + * +__am +, cڡ +os64_t + * +__pos +); + +824 +__BEGIN_NAMESPACE_STD + + +826  + $ + ( +FILE + * +__am + +__THROW +; + +828  + $of + ( +FILE + * +__am + +__THROW + +__wur +; + +830  + $ + ( +FILE + * +__am + +__THROW + +__wur +; + +831 +__END_NAMESPACE_STD + + +833 #ifde +__USE_MISC + + +835  + $_uocked + ( +FILE + * +__am + +__THROW +; + +836  + $of_uocked + ( +FILE + * +__am + +__THROW + +__wur +; + +837  + $_uocked + ( +FILE + * +__am + +__THROW + +__wur +; + +841 +__BEGIN_NAMESPACE_STD + + +846  + ` + (cڡ * +__s +); + +847 +__END_NAMESPACE_STD + + +853  + ~ + +856 #ifdef +__USE_POSIX + + +858  + $fo + ( +FILE + * +__am + +__THROW + +__wur +; + +861 #ifde +__USE_MISC + + +863  + $fo_uocked + ( +FILE + * +__am + +__THROW + +__wur +; + +867 #ifde +__USE_POSIX2 + + +872 +FILE + * + $pݒ + (cڡ * +__commd +, cڡ * +__modes + +__wur +; + +878  + `po + ( +FILE + * +__am +); + +882 #ifdef +__USE_POSIX + + +884 * + $mid + (* +__s + +__THROW +; + +888 #ifde +__USE_XOPEN + + +890 * + `curid + (* +__s +); + +894 #ifdef +__USE_GNU + + +895  +oback +; + +898  + $oback_tf + ( +oback + * +__ri + +__oback +, + +899 cڡ * +__ri + +__fm +, ...) + +900 +__THROWNL + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 2, 3))); + +901  + $oback_vtf + ( +oback + * +__ri + +__oback +, + +902 cڡ * +__ri + +__fm +, + +903 +_G_va_li + +__gs +) + +904 +__THROWNL + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 2, 0))); + +908 #ifde +__USE_POSIX + + +912  + $ockfe + ( +FILE + * +__am + +__THROW +; + +916  + $rylockfe + ( +FILE + * +__am + +__THROW + +__wur +; + +919  + $fuockfe + ( +FILE + * +__am + +__THROW +; + +922 #i +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K + && !defed +__USE_GNU + + +926  + #__ed_gt + + + ) + +927  + ~ + +932 #ifde +__USE_EXTERN_INLINES + + +933  + ~ + +935 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +936  + ~ + +938 #ifde +__LDBL_COMPAT + + +939  + ~ + +942 +__END_DECLS + + + @/usr/include/stdlib.h + +22 #idef +_STDLIB_H + + +24  + ~ + +27  + #__ed_size_t + + + ) + +28 #ide +__ed_mloc_d_oc + + +29  + #__ed_wch_t + + + ) + +30  + #__ed_NULL + + + ) + +32  + ~ + +34 + g__BEGIN_DECLS + + +36 #ide +__ed_mloc_d_oc + + +37  + #_STDLIB_H + 1 + + ) + +39 #i( +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 +&& !defed +_SYS_WAIT_H + + +41  + ~ + +42  + ~ + +44 #ifde +__USE_MISC + + +49 #i +defed + +__GNUC__ + && !defed +__lulus + + +50  + #__WAIT_INT +( +us +) \ + +51 ( + `__exnsi__ + (((uni { + `__tyof +( +us + +__ +;  +__i +; }) \ + +52 { . +__ + = ( +us +}). +__i +)) + + ) + +54  + #__WAIT_INT +( +us +(*(*&(us)) + + ) + +62 #i! +defed + +__GNUC__ + || __GNUC__ < 2 || defed +__lulus + + +63  + #__WAIT_STATUS + * + + ) + +64  + #__WAIT_STATUS_DEFN + * + + ) + +69  +wa + * + m__ur +; + +70 * + m__ +; + +71 } + t__WAIT_STATUS + + t__ibu__ + (( + t__t_uni__ +)); + +72  + #__WAIT_STATUS_DEFN + * + + ) + +77  + #__WAIT_INT +( +us +(us) + + ) + +78  + #__WAIT_STATUS + * + + ) + +79  + #__WAIT_STATUS_DEFN + * + + ) + +84  + #WEXITSTATUS +( +us + + `__WEXITSTATUS + ( + `__WAIT_INT + (us)) + + ) + +85  + #WTERMSIG +( +us + + `__WTERMSIG + ( + `__WAIT_INT + (us)) + + ) + +86  + #WSTOPSIG +( +us + + `__WSTOPSIG + ( + `__WAIT_INT + (us)) + + ) + +87  + #WIFEXITED +( +us + + `__WIFEXITED + ( + `__WAIT_INT + (us)) + + ) + +88  + #WIFSIGNALED +( +us + + `__WIFSIGNALED + ( + `__WAIT_INT + (us)) + + ) + +89  + #WIFSTOPPED +( +us + + `__WIFSTOPPED + ( + `__WAIT_INT + (us)) + + ) + +90 #ifde +__WIFCONTINUED + + +91  + #WIFCONTINUED +( +us + + `__WIFCONTINUED + ( + `__WAIT_INT + (us)) + + ) + +95 +__BEGIN_NAMESPACE_STD + + +99  + mqu +; + +100  + mm +; + +101 } + tdiv_t +; + +104 #ide +__ldiv_t_defed + + +107  + mqu +; + +108  + mm +; + +109 } + tldiv_t +; + +110  + #__ldiv_t_defed + 1 + + ) + +112 + g__END_NAMESPACE_STD + + +114 #i +defed + +__USE_ISOC99 + && !defed +__div_t_defed + + +115 +__BEGIN_NAMESPACE_C99 + + +117 +__exnsi__ + struct + +119  + mqu +; + +120  + mm +; + +121 } + tdiv_t +; + +122  + #__div_t_defed + 1 + + ) + +123 + g__END_NAMESPACE_C99 + + +128  + #RAND_MAX + 2147483647 + + ) + +133  + #EXIT_FAILURE + 1 + + ) + +134  + #EXIT_SUCCESS + 0 + + ) + +138  + #MB_CUR_MAX + ( + `__y_g_mb_cur_max + ()) + + ) + +139 +size_t + + $__y_g_mb_cur_max + ( +__THROW + +__wur +; + +142 +__BEGIN_NAMESPACE_STD + + +144  + $of + (cڡ * +__Ō +) + +145 +__THROW + +__ibu_pu__ + + `__nnu + ((1) +__wur +; + +147  + $oi + (cڡ * +__Ō +) + +148 +__THROW + +__ibu_pu__ + + `__nnu + ((1) +__wur +; + +150  + $ + (cڡ * +__Ō +) + +151 +__THROW + +__ibu_pu__ + + `__nnu + ((1) +__wur +; + +152 +__END_NAMESPACE_STD + + +154 #ifde +__USE_ISOC99 + + +155 +__BEGIN_NAMESPACE_C99 + + +157 +__exnsi__ +  + $l + (cڡ * +__Ō +) + +158 +__THROW + +__ibu_pu__ + + `__nnu + ((1) +__wur +; + +159 +__END_NAMESPACE_C99 + + +162 +__BEGIN_NAMESPACE_STD + + +164  + $od + (cڡ * +__ri + +__Ō +, + +165 ** +__ri + +__dr +) + +166 +__THROW + + `__nnu + ((1)); + +167 +__END_NAMESPACE_STD + + +169 #ifdef +__USE_ISOC99 + + +170 +__BEGIN_NAMESPACE_C99 + + +172  + $of + (cڡ * +__ri + +__Ō +, + +173 ** +__ri + +__dr + +__THROW + + `__nnu + ((1)); + +175  + $d + (cڡ * +__ri + +__Ō +, + +176 ** +__ri + +__dr +) + +177 +__THROW + + `__nnu + ((1)); + +178 +__END_NAMESPACE_C99 + + +181 +__BEGIN_NAMESPACE_STD + + +183  + $ + (cڡ * +__ri + +__Ō +, + +184 ** +__ri + +__dr +,  +__ba +) + +185 +__THROW + + `__nnu + ((1)); + +187  + $oul + (cڡ * +__ri + +__Ō +, + +188 ** +__ri + +__dr +,  +__ba +) + +189 +__THROW + + `__nnu + ((1)); + +190 +__END_NAMESPACE_STD + + +192 #ifde +__USE_MISC + + +194 +__exnsi__ + + +195  + $oq + (cڡ * +__ri + +__Ō +, + +196 ** +__ri + +__dr +,  +__ba +) + +197 +__THROW + + `__nnu + ((1)); + +199 +__exnsi__ + + +200  + $ouq + (cڡ * +__ri + +__Ō +, + +201 ** +__ri + +__dr +,  +__ba +) + +202 +__THROW + + `__nnu + ((1)); + +205 #ifde +__USE_ISOC99 + + +206 +__BEGIN_NAMESPACE_C99 + + +208 +__exnsi__ + + +209  + $l + (cڡ * +__ri + +__Ō +, + +210 ** +__ri + +__dr +,  +__ba +) + +211 +__THROW + + `__nnu + ((1)); + +213 +__exnsi__ + + +214  + $ou + (cڡ * +__ri + +__Ō +, + +215 ** +__ri + +__dr +,  +__ba +) + +216 +__THROW + + `__nnu + ((1)); + +217 +__END_NAMESPACE_C99 + + +221 #ifde +__USE_GNU + + +235  + ~ + +239  + $_l + (cڡ * +__ri + +__Ō +, + +240 ** +__ri + +__dr +,  +__ba +, + +241 +__lo_t + +__loc + +__THROW + + `__nnu + ((1, 4)); + +243  + $oul_l + (cڡ * +__ri + +__Ō +, + +244 ** +__ri + +__dr +, + +245  +__ba +, +__lo_t + +__loc +) + +246 +__THROW + + `__nnu + ((1, 4)); + +248 +__exnsi__ + + +249  + $l_l + (cڡ * +__ri + +__Ō +, + +250 ** +__ri + +__dr +,  +__ba +, + +251 +__lo_t + +__loc +) + +252 +__THROW + + `__nnu + ((1, 4)); + +254 +__exnsi__ + + +255  + $ou_l + (cڡ * +__ri + +__Ō +, + +256 ** +__ri + +__dr +, + +257  +__ba +, +__lo_t + +__loc +) + +258 +__THROW + + `__nnu + ((1, 4)); + +260  + $od_l + (cڡ * +__ri + +__Ō +, + +261 ** +__ri + +__dr +, +__lo_t + +__loc +) + +262 +__THROW + + `__nnu + ((1, 3)); + +264  + $of_l + (cڡ * +__ri + +__Ō +, + +265 ** +__ri + +__dr +, +__lo_t + +__loc +) + +266 +__THROW + + `__nnu + ((1, 3)); + +268  + $d_l + (cڡ * +__ri + +__Ō +, + +269 ** +__ri + +__dr +, + +270 +__lo_t + +__loc +) + +271 +__THROW + + `__nnu + ((1, 3)); + +275 #ifde +__USE_EXTERN_INLINES + + +276 +__BEGIN_NAMESPACE_STD + + +277 +__ex_le +  + +278 + `__NTH + ( + $oi + (cڡ * +__Ō +)) + +280  ( + ` + ( +__Ō +, (** +NULL +, 10); + +281 + } +} + +282 +__ex_le +  + +283 +__NTH + ( + $ + (cڡ * +__Ō +)) + +285  + ` + ( +__Ō +, (** +NULL +, 10); + +286 + } +} + +287 + g__END_NAMESPACE_STD + + +289 #ifde +__USE_ISOC99 + + +290 +__BEGIN_NAMESPACE_C99 + + +291 +__exnsi__ + +__ex_le +  + +292 +__NTH + ( + $l + (cڡ * +__Ō +)) + +294  + `l + ( +__Ō +, (** +NULL +, 10); + +295 + } +} + +296 + g__END_NAMESPACE_C99 + + +301 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +305 * + $l64a + ( +__n + +__THROW + +__wur +; + +308  + $a64l + (cڡ * +__s +) + +309 +__THROW + +__ibu_pu__ + + `__nnu + ((1) +__wur +; + +313 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +314  + ~ + +321  + $ndom + ( +__THROW +; + +324  + $dom + ( +__ed + +__THROW +; + +330 * + $e + ( +__ed +, * +__ebuf +, + +331 +size_t + +__ + +__THROW + + `__nnu + ((2)); + +335 * + $te + (* +__ebuf + +__THROW + + `__nnu + ((1)); + +338 #ifde +__USE_MISC + + +343  + sndom_da + + +345 +t32_t + * + +; + +346 +t32_t + * + +; + +347 +t32_t + * +e +; + +348  +nd_ty +; + +349  +nd_deg +; + +350  +nd_p +; + +351 +t32_t + * +d_r +; + +354  + $ndom_r + ( +ndom_da + * +__ri + +__buf +, + +355 +t32_t + * +__ri + +__su + +__THROW + + `__nnu + ((1, 2)); + +357  + $dom_r + ( +__ed +,  +ndom_da + * +__buf +) + +358 +__THROW + + `__nnu + ((2)); + +360  + $e_r + ( +__ed +, * +__ri + +__ebuf +, + +361 +size_t + +__ +, + +362  +ndom_da + * +__ri + +__buf +) + +363 +__THROW + + `__nnu + ((2, 4)); + +365  + $te_r + (* +__ri + +__ebuf +, + +366  +ndom_da + * +__ri + +__buf +) + +367 +__THROW + + `__nnu + ((1, 2)); + +372 +__BEGIN_NAMESPACE_STD + + +374  + $nd + ( +__THROW +; + +376  + $d + ( +__ed + +__THROW +; + +377 +__END_NAMESPACE_STD + + +379 #ifde +__USE_POSIX + + +381  + $nd_r + (* +__ed + +__THROW +; + +385 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +389  + $dnd48 + ( +__THROW +; + +390  + $d48 + ( +__xsubi +[3] +__THROW + + `__nnu + ((1)); + +393  + $̪d48 + ( +__THROW +; + +394  + $Īd48 + ( +__xsubi +[3]) + +395 +__THROW + + `__nnu + ((1)); + +398  + $mnd48 + ( +__THROW +; + +399  + $jnd48 + ( +__xsubi +[3]) + +400 +__THROW + + `__nnu + ((1)); + +403  + $d48 + ( +__edv + +__THROW +; + +404 * + $ed48 + ( +__ed16v +[3]) + +405 +__THROW + + `__nnu + ((1)); + +406  + $lcg48 + ( +__m +[7] +__THROW + + `__nnu + ((1)); + +408 #ifde +__USE_MISC + + +412  + sdnd48_da + + +414  +__x +[3]; + +415  +__d_x +[3]; + +416  +__c +; + +417  +__ +; + +418 +__exnsi__ +  +__a +; + +423  + $dnd48_r + ( +dnd48_da + * +__ri + +__bufr +, + +424 * +__ri + +__su + +__THROW + + `__nnu + ((1, 2)); + +425  + $d48_r + ( +__xsubi +[3], + +426  +dnd48_da + * +__ri + +__bufr +, + +427 * +__ri + +__su + +__THROW + + `__nnu + ((1, 2)); + +430  + $̪d48_r + ( +dnd48_da + * +__ri + +__bufr +, + +431 * +__ri + +__su +) + +432 +__THROW + + `__nnu + ((1, 2)); + +433  + $Īd48_r + ( +__xsubi +[3], + +434  +dnd48_da + * +__ri + +__bufr +, + +435 * +__ri + +__su +) + +436 +__THROW + + `__nnu + ((1, 2)); + +439  + $mnd48_r + ( +dnd48_da + * +__ri + +__bufr +, + +440 * +__ri + +__su +) + +441 +__THROW + + `__nnu + ((1, 2)); + +442  + $jnd48_r + ( +__xsubi +[3], + +443  +dnd48_da + * +__ri + +__bufr +, + +444 * +__ri + +__su +) + +445 +__THROW + + `__nnu + ((1, 2)); + +448  + $d48_r + ( +__edv +,  +dnd48_da + * +__bufr +) + +449 +__THROW + + `__nnu + ((2)); + +451  + $ed48_r + ( +__ed16v +[3], + +452  +dnd48_da + * +__bufr + +__THROW + + `__nnu + ((1, 2)); + +454  + $lcg48_r + ( +__m +[7], + +455  +dnd48_da + * +__bufr +) + +456 +__THROW + + `__nnu + ((1, 2)); + +462 #ide +__mloc_d_oc_defed + + +463  + #__mloc_d_oc_defed + + + ) + +464 +__BEGIN_NAMESPACE_STD + + +466 * + $mloc + ( +size_t + +__size + +__THROW + +__ibu_mloc__ + +__wur +; + +468 * + $oc + ( +size_t + +__nmemb +, size_ +__size +) + +469 +__THROW + +__ibu_mloc__ + +__wur +; + +470 +__END_NAMESPACE_STD + + +473 #ide +__ed_mloc_d_oc + + +474 +__BEGIN_NAMESPACE_STD + + +480 * + $loc + (* +__r +, +size_t + +__size +) + +481 +__THROW + +__ibu_wn_unud_su__ +; + +483  + $ + (* +__r + +__THROW +; + +484 +__END_NAMESPACE_STD + + +486 #ifdef +__USE_MISC + + +488  + $c + (* +__r + +__THROW +; + +491 #ifde +__USE_MISC + + +492  + ~ + +495 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K +) \ + +496 || +defed + +__USE_MISC + + +498 * + $vloc + ( +size_t + +__size + +__THROW + +__ibu_mloc__ + +__wur +; + +501 #ifde +__USE_XOPEN2K + + +503  + $posix_memign + (** +__memr +, +size_t + +__ignmt +, size_ +__size +) + +504 +__THROW + + `__nnu + ((1) +__wur +; + +507 #ifde +__USE_ISOC11 + + +509 * + $igd_loc + ( +size_t + +__ignmt +, size_ +__size +) + +510 +__THROW + +__ibu_mloc__ + + `__ibu_loc_size__ + ((2) +__wur +; + +513 +__BEGIN_NAMESPACE_STD + + +515  + $abt + ( +__THROW + + `__ibu__ + (( +__nܑu__ +)); + +519  + $ex + ((* +__func +() +__THROW + + `__nnu + ((1)); + +521 #i +defed + +__USE_ISOC11 + || defed +__USE_ISOCXX11 + + +523 #ifde +__lulus + + +524 "C++"  + $_quick_ex + ((* +__func +) ()) + +525 +__THROW + + `__asm + ("_quick_ex" + `__nnu + ((1)); + +527  + $_quick_ex + ((* +__func +() +__THROW + + `__nnu + ((1)); + +530 +__END_NAMESPACE_STD + + +532 #ifdef +__USE_MISC + + +535  + $_ex + ((* +__func +( +__us +, * +__g +), *__arg) + +536 +__THROW + + `__nnu + ((1)); + +539 +__BEGIN_NAMESPACE_STD + + +543  + $ex + ( +__us + +__THROW + + `__ibu__ + (( +__nܑu__ +)); + +545 #i +defed + +__USE_ISOC11 + || defed +__USE_ISOCXX11 + + +549  + $quick_ex + ( +__us + +__THROW + + `__ibu__ + (( +__nܑu__ +)); + +551 +__END_NAMESPACE_STD + + +553 #ifde +__USE_ISOC99 + + +554 +__BEGIN_NAMESPACE_C99 + + +557  + $_Ex + ( +__us + +__THROW + + `__ibu__ + (( +__nܑu__ +)); + +558 +__END_NAMESPACE_C99 + + +562 +__BEGIN_NAMESPACE_STD + + +564 * + $gv + (cڡ * +__me + +__THROW + + `__nnu + ((1) +__wur +; + +565 +__END_NAMESPACE_STD + + +567 #ifde +__USE_GNU + + +570 * + $cu_gv + (cڡ * +__me +) + +571 +__THROW + + `__nnu + ((1) +__wur +; + +574 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +578  + $punv + (* +__rg + +__THROW + + `__nnu + ((1)); + +581 #ifde +__USE_XOPEN2K + + +584  + $nv + (cڡ * +__me +, cڡ * +__vue +,  +__a +) + +585 +__THROW + + `__nnu + ((2)); + +588  + $unnv + (cڡ * +__me + +__THROW + + `__nnu + ((1)); + +591 #ifdef +__USE_MISC + + +595  + $nv + ( +__THROW +; + +599 #i +defed + +__USE_MISC + \ + +600 || ( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) + +606 * + $mkmp + (* +__me + +__THROW + + `__nnu + ((1)); + +609 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +618 #ide +__USE_FILE_OFFSET64 + + +619  + $mkemp + (* +__me + + `__nnu + ((1) +__wur +; + +621 #ifde +__REDIRECT + + +622  + `__REDIRECT + ( +mkemp +, (* +__me +), +mkemp64 +) + +623 + `__nnu + ((1) +__wur +; + +625  + #mkemp + +mkemp64 + + + ) + +628 #ifde +__USE_LARGEFILE64 + + +629  + $mkemp64 + (* +__me + + `__nnu + ((1) +__wur +; + +633 #ifde +__USE_MISC + + +640 #ide +__USE_FILE_OFFSET64 + + +641  + $mkemps + (* +__me +,  +__suffixn + + `__nnu + ((1) +__wur +; + +643 #ifde +__REDIRECT + + +644  + `__REDIRECT + ( +mkemps +, (* +__me +,  +__suffixn +), + +645 +mkemps64 + + `__nnu + ((1) +__wur +; + +647  + #mkemps + +mkemps64 + + + ) + +650 #ifde +__USE_LARGEFILE64 + + +651  + $mkemps64 + (* +__me +,  +__suffixn +) + +652 + `__nnu + ((1) +__wur +; + +656 #ifde +__USE_XOPEN2K8 + + +662 * + $mkdmp + (* +__me + +__THROW + + `__nnu + ((1) +__wur +; + +665 #ifde +__USE_GNU + + +672 #ide +__USE_FILE_OFFSET64 + + +673  + $mkoemp + (* +__me +,  +__ags + + `__nnu + ((1) +__wur +; + +675 #ifde +__REDIRECT + + +676  + `__REDIRECT + ( +mkoemp +, (* +__me +,  +__ags +), +mkoemp64 +) + +677 + `__nnu + ((1) +__wur +; + +679  + #mkoemp + +mkoemp64 + + + ) + +682 #ifde +__USE_LARGEFILE64 + + +683  + $mkoemp64 + (* +__me +,  +__ags + + `__nnu + ((1) +__wur +; + +692 #ide +__USE_FILE_OFFSET64 + + +693  + $mkoemps + (* +__me +,  +__suffixn +,  +__ags +) + +694 + `__nnu + ((1) +__wur +; + +696 #ifde +__REDIRECT + + +697  + `__REDIRECT + ( +mkoemps +, (* +__me +,  +__suffixn +, + +698  +__ags +), +mkoemps64 +) + +699 + `__nnu + ((1) +__wur +; + +701  + #mkoemps + +mkoemps64 + + + ) + +704 #ifde +__USE_LARGEFILE64 + + +705  + $mkoemps64 + (* +__me +,  +__suffixn +,  +__ags +) + +706 + `__nnu + ((1) +__wur +; + +711 +__BEGIN_NAMESPACE_STD + + +716  + $syem + (cڡ * +__commd + +__wur +; + +717 +__END_NAMESPACE_STD + + +720 #ifdef +__USE_GNU + + +723 * + $nilize_fe_me + (cڡ * +__me +) + +724 +__THROW + + `__nnu + ((1) +__wur +; + +727 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +733 * + $th + (cڡ * +__ri + +__me +, + +734 * +__ri + +__sved + +__THROW + +__wur +; + +739 #ide +__COMPAR_FN_T + + +740  + #__COMPAR_FN_T + + + ) + +741 (* + t__comr__t +) (const *, const *); + +743 #ifdef +__USE_GNU + + +744  +__comr__t + + tcomris__t +; + +747 #ifde +__USE_GNU + + +748 (* + t__comr_d__t +) (const *, const *, *); + +751 +__BEGIN_NAMESPACE_STD + + +754 * + $bch + (cڡ * +__key +, cڡ * +__ba +, + +755 +size_t + +__nmemb +, size_ +__size +, +__comr__t + +__comr +) + +756 + `__nnu + ((1, 2, 5) +__wur +; + +758 #ifde +__USE_EXTERN_INLINES + + +759  + ~ + +764  + $qst + (* +__ba +, +size_t + +__nmemb +, size_ +__size +, + +765 +__comr__t + +__comr + + `__nnu + ((1, 4)); + +766 #ifde +__USE_GNU + + +767  + $qst_r + (* +__ba +, +size_t + +__nmemb +, size_ +__size +, + +768 +__comr_d__t + +__comr +, * +__g +) + +769 + `__nnu + ((1, 4)); + +774  + $abs + ( +__x + +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +775  + $bs + ( +__x + +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +776 +__END_NAMESPACE_STD + + +778 #ifde +__USE_ISOC99 + + +779 +__exnsi__ +  + $abs + ( +__x +) + +780 +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +784 +__BEGIN_NAMESPACE_STD + + +788 +div_t + + $div + ( +__num +,  +__dom +) + +789 +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +790 +ldiv_t + + $ldiv + ( +__num +,  +__dom +) + +791 +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +792 +__END_NAMESPACE_STD + + +794 #ifde +__USE_ISOC99 + + +795 +__BEGIN_NAMESPACE_C99 + + +796 +__exnsi__ + +div_t + + $div + ( +__num +, + +797  +__dom +) + +798 +__THROW + + `__ibu__ + (( +__cڡ__ +) +__wur +; + +799 +__END_NAMESPACE_C99 + + +803 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +804 || +defed + +__USE_MISC + + +811 * + $ecvt + ( +__vue +,  +__ndig +, * +__ri + +__det +, + +812 * +__ri + +__sign + +__THROW + + `__nnu + ((3, 4) +__wur +; + +817 * + $fcvt + ( +__vue +,  +__ndig +, * +__ri + +__det +, + +818 * +__ri + +__sign + +__THROW + + `__nnu + ((3, 4) +__wur +; + +823 * + $gcvt + ( +__vue +,  +__ndig +, * +__buf +) + +824 +__THROW + + `__nnu + ((3) +__wur +; + +827 #ifde +__USE_MISC + + +829 * + $qecvt + ( +__vue +,  +__ndig +, + +830 * +__ri + +__det +, *__ri +__sign +) + +831 +__THROW + + `__nnu + ((3, 4) +__wur +; + +832 * + $qfcvt + ( +__vue +,  +__ndig +, + +833 * +__ri + +__det +, *__ri +__sign +) + +834 +__THROW + + `__nnu + ((3, 4) +__wur +; + +835 * + $qgcvt + ( +__vue +,  +__ndig +, * +__buf +) + +836 +__THROW + + `__nnu + ((3) +__wur +; + +841  + $ecvt_r + ( +__vue +,  +__ndig +, * +__ri + +__det +, + +842 * +__ri + +__sign +, *__ri +__buf +, + +843 +size_t + +__n + +__THROW + + `__nnu + ((3, 4, 5)); + +844  + $fcvt_r + ( +__vue +,  +__ndig +, * +__ri + +__det +, + +845 * +__ri + +__sign +, *__ri +__buf +, + +846 +size_t + +__n + +__THROW + + `__nnu + ((3, 4, 5)); + +848  + $qecvt_r + ( +__vue +,  +__ndig +, + +849 * +__ri + +__det +, *__ri +__sign +, + +850 * +__ri + +__buf +, +size_t + +__n +) + +851 +__THROW + + `__nnu + ((3, 4, 5)); + +852  + $qfcvt_r + ( +__vue +,  +__ndig +, + +853 * +__ri + +__det +, *__ri +__sign +, + +854 * +__ri + +__buf +, +size_t + +__n +) + +855 +__THROW + + `__nnu + ((3, 4, 5)); + +859 +__BEGIN_NAMESPACE_STD + + +862  + $mbn + (cڡ * +__s +, +size_t + +__n + +__THROW +; + +865  + $mbtowc + ( +wch_t + * +__ri + +__pwc +, + +866 cڡ * +__ri + +__s +, +size_t + +__n + +__THROW +; + +869  + $womb + (* +__s +, +wch_t + +__wch + +__THROW +; + +873 +size_t + + $mbowcs + ( +wch_t + * +__ri + +__pwcs +, + +874 cڡ * +__ri + +__s +, +size_t + +__n + +__THROW +; + +876 +size_t + + $wcombs + (* +__ri + +__s +, + +877 cڡ +wch_t + * +__ri + +__pwcs +, +size_t + +__n +) + +878 +__THROW +; + +879 +__END_NAMESPACE_STD + + +882 #ifde +__USE_MISC + + +887  + $mch + (cڡ * +__ڣ + +__THROW + + `__nnu + ((1) +__wur +; + +891 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +898  + $gsubt + (** +__ri + +__tip +, + +899 *cڡ * +__ri + +__toks +, + +900 ** +__ri + +__vu +) + +901 +__THROW + + `__nnu + ((1, 2, 3) +__wur +; + +905 #ifde +__USE_XOPEN + + +907  + $tkey + (cڡ * +__key + +__THROW + + `__nnu + ((1)); + +913 #ifde +__USE_XOPEN2KXSI + + +915  + $posix_ݒ + ( +__oag + +__wur +; + +918 #ifde +__USE_XOPEN + + +923  + $g + ( +__fd + +__THROW +; + +927  + $uock + ( +__fd + +__THROW +; + +932 * + $ame + ( +__fd + +__THROW + +__wur +; + +935 #ifde +__USE_GNU + + +939  + $ame_r + ( +__fd +, * +__buf +, +size_t + +__bu +) + +940 +__THROW + + `__nnu + ((2)); + +943  + `g + (); + +946 #ifde +__USE_MISC + + +950  + $gldavg + ( +__ldavg +[],  +__m +) + +951 +__THROW + + `__nnu + ((1)); + +954  + ~ + +957 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +958  + ~ + +960 #ifde +__LDBL_COMPAT + + +961  + ~ + +965 #unde +__ed_mloc_d_oc + + +967 +__END_DECLS + + + @/usr/include/string.h + +22 #idef +_STRING_H + + +23  + #_STRING_H + 1 + + ) + +25  + ~ + +27 + g__BEGIN_DECLS + + +30  + #__ed_size_t + + + ) + +31  + #__ed_NULL + + + ) + +32  + ~ + +35 #i +defed + +__lulus + && +__GNUC_PREREQ + (4, 4) + +36  + #__CORRECT_ISO_CPP_STRING_H_PROTO + + + ) + +40 +__BEGIN_NAMESPACE_STD + + +42 * + $memy + (* +__ri + +__de +, cڡ *__ri +__c +, + +43 +size_t + +__n + +__THROW + + `__nnu + ((1, 2)); + +46 * + $memmove + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +47 +__THROW + + `__nnu + ((1, 2)); + +48 +__END_NAMESPACE_STD + + +53 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +54 * + $memcy + (* +__ri + +__de +, cڡ *__ri +__c +, + +55  +__c +, +size_t + +__n +) + +56 +__THROW + + `__nnu + ((1, 2)); + +60 +__BEGIN_NAMESPACE_STD + + +62 * + $memt + (* +__s +,  +__c +, +size_t + +__n + +__THROW + + `__nnu + ((1)); + +65  + $memcmp + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +66 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +69 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +72 * + `memchr + (* +__s +,  +__c +, +size_t + +__n +) + +73 +__THROW + + `__asm + ("memchr" +__ibu_pu__ + + `__nnu + ((1)); + +74 cڡ * + `memchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +75 +__THROW + + `__asm + ("memchr" +__ibu_pu__ + + `__nnu + ((1)); + +77 #ifde +__OPTIMIZE__ + + +78 +__ex_ways_le + * + +79 + `memchr + (* +__s +,  +__c +, +size_t + +__n + +__THROW + + +81  + `__but_memchr + ( +__s +, +__c +, +__n +); + +84 +__ex_ways_le + const * + +85 + `memchr + (cڡ * +__s +,  +__c +, +size_t + +__n + +__THROW + + +87  + `__but_memchr + ( +__s +, +__c +, +__n +); + +90 + } +} + +92 * + $memchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +93 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +95 +__END_NAMESPACE_STD + + +97 #ifde +__USE_GNU + + +100 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +101 "C++" * + $wmemchr + (* +__s +,  +__c +) + +102 +__THROW + + `__asm + ("wmemchr" +__ibu_pu__ + + `__nnu + ((1)); + +103 "C++" cڡ * + $wmemchr + (cڡ * +__s +,  +__c +) + +104 +__THROW + + `__asm + ("wmemchr" +__ibu_pu__ + + `__nnu + ((1)); + +106 * + $wmemchr + (cڡ * +__s +,  +__c +) + +107 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +111 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +112 "C++" * + $memrchr + (* +__s +,  +__c +, +size_t + +__n +) + +113 +__THROW + + `__asm + ("memrchr" +__ibu_pu__ + + `__nnu + ((1)); + +114 "C++" cڡ * + $memrchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +115 +__THROW + + `__asm + ("memrchr" +__ibu_pu__ + + `__nnu + ((1)); + +117 * + $memrchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +118 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +123 +__BEGIN_NAMESPACE_STD + + +125 * + $ry + (* +__ri + +__de +, cڡ *__ri +__c +) + +126 +__THROW + + `__nnu + ((1, 2)); + +128 * + $y + (* +__ri + +__de +, + +129 cڡ * +__ri + +__c +, +size_t + +__n +) + +130 +__THROW + + `__nnu + ((1, 2)); + +133 * + $rt + (* +__ri + +__de +, cڡ *__ri +__c +) + +134 +__THROW + + `__nnu + ((1, 2)); + +136 * + $t + (* +__ri + +__de +, cڡ *__ri +__c +, + +137 +size_t + +__n + +__THROW + + `__nnu + ((1, 2)); + +140  + $rcmp + (cڡ * +__s1 +, cڡ * +__s2 +) + +141 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +143  + $cmp + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +144 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +147  + $rcl + (cڡ * +__s1 +, cڡ * +__s2 +) + +148 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +150 +size_t + + $rxm + (* +__ri + +__de +, + +151 cڡ * +__ri + +__c +, +size_t + +__n +) + +152 +__THROW + + `__nnu + ((2)); + +153 +__END_NAMESPACE_STD + + +155 #ifde +__USE_XOPEN2K8 + + +159  + ~ + +162  + $rcl_l + (cڡ * +__s1 +, cڡ * +__s2 +, +__lo_t + +__l +) + +163 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2, 3)); + +165 +size_t + + $rxm_l + (* +__de +, cڡ * +__c +, +size_t + +__n +, + +166 +__lo_t + +__l + +__THROW + + `__nnu + ((2, 4)); + +169 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +171 * + $rdup + (cڡ * +__s +) + +172 +__THROW + +__ibu_mloc__ + + `__nnu + ((1)); + +178 #i +defed + +__USE_XOPEN2K8 + + +179 * + $dup + (cڡ * +__rg +, +size_t + +__n +) + +180 +__THROW + +__ibu_mloc__ + + `__nnu + ((1)); + +183 #i +defed + +__USE_GNU + && defed +__GNUC__ + + +185  + #rdu +( +s +) \ + +186 ( +__exnsi__ + \ + +188 cڡ * +__d + = ( +s +); \ + +189 +size_t + +__n + = + ` + ( +__d +) + 1; \ + +190 * +__w + = (* + `__but_lo + ( +__n +); \ + +191 (* + `memy + ( +__w +, +__d +, +__n +); \ + +192 + } +})) + + ) + +195  + #du +( +s +, +n +) \ + +196 ( +__exnsi__ + \ + +198 cڡ * +__d + = ( +s +); \ + +199 +size_t + +__n + = + `n + ( +__d +, ( +n +)); \ + +200 * +__w + = (* + `__but_lo + ( +__n + + 1); \ + +201 +__w +[ +__n +] = '\0'; \ + +202 (* + `memy + ( +__w +, +__d +, +__n +); \ + +203 })) + + ) + +206 + g__BEGIN_NAMESPACE_STD + + +208 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +211 * +rchr + (* +__s +,  +__c +) + +212 +__THROW + +__asm + ("rchr" +__ibu_pu__ + +__nnu + ((1)); + +213 cڡ * +rchr + (cڡ * +__s +,  +__c +) + +214 +__THROW + +__asm + ("rchr" +__ibu_pu__ + +__nnu + ((1)); + +216 #ifde +__OPTIMIZE__ + + +217 +__ex_ways_le + * + +218 +rchr + (* +__s +,  +__c + + g__THROW + + +220  +__but_rchr + ( +__s +, +__c +); + +223 +__ex_ways_le + const * + +224 +rchr + (cڡ * +__s +,  +__c + + g__THROW + + +226  +__but_rchr + ( +__s +, +__c +); + +231 * + $rchr + (cڡ * +__s +,  +__c +) + +232 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +235 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +238 * + `chr + (* +__s +,  +__c +) + +239 +__THROW + + `__asm + ("chr" +__ibu_pu__ + + `__nnu + ((1)); + +240 cڡ * + `chr + (cڡ * +__s +,  +__c +) + +241 +__THROW + + `__asm + ("chr" +__ibu_pu__ + + `__nnu + ((1)); + +243 #ifde +__OPTIMIZE__ + + +244 +__ex_ways_le + * + +245 + `chr + (* +__s +,  +__c + +__THROW + + +247  + `__but_chr + ( +__s +, +__c +); + +250 +__ex_ways_le + const * + +251 + `chr + (cڡ * +__s +,  +__c + +__THROW + + +253  + `__but_chr + ( +__s +, +__c +); + +256 + } +} + +258 * + $chr + (cڡ * +__s +,  +__c +) + +259 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +261 +__END_NAMESPACE_STD + + +263 #ifde +__USE_GNU + + +266 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +267 "C++" * + $rchul + (* +__s +,  +__c +) + +268 +__THROW + + `__asm + ("rchul" +__ibu_pu__ + + `__nnu + ((1)); + +269 "C++" cڡ * + $rchul + (cڡ * +__s +,  +__c +) + +270 +__THROW + + `__asm + ("rchul" +__ibu_pu__ + + `__nnu + ((1)); + +272 * + $rchul + (cڡ * +__s +,  +__c +) + +273 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +277 +__BEGIN_NAMESPACE_STD + + +280 +size_t + + $rcn + (cڡ * +__s +, cڡ * +__je +) + +281 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +284 +size_t + + $rn + (cڡ * +__s +, cڡ * +__ac +) + +285 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +287 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +290 * + `brk + (* +__s +, cڡ * +__ac +) + +291 +__THROW + + `__asm + ("brk" +__ibu_pu__ + + `__nnu + ((1, 2)); + +292 cڡ * + `brk + (cڡ * +__s +, cڡ * +__ac +) + +293 +__THROW + + `__asm + ("brk" +__ibu_pu__ + + `__nnu + ((1, 2)); + +295 #ifde +__OPTIMIZE__ + + +296 +__ex_ways_le + * + +297 + `brk + (* +__s +, cڡ * +__ac + +__THROW + + +299  + `__but_brk + ( +__s +, +__ac +); + +302 +__ex_ways_le + const * + +303 + `brk + (cڡ * +__s +, cڡ * +__ac + +__THROW + + +305  + `__but_brk + ( +__s +, +__ac +); + +308 + } +} + +310 * + $brk + (cڡ * +__s +, cڡ * +__ac +) + +311 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +314 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +317 * + `rr + (* +__hayack +, cڡ * +__ed +) + +318 +__THROW + + `__asm + ("rr" +__ibu_pu__ + + `__nnu + ((1, 2)); + +319 cڡ * + `rr + (cڡ * +__hayack +, cڡ * +__ed +) + +320 +__THROW + + `__asm + ("rr" +__ibu_pu__ + + `__nnu + ((1, 2)); + +322 #ifde +__OPTIMIZE__ + + +323 +__ex_ways_le + * + +324 + `rr + (* +__hayack +, cڡ * +__ed + +__THROW + + +326  + `__but_rr + ( +__hayack +, +__ed +); + +329 +__ex_ways_le + const * + +330 + `rr + (cڡ * +__hayack +, cڡ * +__ed + +__THROW + + +332  + `__but_rr + ( +__hayack +, +__ed +); + +335 + } +} + +337 * + $rr + (cڡ * +__hayack +, cڡ * +__ed +) + +338 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +343 * + $ok + (* +__ri + +__s +, cڡ *__ri +__dim +) + +344 +__THROW + + `__nnu + ((2)); + +345 +__END_NAMESPACE_STD + + +349 * + $__ok_r + (* +__ri + +__s +, + +350 cڡ * +__ri + +__dim +, + +351 ** +__ri + +__ve_r +) + +352 +__THROW + + `__nnu + ((2, 3)); + +353 #ifde +__USE_POSIX + + +354 * + $ok_r + (* +__ri + +__s +, cڡ *__ri +__dim +, + +355 ** +__ri + +__ve_r +) + +356 +__THROW + + `__nnu + ((2, 3)); + +359 #ifde +__USE_GNU + + +361 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +362 "C++" * + $rr + (* +__hayack +, cڡ * +__ed +) + +363 +__THROW + + `__asm + ("rr" +__ibu_pu__ + + `__nnu + ((1, 2)); + +364 "C++" cڡ * + $rr + (cڡ * +__hayack +, + +365 cڡ * +__ed +) + +366 +__THROW + + `__asm + ("rr" +__ibu_pu__ + + `__nnu + ((1, 2)); + +368 * + $rr + (cڡ * +__hayack +, cڡ * +__ed +) + +369 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +373 #ifde +__USE_GNU + + +377 * + $memmem + (cڡ * +__hayack +, +size_t + +__hayackn +, + +378 cڡ * +__ed +, +size_t + +__edn +) + +379 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 3)); + +383 * + $__mempy + (* +__ri + +__de +, + +384 cڡ * +__ri + +__c +, +size_t + +__n +) + +385 +__THROW + + `__nnu + ((1, 2)); + +386 * + $mempy + (* +__ri + +__de +, + +387 cڡ * +__ri + +__c +, +size_t + +__n +) + +388 +__THROW + + `__nnu + ((1, 2)); + +392 +__BEGIN_NAMESPACE_STD + + +394 +size_t + + $ + (cڡ * +__s +) + +395 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +396 +__END_NAMESPACE_STD + + +398 #ifdef +__USE_XOPEN2K8 + + +401 +size_t + + $n + (cڡ * +__rg +, +size_t + +__maxn +) + +402 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +406 +__BEGIN_NAMESPACE_STD + + +408 * + $ + ( +__um + +__THROW +; + +409 +__END_NAMESPACE_STD + + +410 #ifde +__USE_XOPEN2K + + +418 #i +defed + +__USE_XOPEN2K + && !defed +__USE_GNU + + +421 #ifde +__REDIRECT_NTH + + +422  + `__REDIRECT_NTH + ( +_r +, + +423 ( +__um +, * +__buf +, +size_t + +__bu +), + +424 +__xpg__r + + `__nnu + ((2)); + +426  + $__xpg__r + ( +__um +, * +__buf +, +size_t + +__bu +) + +427 +__THROW + + `__nnu + ((2)); + +428  + #_r + +__xpg__r + + + ) + +433 * + $_r + ( +__um +, * +__buf +, +size_t + +__bu +) + +434 +__THROW + + `__nnu + ((2) +__wur +; + +438 #ifde +__USE_XOPEN2K8 + + +440 * + $_l + ( +__um +, +__lo_t + +__l + +__THROW +; + +446  + $__bzo + (* +__s +, +size_t + +__n + +__THROW + + `__nnu + ((1)); + +448 #ifde +__USE_MISC + + +450  + $bcy + (cڡ * +__c +, * +__de +, +size_t + +__n +) + +451 +__THROW + + `__nnu + ((1, 2)); + +454  + $bzo + (* +__s +, +size_t + +__n + +__THROW + + `__nnu + ((1)); + +457  + $bcmp + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +458 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +461 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +464 * + `dex + (* +__s +,  +__c +) + +465 +__THROW + + `__asm + ("dex" +__ibu_pu__ + + `__nnu + ((1)); + +466 cڡ * + `dex + (cڡ * +__s +,  +__c +) + +467 +__THROW + + `__asm + ("dex" +__ibu_pu__ + + `__nnu + ((1)); + +469 #i +defed + +__OPTIMIZE__ + && !defed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +470 +__ex_ways_le + * + +471 + `dex + (* +__s +,  +__c + +__THROW + + +473  + `__but_dex + ( +__s +, +__c +); + +476 +__ex_ways_le + const * + +477 + `dex + (cڡ * +__s +,  +__c + +__THROW + + +479  + `__but_dex + ( +__s +, +__c +); + +482 + } +} + +484 * + $dex + (cڡ * +__s +,  +__c +) + +485 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +489 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +492 * + `rdex + (* +__s +,  +__c +) + +493 +__THROW + + `__asm + ("rdex" +__ibu_pu__ + + `__nnu + ((1)); + +494 cڡ * + `rdex + (cڡ * +__s +,  +__c +) + +495 +__THROW + + `__asm + ("rdex" +__ibu_pu__ + + `__nnu + ((1)); + +497 #i +defed + +__OPTIMIZE__ + && !defed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +498 +__ex_ways_le + * + +499 + `rdex + (* +__s +,  +__c + +__THROW + + +501  + `__but_rdex + ( +__s +, +__c +); + +504 +__ex_ways_le + const * + +505 + `rdex + (cڡ * +__s +,  +__c + +__THROW + + +507  + `__but_rdex + ( +__s +, +__c +); + +510 + } +} + +512 * + $rdex + (cڡ * +__s +,  +__c +) + +513 +__THROW + +__ibu_pu__ + + `__nnu + ((1)); + +518  + $ffs + ( +__i + +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +522 #ifdef +__USE_GNU + + +523  + $ff + ( +__l + +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +524 +__exnsi__ +  + $ffl + ( +__ +) + +525 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +529  + $rcmp + (cڡ * +__s1 +, cڡ * +__s2 +) + +530 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +533  + $cmp + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +534 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +537 #ifdef +__USE_GNU + + +540  + $rcmp_l + (cڡ * +__s1 +, cڡ * +__s2 +, + +541 +__lo_t + +__loc +) + +542 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2, 3)); + +544  + $cmp_l + (cڡ * +__s1 +, cڡ * +__s2 +, + +545 +size_t + +__n +, +__lo_t + +__loc +) + +546 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2, 4)); + +549 #ifdef +__USE_MISC + + +552 * + $rp + (** +__ri + +__rgp +, + +553 cڡ * +__ri + +__dim +) + +554 +__THROW + + `__nnu + ((1, 2)); + +557 #ifdef +__USE_XOPEN2K8 + + +559 * + $rsigl + ( +__sig + +__THROW +; + +562 * + $__py + (* +__ri + +__de +, cڡ *__ri +__c +) + +563 +__THROW + + `__nnu + ((1, 2)); + +564 * + $py + (* +__ri + +__de +, cڡ *__ri +__c +) + +565 +__THROW + + `__nnu + ((1, 2)); + +569 * + $__y + (* +__ri + +__de +, + +570 cڡ * +__ri + +__c +, +size_t + +__n +) + +571 +__THROW + + `__nnu + ((1, 2)); + +572 * + $y + (* +__ri + +__de +, + +573 cڡ * +__ri + +__c +, +size_t + +__n +) + +574 +__THROW + + `__nnu + ((1, 2)); + +577 #ifdef +__USE_GNU + + +579  + $rvscmp + (cڡ * +__s1 +, cڡ * +__s2 +) + +580 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +583 * + $ry + (* +__rg + +__THROW + + `__nnu + ((1)); + +586 * + $memob + (* +__s +, +size_t + +__n + +__THROW + + `__nnu + ((1)); + +588 #ide +bame + + +593 #ifde +__CORRECT_ISO_CPP_STRING_H_PROTO + + +594 "C++" * + $bame + (* +__fame +) + +595 +__THROW + + `__asm + ("bame" + `__nnu + ((1)); + +596 "C++" cڡ * + $bame + (cڡ * +__fame +) + +597 +__THROW + + `__asm + ("bame" + `__nnu + ((1)); + +599 * + $bame + (cڡ * +__fame + +__THROW + + `__nnu + ((1)); + +605 #i +defed + +__GNUC__ + && __GNUC__ >= 2 + +606 #i +defed + +__OPTIMIZE__ + && !defed +__OPTIMIZE_SIZE__ + \ + +607 && ! +defed + +__NO_INLINE__ + && !defed +__lulus + + +627  + ~ + +630  + ~ + +633 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +635  + ~ + +639 #i +defed + +__USE_GNU + && defed +__OPTIMIZE__ + \ + +640 && +defed + +__ex_ways_le + && + $__GNUC_PREREQ + (3,2) + +641 #i! +defed + +_FORCE_INLINES + && !defed +_HAVE_STRING_ARCH_mempy + + +643 #unde +mempy + + +644 #unde +__mempy + + +645  + #mempy +( +de +, +c +, +n + + `__mempy_le + (de, src,) + + ) + +646  + #__mempy +( +de +, +c +, +n + + `__mempy_le + (de, src,) + + ) + +648 +__ex_ways_le + * + +649 + $__mempy_le + (* +__ri + +__de +, + +650 cڡ * +__ri + +__c +, +size_t + +__n +) + +652  (* + `memy + ( +__de +, +__c +, +__n +) + __n; + +653 + } +} + +658 + g__END_DECLS + + + @/usr/include/sys/param.h + +19 #ide +_SYS_PARAM_H + + +20  + #_SYS_PARAM_H + 1 + + ) + +22  + #__ed_NULL + + + ) + +23  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +31  + ~ + +36  + #NBBY + +CHAR_BIT + + + ) + +38 #i! +defed + +NGROUPS + && defed +NGROUPS_MAX + + +39  + #NGROUPS + +NGROUPS_MAX + + + ) + +41 #i! +defed + +MAXSYMLINKS + && defed +SYMLOOP_MAX + + +42  + #MAXSYMLINKS + +SYMLOOP_MAX + + + ) + +44 #i! +defed + +CANBSIZ + && defed +MAX_CANON + + +45  + #CANBSIZ + +MAX_CANON + + + ) + +47 #i! +defed + +MAXPATHLEN + && defed +PATH_MAX + + +48  + #MAXPATHLEN + +PATH_MAX + + + ) + +50 #i! +defed + +NOFILE + && defed +OPEN_MAX + + +51  + #NOFILE + +OPEN_MAX + + + ) + +53 #i! +defed + +MAXHOSTNAMELEN + && defed +HOST_NAME_MAX + + +54  + #MAXHOSTNAMELEN + +HOST_NAME_MAX + + + ) + +56 #ide +NCARGS + + +57 #ifde +ARG_MAX + + +58  + #NCARGS + +ARG_MAX + + + ) + +62  + #NCARGS + +INT_MAX + + + ) + +68 #ide +NOGROUP + + +69  + #NOGROUP + 65535 + + ) + +71 #ide +NODEV + + +72  + #NODEV + (( +dev_t +-1 + + ) + +77 #ide +DEV_BSIZE + + +78  + #DEV_BSIZE + 512 + + ) + +83  + #tb +( +a +, +i +()[(i)/ +NBBY +] |1<<((i)%NBBY)) + + ) + +84  + #rb +( +a +, +i +()[(i)/ +NBBY +] &~(1<<((i)%NBBY))) + + ) + +85  + #ist +( +a +, +i +()[(i)/ +NBBY +] & (1<<((i)%NBBY))) + + ) + +86  + #isr +( +a +, +i +(()[(i)/ +NBBY +] & (1<<((i)%NBBY))=0) + + ) + +89 #ide +howmy + + +90  + #howmy +( +x +, +y +(((x+ ((y- 1)/ (y)) + + ) + +92 #ifde +__GNUC__ + + +93  + #roundup +( +x +, +y +( + `__but_cڡt_p + (y&& + `powof2 + (y) \ + +94 ? ((( +x ++ ( +y +) - 1) & ~((y) - 1)) \ + +95 : (((( +x ++ (( +y +- 1)/ (y)* (y))) + + ) + +97  + #roundup +( +x +, +y +((((x+ ((y- 1)/ (y)* (y)) + + ) + +99  + #powof2 +( +x +((((x- 1& (x)=0) + + ) + +102  + #MIN +( +a +, +b +(()<(b))?):(b)) + + ) + +103  + #MAX +( +a +, +b +(()>(b))?):(b)) + + ) + + @/usr/include/sys/queue.h + +32 #idef +_SYS_QUEUE_H_ + + +33  + #_SYS_QUEUE_H_ + + + ) + +84  + #LIST_HEAD +( +me +, +ty +) \ + +85  + sme + { \ + +86  +ty + * +lh_f +; \ + +87 } + + ) + +89  + #LIST_HEAD_INITIALIZER +( +hd +) \ + +90 { +NULL + } + + ) + +92  + #LIST_ENTRY +( +ty +) \ + +94  +ty + * +_xt +; \ + +95  +ty + ** +_ev +; \ + +96 } + + ) + +101  + #LIST_INIT +( +hd +) do { \ + +102 ( +hd +)-> +lh_f + = +NULL +; \ + +103 }  0) + + ) + +105  + #LIST_INSERT_AFTER +( +lim +, +m +, +fld +) do { \ + +106 i((( +m +)-> +fld +. +_xt + = ( +lim +)->fld._xt! +NULL +) \ + +107 ( +lim +)-> +fld +. +_xt +->fld. +_ev + = \ + +108 &( +m +)-> +fld +. +_xt +; \ + +109 ( +lim +)-> +fld +. +_xt + = ( +m +); \ + +110 ( +m +)-> +fld +. +_ev + = &( +lim +)->fld. +_xt +; \ + +111 }  0) + + ) + +113  + #LIST_INSERT_BEFORE +( +lim +, +m +, +fld +) do { \ + +114 ( +m +)-> +fld +. +_ev + = ( +lim +)->field.le_prev; \ + +115 ( +m +)-> +fld +. +_xt + = ( +lim +); \ + +116 *( +lim +)-> +fld +. +_ev + = ( +m +); \ + +117 ( +lim +)-> +fld +. +_ev + = &( +m +)->fld. +_xt +; \ + +118 }  0) + + ) + +120  + #LIST_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +121 i((( +m +)-> +fld +. +_xt + = ( +hd +)-> +lh_f +! +NULL +) \ + +122 ( +hd +)-> +lh_f +-> +fld +. +_ev + = &( +m +)->fld. +_xt +;\ + +123 ( +hd +)-> +lh_f + = ( +m +); \ + +124 ( +m +)-> +fld +. +_ev + = &( +hd +)-> +lh_f +; \ + +125 }  0) + + ) + +127  + #LIST_REMOVE +( +m +, +fld +) do { \ + +128 i(( +m +)-> +fld +. +_xt + ! +NULL +) \ + +129 ( +m +)-> +fld +. +_xt +->fld. +_ev + = \ + +130 ( +m +)-> +fld +. +_ev +; \ + +131 *( +m +)-> +fld +. +_ev + = (m)->fld. +_xt +; \ + +132 }  0) + + ) + +134  + #LIST_FOREACH +( +v +, +hd +, +fld +) \ + +135 ( +v +(( +hd +)-> +lh_f +); \ + +136 ( +v +); \ + +137 ( +v +((v)-> +fld +. +_xt +)) + + ) + +142  + #LIST_EMPTY +( +hd +((hd)-> +lh_f + = +NULL +) + + ) + +143  + #LIST_FIRST +( +hd +((hd)-> +lh_f +) + + ) + +144  + #LIST_NEXT +( +m +, +fld +(lm)->fld. +_xt +) + + ) + +150  + #SLIST_HEAD +( +me +, +ty +) \ + +151  + sme + { \ + +152  +ty + * +h_f +; \ + +153 } + + ) + +155  + #SLIST_HEAD_INITIALIZER +( +hd +) \ + +156 { +NULL + } + + ) + +158  + #SLIST_ENTRY +( +ty +) \ + +160  +ty + * +e_xt +; \ + +161 } + + ) + +166  + #SLIST_INIT +( +hd +) do { \ + +167 ( +hd +)-> +h_f + = +NULL +; \ + +168 }  0) + + ) + +170  + #SLIST_INSERT_AFTER +( +im +, +m +, +fld +) do { \ + +171 ( +m +)-> +fld +. +e_xt + = ( +im +)->field.sle_next; \ + +172 ( +im +)-> +fld +. +e_xt + = ( +m +); \ + +173 }  0) + + ) + +175  + #SLIST_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +176 ( +m +)-> +fld +. +e_xt + = ( +hd +)-> +h_f +; \ + +177 ( +hd +)-> +h_f + = ( +m +); \ + +178 }  0) + + ) + +180  + #SLIST_REMOVE_HEAD +( +hd +, +fld +) do { \ + +181 ( +hd +)-> +h_f + = (hd)->h_f-> +fld +. +e_xt +; \ + +182 }  0) + + ) + +184  + #SLIST_REMOVE +( +hd +, +m +, +ty +, +fld +) do { \ + +185 i(( +hd +)-> +h_f + =( +m +)) { \ + +186 + `SLIST_REMOVE_HEAD +(( +hd +), +fld +); \ + +189  +ty + * +culm + = ( +hd +)-> +h_f +; \ + +190  +culm +-> +fld +. +e_xt + !( +m +)) \ + +191 +culm + = culm-> +fld +. +e_xt +; \ + +192 +culm +-> +fld +. +e_xt + = \ + +193 +culm +-> +fld +. +e_xt +->field.sle_next; \ + +195 }  0) + + ) + +197  + #SLIST_FOREACH +( +v +, +hd +, +fld +) \ + +198 ( +v +( +hd +)-> +h_f +; (v); (v(v)-> +fld +. +e_xt +) + + ) + +203  + #SLIST_EMPTY +( +hd +((hd)-> +h_f + = +NULL +) + + ) + +204  + #SLIST_FIRST +( +hd +((hd)-> +h_f +) + + ) + +205  + #SLIST_NEXT +( +m +, +fld +(lm)->fld. +e_xt +) + + ) + +211  + #STAILQ_HEAD +( +me +, +ty +) \ + +212  + sme + { \ + +213  +ty + * +qh_f +; \ + +214  +ty + ** +qh_ϡ +; \ + +215 } + + ) + +217  + #STAILQ_HEAD_INITIALIZER +( +hd +) \ + +218 { +NULL +, &( +hd +). +qh_f + } + + ) + +220  + #STAILQ_ENTRY +( +ty +) \ + +222  +ty + * +qe_xt +; \ + +223 } + + ) + +228  + #STAILQ_INIT +( +hd +) do { \ + +229 ( +hd +)-> +qh_f + = +NULL +; \ + +230 ( +hd +)-> +qh_ϡ + = &(hd)-> +qh_f +; \ + +231 }  0) + + ) + +233  + #STAILQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +234 i((( +m +)-> +fld +. +qe_xt + = ( +hd +)-> +qh_f += +NULL +) \ + +235 ( +hd +)-> +qh_ϡ + = &( +m +)-> +fld +. +qe_xt +; \ + +236 ( +hd +)-> +qh_f + = ( +m +); \ + +237 }  0) + + ) + +239  + #STAILQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +240 ( +m +)-> +fld +. +qe_xt + = +NULL +; \ + +241 *( +hd +)-> +qh_ϡ + = ( +m +); \ + +242 ( +hd +)-> +qh_ϡ + = &( +m +)-> +fld +. +qe_xt +; \ + +243 }  0) + + ) + +245  + #STAILQ_INSERT_AFTER +( +hd +, +lim +, +m +, +fld +) do { \ + +246 i((( +m +)-> +fld +. +qe_xt + = ( +lim +)->fld.qe_xt= +NULL +)\ + +247 ( +hd +)-> +qh_ϡ + = &( +m +)-> +fld +. +qe_xt +; \ + +248 ( +lim +)-> +fld +. +qe_xt + = ( +m +); \ + +249 }  0) + + ) + +251  + #STAILQ_REMOVE_HEAD +( +hd +, +fld +) do { \ + +252 i((( +hd +)-> +qh_f + = (hd)->qh_f-> +fld +. +qe_xt += +NULL +) \ + +253 ( +hd +)-> +qh_ϡ + = &(hd)-> +qh_f +; \ + +254 }  0) + + ) + +256  + #STAILQ_REMOVE +( +hd +, +m +, +ty +, +fld +) do { \ + +257 i(( +hd +)-> +qh_f + =( +m +)) { \ + +258 + `STAILQ_REMOVE_HEAD +(( +hd +), +fld +); \ + +260  +ty + * +culm + = ( +hd +)-> +qh_f +; \ + +261  +culm +-> +fld +. +qe_xt + !( +m +)) \ + +262 +culm + = culm-> +fld +. +qe_xt +; \ + +263 i(( +culm +-> +fld +. +qe_xt + = \ + +264 +culm +-> +fld +. +qe_xt +->fld.qe_xt= +NULL +) \ + +265 ( +hd +)-> +qh_ϡ + = &( +culm +)-> +fld +. +qe_xt +; \ + +267 }  0) + + ) + +269  + #STAILQ_FOREACH +( +v +, +hd +, +fld +) \ + +270 ( +v +(( +hd +)-> +qh_f +); \ + +271 ( +v +); \ + +272 ( +v +((v)-> +fld +. +qe_xt +)) + + ) + +274  + #STAILQ_CONCAT +( +hd1 +, +hd2 +) do { \ + +275 i(! + `STAILQ_EMPTY +(( +hd2 +))) { \ + +276 *( +hd1 +)-> +qh_ϡ + = ( +hd2 +)-> +qh_f +; \ + +277 ( +hd1 +)-> +qh_ϡ + = ( +hd2 +)->stqh_last; \ + +278 + `STAILQ_INIT +(( +hd2 +)); \ + +280 }  0) + + ) + +285  + #STAILQ_EMPTY +( +hd +((hd)-> +qh_f + = +NULL +) + + ) + +286  + #STAILQ_FIRST +( +hd +((hd)-> +qh_f +) + + ) + +287  + #STAILQ_NEXT +( +m +, +fld +(lm)->fld. +qe_xt +) + + ) + +293  + #SIMPLEQ_HEAD +( +me +, +ty +) \ + +294  + sme + { \ + +295  +ty + * +sqh_f +; \ + +296  +ty + ** +sqh_ϡ +; \ + +297 } + + ) + +299  + #SIMPLEQ_HEAD_INITIALIZER +( +hd +) \ + +300 { +NULL +, &( +hd +). +sqh_f + } + + ) + +302  + #SIMPLEQ_ENTRY +( +ty +) \ + +304  +ty + * +sqe_xt +; \ + +305 } + + ) + +310  + #SIMPLEQ_INIT +( +hd +) do { \ + +311 ( +hd +)-> +sqh_f + = +NULL +; \ + +312 ( +hd +)-> +sqh_ϡ + = &(hd)-> +sqh_f +; \ + +313 }  0) + + ) + +315  + #SIMPLEQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +316 i((( +m +)-> +fld +. +sqe_xt + = ( +hd +)-> +sqh_f += +NULL +) \ + +317 ( +hd +)-> +sqh_ϡ + = &( +m +)-> +fld +. +sqe_xt +; \ + +318 ( +hd +)-> +sqh_f + = ( +m +); \ + +319 }  0) + + ) + +321  + #SIMPLEQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +322 ( +m +)-> +fld +. +sqe_xt + = +NULL +; \ + +323 *( +hd +)-> +sqh_ϡ + = ( +m +); \ + +324 ( +hd +)-> +sqh_ϡ + = &( +m +)-> +fld +. +sqe_xt +; \ + +325 }  0) + + ) + +327  + #SIMPLEQ_INSERT_AFTER +( +hd +, +lim +, +m +, +fld +) do { \ + +328 i((( +m +)-> +fld +. +sqe_xt + = ( +lim +)->fld.sqe_xt= +NULL +)\ + +329 ( +hd +)-> +sqh_ϡ + = &( +m +)-> +fld +. +sqe_xt +; \ + +330 ( +lim +)-> +fld +. +sqe_xt + = ( +m +); \ + +331 }  0) + + ) + +333  + #SIMPLEQ_REMOVE_HEAD +( +hd +, +fld +) do { \ + +334 i((( +hd +)-> +sqh_f + = (hd)->sqh_f-> +fld +. +sqe_xt += +NULL +) \ + +335 ( +hd +)-> +sqh_ϡ + = &(hd)-> +sqh_f +; \ + +336 }  0) + + ) + +338  + #SIMPLEQ_REMOVE +( +hd +, +m +, +ty +, +fld +) do { \ + +339 i(( +hd +)-> +sqh_f + =( +m +)) { \ + +340 + `SIMPLEQ_REMOVE_HEAD +(( +hd +), +fld +); \ + +342  +ty + * +culm + = ( +hd +)-> +sqh_f +; \ + +343  +culm +-> +fld +. +sqe_xt + !( +m +)) \ + +344 +culm + = culm-> +fld +. +sqe_xt +; \ + +345 i(( +culm +-> +fld +. +sqe_xt + = \ + +346 +culm +-> +fld +. +sqe_xt +->fld.sqe_xt= +NULL +) \ + +347 ( +hd +)-> +sqh_ϡ + = &( +culm +)-> +fld +. +sqe_xt +; \ + +349 }  0) + + ) + +351  + #SIMPLEQ_FOREACH +( +v +, +hd +, +fld +) \ + +352 ( +v +(( +hd +)-> +sqh_f +); \ + +353 ( +v +); \ + +354 ( +v +((v)-> +fld +. +sqe_xt +)) + + ) + +359  + #SIMPLEQ_EMPTY +( +hd +((hd)-> +sqh_f + = +NULL +) + + ) + +360  + #SIMPLEQ_FIRST +( +hd +((hd)-> +sqh_f +) + + ) + +361  + #SIMPLEQ_NEXT +( +m +, +fld +(lm)->fld. +sqe_xt +) + + ) + +367  + #_TAILQ_HEAD +( +me +, +ty +, +qu +) \ + +368  + sme + { \ + +369 +qu + +ty + * +tqh_f +; \ + +370 +qu + +ty + *qu * +tqh_ϡ +; \ + +371 } + + ) + +372  + #TAILQ_HEAD +( +me +, +ty + + `_TAILQ_HEAD +ame, ty,) + + ) + +374  + #TAILQ_HEAD_INITIALIZER +( +hd +) \ + +375 { +NULL +, &( +hd +). +tqh_f + } + + ) + +377  + #_TAILQ_ENTRY +( +ty +, +qu +) \ + +379 +qu + +ty + * +tqe_xt +; \ + +380 +qu + +ty + *qu * +tqe_ev +; \ + +381 } + + ) + +382  + #TAILQ_ENTRY +( +ty + + `_TAILQ_ENTRY +(ty,) + + ) + +387  + #TAILQ_INIT +( +hd +) do { \ + +388 ( +hd +)-> +tqh_f + = +NULL +; \ + +389 ( +hd +)-> +tqh_ϡ + = &(hd)-> +tqh_f +; \ + +390 }  0) + + ) + +392  + #TAILQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +393 i((( +m +)-> +fld +. +tqe_xt + = ( +hd +)-> +tqh_f +! +NULL +) \ + +394 ( +hd +)-> +tqh_f +-> +fld +. +tqe_ev + = \ + +395 &( +m +)-> +fld +. +tqe_xt +; \ + +397 ( +hd +)-> +tqh_ϡ + = &( +m +)-> +fld +. +tqe_xt +; \ + +398 ( +hd +)-> +tqh_f + = ( +m +); \ + +399 ( +m +)-> +fld +. +tqe_ev + = &( +hd +)-> +tqh_f +; \ + +400 }  0) + + ) + +402  + #TAILQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +403 ( +m +)-> +fld +. +tqe_xt + = +NULL +; \ + +404 ( +m +)-> +fld +. +tqe_ev + = ( +hd +)-> +tqh_ϡ +; \ + +405 *( +hd +)-> +tqh_ϡ + = ( +m +); \ + +406 ( +hd +)-> +tqh_ϡ + = &( +m +)-> +fld +. +tqe_xt +; \ + +407 }  0) + + ) + +409  + #TAILQ_INSERT_AFTER +( +hd +, +lim +, +m +, +fld +) do { \ + +410 i((( +m +)-> +fld +. +tqe_xt + = ( +lim +)->fld.tqe_xt! +NULL +)\ + +411 ( +m +)-> +fld +. +tqe_xt +->fld. +tqe_ev + = \ + +412 &( +m +)-> +fld +. +tqe_xt +; \ + +414 ( +hd +)-> +tqh_ϡ + = &( +m +)-> +fld +. +tqe_xt +; \ + +415 ( +lim +)-> +fld +. +tqe_xt + = ( +m +); \ + +416 ( +m +)-> +fld +. +tqe_ev + = &( +lim +)->fld. +tqe_xt +; \ + +417 }  0) + + ) + +419  + #TAILQ_INSERT_BEFORE +( +lim +, +m +, +fld +) do { \ + +420 ( +m +)-> +fld +. +tqe_ev + = ( +lim +)->field.tqe_prev; \ + +421 ( +m +)-> +fld +. +tqe_xt + = ( +lim +); \ + +422 *( +lim +)-> +fld +. +tqe_ev + = ( +m +); \ + +423 ( +lim +)-> +fld +. +tqe_ev + = &( +m +)->fld. +tqe_xt +; \ + +424 }  0) + + ) + +426  + #TAILQ_REMOVE +( +hd +, +m +, +fld +) do { \ + +427 i((( +m +)-> +fld +. +tqe_xt +! +NULL +) \ + +428 ( +m +)-> +fld +. +tqe_xt +->fld. +tqe_ev + = \ + +429 ( +m +)-> +fld +. +tqe_ev +; \ + +431 ( +hd +)-> +tqh_ϡ + = ( +m +)-> +fld +. +tqe_ev +; \ + +432 *( +m +)-> +fld +. +tqe_ev + = (m)->fld. +tqe_xt +; \ + +433 }  0) + + ) + +435  + #TAILQ_FOREACH +( +v +, +hd +, +fld +) \ + +436 ( +v +(( +hd +)-> +tqh_f +); \ + +437 ( +v +); \ + +438 ( +v +((v)-> +fld +. +tqe_xt +)) + + ) + +440  + #TAILQ_FOREACH_REVERSE +( +v +, +hd +, +hdme +, +fld +) \ + +441 ( +v +(*((( +hdme + *)(( +hd +)-> +tqh_ϡ +))->tqh_last)); \ + +442 ( +v +); \ + +443 ( +v +(*((( +hdme + *)((v)-> +fld +. +tqe_ev +))-> +tqh_ϡ +))) + + ) + +445  + #TAILQ_CONCAT +( +hd1 +, +hd2 +, +fld +) do { \ + +446 i(! + `TAILQ_EMPTY +( +hd2 +)) { \ + +447 *( +hd1 +)-> +tqh_ϡ + = ( +hd2 +)-> +tqh_f +; \ + +448 ( +hd2 +)-> +tqh_f +-> +fld +. +tqe_ev + = ( +hd1 +)-> +tqh_ϡ +; \ + +449 ( +hd1 +)-> +tqh_ϡ + = ( +hd2 +)->tqh_last; \ + +450 + `TAILQ_INIT +(( +hd2 +)); \ + +452 }  0) + + ) + +457  + #TAILQ_EMPTY +( +hd +((hd)-> +tqh_f + = +NULL +) + + ) + +458  + #TAILQ_FIRST +( +hd +((hd)-> +tqh_f +) + + ) + +459  + #TAILQ_NEXT +( +m +, +fld +(lm)->fld. +tqe_xt +) + + ) + +461  + #TAILQ_LAST +( +hd +, +hdme +) \ + +462 (*((( +hdme + *)(( +hd +)-> +tqh_ϡ +))->tqh_ϡ)) + + ) + +463  + #TAILQ_PREV +( +m +, +hdme +, +fld +) \ + +464 (*((( +hdme + *)(( +m +)-> +fld +. +tqe_ev +))-> +tqh_ϡ +)) + + ) + +470  + #CIRCLEQ_HEAD +( +me +, +ty +) \ + +471  + sme + { \ + +472  +ty + * +cqh_f +; \ + +473  +ty + * +cqh_ϡ +; \ + +474 } + + ) + +476  + #CIRCLEQ_HEAD_INITIALIZER +( +hd +) \ + +477 { (*)& +hd +, (*)&hd } + + ) + +479  + #CIRCLEQ_ENTRY +( +ty +) \ + +481  +ty + * +cqe_xt +; \ + +482  +ty + * +cqe_ev +; \ + +483 } + + ) + +488  + #CIRCLEQ_INIT +( +hd +) do { \ + +489 ( +hd +)-> +cqh_f + = (*)(head); \ + +490 ( +hd +)-> +cqh_ϡ + = (*)(head); \ + +491 }  0) + + ) + +493  + #CIRCLEQ_INSERT_AFTER +( +hd +, +lim +, +m +, +fld +) do { \ + +494 ( +m +)-> +fld +. +cqe_xt + = ( +lim +)->field.cqe_next; \ + +495 ( +m +)-> +fld +. +cqe_ev + = ( +lim +); \ + +496 i(( +lim +)-> +fld +. +cqe_xt + =(*)( +hd +)) \ + +497 ( +hd +)-> +cqh_ϡ + = ( +m +); \ + +499 ( +lim +)-> +fld +. +cqe_xt +->fld. +cqe_ev + = ( +m +); \ + +500 ( +lim +)-> +fld +. +cqe_xt + = ( +m +); \ + +501 }  0) + + ) + +503  + #CIRCLEQ_INSERT_BEFORE +( +hd +, +lim +, +m +, +fld +) do { \ + +504 ( +m +)-> +fld +. +cqe_xt + = ( +lim +); \ + +505 ( +m +)-> +fld +. +cqe_ev + = ( +lim +)->field.cqe_prev; \ + +506 i(( +lim +)-> +fld +. +cqe_ev + =(*)( +hd +)) \ + +507 ( +hd +)-> +cqh_f + = ( +m +); \ + +509 ( +lim +)-> +fld +. +cqe_ev +->fld. +cqe_xt + = ( +m +); \ + +510 ( +lim +)-> +fld +. +cqe_ev + = ( +m +); \ + +511 }  0) + + ) + +513  + #CIRCLEQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +514 ( +m +)-> +fld +. +cqe_xt + = ( +hd +)-> +cqh_f +; \ + +515 ( +m +)-> +fld +. +cqe_ev + = (*)( +hd +); \ + +516 i(( +hd +)-> +cqh_ϡ + == (*)(head)) \ + +517 ( +hd +)-> +cqh_ϡ + = ( +m +); \ + +519 ( +hd +)-> +cqh_f +-> +fld +. +cqe_ev + = ( +m +); \ + +520 ( +hd +)-> +cqh_f + = ( +m +); \ + +521 }  0) + + ) + +523  + #CIRCLEQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +524 ( +m +)-> +fld +. +cqe_xt + = (*)( +hd +); \ + +525 ( +m +)-> +fld +. +cqe_ev + = ( +hd +)-> +cqh_ϡ +; \ + +526 i(( +hd +)-> +cqh_f + == (*)(head)) \ + +527 ( +hd +)-> +cqh_f + = ( +m +); \ + +529 ( +hd +)-> +cqh_ϡ +-> +fld +. +cqe_xt + = ( +m +); \ + +530 ( +hd +)-> +cqh_ϡ + = ( +m +); \ + +531 }  0) + + ) + +533  + #CIRCLEQ_REMOVE +( +hd +, +m +, +fld +) do { \ + +534 i(( +m +)-> +fld +. +cqe_xt + =(*)( +hd +)) \ + +535 ( +hd +)-> +cqh_ϡ + = ( +m +)-> +fld +. +cqe_ev +; \ + +537 ( +m +)-> +fld +. +cqe_xt +->fld. +cqe_ev + = \ + +538 ( +m +)-> +fld +. +cqe_ev +; \ + +539 i(( +m +)-> +fld +. +cqe_ev + =(*)( +hd +)) \ + +540 ( +hd +)-> +cqh_f + = ( +m +)-> +fld +. +cqe_xt +; \ + +542 ( +m +)-> +fld +. +cqe_ev +->fld. +cqe_xt + = \ + +543 ( +m +)-> +fld +. +cqe_xt +; \ + +544 }  0) + + ) + +546  + #CIRCLEQ_FOREACH +( +v +, +hd +, +fld +) \ + +547 ( +v +(( +hd +)-> +cqh_f +); \ + +548 ( +v +!(cڡ *)( +hd +); \ + +549 ( +v +((v)-> +fld +. +cqe_xt +)) + + ) + +551  + #CIRCLEQ_FOREACH_REVERSE +( +v +, +hd +, +fld +) \ + +552 ( +v +(( +hd +)-> +cqh_ϡ +); \ + +553 ( +v +!(cڡ *)( +hd +); \ + +554 ( +v +((v)-> +fld +. +cqe_ev +)) + + ) + +559  + #CIRCLEQ_EMPTY +( +hd +((hd)-> +cqh_f + =(*)(hd)) + + ) + +560  + #CIRCLEQ_FIRST +( +hd +((hd)-> +cqh_f +) + + ) + +561  + #CIRCLEQ_LAST +( +hd +((hd)-> +cqh_ϡ +) + + ) + +562  + #CIRCLEQ_NEXT +( +m +, +fld +(lm)->fld. +cqe_xt +) + + ) + +563  + #CIRCLEQ_PREV +( +m +, +fld +(lm)->fld. +cqe_ev +) + + ) + +565  + #CIRCLEQ_LOOP_NEXT +( +hd +, +m +, +fld +) \ + +566 ((( +m +)-> +fld +. +cqe_xt + =(*)( +hd +)) \ + +567 ? (( +hd +)-> +cqh_f +) \ + +568 : ( +m +-> +fld +. +cqe_xt +)) + + ) + +569  + #CIRCLEQ_LOOP_PREV +( +hd +, +m +, +fld +) \ + +570 ((( +m +)-> +fld +. +cqe_ev + =(*)( +hd +)) \ + +571 ? (( +hd +)-> +cqh_ϡ +) \ + +572 : ( +m +-> +fld +. +cqe_ev +)) + + ) + + @/usr/include/sys/socket.h + +19 #idef +_SYS_SOCKET_H + + +20  + #_SYS_SOCKET_H + 1 + + ) + +22  + ~ + +24 + g__BEGIN_DECLS + + +26  + ~ + +27  + #__ed_size_t + + + ) + +28  + ~ + +29 #ifde +__USE_GNU + + +31  + ~ + +38  + ~ + +40 #ifde +__USE_MISC + + +43  + sosockaddr + + +45  + m_my +; + +46  + m_da +[14]; + +54 + mSHUT_RD + = 0, + +55  + #SHUT_RD + +SHUT_RD + + + ) + +56 + mSHUT_WR +, + +57  + #SHUT_WR + +SHUT_WR + + + ) + +58 + mSHUT_RDWR + + +59  + #SHUT_RDWR + +SHUT_RDWR + + + ) + +68 #i +defed + +__lulus + || ! +__GNUC_PREREQ + (2, 7|| !defed +__USE_GNU + + +69  + #__SOCKADDR_ARG +  +sockaddr + * +__ri + + + ) + +70  + #__CONST_SOCKADDR_ARG + cڡ  +sockaddr + * + + ) + +74  + #__SOCKADDR_ALLTYPES + \ + +75 + `__SOCKADDR_ONETYPE + ( +sockaddr +) \ + +76 + `__SOCKADDR_ONETYPE + ( +sockaddr_ +) \ + +77 + `__SOCKADDR_ONETYPE + ( +sockaddr_ax25 +) \ + +78 + `__SOCKADDR_ONETYPE + ( +sockaddr_dl +) \ + +79 + `__SOCKADDR_ONETYPE + ( +sockaddr_e +) \ + +80 + `__SOCKADDR_ONETYPE + ( +sockaddr_ +) \ + +81 + `__SOCKADDR_ONETYPE + ( +sockaddr_6 +) \ + +82 + `__SOCKADDR_ONETYPE + ( +sockaddr_p +) \ + +83 + `__SOCKADDR_ONETYPE + ( +sockaddr_x +) \ + +84 + `__SOCKADDR_ONETYPE + ( +sockaddr_iso +) \ + +85 + `__SOCKADDR_ONETYPE + ( +sockaddr_ns +) \ + +86 + `__SOCKADDR_ONETYPE + ( +sockaddr_un +) \ + +87 + `__SOCKADDR_ONETYPE + ( +sockaddr_x25 +) + + ) + +89  + #__SOCKADDR_ONETYPE +( +ty +ty * +__ri + +__ +##ty##__; + + ) + +90 uni { + m__SOCKADDR_ALLTYPES + + +91 } + t__SOCKADDR_ARG + + t__ibu__ + (( + t__t_uni__ +)); + +92 #unde +__SOCKADDR_ONETYPE + + +93  + #__SOCKADDR_ONETYPE +( +ty +cڡ ty * +__ri + +__ +##ty##__; + + ) + +94 uni { + m__SOCKADDR_ALLTYPES + + +95 } + t__CONST_SOCKADDR_ARG + + t__ibu__ + (( + t__t_uni__ +)); + +96 #unde +__SOCKADDR_ONETYPE + + +99 #ifde +__USE_GNU + + +101  + smmsghdr + + +103  +msghdr + + mmsg_hdr +; + +104  + mmsg_n +; + +113  + $sock + ( +__doma +,  +__ty +,  +__oc + +__THROW +; + +119  + $sock + ( +__doma +,  +__ty +,  +__oc +, + +120  +__fds +[2] +__THROW +; + +123  + $bd + ( +__fd +, +__CONST_SOCKADDR_ARG + +__addr +, +sockn_t + +__n +) + +124 +__THROW +; + +127  + $gsockme + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +128 +sockn_t + * +__ri + +__n + +__THROW +; + +137  + `c + ( +__fd +, +__CONST_SOCKADDR_ARG + +__addr +, +sockn_t + +__n +); + +141  + $gme + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +142 +sockn_t + * +__ri + +__n + +__THROW +; + +149 +ssize_t + + `nd + ( +__fd +, cڡ * +__buf +, +size_t + +__n +,  +__ags +); + +156 +ssize_t + + `cv + ( +__fd +, * +__buf +, +size_t + +__n +,  +__ags +); + +163 +ssize_t + + `ndto + ( +__fd +, cڡ * +__buf +, +size_t + +__n +, + +164  +__ags +, +__CONST_SOCKADDR_ARG + +__addr +, + +165 +sockn_t + +__addr_n +); + +174 +ssize_t + + `cvom + ( +__fd +, * +__ri + +__buf +, +size_t + +__n +, + +175  +__ags +, +__SOCKADDR_ARG + +__addr +, + +176 +sockn_t + * +__ri + +__addr_n +); + +184 +ssize_t + + `ndmsg + ( +__fd +, cڡ  +msghdr + * +__mesge +, + +185  +__ags +); + +187 #ifde +__USE_GNU + + +193  + `ndmmsg + ( +__fd +,  +mmsghdr + * +__vmesges +, + +194  +__vn +,  +__ags +); + +202 +ssize_t + + `cvmsg + ( +__fd +,  +msghdr + * +__mesge +,  +__ags +); + +204 #ifde +__USE_GNU + + +210  + `cvmmsg + ( +__fd +,  +mmsghdr + * +__vmesges +, + +211  +__vn +,  +__ags +, + +212  +timeec + * +__tmo +); + +219  + $gsockt + ( +__fd +,  +__v +,  +__݊ame +, + +220 * +__ri + +__tv +, + +221 +sockn_t + * +__ri + +__ݎ + +__THROW +; + +226  + $tsockt + ( +__fd +,  +__v +,  +__݊ame +, + +227 cڡ * +__tv +, +sockn_t + +__ݎ + +__THROW +; + +233  + $li + ( +__fd +,  +__n + +__THROW +; + +243  + `ac + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +244 +sockn_t + * +__ri + +__addr_n +); + +246 #ifde +__USE_GNU + + +251  + `ac4 + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +252 +sockn_t + * +__ri + +__addr_n +,  +__ags +); + +261  + $shutdown + ( +__fd +,  +__how + +__THROW +; + +264 #ifde +__USE_XOPEN2K + + +266  + $sockmk + ( +__fd + +__THROW +; + +270 #ifde +__USE_MISC + + +274  + $isfdty + ( +__fd +,  +__fdty + +__THROW +; + +279 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +280  + ~ + +283 +__END_DECLS + + + @/usr/include/sys/types.h + +22 #idef +_SYS_TYPES_H + + +23  + #_SYS_TYPES_H + 1 + + ) + +25  + ~ + +27 + g__BEGIN_DECLS + + +29  + ~ + +31 #ifdef +__USE_MISC + + +32 #ide +__u_ch_defed + + +33  +__u_ch + + tu_ch +; + +34  +__u_sht + + tu_sht +; + +35  +__u_t + + tu_t +; + +36  +__u_lg + + tu_lg +; + +37  +__quad_t + + tquad_t +; + +38  +__u_quad_t + + tu_quad_t +; + +39  +__fsid_t + + tfsid_t +; + +40  + #__u_ch_defed + + + ) + +44  +__loff_t + + tloff_t +; + +46 #ide +__o_t_defed + + +47 #ide +__USE_FILE_OFFSET64 + + +48  +__o_t + + to_t +; + +50  +__o64_t + + to_t +; + +52  + #__o_t_defed + + + ) + +54 #i +defed + +__USE_LARGEFILE64 + && !defed +__o64_t_defed + + +55  +__o64_t + + to64_t +; + +56  + #__o64_t_defed + + + ) + +59 #ide +__dev_t_defed + + +60  +__dev_t + + tdev_t +; + +61  + #__dev_t_defed + + + ) + +64 #ide +__gid_t_defed + + +65  +__gid_t + + tgid_t +; + +66  + #__gid_t_defed + + + ) + +69 #ide +__mode_t_defed + + +70  +__mode_t + + tmode_t +; + +71  + #__mode_t_defed + + + ) + +74 #ide +__ƚk_t_defed + + +75  +__ƚk_t + + tƚk_t +; + +76  + #__ƚk_t_defed + + + ) + +79 #ide +__uid_t_defed + + +80  +__uid_t + + tuid_t +; + +81  + #__uid_t_defed + + + ) + +84 #ide +__off_t_defed + + +85 #ide +__USE_FILE_OFFSET64 + + +86  +__off_t + + toff_t +; + +88  +__off64_t + + toff_t +; + +90  + #__off_t_defed + + + ) + +92 #i +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +93  +__off64_t + + toff64_t +; + +94  + #__off64_t_defed + + + ) + +97 #ide +__pid_t_defed + + +98  +__pid_t + + tpid_t +; + +99  + #__pid_t_defed + + + ) + +102 #i( +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 +) \ + +103 && ! +defed + +__id_t_defed + + +104  +__id_t + + tid_t +; + +105  + #__id_t_defed + + + ) + +108 #ide +__ssize_t_defed + + +109  +__ssize_t + + tssize_t +; + +110  + #__ssize_t_defed + + + ) + +113 #ifdef +__USE_MISC + + +114 #ide +__daddr_t_defed + + +115  +__daddr_t + + tdaddr_t +; + +116  +__ddr_t + + tddr_t +; + +117  + #__daddr_t_defed + + + ) + +121 #i( +defed + +__USE_MISC + || defed +__USE_XOPEN +&& !defed +__key_t_defed + + +122  +__key_t + + tkey_t +; + +123  + #__key_t_defed + + + ) + +126 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +127  + #__ed_ock_t + + + ) + +129  + #__ed_time_t + + + ) + +130  + #__ed_tim_t + + + ) + +131  + #__ed_ockid_t + + + ) + +132  + ~ + +134 #ifde +__USE_XOPEN + + +135 #ide +__ucds_t_defed + + +136  +__ucds_t + + tucds_t +; + +137  + #__ucds_t_defed + + + ) + +139 #ide +__sucds_t_defed + + +140  +__sucds_t + + tsucds_t +; + +141  + #__sucds_t_defed + + + ) + +145  + #__ed_size_t + + + ) + +146  + ~ + +148 #ifde +__USE_MISC + + +150  + tulg +; + +151  + tusht +; + +152  + tut +; + +157 #i! +__GNUC_PREREQ + (2, 7) + +160 #ide +__t8_t_defed + + +161  + #__t8_t_defed + + + ) + +162  + tt8_t +; + +163  + tt16_t +; + +164  + tt32_t +; + +165 #i +__WORDSIZE + == 64 + +166  + tt64_t +; + +168 +__exnsi__ +  + tt64_t +; + +173  + tu_t8_t +; + +174  + tu_t16_t +; + +175  + tu_t32_t +; + +176 #i +__WORDSIZE + == 64 + +177  + tu_t64_t +; + +179 +__exnsi__ +  + tu_t64_t +; + +182  + tgi_t +; + +187  + #__tN_t +( +N +, +MODE +) \ + +188 ## + tN +## + t_t + + t__ibu__ + (( + t__mode__ + ( + tMODE +))) + + ) + +189  + t__u_tN_t +( + tN +, + tMODE +) \ + +190  + tu_t +## + tN +## + t_t + + t__ibu__ + (( + t__mode__ + ( + tMODE +))) + + ) + +192 #ide + t__t8_t_defed + + +193  + t__t8_t_defed + + + ) + +194 + t__tN_t + (8, + t__QI__ +); + +195 +__tN_t + (16, +__HI__ +); + +196 +__tN_t + (32, +__SI__ +); + +197 +__tN_t + (64, +__DI__ +); + +200 +__u_tN_t + (8, +__QI__ +); + +201 +__u_tN_t + (16, +__HI__ +); + +202 +__u_tN_t + (32, +__SI__ +); + +203 +__u_tN_t + (64, +__DI__ +); + +205  + tgi_t + + t__ibu__ + (( + t__mode__ + ( + t__wd__ +))); + +211  + #__BIT_TYPES_DEFINED__ + 1 + + ) + +214 #ifdef +__USE_MISC + + +216  + ~ + +219  + ~ + +222  + ~ + +226 #i( +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 +) \ + +227 && ! +defed + +__blksize_t_defed + + +228  +__blksize_t + + tblksize_t +; + +229  + #__blksize_t_defed + + + ) + +233 #ide +__USE_FILE_OFFSET64 + + +234 #ide +__blkt_t_defed + + +235  +__blkt_t + + tblkt_t +; + +236  + #__blkt_t_defed + + + ) + +238 #ide +__fsblkt_t_defed + + +239  +__fsblkt_t + + tfsblkt_t +; + +240  + #__fsblkt_t_defed + + + ) + +242 #ide +__fsft_t_defed + + +243  +__fsft_t + + tfsft_t +; + +244  + #__fsft_t_defed + + + ) + +247 #ide +__blkt_t_defed + + +248  +__blkt64_t + + tblkt_t +; + +249  + #__blkt_t_defed + + + ) + +251 #ide +__fsblkt_t_defed + + +252  +__fsblkt64_t + + tfsblkt_t +; + +253  + #__fsblkt_t_defed + + + ) + +255 #ide +__fsft_t_defed + + +256  +__fsft64_t + + tfsft_t +; + +257  + #__fsft_t_defed + + + ) + +261 #ifde +__USE_LARGEFILE64 + + +262  +__blkt64_t + + tblkt64_t +; + +263  +__fsblkt64_t + + tfsblkt64_t +; + +264  +__fsft64_t + + tfsft64_t +; + +269 #i +defed + +__USE_POSIX199506 + || defed +__USE_UNIX98 + + +270  + ~ + +273 + g__END_DECLS + + + @/usr/include/sys/wait.h + +22 #idef +_SYS_WAIT_H + + +23  + #_SYS_WAIT_H + 1 + + ) + +25  + ~ + +27 + g__BEGIN_DECLS + + +29  + ~ + +32 #i! +defed + +_STDLIB_H + || (!defed +__USE_XOPEN + && !defed +__USE_XOPEN2K8 +) + +35  + ~ + +37 #ifdef +__USE_MISC + + +42 #i +defed + +__GNUC__ + && !defed +__lulus + + +43  + #__WAIT_INT +( +us +) \ + +44 ( + `__exnsi__ + (((uni { + `__tyof +( +us + +__ +;  +__i +; }) \ + +45 { . +__ + = ( +us +}). +__i +)) + + ) + +47  + #__WAIT_INT +( +us +(*(cڡ *&(us)) + + ) + +55 #i! +defed + +__GNUC__ + || __GNUC__ < 2 || defed +__lulus + + +56  + #__WAIT_STATUS + * + + ) + +57  + #__WAIT_STATUS_DEFN + * + + ) + +62  +wa + * + m__ur +; + +63 * + m__ +; + +64 } + t__WAIT_STATUS + + t__ibu__ + (( + t__t_uni__ +)); + +65  + #__WAIT_STATUS_DEFN + * + + ) + +70  + #__WAIT_INT +( +us +(us) + + ) + +71  + #__WAIT_STATUS + * + + ) + +72  + #__WAIT_STATUS_DEFN + * + + ) + +77  + ~ + +79  + #WEXITSTATUS +( +us + + `__WEXITSTATUS + ( + `__WAIT_INT + (us)) + + ) + +80  + #WTERMSIG +( +us + + `__WTERMSIG + ( + `__WAIT_INT + (us)) + + ) + +81  + #WSTOPSIG +( +us + + `__WSTOPSIG + ( + `__WAIT_INT + (us)) + + ) + +82  + #WIFEXITED +( +us + + `__WIFEXITED + ( + `__WAIT_INT + (us)) + + ) + +83  + #WIFSIGNALED +( +us + + `__WIFSIGNALED + ( + `__WAIT_INT + (us)) + + ) + +84  + #WIFSTOPPED +( +us + + `__WIFSTOPPED + ( + `__WAIT_INT + (us)) + + ) + +85 #ifde +__WIFCONTINUED + + +86  + #WIFCONTINUED +( +us + + `__WIFCONTINUED + ( + `__WAIT_INT + (us)) + + ) + +90 #ifdef +__USE_MISC + + +91  + #WCOREFLAG + +__WCOREFLAG + + + ) + +92  + #WCOREDUMP +( +us + + `__WCOREDUMP + ( + `__WAIT_INT + (us)) + + ) + +93  + #W_EXITCODE +( +t +, +sig + + `__W_EXITCODE + (t, sig) + + ) + +94  + #W_STOPCODE +( +sig + + `__W_STOPCODE + (sig) + + ) + +102 +__pid_t + +wa + ( +__WAIT_STATUS + +___loc +); + +104 #ifdef +__USE_MISC + + +106  + #WAIT_ANY + (-1 + + ) + +107  + #WAIT_MYPGRP + 0 + + ) + +125 +__pid_t + +wapid + (__pid_ +__pid +, * +___loc +,  +__tis +); + +127 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +128 #ide +__id_t_defed + + +129  + ~ + +130  +__id_t + + tid_t +; + +131  + #__id_t_defed + + + ) + +134  + #__ed_sigfo_t + + + ) + +135  + ~ + +148  +waid + ( +idty_t + +__idty +, +__id_t + +__id +, +sigfo_t + * +__f +, + +149  +__tis +); + +152 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +155  + gruge +; + +162 +__pid_t + + $wa3 + ( +__WAIT_STATUS + +___loc +,  +__tis +, + +163  +ruge + * +__uge + +__THROWNL +; + +166 #ifde +__USE_MISC + + +168 +__pid_t + + $wa4 + ( +__pid_t + +__pid +, +__WAIT_STATUS + +___loc +,  +__tis +, + +169  +ruge + * +__uge + +__THROWNL +; + +173 +__END_DECLS + + + @/usr/include/time.h + +22 #idef +_TIME_H + + +24 #i(! +defed + +__ed_time_t + && !defed +__ed_ock_t + && \ + +25 ! +defed + + g__ed_timeec +) + +26  + #_TIME_H + 1 + + ) + +27  + ~ + +29 + g__BEGIN_DECLS + + +33 #ifdef +_TIME_H + + +35  + #__ed_size_t + + + ) + +36  + #__ed_NULL + + + ) + +37  + ~ + +41  + ~ + +44 #i! +defed + +__STRICT_ANSI__ + && !defed +__USE_XOPEN2K + + +45 #ide +CLK_TCK + + +46  + #CLK_TCK + +CLOCKS_PER_SEC + + + ) + +52 #i! +defed + +__ock_t_defed + && (defed +_TIME_H + || defed +__ed_ock_t +) + +53  + #__ock_t_defed + 1 + + ) + +55  + ~ + +57 +__BEGIN_NAMESPACE_STD + + +59  +__ock_t + + tock_t +; + +60 + g__END_NAMESPACE_STD + + +61 #i +defed + +__USE_XOPEN + || defed +__USE_POSIX + + +62 + $__USING_NAMESPACE_STD +( +ock_t +) + +66 #unde +__ed_ock_t + + +68 #i! +defed + +__time_t_defed + && (defed +_TIME_H + || defed +__ed_time_t +) + +69  + #__time_t_defed + 1 + + ) + +71  + ~ + +73 +__BEGIN_NAMESPACE_STD + + +75  +__time_t + + ttime_t +; + +76 +__END_NAMESPACE_STD + + +77 #ifde +__USE_POSIX + + +78 + $__USING_NAMESPACE_STD +( +time_t +) + +82 #unde +__ed_time_t + + +84 #i! +defed + +__ockid_t_defed + && \ + +85 (( +defed + +_TIME_H + && defed +__USE_POSIX199309 +|| defed +__ed_ockid_t +) + +86  + #__ockid_t_defed + 1 + + ) + +88  + ~ + +91  +__ockid_t + + tockid_t +; + +94 #unde +__ockid_time_t + + +96 #i! +defed + +__tim_t_defed + && \ + +97 (( +defed + +_TIME_H + && defed +__USE_POSIX199309 +|| defed +__ed_tim_t +) + +98  + #__tim_t_defed + 1 + + ) + +100  + ~ + +103  +__tim_t + + ttim_t +; + +106 #unde +__ed_tim_t + + +109 #i(! +defed + +__timeec_defed + \ + +110 && (( +defed + +_TIME_H + \ + +111 && ( +defed + +__USE_POSIX199309 + \ + +112 || +defed + +__USE_ISOC11 +)) \ + +113 || +defed + +__ed_timeec +)) + +114  + #__timeec_defed + 1 + + ) + +116  + ~ + +120  + stimeec + + +122 +__time_t + +tv_c +; + +123 +__sys_g_t + +tv_nc +; + +127 #unde +__ed_timeec + + +130 #ifdef +_TIME_H + + +131 +__BEGIN_NAMESPACE_STD + + +133  + stm + + +135  +tm_c +; + +136  +tm_m +; + +137  +tm_hour +; + +138  +tm_mday +; + +139  +tm_m +; + +140  +tm_yr +; + +141  +tm_wday +; + +142  +tm_yday +; + +143  +tm_isd +; + +145 #ifdef +__USE_MISC + + +146  +tm_gmtoff +; + +147 cڡ * +tm_ze +; + +149  +__tm_gmtoff +; + +150 cڡ * +__tm_ze +; + +153 +__END_NAMESPACE_STD + + +154 #i +defed + +__USE_XOPEN + || defed +__USE_POSIX + + +155 + $__USING_NAMESPACE_STD +( +tm +) + +159 #ifde +__USE_POSIX199309 + + +161  + simec + + +163  +timeec + +_rv +; + +164  +timeec + +_vue +; + +168  +sigevt +; + +172 #ifde +__USE_XOPEN2K + + +173 #ide +__pid_t_defed + + +174  +__pid_t + + tpid_t +; + +175  + #__pid_t_defed + + + ) + +180 #ifde +__USE_ISOC11 + + +182  + #TIME_UTC + 1 + + ) + +186 +__BEGIN_NAMESPACE_STD + + +189 +ock_t + + $ock + ( +__THROW +; + +192 +time_t + + $time + ( +time_t + * +__tim + +__THROW +; + +195  + $difime + ( +time_t + +__time1 +,ime_ +__time0 +) + +196 +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +199 +time_t + + $mktime + ( +tm + * +__ + +__THROW +; + +205 +size_t + + $rime + (* +__ri + +__s +, +size_t + +__maxsize +, + +206 cڡ * +__ri + +__fm +, + +207 cڡ  +tm + * +__ri + +__ + +__THROW +; + +208 +__END_NAMESPACE_STD + + +210 #ifde +__USE_XOPEN + + +213 * + $time + (cڡ * +__ri + +__s +, + +214 cڡ * +__ri + +__fmt +,  +tm + * +__ +) + +215 +__THROW +; + +218 #ifde +__USE_XOPEN2K8 + + +221  + ~ + +223 +size_t + + $rime_l + (* +__ri + +__s +, +size_t + +__maxsize +, + +224 cڡ * +__ri + +__fm +, + +225 cڡ  +tm + * +__ri + +__ +, + +226 +__lo_t + +__loc + +__THROW +; + +229 #ifde +__USE_GNU + + +230 * + $time_l + (cڡ * +__ri + +__s +, + +231 cڡ * +__ri + +__fmt +,  +tm + * +__ +, + +232 +__lo_t + +__loc + +__THROW +; + +236 +__BEGIN_NAMESPACE_STD + + +239  +tm + * + $gmtime + (cڡ +time_t + * +__tim + +__THROW +; + +243  +tm + * + $loime + (cڡ +time_t + * +__tim + +__THROW +; + +244 +__END_NAMESPACE_STD + + +246 #ifde +__USE_POSIX + + +249  +tm + * + $gmtime_r + (cڡ +time_t + * +__ri + +__tim +, + +250  +tm + * +__ri + +__ + +__THROW +; + +254  +tm + * + $loime_r + (cڡ +time_t + * +__ri + +__tim +, + +255  +tm + * +__ri + +__ + +__THROW +; + +258 +__BEGIN_NAMESPACE_STD + + +261 * + $asime + (cڡ  +tm + * +__ + +__THROW +; + +264 * + $ime + (cڡ +time_t + * +__tim + +__THROW +; + +265 +__END_NAMESPACE_STD + + +267 #ifde +__USE_POSIX + + +272 * + $asime_r + (cڡ  +tm + * +__ri + +__ +, + +273 * +__ri + +__buf + +__THROW +; + +276 * + $ime_r + (cڡ +time_t + * +__ri + +__tim +, + +277 * +__ri + +__buf + +__THROW +; + +282 * +__tzme +[2]; + +283  +__daylight +; + +284  +__timeze +; + +287 #ifdef +__USE_POSIX + + +289 * +tzme +[2]; + +293  + $tzt + ( +__THROW +; + +296 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +297  +daylight +; + +298  +timeze +; + +301 #ifde +__USE_MISC + + +304  + $ime + (cڡ +time_t + * +__wh + +__THROW +; + +310  + #__ip +( +yr +) \ + +311 (( +yr +% 4 =0 && ((yr% 100 !0 || (yr% 400 =0)) + + ) + +314 #ifde +__USE_MISC + + +319 +time_t + + $timegm + ( +tm + * +__ + +__THROW +; + +322 +time_t + + $timol + ( +tm + * +__ + +__THROW +; + +325  + $dysize + ( +__yr + +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +329 #ifde +__USE_POSIX199309 + + +334  + `nop + (cڡ  +timeec + * +__queed_time +, + +335  +timeec + * +__mag +); + +339  + $ock_gs + ( +ockid_t + +__ock_id +,  +timeec + * +__s + +__THROW +; + +342  + $ock_gtime + ( +ockid_t + +__ock_id +,  +timeec + * +__ + +__THROW +; + +345  + $ock_ime + ( +ockid_t + +__ock_id +, cڡ  +timeec + * +__ +) + +346 +__THROW +; + +348 #ifde +__USE_XOPEN2K + + +353  + `ock_nop + ( +ockid_t + +__ock_id +,  +__ags +, + +354 cڡ  +timeec + * +__q +, + +355  +timeec + * +__m +); + +358  + $ock_guockid + ( +pid_t + +__pid +, +ockid_t + * +__ock_id + +__THROW +; + +363  + $tim_ + ( +ockid_t + +__ock_id +, + +364  +sigevt + * +__ri + +__evp +, + +365 +tim_t + * +__ri + +__timid + +__THROW +; + +368  + $tim_de + ( +tim_t + +__timid + +__THROW +; + +371  + $tim_ime + ( +tim_t + +__timid +,  +__ags +, + +372 cڡ  +imec + * +__ri + +__vue +, + +373  +imec + * +__ri + +__ovue + +__THROW +; + +376  + $tim_gtime + ( +tim_t + +__timid +,  +imec + * +__vue +) + +377 +__THROW +; + +380  + $tim_govrun + ( +tim_t + +__timid + +__THROW +; + +384 #ifde +__USE_ISOC11 + + +386  + $timeec_g + ( +timeec + * +__ts +,  +__ba +) + +387 +__THROW + + `__nnu + ((1)); + +391 #ifde +__USE_XOPEN_EXTENDED + + +403  +gde_r +; + +412  +tm + * + `gde + (cڡ * +__rg +); + +415 #ifde +__USE_GNU + + +426  + `gde_r + (cڡ * +__ri + +__rg +, + +427  +tm + * +__ri + +__sbu +); + +430 +__END_DECLS + + + @/usr/include/unistd.h + +22 #idef +_UNISTD_H + + +23  + #_UNISTD_H + 1 + + ) + +25  + ~ + +27 + g__BEGIN_DECLS + + +32 #ifde +__USE_XOPEN2K8 + + +34  + #_POSIX_VERSION + 200809L + + ) + +35 #i +defed + +__USE_XOPEN2K + + +37  + #_POSIX_VERSION + 200112L + + ) + +38 #i +defed + +__USE_POSIX199506 + + +40  + #_POSIX_VERSION + 199506L + + ) + +41 #i +defed + +__USE_POSIX199309 + + +43  + #_POSIX_VERSION + 199309L + + ) + +46  + #_POSIX_VERSION + 199009L + + ) + +52 #ifde +__USE_XOPEN2K8 + + +53  + #__POSIX2_THIS_VERSION + 200809L + + ) + +55 #i +defed + +__USE_XOPEN2K + + +57  + #__POSIX2_THIS_VERSION + 200112L + + ) + +58 #i +defed + +__USE_POSIX199506 + + +60  + #__POSIX2_THIS_VERSION + 199506L + + ) + +63  + #__POSIX2_THIS_VERSION + 199209L + + ) + +67  + #_POSIX2_VERSION + +__POSIX2_THIS_VERSION + + + ) + +70  + #_POSIX2_C_VERSION + +__POSIX2_THIS_VERSION + + + ) + +74  + #_POSIX2_C_BIND + +__POSIX2_THIS_VERSION + + + ) + +78  + #_POSIX2_C_DEV + +__POSIX2_THIS_VERSION + + + ) + +82  + #_POSIX2_SW_DEV + +__POSIX2_THIS_VERSION + + + ) + +86  + #_POSIX2_LOCALEDEF + +__POSIX2_THIS_VERSION + + + ) + +89 #ifde +__USE_XOPEN2K8 + + +90  + #_XOPEN_VERSION + 700 + + ) + +91 #i +defed + +__USE_XOPEN2K + + +92  + #_XOPEN_VERSION + 600 + + ) + +93 #i +defed + +__USE_UNIX98 + + +94  + #_XOPEN_VERSION + 500 + + ) + +96  + #_XOPEN_VERSION + 4 + + ) + +100  + #_XOPEN_XCU_VERSION + 4 + + ) + +103  + #_XOPEN_XPG2 + 1 + + ) + +104  + #_XOPEN_XPG3 + 1 + + ) + +105  + #_XOPEN_XPG4 + 1 + + ) + +108  + #_XOPEN_UNIX + 1 + + ) + +111  + #_XOPEN_CRYPT + 1 + + ) + +115  + #_XOPEN_ENH_I18N + 1 + + ) + +118  + #_XOPEN_LEGACY + 1 + + ) + +205  + ~ + +208 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +209  + ~ + +213  + #STDIN_FILENO + 0 + + ) + +214  + #STDOUT_FILENO + 1 + + ) + +215  + #STDERR_FILENO + 2 + + ) + +220  + ~ + +222 #idef +__ssize_t_defed + + +223  +__ssize_t + + tssize_t +; + +224  + #__ssize_t_defed + + + ) + +227  + #__ed_size_t + + + ) + +228  + #__ed_NULL + + + ) + +229  + ~ + +231 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K + + +234 #ide +__gid_t_defed + + +235  +__gid_t + + tgid_t +; + +236  + #__gid_t_defed + + + ) + +239 #ide +__uid_t_defed + + +240  +__uid_t + + tuid_t +; + +241  + #__uid_t_defed + + + ) + +244 #ide +__off_t_defed + + +245 #ide +__USE_FILE_OFFSET64 + + +246  +__off_t + + toff_t +; + +248  +__off64_t + + toff_t +; + +250  + #__off_t_defed + + + ) + +252 #i +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +253  +__off64_t + + toff64_t +; + +254  + #__off64_t_defed + + + ) + +257 #ide +__ucds_t_defed + + +258  +__ucds_t + + tucds_t +; + +259  + #__ucds_t_defed + + + ) + +262 #ide +__pid_t_defed + + +263  +__pid_t + + tpid_t +; + +264  + #__pid_t_defed + + + ) + +268 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +269 #ide +___t_defed + + +270  +___t + + t_t +; + +271  + #___t_defed + + + ) + +275 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +276 #ide +__sockn_t_defed + + +277  +__sockn_t + + tsockn_t +; + +278  + #__sockn_t_defed + + + ) + +284  + #R_OK + 4 + + ) + +285  + #W_OK + 2 + + ) + +286  + #X_OK + 1 + + ) + +287  + #F_OK + 0 + + ) + +290  + $acss + (cڡ * +__me +,  +__ty + +__THROW + + `__nnu + ((1)); + +292 #ifde +__USE_GNU + + +295  + $euidacss + (cڡ * +__me +,  +__ty +) + +296 +__THROW + + `__nnu + ((1)); + +299  + $css + (cڡ * +__me +,  +__ty +) + +300 +__THROW + + `__nnu + ((1)); + +303 #ifde +__USE_ATFILE + + +307  + $cst + ( +__fd +, cڡ * +__fe +,  +__ty +,  +__ag +) + +308 +__THROW + + `__nnu + ((2) +__wur +; + +313 #idef +_STDIO_H + + +314  + #SEEK_SET + 0 + + ) + +315  + #SEEK_CUR + 1 + + ) + +316  + #SEEK_END + 2 + + ) + +317 #ifde +__USE_GNU + + +318  + #SEEK_DATA + 3 + + ) + +319  + #SEEK_HOLE + 4 + + ) + +323 #i +defed + +__USE_MISC + && !defed +L_SET + + +325  + #L_SET + +SEEK_SET + + + ) + +326  + #L_INCR + +SEEK_CUR + + + ) + +327  + #L_XTND + +SEEK_END + + + ) + +336 #ide +__USE_FILE_OFFSET64 + + +337 +__off_t + + $lek + ( +__fd +, +__off_t + +__offt +,  +__wh + +__THROW +; + +339 #ifde +__REDIRECT_NTH + + +340 +__off64_t + + `__REDIRECT_NTH + ( +lek +, + +341 ( +__fd +, +__off64_t + +__offt +,  +__wh +), + +342 +lek64 +); + +344  + #lek + +lek64 + + + ) + +347 #ifde +__USE_LARGEFILE64 + + +348 +__off64_t + + $lek64 + ( +__fd +, +__off64_t + +__offt +,  +__wh +) + +349 +__THROW +; + +356  + `o + ( +__fd +); + +363 +ssize_t + + $ad + ( +__fd +, * +__buf +, +size_t + +__nbys + +__wur +; + +369 +ssize_t + + $wre + ( +__fd +, cڡ * +__buf +, +size_t + +__n + +__wur +; + +371 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +372 #ide +__USE_FILE_OFFSET64 + + +379 +ssize_t + + $d + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +380 +__off_t + +__offt + +__wur +; + +387 +ssize_t + + $pwre + ( +__fd +, cڡ * +__buf +, +size_t + +__n +, + +388 +__off_t + +__offt + +__wur +; + +390 #ifde +__REDIRECT + + +391 +ssize_t + + `__REDIRECT + ( +d +, ( +__fd +, * +__buf +, +size_t + +__nbys +, + +392 +__off64_t + +__offt +), + +393 +d64 + +__wur +; + +394 +ssize_t + + `__REDIRECT + ( +pwre +, ( +__fd +, cڡ * +__buf +, + +395 +size_t + +__nbys +, +__off64_t + +__offt +), + +396 +pwre64 + +__wur +; + +398  + #d + +d64 + + + ) + +399  + #pwre + +pwre64 + + + ) + +403 #ifde +__USE_LARGEFILE64 + + +407 +ssize_t + + $d64 + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +408 +__off64_t + +__offt + +__wur +; + +411 +ssize_t + + $pwre64 + ( +__fd +, cڡ * +__buf +, +size_t + +__n +, + +412 +__off64_t + +__offt + +__wur +; + +420  + $pe + ( +__pedes +[2] +__THROW + +__wur +; + +422 #ifde +__USE_GNU + + +425  + $pe2 + ( +__pedes +[2],  +__ags + +__THROW + +__wur +; + +435  + $m + ( +__cds + +__THROW +; + +447  + `p + ( +__cds +); + +449 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +450 || +defed + +__USE_MISC + + +455 +__ucds_t + + $um + ( +__ucds_t + +__vue +, __ucds_ +__rv +) + +456 +__THROW +; + +463  + `up + ( +__ucds_t + +__ucds +); + +472  + `u + (); + +476  + $chown + (cڡ * +__fe +, +__uid_t + +__owr +, +__gid_t + +__group +) + +477 +__THROW + + `__nnu + ((1) +__wur +; + +479 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +481  + $fchown + ( +__fd +, +__uid_t + +__owr +, +__gid_t + +__group + +__THROW + +__wur +; + +486  + $lchown + (cڡ * +__fe +, +__uid_t + +__owr +, +__gid_t + +__group +) + +487 +__THROW + + `__nnu + ((1) +__wur +; + +491 #ifde +__USE_ATFILE + + +494  + $fchowt + ( +__fd +, cڡ * +__fe +, +__uid_t + +__owr +, + +495 +__gid_t + +__group +,  +__ag +) + +496 +__THROW + + `__nnu + ((2) +__wur +; + +500  + $chd + (cڡ * +__th + +__THROW + + `__nnu + ((1) +__wur +; + +502 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +504  + $fchd + ( +__fd + +__THROW + +__wur +; + +514 * + $gcwd + (* +__buf +, +size_t + +__size + +__THROW + +__wur +; + +516 #ifdef +__USE_GNU + + +520 * + $g_cut_d_me + ( +__THROW +; + +523 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +524 || +defed + +__USE_MISC + + +528 * + $gwd + (* +__buf +) + +529 +__THROW + + `__nnu + ((1) +__ibu_dd__ + +__wur +; + +534  + $dup + ( +__fd + +__THROW + +__wur +; + +537  + $dup2 + ( +__fd +,  +__fd2 + +__THROW +; + +539 #ifde +__USE_GNU + + +542  + $dup3 + ( +__fd +,  +__fd2 +,  +__ags + +__THROW +; + +546 ** +__v +; + +547 #ifde +__USE_GNU + + +548 ** +v +; + +554  + $execve + (cڡ * +__th +, *cڡ +__gv +[], + +555 *cڡ +__vp +[] +__THROW + + `__nnu + ((1, 2)); + +557 #ifde +__USE_XOPEN2K8 + + +560  + $xecve + ( +__fd +, *cڡ +__gv +[], *cڡ +__vp +[]) + +561 +__THROW + + `__nnu + ((2)); + +566  + $execv + (cڡ * +__th +, *cڡ +__gv +[]) + +567 +__THROW + + `__nnu + ((1, 2)); + +571  + $exee + (cڡ * +__th +, cڡ * +__g +, ...) + +572 +__THROW + + `__nnu + ((1, 2)); + +576  + $exe + (cڡ * +__th +, cڡ * +__g +, ...) + +577 +__THROW + + `__nnu + ((1, 2)); + +581  + $execvp + (cڡ * +__fe +, *cڡ +__gv +[]) + +582 +__THROW + + `__nnu + ((1, 2)); + +587  + $exep + (cڡ * +__fe +, cڡ * +__g +, ...) + +588 +__THROW + + `__nnu + ((1, 2)); + +590 #ifde +__USE_GNU + + +593  + $execv + (cڡ * +__fe +, *cڡ +__gv +[], + +594 *cڡ +__vp +[]) + +595 +__THROW + + `__nnu + ((1, 2)); + +599 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +601  + $ni + ( +__c + +__THROW + +__wur +; + +606  + $_ex + ( +__us + + `__ibu__ + (( +__nܑu__ +)); + +612  + ~ + +615  + $thcf + (cڡ * +__th +,  +__me +) + +616 +__THROW + + `__nnu + ((1)); + +619  + $hcf + ( +__fd +,  +__me + +__THROW +; + +622  + $syscf + ( +__me + +__THROW +; + +624 #ifdef +__USE_POSIX2 + + +626 +size_t + + $cfr + ( +__me +, * +__buf +, +size_t + +__n + +__THROW +; + +631 +__pid_t + + $gpid + ( +__THROW +; + +634 +__pid_t + + $gid + ( +__THROW +; + +637 +__pid_t + + $gpg + ( +__THROW +; + +640 +__pid_t + + $__gpgid + ( +__pid_t + +__pid + +__THROW +; + +641 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +642 +__pid_t + + $gpgid + ( +__pid_t + +__pid + +__THROW +; + +649  + $gid + ( +__pid_t + +__pid +, __pid_ +__pgid + +__THROW +; + +651 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +663  + $g + ( +__THROW +; + +670 +__pid_t + + $tsid + ( +__THROW +; + +672 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +674 +__pid_t + + $gsid + ( +__pid_t + +__pid + +__THROW +; + +678 +__uid_t + + $guid + ( +__THROW +; + +681 +__uid_t + + $geuid + ( +__THROW +; + +684 +__gid_t + + $ggid + ( +__THROW +; + +687 +__gid_t + + $gegid + ( +__THROW +; + +692  + $ggroups + ( +__size +, +__gid_t + +__li +[] +__THROW + +__wur +; + +694 #ifdef +__USE_GNU + + +696  + $group_memb + ( +__gid_t + +__gid + +__THROW +; + +703  + $tuid + ( +__uid_t + +__uid + +__THROW + +__wur +; + +705 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +708  + $euid + ( +__uid_t + +__ruid +, __uid_ +__euid + +__THROW + +__wur +; + +711 #ifde +__USE_XOPEN2K + + +713  + $uid + ( +__uid_t + +__uid + +__THROW + +__wur +; + +720  + $tgid + ( +__gid_t + +__gid + +__THROW + +__wur +; + +722 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +725  + $egid + ( +__gid_t + +__rgid +, __gid_ +__egid + +__THROW + +__wur +; + +728 #ifde +__USE_XOPEN2K + + +730  + $gid + ( +__gid_t + +__gid + +__THROW + +__wur +; + +733 #ifde +__USE_GNU + + +736  + $gsuid + ( +__uid_t + * +__ruid +, __uid_* +__euid +, __uid_* +__suid +) + +737 +__THROW +; + +741  + $gsgid + ( +__gid_t + * +__rgid +, __gid_* +__egid +, __gid_* +__sgid +) + +742 +__THROW +; + +746  + $esuid + ( +__uid_t + +__ruid +, __uid_ +__euid +, __uid_ +__suid +) + +747 +__THROW + +__wur +; + +751  + $esgid + ( +__gid_t + +__rgid +, __gid_ +__egid +, __gid_ +__sgid +) + +752 +__THROW + +__wur +; + +759 +__pid_t + + $fk + ( +__THROWNL +; + +761 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +762 || +defed + +__USE_MISC + + +767 +__pid_t + + $vfk + ( +__THROW +; + +773 * + $yme + ( +__fd + +__THROW +; + +777  + $yme_r + ( +__fd +, * +__buf +, +size_t + +__bu +) + +778 +__THROW + + `__nnu + ((2) +__wur +; + +782  + $iy + ( +__fd + +__THROW +; + +784 #i +defed + +__USE_MISC + \ + +785 || ( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_UNIX98 +) + +788  + $y + ( +__THROW +; + +793  + $lk + (cڡ * +__om +, cڡ * +__to +) + +794 +__THROW + + `__nnu + ((1, 2) +__wur +; + +796 #ifde +__USE_ATFILE + + +799  + $lk + ( +__omfd +, cڡ * +__om +,  +__tofd +, + +800 cڡ * +__to +,  +__ags +) + +801 +__THROW + + `__nnu + ((2, 4) +__wur +; + +804 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +806  + $symlk + (cڡ * +__om +, cڡ * +__to +) + +807 +__THROW + + `__nnu + ((1, 2) +__wur +; + +812 +ssize_t + + $adlk + (cڡ * +__ri + +__th +, + +813 * +__ri + +__buf +, +size_t + +__n +) + +814 +__THROW + + `__nnu + ((1, 2) +__wur +; + +817 #ifde +__USE_ATFILE + + +819  + $symlk + (cڡ * +__om +,  +__tofd +, + +820 cڡ * +__to + +__THROW + + `__nnu + ((1, 3) +__wur +; + +823 +ssize_t + + $adlk + ( +__fd +, cڡ * +__ri + +__th +, + +824 * +__ri + +__buf +, +size_t + +__n +) + +825 +__THROW + + `__nnu + ((2, 3) +__wur +; + +829  + $uƚk + (cڡ * +__me + +__THROW + + `__nnu + ((1)); + +831 #ifde +__USE_ATFILE + + +833  + $uƚk + ( +__fd +, cڡ * +__me +,  +__ag +) + +834 +__THROW + + `__nnu + ((2)); + +838  + $rmd + (cڡ * +__th + +__THROW + + `__nnu + ((1)); + +842 +__pid_t + + $tcgpg + ( +__fd + +__THROW +; + +845  + $tcg + ( +__fd +, +__pid_t + +__pg_id + +__THROW +; + +852 * + `glog + (); + +853 #i +defed + +__USE_REENTRANT + || defed +__USE_POSIX199506 + + +860  + $glog_r + (* +__me +, +size_t + +__me_n + + `__nnu + ((1)); + +863 #ifdef +__USE_MISC + + +865  + $og + (cڡ * +__me + +__THROW + + `__nnu + ((1)); + +869 #ifdef +__USE_POSIX2 + + +873  + #__ed_gt + + + ) + +874  + ~ + +878 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +882  + $ghome + (* +__me +, +size_t + +__n + +__THROW + + `__nnu + ((1)); + +886 #i +defed + +__USE_MISC + + +889  + $thome + (cڡ * +__me +, +size_t + +__n +) + +890 +__THROW + + `__nnu + ((1) +__wur +; + +894  + $thoid + ( +__id + +__THROW + +__wur +; + +900  + $gdomame + (* +__me +, +size_t + +__n +) + +901 +__THROW + + `__nnu + ((1) +__wur +; + +902  + $tdomame + (cڡ * +__me +, +size_t + +__n +) + +903 +__THROW + + `__nnu + ((1) +__wur +; + +909  + $vhgup + ( +__THROW +; + +912  + $voke + (cڡ * +__fe + +__THROW + + `__nnu + ((1) +__wur +; + +920  + $of + (* +__me_bufr +, +size_t + +__size +, + +921 +size_t + +__offt +,  +__s +) + +922 +__THROW + + `__nnu + ((1)); + +928  + $ac + (cڡ * +__me + +__THROW +; + +932 * + $gurshl + ( +__THROW +; + +933  + $durshl + ( +__THROW +; + +934  + $turshl + ( +__THROW +; + +940  + $dm + ( +__nochd +,  +__noo + +__THROW + +__wur +; + +944 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +947  + $chro + (cڡ * +__th + +__THROW + + `__nnu + ((1) +__wur +; + +951 * + $gss + (cڡ * +__om + + `__nnu + ((1)); + +959  + `fsync + ( +__fd +); + +962 #ifde +__USE_GNU + + +965  + $syncfs + ( +__fd + +__THROW +; + +969 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +972  + `ghoid + (); + +975  + $sync + ( +__THROW +; + +978 #i +defed + +__USE_MISC + || !defed +__USE_XOPEN2K + + +981  + $ggesize + ( +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +986  + $gdbsize + ( +__THROW +; + +992 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +995 #ide +__USE_FILE_OFFSET64 + + +996  + $un + (cڡ * +__fe +, +__off_t + +__ngth +) + +997 +__THROW + + `__nnu + ((1) +__wur +; + +999 #ifde +__REDIRECT_NTH + + +1000  + `__REDIRECT_NTH + ( +un +, + +1001 (cڡ * +__fe +, +__off64_t + +__ngth +), + +1002 +un64 + + `__nnu + ((1) +__wur +; + +1004  + #un + +un64 + + + ) + +1007 #ifde +__USE_LARGEFILE64 + + +1008  + $un64 + (cڡ * +__fe +, +__off64_t + +__ngth +) + +1009 +__THROW + + `__nnu + ((1) +__wur +; + +1014 #i +defed + +__USE_POSIX199309 + \ + +1015 || +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +1018 #ide +__USE_FILE_OFFSET64 + + +1019  + $run + ( +__fd +, +__off_t + +__ngth + +__THROW + +__wur +; + +1021 #ifde +__REDIRECT_NTH + + +1022  + `__REDIRECT_NTH + ( +run +, ( +__fd +, +__off64_t + +__ngth +), + +1023 +run64 + +__wur +; + +1025  + #run + +run64 + + + ) + +1028 #ifde +__USE_LARGEFILE64 + + +1029  + $run64 + ( +__fd +, +__off64_t + +__ngth + +__THROW + +__wur +; + +1035 #i( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K +) \ + +1036 || +defed + +__USE_MISC + + +1040  + $brk + (* +__addr + +__THROW + +__wur +; + +1046 * + $sbrk + ( +_t + +__d + +__THROW +; + +1050 #ifde +__USE_MISC + + +1061  + $sys + ( +__syo +, ... +__THROW +; + +1066 #i( +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED +&& !defed +F_LOCK + + +1078  + #F_ULOCK + 0 + + ) + +1079  + #F_LOCK + 1 + + ) + +1080  + #F_TLOCK + 2 + + ) + +1081  + #F_TEST + 3 + + ) + +1083 #ide +__USE_FILE_OFFSET64 + + +1084  + $lockf + ( +__fd +,  +__cmd +, +__off_t + +__n + +__wur +; + +1086 #ifde +__REDIRECT + + +1087  + `__REDIRECT + ( +lockf +, ( +__fd +,  +__cmd +, +__off64_t + +__n +), + +1088 +lockf64 + +__wur +; + +1090  + #lockf + +lockf64 + + + ) + +1093 #ifde +__USE_LARGEFILE64 + + +1094  + $lockf64 + ( +__fd +,  +__cmd +, +__off64_t + +__n + +__wur +; + +1099 #ifde +__USE_GNU + + +1104  + #TEMP_FAILURE_RETRY +( +exessi +) \ + +1105 ( +__exnsi__ + \ + +1106 ({  +__su +; \ + +1107 d +__su + = (( +exessi +); \ + +1108  +__su + =-1L && +o + = +EINTR +); \ + +1109 +__su +; + } +})) + + ) + +1112 #i +defed + +__USE_POSIX199309 + || defed +__USE_UNIX98 + + +1115  +fdasync + ( +__fdes +); + +1121 #ifdef +__USE_XOPEN + + +1123 * + $y + (cڡ * +__key +, cڡ * +__ +) + +1124 +__THROW + + `__nnu + ((1, 2)); + +1128  + $y + (* +__glibc_block +,  +__edag +) + +1129 +__THROW + + `__nnu + ((1)); + +1136  + $swab + (cڡ * +__ri + +__om +, *__ri +__to +, + +1137 +ssize_t + +__n + +__THROW + + `__nnu + ((1, 2)); + +1143 #i +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K + + +1145 * + $mid + (* +__s + +__THROW +; + +1150 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +1151  + ~ + +1154 +__END_DECLS + + + @/usr/include/alloca.h + +18 #idef +_ALLOCA_H + + +19  + #_ALLOCA_H + 1 + + ) + +21  + ~ + +23  + #__ed_size_t + + + ) + +24  + ~ + +26 + g__BEGIN_DECLS + + +29 #unde +lo + + +32 * + $lo + ( +size_t + +__size + +__THROW +; + +34 #ifdef +__GNUC__ + + +35  + #lo +( +size + + `__but_lo + (size) + + ) + +38 +__END_DECLS + + + @/usr/include/bits/byteswap.h + +19 #i! +defed + +_BYTESWAP_H + && !defed +_NETINET_IN_H + && !defed +_ENDIAN_H + + +23 #ide +_BITS_BYTESWAP_H + + +24  + #_BITS_BYTESWAP_H + 1 + + ) + +26  + ~ + +27  + ~ + +28  + ~ + +31  + #__bsw_cڡt_16 +( +x +) \ + +32 (((((( +x +>> 8& 0xff| (((x& 0xff<< 8))) + + ) + +35  + ~ + +38  + #__bsw_cڡt_32 +( +x +) \ + +39 (((( +x +) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ + +40 ((( +x +& 0x0000ff00<< 8| (((x& 0x000000ff<< 24)) + + ) + +42 #ifde +__GNUC__ + + +43 #i +__GNUC_PREREQ + (4, 3) + +44  +__le +  + +45 + $__bsw_32 + ( +__bsx +) + +47  + `__but_bsw32 + ( +__bsx +); + +48 + } +} + +49 #i +__GNUC__ + >= 2 + +50 #i +__WORDSIZE + =64 || ( +defed + +__i486__ + || defed +__ium__ + \ + +51 || +defed + + g__iumo__ + || defed + g__ium4__ + \ + +52 || +defed + + g__k8__ + || defed + g__hl__ + \ + +53 || +defed + + g__k6__ + || defed + g__noca__ + \ + +54 || +defed + + g__ce2__ + || defed + g__geode__ + \ + +55 || +defed + + g__amdm10__ +) + +58  + #__bsw_32 +( +x +) \ + +59 ( +__exnsi__ + \ + +60 ({  +__v +, +__x + = ( +x +); \ + +61 i( + `__but_cڡt_p + ( +__x +)) \ + +62 +__v + = + `__bsw_cڡt_32 + ( +__x +); \ + +64 + `__asm__ + ("bsw %0" : "" ( +__v +: "0" ( +__x +)); \ + +65 +__v +; })) + + ) + +67  + #__bsw_32 +( +x +) \ + +68 ( +__exnsi__ + \ + +69 ({  +__v +, +__x + = ( +x +); \ + +70 i( + `__but_cڡt_p + ( +__x +)) \ + +71 +__v + = + `__bsw_cڡt_32 + ( +__x +); \ + +73 + `__asm__ + ("rorw $8, %w0;" \ + +76 : "" ( +__v +) \ + +77 : "0" ( +__x +) \ + +79 +__v +; })) + + ) + +82  + #__bsw_32 +( +x +) \ + +83 ( +__exnsi__ + \ + +84 ({  +__x + = ( +x +); + `__bsw_cڡt_32 + (__x); })) + + ) + +87  +__le +  + +88 + $__bsw_32 + ( +__bsx +) + +90  + `__bsw_cڡt_32 + ( +__bsx +); + +91 + } +} + +95 #i +__GNUC_PREREQ + (2, 0) + +97  + #__bsw_cڡt_64 +( +x +) \ + +98 ( + `__exnsi__ + (((( +x +) & 0xff00000000000000ull) >> 56) \ + +99 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +100 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +101 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +102 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +103 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +104 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +105 | ((( +x +& 0x00000000000000ffu<< 56))) + + ) + +107 #i +__GNUC_PREREQ + (4, 3) + +108  +__le + +__ut64_t + + +109 + $__bsw_64 + ( +__ut64_t + +__bsx +) + +111  + `__but_bsw64 + ( +__bsx +); + +112 + } +} + +113 #i +__WORDSIZE + == 64 + +114  + #__bsw_64 +( +x +) \ + +115 ( +__exnsi__ + \ + +116 ({ +__ut64_t + +__v +, +__x + = ( +x +); \ + +117 i( + `__but_cڡt_p + ( +__x +)) \ + +118 +__v + = + `__bsw_cڡt_64 + ( +__x +); \ + +120 + `__asm__ + ("bsw %q0" : "" ( +__v +: "0" ( +__x +)); \ + +121 +__v +; })) + + ) + +123  + #__bsw_64 +( +x +) \ + +124 ( +__exnsi__ + \ + +125 ({ uni { +__exnsi__ + +__ut64_t + +__ +; \ + +126  +__l +[2]; } +__w +, +__r +; \ + +127 i( + `__but_cڡt_p + ( +x +)) \ + +128 +__r +. +__ + = + `__bsw_cڡt_64 + ( +x +); \ + +131 +__w +. +__ + = ( +x +); \ + +132 +__r +. +__l +[0] = + `__bsw_32 + ( +__w +.__l[1]); \ + +133 +__r +. +__l +[1] = + `__bsw_32 + ( +__w +.__l[0]); \ + +135 +__r +. +__ +; })) + + ) + +138  + #__bsw_cڡt_64 +( +x +) \ + +139 (((( +x +) & 0xff00000000000000ull) >> 56) \ + +140 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +141 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +142 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +143 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +144 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +145 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +146 | ((( +x +& 0x00000000000000ffu<< 56)) + + ) + +148  +__le + +__ut64_t + + +149 + $__bsw_64 + ( +__ut64_t + +__bsx +) + +151  + `__bsw_cڡt_64 + ( +__bsx +); + +152 + } +} + + @/usr/include/bits/confname.h + +19 #ide +_UNISTD_H + + +26 + m_PC_LINK_MAX +, + +27  + #_PC_LINK_MAX + +_PC_LINK_MAX + + + ) + +28 + m_PC_MAX_CANON +, + +29  + #_PC_MAX_CANON + +_PC_MAX_CANON + + + ) + +30 + m_PC_MAX_INPUT +, + +31  + #_PC_MAX_INPUT + +_PC_MAX_INPUT + + + ) + +32 + m_PC_NAME_MAX +, + +33  + #_PC_NAME_MAX + +_PC_NAME_MAX + + + ) + +34 + m_PC_PATH_MAX +, + +35  + #_PC_PATH_MAX + +_PC_PATH_MAX + + + ) + +36 + m_PC_PIPE_BUF +, + +37  + #_PC_PIPE_BUF + +_PC_PIPE_BUF + + + ) + +38 + m_PC_CHOWN_RESTRICTED +, + +39  + #_PC_CHOWN_RESTRICTED + +_PC_CHOWN_RESTRICTED + + + ) + +40 + m_PC_NO_TRUNC +, + +41  + #_PC_NO_TRUNC + +_PC_NO_TRUNC + + + ) + +42 + m_PC_VDISABLE +, + +43  + #_PC_VDISABLE + +_PC_VDISABLE + + + ) + +44 + m_PC_SYNC_IO +, + +45  + #_PC_SYNC_IO + +_PC_SYNC_IO + + + ) + +46 + m_PC_ASYNC_IO +, + +47  + #_PC_ASYNC_IO + +_PC_ASYNC_IO + + + ) + +48 + m_PC_PRIO_IO +, + +49  + #_PC_PRIO_IO + +_PC_PRIO_IO + + + ) + +50 + m_PC_SOCK_MAXBUF +, + +51  + #_PC_SOCK_MAXBUF + +_PC_SOCK_MAXBUF + + + ) + +52 + m_PC_FILESIZEBITS +, + +53  + #_PC_FILESIZEBITS + +_PC_FILESIZEBITS + + + ) + +54 + m_PC_REC_INCR_XFER_SIZE +, + +55  + #_PC_REC_INCR_XFER_SIZE + +_PC_REC_INCR_XFER_SIZE + + + ) + +56 + m_PC_REC_MAX_XFER_SIZE +, + +57  + #_PC_REC_MAX_XFER_SIZE + +_PC_REC_MAX_XFER_SIZE + + + ) + +58 + m_PC_REC_MIN_XFER_SIZE +, + +59  + #_PC_REC_MIN_XFER_SIZE + +_PC_REC_MIN_XFER_SIZE + + + ) + +60 + m_PC_REC_XFER_ALIGN +, + +61  + #_PC_REC_XFER_ALIGN + +_PC_REC_XFER_ALIGN + + + ) + +62 + m_PC_ALLOC_SIZE_MIN +, + +63  + #_PC_ALLOC_SIZE_MIN + +_PC_ALLOC_SIZE_MIN + + + ) + +64 + m_PC_SYMLINK_MAX +, + +65  + #_PC_SYMLINK_MAX + +_PC_SYMLINK_MAX + + + ) + +66 + m_PC_2_SYMLINKS + + +67  + #_PC_2_SYMLINKS + +_PC_2_SYMLINKS + + + ) + +73 + m_SC_ARG_MAX +, + +74  + #_SC_ARG_MAX + +_SC_ARG_MAX + + + ) + +75 + m_SC_CHILD_MAX +, + +76  + #_SC_CHILD_MAX + +_SC_CHILD_MAX + + + ) + +77 + m_SC_CLK_TCK +, + +78  + #_SC_CLK_TCK + +_SC_CLK_TCK + + + ) + +79 + m_SC_NGROUPS_MAX +, + +80  + #_SC_NGROUPS_MAX + +_SC_NGROUPS_MAX + + + ) + +81 + m_SC_OPEN_MAX +, + +82  + #_SC_OPEN_MAX + +_SC_OPEN_MAX + + + ) + +83 + m_SC_STREAM_MAX +, + +84  + #_SC_STREAM_MAX + +_SC_STREAM_MAX + + + ) + +85 + m_SC_TZNAME_MAX +, + +86  + #_SC_TZNAME_MAX + +_SC_TZNAME_MAX + + + ) + +87 + m_SC_JOB_CONTROL +, + +88  + #_SC_JOB_CONTROL + +_SC_JOB_CONTROL + + + ) + +89 + m_SC_SAVED_IDS +, + +90  + #_SC_SAVED_IDS + +_SC_SAVED_IDS + + + ) + +91 + m_SC_REALTIME_SIGNALS +, + +92  + #_SC_REALTIME_SIGNALS + +_SC_REALTIME_SIGNALS + + + ) + +93 + m_SC_PRIORITY_SCHEDULING +, + +94  + #_SC_PRIORITY_SCHEDULING + +_SC_PRIORITY_SCHEDULING + + + ) + +95 + m_SC_TIMERS +, + +96  + #_SC_TIMERS + +_SC_TIMERS + + + ) + +97 + m_SC_ASYNCHRONOUS_IO +, + +98  + #_SC_ASYNCHRONOUS_IO + +_SC_ASYNCHRONOUS_IO + + + ) + +99 + m_SC_PRIORITIZED_IO +, + +100  + #_SC_PRIORITIZED_IO + +_SC_PRIORITIZED_IO + + + ) + +101 + m_SC_SYNCHRONIZED_IO +, + +102  + #_SC_SYNCHRONIZED_IO + +_SC_SYNCHRONIZED_IO + + + ) + +103 + m_SC_FSYNC +, + +104  + #_SC_FSYNC + +_SC_FSYNC + + + ) + +105 + m_SC_MAPPED_FILES +, + +106  + #_SC_MAPPED_FILES + +_SC_MAPPED_FILES + + + ) + +107 + m_SC_MEMLOCK +, + +108  + #_SC_MEMLOCK + +_SC_MEMLOCK + + + ) + +109 + m_SC_MEMLOCK_RANGE +, + +110  + #_SC_MEMLOCK_RANGE + +_SC_MEMLOCK_RANGE + + + ) + +111 + m_SC_MEMORY_PROTECTION +, + +112  + #_SC_MEMORY_PROTECTION + +_SC_MEMORY_PROTECTION + + + ) + +113 + m_SC_MESSAGE_PASSING +, + +114  + #_SC_MESSAGE_PASSING + +_SC_MESSAGE_PASSING + + + ) + +115 + m_SC_SEMAPHORES +, + +116  + #_SC_SEMAPHORES + +_SC_SEMAPHORES + + + ) + +117 + m_SC_SHARED_MEMORY_OBJECTS +, + +118  + #_SC_SHARED_MEMORY_OBJECTS + +_SC_SHARED_MEMORY_OBJECTS + + + ) + +119 + m_SC_AIO_LISTIO_MAX +, + +120  + #_SC_AIO_LISTIO_MAX + +_SC_AIO_LISTIO_MAX + + + ) + +121 + m_SC_AIO_MAX +, + +122  + #_SC_AIO_MAX + +_SC_AIO_MAX + + + ) + +123 + m_SC_AIO_PRIO_DELTA_MAX +, + +124  + #_SC_AIO_PRIO_DELTA_MAX + +_SC_AIO_PRIO_DELTA_MAX + + + ) + +125 + m_SC_DELAYTIMER_MAX +, + +126  + #_SC_DELAYTIMER_MAX + +_SC_DELAYTIMER_MAX + + + ) + +127 + m_SC_MQ_OPEN_MAX +, + +128  + #_SC_MQ_OPEN_MAX + +_SC_MQ_OPEN_MAX + + + ) + +129 + m_SC_MQ_PRIO_MAX +, + +130  + #_SC_MQ_PRIO_MAX + +_SC_MQ_PRIO_MAX + + + ) + +131 + m_SC_VERSION +, + +132  + #_SC_VERSION + +_SC_VERSION + + + ) + +133 + m_SC_PAGESIZE +, + +134  + #_SC_PAGESIZE + +_SC_PAGESIZE + + + ) + +135  + #_SC_PAGE_SIZE + +_SC_PAGESIZE + + + ) + +136 + m_SC_RTSIG_MAX +, + +137  + #_SC_RTSIG_MAX + +_SC_RTSIG_MAX + + + ) + +138 + m_SC_SEM_NSEMS_MAX +, + +139  + #_SC_SEM_NSEMS_MAX + +_SC_SEM_NSEMS_MAX + + + ) + +140 + m_SC_SEM_VALUE_MAX +, + +141  + #_SC_SEM_VALUE_MAX + +_SC_SEM_VALUE_MAX + + + ) + +142 + m_SC_SIGQUEUE_MAX +, + +143  + #_SC_SIGQUEUE_MAX + +_SC_SIGQUEUE_MAX + + + ) + +144 + m_SC_TIMER_MAX +, + +145  + #_SC_TIMER_MAX + +_SC_TIMER_MAX + + + ) + +149 + m_SC_BC_BASE_MAX +, + +150  + #_SC_BC_BASE_MAX + +_SC_BC_BASE_MAX + + + ) + +151 + m_SC_BC_DIM_MAX +, + +152  + #_SC_BC_DIM_MAX + +_SC_BC_DIM_MAX + + + ) + +153 + m_SC_BC_SCALE_MAX +, + +154  + #_SC_BC_SCALE_MAX + +_SC_BC_SCALE_MAX + + + ) + +155 + m_SC_BC_STRING_MAX +, + +156  + #_SC_BC_STRING_MAX + +_SC_BC_STRING_MAX + + + ) + +157 + m_SC_COLL_WEIGHTS_MAX +, + +158  + #_SC_COLL_WEIGHTS_MAX + +_SC_COLL_WEIGHTS_MAX + + + ) + +159 + m_SC_EQUIV_CLASS_MAX +, + +160  + #_SC_EQUIV_CLASS_MAX + +_SC_EQUIV_CLASS_MAX + + + ) + +161 + m_SC_EXPR_NEST_MAX +, + +162  + #_SC_EXPR_NEST_MAX + +_SC_EXPR_NEST_MAX + + + ) + +163 + m_SC_LINE_MAX +, + +164  + #_SC_LINE_MAX + +_SC_LINE_MAX + + + ) + +165 + m_SC_RE_DUP_MAX +, + +166  + #_SC_RE_DUP_MAX + +_SC_RE_DUP_MAX + + + ) + +167 + m_SC_CHARCLASS_NAME_MAX +, + +168  + #_SC_CHARCLASS_NAME_MAX + +_SC_CHARCLASS_NAME_MAX + + + ) + +170 + m_SC_2_VERSION +, + +171  + #_SC_2_VERSION + +_SC_2_VERSION + + + ) + +172 + m_SC_2_C_BIND +, + +173  + #_SC_2_C_BIND + +_SC_2_C_BIND + + + ) + +174 + m_SC_2_C_DEV +, + +175  + #_SC_2_C_DEV + +_SC_2_C_DEV + + + ) + +176 + m_SC_2_FORT_DEV +, + +177  + #_SC_2_FORT_DEV + +_SC_2_FORT_DEV + + + ) + +178 + m_SC_2_FORT_RUN +, + +179  + #_SC_2_FORT_RUN + +_SC_2_FORT_RUN + + + ) + +180 + m_SC_2_SW_DEV +, + +181  + #_SC_2_SW_DEV + +_SC_2_SW_DEV + + + ) + +182 + m_SC_2_LOCALEDEF +, + +183  + #_SC_2_LOCALEDEF + +_SC_2_LOCALEDEF + + + ) + +185 + m_SC_PII +, + +186  + #_SC_PII + +_SC_PII + + + ) + +187 + m_SC_PII_XTI +, + +188  + #_SC_PII_XTI + +_SC_PII_XTI + + + ) + +189 + m_SC_PII_SOCKET +, + +190  + #_SC_PII_SOCKET + +_SC_PII_SOCKET + + + ) + +191 + m_SC_PII_INTERNET +, + +192  + #_SC_PII_INTERNET + +_SC_PII_INTERNET + + + ) + +193 + m_SC_PII_OSI +, + +194  + #_SC_PII_OSI + +_SC_PII_OSI + + + ) + +195 + m_SC_POLL +, + +196  + #_SC_POLL + +_SC_POLL + + + ) + +197 + m_SC_SELECT +, + +198  + #_SC_SELECT + +_SC_SELECT + + + ) + +199 + m_SC_UIO_MAXIOV +, + +200  + #_SC_UIO_MAXIOV + +_SC_UIO_MAXIOV + + + ) + +201 + m_SC_IOV_MAX + = +_SC_UIO_MAXIOV +, + +202  + #_SC_IOV_MAX + +_SC_IOV_MAX + + + ) + +203 + m_SC_PII_INTERNET_STREAM +, + +204  + #_SC_PII_INTERNET_STREAM + +_SC_PII_INTERNET_STREAM + + + ) + +205 + m_SC_PII_INTERNET_DGRAM +, + +206  + #_SC_PII_INTERNET_DGRAM + +_SC_PII_INTERNET_DGRAM + + + ) + +207 + m_SC_PII_OSI_COTS +, + +208  + #_SC_PII_OSI_COTS + +_SC_PII_OSI_COTS + + + ) + +209 + m_SC_PII_OSI_CLTS +, + +210  + #_SC_PII_OSI_CLTS + +_SC_PII_OSI_CLTS + + + ) + +211 + m_SC_PII_OSI_M +, + +212  + #_SC_PII_OSI_M + +_SC_PII_OSI_M + + + ) + +213 + m_SC_T_IOV_MAX +, + +214  + #_SC_T_IOV_MAX + +_SC_T_IOV_MAX + + + ) + +217 + m_SC_THREADS +, + +218  + #_SC_THREADS + +_SC_THREADS + + + ) + +219 + m_SC_THREAD_SAFE_FUNCTIONS +, + +220  + #_SC_THREAD_SAFE_FUNCTIONS + +_SC_THREAD_SAFE_FUNCTIONS + + + ) + +221 + m_SC_GETGR_R_SIZE_MAX +, + +222  + #_SC_GETGR_R_SIZE_MAX + +_SC_GETGR_R_SIZE_MAX + + + ) + +223 + m_SC_GETPW_R_SIZE_MAX +, + +224  + #_SC_GETPW_R_SIZE_MAX + +_SC_GETPW_R_SIZE_MAX + + + ) + +225 + m_SC_LOGIN_NAME_MAX +, + +226  + #_SC_LOGIN_NAME_MAX + +_SC_LOGIN_NAME_MAX + + + ) + +227 + m_SC_TTY_NAME_MAX +, + +228  + #_SC_TTY_NAME_MAX + +_SC_TTY_NAME_MAX + + + ) + +229 + m_SC_THREAD_DESTRUCTOR_ITERATIONS +, + +230  + #_SC_THREAD_DESTRUCTOR_ITERATIONS + +_SC_THREAD_DESTRUCTOR_ITERATIONS + + + ) + +231 + m_SC_THREAD_KEYS_MAX +, + +232  + #_SC_THREAD_KEYS_MAX + +_SC_THREAD_KEYS_MAX + + + ) + +233 + m_SC_THREAD_STACK_MIN +, + +234  + #_SC_THREAD_STACK_MIN + +_SC_THREAD_STACK_MIN + + + ) + +235 + m_SC_THREAD_THREADS_MAX +, + +236  + #_SC_THREAD_THREADS_MAX + +_SC_THREAD_THREADS_MAX + + + ) + +237 + m_SC_THREAD_ATTR_STACKADDR +, + +238  + #_SC_THREAD_ATTR_STACKADDR + +_SC_THREAD_ATTR_STACKADDR + + + ) + +239 + m_SC_THREAD_ATTR_STACKSIZE +, + +240  + #_SC_THREAD_ATTR_STACKSIZE + +_SC_THREAD_ATTR_STACKSIZE + + + ) + +241 + m_SC_THREAD_PRIORITY_SCHEDULING +, + +242  + #_SC_THREAD_PRIORITY_SCHEDULING + +_SC_THREAD_PRIORITY_SCHEDULING + + + ) + +243 + m_SC_THREAD_PRIO_INHERIT +, + +244  + #_SC_THREAD_PRIO_INHERIT + +_SC_THREAD_PRIO_INHERIT + + + ) + +245 + m_SC_THREAD_PRIO_PROTECT +, + +246  + #_SC_THREAD_PRIO_PROTECT + +_SC_THREAD_PRIO_PROTECT + + + ) + +247 + m_SC_THREAD_PROCESS_SHARED +, + +248  + #_SC_THREAD_PROCESS_SHARED + +_SC_THREAD_PROCESS_SHARED + + + ) + +250 + m_SC_NPROCESSORS_CONF +, + +251  + #_SC_NPROCESSORS_CONF + +_SC_NPROCESSORS_CONF + + + ) + +252 + m_SC_NPROCESSORS_ONLN +, + +253  + #_SC_NPROCESSORS_ONLN + +_SC_NPROCESSORS_ONLN + + + ) + +254 + m_SC_PHYS_PAGES +, + +255  + #_SC_PHYS_PAGES + +_SC_PHYS_PAGES + + + ) + +256 + m_SC_AVPHYS_PAGES +, + +257  + #_SC_AVPHYS_PAGES + +_SC_AVPHYS_PAGES + + + ) + +258 + m_SC_ATEXIT_MAX +, + +259  + #_SC_ATEXIT_MAX + +_SC_ATEXIT_MAX + + + ) + +260 + m_SC_PASS_MAX +, + +261  + #_SC_PASS_MAX + +_SC_PASS_MAX + + + ) + +263 + m_SC_XOPEN_VERSION +, + +264  + #_SC_XOPEN_VERSION + +_SC_XOPEN_VERSION + + + ) + +265 + m_SC_XOPEN_XCU_VERSION +, + +266  + #_SC_XOPEN_XCU_VERSION + +_SC_XOPEN_XCU_VERSION + + + ) + +267 + m_SC_XOPEN_UNIX +, + +268  + #_SC_XOPEN_UNIX + +_SC_XOPEN_UNIX + + + ) + +269 + m_SC_XOPEN_CRYPT +, + +270  + #_SC_XOPEN_CRYPT + +_SC_XOPEN_CRYPT + + + ) + +271 + m_SC_XOPEN_ENH_I18N +, + +272  + #_SC_XOPEN_ENH_I18N + +_SC_XOPEN_ENH_I18N + + + ) + +273 + m_SC_XOPEN_SHM +, + +274  + #_SC_XOPEN_SHM + +_SC_XOPEN_SHM + + + ) + +276 + m_SC_2_CHAR_TERM +, + +277  + #_SC_2_CHAR_TERM + +_SC_2_CHAR_TERM + + + ) + +278 + m_SC_2_C_VERSION +, + +279  + #_SC_2_C_VERSION + +_SC_2_C_VERSION + + + ) + +280 + m_SC_2_UPE +, + +281  + #_SC_2_UPE + +_SC_2_UPE + + + ) + +283 + m_SC_XOPEN_XPG2 +, + +284  + #_SC_XOPEN_XPG2 + +_SC_XOPEN_XPG2 + + + ) + +285 + m_SC_XOPEN_XPG3 +, + +286  + #_SC_XOPEN_XPG3 + +_SC_XOPEN_XPG3 + + + ) + +287 + m_SC_XOPEN_XPG4 +, + +288  + #_SC_XOPEN_XPG4 + +_SC_XOPEN_XPG4 + + + ) + +290 + m_SC_CHAR_BIT +, + +291  + #_SC_CHAR_BIT + +_SC_CHAR_BIT + + + ) + +292 + m_SC_CHAR_MAX +, + +293  + #_SC_CHAR_MAX + +_SC_CHAR_MAX + + + ) + +294 + m_SC_CHAR_MIN +, + +295  + #_SC_CHAR_MIN + +_SC_CHAR_MIN + + + ) + +296 + m_SC_INT_MAX +, + +297  + #_SC_INT_MAX + +_SC_INT_MAX + + + ) + +298 + m_SC_INT_MIN +, + +299  + #_SC_INT_MIN + +_SC_INT_MIN + + + ) + +300 + m_SC_LONG_BIT +, + +301  + #_SC_LONG_BIT + +_SC_LONG_BIT + + + ) + +302 + m_SC_WORD_BIT +, + +303  + #_SC_WORD_BIT + +_SC_WORD_BIT + + + ) + +304 + m_SC_MB_LEN_MAX +, + +305  + #_SC_MB_LEN_MAX + +_SC_MB_LEN_MAX + + + ) + +306 + m_SC_NZERO +, + +307  + #_SC_NZERO + +_SC_NZERO + + + ) + +308 + m_SC_SSIZE_MAX +, + +309  + #_SC_SSIZE_MAX + +_SC_SSIZE_MAX + + + ) + +310 + m_SC_SCHAR_MAX +, + +311  + #_SC_SCHAR_MAX + +_SC_SCHAR_MAX + + + ) + +312 + m_SC_SCHAR_MIN +, + +313  + #_SC_SCHAR_MIN + +_SC_SCHAR_MIN + + + ) + +314 + m_SC_SHRT_MAX +, + +315  + #_SC_SHRT_MAX + +_SC_SHRT_MAX + + + ) + +316 + m_SC_SHRT_MIN +, + +317  + #_SC_SHRT_MIN + +_SC_SHRT_MIN + + + ) + +318 + m_SC_UCHAR_MAX +, + +319  + #_SC_UCHAR_MAX + +_SC_UCHAR_MAX + + + ) + +320 + m_SC_UINT_MAX +, + +321  + #_SC_UINT_MAX + +_SC_UINT_MAX + + + ) + +322 + m_SC_ULONG_MAX +, + +323  + #_SC_ULONG_MAX + +_SC_ULONG_MAX + + + ) + +324 + m_SC_USHRT_MAX +, + +325  + #_SC_USHRT_MAX + +_SC_USHRT_MAX + + + ) + +327 + m_SC_NL_ARGMAX +, + +328  + #_SC_NL_ARGMAX + +_SC_NL_ARGMAX + + + ) + +329 + m_SC_NL_LANGMAX +, + +330  + #_SC_NL_LANGMAX + +_SC_NL_LANGMAX + + + ) + +331 + m_SC_NL_MSGMAX +, + +332  + #_SC_NL_MSGMAX + +_SC_NL_MSGMAX + + + ) + +333 + m_SC_NL_NMAX +, + +334  + #_SC_NL_NMAX + +_SC_NL_NMAX + + + ) + +335 + m_SC_NL_SETMAX +, + +336  + #_SC_NL_SETMAX + +_SC_NL_SETMAX + + + ) + +337 + m_SC_NL_TEXTMAX +, + +338  + #_SC_NL_TEXTMAX + +_SC_NL_TEXTMAX + + + ) + +340 + m_SC_XBS5_ILP32_OFF32 +, + +341  + #_SC_XBS5_ILP32_OFF32 + +_SC_XBS5_ILP32_OFF32 + + + ) + +342 + m_SC_XBS5_ILP32_OFFBIG +, + +343  + #_SC_XBS5_ILP32_OFFBIG + +_SC_XBS5_ILP32_OFFBIG + + + ) + +344 + m_SC_XBS5_LP64_OFF64 +, + +345  + #_SC_XBS5_LP64_OFF64 + +_SC_XBS5_LP64_OFF64 + + + ) + +346 + m_SC_XBS5_LPBIG_OFFBIG +, + +347  + #_SC_XBS5_LPBIG_OFFBIG + +_SC_XBS5_LPBIG_OFFBIG + + + ) + +349 + m_SC_XOPEN_LEGACY +, + +350  + #_SC_XOPEN_LEGACY + +_SC_XOPEN_LEGACY + + + ) + +351 + m_SC_XOPEN_REALTIME +, + +352  + #_SC_XOPEN_REALTIME + +_SC_XOPEN_REALTIME + + + ) + +353 + m_SC_XOPEN_REALTIME_THREADS +, + +354  + #_SC_XOPEN_REALTIME_THREADS + +_SC_XOPEN_REALTIME_THREADS + + + ) + +356 + m_SC_ADVISORY_INFO +, + +357  + #_SC_ADVISORY_INFO + +_SC_ADVISORY_INFO + + + ) + +358 + m_SC_BARRIERS +, + +359  + #_SC_BARRIERS + +_SC_BARRIERS + + + ) + +360 + m_SC_BASE +, + +361  + #_SC_BASE + +_SC_BASE + + + ) + +362 + m_SC_C_LANG_SUPPORT +, + +363  + #_SC_C_LANG_SUPPORT + +_SC_C_LANG_SUPPORT + + + ) + +364 + m_SC_C_LANG_SUPPORT_R +, + +365  + #_SC_C_LANG_SUPPORT_R + +_SC_C_LANG_SUPPORT_R + + + ) + +366 + m_SC_CLOCK_SELECTION +, + +367  + #_SC_CLOCK_SELECTION + +_SC_CLOCK_SELECTION + + + ) + +368 + m_SC_CPUTIME +, + +369  + #_SC_CPUTIME + +_SC_CPUTIME + + + ) + +370 + m_SC_THREAD_CPUTIME +, + +371  + #_SC_THREAD_CPUTIME + +_SC_THREAD_CPUTIME + + + ) + +372 + m_SC_DEVICE_IO +, + +373  + #_SC_DEVICE_IO + +_SC_DEVICE_IO + + + ) + +374 + m_SC_DEVICE_SPECIFIC +, + +375  + #_SC_DEVICE_SPECIFIC + +_SC_DEVICE_SPECIFIC + + + ) + +376 + m_SC_DEVICE_SPECIFIC_R +, + +377  + #_SC_DEVICE_SPECIFIC_R + +_SC_DEVICE_SPECIFIC_R + + + ) + +378 + m_SC_FD_MGMT +, + +379  + #_SC_FD_MGMT + +_SC_FD_MGMT + + + ) + +380 + m_SC_FIFO +, + +381  + #_SC_FIFO + +_SC_FIFO + + + ) + +382 + m_SC_PIPE +, + +383  + #_SC_PIPE + +_SC_PIPE + + + ) + +384 + m_SC_FILE_ATTRIBUTES +, + +385  + #_SC_FILE_ATTRIBUTES + +_SC_FILE_ATTRIBUTES + + + ) + +386 + m_SC_FILE_LOCKING +, + +387  + #_SC_FILE_LOCKING + +_SC_FILE_LOCKING + + + ) + +388 + m_SC_FILE_SYSTEM +, + +389  + #_SC_FILE_SYSTEM + +_SC_FILE_SYSTEM + + + ) + +390 + m_SC_MONOTONIC_CLOCK +, + +391  + #_SC_MONOTONIC_CLOCK + +_SC_MONOTONIC_CLOCK + + + ) + +392 + m_SC_MULTI_PROCESS +, + +393  + #_SC_MULTI_PROCESS + +_SC_MULTI_PROCESS + + + ) + +394 + m_SC_SINGLE_PROCESS +, + +395  + #_SC_SINGLE_PROCESS + +_SC_SINGLE_PROCESS + + + ) + +396 + m_SC_NETWORKING +, + +397  + #_SC_NETWORKING + +_SC_NETWORKING + + + ) + +398 + m_SC_READER_WRITER_LOCKS +, + +399  + #_SC_READER_WRITER_LOCKS + +_SC_READER_WRITER_LOCKS + + + ) + +400 + m_SC_SPIN_LOCKS +, + +401  + #_SC_SPIN_LOCKS + +_SC_SPIN_LOCKS + + + ) + +402 + m_SC_REGEXP +, + +403  + #_SC_REGEXP + +_SC_REGEXP + + + ) + +404 + m_SC_REGEX_VERSION +, + +405  + #_SC_REGEX_VERSION + +_SC_REGEX_VERSION + + + ) + +406 + m_SC_SHELL +, + +407  + #_SC_SHELL + +_SC_SHELL + + + ) + +408 + m_SC_SIGNALS +, + +409  + #_SC_SIGNALS + +_SC_SIGNALS + + + ) + +410 + m_SC_SPAWN +, + +411  + #_SC_SPAWN + +_SC_SPAWN + + + ) + +412 + m_SC_SPORADIC_SERVER +, + +413  + #_SC_SPORADIC_SERVER + +_SC_SPORADIC_SERVER + + + ) + +414 + m_SC_THREAD_SPORADIC_SERVER +, + +415  + #_SC_THREAD_SPORADIC_SERVER + +_SC_THREAD_SPORADIC_SERVER + + + ) + +416 + m_SC_SYSTEM_DATABASE +, + +417  + #_SC_SYSTEM_DATABASE + +_SC_SYSTEM_DATABASE + + + ) + +418 + m_SC_SYSTEM_DATABASE_R +, + +419  + #_SC_SYSTEM_DATABASE_R + +_SC_SYSTEM_DATABASE_R + + + ) + +420 + m_SC_TIMEOUTS +, + +421  + #_SC_TIMEOUTS + +_SC_TIMEOUTS + + + ) + +422 + m_SC_TYPED_MEMORY_OBJECTS +, + +423  + #_SC_TYPED_MEMORY_OBJECTS + +_SC_TYPED_MEMORY_OBJECTS + + + ) + +424 + m_SC_USER_GROUPS +, + +425  + #_SC_USER_GROUPS + +_SC_USER_GROUPS + + + ) + +426 + m_SC_USER_GROUPS_R +, + +427  + #_SC_USER_GROUPS_R + +_SC_USER_GROUPS_R + + + ) + +428 + m_SC_2_PBS +, + +429  + #_SC_2_PBS + +_SC_2_PBS + + + ) + +430 + m_SC_2_PBS_ACCOUNTING +, + +431  + #_SC_2_PBS_ACCOUNTING + +_SC_2_PBS_ACCOUNTING + + + ) + +432 + m_SC_2_PBS_LOCATE +, + +433  + #_SC_2_PBS_LOCATE + +_SC_2_PBS_LOCATE + + + ) + +434 + m_SC_2_PBS_MESSAGE +, + +435  + #_SC_2_PBS_MESSAGE + +_SC_2_PBS_MESSAGE + + + ) + +436 + m_SC_2_PBS_TRACK +, + +437  + #_SC_2_PBS_TRACK + +_SC_2_PBS_TRACK + + + ) + +438 + m_SC_SYMLOOP_MAX +, + +439  + #_SC_SYMLOOP_MAX + +_SC_SYMLOOP_MAX + + + ) + +440 + m_SC_STREAMS +, + +441  + #_SC_STREAMS + +_SC_STREAMS + + + ) + +442 + m_SC_2_PBS_CHECKPOINT +, + +443  + #_SC_2_PBS_CHECKPOINT + +_SC_2_PBS_CHECKPOINT + + + ) + +445 + m_SC_V6_ILP32_OFF32 +, + +446  + #_SC_V6_ILP32_OFF32 + +_SC_V6_ILP32_OFF32 + + + ) + +447 + m_SC_V6_ILP32_OFFBIG +, + +448  + #_SC_V6_ILP32_OFFBIG + +_SC_V6_ILP32_OFFBIG + + + ) + +449 + m_SC_V6_LP64_OFF64 +, + +450  + #_SC_V6_LP64_OFF64 + +_SC_V6_LP64_OFF64 + + + ) + +451 + m_SC_V6_LPBIG_OFFBIG +, + +452  + #_SC_V6_LPBIG_OFFBIG + +_SC_V6_LPBIG_OFFBIG + + + ) + +454 + m_SC_HOST_NAME_MAX +, + +455  + #_SC_HOST_NAME_MAX + +_SC_HOST_NAME_MAX + + + ) + +456 + m_SC_TRACE +, + +457  + #_SC_TRACE + +_SC_TRACE + + + ) + +458 + m_SC_TRACE_EVENT_FILTER +, + +459  + #_SC_TRACE_EVENT_FILTER + +_SC_TRACE_EVENT_FILTER + + + ) + +460 + m_SC_TRACE_INHERIT +, + +461  + #_SC_TRACE_INHERIT + +_SC_TRACE_INHERIT + + + ) + +462 + m_SC_TRACE_LOG +, + +463  + #_SC_TRACE_LOG + +_SC_TRACE_LOG + + + ) + +465 + m_SC_LEVEL1_ICACHE_SIZE +, + +466  + #_SC_LEVEL1_ICACHE_SIZE + +_SC_LEVEL1_ICACHE_SIZE + + + ) + +467 + m_SC_LEVEL1_ICACHE_ASSOC +, + +468  + #_SC_LEVEL1_ICACHE_ASSOC + +_SC_LEVEL1_ICACHE_ASSOC + + + ) + +469 + m_SC_LEVEL1_ICACHE_LINESIZE +, + +470  + #_SC_LEVEL1_ICACHE_LINESIZE + +_SC_LEVEL1_ICACHE_LINESIZE + + + ) + +471 + m_SC_LEVEL1_DCACHE_SIZE +, + +472  + #_SC_LEVEL1_DCACHE_SIZE + +_SC_LEVEL1_DCACHE_SIZE + + + ) + +473 + m_SC_LEVEL1_DCACHE_ASSOC +, + +474  + #_SC_LEVEL1_DCACHE_ASSOC + +_SC_LEVEL1_DCACHE_ASSOC + + + ) + +475 + m_SC_LEVEL1_DCACHE_LINESIZE +, + +476  + #_SC_LEVEL1_DCACHE_LINESIZE + +_SC_LEVEL1_DCACHE_LINESIZE + + + ) + +477 + m_SC_LEVEL2_CACHE_SIZE +, + +478  + #_SC_LEVEL2_CACHE_SIZE + +_SC_LEVEL2_CACHE_SIZE + + + ) + +479 + m_SC_LEVEL2_CACHE_ASSOC +, + +480  + #_SC_LEVEL2_CACHE_ASSOC + +_SC_LEVEL2_CACHE_ASSOC + + + ) + +481 + m_SC_LEVEL2_CACHE_LINESIZE +, + +482  + #_SC_LEVEL2_CACHE_LINESIZE + +_SC_LEVEL2_CACHE_LINESIZE + + + ) + +483 + m_SC_LEVEL3_CACHE_SIZE +, + +484  + #_SC_LEVEL3_CACHE_SIZE + +_SC_LEVEL3_CACHE_SIZE + + + ) + +485 + m_SC_LEVEL3_CACHE_ASSOC +, + +486  + #_SC_LEVEL3_CACHE_ASSOC + +_SC_LEVEL3_CACHE_ASSOC + + + ) + +487 + m_SC_LEVEL3_CACHE_LINESIZE +, + +488  + #_SC_LEVEL3_CACHE_LINESIZE + +_SC_LEVEL3_CACHE_LINESIZE + + + ) + +489 + m_SC_LEVEL4_CACHE_SIZE +, + +490  + #_SC_LEVEL4_CACHE_SIZE + +_SC_LEVEL4_CACHE_SIZE + + + ) + +491 + m_SC_LEVEL4_CACHE_ASSOC +, + +492  + #_SC_LEVEL4_CACHE_ASSOC + +_SC_LEVEL4_CACHE_ASSOC + + + ) + +493 + m_SC_LEVEL4_CACHE_LINESIZE +, + +494  + #_SC_LEVEL4_CACHE_LINESIZE + +_SC_LEVEL4_CACHE_LINESIZE + + + ) + +497 + m_SC_IPV6 + = +_SC_LEVEL1_ICACHE_SIZE + + 50, + +498  + #_SC_IPV6 + +_SC_IPV6 + + + ) + +499 + m_SC_RAW_SOCKETS +, + +500  + #_SC_RAW_SOCKETS + +_SC_RAW_SOCKETS + + + ) + +502 + m_SC_V7_ILP32_OFF32 +, + +503  + #_SC_V7_ILP32_OFF32 + +_SC_V7_ILP32_OFF32 + + + ) + +504 + m_SC_V7_ILP32_OFFBIG +, + +505  + #_SC_V7_ILP32_OFFBIG + +_SC_V7_ILP32_OFFBIG + + + ) + +506 + m_SC_V7_LP64_OFF64 +, + +507  + #_SC_V7_LP64_OFF64 + +_SC_V7_LP64_OFF64 + + + ) + +508 + m_SC_V7_LPBIG_OFFBIG +, + +509  + #_SC_V7_LPBIG_OFFBIG + +_SC_V7_LPBIG_OFFBIG + + + ) + +511 + m_SC_SS_REPL_MAX +, + +512  + #_SC_SS_REPL_MAX + +_SC_SS_REPL_MAX + + + ) + +514 + m_SC_TRACE_EVENT_NAME_MAX +, + +515  + #_SC_TRACE_EVENT_NAME_MAX + +_SC_TRACE_EVENT_NAME_MAX + + + ) + +516 + m_SC_TRACE_NAME_MAX +, + +517  + #_SC_TRACE_NAME_MAX + +_SC_TRACE_NAME_MAX + + + ) + +518 + m_SC_TRACE_SYS_MAX +, + +519  + #_SC_TRACE_SYS_MAX + +_SC_TRACE_SYS_MAX + + + ) + +520 + m_SC_TRACE_USER_EVENT_MAX +, + +521  + #_SC_TRACE_USER_EVENT_MAX + +_SC_TRACE_USER_EVENT_MAX + + + ) + +523 + m_SC_XOPEN_STREAMS +, + +524  + #_SC_XOPEN_STREAMS + +_SC_XOPEN_STREAMS + + + ) + +526 + m_SC_THREAD_ROBUST_PRIO_INHERIT +, + +527  + #_SC_THREAD_ROBUST_PRIO_INHERIT + +_SC_THREAD_ROBUST_PRIO_INHERIT + + + ) + +528 + m_SC_THREAD_ROBUST_PRIO_PROTECT + + +529  + #_SC_THREAD_ROBUST_PRIO_PROTECT + +_SC_THREAD_ROBUST_PRIO_PROTECT + + + ) + +535 + m_CS_PATH +, + +536  + #_CS_PATH + +_CS_PATH + + + ) + +538 + m_CS_V6_WIDTH_RESTRICTED_ENVS +, + +539  + #_CS_V6_WIDTH_RESTRICTED_ENVS + +_CS_V6_WIDTH_RESTRICTED_ENVS + + + ) + +540  + #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS + +_CS_V6_WIDTH_RESTRICTED_ENVS + + + ) + +542 + m_CS_GNU_LIBC_VERSION +, + +543  + #_CS_GNU_LIBC_VERSION + +_CS_GNU_LIBC_VERSION + + + ) + +544 + m_CS_GNU_LIBPTHREAD_VERSION +, + +545  + #_CS_GNU_LIBPTHREAD_VERSION + +_CS_GNU_LIBPTHREAD_VERSION + + + ) + +547 + m_CS_V5_WIDTH_RESTRICTED_ENVS +, + +548  + #_CS_V5_WIDTH_RESTRICTED_ENVS + +_CS_V5_WIDTH_RESTRICTED_ENVS + + + ) + +549  + #_CS_POSIX_V5_WIDTH_RESTRICTED_ENVS + +_CS_V5_WIDTH_RESTRICTED_ENVS + + + ) + +551 + m_CS_V7_WIDTH_RESTRICTED_ENVS +, + +552  + #_CS_V7_WIDTH_RESTRICTED_ENVS + +_CS_V7_WIDTH_RESTRICTED_ENVS + + + ) + +553  + #_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS + +_CS_V7_WIDTH_RESTRICTED_ENVS + + + ) + +555 + m_CS_LFS_CFLAGS + = 1000, + +556  + #_CS_LFS_CFLAGS + +_CS_LFS_CFLAGS + + + ) + +557 + m_CS_LFS_LDFLAGS +, + +558  + #_CS_LFS_LDFLAGS + +_CS_LFS_LDFLAGS + + + ) + +559 + m_CS_LFS_LIBS +, + +560  + #_CS_LFS_LIBS + +_CS_LFS_LIBS + + + ) + +561 + m_CS_LFS_LINTFLAGS +, + +562  + #_CS_LFS_LINTFLAGS + +_CS_LFS_LINTFLAGS + + + ) + +563 + m_CS_LFS64_CFLAGS +, + +564  + #_CS_LFS64_CFLAGS + +_CS_LFS64_CFLAGS + + + ) + +565 + m_CS_LFS64_LDFLAGS +, + +566  + #_CS_LFS64_LDFLAGS + +_CS_LFS64_LDFLAGS + + + ) + +567 + m_CS_LFS64_LIBS +, + +568  + #_CS_LFS64_LIBS + +_CS_LFS64_LIBS + + + ) + +569 + m_CS_LFS64_LINTFLAGS +, + +570  + #_CS_LFS64_LINTFLAGS + +_CS_LFS64_LINTFLAGS + + + ) + +572 + m_CS_XBS5_ILP32_OFF32_CFLAGS + = 1100, + +573  + #_CS_XBS5_ILP32_OFF32_CFLAGS + +_CS_XBS5_ILP32_OFF32_CFLAGS + + + ) + +574 + m_CS_XBS5_ILP32_OFF32_LDFLAGS +, + +575  + #_CS_XBS5_ILP32_OFF32_LDFLAGS + +_CS_XBS5_ILP32_OFF32_LDFLAGS + + + ) + +576 + m_CS_XBS5_ILP32_OFF32_LIBS +, + +577  + #_CS_XBS5_ILP32_OFF32_LIBS + +_CS_XBS5_ILP32_OFF32_LIBS + + + ) + +578 + m_CS_XBS5_ILP32_OFF32_LINTFLAGS +, + +579  + #_CS_XBS5_ILP32_OFF32_LINTFLAGS + +_CS_XBS5_ILP32_OFF32_LINTFLAGS + + + ) + +580 + m_CS_XBS5_ILP32_OFFBIG_CFLAGS +, + +581  + #_CS_XBS5_ILP32_OFFBIG_CFLAGS + +_CS_XBS5_ILP32_OFFBIG_CFLAGS + + + ) + +582 + m_CS_XBS5_ILP32_OFFBIG_LDFLAGS +, + +583  + #_CS_XBS5_ILP32_OFFBIG_LDFLAGS + +_CS_XBS5_ILP32_OFFBIG_LDFLAGS + + + ) + +584 + m_CS_XBS5_ILP32_OFFBIG_LIBS +, + +585  + #_CS_XBS5_ILP32_OFFBIG_LIBS + +_CS_XBS5_ILP32_OFFBIG_LIBS + + + ) + +586 + m_CS_XBS5_ILP32_OFFBIG_LINTFLAGS +, + +587  + #_CS_XBS5_ILP32_OFFBIG_LINTFLAGS + +_CS_XBS5_ILP32_OFFBIG_LINTFLAGS + + + ) + +588 + m_CS_XBS5_LP64_OFF64_CFLAGS +, + +589  + #_CS_XBS5_LP64_OFF64_CFLAGS + +_CS_XBS5_LP64_OFF64_CFLAGS + + + ) + +590 + m_CS_XBS5_LP64_OFF64_LDFLAGS +, + +591  + #_CS_XBS5_LP64_OFF64_LDFLAGS + +_CS_XBS5_LP64_OFF64_LDFLAGS + + + ) + +592 + m_CS_XBS5_LP64_OFF64_LIBS +, + +593  + #_CS_XBS5_LP64_OFF64_LIBS + +_CS_XBS5_LP64_OFF64_LIBS + + + ) + +594 + m_CS_XBS5_LP64_OFF64_LINTFLAGS +, + +595  + #_CS_XBS5_LP64_OFF64_LINTFLAGS + +_CS_XBS5_LP64_OFF64_LINTFLAGS + + + ) + +596 + m_CS_XBS5_LPBIG_OFFBIG_CFLAGS +, + +597  + #_CS_XBS5_LPBIG_OFFBIG_CFLAGS + +_CS_XBS5_LPBIG_OFFBIG_CFLAGS + + + ) + +598 + m_CS_XBS5_LPBIG_OFFBIG_LDFLAGS +, + +599  + #_CS_XBS5_LPBIG_OFFBIG_LDFLAGS + +_CS_XBS5_LPBIG_OFFBIG_LDFLAGS + + + ) + +600 + m_CS_XBS5_LPBIG_OFFBIG_LIBS +, + +601  + #_CS_XBS5_LPBIG_OFFBIG_LIBS + +_CS_XBS5_LPBIG_OFFBIG_LIBS + + + ) + +602 + m_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS +, + +603  + #_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS + +_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS + + + ) + +605 + m_CS_POSIX_V6_ILP32_OFF32_CFLAGS +, + +606  + #_CS_POSIX_V6_ILP32_OFF32_CFLAGS + +_CS_POSIX_V6_ILP32_OFF32_CFLAGS + + + ) + +607 + m_CS_POSIX_V6_ILP32_OFF32_LDFLAGS +, + +608  + #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + +_CS_POSIX_V6_ILP32_OFF32_LDFLAGS + + + ) + +609 + m_CS_POSIX_V6_ILP32_OFF32_LIBS +, + +610  + #_CS_POSIX_V6_ILP32_OFF32_LIBS + +_CS_POSIX_V6_ILP32_OFF32_LIBS + + + ) + +611 + m_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS +, + +612  + #_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + +_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS + + + ) + +613 + m_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS +, + +614  + #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS + + + ) + +615 + m_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS +, + +616  + #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS + + + ) + +617 + m_CS_POSIX_V6_ILP32_OFFBIG_LIBS +, + +618  + #_CS_POSIX_V6_ILP32_OFFBIG_LIBS + +_CS_POSIX_V6_ILP32_OFFBIG_LIBS + + + ) + +619 + m_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS +, + +620  + #_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS + +_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS + + + ) + +621 + m_CS_POSIX_V6_LP64_OFF64_CFLAGS +, + +622  + #_CS_POSIX_V6_LP64_OFF64_CFLAGS + +_CS_POSIX_V6_LP64_OFF64_CFLAGS + + + ) + +623 + m_CS_POSIX_V6_LP64_OFF64_LDFLAGS +, + +624  + #_CS_POSIX_V6_LP64_OFF64_LDFLAGS + +_CS_POSIX_V6_LP64_OFF64_LDFLAGS + + + ) + +625 + m_CS_POSIX_V6_LP64_OFF64_LIBS +, + +626  + #_CS_POSIX_V6_LP64_OFF64_LIBS + +_CS_POSIX_V6_LP64_OFF64_LIBS + + + ) + +627 + m_CS_POSIX_V6_LP64_OFF64_LINTFLAGS +, + +628  + #_CS_POSIX_V6_LP64_OFF64_LINTFLAGS + +_CS_POSIX_V6_LP64_OFF64_LINTFLAGS + + + ) + +629 + m_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS +, + +630  + #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS + + + ) + +631 + m_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS +, + +632  + #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS + + + ) + +633 + m_CS_POSIX_V6_LPBIG_OFFBIG_LIBS +, + +634  + #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + +_CS_POSIX_V6_LPBIG_OFFBIG_LIBS + + + ) + +635 + m_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS +, + +636  + #_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + +_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS + + + ) + +638 + m_CS_POSIX_V7_ILP32_OFF32_CFLAGS +, + +639  + #_CS_POSIX_V7_ILP32_OFF32_CFLAGS + +_CS_POSIX_V7_ILP32_OFF32_CFLAGS + + + ) + +640 + m_CS_POSIX_V7_ILP32_OFF32_LDFLAGS +, + +641  + #_CS_POSIX_V7_ILP32_OFF32_LDFLAGS + +_CS_POSIX_V7_ILP32_OFF32_LDFLAGS + + + ) + +642 + m_CS_POSIX_V7_ILP32_OFF32_LIBS +, + +643  + #_CS_POSIX_V7_ILP32_OFF32_LIBS + +_CS_POSIX_V7_ILP32_OFF32_LIBS + + + ) + +644 + m_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS +, + +645  + #_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS + +_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS + + + ) + +646 + m_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS +, + +647  + #_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS + +_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS + + + ) + +648 + m_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS +, + +649  + #_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS + +_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS + + + ) + +650 + m_CS_POSIX_V7_ILP32_OFFBIG_LIBS +, + +651  + #_CS_POSIX_V7_ILP32_OFFBIG_LIBS + +_CS_POSIX_V7_ILP32_OFFBIG_LIBS + + + ) + +652 + m_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS +, + +653  + #_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS + +_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS + + + ) + +654 + m_CS_POSIX_V7_LP64_OFF64_CFLAGS +, + +655  + #_CS_POSIX_V7_LP64_OFF64_CFLAGS + +_CS_POSIX_V7_LP64_OFF64_CFLAGS + + + ) + +656 + m_CS_POSIX_V7_LP64_OFF64_LDFLAGS +, + +657  + #_CS_POSIX_V7_LP64_OFF64_LDFLAGS + +_CS_POSIX_V7_LP64_OFF64_LDFLAGS + + + ) + +658 + m_CS_POSIX_V7_LP64_OFF64_LIBS +, + +659  + #_CS_POSIX_V7_LP64_OFF64_LIBS + +_CS_POSIX_V7_LP64_OFF64_LIBS + + + ) + +660 + m_CS_POSIX_V7_LP64_OFF64_LINTFLAGS +, + +661  + #_CS_POSIX_V7_LP64_OFF64_LINTFLAGS + +_CS_POSIX_V7_LP64_OFF64_LINTFLAGS + + + ) + +662 + m_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS +, + +663  + #_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS + +_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS + + + ) + +664 + m_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS +, + +665  + #_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS + +_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS + + + ) + +666 + m_CS_POSIX_V7_LPBIG_OFFBIG_LIBS +, + +667  + #_CS_POSIX_V7_LPBIG_OFFBIG_LIBS + +_CS_POSIX_V7_LPBIG_OFFBIG_LIBS + + + ) + +668 + m_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS +, + +669  + #_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS + +_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS + + + ) + +671 + m_CS_V6_ENV +, + +672  + #_CS_V6_ENV + +_CS_V6_ENV + + + ) + +673 + m_CS_V7_ENV + + +674  + #_CS_V7_ENV + +_CS_V7_ENV + + + ) + + @/usr/include/bits/environments.h + +18 #ide +_UNISTD_H + + +22  + ~ + +42 #i +__WORDSIZE + == 64 + +56  + #_POSIX_V7_LPBIG_OFFBIG + -1 + + ) + +57  + #_POSIX_V6_LPBIG_OFFBIG + -1 + + ) + +58  + #_XBS5_LPBIG_OFFBIG + -1 + + ) + +61  + #_POSIX_V7_LP64_OFF64 + 1 + + ) + +62  + #_POSIX_V6_LP64_OFF64 + 1 + + ) + +63  + #_XBS5_LP64_OFF64 + 1 + + ) + +69  + #_POSIX_V7_ILP32_OFFBIG + 1 + + ) + +70  + #_POSIX_V6_ILP32_OFFBIG + 1 + + ) + +71  + #_XBS5_ILP32_OFFBIG + 1 + + ) + +73 #ide +__x86_64__ + + +75  + #_POSIX_V7_ILP32_OFF32 + 1 + + ) + +76  + #_POSIX_V6_ILP32_OFF32 + 1 + + ) + +77  + #_XBS5_ILP32_OFF32 + 1 + + ) + +95  + #__ILP32_OFF32_CFLAGS + "-m32" + + ) + +96  + #__ILP32_OFF32_LDFLAGS + "-m32" + + ) + +97 #i +defed + +__x86_64__ + && defed +__ILP32__ + + +98  + #__ILP32_OFFBIG_CFLAGS + "-mx32" + + ) + +99  + #__ILP32_OFFBIG_LDFLAGS + "-mx32" + + ) + +101  + #__ILP32_OFFBIG_CFLAGS + "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + + ) + +102  + #__ILP32_OFFBIG_LDFLAGS + "-m32" + + ) + +104  + #__LP64_OFF64_CFLAGS + "-m64" + + ) + +105  + #__LP64_OFF64_LDFLAGS + "-m64" + + ) + + @/usr/include/bits/errno.h + +19 #ifde +_ERRNO_H + + +21 #unde +EDOM + + +22 #unde +EILSEQ + + +23 #unde +ERANGE + + +24  + ~ + +27  + #ENOTSUP + +EOPNOTSUPP + + + ) + +30 #ide +ECANCELED + + +31  + #ECANCELED + 125 + + ) + +35 #ide +EOWNERDEAD + + +36  + #EOWNERDEAD + 130 + + ) + +37  + #ENOTRECOVERABLE + 131 + + ) + +40 #ide +ERFKILL + + +41  + #ERFKILL + 132 + + ) + +44 #ide +EHWPOISON + + +45  + #EHWPOISON + 133 + + ) + +48 #ide +__ASSEMBLER__ + + +50 * + $__o_loti + ( +__THROW + + `__ibu__ + (( +__cڡ__ +)); + +52 #i! +defed + +_LIBC + || defed +_LIBC_REENTRANT + + +54  + #o + (* + `__o_loti + ()) + + ) + +59 #i! +defed + +_ERRNO_H + && defed +__ed_Emh + + +63  + #EDOM + 33 + + ) + +64  + #EILSEQ + 84 + + ) + +65  + #ERANGE + 34 + + ) + + @/usr/include/bits/fcntl.h + +19 #ide +_FCNTL_H + + +23 #ifde +__x86_64__ + + +24  + #__O_LARGEFILE + 0 + + ) + +27 #ifde +__x86_64__ + + +29  + #F_GETLK64 + 5 + + ) + +30  + #F_SETLK64 + 6 + + ) + +31  + #F_SETLKW64 + 7 + + ) + +35  + sock + + +37  + ml_ty +; + +38  + ml_wh +; + +39 #ide +__USE_FILE_OFFSET64 + + +40 +__off_t + + ml_t +; + +41 +__off_t + + ml_n +; + +43 +__off64_t + + ml_t +; + +44 +__off64_t + + ml_n +; + +46 +__pid_t + + ml_pid +; + +49 #ifde +__USE_LARGEFILE64 + + +50  + sock64 + + +52  + ml_ty +; + +53  + ml_wh +; + +54 +__off64_t + + ml_t +; + +55 +__off64_t + + ml_n +; + +56 +__pid_t + + ml_pid +; + +61  + ~ + + @/usr/include/bits/fcntl2.h + +19 #idef +_FCNTL_H + + +25 #ide +__USE_FILE_OFFSET64 + + +26  + $__ݒ_2 + (cڡ * +__th +,  +__oag + + `__nnu + ((1)); + +27  + `__REDIRECT + ( +__ݒ_s +, (cڡ * +__th +,  +__oag +, ...), + +28 +ݒ + + `__nnu + ((1)); + +30  + `__REDIRECT + ( +__ݒ_2 +, (cڡ * +__th +,  +__oag +), + +31 +__ݒ64_2 + + `__nnu + ((1)); + +32  + `__REDIRECT + ( +__ݒ_s +, (cڡ * +__th +,  +__oag +, ...), + +33 +ݒ64 + + `__nnu + ((1)); + +35 + `__rde + ( +__ݒ_too_my_gs +, + +37 + `__rde + ( +__ݒ_missg_mode +, + +40 +__ftify_funi +  + +41 + $ݒ + (cڡ * +__th +,  +__oag +, ...) + +43 i( + `__va_g_ck_n + () > 1) + +44 + `__ݒ_too_my_gs + (); + +46 i( + `__but_cڡt_p + ( +__oag +)) + +48 i( + `__OPEN_NEEDS_MODE + ( +__oag +&& + `__va_g_ck_n + () < 1) + +50 + `__ݒ_missg_mode + (); + +51  + `__ݒ_2 + ( +__th +, +__oag +); + +53  + `__ݒ_s + ( +__th +, +__oag +, + `__va_g_ck + ()); + +56 i( + `__va_g_ck_n + () < 1) + +57  + `__ݒ_2 + ( +__th +, +__oag +); + +59  + `__ݒ_s + ( +__th +, +__oag +, + `__va_g_ck + ()); + +60 + } +} + +63 #ifde +__USE_LARGEFILE64 + + +64  + $__ݒ64_2 + (cڡ * +__th +,  +__oag + + `__nnu + ((1)); + +65  + `__REDIRECT + ( +__ݒ64_s +, (cڡ * +__th +,  +__oag +, + +66 ...), +ݒ64 + + `__nnu + ((1)); + +67 + `__rde + ( +__ݒ64_too_my_gs +, + +69 + `__rde + ( +__ݒ64_missg_mode +, + +72 +__ftify_funi +  + +73 + $ݒ64 + (cڡ * +__th +,  +__oag +, ...) + +75 i( + `__va_g_ck_n + () > 1) + +76 + `__ݒ64_too_my_gs + (); + +78 i( + `__but_cڡt_p + ( +__oag +)) + +80 i( + `__OPEN_NEEDS_MODE + ( +__oag +&& + `__va_g_ck_n + () < 1) + +82 + `__ݒ64_missg_mode + (); + +83  + `__ݒ64_2 + ( +__th +, +__oag +); + +85  + `__ݒ64_s + ( +__th +, +__oag +, + `__va_g_ck + ()); + +88 i( + `__va_g_ck_n + () < 1) + +89  + `__ݒ64_2 + ( +__th +, +__oag +); + +91  + `__ݒ64_s + ( +__th +, +__oag +, + `__va_g_ck + ()); + +92 + } +} + +96 #ifde +__USE_ATFILE + + +97 #ide +__USE_FILE_OFFSET64 + + +98  + $__ݒ_2 + ( +__fd +, cڡ * +__th +,  +__oag +) + +99 + `__nnu + ((2)); + +100  + `__REDIRECT + ( +__ݒ_s +, ( +__fd +, cڡ * +__th +, + +101  +__oag +, ...), +ݒ +) + +102 + `__nnu + ((2)); + +104  + `__REDIRECT + ( +__ݒ_2 +, ( +__fd +, cڡ * +__th +, + +105  +__oag +), +__ݒ64_2 +) + +106 + `__nnu + ((2)); + +107  + `__REDIRECT + ( +__ݒ_s +, ( +__fd +, cڡ * +__th +, + +108  +__oag +, ...), +ݒ64 +) + +109 + `__nnu + ((2)); + +111 + `__rde + ( +__ݒ_too_my_gs +, + +113 + `__rde + ( +__ݒ_missg_mode +, + +116 +__ftify_funi +  + +117 + $ݒ + ( +__fd +, cڡ * +__th +,  +__oag +, ...) + +119 i( + `__va_g_ck_n + () > 1) + +120 + `__ݒ_too_my_gs + (); + +122 i( + `__but_cڡt_p + ( +__oag +)) + +124 i( + `__OPEN_NEEDS_MODE + ( +__oag +&& + `__va_g_ck_n + () < 1) + +126 + `__ݒ_missg_mode + (); + +127  + `__ݒ_2 + ( +__fd +, +__th +, +__oag +); + +129  + `__ݒ_s + ( +__fd +, +__th +, +__oag +, + `__va_g_ck + ()); + +132 i( + `__va_g_ck_n + () < 1) + +133  + `__ݒ_2 + ( +__fd +, +__th +, +__oag +); + +135  + `__ݒ_s + ( +__fd +, +__th +, +__oag +, + `__va_g_ck + ()); + +136 + } +} + +139 #ifde +__USE_LARGEFILE64 + + +140  + $__ݒ64_2 + ( +__fd +, cڡ * +__th +,  +__oag +) + +141 + `__nnu + ((2)); + +142  + `__REDIRECT + ( +__ݒ64_s +, ( +__fd +, cڡ * +__th +, + +143  +__oag +, ...), +ݒ64 +) + +144 + `__nnu + ((2)); + +145 + `__rde + ( +__ݒ64_too_my_gs +, + +147 + `__rde + ( +__ݒ64_missg_mode +, + +150 +__ftify_funi +  + +151 + $ݒ64 + ( +__fd +, cڡ * +__th +,  +__oag +, ...) + +153 i( + `__va_g_ck_n + () > 1) + +154 + `__ݒ64_too_my_gs + (); + +156 i( + `__but_cڡt_p + ( +__oag +)) + +158 i( + `__OPEN_NEEDS_MODE + ( +__oag +&& + `__va_g_ck_n + () < 1) + +160 + `__ݒ64_missg_mode + (); + +161  + `__ݒ64_2 + ( +__fd +, +__th +, +__oag +); + +163  + `__ݒ64_s + ( +__fd +, +__th +, +__oag +, + `__va_g_ck + ()); + +166 i( + `__va_g_ck_n + () < 1) + +167  + `__ݒ64_2 + ( +__fd +, +__th +, +__oag +); + +169  + `__ݒ64_s + ( +__fd +, +__th +, +__oag +, + `__va_g_ck + ()); + +170 + } +} + + @/usr/include/bits/huge_val.h + +20 #ide +_MATH_H + + +26 #i +__GNUC_PREREQ +(3,3) + +27  + #HUGE_VAL + ( + `__but_huge_v +()) + + ) + +28 #i +__GNUC_PREREQ +(2,96) + +29  + #HUGE_VAL + ( +__exnsi__ + 0x1.0 +p2047 +) + + ) + +30 #i +defed + +__GNUC__ + + +32  + #HUGE_VAL + \ + +33 ( +__exnsi__ + \ + +34 ((uni {  +__l + + `__ibu__ +(( + `__mode__ +( +__DI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7ff0000000000000ULL }). +__d +) + + ) + +39  + ~ + +41 uni {  + m__c +[8];  + m__d +; } + t__huge_v_t +; + +43 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +44  + #__HUGE_VAL_bys + { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } + + ) + +46 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +47  + #__HUGE_VAL_bys + { 0, 0, 0, 0, 0, 0, 0xf0, 0x7} + + ) + +50  +__huge_v_t + + g__huge_v + = { +__HUGE_VAL_bys + }; + +51  + #HUGE_VAL + ( +__huge_v +. +__d +) + + ) + + @/usr/include/bits/huge_valf.h + +20 #ide +_MATH_H + + +26 #i +__GNUC_PREREQ +(3,3) + +27  + #HUGE_VALF + ( + `__but_huge_vf +()) + + ) + +28 #i +__GNUC_PREREQ +(2,96) + +29  + #HUGE_VALF + ( +__exnsi__ + 0x1.0 +p255f +) + + ) + +30 #i +defed + +__GNUC__ + + +32  + #HUGE_VALF + \ + +33 ( +__exnsi__ + \ + +34 ((uni {  +__l + + `__ibu__ +(( + `__mode__ +( +__SI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7f800000UL }). +__d +) + + ) + +39 uni {  + m__c +[4];  + m__f +; } + t__huge_vf_t +; + +41 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +42  + #__HUGE_VALF_bys + { 0x7f, 0x80, 0, 0 } + + ) + +44 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +45  + #__HUGE_VALF_bys + { 0, 0, 0x80, 0x7} + + ) + +48  +__huge_vf_t + + g__huge_vf + = { +__HUGE_VALF_bys + }; + +49  + #HUGE_VALF + ( +__huge_vf +. +__f +) + + ) + + @/usr/include/bits/huge_vall.h + +20 #ide +_MATH_H + + +24 #i +__GNUC_PREREQ +(3,3) + +25  + #HUGE_VALL + ( + `__but_huge_vl +()) + + ) + +26 #i +__GNUC_PREREQ +(2,96) + +27  + #HUGE_VALL + ( +__exnsi__ + 0x1.0 +p32767L +) + + ) + +30  + #__HUGE_VALL_bys + { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } + + ) + +32  + #__huge_vl_t + uni {  +__c +[12];  +__ld +; } + + ) + +33 #ifde +__GNUC__ + + +34  + #HUGE_VALL + ( +__exnsi__ + \ + +35 (( +__huge_vl_t +{ +__c +: +__HUGE_VALL_bys + }). +__ld +) + + ) + +37  +__huge_vl_t + + g__huge_vl + = { +__HUGE_VALL_bys + }; + +38  + #HUGE_VALL + ( +__huge_vl +. +__ld +) + + ) + + @/usr/include/bits/in.h + +20 #ide +_NETINET_IN_H + + +29 #i +defed + +_UAPI_LINUX_IN6_H + || defed +_UAPI_IPV6_H + + +33  + #__USE_KERNEL_IPV6_DEFS + + + ) + +39  + #IP_OPTIONS + 4 + + ) + +40  + #IP_HDRINCL + 3 + + ) + +41  + #IP_TOS + 1 + + ) + +42  + #IP_TTL + 2 + + ) + +43  + #IP_RECVOPTS + 6 + + ) + +45  + #IP_RECVRETOPTS + +IP_RETOPTS + + + ) + +46  + #IP_RETOPTS + 7 + + ) + +47  + #IP_MULTICAST_IF + 32 + + ) + +48  + #IP_MULTICAST_TTL + 33 + + ) + +49  + #IP_MULTICAST_LOOP + 34 + + ) + +50  + #IP_ADD_MEMBERSHIP + 35 + + ) + +51  + #IP_DROP_MEMBERSHIP + 36 + + ) + +52  + #IP_UNBLOCK_SOURCE + 37 + + ) + +53  + #IP_BLOCK_SOURCE + 38 + + ) + +54  + #IP_ADD_SOURCE_MEMBERSHIP + 39 + + ) + +55  + #IP_DROP_SOURCE_MEMBERSHIP + 40 + + ) + +56  + #IP_MSFILTER + 41 + + ) + +57 #ifde +__USE_MISC + + +58  + #MCAST_JOIN_GROUP + 42 + + ) + +59  + #MCAST_BLOCK_SOURCE + 43 + + ) + +60  + #MCAST_UNBLOCK_SOURCE + 44 + + ) + +61  + #MCAST_LEAVE_GROUP + 45 + + ) + +62  + #MCAST_JOIN_SOURCE_GROUP + 46 + + ) + +63  + #MCAST_LEAVE_SOURCE_GROUP + 47 + + ) + +64  + #MCAST_MSFILTER + 48 + + ) + +65  + #IP_MULTICAST_ALL + 49 + + ) + +66  + #IP_UNICAST_IF + 50 + + ) + +68  + #MCAST_EXCLUDE + 0 + + ) + +69  + #MCAST_INCLUDE + 1 + + ) + +72  + #IP_ROUTER_ALERT + 5 + + ) + +73  + #IP_PKTINFO + 8 + + ) + +74  + #IP_PKTOPTIONS + 9 + + ) + +75  + #IP_PMTUDISC + 10 + + ) + +76  + #IP_MTU_DISCOVER + 10 + + ) + +77  + #IP_RECVERR + 11 + + ) + +78  + #IP_RECVTTL + 12 + + ) + +79  + #IP_RECVTOS + 13 + + ) + +80  + #IP_MTU + 14 + + ) + +81  + #IP_FREEBIND + 15 + + ) + +82  + #IP_IPSEC_POLICY + 16 + + ) + +83  + #IP_XFRM_POLICY + 17 + + ) + +84  + #IP_PASSSEC + 18 + + ) + +85  + #IP_TRANSPARENT + 19 + + ) + +86  + #IP_MULTICAST_ALL + 49 + + ) + +89  + #IP_ORIGDSTADDR + 20 + + ) + +90  + #IP_RECVORIGDSTADDR + +IP_ORIGDSTADDR + + + ) + +92  + #IP_MINTTL + 21 + + ) + +93  + #IP_NODEFRAG + 22 + + ) + +94  + #IP_CHECKSUM + 23 + + ) + +95  + #IP_BIND_ADDRESS_NO_PORT + 24 + + ) + +98  + #IP_PMTUDISC_DONT + 0 + + ) + +99  + #IP_PMTUDISC_WANT + 1 + + ) + +100  + #IP_PMTUDISC_DO + 2 + + ) + +101  + #IP_PMTUDISC_PROBE + 3 + + ) + +105  + #IP_PMTUDISC_INTERFACE + 4 + + ) + +107  + #IP_PMTUDISC_OMIT + 5 + + ) + +109  + #IP_MULTICAST_IF + 32 + + ) + +110  + #IP_MULTICAST_TTL + 33 + + ) + +111  + #IP_MULTICAST_LOOP + 34 + + ) + +112  + #IP_ADD_MEMBERSHIP + 35 + + ) + +113  + #IP_DROP_MEMBERSHIP + 36 + + ) + +114  + #IP_UNBLOCK_SOURCE + 37 + + ) + +115  + #IP_BLOCK_SOURCE + 38 + + ) + +116  + #IP_ADD_SOURCE_MEMBERSHIP + 39 + + ) + +117  + #IP_DROP_SOURCE_MEMBERSHIP + 40 + + ) + +118  + #IP_MSFILTER + 41 + + ) + +119  + #IP_MULTICAST_ALL + 49 + + ) + +120  + #IP_UNICAST_IF + 50 + + ) + +123  + #SOL_IP + 0 + + ) + +125  + #IP_DEFAULT_MULTICAST_TTL + 1 + + ) + +126  + #IP_DEFAULT_MULTICAST_LOOP + 1 + + ) + +127  + #IP_MAX_MEMBERSHIPS + 20 + + ) + +129 #ifde +__USE_MISC + + +133  + s_ts + + +135  +_addr + + m_d +; + +136  + m_ts +[40]; + +140  + s_mqn + + +142  +_addr + + mimr_muɟddr +; + +143  +_addr + + mimr_addss +; + +144  + mimr_ifdex +; + +148  + s_pktfo + + +150  + mi_ifdex +; + +151  +_addr + + mi_ec_d +; + +152  +_addr + + mi_addr +; + +159  + #IPV6_ADDRFORM + 1 + + ) + +160  + #IPV6_2292PKTINFO + 2 + + ) + +161  + #IPV6_2292HOPOPTS + 3 + + ) + +162  + #IPV6_2292DSTOPTS + 4 + + ) + +163  + #IPV6_2292RTHDR + 5 + + ) + +164  + #IPV6_2292PKTOPTIONS + 6 + + ) + +165  + #IPV6_CHECKSUM + 7 + + ) + +166  + #IPV6_2292HOPLIMIT + 8 + + ) + +168  + #SCM_SRCRT + +IPV6_RXSRCRT + + + ) + +170  + #IPV6_NEXTHOP + 9 + + ) + +171  + #IPV6_AUTHHDR + 10 + + ) + +172  + #IPV6_UNICAST_HOPS + 16 + + ) + +173  + #IPV6_MULTICAST_IF + 17 + + ) + +174  + #IPV6_MULTICAST_HOPS + 18 + + ) + +175  + #IPV6_MULTICAST_LOOP + 19 + + ) + +176  + #IPV6_JOIN_GROUP + 20 + + ) + +177  + #IPV6_LEAVE_GROUP + 21 + + ) + +178  + #IPV6_ROUTER_ALERT + 22 + + ) + +179  + #IPV6_MTU_DISCOVER + 23 + + ) + +180  + #IPV6_MTU + 24 + + ) + +181  + #IPV6_RECVERR + 25 + + ) + +182  + #IPV6_V6ONLY + 26 + + ) + +183  + #IPV6_JOIN_ANYCAST + 27 + + ) + +184  + #IPV6_LEAVE_ANYCAST + 28 + + ) + +185  + #IPV6_IPSEC_POLICY + 34 + + ) + +186  + #IPV6_XFRM_POLICY + 35 + + ) + +189  + #IPV6_RECVPKTINFO + 49 + + ) + +190  + #IPV6_PKTINFO + 50 + + ) + +191  + #IPV6_RECVHOPLIMIT + 51 + + ) + +192  + #IPV6_HOPLIMIT + 52 + + ) + +193  + #IPV6_RECVHOPOPTS + 53 + + ) + +194  + #IPV6_HOPOPTS + 54 + + ) + +195  + #IPV6_RTHDRDSTOPTS + 55 + + ) + +196  + #IPV6_RECVRTHDR + 56 + + ) + +197  + #IPV6_RTHDR + 57 + + ) + +198  + #IPV6_RECVDSTOPTS + 58 + + ) + +199  + #IPV6_DSTOPTS + 59 + + ) + +200  + #IPV6_RECVPATHMTU + 60 + + ) + +201  + #IPV6_PATHMTU + 61 + + ) + +202  + #IPV6_DONTFRAG + 62 + + ) + +205  + #IPV6_RECVTCLASS + 66 + + ) + +206  + #IPV6_TCLASS + 67 + + ) + +209  + #IPV6_ADD_MEMBERSHIP + +IPV6_JOIN_GROUP + + + ) + +210  + #IPV6_DROP_MEMBERSHIP + +IPV6_LEAVE_GROUP + + + ) + +211  + #IPV6_RXHOPOPTS + +IPV6_HOPOPTS + + + ) + +212  + #IPV6_RXDSTOPTS + +IPV6_DSTOPTS + + + ) + +215  + #IPV6_PMTUDISC_DONT + 0 + + ) + +216  + #IPV6_PMTUDISC_WANT + 1 + + ) + +217  + #IPV6_PMTUDISC_DO + 2 + + ) + +218  + #IPV6_PMTUDISC_PROBE + 3 + + ) + +219  + #IPV6_PMTUDISC_INTERFACE + 4 + + ) + +220  + #IPV6_PMTUDISC_OMIT + 5 + + ) + +223  + #SOL_IPV6 + 41 + + ) + +224  + #SOL_ICMPV6 + 58 + + ) + +227  + #IPV6_RTHDR_LOOSE + 0 + + ) + +228  + #IPV6_RTHDR_STRICT + 1 + + ) + +230  + #IPV6_RTHDR_TYPE_0 + 0 + + ) + + @/usr/include/bits/inf.h + +19 #ide +_MATH_H + + +25 #i +__GNUC_PREREQ +(3,3) + +26  + #INFINITY + ( + `__but_ff +()) + + ) + +28  + #INFINITY + +HUGE_VALF + + + ) + + @/usr/include/bits/math-finite.h + +19 #ide +_MATH_H + + +24  +__REDIRECT_NTH + ( +acos +, (), +__acos_fe +); + +25 #ifde +__USE_ISOC99 + + +26  +__REDIRECT_NTH + ( +acosf +, (), +__acosf_fe +); + +27 #ifde +__MATH_DECLARE_LDOUBLE + + +28 #ifde +__NO_LONG_DOUBLE_MATH + + +29  +__REDIRECT_NTH + ( +aco +, (), +__acos_fe +); + +31  +__REDIRECT_NTH + ( +aco +, (), +__aco_fe +); + +36 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +38  +__REDIRECT_NTH + ( +acosh +, (), +__acosh_fe +); + +40 #ifde +__USE_ISOC99 + + +41  +__REDIRECT_NTH + ( +acoshf +, (), +__acoshf_fe +); + +42 #ifde +__MATH_DECLARE_LDOUBLE + + +43 #ifde +__NO_LONG_DOUBLE_MATH + + +44  +__REDIRECT_NTH + ( +acoshl +, (), +__acosh_fe +); + +46  +__REDIRECT_NTH + ( +acoshl +, (), +__acoshl_fe +); + +52  +__REDIRECT_NTH + ( +as +, (), +__as_fe +); + +53 #ifde +__USE_ISOC99 + + +54  +__REDIRECT_NTH + ( +asf +, (), +__asf_fe +); + +55 #ifde +__MATH_DECLARE_LDOUBLE + + +56 #ifde +__NO_LONG_DOUBLE_MATH + + +57  +__REDIRECT_NTH + ( +asl +, (), +__as_fe +); + +59  +__REDIRECT_NTH + ( +asl +, (), +__asl_fe +); + +65  +__REDIRECT_NTH + ( +2 +, (, ), +__2_fe +); + +66 #ifde +__USE_ISOC99 + + +67  +__REDIRECT_NTH + ( +2f +, (, ), +__2f_fe +); + +68 #ifde +__MATH_DECLARE_LDOUBLE + + +69 #ifde +__NO_LONG_DOUBLE_MATH + + +70  +__REDIRECT_NTH + ( +2l +, (, ), + +71 +__2_fe +); + +73  +__REDIRECT_NTH + ( +2l +, (, ), + +74 +__2l_fe +); + +79 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +81  +__REDIRECT_NTH + ( +h +, (), +__h_fe +); + +83 #ifde +__USE_ISOC99 + + +84  +__REDIRECT_NTH + ( +hf +, (), +__hf_fe +); + +85 #ifde +__MATH_DECLARE_LDOUBLE + + +86 #ifde +__NO_LONG_DOUBLE_MATH + + +87  +__REDIRECT_NTH + ( +hl +, (), +__h_fe +); + +89  +__REDIRECT_NTH + ( +hl +, (), +__hl_fe +); + +95  +__REDIRECT_NTH + ( +cosh +, (), +__cosh_fe +); + +96 #ifde +__USE_ISOC99 + + +97  +__REDIRECT_NTH + ( +coshf +, (), +__coshf_fe +); + +98 #ifde +__MATH_DECLARE_LDOUBLE + + +99 #ifde +__NO_LONG_DOUBLE_MATH + + +100  +__REDIRECT_NTH + ( +coshl +, (), +__cosh_fe +); + +102  +__REDIRECT_NTH + ( +coshl +, (), +__coshl_fe +); + +108  +__REDIRECT_NTH + ( +exp +, (), +__exp_fe +); + +109 #ifde +__USE_ISOC99 + + +110  +__REDIRECT_NTH + ( +expf +, (), +__expf_fe +); + +111 #ifde +__MATH_DECLARE_LDOUBLE + + +112 #ifde +__NO_LONG_DOUBLE_MATH + + +113  +__REDIRECT_NTH + ( +ex +, (), +__exp_fe +); + +115  +__REDIRECT_NTH + ( +ex +, (), +__ex_fe +); + +120 #ifde +__USE_GNU + + +122  +__REDIRECT_NTH + ( +exp10 +, (), +__exp10_fe +); + +123  +__REDIRECT_NTH + ( +exp10f +, (), +__exp10f_fe +); + +124 #ifde +__MATH_DECLARE_LDOUBLE + + +125 #ifde +__NO_LONG_DOUBLE_MATH + + +126  +__REDIRECT_NTH + ( +exp10l +, (), +__exp10_fe +); + +128  +__REDIRECT_NTH + ( +exp10l +, (), +__exp10l_fe +); + +133  +__REDIRECT_NTH + ( +pow10 +, (), +__exp10_fe +); + +134  +__REDIRECT_NTH + ( +pow10f +, (), +__exp10f_fe +); + +135 #ifde +__MATH_DECLARE_LDOUBLE + + +136 #ifde +__NO_LONG_DOUBLE_MATH + + +137  +__REDIRECT_NTH + ( +pow10l +, (), +__exp10_fe +); + +139  +__REDIRECT_NTH + ( +pow10l +, (), +__exp10l_fe +); + +144 #ifde +__USE_ISOC99 + + +146  +__REDIRECT_NTH + ( +exp2 +, (), +__exp2_fe +); + +147  +__REDIRECT_NTH + ( +exp2f +, (), +__exp2f_fe +); + +148 #ifde +__MATH_DECLARE_LDOUBLE + + +149 #ifde +__NO_LONG_DOUBLE_MATH + + +150  +__REDIRECT_NTH + ( +exp2l +, (), +__exp2_fe +); + +152  +__REDIRECT_NTH + ( +exp2l +, (), +__exp2l_fe +); + +158  +__REDIRECT_NTH + ( +fmod +, (, ), +__fmod_fe +); + +159 #ifde +__USE_ISOC99 + + +160  +__REDIRECT_NTH + ( +fmodf +, (, ), +__fmodf_fe +); + +161 #ifde +__MATH_DECLARE_LDOUBLE + + +162 #ifde +__NO_LONG_DOUBLE_MATH + + +163  +__REDIRECT_NTH + ( +fmodl +, (, ), + +164 +__fmod_fe +); + +166  +__REDIRECT_NTH + ( +fmodl +, (, ), + +167 +__fmodl_fe +); + +172 #i +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +174  +__REDIRECT_NTH + ( +hyp +, (, ), +__hyp_fe +); + +176 #ifde +__USE_ISOC99 + + +177  +__REDIRECT_NTH + ( +hypf +, (, ), +__hypf_fe +); + +178 #ifde +__MATH_DECLARE_LDOUBLE + + +179 #ifde +__NO_LONG_DOUBLE_MATH + + +180  +__REDIRECT_NTH + ( +hypl +, (, ), + +181 +__hyp_fe +); + +183  +__REDIRECT_NTH + ( +hypl +, (, ), + +184 +__hypl_fe +); + +189 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +191  +__REDIRECT_NTH + ( +j0 +, (), +__j0_fe +); + +193 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +194  +__REDIRECT_NTH + ( +j0f +, (), +__j0f_fe +); + +195 #ifde +__MATH_DECLARE_LDOUBLE + + +196 #ifde +__NO_LONG_DOUBLE_MATH + + +197  +__REDIRECT_NTH + ( +j0l +, (), +__j0_fe +); + +199  +__REDIRECT_NTH + ( +j0l +, (), +__j0l_fe +); + +204 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +206  +__REDIRECT_NTH + ( +y0 +, (), +__y0_fe +); + +208 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +209  +__REDIRECT_NTH + ( +y0f +, (), +__y0f_fe +); + +210 #ifde +__MATH_DECLARE_LDOUBLE + + +211 #ifde +__NO_LONG_DOUBLE_MATH + + +212  +__REDIRECT_NTH + ( +y0l +, (), +__y0_fe +); + +214  +__REDIRECT_NTH + ( +y0l +, (), +__y0l_fe +); + +219 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +221  +__REDIRECT_NTH + ( +j1 +, (), +__j1_fe +); + +223 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +224  +__REDIRECT_NTH + ( +j1f +, (), +__j1f_fe +); + +225 #ifde +__MATH_DECLARE_LDOUBLE + + +226 #ifde +__NO_LONG_DOUBLE_MATH + + +227  +__REDIRECT_NTH + ( +j1l +, (), +__j1_fe +); + +229  +__REDIRECT_NTH + ( +j1l +, (), +__j1l_fe +); + +234 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +236  +__REDIRECT_NTH + ( +y1 +, (), +__y1_fe +); + +238 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +239  +__REDIRECT_NTH + ( +y1f +, (), +__y1f_fe +); + +240 #ifde +__MATH_DECLARE_LDOUBLE + + +241 #ifde +__NO_LONG_DOUBLE_MATH + + +242  +__REDIRECT_NTH + ( +y1l +, (), +__y1_fe +); + +244  +__REDIRECT_NTH + ( +y1l +, (), +__y1l_fe +); + +249 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +251  +__REDIRECT_NTH + ( +jn +, (, ), +__jn_fe +); + +253 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +254  +__REDIRECT_NTH + ( +jnf +, (, ), +__jnf_fe +); + +255 #ifde +__MATH_DECLARE_LDOUBLE + + +256 #ifde +__NO_LONG_DOUBLE_MATH + + +257  +__REDIRECT_NTH + ( +j +, (, ), +__jn_fe +); + +259  +__REDIRECT_NTH + ( +j +, (, ), +__j_fe +); + +264 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +266  +__REDIRECT_NTH + ( +yn +, (, ), +__yn_fe +); + +268 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +269  +__REDIRECT_NTH + ( +ynf +, (, ), +__ynf_fe +); + +270 #ifde +__MATH_DECLARE_LDOUBLE + + +271 #ifde +__NO_LONG_DOUBLE_MATH + + +272  +__REDIRECT_NTH + ( +y +, (, ), +__yn_fe +); + +274  +__REDIRECT_NTH + ( +y +, (, ), +__y_fe +); + +279 #ifde +__USE_MISC + + +281  +__REDIRECT_NTH + ( +lgamma_r +, (, *), +__lgamma_r_fe +); + +282 #ifde +__USE_ISOC99 + + +283  +__REDIRECT_NTH + ( +lgammaf_r +, (, *), +__lgammaf_r_fe +); + +284 #ifde +__MATH_DECLARE_LDOUBLE + + +285 #ifde +__NO_LONG_DOUBLE_MATH + + +286  +__REDIRECT_NTH + ( +lgamm_r +, (, *), + +287 +__lgamma_r_fe +); + +289  +__REDIRECT_NTH + ( +lgamm_r +, (, *), + +290 +__lgamm_r_fe +); + +296  +__lgamma_r_fe + (, *); + +297  +__lgammaf_r_fe + (, *); + +298 #ifde +__NO_LONG_DOUBLE_MATH + + +299  +__REDIRECT_NTH + ( +__lgamm_r_fe +, (, *), + +300 +__lgamma_r_fe +); + +302  +__lgamm_r_fe + (, *); + +305 #i(( +defed + +__USE_XOPEN + || defed +__USE_ISOC99 +) \ + +306 && +defed + + g__ex_ways_le +) + +308 +__ex_ways_le +  +__NTH + ( + $lgamma + ( +__d +)) + +310 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +311  + `__lgamma_r_fe + ( +__d +, & +signgam +); + +313  +__lol_signgam + = 0; + +314  + `__lgamma_r_fe + ( +__d +, & +__lol_signgam +); + +316 + } +} + +318 #i +defed + +__USE_ISOC99 + && defed +__ex_ways_le + + +319 +__ex_ways_le +  +__NTH + ( + $lgammaf + ( +__d +)) + +321 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +322  + `__lgammaf_r_fe + ( +__d +, & +signgam +); + +324  +__lol_signgam + = 0; + +325  + `__lgammaf_r_fe + ( +__d +, & +__lol_signgam +); + +327 + } +} + +328 #ifde +__MATH_DECLARE_LDOUBLE + + +329 +__ex_ways_le +  +__NTH + ( + $lgamm + ( +__d +)) + +331 #i +defed + +__USE_MISC + || defed +__USE_XOPEN + + +332  + `__lgamm_r_fe + ( +__d +, & +signgam +); + +334  +__lol_signgam + = 0; + +335  + `__lgamm_r_fe + ( +__d +, & +__lol_signgam +); + +337 + } +} + +341 #i(( +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +)) \ + +342 && +defed + + g__ex_ways_le +) + +344 +__ex_ways_le +  +__NTH + ( + $gamma + ( +__d +)) + +346  + `__lgamma_r_fe + ( +__d +, & +signgam +); + +347 + } +} + +348 #ifde +__USE_ISOC99 + + +349 +__ex_ways_le +  +__NTH + ( + $gammaf + ( +__d +)) + +351  + `__lgammaf_r_fe + ( +__d +, & +signgam +); + +352 + } +} + +353 #ifde +__MATH_DECLARE_LDOUBLE + + +354 +__ex_ways_le +  +__NTH + ( + $gamm + ( +__d +)) + +356  + `__lgamm_r_fe + ( +__d +, & +signgam +); + +357 + } +} + +363  +__REDIRECT_NTH + ( +log +, (), +__log_fe +); + +364 #ifde +__USE_ISOC99 + + +365  +__REDIRECT_NTH + ( +logf +, (), +__logf_fe +); + +366 #ifde +__MATH_DECLARE_LDOUBLE + + +367 #ifde +__NO_LONG_DOUBLE_MATH + + +368  +__REDIRECT_NTH + ( +logl +, (), +__log_fe +); + +370  +__REDIRECT_NTH + ( +logl +, (), +__logl_fe +); + +376  +__REDIRECT_NTH + ( +log10 +, (), +__log10_fe +); + +377 #ifde +__USE_ISOC99 + + +378  +__REDIRECT_NTH + ( +log10f +, (), +__log10f_fe +); + +379 #ifde +__MATH_DECLARE_LDOUBLE + + +380 #ifde +__NO_LONG_DOUBLE_MATH + + +381  +__REDIRECT_NTH + ( +log10l +, (), +__log10_fe +); + +383  +__REDIRECT_NTH + ( +log10l +, (), +__log10l_fe +); + +388 #ifde +__USE_ISOC99 + + +390  +__REDIRECT_NTH + ( +log2 +, (), +__log2_fe +); + +391  +__REDIRECT_NTH + ( +log2f +, (), +__log2f_fe +); + +392 #ifde +__MATH_DECLARE_LDOUBLE + + +393 #ifde +__NO_LONG_DOUBLE_MATH + + +394  +__REDIRECT_NTH + ( +log2l +, (), +__log2_fe +); + +396  +__REDIRECT_NTH + ( +log2l +, (), +__log2l_fe +); + +402  +__REDIRECT_NTH + ( +pow +, (, ), +__pow_fe +); + +403 #ifde +__USE_ISOC99 + + +404  +__REDIRECT_NTH + ( +powf +, (, ), +__powf_fe +); + +405 #ifde +__MATH_DECLARE_LDOUBLE + + +406 #ifde +__NO_LONG_DOUBLE_MATH + + +407  +__REDIRECT_NTH + ( +powl +, (, ), + +408 +__pow_fe +); + +410  +__REDIRECT_NTH + ( +powl +, (, ), + +411 +__powl_fe +); + +416 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +418  +__REDIRECT_NTH + ( +mad +, (, ), +__mad_fe +); + +420 #ifde +__USE_ISOC99 + + +421  +__REDIRECT_NTH + ( +madf +, (, ), +__madf_fe +); + +422 #ifde +__MATH_DECLARE_LDOUBLE + + +423 #ifde +__NO_LONG_DOUBLE_MATH + + +424  +__REDIRECT_NTH + ( +madl +, (, ), + +425 +__mad_fe +); + +427  +__REDIRECT_NTH + ( +madl +, (, ), + +428 +__madl_fe +); + +433 #i( +defed + +__USE_MISC + \ + +434 || ( +defed + + g__USE_XOPEN_EXTENDED + && !defed + g__USE_XOPEN2K8 +)) + +436  +__REDIRECT_NTH + ( +slb +, (, ), +__slb_fe +); + +438 #i +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +439  +__REDIRECT_NTH + ( +slbf +, (, ), +__slbf_fe +); + +440 #ifde +__MATH_DECLARE_LDOUBLE + + +441 #ifde +__NO_LONG_DOUBLE_MATH + + +442  +__REDIRECT_NTH + ( +slbl +, (, ), + +443 +__slb_fe +); + +445  +__REDIRECT_NTH + ( +slbl +, (, ), + +446 +__slbl_fe +); + +452  +__REDIRECT_NTH + ( +sh +, (), +__sh_fe +); + +453 #ifde +__USE_ISOC99 + + +454  +__REDIRECT_NTH + ( +shf +, (), +__shf_fe +); + +455 #ifde +__MATH_DECLARE_LDOUBLE + + +456 #ifde +__NO_LONG_DOUBLE_MATH + + +457  +__REDIRECT_NTH + ( +shl +, (), +__sh_fe +); + +459  +__REDIRECT_NTH + ( +shl +, (), +__shl_fe +); + +465  +__REDIRECT_NTH + ( +sq +, (), +__sq_fe +); + +466 #ifde +__USE_ISOC99 + + +467  +__REDIRECT_NTH + ( +sqf +, (), +__sqf_fe +); + +468 #ifde +__MATH_DECLARE_LDOUBLE + + +469 #ifde +__NO_LONG_DOUBLE_MATH + + +470  +__REDIRECT_NTH + ( +sql +, (), +__sq_fe +); + +472  +__REDIRECT_NTH + ( +sql +, (), +__sql_fe +); + +477 #i +defed + +__USE_ISOC99 + && defed +__ex_ways_le + + +479  +__gamma_r_fe + (, *); + +480 +__ex_ways_le +  +__NTH + ( + $tgamma + ( +__d +)) + +482  +__lol_signgam + = 0; + +483  +__s + = + `__gamma_r_fe + ( +__d +, & +__lol_signgam +); + +484  +__lol_signgam + < 0 ? - +__s + : __res; + +485 + } +} + +486  +__gammaf_r_fe + (, *); + +487 +__ex_ways_le +  +__NTH + ( + $tgammaf + ( +__d +)) + +489  +__lol_signgam + = 0; + +490  +__s + = + `__gammaf_r_fe + ( +__d +, & +__lol_signgam +); + +491  +__lol_signgam + < 0 ? - +__s + : __res; + +492 + } +} + +493 #ifde +__MATH_DECLARE_LDOUBLE + + +494  +__gamm_r_fe + (, *); + +495 +__ex_ways_le +  +__NTH + ( + $tgamm + ( +__d +)) + +497  +__lol_signgam + = 0; + +498 #ifde +__NO_LONG_DOUBLE_MATH + + +499  +__s + = + `__gamma_r_fe + ( +__d +, & +__lol_signgam +); + +501  +__s + = + `__gamm_r_fe + ( +__d +, & +__lol_signgam +); + +503  +__lol_signgam + < 0 ? - +__s + : __res; + +504 + } +} + + @/usr/include/bits/math-vector.h + +19 #ide +_MATH_H + + +25  + ~ + +27 #i +defed + +__x86_64__ + && defed +__FAST_MATH__ + + +28 #i +defed + +_OPENMP + && _OPENMP >= 201307 + +30  + #__DECL_SIMD_x86_64 + + `_Pgma + ("omdesimdٚbnch") + + ) + +31 #i +__GNUC_PREREQ + (6,0) + +33  + #__DECL_SIMD_x86_64 + + `__ibu__ + (( + `__simd__ + ("nٚbnch"))) + + ) + +36 #ifde +__DECL_SIMD_x86_64 + + +37 #unde +__DECL_SIMD_cos + + +38  + #__DECL_SIMD_cos + +__DECL_SIMD_x86_64 + + + ) + +39 #unde +__DECL_SIMD_cosf + + +40  + #__DECL_SIMD_cosf + +__DECL_SIMD_x86_64 + + + ) + +41 #unde +__DECL_SIMD_s + + +42  + #__DECL_SIMD_s + +__DECL_SIMD_x86_64 + + + ) + +43 #unde +__DECL_SIMD_sf + + +44  + #__DECL_SIMD_sf + +__DECL_SIMD_x86_64 + + + ) + +45 #unde +__DECL_SIMD_scos + + +46  + #__DECL_SIMD_scos + +__DECL_SIMD_x86_64 + + + ) + +47 #unde +__DECL_SIMD_scosf + + +48  + #__DECL_SIMD_scosf + +__DECL_SIMD_x86_64 + + + ) + +49 #unde +__DECL_SIMD_log + + +50  + #__DECL_SIMD_log + +__DECL_SIMD_x86_64 + + + ) + +51 #unde +__DECL_SIMD_logf + + +52  + #__DECL_SIMD_logf + +__DECL_SIMD_x86_64 + + + ) + +53 #unde +__DECL_SIMD_exp + + +54  + #__DECL_SIMD_exp + +__DECL_SIMD_x86_64 + + + ) + +55 #unde +__DECL_SIMD_expf + + +56  + #__DECL_SIMD_expf + +__DECL_SIMD_x86_64 + + + ) + +57 #unde +__DECL_SIMD_pow + + +58  + #__DECL_SIMD_pow + +__DECL_SIMD_x86_64 + + + ) + +59 #unde +__DECL_SIMD_powf + + +60  + #__DECL_SIMD_powf + +__DECL_SIMD_x86_64 + + + ) + + @/usr/include/bits/mathcalls.h + +45 #ide +_MATH_H + + +52 +_Mdoub_BEGIN_NAMESPACE + + +54 +__MATHCALL + ( +acos +,, ( +_Mdoub_ + +__x +)); + +56 +__MATHCALL + ( +as +,, ( +_Mdoub_ + +__x +)); + +58 +__MATHCALL + ( + +,, ( +_Mdoub_ + +__x +)); + +60 +__MATHCALL + ( +2 +,, ( +_Mdoub_ + +__y +, _Mdoub_ +__x +)); + +63 +__MATHCALL_VEC + ( +cos +,, ( +_Mdoub_ + +__x +)); + +65 +__MATHCALL_VEC + ( +s +,, ( +_Mdoub_ + +__x +)); + +67 +__MATHCALL + ( +n +,, ( +_Mdoub_ + +__x +)); + +72 +__MATHCALL + ( +cosh +,, ( +_Mdoub_ + +__x +)); + +74 +__MATHCALL + ( +sh +,, ( +_Mdoub_ + +__x +)); + +76 +__MATHCALL + ( +nh +,, ( +_Mdoub_ + +__x +)); + +77 + g_Mdoub_END_NAMESPACE + + +79 #ifde +__USE_GNU + + +81 +__MATHDECL_VEC + (, +scos +,, + +82 ( +_Mdoub_ + +__x +, _Mdoub_ * +__sx +, _Mdoub_ * +__cosx +)); + +85 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +86 +__BEGIN_NAMESPACE_C99 + + +88 +__MATHCALL + ( +acosh +,, ( +_Mdoub_ + +__x +)); + +90 +__MATHCALL + ( +ash +,, ( +_Mdoub_ + +__x +)); + +92 +__MATHCALL + ( +h +,, ( +_Mdoub_ + +__x +)); + +93 + g__END_NAMESPACE_C99 + + +98 +_Mdoub_BEGIN_NAMESPACE + + +100 +__MATHCALL_VEC + ( +exp +,, ( +_Mdoub_ + +__x +)); + +103 +__MATHCALL + ( +exp +,, ( +_Mdoub_ + +__x +, * +__expڒt +)); + +106 +__MATHCALL + ( +ldexp +,, ( +_Mdoub_ + +__x +,  +__expڒt +)); + +109 +__MATHCALL_VEC + ( +log +,, ( +_Mdoub_ + +__x +)); + +112 +__MATHCALL + ( +log10 +,, ( +_Mdoub_ + +__x +)); + +115 +__MATHCALL + ( +modf +,, ( +_Mdoub_ + +__x +, _Mdoub_ * +__ +) +__nnu + ((2)); + +116 + g_Mdoub_END_NAMESPACE + + +118 #ifde +__USE_GNU + + +120 +__MATHCALL + ( +exp10 +,, ( +_Mdoub_ + +__x +)); + +122 +__MATHCALL + ( +pow10 +,, ( +_Mdoub_ + +__x +)); + +125 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +126 +__BEGIN_NAMESPACE_C99 + + +128 +__MATHCALL + ( +expm1 +,, ( +_Mdoub_ + +__x +)); + +131 +__MATHCALL + ( +log1p +,, ( +_Mdoub_ + +__x +)); + +134 +__MATHCALL + ( +logb +,, ( +_Mdoub_ + +__x +)); + +135 + g__END_NAMESPACE_C99 + + +138 #ifde +__USE_ISOC99 + + +139 +__BEGIN_NAMESPACE_C99 + + +141 +__MATHCALL + ( +exp2 +,, ( +_Mdoub_ + +__x +)); + +144 +__MATHCALL + ( +log2 +,, ( +_Mdoub_ + +__x +)); + +145 + g__END_NAMESPACE_C99 + + +151 +_Mdoub_BEGIN_NAMESPACE + + +153 +__MATHCALL_VEC + ( +pow +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +156 +__MATHCALL + ( +sq +,, ( +_Mdoub_ + +__x +)); + +157 + g_Mdoub_END_NAMESPACE + + +159 #i +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +160 +__BEGIN_NAMESPACE_C99 + + +162 +__MATHCALL + ( +hyp +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +163 + g__END_NAMESPACE_C99 + + +166 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +167 +__BEGIN_NAMESPACE_C99 + + +169 +__MATHCALL + ( +cb +,, ( +_Mdoub_ + +__x +)); + +170 + g__END_NAMESPACE_C99 + + +176 +_Mdoub_BEGIN_NAMESPACE + + +178 +__MATHCALLX + ( + +,, ( +_Mdoub_ + +__x +), ( +__cڡ__ +)); + +181 +__MATHCALLX + ( +bs +,, ( +_Mdoub_ + +__x +), ( +__cڡ__ +)); + +184 +__MATHCALLX + ( +o +,, ( +_Mdoub_ + +__x +), ( +__cڡ__ +)); + +187 +__MATHCALL + ( +fmod +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +192 +__MATHDECL_1 + (, +__isf +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +195 +__MATHDECL_1 + (, +__fe +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +196 + g_Mdoub_END_NAMESPACE + + +198 #ifde +__USE_MISC + + +199 #i(! +defed + +__lulus + \ + +200 || + g__lulus + < 201103L \ + +201 || + g__MATH_DECLARING_DOUBLE + == 0) + +204 +__MATHDECL_1 + (, +isf +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +208 +__MATHDECL_1 + (, +fe +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +211 +__MATHCALL + ( +dm +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +215 +__MATHCALL + ( +signifind +,, ( +_Mdoub_ + +__x +)); + +218 #ifde +__USE_ISOC99 + + +219 +__BEGIN_NAMESPACE_C99 + + +221 +__MATHCALLX + ( +cysign +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +), ( +__cڡ__ +)); + +222 + g__END_NAMESPACE_C99 + + +225 #ifde +__USE_ISOC99 + + +226 +__BEGIN_NAMESPACE_C99 + + +228 +__MATHCALLX + ( +n +,, (cڡ * +__gb +), ( +__cڡ__ +)); + +229 + g__END_NAMESPACE_C99 + + +234 +__MATHDECL_1 + (, +__i +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +236 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +237 #i(! +defed + +__lulus + \ + +238 || + g__lulus + < 201103L \ + +239 || + g__MATH_DECLARING_DOUBLE + == 0) + +241 +__MATHDECL_1 + (, +i +,, ( +_Mdoub_ + +__vue +) +__ibu__ + (( +__cڡ__ +)); + +245 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN + && +__MATH_DECLARING_DOUBLE +) + +247 +__MATHCALL + ( +j0 +,, ( +_Mdoub_ +)); + +248 +__MATHCALL + ( +j1 +,, ( +_Mdoub_ +)); + +249 +__MATHCALL + ( +jn +,, (, +_Mdoub_ +)); + +250 +__MATHCALL + ( +y0 +,, ( +_Mdoub_ +)); + +251 +__MATHCALL + ( +y1 +,, ( +_Mdoub_ +)); + +252 +__MATHCALL + ( +yn +,, (, +_Mdoub_ +)); + +256 #i +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +257 +__BEGIN_NAMESPACE_C99 + + +259 +__MATHCALL + ( +f +,, ( +_Mdoub_ +)); + +260 +__MATHCALL + ( +fc +,, ( +_Mdoub_ +)); + +261 +__MATHCALL + ( +lgamma +,, ( +_Mdoub_ +)); + +262 + g__END_NAMESPACE_C99 + + +265 #ifde +__USE_ISOC99 + + +266 +__BEGIN_NAMESPACE_C99 + + +268 +__MATHCALL + ( +tgamma +,, ( +_Mdoub_ +)); + +269 + g__END_NAMESPACE_C99 + + +272 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +274 +__MATHCALL + ( +gamma +,, ( +_Mdoub_ +)); + +277 #ifde +__USE_MISC + + +281 +__MATHCALL + ( +lgamma +, +_r +, ( +_Mdoub_ +, * +__signgamp +)); + +285 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +286 +__BEGIN_NAMESPACE_C99 + + +289 +__MATHCALL + ( +rt +,, ( +_Mdoub_ + +__x +)); + +292 +__MATHCALLX + ( +x +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +), ( +__cڡ__ +)); + +293 #i +defed + +__USE_ISOC99 + && !defed +__LDBL_COMPAT + + +294 +__MATHCALLX + ( +xowd +,, ( +_Mdoub_ + +__x +,  +__y +), ( +__cڡ__ +)); + +298 +__MATHCALL + ( +mad +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +300 #ifde +__USE_ISOC99 + + +302 +__MATHCALL + ( +slbn +,, ( +_Mdoub_ + +__x +,  +__n +)); + +306 +__MATHDECL + (, +ogb +,, ( +_Mdoub_ + +__x +)); + +309 #ifde +__USE_ISOC99 + + +311 +__MATHCALL + ( +slb +,, ( +_Mdoub_ + +__x +,  +__n +)); + +315 +__MATHCALL + ( +ìbyt +,, ( +_Mdoub_ + +__x +)); + +319 +__MATHCALLX + ( +round +,, ( +_Mdoub_ + +__x +), ( +__cڡ__ +)); + +323 +__MATHCALLX + ( +unc +,, ( +_Mdoub_ + +__x +), ( +__cڡ__ +)); + +328 +__MATHCALL + ( +mquo +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +, * +__quo +)); + +335 +__MATHDECL + (, +̚t +,, ( +_Mdoub_ + +__x +)); + +336 +__exnsi__ + + +337 +__MATHDECL + (, +rt +,, ( +_Mdoub_ + +__x +)); + +341 +__MATHDECL + (, +ound +,, ( +_Mdoub_ + +__x +)); + +342 +__exnsi__ + + +343 +__MATHDECL + (, +round +,, ( +_Mdoub_ + +__x +)); + +347 +__MATHCALL + ( +fdim +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +)); + +350 +__MATHCALLX + ( +fmax +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +), ( +__cڡ__ +)); + +353 +__MATHCALLX + ( +fm +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +), ( +__cڡ__ +)); + +357 +__MATHDECL_1 + (, +__assify +,, ( +_Mdoub_ + +__vue +)) + +358 +__ibu__ + (( +__cڡ__ +)); + +361 +__MATHDECL_1 + (, +__signb +,, ( +_Mdoub_ + +__vue +)) + +362 +__ibu__ + (( +__cڡ__ +)); + +366 +__MATHCALL + ( +fma +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__y +, _Mdoub_ +__z +)); + +369 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +370 + g__END_NAMESPACE_C99 + + +373 #ifde +__USE_GNU + + +375 +__MATHDECL_1 + (, +__issiglg +,, ( +_Mdoub_ + +__vue +)) + +376 +__ibu__ + (( +__cڡ__ +)); + +379 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN_EXTENDED + \ + +380 && + g__MATH_DECLARING_DOUBLE + \ + +381 && ! +defed + + g__USE_XOPEN2K8 +) + +383 +__MATHCALL + ( +slb +,, ( +_Mdoub_ + +__x +, _Mdoub_ +__n +)); + + @/usr/include/bits/mathdef.h + +18 #i! +defed + +_MATH_H + && !defed +_COMPLEX_H + + +22 #i +defed + +__USE_ISOC99 + && defed +_MATH_H + && !defed +_MATH_H_MATHDEF + + +23  + #_MATH_H_MATHDEF + 1 + + ) + +25 #i +defed + +__x86_64__ + || (defed +__FLT_EVAL_METHOD__ + && __FLT_EVAL_METHOD__ == 0) + +28  + tt_t +; + +29  + tdoub_t +; + +35  + tt_t +; + +37  + tdoub_t +; + +42  + #FP_ILOGB0 + (-2147483647 - 1) + + ) + +43  + #FP_ILOGBNAN + (-2147483647 - 1) + + ) + +47 #ifde +__FP_FAST_FMA + + +48  + #FP_FAST_FMA + 1 + + ) + +51 #ifde +__FP_FAST_FMAF + + +52  + #FP_FAST_FMAF + 1 + + ) + +55 #ifde +__FP_FAST_FMAL + + +56  + #FP_FAST_FMAL + 1 + + ) + + @/usr/include/bits/mathinline.h + +19 #ide +_MATH_H + + +23 #ide +__ex_ways_le + + +24  + #__MATH_INLINE + +__le + + + ) + +26  + #__MATH_INLINE + +__ex_ways_le + + + ) + +30 #i +defed + +__USE_ISOC99 + && defed +__GNUC__ + && __GNUC__ >= 2 + +32 #i! +__GNUC_PREREQ + (2,97) + +37 #unde +isg + + +38 #unde +isgequ + + +39 #unde +iess + + +40 #unde +iesqu + + +41 #unde +iessg + + +42 #unde +isunded + + +43 #ifde +__i686__ + + +46  + #isg +( +x +, +y +) \ + +47 ({  +__su +; \ + +48 + `__asm__ + ("fucomip %%st(1), %%st; seta %%al" \ + +49 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +50 +__su +; }) + + ) + +51  + #isgequ +( +x +, +y +) \ + +52 ({  +__su +; \ + +53 + `__asm__ + ("fucomip %%st(1), %%st; setae %%al" \ + +54 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +55 +__su +; }) + + ) + +57  + #iess +( +x +, +y +) \ + +58 ({  +__su +; \ + +59 + `__asm__ + ("fucomip %%st(1), %%st; seta %%al" \ + +60 : "" ( +__su +: "u" ( +x +), "t" ( +y +) : "cc", "st"); \ + +61 +__su +; }) + + ) + +63  + #iesqu +( +x +, +y +) \ + +64 ({  +__su +; \ + +65 + `__asm__ + ("fucomip %%st(1), %%st; setae %%al" \ + +66 : "" ( +__su +: "u" ( +x +), "t" ( +y +) : "cc", "st"); \ + +67 +__su +; }) + + ) + +69  + #iessg +( +x +, +y +) \ + +70 ({  +__su +; \ + +71 + `__asm__ + ("fucomip %%st(1), %%st; setne %%al" \ + +72 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +73 +__su +; }) + + ) + +75  + #isunded +( +x +, +y +) \ + +76 ({  +__su +; \ + +77 + `__asm__ + ("fucomip %%st(1), %%st; setp %%al" \ + +78 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +79 +__su +; }) + + ) + +82  + #isg +( +x +, +y +) \ + +83 ({  +__su +; \ + +84 + `__asm__ + ("fucompp; fnstsw;estb $0x45, %%ah; setz %%al" \ + +85 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st", "st(1)"); \ + +86 +__su +; }) + + ) + +88  + #isgequ +( +x +, +y +) \ + +89 ({  +__su +; \ + +90 + `__asm__ + ("fucompp; fnstsw;estb $0x05, %%ah; setz %%al" \ + +91 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st", "st(1)"); \ + +92 +__su +; }) + + ) + +94  + #iess +( +x +, +y +) \ + +95 ({  +__su +; \ + +96 + `__asm__ + ("fucompp; fnstsw;estb $0x45, %%ah; setz %%al" \ + +97 : "" ( +__su +: "u" ( +x +), "t" ( +y +) : "cc", "st", "st(1)"); \ + +98 +__su +; }) + + ) + +100  + #iesqu +( +x +, +y +) \ + +101 ({  +__su +; \ + +102 + `__asm__ + ("fucompp; fnstsw;estb $0x05, %%ah; setz %%al" \ + +103 : "" ( +__su +: "u" ( +x +), "t" ( +y +) : "cc", "st", "st(1)"); \ + +104 +__su +; }) + + ) + +106  + #iessg +( +x +, +y +) \ + +107 ({  +__su +; \ + +108 + `__asm__ + ("fucompp; fnstsw;estb $0x44, %%ah; setz %%al" \ + +109 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st", "st(1)"); \ + +110 +__su +; }) + + ) + +112  + #isunded +( +x +, +y +) \ + +113 ({  +__su +; \ + +114 + `__asm__ + ("fucompp; fnstsw; sahf; setp %%al" \ + +115 : "" ( +__su +: "u" ( +y +), "t" ( +x +) : "cc", "st", "st(1)"); \ + +116 +__su +; }) + + ) + +122 #i +__GNUC_PREREQ + (2, 8) + +123 +__BEGIN_NAMESPACE_C99 + + +126 +__MATH_INLINE +  + +127 +__NTH + ( + $__signbf + ( +__x +)) + +129 #ifde +__SSE2_MATH__ + + +130  +__m +; + +131 + `__asm + ("pmovmskb %1, %0" : "" ( +__m +: "x" ( +__x +)); + +132  ( +__m + & 0x8) != 0; + +134 +__exnsi__ + uni {  +__f +;  +__i +; } +__u + = { __f: +__x + }; + +135  +__u +. +__i + < 0; + +137 + } +} + +138 +__MATH_INLINE +  + +139 +__NTH + ( + $__signb + ( +__x +)) + +141 #ifde +__SSE2_MATH__ + + +142  +__m +; + +143 + `__asm + ("pmovmskb %1, %0" : "" ( +__m +: "x" ( +__x +)); + +144  ( +__m + & 0x80) != 0; + +146 +__exnsi__ + uni {  +__d +;  +__i +[2]; } +__u + = { __d: +__x + }; + +147  +__u +. +__i +[1] < 0; + +149 + } +} + +150 +__MATH_INLINE +  + +151 +__NTH + ( + $__signbl + ( +__x +)) + +153 +__exnsi__ + uni {  +__l +;  +__i +[3]; } +__u + = { __l: +__x + }; + +154  ( +__u +. +__i +[2] & 0x8000) != 0; + +155 + } +} + +157 + g__END_NAMESPACE_C99 + + +164 #i +__GNUC_PREREQ + (2, 8) + +165 #i! +__GNUC_PREREQ + (3, 4&& ! +defed + +__NO_MATH_INLINES + \ + +166 && +defed + + g__OPTIMIZE__ + + +170 #ifde +__USE_ISOC99 + + +171 + g__BEGIN_NAMESPACE_C99 + + +174 #ifde +__SSE_MATH__ + + +175 +__MATH_INLINE +  + +176 +__NTH + ( + $̚tf + ( +__x +)) + +178  +__s +; + +183 +__asm + + `__vީe__ + ("cvtss2s%1, %0" : "" ( +__s +: "xm" ( +__x +)); + +184  +__s +; + +185 + } +} + +187 #ifde +__SSE2_MATH__ + + +188 +__MATH_INLINE +  + +189 +__NTH + ( + $̚t + ( +__x +)) + +191  +__s +; + +196 +__asm + + `__vީe__ + ("cvtsd2s%1, %0" : "" ( +__s +: "xm" ( +__x +)); + +197  +__s +; + +198 + } +} + +200 #ifde +__x86_64__ + + +201 +__exnsi__ + + +202 +__MATH_INLINE +  + +203 +__NTH + ( + $rtf + ( +__x +)) + +205  +__s +; + +210 +__asm + + `__vީe__ + ("cvtss2s%1, %0" : "" ( +__s +: "xm" ( +__x +)); + +211  +__s +; + +212 + } +} + +213 +__exnsi__ + + +214 +__MATH_INLINE +  + +215 +__NTH + ( + $rt + ( +__x +)) + +217  +__s +; + +222 +__asm + + `__vީe__ + ("cvtsd2s%1, %0" : "" ( +__s +: "xm" ( +__x +)); + +223  +__s +; + +224 + } +} + +227 #i +defed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 \ + +228 && +defed + +__SSE2_MATH__ + + +230 +__MATH_INLINE +  + +231 +__NTH + ( + $fmaxf + ( +__x +,  +__y +)) + +233 #ifde +__AVX__ + + +234  +__s +; + +235 + `__asm + ("vmaxs%2, %1, %0" : "=x" ( +__s +: "x" ( +x +), "xm" ( +__y +)); + +236  +__s +; + +238 + `__asm + ("maxs%1, %0" : "+x" ( +__x +: "xm" ( +__y +)); + +239  +__x +; + +241 + } +} + +242 +__MATH_INLINE +  + +243 +__NTH + ( + $fmax + ( +__x +,  +__y +)) + +245 #ifde +__AVX__ + + +246  +__s +; + +247 + `__asm + ("vmaxsd %2, %1, %0" : "=x" ( +__s +: "x" ( +x +), "xm" ( +__y +)); + +248  +__s +; + +250 + `__asm + ("maxsd %1, %0" : "+x" ( +__x +: "xm" ( +__y +)); + +251  +__x +; + +253 + } +} + +256 +__MATH_INLINE +  + +257 +__NTH + ( + $fmf + ( +__x +,  +__y +)) + +259 #ifde +__AVX__ + + +260  +__s +; + +261 + `__asm + ("vms%2, %1, %0" : "=x" ( +__s +: "x" ( +x +), "xm" ( +__y +)); + +262  +__s +; + +264 + `__asm + ("ms%1, %0" : "+x" ( +__x +: "xm" ( +__y +)); + +265  +__x +; + +267 + } +} + +268 +__MATH_INLINE +  + +269 +__NTH + ( + $fm + ( +__x +,  +__y +)) + +271 #ifde +__AVX__ + + +272  +__s +; + +273 + `__asm + ("vmsd %2, %1, %0" : "=x" ( +__s +: "x" ( +x +), "xm" ( +__y +)); + +274  +__s +; + +276 + `__asm + ("msd %1, %0" : "+x" ( +__x +: "xm" ( +__y +)); + +277  +__x +; + +279 + } +} + +282 + g__END_NAMESPACE_C99 + + +285 #i +defed + +__SSE4_1__ + && defed +__SSE2_MATH__ + + +286 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +287 +__BEGIN_NAMESPACE_C99 + + +290 +__MATH_INLINE +  + +291 +__NTH + ( + $rt + ( +__x +)) + +293  +__s +; + +298 +__asm + + `__vީe__ + ("roundsd $4, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +299  +__s +; + +300 + } +} + +301 +__MATH_INLINE +  + +302 +__NTH + ( + $rtf + ( +__x +)) + +304  +__s +; + +309 +__asm + + `__vީe__ + ("rounds$4, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +310  +__s +; + +311 + } +} + +313 #ifde +__USE_ISOC99 + + +315 +__MATH_INLINE +  + +316 +__NTH + ( + $ìbyt + ( +__x +)) + +318  +__s +; + +323 +__asm + + `__vީe__ + ("roundsd $0xc, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +324  +__s +; + +325 + } +} + +326 +__MATH_INLINE +  + +327 +__NTH + ( + $ìbytf + ( +__x +)) + +329  +__s +; + +334 +__asm + + `__vީe__ + ("rounds$0xc, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +335  +__s +; + +336 + } +} + +339 + g__END_NAMESPACE_C99 + + +342 +__BEGIN_NAMESPACE_STD + + +344 +__MATH_INLINE +  + +345 +__NTH + ( + $ + ( +__x +)) + +347  +__s +; + +348 + `__asm + ("roundsd $2, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +349  +__s +; + +350 + } +} + +351 +__END_NAMESPACE_STD + + +353 +__BEGIN_NAMESPACE_C99 + + +354 +__MATH_INLINE +  + +355 +__NTH + ( + $f + ( +__x +)) + +357  +__s +; + +358 + `__asm + ("rounds$2, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +359  +__s +; + +360 + } +} + +361 +__END_NAMESPACE_C99 + + +363 +__BEGIN_NAMESPACE_STD + + +365 +__MATH_INLINE +  + +366 +__NTH + ( + $o + ( +__x +)) + +368  +__s +; + +369 + `__asm + ("roundsd $1, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +370  +__s +; + +371 + } +} + +372 +__END_NAMESPACE_STD + + +374 +__BEGIN_NAMESPACE_C99 + + +375 +__MATH_INLINE +  + +376 +__NTH + ( + $of + ( +__x +)) + +378  +__s +; + +379 + `__asm + ("rounds$1, %1, %0" : "=x" ( +__s +: "xm" ( +__x +)); + +380  +__s +; + +381 + } +} + +382 + g__END_NAMESPACE_C99 + + +390 #i! +defed + +__SSE2_MATH__ + && !defed +__x86_64__ + + +391 #i((! +defed + +__NO_MATH_INLINES + || defed +__LIBC_INTERNAL_MATH_INLINES +) \ + +392 && +defed + + g__OPTIMIZE__ +) + +396 #unde +mh_rhdlg + + +405 #ifde +__USE_ISOC99 + + +406  + #__le_mh +( +func +, + +) \ + +407 + `__le_mh_ + (, +func +, + +) \ + +408 + `__le_mh_ + (, + `__CONCAT +( +func +, +f +), + +) \ + +409 + `__le_mh_ + (, + `__CONCAT +( +func +, +l +), + +) + + ) + +410  + #__le_mhNP +( +func +, + +) \ + +411 + `__le_mhNP_ + (, +func +, + +) \ + +412 + `__le_mhNP_ + (, + `__CONCAT +( +func +, +f +), + +) \ + +413 + `__le_mhNP_ + (, + `__CONCAT +( +func +, +l +), + +) + + ) + +415  + #__le_mh +( +func +, + +) \ + +416 + `__le_mh_ + (, +func +, + +) + + ) + +417  + #__le_mhNP +( +func +, + +) \ + +418 + `__le_mhNP_ + (, +func +, + +) + + ) + +421  + #__le_mh_ +( +t_ty +, +func +, + +) \ + +422 + `__le_mh_de_ + ( +t_ty +, +func +, + +, "0" ( +__x +)) + + ) + +423  + #__le_mhNP_ +( +t_ty +, +func +, + +) \ + +424 + `__le_mh_deNP_ + ( +t_ty +, +func +, + +, "0" ( +__x +)) + + ) + +427 #ifde +__USE_ISOC99 + + +428  + #__le_mh_de +( +func +, + +, +ms +...) \ + +429 + `__le_mh_de_ + (, +func +, + +, +ms +) \ + +430 + `__le_mh_de_ + (, + `__CONCAT +( +func +, +f +), + +, +ms +) \ + +431 + `__le_mh_de_ + (, + `__CONCAT +( +func +, +l +), + +, +ms +) + + ) + +432  + #__le_mh_deNP +( +func +, + +, +ms +...) \ + +433 + `__le_mh_deNP_ + (, +func +, + +, +ms +) \ + +434 + `__le_mh_deNP_ + (, + `__CONCAT +( +func +, +f +), + +, +ms +) \ + +435 + `__le_mh_deNP_ + (, + `__CONCAT +( +func +, +l +), + +, +ms +) + + ) + +437  + #__le_mh_de +( +func +, + +, +ms +...) \ + +438 + `__le_mh_de_ + (, +func +, + +, +ms +) + + ) + +439  + #__le_mh_deNP +( +func +, + +, +ms +...) \ + +440 + `__le_mh_deNP_ + (, +func +, + +, +ms +) + + ) + +443  + #__le_mh_de_ +( +t_ty +, +func +, + +, +ms +...) \ + +444 +__MATH_INLINE + +t_ty + + `func + (t_ty +__THROW +; \ + +445 + `__le_mh_deNP_ + ( +t_ty +, +func +, + +, +ms +) + + ) + +447  + #__le_mh_deNP_ +( +t_ty +, +func +, + +, +ms +...) \ + +448 +__MATH_INLINE + +t_ty + + `__NTH + ( + `func + (t_ty +__x +)) \ + +450  +t_ty + +__su +; \ + +451 +__asm + + `__vީe__ + ( + + : "" ( +__su +: +ms +); \ + +452  +__su +; \ + +453 } + + ) + +456 #ifde +__USE_ISOC99 + + +457  + #__le_mhcode +( +func +, +g +, +code +) \ + +458 + `__le_mhcode_ + (, +func +, +g +, +code +) \ + +459 + `__le_mhcode_ + (, + `__CONCAT +( +func +, +f +), +g +, +code +) \ + +460 + `__le_mhcode_ + (, + `__CONCAT +( +func +, +l +), +g +, +code +) + + ) + +461  + #__le_mhcodeNP +( +func +, +g +, +code +) \ + +462 + `__le_mhcodeNP_ + (, +func +, +g +, +code +) \ + +463 + `__le_mhcodeNP_ + (, + `__CONCAT +( +func +, +f +), +g +, +code +) \ + +464 + `__le_mhcodeNP_ + (, + `__CONCAT +( +func +, +l +), +g +, +code +) + + ) + +465  + #__le_mhcode2 +( +func +, +g1 +, +g2 +, +code +) \ + +466 + `__le_mhcode2_ + (, +func +, +g1 +, +g2 +, +code +) \ + +467 + `__le_mhcode2_ + (, + `__CONCAT +( +func +, +f +), +g1 +, +g2 +, +code +) \ + +468 + `__le_mhcode2_ + (, + `__CONCAT +( +func +, +l +), +g1 +, +g2 +, +code +) + + ) + +469  + #__le_mhcodeNP2 +( +func +, +g1 +, +g2 +, +code +) \ + +470 + `__le_mhcodeNP2_ + (, +func +, +g1 +, +g2 +, +code +) \ + +471 + `__le_mhcodeNP2_ + (, + `__CONCAT +( +func +, +f +), +g1 +, +g2 +, +code +) \ + +472 + `__le_mhcodeNP2_ + (, + `__CONCAT +( +func +, +l +), +g1 +, +g2 +, +code +) + + ) + +473  + #__le_mhcode3 +( +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +474 + `__le_mhcode3_ + (, +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +475 + `__le_mhcode3_ + (, + `__CONCAT +( +func +, +f +), +g1 +, +g2 +, +g3 +, +code +) \ + +476 + `__le_mhcode3_ + (, + `__CONCAT +( +func +, +l +), +g1 +, +g2 +, +g3 +, +code +) + + ) + +477  + #__le_mhcodeNP3 +( +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +478 + `__le_mhcodeNP3_ + (, +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +479 + `__le_mhcodeNP3_ + (, + `__CONCAT +( +func +, +f +), +g1 +, +g2 +, +g3 +, +code +) \ + +480 + `__le_mhcodeNP3_ + (, + `__CONCAT +( +func +, +l +), +g1 +, +g2 +, +g3 +, +code +) + + ) + +482  + #__le_mhcode +( +func +, +g +, +code +) \ + +483 + `__le_mhcode_ + (, +func +, ( +g +), +code +) + + ) + +484  + #__le_mhcodeNP +( +func +, +g +, +code +) \ + +485 + `__le_mhcodeNP_ + (, +func +, ( +g +), +code +) + + ) + +486  + #__le_mhcode2 +( +func +, +g1 +, +g2 +, +code +) \ + +487 + `__le_mhcode2_ + (, +func +, +g1 +, +g2 +, +code +) + + ) + +488  + #__le_mhcodeNP2 +( +func +, +g1 +, +g2 +, +code +) \ + +489 + `__le_mhcodeNP2_ + (, +func +, +g1 +, +g2 +, +code +) + + ) + +490  + #__le_mhcode3 +( +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +491 + `__le_mhcode3_ + (, +func +, +g1 +, +g2 +, +g3 +, +code +) + + ) + +492  + #__le_mhcodeNP3 +( +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +493 + `__le_mhcodeNP3_ + (, +func +, +g1 +, +g2 +, +g3 +, +code +) + + ) + +496  + #__le_mhcode_ +( +t_ty +, +func +, +g +, +code +) \ + +497 +__MATH_INLINE + +t_ty + + `func + (t_ty +__THROW +; \ + +498 + `__le_mhcodeNP_ +( +t_ty +, +func +, +g +, +code +) + + ) + +500  + #__le_mhcodeNP_ +( +t_ty +, +func +, +g +, +code +) \ + +501 +__MATH_INLINE + +t_ty + + `__NTH + ( + `func + (t_ty +g +)) \ + +503 +code +; \ + +504 } + + ) + +507  + #__le_mhcode2_ +( +t_ty +, +func +, +g1 +, +g2 +, +code +) \ + +508 +__MATH_INLINE + +t_ty + + `func + (t_ty, flt_ty +__THROW +; \ + +509 + `__le_mhcodeNP2_ + ( +t_ty +, +func +, +g1 +, +g2 +, +code +) + + ) + +511  + #__le_mhcodeNP2_ +( +t_ty +, +func +, +g1 +, +g2 +, +code +) \ + +512 +__MATH_INLINE + +t_ty + + `__NTH + ( + `func + (t_ty +g1 +, flt_ty +g2 +)) \ + +514 +code +; \ + +515 } + + ) + +517  + #__le_mhcode3_ +( +t_ty +, +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +518 +__MATH_INLINE + +t_ty + + `func + (t_ty, flt_ty, flt_ty +__THROW +; \ + +519 + `__le_mhcodeNP3_ +( +t_ty +, +func +, +g1 +, +g2 +, +g3 +, +code +) + + ) + +521  + #__le_mhcodeNP3_ +( +t_ty +, +func +, +g1 +, +g2 +, +g3 +, +code +) \ + +522 +__MATH_INLINE + +t_ty + + `__NTH + ( + `func + (t_ty +g1 +, flt_ty +g2 +, \ + +523 +t_ty + +g3 +)) \ + +525 +code +; \ + +526 } + + ) + +530 #i! +defed + +__NO_MATH_INLINES + && defed +__OPTIMIZE__ + + +534 #ifde +__FAST_MATH__ + + +535 #ifde +__USE_GNU + + +536  + #__scos_code + \ + +537  +__co +; \ + +538  +__sr +; \ + +539  +__swtmp +; \ + +540 +__asm + +__vީe__ + \ + +555 : "" ( +__co +), "=u" ( +__sr +), "" ( +__swtmp +: "0" ( +__x +)); \ + +556 * +__sx + = +__sr +; \ + +557 * +__cosx + = +__co + + + ) + +559 +__MATH_INLINE +  + +560 +__NTH + ( + $__scos + ( +__x +, * +__sx +, * +__cosx +)) + +562 +__scos_code +; + +563 + } +} + +565 +__MATH_INLINE +  + +566 +__NTH + ( + $__scosf + ( +__x +, * +__sx +, * +__cosx +)) + +568 +__scos_code +; + +569 + } +} + +571 +__MATH_INLINE +  + +572 +__NTH + ( + $__sco + ( +__x +, * +__sx +, * +__cosx +)) + +574 +__scos_code +; + +575 + } +} + +582 #i +__GNUC_PREREQ + (3, 5) + +583  + #__expm1_code + \ + +584  +__mp +; \ + +585 +__mp + = + `__but_expm1l + ( +__x +); \ + +586  +__mp + ? __m: +__x + + + ) + +588  + #__expm1_code + \ + +589  +__vue +; \ + +590  +__expڒt +; \ + +591  +__mp +; \ + +592 +__asm + +__vީe__ + \ + +601 : "" ( +__vue +), "=u" ( +__expڒt +: "0" ( +__x +)); \ + +602 +__asm + +__vީe__ + \ + +604 : "" ( +__mp +: "0" (1.0), "u" ( +__expڒt +)); \ + +605 +__mp + -= 1.0; \ + +606 +__mp + + +__vue +; \ + +607  +__mp + ? __m: +__x + + + ) + +609 + $__le_mhcodeNP_ + (, +__expm1l +, +__x +, +__expm1_code +) + +611 #i + `__GNUC_PREREQ + (3, 4) + +612 + `__le_mhcodeNP_ + (, +__ex +, +__x +,  + $__but_ex + ( +__x +)) + +614  + #__exp_code + \ + +615  +__vue +; \ + +616  +__expڒt +; \ + +617 +__asm + +__vީe__ + \ + +625 : "" ( +__vue +), "=u" ( +__expڒt +: "0" ( +__x +)); \ + +626 +__vue + += 1.0; \ + +627 +__asm + +__vީe__ + \ + +629 : "" ( +__vue +: "0" (__vue), "u" ( +__expڒt +)); \ + +630  +__vue + + + ) + +631 + $__le_mhcodeNP + ( +exp +, +__x +, +__exp_code +) + +632 + $__le_mhcodeNP_ + (, +__ex +, +__x +, +__exp_code +) + +636 #i! + `__GNUC_PREREQ + (3, 5) + +637 + `__le_mhcodeNP + ( +n +, +__x +, \ + +638  +__vue +; \ + +639  +__vue2 + + `__ibu__ + (( +__unud__ +)); \ + +640 +__asm + +__vީe__ + \ + +642 : "" ( +__vue2 +), "=u" ( +__vue +: "0" ( +__x +)); \ + +643  +__vue +) + +648 #i + `__GNUC_PREREQ + (3, 4) + +649 + `__le_mhcodeNP2_ + (, +__2l +, +__y +, +__x +, + +650  + $__but_2l + ( +__y +, +__x +)) + +652  + #__2_code + \ + +653  +__vue +; \ + +654 +__asm + +__vީe__ + \ + +656 : "" ( +__vue +: "0" ( +__x +), "u" ( +__y +) : "st(1)"); \ + +657  +__vue + + + ) + +658 #ifde +__FAST_MATH__ + + +659 + $__le_mhcodeNP2 + ( +2 +, +__y +, +__x +, +__2_code +) + +661 + $__le_mhcodeNP2_ + (, +__2l +, +__y +, +__x +, +__2_code +) + +665 #i +defed + +__FAST_MATH__ + && ! + `__GNUC_PREREQ + (3, 5) + +666 + `__le_mhcodeNP2 + ( +fmod +, +__x +, +__y +, \ + +667  +__vue +; \ + +668 +__asm + +__vީe__ + \ + +673 : "" ( +__vue +: "0" ( +__x +), "u" ( +__y +) : "ax", "cc"); \ + +674  +__vue +) + +678 #ifde +__FAST_MATH__ + + +679 #i! + `__GNUC_PREREQ + (3,3) + +680 + `__le_mhNP + ( +sq +, "fsqrt") + +681 + `__le_mhNP_ + (, +__sql +, "fsqrt") + +682  + #__libc_sql +( +n + + `__sql + (n) + + ) + +684  + #__libc_sql +( +n + + `__but_sql + (n) + + ) + +688 #i + `__GNUC_PREREQ + (2, 8) + +689 + `__le_mhcodeNP_ + (, +bs +, +__x +,  + $__but_bs + ( +__x +)) + +690 #ifde +__USE_ISOC99 + + +691 + `__le_mhcodeNP_ + (, +bsf +, +__x +,  + $__but_bsf + ( +__x +)) + +692 + `__le_mhcodeNP_ + (, +b +, +__x +,  + $__but_b + ( +__x +)) + +694 + `__le_mhcodeNP_ + (, +__b +, +__x +,  + $__but_b + ( +__x +)) + +696 + `__le_mh + ( +bs +, "fabs") + +697 + `__le_mh_ + (, +__b +, "fabs") + +700 #ifde +__FAST_MATH__ + + +701 #i! + `__GNUC_PREREQ + (3, 4) + +703 + `__le_mhNP + ( +s +, "fsin") + +705 + `__le_mhNP + ( +cos +, "fcos") + +707 + `__le_mh_deNP + ( +log +, "d2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +710 #i! + `__GNUC_PREREQ + (3, 5) + +711 + `__le_mh_deNP + ( +log10 +, "dlg2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +713 + `__le_mhcodeNP + ( +as +, +__x +,  + `__2l + (__x, + `__libc_sql + (1.0 - __x * __x))) + +714 + `__le_mhcodeNP + ( +acos +, +__x +,  + `__2l + ( + `__libc_sql + (1.0 - __x * __x), __x)) + +717 #i! + `__GNUC_PREREQ + (3, 4) + +718 + `__le_mh_deNP + ( + +, "d1; fn", "0" ( +__x +) : "st(1)") + +722 + `__le_mhcode_ + (, +__sgn1l +, +__x +, \ + +723 +__exnsi__ + uni {  +__xld +;  +__xi +[3]; } +__n + = \ + +724 { +__xld +: +__x + + } +}; \ + +725 + g__n +. + g__xi +[2] = ( +__n +. +__xi +[2] & 0x8000) | 0x3fff; \ + +726 + g__n +. + g__xi +[1] = 0x80000000; \ + +727 + g__n +. + g__xi +[0] = 0; \ + +728  + g__n +. + g__xld +) + +731 #ifde +__FAST_MATH__ + + +733 +__le_mhcodeNP + ( +sh +, +__x +, \ + +734  +__exm1 + = +__expm1l + ( +__b + ( +__x +)); \ + +735  0.5 * ( +__exm1 + / (__exm1 + 1.0+ __exm1* + $__sgn1l + ( +__x +)) + +737 + `__le_mhcodeNP + ( +cosh +, +__x +, \ + +738  +__ex + = + `__ex + ( +__x +); \ + +739  0.5 * ( +__ex + + 1.0 / __ex)) + +741 + `__le_mhcodeNP + ( +nh +, +__x +, \ + +742  +__exm1 + = + `__expm1l + (- + `__b + ( +__x + + __x)); \ + +743  +__exm1 + / (__exm1 + 2.0* + `__sgn1l + (- +__x +)) + +746 + `__le_mhcodeNP + ( +o +, +__x +, \ + +747  +__vue +; \ + +748  +__igne +; \ + +749  +__cw +; \ + +750  +__cwtmp +; \ + +751 +__asm + + `__vީe + ("fnstcw %3\n\t" \ + +759 : "" ( +__vue +), "=&q" ( +__igne +), "=m" ( +__cwtmp +), \ + +760 "=m" ( +__cw +) \ + +761 : "0" ( +__x +)); \ + +762  +__vue +) + +764 + `__le_mhcodeNP + ( + +, +__x +, \ + +765  +__vue +; \ + +766  +__igne +; \ + +767  +__cw +; \ + +768  +__cwtmp +; \ + +769 +__asm + + `__vީe + ("fnstcw %3\n\t" \ + +777 : "" ( +__vue +), "=&q" ( +__igne +), "=m" ( +__cwtmp +), \ + +778 "=m" ( +__cw +) \ + +779 : "0" ( +__x +)); \ + +780  +__vue +) + +782 #ifde +__FAST_MATH__ + + +783  + #__ldexp_code + \ + +784  +__vue +; \ + +785 +__asm + +__vީe__ + \ + +787 : "" ( +__vue +: "0" ( +__x +), "u" (( +__y +)); \ + +788  +__vue + + + ) + +790 +__MATH_INLINE +  + +791 + `__NTH + ( + $ldexp + ( +__x +,  +__y +)) + +793 +__ldexp_code +; + +794 + } +} + +799 #ifde +__USE_ISOC99 + + +801 #ifde +__FAST_MATH__ + + +802 + $__le_mhcodeNP + ( +expm1 +, +__x +, +__expm1_code +) + +806  + #__M_SQRT2 + 1.41421356237309504880L + + ) + +808 #i! + `__GNUC_PREREQ + (3, 5) + +809 + `__le_mhcodeNP + ( +log1p +, +__x +, \ + +810  +__vue +; \ + +811 i( + `__b + ( +__x +>1.0 - 0.5 * +__M_SQRT2 +) \ + +812 +__vue + = + `logl + (1.0 + +__x +); \ + +814 +__asm + +__vީe__ + \ + +818 : "" ( +__vue +: "0" ( +__x +) : "st(1)"); \ + +819  +__vue +) + +824 + `__le_mhcodeNP + ( +ash +, +__x +, \ + +825  +__y + = + `__b + ( +__x +); \ + +826  ( + `log1 + ( +__y + * __y / ( + `__libc_sql + (__y * __y + 1.0) + 1.0) + __y) \ + +827 * + $__sgn1l + ( +__x +))) + +829 + `__le_mhcodeNP + ( +acosh +, +__x +, \ + +830  + `logl + ( +__x + + + `__libc_sql + (__x - 1.0) * __libc_sqrtl (__x + 1.0))) + +832 + `__le_mhcodeNP + ( +h +, +__x +, \ + +833  +__y + = + `__b + ( +__x +); \ + +834  -0.5 * + `log1 + (-( +__y + + __y/ (1.0 + __y)* + $__sgn1l + ( +__x +)) + +837 + `__le_mhcodeNP2 + ( +hyp +, +__x +, +__y +, + +838  + `__libc_sql + ( +__x + * __x + +__y + * __y)) + +840 #i! + `__GNUC_PREREQ + (3, 5) + +841 + `__le_mhcodeNP +( +logb +, +__x +, \ + +842  +__vue +; \ + +843  +__junk +; \ + +844 +__asm + +__vީe__ + \ + +846 : "" ( +__junk +), "=u" ( +__vue +: "0" ( +__x +)); \ + +847  +__vue +) + +853 #ifde +__USE_ISOC99 + + +854 #ifde +__FAST_MATH__ + + +856 #i! + `__GNUC_PREREQ + (3, 5) + +857 + `__le_mh_deNP + ( +log2 +, "d1; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +860 +__MATH_INLINE +  + +861 + `__NTH + ( + $ldexpf + ( +__x +,  +__y +)) + +863 +__ldexp_code +; + +864 + } +} + +866 +__MATH_INLINE +  + +867 +__NTH + ( + $ldex + ( +__x +,  +__y +)) + +869 +__ldexp_code +; + +870 + } +} + +872 +__le_mhNP + ( +rt +, "frndint") + +875  + #__̚t_code + \ + +876  +__̚es +; \ + +877 +__asm__ + +__vީe__ + \ + +879 : "=m" ( +__̚es +: "t" ( +__x +) : "st"); \ + +880  +__̚es + + + ) + +881 +__MATH_INLINE +  + +882 +__NTH + ( + $̚tf + ( +__x +)) + +884 +__̚t_code +; + +885 + } +} + +886 +__MATH_INLINE +  + +887 +__NTH + ( + $̚t + ( +__x +)) + +889 +__̚t_code +; + +890 + } +} + +891 +__MATH_INLINE +  + +892 +__NTH + ( + $̚ + ( +__x +)) + +894 +__̚t_code +; + +895 + } +} + +896 #unde +__̚t_code + + +898  + #__rt_code + \ + +899  +__res +; \ + +900 +__asm__ + +__vީe__ + \ + +902 : "=m" ( +__res +: "t" ( +__x +) : "st"); \ + +903  +__res + + + ) + +904 +__exnsi__ + + +905 +__MATH_INLINE +  + +906 +__NTH + ( + $rtf + ( +__x +)) + +908 +__rt_code +; + +909 + } +} + +910 +__exnsi__ + + +911 +__MATH_INLINE +  + +912 +__NTH + ( + $rt + ( +__x +)) + +914 +__rt_code +; + +915 + } +} + +916 +__exnsi__ + + +917 +__MATH_INLINE +  + +918 +__NTH + ( + $r + ( +__x +)) + +920 +__rt_code +; + +921 + } +} + +922 #unde +__rt_code + + +927 #ifde +__USE_MISC + + +929 #i +defed + +__FAST_MATH__ + && ! +__GNUC_PREREQ + (3, 5) + +930 +__le_mhcodeNP2 + ( +dm +, +__x +, +__y +, \ + +931  +__vue +; \ + +932  +__obbed +; \ + +933 +__asm + +__vީe__ + \ + +938 : "" ( +__vue +), "=&a" ( +__obbed +: "0" ( +__x +), "u" ( +__y +) : "cc"); \ + +939  +__vue +) + +944 +__MATH_INLINE +  + +945 +__NTH + ( + $__fe + ( +__x +)) + +947  ( +__exnsi__ + + +948 (((((uni {  +__d +;  +__i +[2]; }{__d: +__x +}).__i[1] + +950 + } +} + +955 #unde +__2_code + + +956 #ifde +__FAST_MATH__ + + +957 #unde +__expm1_code + + +958 #unde +__exp_code + + +959 #unde +__scos_code + + +966 #ifde +__LIBC_INTERNAL_MATH_INLINES + + +967 +__le_mh + ( +__754_sq +, "fsqrt") + +968 +__le_mhcode2_ + (, +__754_2l +, +__y +, +__x +, + +969  +__vue +; + +970 +__asm + +__vީe__ + ("fpatan\n\t" + +971 : "" ( +__vue +) + +972 : "0" ( +__x +), "u" ( +__y +) : "st(1)"); + +973  +__vue +;) + + @/usr/include/bits/nan.h + +19 #ide +_MATH_H + + +26 #i +__GNUC_PREREQ +(3,3) + +28  + #NAN + ( + `__but_nf + ("")) + + ) + +30 #i +defed + +__GNUC__ + + +32  + #NAN + \ + +33 ( +__exnsi__ + \ + +34 ((uni {  +__l + + `__ibu__ + (( + `__mode__ + ( +__SI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7fc00000UL }). +__d +) + + ) + +39  + ~ + +41 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +42  + #__qn_bys + { 0x7f, 0xc0, 0, 0 } + + ) + +44 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +45  + #__qn_bys + { 0, 0, 0xc0, 0x7} + + ) + +48 uni {  + m__c +[4];  + m__d +; } +__qn_uni + + +49 +__ibu__ + (( +__unud__ +){ +__qn_bys + }; + +50  + #NAN + ( +__qn_uni +. +__d +) + + ) + + @/usr/include/bits/param.h + +19 #ide +_SYS_PARAM_H + + +23 #ide +ARG_MAX + + +24  + #__undef_ARG_MAX + + + ) + +27  + ~ + +28  + ~ + +31 #ifde +__undef_ARG_MAX + + +32 #unde +ARG_MAX + + +33 #unde +__undef_ARG_MAX + + +36  + #MAXSYMLINKS + 20 + + ) + +41  + #NOFILE + 256 + + ) + +42  + #NCARGS + 131072 + + ) + + @/usr/include/bits/posix_opt.h + +19 #idef +_BITS_POSIX_OPT_H + + +20  + #_BITS_POSIX_OPT_H + 1 + + ) + +23  + #_POSIX_JOB_CONTROL + 1 + + ) + +26  + #_POSIX_SAVED_IDS + 1 + + ) + +29  + #_POSIX_PRIORITY_SCHEDULING + 200809L + + ) + +32  + #_POSIX_SYNCHRONIZED_IO + 200809L + + ) + +35  + #_POSIX_FSYNC + 200809L + + ) + +38  + #_POSIX_MAPPED_FILES + 200809L + + ) + +41  + #_POSIX_MEMLOCK + 200809L + + ) + +44  + #_POSIX_MEMLOCK_RANGE + 200809L + + ) + +47  + #_POSIX_MEMORY_PROTECTION + 200809L + + ) + +50  + #_POSIX_CHOWN_RESTRICTED + 0 + + ) + +54  + #_POSIX_VDISABLE + '\0' + + ) + +57  + #_POSIX_NO_TRUNC + 1 + + ) + +60  + #_XOPEN_REALTIME + 1 + + ) + +63  + #_XOPEN_REALTIME_THREADS + 1 + + ) + +66  + #_XOPEN_SHM + 1 + + ) + +69  + #_POSIX_THREADS + 200809L + + ) + +72  + #_POSIX_REENTRANT_FUNCTIONS + 1 + + ) + +73  + #_POSIX_THREAD_SAFE_FUNCTIONS + 200809L + + ) + +76  + #_POSIX_THREAD_PRIORITY_SCHEDULING + 200809L + + ) + +79  + #_POSIX_THREAD_ATTR_STACKSIZE + 200809L + + ) + +82  + #_POSIX_THREAD_ATTR_STACKADDR + 200809L + + ) + +85  + #_POSIX_THREAD_PRIO_INHERIT + 200809L + + ) + +89  + #_POSIX_THREAD_PRIO_PROTECT + 200809L + + ) + +91 #ifde +__USE_XOPEN2K8 + + +93  + #_POSIX_THREAD_ROBUST_PRIO_INHERIT + 200809L + + ) + +96  + #_POSIX_THREAD_ROBUST_PRIO_PROTECT + -1 + + ) + +100  + #_POSIX_SEMAPHORES + 200809L + + ) + +103  + #_POSIX_REALTIME_SIGNALS + 200809L + + ) + +106  + #_POSIX_ASYNCHRONOUS_IO + 200809L + + ) + +107  + #_POSIX_ASYNC_IO + 1 + + ) + +109  + #_LFS_ASYNCHRONOUS_IO + 1 + + ) + +111  + #_POSIX_PRIORITIZED_IO + 200809L + + ) + +114  + #_LFS64_ASYNCHRONOUS_IO + 1 + + ) + +117  + #_LFS_LARGEFILE + 1 + + ) + +118  + #_LFS64_LARGEFILE + 1 + + ) + +119  + #_LFS64_STDIO + 1 + + ) + +122  + #_POSIX_SHARED_MEMORY_OBJECTS + 200809L + + ) + +125  + #_POSIX_CPUTIME + 0 + + ) + +128  + #_POSIX_THREAD_CPUTIME + 0 + + ) + +131  + #_POSIX_REGEXP + 1 + + ) + +134  + #_POSIX_READER_WRITER_LOCKS + 200809L + + ) + +137  + #_POSIX_SHELL + 1 + + ) + +140  + #_POSIX_TIMEOUTS + 200809L + + ) + +143  + #_POSIX_SPIN_LOCKS + 200809L + + ) + +146  + #_POSIX_SPAWN + 200809L + + ) + +149  + #_POSIX_TIMERS + 200809L + + ) + +152  + #_POSIX_BARRIERS + 200809L + + ) + +155  + #_POSIX_MESSAGE_PASSING + 200809L + + ) + +158  + #_POSIX_THREAD_PROCESS_SHARED + 200809L + + ) + +161  + #_POSIX_MONOTONIC_CLOCK + 0 + + ) + +164  + #_POSIX_CLOCK_SELECTION + 200809L + + ) + +167  + #_POSIX_ADVISORY_INFO + 200809L + + ) + +170  + #_POSIX_IPV6 + 200809L + + ) + +173  + #_POSIX_RAW_SOCKETS + 200809L + + ) + +176  + #_POSIX2_CHAR_TERM + 200809L + + ) + +179  + #_POSIX_SPORADIC_SERVER + -1 + + ) + +180  + #_POSIX_THREAD_SPORADIC_SERVER + -1 + + ) + +183  + #_POSIX_TRACE + -1 + + ) + +184  + #_POSIX_TRACE_EVENT_FILTER + -1 + + ) + +185  + #_POSIX_TRACE_INHERIT + -1 + + ) + +186  + #_POSIX_TRACE_LOG + -1 + + ) + +189  + #_POSIX_TYPED_MEMORY_OBJECTS + -1 + + ) + + @/usr/include/bits/pthreadtypes.h + +18 #ide +_BITS_PTHREADTYPES_H + + +19  + #_BITS_PTHREADTYPES_H + 1 + + ) + +21  + ~ + +23 #ifde +__x86_64__ + + +24 #i +__WORDSIZE + == 64 + +25  + #__SIZEOF_PTHREAD_ATTR_T + 56 + + ) + +26  + #__SIZEOF_PTHREAD_MUTEX_T + 40 + + ) + +27  + #__SIZEOF_PTHREAD_MUTEXATTR_T + 4 + + ) + +28  + #__SIZEOF_PTHREAD_COND_T + 48 + + ) + +29  + #__SIZEOF_PTHREAD_CONDATTR_T + 4 + + ) + +30  + #__SIZEOF_PTHREAD_RWLOCK_T + 56 + + ) + +31  + #__SIZEOF_PTHREAD_RWLOCKATTR_T + 8 + + ) + +32  + #__SIZEOF_PTHREAD_BARRIER_T + 32 + + ) + +33  + #__SIZEOF_PTHREAD_BARRIERATTR_T + 4 + + ) + +35  + #__SIZEOF_PTHREAD_ATTR_T + 32 + + ) + +36  + #__SIZEOF_PTHREAD_MUTEX_T + 32 + + ) + +37  + #__SIZEOF_PTHREAD_MUTEXATTR_T + 4 + + ) + +38  + #__SIZEOF_PTHREAD_COND_T + 48 + + ) + +39  + #__SIZEOF_PTHREAD_CONDATTR_T + 4 + + ) + +40  + #__SIZEOF_PTHREAD_RWLOCK_T + 44 + + ) + +41  + #__SIZEOF_PTHREAD_RWLOCKATTR_T + 8 + + ) + +42  + #__SIZEOF_PTHREAD_BARRIER_T + 20 + + ) + +43  + #__SIZEOF_PTHREAD_BARRIERATTR_T + 4 + + ) + +46  + #__SIZEOF_PTHREAD_ATTR_T + 36 + + ) + +47  + #__SIZEOF_PTHREAD_MUTEX_T + 24 + + ) + +48  + #__SIZEOF_PTHREAD_MUTEXATTR_T + 4 + + ) + +49  + #__SIZEOF_PTHREAD_COND_T + 48 + + ) + +50  + #__SIZEOF_PTHREAD_CONDATTR_T + 4 + + ) + +51  + #__SIZEOF_PTHREAD_RWLOCK_T + 32 + + ) + +52  + #__SIZEOF_PTHREAD_RWLOCKATTR_T + 8 + + ) + +53  + #__SIZEOF_PTHREAD_BARRIER_T + 20 + + ) + +54  + #__SIZEOF_PTHREAD_BARRIERATTR_T + 4 + + ) + +60  + thad_t +; + +63  + uhad__t + + +65  + m__size +[ +__SIZEOF_PTHREAD_ATTR_T +]; + +66  + m__ign +; + +68 #ide +__have_had__t + + +69  +had__t + + thad__t +; + +70  + #__have_had__t + 1 + + ) + +74 #ifde +__x86_64__ + + +75  + s__had__li + + +77  +__had__li + * + m__ev +; + +78  +__had__li + * + m__xt +; + +79 } + t__had_li_t +; + +81  + s__had__i + + +83  +__had__i + * + m__xt +; + +84 } + t__had_i_t +; + +92  + s__had_mux_s + + +94  + m__lock +; + +95  + m__cou +; + +96  + m__owr +; + +97 #ifde +__x86_64__ + + +98  + m__nurs +; + +102  + m__kd +; + +103 #ifde +__x86_64__ + + +104  + m__s +; + +105  + m__isi +; + +106 +__had_li_t + + m__li +; + +107  + #__PTHREAD_MUTEX_HAVE_PREV + 1 + + ) + +109  + #__PTHREAD_SPINS + 0, 0 + + ) + +111  + m__nurs +; + +112 +__exnsi__ + union + +116  + m__es +; + +117  + m__isi +; + +118  + #__s + +__isi_da +. +__es + + + ) + +119  + #__isi + +__isi_da +. +__isi + + + ) + +120  + #__PTHREAD_SPINS + { 0, 0 } + + ) + +121 } + m__isi_da +; + +122 +__had_i_t + + m__li +; + +125 } + m__da +; + +126  + m__size +[ +__SIZEOF_PTHREAD_MUTEX_T +]; + +127  + m__ign +; + +128 } + thad_mux_t +; + +132  + m__size +[ +__SIZEOF_PTHREAD_MUTEXATTR_T +]; + +133  + m__ign +; + +134 } + thad_mux_t +; + +143  + m__lock +; + +144  + m__fux +; + +145 +__exnsi__ +  + m__tٮ_q +; + +146 +__exnsi__ +  + m__wakeup_q +; + +147 +__exnsi__ +  + m__wok_q +; + +148 * + m__mux +; + +149  + m__nwas +; + +150  + m__brd_q +; + +151 } + m__da +; + +152  + m__size +[ +__SIZEOF_PTHREAD_COND_T +]; + +153 +__exnsi__ +  + m__ign +; + +154 } + thad_cd_t +; + +158  + m__size +[ +__SIZEOF_PTHREAD_CONDATTR_T +]; + +159  + m__ign +; + +160 } + thad_cd_t +; + +164  + thad_key_t +; + +168  + thad__t +; + +171 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +176 #ifde +__x86_64__ + + +179  + m__lock +; + +180  + m___ads +; + +181  + m__ads_wakeup +; + +182  + m__wr_wakeup +; + +183  + m___ads_queued +; + +184  + m___wrs_queued +; + +185  + m__wr +; + +186  + m__shed +; + +187 sigd  + m__rwisi +; + +188 #ifde +__ILP32__ + + +189  + m__d1 +[3]; + +190  + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0, { 0, 0, 0 } + + ) + +192  + m__d1 +[7]; + +193  + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0, { 0, 0, 0, 0, 0, 0, 0 } + + ) + +195  + m__d2 +; + +198  + m__ags +; + +199  + #__PTHREAD_RWLOCK_INT_FLAGS_SHARED + 1 + + ) + +200 } + m__da +; + +204  + m__lock +; + +205  + m___ads +; + +206  + m__ads_wakeup +; + +207  + m__wr_wakeup +; + +208  + m___ads_queued +; + +209  + m___wrs_queued +; + +212  + m__ags +; + +213  + m__shed +; + +214 sigd  + m__rwisi +; + +215  + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0 + + ) + +216  + m__d2 +; + +217  + m__wr +; + +218 } + m__da +; + +220  + m__size +[ +__SIZEOF_PTHREAD_RWLOCK_T +]; + +221  + m__ign +; + +222 } + thad_rwlock_t +; + +226  + m__size +[ +__SIZEOF_PTHREAD_RWLOCKATTR_T +]; + +227  + m__ign +; + +228 } + thad_rwlock_t +; + +232 #ifde +__USE_XOPEN2K + + +234 vީ + thad_lock_t +; + +241  + m__size +[ +__SIZEOF_PTHREAD_BARRIER_T +]; + +242  + m__ign +; + +243 } + thad_brr_t +; + +247  + m__size +[ +__SIZEOF_PTHREAD_BARRIERATTR_T +]; + +248  + m__ign +; + +249 } + thad_brr_t +; + +253 #ide +__x86_64__ + + +255  + #__nup_f_ibu + + `__ibu__ + (( + `__grm__ + (1))) + + ) + + @/usr/include/bits/setjmp.h + +19 #ide +_BITS_SETJMP_H + + +20  + #_BITS_SETJMP_H + 1 + + ) + +22 #i! +defed + +_SETJMP_H + && !defed +_PTHREAD_H + + +26  + ~ + +28 #ide +_ASM + + +30 #i +__WORDSIZE + == 64 + +31  + t__jmp_buf +[8]; + +32 #i +defed + +__x86_64__ + + +33 +__exnsi__ +  + t__jmp_buf +[8]; + +35  + t__jmp_buf +[6]; + + @/usr/include/bits/setjmp2.h + +19 #ide +_SETJMP_H + + +24 #ifde +__REDIRECT_NTH + + +25  +__REDIRECT_NTHNL + ( +lgjmp +, + +26 ( +__jmp_buf_g + +__v +[1],  +__v +), + +27 +__lgjmp_chk + +__ibu__ + (( +__nܑu__ +)); + +28  +__REDIRECT_NTHNL + ( +_lgjmp +, + +29 ( +__jmp_buf_g + +__v +[1],  +__v +), + +30 +__lgjmp_chk + +__ibu__ + (( +__nܑu__ +)); + +31  +__REDIRECT_NTHNL + ( +siglgjmp +, + +32 ( +__jmp_buf_g + +__v +[1],  +__v +), + +33 +__lgjmp_chk + +__ibu__ + (( +__nܑu__ +)); + +35  +__lgjmp_chk + ( +__jmp_buf_g + +__v +[1],  +__v +), + +36 +__THROWNL + +__ibu__ + (( +__nܑu__ +)); + +37  + #lgjmp + +__lgjmp_chk + + + ) + +38  + #_lgjmp + +__lgjmp_chk + + + ) + +39  + #siglgjmp + +__lgjmp_chk + + + ) + + @/usr/include/bits/sigaction.h + +19 #ide +_SIGNAL_H + + +24  + ssigai + + +27 #ifde +__USE_POSIX199309 + + +31 +__sighdr_t + + m_hdr +; + +33 (* + m_sigai +(, + msigfo_t + *, *); + +35 + m__sigai_hdr +; + +36  + #_hdr + +__sigai_hdr +. +_hdr + + + ) + +37  + #_sigai + +__sigai_hdr +. +_sigai + + + ) + +39 +__sighdr_t + + m_hdr +; + +43 +__sigt_t + + m_mask +; + +46  + m_ags +; + +49 (* + m_ܔ +) (); + +53  + #SA_NOCLDSTOP + 1 + + ) + +54  + #SA_NOCLDWAIT + 2 + + ) + +55  + #SA_SIGINFO + 4 + + ) + +57 #i +defed + +__USE_UNIX98 + || defed +__USE_MISC + + +58  + #SA_ONSTACK + 0x08000000 + + ) + +60 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +61  + #SA_RESTART + 0x10000000 + + ) + +62  + #SA_NODEFER + 0x40000000 + + ) + +64  + #SA_RESETHAND + 0x80000000 + + ) + +66 #ifde +__USE_MISC + + +67  + #SA_INTERRUPT + 0x20000000 + + ) + +70  + #SA_NOMASK + +SA_NODEFER + + + ) + +71  + #SA_ONESHOT + +SA_RESETHAND + + + ) + +72  + #SA_STACK + +SA_ONSTACK + + + ) + +76  + #SIG_BLOCK + 0 + + ) + +77  + #SIG_UNBLOCK + 1 + + ) + +78  + #SIG_SETMASK + 2 + + ) + + @/usr/include/bits/sigcontext.h + +18 #ide +_BITS_SIGCONTEXT_H + + +19  + #_BITS_SIGCONTEXT_H + 1 + + ) + +21 #i! +defed + +_SIGNAL_H + && !defed +_SYS_UCONTEXT_H + + +25  + #FP_XSTATE_MAGIC1 + 0x46505853U + + ) + +26  + #FP_XSTATE_MAGIC2 + 0x46505845U + + ) + +27  + #FP_XSTATE_MAGIC2_SIZE + ( +FP_XSTATE_MAGIC2 +) + + ) + +29  + s_x_sw_bys + + +31 +__ut32_t + + mmagic1 +; + +32 +__ut32_t + + mexnded_size +; + +33 +__ut64_t + + mxe_bv +; + +34 +__ut32_t + + mxe_size +; + +35 +__ut32_t + + mddg +[7]; + +38  + s_g + + +40  + msignifind +[4]; + +41  + mexpڒt +; + +44  + s_xg + + +46  + msignifind +[4]; + +47  + mexpڒt +; + +48  + mddg +[3]; + +51  + s_xmmg + + +53 +__ut32_t + + memt +[4]; + +58 #ide +__x86_64__ + + +60  + s_塩e + + +63 +__ut32_t + + mcw +; + +64 +__ut32_t + + msw +; + +65 +__ut32_t + + mg +; + +66 +__ut32_t + + moff +; + +67 +__ut32_t + + mcsl +; + +68 +__ut32_t + + mdaoff +; + +69 +__ut32_t + + mdal +; + +70  +_g + + m_ +[8]; + +71  + mus +; + +72  + mmagic +; + +75 +__ut32_t + + m_fx_v +[6]; + +76 +__ut32_t + + mmxc +; + +77 +__ut32_t + + mrved +; + +78  +_xg + + m_fx_ +[8]; + +79  +_xmmg + + m_xmm +[8]; + +80 +__ut32_t + + mddg +[56]; + +83 #ide +sigcڋxt_ru + + +88  + #sigcڋxt_ru + +sigcڋxt + + + ) + +91  + #X86_FXSR_MAGIC + 0x0000 + + ) + +93  + ssigcڋxt + + +95  + mgs +, + m__gsh +; + +96  + mfs +, + m__fsh +; + +97  + mes +, + m__esh +; + +98  + mds +, + m__dsh +; + +99  + medi +; + +100  + mesi +; + +101  + mebp +; + +102  + me +; + +103  + mebx +; + +104  + medx +; + +105  + mecx +; + +106  + mx +; + +107  + mno +; + +108  + mr +; + +109  + me +; + +110  + mcs +, + m__csh +; + +111  + meags +; + +112  + me__sigl +; + +113  + mss +, + m__ssh +; + +114  +_塩e + * + m塩e +; + +115  + mdmask +; + +116  + m2 +; + +121  + s_塩e + + +124 +__ut16_t + + mcwd +; + +125 +__ut16_t + + mswd +; + +126 +__ut16_t + + mw +; + +127 +__ut16_t + + mf +; + +128 +__ut64_t + + mr +; + +129 +__ut64_t + + mrdp +; + +130 +__ut32_t + + mmxc +; + +131 +__ut32_t + + mmx_mask +; + +132  +_xg + + m_ +[8]; + +133  +_xmmg + + m_xmm +[16]; + +134 +__ut32_t + + mddg +[24]; + +137  + ssigcڋxt + + +139 +__ut64_t + + mr8 +; + +140 +__ut64_t + + mr9 +; + +141 +__ut64_t + + mr10 +; + +142 +__ut64_t + + mr11 +; + +143 +__ut64_t + + mr12 +; + +144 +__ut64_t + + mr13 +; + +145 +__ut64_t + + mr14 +; + +146 +__ut64_t + + mr15 +; + +147 +__ut64_t + + mrdi +; + +148 +__ut64_t + + mrsi +; + +149 +__ut64_t + + mrbp +; + +150 +__ut64_t + + mrbx +; + +151 +__ut64_t + + mrdx +; + +152 +__ut64_t + + mx +; + +153 +__ut64_t + + mrcx +; + +154 +__ut64_t + + mr +; + +155 +__ut64_t + + mr +; + +156 +__ut64_t + + meags +; + +157  + mcs +; + +158  + mgs +; + +159  + mfs +; + +160  + m__d0 +; + +161 +__ut64_t + + mr +; + +162 +__ut64_t + + mno +; + +163 +__ut64_t + + mdmask +; + +164 +__ut64_t + + m2 +; + +165 +__exnsi__ + union + +167  +_塩e + * + m塩e +; + +168 +__ut64_t + + m__塩e_wd +; + +170 +__ut64_t + + m__rved1 + [8]; + +175  + s_xve_hdr + + +177 +__ut64_t + + mxe_bv +; + +178 +__ut64_t + + mrved1 +[2]; + +179 +__ut64_t + + mrved2 +[5]; + +182  + s_ymmh_e + + +184 +__ut32_t + + mymmh_a +[64]; + +187  + s_xe + + +189  +_塩e + + m塩e +; + +190  +_xve_hdr + + mxe_hdr +; + +191  +_ymmh_e + + mymmh +; + + @/usr/include/bits/siginfo.h + +19 #i! +defed + +_SIGNAL_H + && !defed +__ed_sigfo_t + \ + +20 && ! +defed + + g__ed_sigevt_t + + +24  + ~ + +26 #i(! +defed + +__have_sigv_t + \ + +27 && ( +defed + + g_SIGNAL_H + || defed + g__ed_sigfo_t + \ + +28 || +defed + + g__ed_sigevt_t +)) + +29  + #__have_sigv_t + 1 + + ) + +32  + usigv + + +34  + msiv_t +; + +35 * + msiv_r +; + +36 } + tsigv_t +; + +39 #i(! +defed + +__have_sigfo_t + \ + +40 && ( +defed + + g_SIGNAL_H + || defed + g__ed_sigfo_t +)) + +41  + #__have_sigfo_t + 1 + + ) + +43  + #__SI_MAX_SIZE + 128 + + ) + +44 #i +__WORDSIZE + == 64 + +45  + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + /  ()- 4) + + ) + +47  + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + /  ()- 3) + + ) + +50 #i +defed + +__x86_64__ + && +__WORDSIZE + == 32 + +55  +__ock_t + + t__ibu__ + (( + t__igd__ + (4)) + t__sigchld_ock_t +; + +56  + #__SI_ALIGNMENT + + `__ibu__ + (( + `__igd__ + (8))) + + ) + +58  +__ock_t + + t__sigchld_ock_t +; + +59  + #__SI_ALIGNMENT + + + ) + +64  +si_signo +; + +65  +si_o +; + +67  +si_code +; + +71  +_d +[ +__SI_PAD_SIZE +]; + +76 +__pid_t + +si_pid +; + +77 +__uid_t + +si_uid +; + +78 } +_kl +; + +83  +si_tid +; + +84  +si_ovrun +; + +85 +sigv_t + +si_sigv +; + +86 } +_tim +; + +91 +__pid_t + +si_pid +; + +92 +__uid_t + +si_uid +; + +93 +sigv_t + +si_sigv +; + +94 } +_ +; + +99 +__pid_t + +si_pid +; + +100 +__uid_t + +si_uid +; + +101  +si_us +; + +102 +__sigchld_ock_t + +si_utime +; + +103 +__sigchld_ock_t + +si_ime +; + +104 } +_sigchld +; + +109 * +si_addr +; + +110  +si_addr_lsb +; + +113 * +_low +; + +114 * +_u +; + +115 } +si_addr_bnd +; + +116 } +_sigu +; + +121  +si_bd +; + +122  +si_fd +; + +123 } +_sigpl +; + +128 * +__addr +; + +129  +_sys +; + +130  +_ch +; + +131 } +_sigsys +; + +132 } +_siflds +; + +133 } + tsigfo_t + + t__SI_ALIGNMENT +; + +137  + #si_pid + +_siflds +. +_kl +. +si_pid + + + ) + +138  + #si_uid + +_siflds +. +_kl +. +si_uid + + + ) + +139  + #si_timid + +_siflds +. +_tim +. +si_tid + + + ) + +140  + #si_ovrun + +_siflds +. +_tim +. +si_ovrun + + + ) + +141  + #si_us + +_siflds +. +_sigchld +. +si_us + + + ) + +142  + #si_utime + +_siflds +. +_sigchld +. +si_utime + + + ) + +143  + #si_ime + +_siflds +. +_sigchld +. +si_ime + + + ) + +144  + #si_vue + +_siflds +. +_ +. +si_sigv + + + ) + +145  + #si_t + +_siflds +. +_ +. +si_sigv +. +siv_t + + + ) + +146  + #si_r + +_siflds +. +_ +. +si_sigv +. +siv_r + + + ) + +147  + #si_addr + +_siflds +. +_sigu +. +si_addr + + + ) + +148  + #si_addr_lsb + +_siflds +. +_sigu +. +si_addr_lsb + + + ) + +149  + #si_low + +_siflds +. +_sigu +. +si_addr_bnd +. +_low + + + ) + +150  + #si_u + +_siflds +. +_sigu +. +si_addr_bnd +. +_u + + + ) + +151  + #si_bd + +_siflds +. +_sigpl +. +si_bd + + + ) + +152  + #si_fd + +_siflds +. +_sigpl +. +si_fd + + + ) + +153  + #si__addr + +_siflds +. +_sigsys +. +__addr + + + ) + +154  + #si_sys + +_siflds +. +_sigsys +. +_sys + + + ) + +155  + #si_ch + +_siflds +. +_sigsys +. +_ch + + + ) + +162 +SI_ASYNCNL + = -60, + +163  + #SI_ASYNCNL + +SI_ASYNCNL + + + ) + +164 +SI_TKILL + = -6, + +165  + #SI_TKILL + +SI_TKILL + + + ) + +166 +SI_SIGIO +, + +167  + #SI_SIGIO + +SI_SIGIO + + + ) + +168 +SI_ASYNCIO +, + +169  + #SI_ASYNCIO + +SI_ASYNCIO + + + ) + +170 +SI_MESGQ +, + +171  + #SI_MESGQ + +SI_MESGQ + + + ) + +172 +SI_TIMER +, + +173  + #SI_TIMER + +SI_TIMER + + + ) + +174 +SI_QUEUE +, + +175  + #SI_QUEUE + +SI_QUEUE + + + ) + +176 +SI_USER +, + +177  + #SI_USER + +SI_USER + + + ) + +178 +SI_KERNEL + = 0x80 + +179  + #SI_KERNEL + +SI_KERNEL + + + ) + +183 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +187 +ILL_ILLOPC + = 1, + +188  + #ILL_ILLOPC + +ILL_ILLOPC + + + ) + +189 +ILL_ILLOPN +, + +190  + #ILL_ILLOPN + +ILL_ILLOPN + + + ) + +191 +ILL_ILLADR +, + +192  + #ILL_ILLADR + +ILL_ILLADR + + + ) + +193 +ILL_ILLTRP +, + +194  + #ILL_ILLTRP + +ILL_ILLTRP + + + ) + +195 +ILL_PRVOPC +, + +196  + #ILL_PRVOPC + +ILL_PRVOPC + + + ) + +197 +ILL_PRVREG +, + +198  + #ILL_PRVREG + +ILL_PRVREG + + + ) + +199 +ILL_COPROC +, + +200  + #ILL_COPROC + +ILL_COPROC + + + ) + +201 +ILL_BADSTK + + +202  + #ILL_BADSTK + +ILL_BADSTK + + + ) + +208 +FPE_INTDIV + = 1, + +209  + #FPE_INTDIV + +FPE_INTDIV + + + ) + +210 +FPE_INTOVF +, + +211  + #FPE_INTOVF + +FPE_INTOVF + + + ) + +212 +FPE_FLTDIV +, + +213  + #FPE_FLTDIV + +FPE_FLTDIV + + + ) + +214 +FPE_FLTOVF +, + +215  + #FPE_FLTOVF + +FPE_FLTOVF + + + ) + +216 +FPE_FLTUND +, + +217  + #FPE_FLTUND + +FPE_FLTUND + + + ) + +218 +FPE_FLTRES +, + +219  + #FPE_FLTRES + +FPE_FLTRES + + + ) + +220 +FPE_FLTINV +, + +221  + #FPE_FLTINV + +FPE_FLTINV + + + ) + +222 +FPE_FLTSUB + + +223  + #FPE_FLTSUB + +FPE_FLTSUB + + + ) + +229 +SEGV_MAPERR + = 1, + +230  + #SEGV_MAPERR + +SEGV_MAPERR + + + ) + +231 +SEGV_ACCERR + + +232  + #SEGV_ACCERR + +SEGV_ACCERR + + + ) + +238 +BUS_ADRALN + = 1, + +239  + #BUS_ADRALN + +BUS_ADRALN + + + ) + +240 +BUS_ADRERR +, + +241  + #BUS_ADRERR + +BUS_ADRERR + + + ) + +242 +BUS_OBJERR +, + +243  + #BUS_OBJERR + +BUS_OBJERR + + + ) + +244 +BUS_MCEERR_AR +, + +245  + #BUS_MCEERR_AR + +BUS_MCEERR_AR + + + ) + +246 +BUS_MCEERR_AO + + +247  + #BUS_MCEERR_AO + +BUS_MCEERR_AO + + + ) + +251 #ifde +__USE_XOPEN_EXTENDED + + +255 +TRAP_BRKPT + = 1, + +256  + #TRAP_BRKPT + +TRAP_BRKPT + + + ) + +257 +TRAP_TRACE + + +258  + #TRAP_TRACE + +TRAP_TRACE + + + ) + +262 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +266 +CLD_EXITED + = 1, + +267  + #CLD_EXITED + +CLD_EXITED + + + ) + +268 +CLD_KILLED +, + +269  + #CLD_KILLED + +CLD_KILLED + + + ) + +270 +CLD_DUMPED +, + +271  + #CLD_DUMPED + +CLD_DUMPED + + + ) + +272 +CLD_TRAPPED +, + +273  + #CLD_TRAPPED + +CLD_TRAPPED + + + ) + +274 +CLD_STOPPED +, + +275  + #CLD_STOPPED + +CLD_STOPPED + + + ) + +276 +CLD_CONTINUED + + +277  + #CLD_CONTINUED + +CLD_CONTINUED + + + ) + +283 +POLL_IN + = 1, + +284  + #POLL_IN + +POLL_IN + + + ) + +285 +POLL_OUT +, + +286  + #POLL_OUT + +POLL_OUT + + + ) + +287 +POLL_MSG +, + +288  + #POLL_MSG + +POLL_MSG + + + ) + +289 +POLL_ERR +, + +290  + #POLL_ERR + +POLL_ERR + + + ) + +291 +POLL_PRI +, + +292  + #POLL_PRI + +POLL_PRI + + + ) + +293 +POLL_HUP + + +294  + #POLL_HUP + +POLL_HUP + + + ) + +298 #unde +__ed_sigfo_t + + +302 #i( +defed + +_SIGNAL_H + || defed +__ed_sigevt_t +) \ + +303 && ! +defed + +__have_sigevt_t + + +304  + #__have_sigevt_t + 1 + + ) + +307  + #__SIGEV_MAX_SIZE + 64 + + ) + +308 #i +__WORDSIZE + == 64 + +309  + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + /  ()- 4) + + ) + +311  + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + /  ()- 3) + + ) + +315 #ide +__have_had__t + + +316  +had__t + + thad__t +; + +317  + #__have_had__t + 1 + + ) + +320  + ssigevt + + +322 +sigv_t + +sigev_vue +; + +323  +sigev_signo +; + +324  +sigev_nify +; + +328  +_d +[ +__SIGEV_PAD_SIZE +]; + +332 +__pid_t + +_tid +; + +336 (* +_funi +( +sigv_t +); + +337 +had__t + * +_ibu +; + +338 } +_sigev_thad +; + +339 } +_sigev_un +; + +340 } + tsigevt_t +; + +343  + #sigev_nify_funi + +_sigev_un +. +_sigev_thad +. +_funi + + + ) + +344  + #sigev_nify_ibus + +_sigev_un +. +_sigev_thad +. +_ibu + + + ) + +349 +SIGEV_SIGNAL + = 0, + +350  + #SIGEV_SIGNAL + +SIGEV_SIGNAL + + + ) + +351 +SIGEV_NONE +, + +352  + #SIGEV_NONE + +SIGEV_NONE + + + ) + +353 +SIGEV_THREAD +, + +354  + #SIGEV_THREAD + +SIGEV_THREAD + + + ) + +356 +SIGEV_THREAD_ID + = 4 + +357  + #SIGEV_THREAD_ID + +SIGEV_THREAD_ID + + + ) + + @/usr/include/bits/signum.h + +19 #ifdef +_SIGNAL_H + + +22  + #SIG_ERR + (( +__sighdr_t +-1 + + ) + +23  + #SIG_DFL + (( +__sighdr_t +0 + + ) + +24  + #SIG_IGN + (( +__sighdr_t +1 + + ) + +26 #ifde +__USE_UNIX98 + + +27  + #SIG_HOLD + (( +__sighdr_t +2 + + ) + +32  + #SIGHUP + 1 + + ) + +33  + #SIGINT + 2 + + ) + +34  + #SIGQUIT + 3 + + ) + +35  + #SIGILL + 4 + + ) + +36  + #SIGTRAP + 5 + + ) + +37  + #SIGABRT + 6 + + ) + +38  + #SIGIOT + 6 + + ) + +39  + #SIGBUS + 7 + + ) + +40  + #SIGFPE + 8 + + ) + +41  + #SIGKILL + 9 + + ) + +42  + #SIGUSR1 + 10 + + ) + +43  + #SIGSEGV + 11 + + ) + +44  + #SIGUSR2 + 12 + + ) + +45  + #SIGPIPE + 13 + + ) + +46  + #SIGALRM + 14 + + ) + +47  + #SIGTERM + 15 + + ) + +48  + #SIGSTKFLT + 16 + + ) + +49  + #SIGCLD + +SIGCHLD + + + ) + +50  + #SIGCHLD + 17 + + ) + +51  + #SIGCONT + 18 + + ) + +52  + #SIGSTOP + 19 + + ) + +53  + #SIGTSTP + 20 + + ) + +54  + #SIGTTIN + 21 + + ) + +55  + #SIGTTOU + 22 + + ) + +56  + #SIGURG + 23 + + ) + +57  + #SIGXCPU + 24 + + ) + +58  + #SIGXFSZ + 25 + + ) + +59  + #SIGVTALRM + 26 + + ) + +60  + #SIGPROF + 27 + + ) + +61  + #SIGWINCH + 28 + + ) + +62  + #SIGPOLL + +SIGIO + + + ) + +63  + #SIGIO + 29 + + ) + +64  + #SIGPWR + 30 + + ) + +65  + #SIGSYS + 31 + + ) + +66  + #SIGUNUSED + 31 + + ) + +68  + #_NSIG + 65 + + ) + +71  + #SIGRTMIN + ( + `__libc_cut_sigm + ()) + + ) + +72  + #SIGRTMAX + ( + `__libc_cut_sigmax + ()) + + ) + +76  + #__SIGRTMIN + 32 + + ) + +77  + #__SIGRTMAX + ( +_NSIG + - 1) + + ) + + @/usr/include/bits/sigset.h + +19 #idef +_SIGSET_H_tys + + +20  + #_SIGSET_H_tys + 1 + + ) + +22  + t__sig_omic_t +; + +26  + #_SIGSET_NWORDS + (1024 / (8 *  ())) + + ) + +29  + m__v +[ +_SIGSET_NWORDS +]; + +30 } + t__sigt_t +; + +41 #i! +defed + +_SIGSET_H_s + && defed +_SIGNAL_H + + +42  + #_SIGSET_H_s + 1 + + ) + +44 #ide +_EXTERN_INLINE + + +45  + #_EXTERN_INLINE + +__ex_le + + + ) + +49  + #__sigmask +( +sig +) \ + +50 (((1<< ((( +sig +- 1% (8 *  ()))) + + ) + +53  + #__sigwd +( +sig +(((sig- 1/ (8 *  ())) + + ) + +55 #i +defed + +__GNUC__ + && __GNUC__ >= 2 + +56  + #__sigemyt +( +t +) \ + +57 ( + `__exnsi__ + ({  +__t + = +_SIGSET_NWORDS +; \ + +58 +sigt_t + * +__t + = ( +t +); \ + +59 -- +__t + >0 +__t +-> +__v +[__cnt] = 0; \ + +60 0; })) + + ) + +61  + #__sigflt +( +t +) \ + +62 ( + `__exnsi__ + ({  +__t + = +_SIGSET_NWORDS +; \ + +63 +sigt_t + * +__t + = ( +t +); \ + +64 -- +__t + >0 +__t +-> +__v +[__cnt] = ~0UL; \ + +65 0; })) + + ) + +67 #ifde +__USE_GNU + + +71  + #__sigimyt +( +t +) \ + +72 ( + `__exnsi__ + ({  +__t + = +_SIGSET_NWORDS +; \ + +73 cڡ +sigt_t + * +__t + = ( +t +); \ + +74  +__t + = +__t +-> +__v +[-- +__t +]; \ + +75 ! +__t + && -- +__t + >= 0) \ + +76 +__t + = +__t +-> +__v +[ +__t +]; \ + +77 +__t + =0; })) + + ) + +78  + #__sigdt +( +de +, + +, +right +) \ + +79 ( + `__exnsi__ + ({  +__t + = +_SIGSET_NWORDS +; \ + +80 +sigt_t + * +__de + = ( +de +); \ + +81 cڡ +sigt_t + * +__ + = ( + +); \ + +82 cڡ +sigt_t + * +__right + = ( +right +); \ + +83 -- +__t + >= 0) \ + +84 +__de +-> +__v +[ +__t +] = ( +__ +->__val[__cnt] \ + +85 & +__right +-> +__v +[ +__t +]); \ + +86 0; })) + + ) + +87  + #__sigܣt +( +de +, + +, +right +) \ + +88 ( + `__exnsi__ + ({  +__t + = +_SIGSET_NWORDS +; \ + +89 +sigt_t + * +__de + = ( +de +); \ + +90 cڡ +sigt_t + * +__ + = ( + +); \ + +91 cڡ +sigt_t + * +__right + = ( +right +); \ + +92 -- +__t + >= 0) \ + +93 +__de +-> +__v +[ +__t +] = ( +__ +->__val[__cnt] \ + +94 | +__right +-> +__v +[ +__t +]); \ + +95 0; })) + + ) + +102  +__sigismemb + (cڡ +__sigt_t + *, ); + +103  +__sigaddt + ( +__sigt_t + *, ); + +104  +__sigdt + ( +__sigt_t + *, ); + +106 #ifde +__USE_EXTERN_INLINES + + +107  + #__SIGSETFN +( +NAME +, +BODY +, +CONST +) \ + +108 +_EXTERN_INLINE + \ + +109 + `NAME + ( +CONST + +__sigt_t + * +__t +,  +__sig +) \ + +111  +__mask + = + `__sigmask + ( +__sig +); \ + +112  +__wd + = + `__sigwd + ( +__sig +); \ + +113  +BODY +; \ + +114 } + + ) + +116 +__SIGSETFN + ( +__sigismemb +, ( +__t +-> +__v +[ +__wd +] & +__mask +) ? 1 : 0, const) + +117 +__SIGSETFN + ( +__sigaddt +, (( +__t +-> +__v +[ +__wd +] | +__mask +), 0), ) + +118 +__SIGSETFN + ( +__sigdt +, (( +__t +-> +__v +[ +__wd +] &~ +__mask +), 0), ) + +120 #unde +__SIGSETFN + + + @/usr/include/bits/sigstack.h + +19 #ide +_SIGNAL_H + + +25  + ssigack + + +27 * + mss_ +; + +28  + mss_ڡack +; + +35 + mSS_ONSTACK + = 1, + +36  + #SS_ONSTACK + +SS_ONSTACK + + + ) + +37 + mSS_DISABLE + + +38  + #SS_DISABLE + +SS_DISABLE + + + ) + +42  + #MINSIGSTKSZ + 2048 + + ) + +45  + #SIGSTKSZ + 8192 + + ) + +49  + ssigtack + + +51 * + mss_ +; + +52  + mss_ags +; + +53 +size_t + + mss_size +; + +54 } + tack_t +; + + @/usr/include/bits/sigthread.h + +19 #ide +_BITS_SIGTHREAD_H + + +20  + #_BITS_SIGTHREAD_H + 1 + + ) + +22 #i! +defed + +_SIGNAL_H + && !defed +_PTHREAD_H + + +30  + $had_sigmask + ( +__how +, + +31 cڡ +__sigt_t + * +__ri + +__wmask +, + +32 +__sigt_t + * +__ri + +__dmask +) +__THROW +; + +35  + $had_kl + ( +had_t + +__thadid +,  +__signo + +__THROW +; + +37 #ifde +__USE_GNU + + +39  + $had_sigqueue + ( +had_t + +__thadid +,  +__signo +, + +40 cڡ  +sigv + +__vue + +__THROW +; + + @/usr/include/bits/socket.h + +19 #ide +__BITS_SOCKET_H + + +20  + #__BITS_SOCKET_H + + + ) + +22 #ide +_SYS_SOCKET_H + + +26  + #__ed_size_t + + + ) + +27  + ~ + +29  + ~ + +32 #ide +__sockn_t_defed + + +33  +__sockn_t + + tsockn_t +; + +34  + #__sockn_t_defed + + + ) + +38  + ~ + +41  + #PF_UNSPEC + 0 + + ) + +42  + #PF_LOCAL + 1 + + ) + +43  + #PF_UNIX + +PF_LOCAL + + + ) + +44  + #PF_FILE + +PF_LOCAL + + + ) + +45  + #PF_INET + 2 + + ) + +46  + #PF_AX25 + 3 + + ) + +47  + #PF_IPX + 4 + + ) + +48  + #PF_APPLETALK + 5 + + ) + +49  + #PF_NETROM + 6 + + ) + +50  + #PF_BRIDGE + 7 + + ) + +51  + #PF_ATMPVC + 8 + + ) + +52  + #PF_X25 + 9 + + ) + +53  + #PF_INET6 + 10 + + ) + +54  + #PF_ROSE + 11 + + ) + +55  + #PF_DECt + 12 + + ) + +56  + #PF_NETBEUI + 13 + + ) + +57  + #PF_SECURITY + 14 + + ) + +58  + #PF_KEY + 15 + + ) + +59  + #PF_NETLINK + 16 + + ) + +60  + #PF_ROUTE + +PF_NETLINK + + + ) + +61  + #PF_PACKET + 17 + + ) + +62  + #PF_ASH + 18 + + ) + +63  + #PF_ECONET + 19 + + ) + +64  + #PF_ATMSVC + 20 + + ) + +65  + #PF_RDS + 21 + + ) + +66  + #PF_SNA + 22 + + ) + +67  + #PF_IRDA + 23 + + ) + +68  + #PF_PPPOX + 24 + + ) + +69  + #PF_WANPIPE + 25 + + ) + +70  + #PF_LLC + 26 + + ) + +71  + #PF_IB + 27 + + ) + +72  + #PF_MPLS + 28 + + ) + +73  + #PF_CAN + 29 + + ) + +74  + #PF_TIPC + 30 + + ) + +75  + #PF_BLUETOOTH + 31 + + ) + +76  + #PF_IUCV + 32 + + ) + +77  + #PF_RXRPC + 33 + + ) + +78  + #PF_ISDN + 34 + + ) + +79  + #PF_PHONET + 35 + + ) + +80  + #PF_IEEE802154 + 36 + + ) + +81  + #PF_CAIF + 37 + + ) + +82  + #PF_ALG + 38 + + ) + +83  + #PF_NFC + 39 + + ) + +84  + #PF_VSOCK + 40 + + ) + +85  + #PF_MAX + 41 + + ) + +88  + #AF_UNSPEC + +PF_UNSPEC + + + ) + +89  + #AF_LOCAL + +PF_LOCAL + + + ) + +90  + #AF_UNIX + +PF_UNIX + + + ) + +91  + #AF_FILE + +PF_FILE + + + ) + +92  + #AF_INET + +PF_INET + + + ) + +93  + #AF_AX25 + +PF_AX25 + + + ) + +94  + #AF_IPX + +PF_IPX + + + ) + +95  + #AF_APPLETALK + +PF_APPLETALK + + + ) + +96  + #AF_NETROM + +PF_NETROM + + + ) + +97  + #AF_BRIDGE + +PF_BRIDGE + + + ) + +98  + #AF_ATMPVC + +PF_ATMPVC + + + ) + +99  + #AF_X25 + +PF_X25 + + + ) + +100  + #AF_INET6 + +PF_INET6 + + + ) + +101  + #AF_ROSE + +PF_ROSE + + + ) + +102  + #AF_DECt + +PF_DECt + + + ) + +103  + #AF_NETBEUI + +PF_NETBEUI + + + ) + +104  + #AF_SECURITY + +PF_SECURITY + + + ) + +105  + #AF_KEY + +PF_KEY + + + ) + +106  + #AF_NETLINK + +PF_NETLINK + + + ) + +107  + #AF_ROUTE + +PF_ROUTE + + + ) + +108  + #AF_PACKET + +PF_PACKET + + + ) + +109  + #AF_ASH + +PF_ASH + + + ) + +110  + #AF_ECONET + +PF_ECONET + + + ) + +111  + #AF_ATMSVC + +PF_ATMSVC + + + ) + +112  + #AF_RDS + +PF_RDS + + + ) + +113  + #AF_SNA + +PF_SNA + + + ) + +114  + #AF_IRDA + +PF_IRDA + + + ) + +115  + #AF_PPPOX + +PF_PPPOX + + + ) + +116  + #AF_WANPIPE + +PF_WANPIPE + + + ) + +117  + #AF_LLC + +PF_LLC + + + ) + +118  + #AF_IB + +PF_IB + + + ) + +119  + #AF_MPLS + +PF_MPLS + + + ) + +120  + #AF_CAN + +PF_CAN + + + ) + +121  + #AF_TIPC + +PF_TIPC + + + ) + +122  + #AF_BLUETOOTH + +PF_BLUETOOTH + + + ) + +123  + #AF_IUCV + +PF_IUCV + + + ) + +124  + #AF_RXRPC + +PF_RXRPC + + + ) + +125  + #AF_ISDN + +PF_ISDN + + + ) + +126  + #AF_PHONET + +PF_PHONET + + + ) + +127  + #AF_IEEE802154 + +PF_IEEE802154 + + + ) + +128  + #AF_CAIF + +PF_CAIF + + + ) + +129  + #AF_ALG + +PF_ALG + + + ) + +130  + #AF_NFC + +PF_NFC + + + ) + +131  + #AF_VSOCK + +PF_VSOCK + + + ) + +132  + #AF_MAX + +PF_MAX + + + ) + +138  + #SOL_RAW + 255 + + ) + +139  + #SOL_DECNET + 261 + + ) + +140  + #SOL_X25 + 262 + + ) + +141  + #SOL_PACKET + 263 + + ) + +142  + #SOL_ATM + 264 + + ) + +143  + #SOL_AAL + 265 + + ) + +144  + #SOL_IRDA + 266 + + ) + +147  + #SOMAXCONN + 128 + + ) + +150  + ~ + +153  + ssockaddr + + +155 +__SOCKADDR_COMMON + ( +_ +); + +156  + m_da +[14]; + +162  + #__ss_igy +  + + ) + +163  + #_SS_PADSIZE + \ + +164 ( +_SS_SIZE + - +__SOCKADDR_COMMON_SIZE + -  ( +__ss_igy +)) + + ) + +166  + ssockaddr_age + + +168 +__SOCKADDR_COMMON + ( +ss_ +); + +169  + m__ss_ddg +[ +_SS_PADSIZE +]; + +170 +__ss_igy + + m__ss_ign +; + +177 + mMSG_OOB + = 0x01, + +178  + #MSG_OOB + +MSG_OOB + + + ) + +179 + mMSG_PEEK + = 0x02, + +180  + #MSG_PEEK + +MSG_PEEK + + + ) + +181 + mMSG_DONTROUTE + = 0x04, + +182  + #MSG_DONTROUTE + +MSG_DONTROUTE + + + ) + +183 #ifde +__USE_GNU + + +185 + mMSG_TRYHARD + = +MSG_DONTROUTE +, + +186  + #MSG_TRYHARD + +MSG_DONTROUTE + + + ) + +188 + mMSG_CTRUNC + = 0x08, + +189  + #MSG_CTRUNC + +MSG_CTRUNC + + + ) + +190 + mMSG_PROXY + = 0x10, + +191  + #MSG_PROXY + +MSG_PROXY + + + ) + +192 + mMSG_TRUNC + = 0x20, + +193  + #MSG_TRUNC + +MSG_TRUNC + + + ) + +194 + mMSG_DONTWAIT + = 0x40, + +195  + #MSG_DONTWAIT + +MSG_DONTWAIT + + + ) + +196 + mMSG_EOR + = 0x80, + +197  + #MSG_EOR + +MSG_EOR + + + ) + +198 + mMSG_WAITALL + = 0x100, + +199  + #MSG_WAITALL + +MSG_WAITALL + + + ) + +200 + mMSG_FIN + = 0x200, + +201  + #MSG_FIN + +MSG_FIN + + + ) + +202 + mMSG_SYN + = 0x400, + +203  + #MSG_SYN + +MSG_SYN + + + ) + +204 + mMSG_CONFIRM + = 0x800, + +205  + #MSG_CONFIRM + +MSG_CONFIRM + + + ) + +206 + mMSG_RST + = 0x1000, + +207  + #MSG_RST + +MSG_RST + + + ) + +208 + mMSG_ERRQUEUE + = 0x2000, + +209  + #MSG_ERRQUEUE + +MSG_ERRQUEUE + + + ) + +210 + mMSG_NOSIGNAL + = 0x4000, + +211  + #MSG_NOSIGNAL + +MSG_NOSIGNAL + + + ) + +212 + mMSG_MORE + = 0x8000, + +213  + #MSG_MORE + +MSG_MORE + + + ) + +214 + mMSG_WAITFORONE + = 0x10000, + +215  + #MSG_WAITFORONE + +MSG_WAITFORONE + + + ) + +216 + mMSG_FASTOPEN + = 0x20000000, + +217  + #MSG_FASTOPEN + +MSG_FASTOPEN + + + ) + +219 + mMSG_CMSG_CLOEXEC + = 0x40000000 + +222  + #MSG_CMSG_CLOEXEC + +MSG_CMSG_CLOEXEC + + + ) + +228  + smsghdr + + +230 * + mmsg_me +; + +231 +sockn_t + + mmsg_m +; + +233  +iovec + * + mmsg_iov +; + +234 +size_t + + mmsg_iovn +; + +236 * + mmsg_cڌ +; + +237 +size_t + + mmsg_cڌn +; + +242  + mmsg_ags +; + +246  + scmsghdr + + +248 +size_t + + mcmsg_n +; + +253  + mcmsg_v +; + +254  + mcmsg_ty +; + +255 #i(! +defed + +__STRICT_ANSI__ + && +__GNUC__ + >2|| +__STDC_VERSION__ + >= 199901L + +256 +__exnsi__ +  +__cmsg_da + + m__exr +; + +261 #i(! +defed + +__STRICT_ANSI__ + && +__GNUC__ + >2|| +__STDC_VERSION__ + >= 199901L + +262  + #CMSG_DATA +( +cmsg +((cmsg)-> +__cmsg_da +) + + ) + +264  + #CMSG_DATA +( +cmsg +((*(( +cmsghdr + *(cmsg+ 1)) + + ) + +266  + #CMSG_NXTHDR +( +mhdr +, +cmsg + + `__cmsg_nxthdr + (mhdr, cmsg) + + ) + +267  + #CMSG_FIRSTHDR +( +mhdr +) \ + +268 (( +size_t +( +mhdr +)-> +msg_cڌn + > ( +cmsghdr +) \ + +269 ? ( +cmsghdr + *( +mhdr +)-> +msg_cڌ + : (cmsghd*0) + + ) + +270  + #CMSG_ALIGN +( +n +((֒+  ( +size_t +) - 1) \ + +271 & ( +size_t +~( (size_t- 1)) + + ) + +272  + #CMSG_SPACE +( +n +( + `CMSG_ALIGN + (len) \ + +273 + + `CMSG_ALIGN + ( ( +cmsghdr +))) + + ) + +274  + #CMSG_LEN +( +n +( + `CMSG_ALIGN + ( ( +cmsghdr +)+ (n)) + + ) + +276  +cmsghdr + * + $__cmsg_nxthdr + ( +msghdr + * +__mhdr +, + +277  +cmsghdr + * +__cmsg + +__THROW +; + +278 #ifde +__USE_EXTERN_INLINES + + +279 #ide +_EXTERN_INLINE + + +280  + #_EXTERN_INLINE + +__ex_le + + + ) + +282 +_EXTERN_INLINE +  +cmsghdr + * + +283 + `__NTH + ( + $__cmsg_nxthdr + ( +msghdr + * +__mhdr +,  +cmsghdr + * +__cmsg +)) + +285 i(( +size_t + +__cmsg +-> +cmsg_n + <  ( +cmsghdr +)) + +287  ( +cmsghdr + *) 0; + +289 +__cmsg + = ( +cmsghdr + *) ((*) __cmsg + +290 + + `CMSG_ALIGN + ( +__cmsg +-> +cmsg_n +)); + +291 i((*( +__cmsg + + 1> ((* +__mhdr +-> +msg_cڌ + + +292 + +__mhdr +-> +msg_cڌn +) + +293 || ((* +__cmsg + + + `CMSG_ALIGN + (__cmsg-> +cmsg_n +) + +294 > ((* +__mhdr +-> +msg_cڌ + + __mhdr-> +msg_cڌn +))) + +296  ( +cmsghdr + *) 0; + +297  +__cmsg +; + +298 + } +} + +305 + mSCM_RIGHTS + = 0x01 + +306  + #SCM_RIGHTS + +SCM_RIGHTS + + + ) + +307 #ifde +__USE_GNU + + +308 , + mSCM_CREDENTIALS + = 0x02 + +309  + #SCM_CREDENTIALS + +SCM_CREDENTIALS + + + ) + +313 #ifde +__USE_GNU + + +315  + sued + + +317 +pid_t + + mpid +; + +318 +uid_t + + muid +; + +319 +gid_t + + mgid +; + +324 #ide +__USE_MISC + + +325 #ide +FIOGETOWN + + +326  + #__SYS_SOCKET_H_undef_FIOGETOWN + + + ) + +328 #ide +FIOSETOWN + + +329  + #__SYS_SOCKET_H_undef_FIOSETOWN + + + ) + +331 #ide +SIOCATMARK + + +332  + #__SYS_SOCKET_H_undef_SIOCATMARK + + + ) + +334 #ide +SIOCGPGRP + + +335  + #__SYS_SOCKET_H_undef_SIOCGPGRP + + + ) + +337 #ide +SIOCGSTAMP + + +338  + #__SYS_SOCKET_H_undef_SIOCGSTAMP + + + ) + +340 #ide +SIOCGSTAMPNS + + +341  + #__SYS_SOCKET_H_undef_SIOCGSTAMPNS + + + ) + +343 #ide +SIOCSPGRP + + +344  + #__SYS_SOCKET_H_undef_SIOCSPGRP + + + ) + +349  + ~ + +351 #ide +__USE_MISC + + +352 #ifde +__SYS_SOCKET_H_undef_FIOGETOWN + + +353 #unde +__SYS_SOCKET_H_undef_FIOGETOWN + + +354 #unde +FIOGETOWN + + +356 #ifde +__SYS_SOCKET_H_undef_FIOSETOWN + + +357 #unde +__SYS_SOCKET_H_undef_FIOSETOWN + + +358 #unde +FIOSETOWN + + +360 #ifde +__SYS_SOCKET_H_undef_SIOCATMARK + + +361 #unde +__SYS_SOCKET_H_undef_SIOCATMARK + + +362 #unde +SIOCATMARK + + +364 #ifde +__SYS_SOCKET_H_undef_SIOCGPGRP + + +365 #unde +__SYS_SOCKET_H_undef_SIOCGPGRP + + +366 #unde +SIOCGPGRP + + +368 #ifde +__SYS_SOCKET_H_undef_SIOCGSTAMP + + +369 #unde +__SYS_SOCKET_H_undef_SIOCGSTAMP + + +370 #unde +SIOCGSTAMP + + +372 #ifde +__SYS_SOCKET_H_undef_SIOCGSTAMPNS + + +373 #unde +__SYS_SOCKET_H_undef_SIOCGSTAMPNS + + +374 #unde +SIOCGSTAMPNS + + +376 #ifde +__SYS_SOCKET_H_undef_SIOCSPGRP + + +377 #unde +__SYS_SOCKET_H_undef_SIOCSPGRP + + +378 #unde +SIOCSPGRP + + +383  + slg + + +385  + ml_off +; + +386  + ml_lg +; + + @/usr/include/bits/socket2.h + +19 #ide +_SYS_SOCKET_H + + +23 +ssize_t + +__cv_chk + ( +__fd +, * +__buf +, +size_t + +__n +, size_ +__bu +, + +24  +__ags +); + +25 +ssize_t + +__REDIRECT + ( +__cv_s +, ( +__fd +, * +__buf +, +size_t + +__n +, + +26  +__ags +), +cv +); + +27 +ssize_t + +__REDIRECT + ( +__cv_chk_wn +, + +28 ( +__fd +, * +__buf +, +size_t + +__n +, size_ +__bu +, + +29  +__ags +), +__cv_chk +) + +30 +__wljr + ("recv called with biggerengthhan size of destination " + +33 +__ftify_funi + +ssize_t + + +34 + $cv + ( +__fd +, * +__buf +, +size_t + +__n +,  +__ags +) + +36 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +38 i(! + `__but_cڡt_p + ( +__n +)) + +39  + `__cv_chk + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__ags +); + +41 i( +__n + > + `__bos0 + ( +__buf +)) + +42  + `__cv_chk_wn + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__ags +); + +44  + `__cv_s + ( +__fd +, +__buf +, +__n +, +__ags +); + +45 + } +} + +47 +ssize_t + +__cvom_chk + ( +__fd +, * +__ri + +__buf +, +size_t + +__n +, + +48 +size_t + +__bu +,  +__ags +, + +49 +__SOCKADDR_ARG + +__addr +, + +50 +sockn_t + * +__ri + +__addr_n +); + +51 +ssize_t + +__REDIRECT + ( +__cvom_s +, + +52 ( +__fd +, * +__ri + +__buf +, +size_t + +__n +, + +53  +__ags +, +__SOCKADDR_ARG + +__addr +, + +54 +sockn_t + * +__ri + +__addr_n +), +cvom +); + +55 +ssize_t + +__REDIRECT + ( +__cvom_chk_wn +, + +56 ( +__fd +, * +__ri + +__buf +, +size_t + +__n +, + +57 +size_t + +__bu +,  +__ags +, + +58 +__SOCKADDR_ARG + +__addr +, + +59 +sockn_t + * +__ri + +__addr_n +), +__cvom_chk +) + +60 +__wljr + ("recvfrom called with biggerengthhan size of " + +63 +__ftify_funi + +ssize_t + + +64 + $cvom + ( +__fd +, * +__ri + +__buf +, +size_t + +__n +,  +__ags +, + +65 +__SOCKADDR_ARG + +__addr +, +sockn_t + * +__ri + +__addr_n +) + +67 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +69 i(! + `__but_cڡt_p + ( +__n +)) + +70  + `__cvom_chk + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__ags +, + +71 +__addr +, +__addr_n +); + +72 i( +__n + > + `__bos0 + ( +__buf +)) + +73  + `__cvom_chk_wn + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__ags +, + +74 +__addr +, +__addr_n +); + +76  + `__cvom_s + ( +__fd +, +__buf +, +__n +, +__ags +, +__addr +, +__addr_n +); + +77 + } +} + + @/usr/include/bits/stat.h + +18 #i! +defed + +_SYS_STAT_H + && !defed +_FCNTL_H + + +22 #ide +_BITS_STAT_H + + +23  + #_BITS_STAT_H + 1 + + ) + +26 #ide +__x86_64__ + + +27  + #_STAT_VER_LINUX_OLD + 1 + + ) + +28  + #_STAT_VER_KERNEL + 1 + + ) + +29  + #_STAT_VER_SVR4 + 2 + + ) + +30  + #_STAT_VER_LINUX + 3 + + ) + +33  + #_MKNOD_VER_LINUX + 1 + + ) + +34  + #_MKNOD_VER_SVR4 + 2 + + ) + +35  + #_MKNOD_VER + +_MKNOD_VER_LINUX + + + ) + +37  + #_STAT_VER_KERNEL + 0 + + ) + +38  + #_STAT_VER_LINUX + 1 + + ) + +41  + #_MKNOD_VER_LINUX + 0 + + ) + +44  + #_STAT_VER + +_STAT_VER_LINUX + + + ) + +46  + s + + +48 +__dev_t + + m_dev +; + +49 #ide +__x86_64__ + + +50  + m__d1 +; + +52 #i +defed + +__x86_64__ + || !defed +__USE_FILE_OFFSET64 + + +53 +__o_t + + m_o +; + +55 +__o_t + + m___o +; + +57 #ide +__x86_64__ + + +58 +__mode_t + + m_mode +; + +59 +__ƚk_t + + m_ƚk +; + +61 +__ƚk_t + + m_ƚk +; + +62 +__mode_t + + m_mode +; + +64 +__uid_t + + m_uid +; + +65 +__gid_t + + m_gid +; + +66 #ifde +__x86_64__ + + +67  + m__d0 +; + +69 +__dev_t + + m_rdev +; + +70 #ide +__x86_64__ + + +71  + m__d2 +; + +73 #i +defed + +__x86_64__ + || !defed +__USE_FILE_OFFSET64 + + +74 +__off_t + + m_size +; + +76 +__off64_t + + m_size +; + +78 +__blksize_t + + m_blksize +; + +79 #i +defed + +__x86_64__ + || !defed +__USE_FILE_OFFSET64 + + +80 +__blkt_t + + m_blocks +; + +82 +__blkt64_t + + m_blocks +; + +84 #ifde +__USE_XOPEN2K8 + + +91  +timeec + + m_im +; + +92  +timeec + + m_mtim +; + +93  +timeec + + m_im +; + +94  + #_ime + +_im +. +tv_c + + + ) + +95  + #_mtime + +_mtim +. +tv_c + + + ) + +96  + #_ime + +_im +. +tv_c + + + ) + +98 +__time_t + + m_ime +; + +99 +__sys_ulg_t + + m_imc +; + +100 +__time_t + + m_mtime +; + +101 +__sys_ulg_t + + m_mtimc +; + +102 +__time_t + + m_ime +; + +103 +__sys_ulg_t + + m_imc +; + +105 #ifde +__x86_64__ + + +106 +__sys_g_t + + m__glibc_rved +[3]; + +108 #ide +__USE_FILE_OFFSET64 + + +109  + m__glibc_rved4 +; + +110  + m__glibc_rved5 +; + +112 +__o64_t + + m_o +; + +117 #ifde +__USE_LARGEFILE64 + + +119  + s64 + + +121 +__dev_t + + m_dev +; + +122 #ifde +__x86_64__ + + +123 +__o64_t + + m_o +; + +124 +__ƚk_t + + m_ƚk +; + +125 +__mode_t + + m_mode +; + +127  + m__d1 +; + +128 +__o_t + + m___o +; + +129 +__mode_t + + m_mode +; + +130 +__ƚk_t + + m_ƚk +; + +132 +__uid_t + + m_uid +; + +133 +__gid_t + + m_gid +; + +134 #ifde +__x86_64__ + + +135  + m__d0 +; + +136 +__dev_t + + m_rdev +; + +137 +__off_t + + m_size +; + +139 +__dev_t + + m_rdev +; + +140  + m__d2 +; + +141 +__off64_t + + m_size +; + +143 +__blksize_t + + m_blksize +; + +144 +__blkt64_t + + m_blocks +; + +145 #ifde +__USE_XOPEN2K8 + + +152  +timeec + + m_im +; + +153  +timeec + + m_mtim +; + +154  +timeec + + m_im +; + +156 +__time_t + + m_ime +; + +157 +__sys_ulg_t + + m_imc +; + +158 +__time_t + + m_mtime +; + +159 +__sys_ulg_t + + m_mtimc +; + +160 +__time_t + + m_ime +; + +161 +__sys_ulg_t + + m_imc +; + +163 #ifde +__x86_64__ + + +164 +__sys_g_t + + m__glibc_rved +[3]; + +166 +__o64_t + + m_o +; + +172  + #_STATBUF_ST_BLKSIZE + + + ) + +173  + #_STATBUF_ST_RDEV + + + ) + +175  + #_STATBUF_ST_NSEC + + + ) + +179  + #__S_IFMT + 0170000 + + ) + +182  + #__S_IFDIR + 0040000 + + ) + +183  + #__S_IFCHR + 0020000 + + ) + +184  + #__S_IFBLK + 0060000 + + ) + +185  + #__S_IFREG + 0100000 + + ) + +186  + #__S_IFIFO + 0010000 + + ) + +187  + #__S_IFLNK + 0120000 + + ) + +188  + #__S_IFSOCK + 0140000 + + ) + +192  + #__S_TYPEISMQ +( +buf +((buf)-> +_mode + - (buf)->_mode) + + ) + +193  + #__S_TYPEISSEM +( +buf +((buf)-> +_mode + - (buf)->_mode) + + ) + +194  + #__S_TYPEISSHM +( +buf +((buf)-> +_mode + - (buf)->_mode) + + ) + +198  + #__S_ISUID + 04000 + + ) + +199  + #__S_ISGID + 02000 + + ) + +200  + #__S_ISVTX + 01000 + + ) + +201  + #__S_IREAD + 0400 + + ) + +202  + #__S_IWRITE + 0200 + + ) + +203  + #__S_IEXEC + 0100 + + ) + +205 #ifde +__USE_ATFILE + + +206  + #UTIME_NOW + ((1<< 30- 1l) + + ) + +207  + #UTIME_OMIT + ((1<< 30- 2l) + + ) + + @/usr/include/bits/stdio-ldbl.h + +19 #ide +_STDIO_H + + +23 +__BEGIN_NAMESPACE_STD + + +24 + $__LDBL_REDIR_DECL + ( +rtf +) + +25 + $__LDBL_REDIR_DECL + ( +tf +) + +26 + $__LDBL_REDIR_DECL + ( +rtf +) + +27 + $__LDBL_REDIR_DECL + ( +vrtf +) + +28 + $__LDBL_REDIR_DECL + ( +vtf +) + +29 + $__LDBL_REDIR_DECL + ( +vrtf +) + +30 #i +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +31 && ! +defed + +__REDIRECT + \ + +32 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +33 + $__LDBL_REDIR1_DECL + ( +fsnf +, +__dbl___isoc99_fsnf +) + +34 + $__LDBL_REDIR1_DECL + ( +snf +, +__dbl___isoc99_snf +) + +35 + $__LDBL_REDIR1_DECL + ( +ssnf +, +__dbl___isoc99_ssnf +) + +37 + $__LDBL_REDIR_DECL + ( +fsnf +) + +38 + $__LDBL_REDIR_DECL + ( +snf +) + +39 + $__LDBL_REDIR_DECL + ( +ssnf +) + +41 +__END_NAMESPACE_STD + + +43 #i +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +44 +__BEGIN_NAMESPACE_C99 + + +45 + $__LDBL_REDIR_DECL + ( +tf +) + +46 + $__LDBL_REDIR_DECL + ( +vtf +) + +47 +__END_NAMESPACE_C99 + + +50 #ifdef +__USE_ISOC99 + + +51 +__BEGIN_NAMESPACE_C99 + + +52 #i! +defed + +__USE_GNU + && !defed +__REDIRECT + \ + +53 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +54 + $__LDBL_REDIR1_DECL + ( +vfsnf +, +__dbl___isoc99_vfsnf +) + +55 + $__LDBL_REDIR1_DECL + ( +vsnf +, +__dbl___isoc99_vsnf +) + +56 + $__LDBL_REDIR1_DECL + ( +vssnf +, +__dbl___isoc99_vssnf +) + +58 + $__LDBL_REDIR_DECL + ( +vfsnf +) + +59 + $__LDBL_REDIR_DECL + ( +vssnf +) + +60 + $__LDBL_REDIR_DECL + ( +vsnf +) + +62 +__END_NAMESPACE_C99 + + +65 #ifde +__USE_XOPEN2K8 + + +66 + $__LDBL_REDIR_DECL + ( +vdtf +) + +67 + $__LDBL_REDIR_DECL + ( +dtf +) + +70 #ifde +__USE_GNU + + +71 + $__LDBL_REDIR_DECL + ( +vartf +) + +72 + $__LDBL_REDIR_DECL + ( +__artf +) + +73 + $__LDBL_REDIR_DECL + ( +artf +) + +74 + $__LDBL_REDIR_DECL + ( +oback_tf +) + +75 + $__LDBL_REDIR_DECL + ( +oback_vtf +) + +78 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +79 + $__LDBL_REDIR_DECL + ( +__rtf_chk +) + +80 + $__LDBL_REDIR_DECL + ( +__vrtf_chk +) + +81 #i +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +82 + $__LDBL_REDIR_DECL + ( +__tf_chk +) + +83 + $__LDBL_REDIR_DECL + ( +__vtf_chk +) + +85 #i +__USE_FORTIFY_LEVEL + > 1 + +86 + $__LDBL_REDIR_DECL + ( +__rtf_chk +) + +87 + $__LDBL_REDIR_DECL + ( +__tf_chk +) + +88 + $__LDBL_REDIR_DECL + ( +__vrtf_chk +) + +89 + $__LDBL_REDIR_DECL + ( +__vtf_chk +) + +90 #ifde +__USE_XOPEN2K8 + + +91 + $__LDBL_REDIR_DECL + ( +__dtf_chk +) + +92 + $__LDBL_REDIR_DECL + ( +__vdtf_chk +) + +94 #ifde +__USE_GNU + + +95 + $__LDBL_REDIR_DECL + ( +__artf_chk +) + +96 + $__LDBL_REDIR_DECL + ( +__vartf_chk +) + +97 + $__LDBL_REDIR_DECL + ( +__oback_tf_chk +) + +98 + $__LDBL_REDIR_DECL + ( +__oback_vtf_chk +) + + @/usr/include/bits/stdio.h + +19 #ide +_STDIO_H + + +23 #ide +__ex_le + + +24  + #__STDIO_INLINE + +le + + + ) + +26  + #__STDIO_INLINE + +__ex_le + + + ) + +30 #ifde +__USE_EXTERN_INLINES + + +33 #i!( +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi +) + +35 +__STDIO_INLINE +  + +36 + $vtf + (cڡ * +__ri + +__fmt +, +_G_va_li + +__g +) + +38  + `vrtf + ( +dout +, +__fmt +, +__g +); + +39 + } +} + +43 +__STDIO_INLINE +  + +44 + $gch + () + +46  + `_IO_gc + ( +d +); + +47 + } +} + +50 #ifde +__USE_MISC + + +52 +__STDIO_INLINE +  + +53 + $fgc_uocked + ( +FILE + * +__ +) + +55  + `_IO_gc_uocked + ( +__ +); + +56 + } +} + +60 #ifde +__USE_POSIX + + +62 +__STDIO_INLINE +  + +63 + $gc_uocked + ( +FILE + * +__ +) + +65  + `_IO_gc_uocked + ( +__ +); + +66 + } +} + +69 +__STDIO_INLINE +  + +70 + $gch_uocked + () + +72  + `_IO_gc_uocked + ( +d +); + +73 + } +} + +78 +__STDIO_INLINE +  + +79 + $putch + ( +__c +) + +81  + `_IO_putc + ( +__c +, +dout +); + +82 + } +} + +85 #ifde +__USE_MISC + + +87 +__STDIO_INLINE +  + +88 + $utc_uocked + ( +__c +, +FILE + * +__am +) + +90  + `_IO_putc_uocked + ( +__c +, +__am +); + +91 + } +} + +95 #ifde +__USE_POSIX + + +97 +__STDIO_INLINE +  + +98 + $putc_uocked + ( +__c +, +FILE + * +__am +) + +100  + `_IO_putc_uocked + ( +__c +, +__am +); + +101 + } +} + +104 +__STDIO_INLINE +  + +105 + $putch_uocked + ( +__c +) + +107  + `_IO_putc_uocked + ( +__c +, +dout +); + +108 + } +} + +112 #ifdef +__USE_GNU + + +114 +__STDIO_INLINE + +_IO_ssize_t + + +115 + $gle + (** +__l +, +size_t + * +__n +, +FILE + * +__am +) + +117  + `__gdim + ( +__l +, +__n +, '\n', +__am +); + +118 + } +} + +122 #ifde +__USE_MISC + + +124 +__STDIO_INLINE +  + +125 +__NTH + ( + $of_uocked + ( +FILE + * +__am +)) + +127  + `_IO_of_uocked + ( +__am +); + +128 + } +} + +131 +__STDIO_INLINE +  + +132 +__NTH + ( + $_uocked + ( +FILE + * +__am +)) + +134  + `_IO__uocked + ( +__am +); + +135 + } +} + +141 #i +defed + +__USE_MISC + && defed +__GNUC__ + && defed +__OPTIMIZE__ + \ + +142 && ! +defed + + g__lulus + + +144  + #d_uocked +( +r +, +size +, +n +, +am +) \ + +145 ( + `__exnsi__ + (( + `__but_cڡt_p + ( +size +&& __but_cڡt_( +n +) \ + +146 && ( +size_t +( +size +* (size_t( +n +) <= 8 \ + +147 && ( +size_t +( +size +) != 0) \ + +148 ? ({ * +__r + = (*( +r +); \ + +149 +FILE + * +__am + = ( +am +); \ + +150 +size_t + +__t +; \ + +151  +__t + = ( +size_t +( +size +* (size_t( +n +); \ + +152 +__t + > 0; --__cnt) \ + +154  +__c + = + `_IO_gc_uocked + ( +__am +); \ + +155 i( +__c + = +EOF +) \ + +157 * +__r +++ = +__c +; \ + +159 (( +size_t +( +size +* (size_t( +n +- +__t +) \ + +160 / ( +size_t +( +size +); }) \ + +161 : ((( + `__but_cڡt_p + ( +size +&& ( +size_t +) (size) == 0) \ + +162 || ( + `__but_cڡt_p + ( +n +&& ( +size_t +) (n) == 0)) \ + +164 ? ((( +r +), (( +am +), (( +size +), \ + +165 (( +n +), ( +size_t +) 0) \ + +166 : + `d_uocked + ( +r +, +size +, +n +, +am +)))) + + ) + +168  + #fwre_uocked +( +r +, +size +, +n +, +am +) \ + +169 ( + `__exnsi__ + (( + `__but_cڡt_p + ( +size +&& __but_cڡt_( +n +) \ + +170 && ( +size_t +( +size +* (size_t( +n +) <= 8 \ + +171 && ( +size_t +( +size +) != 0) \ + +172 ? ({ cڡ * +__r + = (cڡ *( +r +); \ + +173 +FILE + * +__am + = ( +am +); \ + +174 +size_t + +__t +; \ + +175  +__t + = ( +size_t +( +size +* (size_t( +n +); \ + +176 +__t + > 0; --__cnt) \ + +177 i( + `_IO_putc_uocked + (* +__r +++, +__am += +EOF +) \ + +179 (( +size_t +( +size +* (size_t( +n +- +__t +) \ + +180 / ( +size_t +( +size +); }) \ + +181 : ((( + `__but_cڡt_p + ( +size +&& ( +size_t +) (size) == 0) \ + +182 || ( + `__but_cڡt_p + ( +n +&& ( +size_t +) (n) == 0)) \ + +184 ? ((( +r +), (( +am +), (( +size +), \ + +185 (( +n +), ( +size_t +) 0) \ + +186 : + `fwre_uocked + ( +r +, +size +, +n +, +am +)))) + + ) + +190 #unde +__STDIO_INLINE + + + @/usr/include/bits/stdio2.h + +19 #ide +_STDIO_H + + +23  + $__rtf_chk + (* +__ri + +__s +,  +__ag +, +size_t + +__ +, + +24 cڡ * +__ri + +__fm +, ... +__THROW +; + +25  + $__vrtf_chk + (* +__ri + +__s +,  +__ag +, +size_t + +__ +, + +26 cڡ * +__ri + +__fm +, + +27 +_G_va_li + +__ + +__THROW +; + +29 #ifde +__va_g_ck + + +30 +__ftify_funi +  + +31 + `__NTH + ( + $rtf + (* +__ri + +__s +, cڡ *__ri +__fmt +, ...)) + +33  + `__but___rtf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +34 + `__bos + ( +__s +), +__fmt +, + `__va_g_ck + ()); + +35 + } +} + +36 #i! +defed + +__lulus + + +37  + #rtf +( +r +, ...) \ + +38 + `__but___rtf_chk + ( +r +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +39 +__VA_ARGS__ +) + + ) + +42 +__ftify_funi +  + +43 +__NTH + ( + $vrtf + (* +__ri + +__s +, cڡ *__ri +__fmt +, + +44 +_G_va_li + +__ +)) + +46  + `__but___vrtf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +47 + `__bos + ( +__s +), +__fmt +, +__ +); + +48 + } +} + +50 #i +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +52  + $__tf_chk + (* +__ri + +__s +, +size_t + +__n +,  +__ag +, + +53 +size_t + +__ +, cڡ * +__ri + +__fm +, + +54 ... +__THROW +; + +55  + $__vtf_chk + (* +__ri + +__s +, +size_t + +__n +,  +__ag +, + +56 +size_t + +__ +, cڡ * +__ri + +__fm +, + +57 +_G_va_li + +__ + +__THROW +; + +59 #ifde +__va_g_ck + + +60 +__ftify_funi +  + +61 + `__NTH + ( + $tf + (* +__ri + +__s +, +size_t + +__n +, + +62 cڡ * +__ri + +__fmt +, ...)) + +64  + `__but___tf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +65 + `__bos + ( +__s +), +__fmt +, + `__va_g_ck + ()); + +66 + } +} + +67 #i! +defed + +__lulus + + +68  + #tf +( +r +, +n +, ...) \ + +69 + `__but___tf_chk + ( +r +, +n +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +70 +__VA_ARGS__ +) + + ) + +73 +__ftify_funi +  + +74 +__NTH + ( + $vtf + (* +__ri + +__s +, +size_t + +__n +, + +75 cڡ * +__ri + +__fmt +, +_G_va_li + +__ +)) + +77  + `__but___vtf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +78 + `__bos + ( +__s +), +__fmt +, +__ +); + +79 + } +} + +83 #i +__USE_FORTIFY_LEVEL + > 1 + +85  +__rtf_chk + ( +FILE + * +__ri + +__am +,  +__ag +, + +86 cڡ * +__ri + +__fm +, ...); + +87  +__tf_chk + ( +__ag +, cڡ * +__ri + +__fm +, ...); + +88  +__vrtf_chk + ( +FILE + * +__ri + +__am +,  +__ag +, + +89 cڡ * +__ri + +__fm +, +_G_va_li + +__ +); + +90  +__vtf_chk + ( +__ag +, cڡ * +__ri + +__fm +, + +91 +_G_va_li + +__ +); + +93 #ifde +__va_g_ck + + +94 +__ftify_funi +  + +95 + $rtf + ( +FILE + * +__ri + +__am +, cڡ *__ri +__fmt +, ...) + +97  + `__rtf_chk + ( +__am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +98 + `__va_g_ck + ()); + +99 + } +} + +101 +__ftify_funi +  + +102 + $tf + (cڡ * +__ri + +__fmt +, ...) + +104  + `__tf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + `__va_g_ck + ()); + +105 + } +} + +106 #i! +defed + +__lulus + + +107  + #tf +(...) \ + +108 + `__tf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +109  + #rtf +( +am +, ...) \ + +110 + `__rtf_chk + ( +am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +113 +__ftify_funi +  + +114 + $vtf + (cڡ * +__ri + +__fmt +, +_G_va_li + +__ +) + +116 #ifde +__USE_EXTERN_INLINES + + +117  + `__vrtf_chk + ( +dout +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +119  + `__vtf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +121 + } +} + +123 +__ftify_funi +  + +124 + $vrtf + ( +FILE + * +__ri + +__am +, + +125 cڡ * +__ri + +__fmt +, +_G_va_li + +__ +) + +127  + `__vrtf_chk + ( +__am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +128 + } +} + +130 #ifde +__USE_XOPEN2K8 + + +131  + $__dtf_chk + ( +__fd +,  +__ag +, cڡ * +__ri + +__fmt +, + +132 ... + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 4))); + +133  + $__vdtf_chk + ( +__fd +,  +__ag +, + +134 cڡ * +__ri + +__fmt +, +_G_va_li + +__g +) + +135 + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 0))); + +137 #ifde +__va_g_ck + + +138 +__ftify_funi +  + +139 + $dtf + ( +__fd +, cڡ * +__ri + +__fmt +, ...) + +141  + `__dtf_chk + ( +__fd +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +142 + `__va_g_ck + ()); + +143 + } +} + +144 #i! +defed + +__lulus + + +145  + #dtf +( +fd +, ...) \ + +146 + `__dtf_chk + ( +fd +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +149 +__ftify_funi +  + +150 + $vdtf + ( +__fd +, cڡ * +__ri + +__fmt +, +_G_va_li + +__ +) + +152  + `__vdtf_chk + ( +__fd +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +153 + } +} + +156 #ifde +__USE_GNU + + +158  + $__artf_chk + (** +__ri + +__r +,  +__ag +, + +159 cڡ * +__ri + +__fmt +, ...) + +160 +__THROW + + `__ibu__ + (( + $__fm__ + ( +__tf__ +, 3, 4)) +__wur +; + +161  + $__vartf_chk + (** +__ri + +__r +,  +__ag +, + +162 cڡ * +__ri + +__fmt +, +_G_va_li + +__g +) + +163 +__THROW + + `__ibu__ + (( + $__fm__ + ( +__tf__ +, 3, 0)) +__wur +; + +164  + $__oback_tf_chk + ( +oback + * +__ri + +__oback +, + +165  +__ag +, cڡ * +__ri + +__fm +, + +167 +__THROW + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 4))); + +168  + $__oback_vtf_chk + ( +oback + * +__ri + +__oback +, + +169  +__ag +, + +170 cڡ * +__ri + +__fm +, + +171 +_G_va_li + +__gs +) + +172 +__THROW + + `__ibu__ + (( + `__fm__ + ( +__tf__ +, 3, 0))); + +174 #ifde +__va_g_ck + + +175 +__ftify_funi +  + +176 + `__NTH + ( + $artf + (** +__ri + +__r +, cڡ *__ri +__fmt +, ...)) + +178  + `__artf_chk + ( +__r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +179 + `__va_g_ck + ()); + +180 + } +} + +182 +__ftify_funi +  + +183 +__NTH + ( + $__artf + (** +__ri + +__r +, cڡ *__ri +__fmt +, + +186  + `__artf_chk + ( +__r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +187 + `__va_g_ck + ()); + +188 + } +} + +190 +__ftify_funi +  + +191 +__NTH + ( + $oback_tf + ( +oback + * +__ri + +__oback +, + +192 cڡ * +__ri + +__fmt +, ...)) + +194  + `__oback_tf_chk + ( +__oback +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +195 + `__va_g_ck + ()); + +196 + } +} + +197 #i! +defed + +__lulus + + +198  + #artf +( +r +, ...) \ + +199 + `__artf_chk + ( +r +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +200  + #__artf +( +r +, ...) \ + +201 + `__artf_chk + ( +r +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +202  + #oback_tf +( +oback +, ...) \ + +203 + `__oback_tf_chk + ( +oback +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +206 +__ftify_funi +  + +207 +__NTH + ( + $vartf + (** +__ri + +__r +, cڡ *__ri +__fmt +, + +208 +_G_va_li + +__ +)) + +210  + `__vartf_chk + ( +__r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +211 + } +} + +213 +__ftify_funi +  + +214 +__NTH + ( + $oback_vtf + ( +oback + * +__ri + +__oback +, + +215 cڡ * +__ri + +__fmt +, +_G_va_li + +__ +)) + +217  + `__oback_vtf_chk + ( +__oback +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +218 +__ +); + +219 + } +} + +225 #i! +defed + +__USE_ISOC11 + \ + +226 || ( +defed + + g__lulus + && __lulu<201103L && !defed +__USE_GNU +) + +227 * + $__gs_chk + (* +__r +, +size_t + +__wur +; + +228 * + `__REDIRECT + ( +__gs_wn +, (* +__r +), +gs +) + +229 +__wur + + `__wljr + ("please use fgets or getline instead, gets can't " + +232 +__ftify_funi + +__wur + * + +233 + $gs + (* +__r +) + +235 i( + `__bos + ( +__r +!( +size_t +) -1) + +236  + `__gs_chk + ( +__r +, + `__bos + (__str)); + +237  + `__gs_wn + ( +__r +); + +238 + } +} + +241 * + $__fgs_chk + (* +__ri + +__s +, +size_t + +__size +,  +__n +, + +242 +FILE + * +__ri + +__am + +__wur +; + +243 * + `__REDIRECT + ( +__fgs_s +, + +244 (* +__ri + +__s +,  +__n +, + +245 +FILE + * +__ri + +__am +), +fgs + +__wur +; + +246 * + `__REDIRECT + ( +__fgs_chk_wn +, + +247 (* +__ri + +__s +, +size_t + +__size +,  +__n +, + +248 +FILE + * +__ri + +__am +), +__fgs_chk +) + +249 +__wur + + `__wljr + ("fgets called with bigger sizehanength " + +252 +__ftify_funi + +__wur + * + +253 + $fgs + (* +__ri + +__s +,  +__n +, +FILE + *__ri +__am +) + +255 i( + `__bos + ( +__s +!( +size_t +) -1) + +257 i(! + `__but_cڡt_p + ( +__n +) || __n <= 0) + +258  + `__fgs_chk + ( +__s +, + `__bos + (__s), +__n +, +__am +); + +260 i(( +size_t + +__n + > + `__bos + ( +__s +)) + +261  + `__fgs_chk_wn + ( +__s +, + `__bos + (__s), +__n +, +__am +); + +263  + `__fgs_s + ( +__s +, +__n +, +__am +); + +264 + } +} + +266 +size_t + + $__d_chk + (* +__ri + +__r +, +size_t + +__ +, + +267 +size_t + +__size +, size_ +__n +, + +268 +FILE + * +__ri + +__am + +__wur +; + +269 +size_t + + `__REDIRECT + ( +__d_s +, + +270 (* +__ri + +__r +, +size_t + +__size +, + +271 +size_t + +__n +, +FILE + * +__ri + +__am +), + +272 +d + +__wur +; + +273 +size_t + + `__REDIRECT + ( +__d_chk_wn +, + +274 (* +__ri + +__r +, +size_t + +__ +, + +275 +size_t + +__size +, size_ +__n +, + +276 +FILE + * +__ri + +__am +), + +277 +__d_chk +) + +278 +__wur + + `__wljr + ("fread called with bigger size *membhanength " + +281 +__ftify_funi + +__wur + +size_t + + +282 + $d + (* +__ri + +__r +, +size_t + +__size +, size_ +__n +, + +283 +FILE + * +__ri + +__am +) + +285 i( + `__bos0 + ( +__r +!( +size_t +) -1) + +287 i(! + `__but_cڡt_p + ( +__size +) + +288 || ! + `__but_cڡt_p + ( +__n +) + +289 || ( +__size + | +__n +>((( +size_t +) 1) << (8 *  (size_t) / 2))) + +290  + `__d_chk + ( +__r +, + `__bos0 + (__r), +__size +, +__n +, +__am +); + +292 i( +__size + * +__n + > + `__bos0 + ( +__r +)) + +293  + `__d_chk_wn + ( +__r +, + `__bos0 + (__r), +__size +, +__n +, +__am +); + +295  + `__d_s + ( +__r +, +__size +, +__n +, +__am +); + +296 + } +} + +298 #ifde +__USE_GNU + + +299 * + $__fgs_uocked_chk + (* +__ri + +__s +, +size_t + +__size +, + +300  +__n +, +FILE + * +__ri + +__am + +__wur +; + +301 * + `__REDIRECT + ( +__fgs_uocked_s +, + +302 (* +__ri + +__s +,  +__n +, + +303 +FILE + * +__ri + +__am +), +fgs_uocked + +__wur +; + +304 * + `__REDIRECT + ( +__fgs_uocked_chk_wn +, + +305 (* +__ri + +__s +, +size_t + +__size +,  +__n +, + +306 +FILE + * +__ri + +__am +), +__fgs_uocked_chk +) + +307 +__wur + + `__wljr + ("fgets_unlocked called with bigger sizehanength " + +310 +__ftify_funi + +__wur + * + +311 + $fgs_uocked + (* +__ri + +__s +,  +__n +, +FILE + *__ri +__am +) + +313 i( + `__bos + ( +__s +!( +size_t +) -1) + +315 i(! + `__but_cڡt_p + ( +__n +) || __n <= 0) + +316  + `__fgs_uocked_chk + ( +__s +, + `__bos + (__s), +__n +, +__am +); + +318 i(( +size_t + +__n + > + `__bos + ( +__s +)) + +319  + `__fgs_uocked_chk_wn + ( +__s +, + `__bos + (__s), +__n +, +__am +); + +321  + `__fgs_uocked_s + ( +__s +, +__n +, +__am +); + +322 + } +} + +325 #ifde +__USE_MISC + + +326 #unde +d_uocked + + +327 +size_t + + $__d_uocked_chk + (* +__ri + +__r +, +size_t + +__ +, + +328 +size_t + +__size +, size_ +__n +, + +329 +FILE + * +__ri + +__am + +__wur +; + +330 +size_t + + `__REDIRECT + ( +__d_uocked_s +, + +331 (* +__ri + +__r +, +size_t + +__size +, + +332 +size_t + +__n +, +FILE + * +__ri + +__am +), + +333 +d_uocked + +__wur +; + +334 +size_t + + `__REDIRECT + ( +__d_uocked_chk_wn +, + +335 (* +__ri + +__r +, +size_t + +__ +, + +336 +size_t + +__size +, size_ +__n +, + +337 +FILE + * +__ri + +__am +), + +338 +__d_uocked_chk +) + +339 +__wur + + `__wljr + ("fread_unlocked called with bigger size *membhan " + +342 +__ftify_funi + +__wur + +size_t + + +343 + $d_uocked + (* +__ri + +__r +, +size_t + +__size +, size_ +__n +, + +344 +FILE + * +__ri + +__am +) + +346 i( + `__bos0 + ( +__r +!( +size_t +) -1) + +348 i(! + `__but_cڡt_p + ( +__size +) + +349 || ! + `__but_cڡt_p + ( +__n +) + +350 || ( +__size + | +__n +>((( +size_t +) 1) << (8 *  (size_t) / 2))) + +351  + `__d_uocked_chk + ( +__r +, + `__bos0 + (__r), +__size +, +__n +, + +352 +__am +); + +354 i( +__size + * +__n + > + `__bos0 + ( +__r +)) + +355  + `__d_uocked_chk_wn + ( +__r +, + `__bos0 + (__r), +__size +, +__n +, + +356 +__am +); + +359 #ifde +__USE_EXTERN_INLINES + + +360 i( + `__but_cڡt_p + ( +__size +) + +361 && + `__but_cڡt_p + ( +__n +) + +362 && ( +__size + | +__n +< ((( +size_t +) 1) << (8 *  (size_t) / 2)) + +363 && +__size + * +__n + <= 8) + +365 +size_t + +__t + = +__size + * +__n +; + +366 * +__ + = (* +__r +; + +367 i( +__t + == 0) + +370 ; +__t + > 0; --__cnt) + +372  +__c + = + `_IO_gc_uocked + ( +__am +); + +373 i( +__c + = +EOF +) + +375 * +__ +++ = +__c +; + +377  ( +__ + - (* +__r +/ +__size +; + +380  + `__d_uocked_s + ( +__r +, +__size +, +__n +, +__am +); + +381 + } +} + + @/usr/include/bits/stdio_lim.h + +18 #i! +defed + +_STDIO_H + && !defed +__ed_FOPEN_MAX + && !defed +__ed_IOV_MAX + + +22 #ifde +_STDIO_H + + +23  + #L_tmam + 20 + + ) + +24  + #TMP_MAX + 238328 + + ) + +25  + #FILENAME_MAX + 4096 + + ) + +27 #ifde +__USE_POSIX + + +28  + #L_mid + 9 + + ) + +29 #i! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +30  + #L_curid + 9 + + ) + +35 #i +defed + +__ed_FOPEN_MAX + || defed +_STDIO_H + + +36 #unde +FOPEN_MAX + + +37  + #FOPEN_MAX + 16 + + ) + +40 #i +defed + +__ed_IOV_MAX + && !defed +IOV_MAX + + +41  + #IOV_MAX + 1024 + + ) + + @/usr/include/bits/stdlib-bsearch.h + +19 +__ex_le + * + +20 + $bch + (cڡ * +__key +, cڡ * +__ba +, +size_t + +__nmemb +, size_ +__size +, + +21 +__comr__t + +__comr +) + +23 +size_t + +__l +, +__u +, +__idx +; + +24 cڡ * +__p +; + +25  +__comris +; + +27 +__l + = 0; + +28 +__u + = +__nmemb +; + +29  +__l + < +__u +) + +31 +__idx + = ( +__l + + +__u +) / 2; + +32 +__p + = (*(((cڡ * +__ba ++ ( +__idx + * +__size +)); + +33 +__comris + = (* +__comr +( +__key +, +__p +); + +34 i( +__comris + < 0) + +35 +__u + = +__idx +; + +36 i( +__comris + > 0) + +37 +__l + = +__idx + + 1; + +39  (* +__p +; + +42  +NULL +; + +43 + } +} + + @/usr/include/bits/stdlib-float.h + +19 #ide +_STDLIB_H + + +23 #ifde +__USE_EXTERN_INLINES + + +24 +__BEGIN_NAMESPACE_STD + + +25 +__ex_le +  + +26 +__NTH + ( + $of + (cڡ * +__Ō +)) + +28  + `od + ( +__Ō +, (** +NULL +); + +29 + } +} + +30 + g__END_NAMESPACE_STD + + + @/usr/include/bits/stdlib-ldbl.h + +19 #ide +_STDLIB_H + + +23 #ifdef +__USE_ISOC99 + + +24 +__BEGIN_NAMESPACE_C99 + + +25 + $__LDBL_REDIR1_DECL + ( +d +, +od +) + +26 +__END_NAMESPACE_C99 + + +29 #ifde +__USE_GNU + + +30 + $__LDBL_REDIR1_DECL + ( +d_l +, +od_l +) + +33 #ifde +__USE_MISC + + +34 + $__LDBL_REDIR1_DECL + ( +qecvt +, +ecvt +) + +35 + $__LDBL_REDIR1_DECL + ( +qfcvt +, +fcvt +) + +36 + $__LDBL_REDIR1_DECL + ( +qgcvt +, +gcvt +) + +37 + $__LDBL_REDIR1_DECL + ( +qecvt_r +, +ecvt_r +) + +38 + $__LDBL_REDIR1_DECL + ( +qfcvt_r +, +fcvt_r +) + + @/usr/include/bits/stdlib.h + +19 #ide +_STDLIB_H + + +23 * + $__th_chk + (cڡ * +__ri + +__me +, + +24 * +__ri + +__sved +, + +25 +size_t + +__svedn + +__THROW + +__wur +; + +26 * + `__REDIRECT_NTH + ( +__th_s +, + +27 (cڡ * +__ri + +__me +, + +28 * +__ri + +__sved +), +th + +__wur +; + +29 * + `__REDIRECT_NTH + ( +__th_chk_wn +, + +30 (cڡ * +__ri + +__me +, + +31 * +__ri + +__sved +, + +32 +size_t + +__svedn +), +__th_chk + +__wur + + +33 + `__wljr + ("secondrgument ofealpath must beither NULL ort " + +36 +__ftify_funi + +__wur + * + +37 + `__NTH + ( + $th + (cڡ * +__ri + +__me +, *__ri +__sved +)) + +39 i( + `__bos + ( +__sved +!( +size_t +) -1) + +41 #i +defed + +_LIBC_LIMITS_H_ + && defed +PATH_MAX + + +42 i( + `__bos + ( +__sved +< +PATH_MAX +) + +43  + `__th_chk_wn + ( +__me +, +__sved +, + `__bos + (__resolved)); + +45  + `__th_chk + ( +__me +, +__sved +, + `__bos + (__resolved)); + +48  + `__th_s + ( +__me +, +__sved +); + +49 + } +} + +52  + $__ame_r_chk + ( +__fd +, * +__buf +, +size_t + +__bu +, + +53 +size_t + +__ėl + +__THROW + + `__nnu + ((2)); + +54  + `__REDIRECT_NTH + ( +__ame_r_s +, ( +__fd +, * +__buf +, + +55 +size_t + +__bu +), +ame_r +) + +56 + `__nnu + ((2)); + +57  + `__REDIRECT_NTH + ( +__ame_r_chk_wn +, + +58 ( +__fd +, * +__buf +, +size_t + +__bu +, + +59 +size_t + +__ėl +), +__ame_r_chk +) + +60 + `__nnu + ((2) + `__wljr + ("ptsname_r called with buflen biggerhan " + +63 +__ftify_funi +  + +64 + `__NTH + ( + $ame_r + ( +__fd +, * +__buf +, +size_t + +__bu +)) + +66 i( + `__bos + ( +__buf +!( +size_t +) -1) + +68 i(! + `__but_cڡt_p + ( +__bu +)) + +69  + `__ame_r_chk + ( +__fd +, +__buf +, +__bu +, + `__bos + (__buf)); + +70 i( +__bu + > + `__bos + ( +__buf +)) + +71  + `__ame_r_chk_wn + ( +__fd +, +__buf +, +__bu +, + `__bos + (__buf)); + +73  + `__ame_r_s + ( +__fd +, +__buf +, +__bu +); + +74 + } +} + +77  + $__womb_chk + (* +__s +, +wch_t + +__wch +, +size_t + +__bu +) + +78 +__THROW + +__wur +; + +79  + `__REDIRECT_NTH + ( +__womb_s +, (* +__s +, +wch_t + +__wch +), + +80 +womb + +__wur +; + +82 +__ftify_funi + +__wur +  + +83 + `__NTH + ( + $womb + (* +__s +, +wch_t + +__wch +)) + +88  + #__STDLIB_MB_LEN_MAX + 16 + + ) + +89 #i +defed + +MB_LEN_MAX + && MB_LEN_MAX ! +__STDLIB_MB_LEN_MAX + + +92 i( + `__bos + ( +__s +!( +size_t +-1 && +__STDLIB_MB_LEN_MAX + > __bos (__s)) + +93  + `__womb_chk + ( +__s +, +__wch +, + `__bos + (__s)); + +94  + `__womb_s + ( +__s +, +__wch +); + +95 + } +} + +98 +size_t + + $__mbowcs_chk + ( +wch_t + * +__ri + +__d +, + +99 cڡ * +__ri + +__c +, + +100 +size_t + +__n +, size_ +__dn + +__THROW +; + +101 +size_t + + `__REDIRECT_NTH + ( +__mbowcs_s +, + +102 ( +wch_t + * +__ri + +__d +, + +103 cڡ * +__ri + +__c +, + +104 +size_t + +__n +), +mbowcs +); + +105 +size_t + + `__REDIRECT_NTH + ( +__mbowcs_chk_wn +, + +106 ( +wch_t + * +__ri + +__d +, + +107 cڡ * +__ri + +__c +, + +108 +size_t + +__n +, size_ +__dn +), +__mbowcs_chk +) + +109 + `__wljr + ("mbstowcs called with dst buffer smallerhanen " + +112 +__ftify_funi + +size_t + + +113 + `__NTH + ( + $mbowcs + ( +wch_t + * +__ri + +__d +, cڡ *__ri +__c +, + +114 +size_t + +__n +)) + +116 i( + `__bos + ( +__d +!( +size_t +) -1) + +118 i(! + `__but_cڡt_p + ( +__n +)) + +119  + `__mbowcs_chk + ( +__d +, +__c +, +__n +, + +120 + `__bos + ( +__d +/  ( +wch_t +)); + +122 i( +__n + > + `__bos + ( +__d +/  ( +wch_t +)) + +123  + `__mbowcs_chk_wn + ( +__d +, +__c +, +__n +, + +124 + `__bos + ( +__d +/  ( +wch_t +)); + +126  + `__mbowcs_s + ( +__d +, +__c +, +__n +); + +127 + } +} + +130 +size_t + + $__wcombs_chk + (* +__ri + +__d +, + +131 cڡ +wch_t + * +__ri + +__c +, + +132 +size_t + +__n +, size_ +__dn + +__THROW +; + +133 +size_t + + `__REDIRECT_NTH + ( +__wcombs_s +, + +134 (* +__ri + +__d +, + +135 cڡ +wch_t + * +__ri + +__c +, + +136 +size_t + +__n +), +wcombs +); + +137 +size_t + + `__REDIRECT_NTH + ( +__wcombs_chk_wn +, + +138 (* +__ri + +__d +, + +139 cڡ +wch_t + * +__ri + +__c +, + +140 +size_t + +__n +, size_ +__dn +), +__wcombs_chk +) + +141 + `__wljr + ("wcstombs called with dst buffer smallerhanen"); + +143 +__ftify_funi + +size_t + + +144 + `__NTH + ( + $wcombs + (* +__ri + +__d +, cڡ +wch_t + *__ri +__c +, + +145 +size_t + +__n +)) + +147 i( + `__bos + ( +__d +!( +size_t +) -1) + +149 i(! + `__but_cڡt_p + ( +__n +)) + +150  + `__wcombs_chk + ( +__d +, +__c +, +__n +, + `__bos + (__dst)); + +151 i( +__n + > + `__bos + ( +__d +)) + +152  + `__wcombs_chk_wn + ( +__d +, +__c +, +__n +, + `__bos + (__dst)); + +154  + `__wcombs_s + ( +__d +, +__c +, +__n +); + +155 + } +} + + @/usr/include/bits/string.h + +19 #ide +_STRING_H + + +24  + #_STRING_INLINE_uligd + 1 + + ) + +27  + #_HAVE_STRING_ARCH_mempy + 1 + + ) + +31 #i! +defed + +__x86_64__ + && (defed +__i486__ + || defed +__ium__ + \ + +32 || +defed + + g__iumo__ + || defed + g__ium4__ + \ + +33 || +defed + + g__noca__ + || defed + g__om__ + \ + +34 || +defed + + g__ce2__ + || defed + g__cei7__ + \ + +35 || +defed + + g__ndybridge__ + || defed + g__haswl__ + \ + +36 || +defed + + g__b__ + || defed + g__svmt__ + \ + +37 || +defed + + g__k6__ + || defed + g__geode__ + \ + +38 || +defed + + g__k8__ + || defed + g__hl__ + \ + +39 || +defed + + g__amdm10__ + || defed + g__bdv1__ + \ + +40 || +defed + + g__bdv2__ + || defed + g__bdv3__ + \ + +41 || +defed + + g__bdv4__ + || defed + g__btv1__ + \ + +42 || +defed + + g__btv2__ +) + +46 #i! +defed + +__NO_STRING_INLINES + && defed +__USE_STRING_INLINES + \ + +47 && +defed + + g__GNUC__ + && __GNUC__ >= 2 + +49 #ide +__STRING_INLINE + + +50 #ide +__ex_le + + +51  + #__STRING_INLINE + +le + + + ) + +53  + #__STRING_INLINE + +__ex_le + + + ) + +58  + #__STRING_SMALL_GET16 +( +c +, +idx +) \ + +59 ((((cڡ *( +c +))[ +idx + + 1] << 8) \ + +60 | ((cڡ *( +c +))[ +idx +]) + + ) + +61  + #__STRING_SMALL_GET32 +( +c +, +idx +) \ + +62 (((((cڡ *( +c +))[ +idx + + 3] << 8 \ + +63 | ((cڡ *( +c +))[ +idx + + 2]) << 8 \ + +64 | ((cڡ *( +c +))[ +idx + + 1]) << 8 \ + +65 | ((cڡ *( +c +))[ +idx +]) + + ) + +69  + #_HAVE_STRING_ARCH_memy + 1 + + ) + +70  + #memy +( +de +, +c +, +n +) \ + +71 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +n +) \ + +72 ? + `__memy_c + (( +de +), ( +c +), ( +n +)) \ + +73 : + `__memy_g + (( +de +), ( +c +), ( +n +)))) + + ) + +74  + #__memy_c +( +de +, +c +, +n +) \ + +75 (( +n +) == 0 \ + +76 ? ( +de +) \ + +77 : ((( +n +) % 4 == 0) \ + +78 ? + `__memy_by4 + ( +de +, +c +, +n +) \ + +79 : ((( +n +) % 2 == 0) \ + +80 ? + `__memy_by2 + ( +de +, +c +, +n +) \ + +81 : + `__memy_g + ( +de +, +c +, +n +)))) + + ) + +83 +__STRING_INLINE + * +__memy_by4 + (* +__de +, cڡ * +__c +, + +84 +size_t + +__n +); + +86 +__STRING_INLINE + * + +87 + $__memy_by4 + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +89  +__d0 +, +__d1 +; + +90 * +__tmp + = +__de +; + +91 +__asm__ + +__vީe__ + + +99 : "=&r" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__d1 +) + +100 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__n + / 4) + +102  +__de +; + +103 + } +} + +105 +__STRING_INLINE + * +__memy_by2 + (* +__de +, cڡ * +__c +, + +106 +size_t + +__n +); + +108 +__STRING_INLINE + * + +109 + $__memy_by2 + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +111  +__d0 +, +__d1 +; + +112 * +__tmp + = +__de +; + +113 +__asm__ + +__vީe__ + + +126 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__d1 +) + +127 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__n + / 2) + +129  +__de +; + +130 + } +} + +132 +__STRING_INLINE + * +__memy_g + (* +__de +, cڡ * +__c +, +size_t + +__n +); + +134 +__STRING_INLINE + * + +135 + $__memy_g + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +137  +__d0 +, +__d1 +, +__d2 +; + +138 * +__tmp + = +__de +; + +139 +__asm__ + +__vީe__ + + +150 : "=&c" ( +__d0 +), "=&D" ( +__d1 +), "=&S" ( +__d2 +), + +151 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__de +) + +152 : "0" ( +__n +), "1" ( +__tmp +), "2" ( +__c +), + +153 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__c +) + +155  +__de +; + +156 + } +} + +158  + #_HAVE_STRING_ARCH_memmove + 1 + + ) + +159 #ide +_FORCE_INLINES + + +162  + #memmove +( +de +, +c +, +n + + `__memmove_g + (de, src,) + + ) + +164 +__STRING_INLINE + * + $__memmove_g + (*, cڡ *, +size_t +) + +165 + `__asm__ + ("memmove"); + +167 +__STRING_INLINE + * + +168 + $__memmove_g + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +170  +__d0 +, +__d1 +, +__d2 +; + +171 * +__tmp + = +__de +; + +172 i( +__de + < +__c +) + +173 +__asm__ + +__vީe__ + + +176 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +177 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__de +) + +178 : "0" ( +__n +), "1" ( +__c +), "2" ( +__tmp +), + +179 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__c +)); + +181 +__asm__ + +__vީe__ + + +187 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +188 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__de +) + +189 : "0" ( +__n +), "1" (__+ (cڡ * +__c +), + +190 "2" ( +__n + + (* +__tmp +), + +191 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__c +)); + +192  +__de +; + +193 + } +} + +197  + #_HAVE_STRING_ARCH_memcmp + 1 + + ) + +198 #ide +_FORCE_INLINES + + +199 #ide +__PIC__ + + +201 +__STRING_INLINE +  + +202 + $memcmp + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +204  +__d0 +, +__d1 +, +__d2 +; + +205  +__s +; + +206 +__asm__ + +__vީe__ + + +214 : "=&a" ( +__s +), "=&S" ( +__d0 +), "=&D" ( +__d1 +), "=&c" ( +__d2 +) + +215 : "0" (0), "1" ( +__s1 +), "2" ( +__s2 +), "3" ( +__n +), + +216 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s1 +), + +217 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s2 +) + +219  +__s +; + +220 + } +} + +225  + #_HAVE_STRING_ARCH_memt + 1 + + ) + +226  + #_USE_STRING_ARCH_memt + 1 + + ) + +227  + #memt +( +s +, +c +, +n +) \ + +228 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +n +) && (n) <= 16 \ + +229 ? (( +n +) == 1 \ + +230 ? + `__memt_c1 + (( +s +), ( +c +)) \ + +231 : + `__memt_gc + (( +s +), ( +c +), ( +n +))) \ + +232 : ( + `__but_cڡt_p + ( +c +) \ + +233 ? ( + `__but_cڡt_p + ( +n +) \ + +234 ? + `__memt_c + (( +s +), ( +c +), ( +n +)) \ + +235 : + `memt + (( +s +), ( +c +), ( +n +))) \ + +236 : ( + `__but_cڡt_p + ( +n +) \ + +237 ? + `__memt_g + (( +s +), ( +c +), ( +n +)) \ + +238 : + `memt + (( +s +), ( +c +), ( +n +)))))) + + ) + +240  + #__memt_c1 +( +s +, +c +({ * +__s + = (s); \ + +241 *((* +__s +(( +c +); \ + +242 +__s +; }) + + ) + +244  + #__memt_gc +( +s +, +c +, +n +) \ + +245 ({ * +__s + = ( +s +); \ + +247  +__ui +; \ + +248  +__usi +; \ + +249  +__uc +; \ + +250 } * +__u + = +__s +; \ + +251  +__c + = ((((( +c +))) * 0x01010101; \ + +257 i(( +n +) == 3 || (n) >= 5) \ + +258 +__asm__ + + `__vީe__ + ("" : "" ( +__c +) : "0" (__c)); \ + +261  +n +) \ + +264 +__u +-> +__ui + = +__c +; \ + +265 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +267 +__u +-> +__ui + = +__c +; \ + +268 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +270 +__u +-> +__ui + = +__c +; \ + +271 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +273 +__u +-> +__usi + = ( +__c +; \ + +274 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +275 +__u +-> +__uc + = ( +__c +; \ + +279 +__u +-> +__ui + = +__c +; \ + +280 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +282 +__u +-> +__ui + = +__c +; \ + +283 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +285 +__u +-> +__ui + = +__c +; \ + +286 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +288 +__u +-> +__usi + = ( +__c +; \ + +292 +__u +-> +__ui + = +__c +; \ + +293 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +295 +__u +-> +__ui + = +__c +; \ + +296 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +298 +__u +-> +__ui + = +__c +; \ + +299 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +301 +__u +-> +__uc + = ( +__c +; \ + +305 +__u +-> +__ui + = +__c +; \ + +306 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +308 +__u +-> +__ui + = +__c +; \ + +309 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +311 +__u +-> +__ui + = +__c +; \ + +312 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +314 +__u +-> +__ui + = +__c +; \ + +319 +__s +; }) + + ) + +321  + #__memt_c +( +s +, +c +, +n +) \ + +322 ((( +n +) % 4 == 0) \ + +323 ? + `__memt_c_by4 + ( +s +, ((((( +c +))) * 0x01010101,\ + +324 +n +) \ + +325 : ((( +n +) % 2 == 0) \ + +326 ? + `__memt_c_by2 + ( +s +, \ + +327 ((((( +c +))) * 0x01010101,\ + +328 +n +) \ + +329 : + `memt + ( +s +, +c +, +n +))) + + ) + +331 +__STRING_INLINE + * +__memt_c_by4 + (* +__s +,  +__c +, + +332 +size_t + +__n +); + +334 +__STRING_INLINE + * + +335 + $__memt_c_by4 + (* +__s +,  +__c +, +size_t + +__n +) + +337 * +__tmp + = +__s +; + +338  +__d0 +; + +339 #ifde +__i686__ + + +340 +__asm__ + +__vީe__ + + +343 : "=&a" ( +__c +), "=&D" ( +__tmp +), "=&c" ( +__d0 +), + +344 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +345 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +348 +__asm__ + +__vީe__ + + +354 : "=&r" ( +__c +), "=&r" ( +__tmp +), "=&r" ( +__d0 +), + +355 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +356 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +359  +__s +; + +360 + } +} + +362 +__STRING_INLINE + * +__memt_c_by2 + (* +__s +,  +__c +, + +363 +size_t + +__n +); + +365 +__STRING_INLINE + * + +366 + $__memt_c_by2 + (* +__s +,  +__c +, +size_t + +__n +) + +368  +__d0 +, +__d1 +; + +369 * +__tmp + = +__s +; + +370 #ifde +__i686__ + + +371 +__asm__ + +__vީe__ + + +375 : "=&a" ( +__d0 +), "=&D" ( +__tmp +), "=&c" ( +__d1 +), + +376 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +377 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +380 +__asm__ + +__vީe__ + + +386 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__d1 +), + +387 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +388 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +391  +__s +; + +392 + } +} + +394  + #__memt_g +( +s +, +c +, +n +) \ + +395 ((( +n +) % 4 == 0) \ + +396 ? + `__memt_g_by4 + ( +s +, +c +, +n +) \ + +397 : ((( +n +) % 2 == 0) \ + +398 ? + `__memt_g_by2 + ( +s +, +c +, +n +) \ + +399 : + `memt + ( +s +, +c +, +n +))) + + ) + +401 +__STRING_INLINE + * +__memt_g_by4 + (* +__s +,  +__c +, +size_t + +__n +); + +403 +__STRING_INLINE + * + +404 + $__memt_g_by4 + (* +__s +,  +__c +, +size_t + +__n +) + +406 * +__tmp + = +__s +; + +407  +__d0 +; + +408 +__asm__ + +__vީe__ + + +418 : "=&q" ( +__c +), "=&r" ( +__tmp +), "=&r" ( +__d0 +), + +419 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +420 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +422  +__s +; + +423 + } +} + +425 +__STRING_INLINE + * +__memt_g_by2 + (* +__s +,  +__c +, +size_t + +__n +); + +427 +__STRING_INLINE + * + +428 + $__memt_g_by2 + (* +__s +,  +__c +, +size_t + +__n +) + +430  +__d0 +, +__d1 +; + +431 * +__tmp + = +__s +; + +432 +__asm__ + +__vީe__ + + +443 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__d1 +), + +444 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +445 : "0" (( +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +447  +__s +; + +448 + } +} + +452  + #_HAVE_STRING_ARCH_memchr + 1 + + ) + +453 #ide +_FORCE_INLINES + + +454 +__STRING_INLINE + * + +455 + $memchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +457  +__d0 +; + +458 #ifde +__i686__ + + +459  +__d1 +; + +461 * +__s +; + +462 i( +__n + == 0) + +463  +NULL +; + +464 #ifde +__i686__ + + +465 +__asm__ + +__vީe__ + + +469 : "=D" ( +__s +), "=&c" ( +__d0 +), "=&r" ( +__d1 +) + +470 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), "2" (1), + +471 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +474 +__asm__ + +__vީe__ + + +480 : "=D" ( +__s +), "=&c" ( +__d0 +) + +481 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), + +482 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +485  +__s + - 1; + +486 + } +} + +489  + #_HAVE_STRING_ARCH_memrchr + 1 + + ) + +490 #ide +_FORCE_INLINES + + +491 +__STRING_INLINE + * +__memrchr + (cڡ * +__s +,  +__c +, +size_t + +__n +); + +493 +__STRING_INLINE + * + +494 + $__memrchr + (cڡ * +__s +,  +__c +, +size_t + +__n +) + +496  +__d0 +; + +497 #ifde +__i686__ + + +498  +__d1 +; + +500 * +__s +; + +501 i( +__n + == 0) + +502  +NULL +; + +503 #ifde +__i686__ + + +504 +__asm__ + +__vީe__ + + +510 : "=D" ( +__s +), "=&c" ( +__d0 +), "=&r" ( +__d1 +) + +511 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), "2" (-1), + +512 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +515 +__asm__ + +__vީe__ + + +522 : "=D" ( +__s +), "=&c" ( +__d0 +) + +523 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), + +524 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s +) + +527  +__s +; + +528 + } +} + +529 #ifde +__USE_GNU + + +530  + #memrchr +( +s +, +c +, +n + + `__memrchr + ((s), (c), (n)) + + ) + +535  + #_HAVE_STRING_ARCH_wmemchr + 1 + + ) + +536 +__STRING_INLINE + * +__wmemchr + (cڡ * +__s +,  +__c +); + +538 #ide +_FORCE_INLINES + + +539 +__STRING_INLINE + * + +540 + $__wmemchr + (cڡ * +__s +,  +__c +) + +542  +__d0 +; + +543 * +__s +; + +544 +__asm__ + +__vީe__ + + +547 : "=D" ( +__s +), "=&c" ( +__d0 +) + +548 : "a" ( +__c +), "0" ( +__s +), "1" (0xffffffff), + +549 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +551  +__s + - 1; + +552 + } +} + +553 #ifde +__USE_GNU + + +554 +__STRING_INLINE + * + +555 + $wmemchr + (cڡ * +__s +,  +__c +) + +557  + `__wmemchr + ( +__s +, +__c +); + +558 + } +} + +564  + #_HAVE_STRING_ARCH_ + 1 + + ) + +565  + # +( +r +) \ + +566 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +r +) \ + +567 ? + `__but_ + ( +r +) \ + +568 : + `___g + ( +r +))) + + ) + +569 +__STRING_INLINE + +size_t + +___g + (cڡ * +__r +); + +571 +__STRING_INLINE + +size_t + + +572 + $___g + (cڡ * +__r +) + +574  +__dummy +; + +575 cڡ * +__tmp + = +__r +; + +576 +__asm__ + +__vީe__ + + +582 : "" ( +__tmp +), "=&q" ( +__dummy +) + +583 : "0" ( +__r +), + +584 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__r +) + +586  +__tmp + - +__r + - 1; + +587 + } +} + +591  + #_HAVE_STRING_ARCH_ry + 1 + + ) + +592  + #ry +( +de +, +c +) \ + +593 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +594 ? ( (( +c +)[0]=1 && + ` + (src) + 1 <= 8 \ + +595 ? + `__ry_a_sml + (( +de +), ( +c +), + ` + (src) + 1) \ + +596 : (* + `memy + ((*( +de +), \ + +597 (cڡ *( +c +), \ + +598 + ` + ( +c +) + 1)) \ + +599 : + `__ry_g + (( +de +), ( +c +)))) + + ) + +601  + #__ry_a_sml +( +de +, +c +, + +) \ + +602 ( + `__exnsi__ + ({ * +__de + = ( +de +); \ + +604  +__ui +; \ + +605  +__usi +; \ + +606  +__uc +; \ + +607  +__c +; \ + +608 } * +__u + = (* +__de +; \ + +609  + +) \ + +612 +__u +-> +__uc + = '\0'; \ + +615 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 0); \ + +618 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 0); \ + +619 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +620 +__u +-> +__uc + = '\0'; \ + +623 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +626 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +627 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +628 +__u +-> +__uc + = '\0'; \ + +631 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +632 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +633 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 4); \ + +636 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +637 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +638 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 4); \ + +639 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +640 +__u +-> +__uc + = '\0'; \ + +643 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +644 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +645 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 4); \ + +648 (* +__de +; })) + + ) + +650 +__STRING_INLINE + * +__ry_g + (* +__de +, cڡ * +__c +); + +652 +__STRING_INLINE + * + +653 + $__ry_g + (* +__de +, cڡ * +__c +) + +655 * +__tmp + = +__de +; + +656  +__dummy +; + +657 +__asm__ + +__vީe__ + + +666 : "=&r" ( +__c +), "=&r" ( +__tmp +), "=&q" ( +__dummy +), + +667 "=m" ( *(ru {  +__x +[0xfffffff]; } *) +__de +) + +668 : "0" ( +__c +), "1" ( +__tmp +), + +669 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__c +) + +671  +__de +; + +672 + } +} + +675 #ifde +__USE_GNU + + +676  + #_HAVE_STRING_ARCH_py + 1 + + ) + +678  + #__py +( +de +, +c +) \ + +679 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +680 ? ( + ` + ( +c +) + 1 <= 8 \ + +681 ? + `__py_a_sml + (( +de +), ( +c +), + ` + (src) + 1) \ + +682 : + `__py_c + (( +de +), ( +c +), + ` + (src) + 1)) \ + +683 : + `__py_g + (( +de +), ( +c +)))) + + ) + +684  + #__py_c +( +de +, +c +, + +) \ + +685 (( + +) % 4 == 0 \ + +686 ? + `__mempy_by4 + ( +de +, +c +, + +) - 1 \ + +687 : (( + +) % 2 == 0 \ + +688 ? + `__mempy_by2 + ( +de +, +c +, + +) - 1 \ + +689 : + `__mempy_byn + ( +de +, +c +, + +- 1)) + + ) + +692  + #py +( +de +, +c + + `__py + ((de), (c)) + + ) + +694  + #__py_a_sml +( +de +, +c +, + +) \ + +695 ( + `__exnsi__ + ({ union { \ + +696  +__ui +; \ + +697  +__usi +; \ + +698  +__uc +; \ + +699  +__c +; \ + +700 } * +__u + = (*( +de +); \ + +701  + +) \ + +704 +__u +-> +__uc + = '\0'; \ + +707 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 0); \ + +708 +__u + = + `__exnsi__ + ((*) __u + 1); \ + +711 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 0); \ + +712 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +713 +__u +-> +__uc + = '\0'; \ + +716 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +717 +__u + = + `__exnsi__ + ((*) __u + 3); \ + +720 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +721 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +722 +__u +-> +__uc + = '\0'; \ + +725 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +726 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +727 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 4); \ + +728 +__u + = + `__exnsi__ + ((*) __u + 1); \ + +731 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +732 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +733 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +c +, 4); \ + +734 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +735 +__u +-> +__uc + = '\0'; \ + +738 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 0); \ + +739 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +740 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +c +, 4); \ + +741 +__u + = + `__exnsi__ + ((*) __u + 3); \ + +744 (* +__u +; })) + + ) + +746 +__STRING_INLINE + * +__mempy_by4 + (* +__de +, cڡ * +__c +, + +747 +size_t + +__ +); + +749 +__STRING_INLINE + * + +750 + $__mempy_by4 + (* +__de +, cڡ * +__c +, +size_t + +__ +) + +752 * +__tmp + = +__de +; + +753  +__d0 +, +__d1 +; + +754 +__asm__ + +__vީe__ + + +762 : "=&r" ( +__d0 +), "" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__d1 +) + +763 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__ + / 4) + +765  +__tmp +; + +766 + } +} + +768 +__STRING_INLINE + * +__mempy_by2 + (* +__de +, cڡ * +__c +, + +769 +size_t + +__ +); + +771 +__STRING_INLINE + * + +772 + $__mempy_by2 + (* +__de +, cڡ * +__c +, +size_t + +__ +) + +774 * +__tmp + = +__de +; + +775  +__d0 +, +__d1 +; + +776 +__asm__ + +__vީe__ + + +789 : "=&q" ( +__d0 +), "" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__d1 +), + +790 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__de +) + +791 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__ + / 2), + +792 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +794  +__tmp + + 2; + +795 + } +} + +797 +__STRING_INLINE + * +__mempy_byn + (* +__de +, cڡ * +__c +, + +798 +size_t + +__ +); + +800 +__STRING_INLINE + * + +801 + $__mempy_byn + (* +__de +, cڡ * +__c +, +size_t + +__ +) + +803  +__d0 +, +__d1 +; + +804 * +__tmp + = +__de +; + +805 +__asm__ + +__vީe__ + + +816 : "=D" ( +__tmp +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), + +817 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__de +) + +818 : "0" ( +__tmp +), "1" ( +__ +), "2" ( +__c +), + +819 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +821  +__tmp +; + +822 + } +} + +824 +__STRING_INLINE + * +__py_g + (* +__de +, cڡ * +__c +); + +826 +__STRING_INLINE + * + +827 + $__py_g + (* +__de +, cڡ * +__c +) + +829 * +__tmp + = +__de +; + +830  +__dummy +; + +831 +__asm__ + +__vީe__ + + +840 : "=&r" ( +__c +), "" ( +__tmp +), "=&q" ( +__dummy +), + +841 "=m" ( *(ru {  +__x +[0xfffffff]; } *) +__de +) + +842 : "0" ( +__c +), "1" ( +__tmp +), + +843 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__c +) + +845  +__tmp + - 1; + +846 + } +} + +851  + #_HAVE_STRING_ARCH_y + 1 + + ) + +852  + #y +( +de +, +c +, +n +) \ + +853 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +854 ? (( + ` + ( +c ++ 1 >(( +size_t +( +n +)) \ + +855 ? (* + `memy + ((*( +de +), \ + +856 (cڡ *( +c +), +n +) \ + +857 : + `__y_cg + (( +de +), ( +c +), + ` + (c+ 1, +n +))) \ + +858 : + `__y_gg + (( +de +), ( +c +), +n +))) + + ) + +859  + #__y_cg +( +de +, +c +, + +, +n +) \ + +860 ((( + +) % 4 == 0) \ + +861 ? + `__y_by4 + ( +de +, +c +, + +, +n +) \ + +862 : ((( + +) % 2 == 0) \ + +863 ? + `__y_by2 + ( +de +, +c +, + +, +n +) \ + +864 : + `__y_byn + ( +de +, +c +, + +, +n +))) + + ) + +866 +__STRING_INLINE + * +__y_by4 + (* +__de +, cڡ  +__c +[], + +867 +size_t + +__ +, size_ +__n +); + +869 +__STRING_INLINE + * + +870 + $__y_by4 + (* +__de +, cڡ  +__c +[], +size_t + +__ +, size_ +__n +) + +872 * +__tmp + = +__de +; + +873  +__dummy1 +, +__dummy2 +; + +874 +__asm__ + +__vީe__ + + +882 : "=&r" ( +__dummy1 +), "" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__dummy2 +), + +883 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__de +) + +884 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__ + / 4), + +885 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +887 ( + `memt + ( +__tmp +, '\0', +__n + - +__ +); + +888  +__de +; + +889 + } +} + +891 +__STRING_INLINE + * +__y_by2 + (* +__de +, cڡ  +__c +[], + +892 +size_t + +__ +, size_ +__n +); + +894 +__STRING_INLINE + * + +895 + $__y_by2 + (* +__de +, cڡ  +__c +[], +size_t + +__ +, size_ +__n +) + +897 * +__tmp + = +__de +; + +898  +__dummy1 +, +__dummy2 +; + +899 +__asm__ + +__vީe__ + + +912 : "=&q" ( +__dummy1 +), "" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__dummy2 +), + +913 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__de +) + +914 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__ + / 2), + +915 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +917 ( + `memt + ( +__tmp + + 2, '\0', +__n + - +__ +); + +918  +__de +; + +919 + } +} + +921 +__STRING_INLINE + * +__y_byn + (* +__de +, cڡ  +__c +[], + +922 +size_t + +__ +, size_ +__n +); + +924 +__STRING_INLINE + * + +925 + $__y_byn + (* +__de +, cڡ  +__c +[], +size_t + +__ +, size_ +__n +) + +927  +__d0 +, +__d1 +; + +928 * +__tmp + = +__de +; + +929 +__asm__ + +__vީe__ + + +940 : "=D" ( +__tmp +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), + +941 "=m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__de +) + +942 : "1" ( +__ +), "0" ( +__tmp +),"2" ( +__c +), + +943 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +945 ( + `memt + ( +__tmp +, '\0', +__n + - +__ +); + +946  +__de +; + +947 + } +} + +949 +__STRING_INLINE + * +__y_gg + (* +__de +, cڡ * +__c +, + +950 +size_t + +__n +); + +952 +__STRING_INLINE + * + +953 + $__y_gg + (* +__de +, cڡ * +__c +, +size_t + +__n +) + +955 * +__tmp + = +__de +; + +956  +__dummy +; + +957 i( +__n + > 0) + +958 +__asm__ + +__vީe__ + + +974 : "=&r" ( +__c +), "=&r" ( +__tmp +), "=&q" ( +__dummy +), "=&r" ( +__n +) + +975 : "0" ( +__c +), "1" ( +__tmp +), "3" ( +__n +) + +978  +__de +; + +979 + } +} + +983  + #_HAVE_STRING_ARCH_rt + 1 + + ) + +984  + #rt +( +de +, +c +) \ + +985 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +986 ? + `__rt_c + (( +de +), ( +c +), + ` + (src) + 1) \ + +987 : + `__rt_g + (( +de +), ( +c +)))) + + ) + +989 +__STRING_INLINE + * +__rt_c + (* +__de +, cڡ  +__c +[], + +990 +size_t + +__ +); + +992 +__STRING_INLINE + * + +993 + $__rt_c + (* +__de +, cڡ  +__c +[], +size_t + +__ +) + +995 #ifde +__i686__ + + +996  +__d0 +; + +997 * +__tmp +; + +998 +__asm__ + +__vީe__ + + +1000 : "=D" ( +__tmp +), "=&c" ( +__d0 +), + +1001 "=m" ( *(ru {  +__x +[0xfffffff]; } *) +__de +) + +1002 : "0" ( +__de +), "1" (0xffffffff), "a" (0), + +1003 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +1005 -- +__tmp +; + +1007 * +__tmp + = +__de +; + +1008 +__asm__ + +__vީe__ + + +1014 : "" ( +__tmp +), + +1015 "=m" ( *(ru {  +__x +[0xfffffff]; } *) +__de +) + +1016 : "0" ( +__tmp +), + +1017 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ +]; } *) +__c +) + +1020 ( + `memy + ( +__tmp +, +__c +, +__ +); + +1021  +__de +; + +1022 + } +} + +1024 +__STRING_INLINE + * +__rt_g + (* +__de +, cڡ * +__c +); + +1026 +__STRING_INLINE + * + +1027 + $__rt_g + (* +__de +, cڡ * +__c +) + +1029 * +__tmp + = +__de +; + +1030  +__dummy +; + +1031 +__asm__ + +__vީe__ + + +1044 : "=&q" ( +__dummy +), "=&r" ( +__tmp +), "=&r" ( +__c +), + +1045 "=m" ( *(ru {  +__x +[0xfffffff]; } *) +__de +) + +1046 : "1" ( +__tmp +), "2" ( +__c +), + +1047 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__c +) + +1049  +__de +; + +1050 + } +} + +1054  + #_HAVE_STRING_ARCH_t + 1 + + ) + +1055  + #t +( +de +, +c +, +n +) \ + +1056 ( + `__exnsi__ + ({ * +__de + = ( +de +); \ + +1057 + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +1058 ? ( + ` + ( +c +< (( +size_t +( +n +)) \ + +1059 ? + `rt + ( +__de +, ( +c +)) \ + +1060 : (*(*) + `__mempy + ( + `rchr + ( +__de +, '\0'), \ + +1061 (cڡ *( +c +), \ + +1062 ( +n +)0, +__de +)) \ + +1063 : + `__t_g + ( +__de +, ( +c +), ( +n +)); })) + + ) + +1065 +__STRING_INLINE + * +__t_g + (* +__de +, cڡ  +__c +[], + +1066 +size_t + +__n +); + +1068 +__STRING_INLINE + * + +1069 + $__t_g + (* +__de +, cڡ  +__c +[], +size_t + +__n +) + +1071 * +__tmp + = +__de +; + +1072  +__dummy +; + +1073 #ifde +__i686__ + + +1074 +__asm__ + +__vީe__ + + +1088 : "=&a" ( +__dummy +), "=&D" ( +__tmp +), "=&S" ( +__c +), "=&c" ( +__n +) + +1089 : "g" ( +__n +), "0" (0), "1" ( +__tmp +), "2" ( +__c +), "3" (0xffffffff) + +1092 -- +__tmp +; + +1093 +__asm__ + +__vީe__ + + +1110 : "=&q" ( +__dummy +), "=&r" ( +__tmp +), "=&r" ( +__c +), "=&r" ( +__n +) + +1111 : "1" ( +__tmp +), "2" ( +__c +), "3" ( +__n +) + +1114  +__de +; + +1115 + } +} + +1119  + #_HAVE_STRING_ARCH_rcmp + 1 + + ) + +1120  + #rcmp +( +s1 +, +s2 +) \ + +1121 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +s1 +&& __but_cڡt_( +s2 +) \ + +1122 && ( (( +s1 +)[0]!1 || + ` + (s1) >= 4) \ + +1123 && ( (( +s2 +)[0]!1 || + ` + (s2) >= 4) \ + +1124 ? + `memcmp + ((cڡ *( +s1 +), (cڡ *( +s2 +), \ + +1125 ( + ` + ( +s1 +< s( +s2 +) \ + +1126 ? + ` + ( +s1 +: s( +s2 +)) + 1) \ + +1127 : ( + `__but_cڡt_p + ( +s1 +) &&  ((s1)[0]) == 1 \ + +1128 &&  (( +s2 +)[0]=1 && + ` + ( +s1 +) < 4 \ + +1129 ? ( + `__but_cڡt_p + ( +s2 +) &&  ((s2)[0]) == 1 \ + +1130 ? + `__rcmp_cc + ((cڡ *( +s1 +), \ + +1131 (cڡ *( +s2 +), \ + +1132 + ` + ( +s1 +)) \ + +1133 : + `__rcmp_cg + ((cڡ *( +s1 +), \ + +1134 (cڡ *( +s2 +), \ + +1135 + ` + ( +s1 +))) \ + +1136 : ( + `__but_cڡt_p + ( +s2 +&&  (( +s1 +)[0]) == 1 \ + +1137 &&  (( +s2 +)[0]=1 && + ` + (s2) < 4 \ + +1138 ? ( + `__but_cڡt_p + ( +s1 +) \ + +1139 ? + `__rcmp_cc + ((cڡ *( +s1 +), \ + +1140 (cڡ *( +s2 +), \ + +1141 + ` + ( +s2 +)) \ + +1142 : + `__rcmp_gc + ((cڡ *( +s1 +), \ + +1143 (cڡ *( +s2 +), \ + +1144 + ` + ( +s2 +))) \ + +1145 : + `__rcmp_gg + (( +s1 +), ( +s2 +)))))) + + ) + +1147  + #__rcmp_cc +( +s1 +, +s2 +, +l +) \ + +1148 ( + `__exnsi__ + ({  +__su + = ( +s1 +)[0] - ( +s2 +)[0]; \ + +1149 i( +l + > 0 && +__su + == 0) \ + +1151 +__su + = ( +s1 +)[1] - ( +s2 +)[1]; \ + +1152 i( +l + > 1 && +__su + == 0) \ + +1154 +__su + = ( +s1 +)[2] - ( +s2 +)[2]; \ + +1155 i( +l + > 2 && +__su + == 0) \ + +1156 +__su + = ( +s1 +)[3] - ( +s2 +)[3]; \ + +1159 +__su +; })) + + ) + +1161  + #__rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +1162 ( + `__exnsi__ + ({ cڡ * +__s2 + = ( +s2 +); \ + +1163  +__su + = ( +s1 +)[0] - +__s2 +[0]; \ + +1164 i( +l1 + > 0 && +__su + == 0) \ + +1166 +__su + = ( +s1 +)[1] - +__s2 +[1]; \ + +1167 i( +l1 + > 1 && +__su + == 0) \ + +1169 +__su + = ( +s1 +)[2] - +__s2 +[2]; \ + +1170 i( +l1 + > 2 && +__su + == 0) \ + +1171 +__su + = ( +s1 +)[3] - +__s2 +[3]; \ + +1174 +__su +; })) + + ) + +1176  + #__rcmp_gc +( +s1 +, +s2 +, +l2 +) \ + +1177 ( + `__exnsi__ + ({ cڡ * +__s1 + = ( +s1 +); \ + +1178  +__su + = +__s1 +[0] - ( +s2 +)[0]; \ + +1179 i( +l2 + > 0 && +__su + == 0) \ + +1181 +__su + = +__s1 +[1] - ( +s2 +)[1]; \ + +1182 i( +l2 + > 1 && +__su + == 0) \ + +1184 +__su + = +__s1 +[2] - ( +s2 +)[2]; \ + +1185 i( +l2 + > 2 && +__su + == 0) \ + +1186 +__su + = +__s1 +[3] - ( +s2 +)[3]; \ + +1189 +__su +; })) + + ) + +1191 +__STRING_INLINE +  +__rcmp_gg + (cڡ * +__s1 +, cڡ * +__s2 +); + +1193 +__STRING_INLINE +  + +1194 + $__rcmp_gg + (cڡ * +__s1 +, cڡ * +__s2 +) + +1196  +__s +; + +1197 +__asm__ + +__vީe__ + + +1213 : "=q" ( +__s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +) + +1214 : "1" ( +__s1 +), "2" ( +__s2 +), + +1215 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s1 +), + +1216 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s2 +) + +1218  +__s +; + +1219 + } +} + +1223  + #_HAVE_STRING_ARCH_cmp + 1 + + ) + +1224  + #cmp +( +s1 +, +s2 +, +n +) \ + +1225 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +s1 +&& + ` + (s1< (( +size_t +( +n +)) \ + +1226 ? + `rcmp + (( +s1 +), ( +s2 +)) \ + +1227 : ( + `__but_cڡt_p + ( +s2 +&& + ` + (s2< (( +size_t +( +n +))\ + +1228 ? + `rcmp + (( +s1 +), ( +s2 +)) \ + +1229 : + `__cmp_g + (( +s1 +), ( +s2 +), ( +n +))))) + + ) + +1231 +__STRING_INLINE +  +__cmp_g + (cڡ * +__s1 +, cڡ * +__s2 +, + +1232 +size_t + +__n +); + +1234 +__STRING_INLINE +  + +1235 + $__cmp_g + (cڡ * +__s1 +, cڡ * +__s2 +, +size_t + +__n +) + +1237  +__s +; + +1238 +__asm__ + +__vީe__ + + +1257 : "=q" ( +__s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +), "=&r" ( +__n +) + +1258 : "1" ( +__s1 +), "2" ( +__s2 +), "3" ( +__n +), + +1259 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s1 +), + +1260 "m" ( *(ru { +__exnsi__ +  +__x +[ +__n +]; } *) +__s2 +) + +1262  +__s +; + +1263 + } +} + +1267  + #_HAVE_STRING_ARCH_rchr + 1 + + ) + +1268  + #_USE_STRING_ARCH_rchr + 1 + + ) + +1269  + #rchr +( +s +, +c +) \ + +1270 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +1271 ? (( +c +) == '\0' \ + +1272 ? (* + `__wmemchr + (( +s +), ( +c +)) \ + +1273 : + `__rchr_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1274 : + `__rchr_g + (( +s +), ( +c +)))) + + ) + +1276 +__STRING_INLINE + * +__rchr_c + (cڡ * +__s +,  +__c +); + +1278 +__STRING_INLINE + * + +1279 + $__rchr_c + (cڡ * +__s +,  +__c +) + +1281  +__d0 +; + +1282 * +__s +; + +1283 +__asm__ + +__vީe__ + + +1293 : "" ( +__s +), "=&a" ( +__d0 +) + +1294 : "0" ( +__s +), "1" ( +__c +), + +1295 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1297  +__s +; + +1298 + } +} + +1300 +__STRING_INLINE + * +__rchr_g + (cڡ * +__s +,  +__c +); + +1302 +__STRING_INLINE + * + +1303 + $__rchr_g + (cڡ * +__s +,  +__c +) + +1305  +__d0 +; + +1306 * +__s +; + +1307 +__asm__ + +__vީe__ + + +1318 : "" ( +__s +), "=&a" ( +__d0 +) + +1319 : "0" ( +__s +), "1" ( +__c +), + +1320 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1322  +__s +; + +1323 + } +} + +1327  + #_HAVE_STRING_ARCH_rchul + 1 + + ) + +1328  + #__rchul +( +s +, +c +) \ + +1329 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +1330 ? (( +c +) == '\0' \ + +1331 ? (* + `__wmemchr + (( +s +), +c +) \ + +1332 : + `__rchul_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1333 : + `__rchul_g + (( +s +), +c +))) + + ) + +1335 +__STRING_INLINE + * +__rchul_c + (cڡ * +__s +,  +__c +); + +1337 +__STRING_INLINE + * + +1338 + $__rchul_c + (cڡ * +__s +,  +__c +) + +1340  +__d0 +; + +1341 * +__s +; + +1342 +__asm__ + +__vީe__ + + +1352 : "" ( +__s +), "=&a" ( +__d0 +) + +1353 : "0" ( +__s +), "1" ( +__c +), + +1354 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1356  +__s +; + +1357 + } +} + +1359 +__STRING_INLINE + * +__rchul_g + (cڡ * +__s +,  +__c +); + +1361 +__STRING_INLINE + * + +1362 + $__rchul_g + (cڡ * +__s +,  +__c +) + +1364  +__d0 +; + +1365 * +__s +; + +1366 +__asm__ + +__vީe__ + + +1377 : "" ( +__s +), "=&a" ( +__d0 +) + +1378 : "0" ( +__s +), "1" ( +__c +), + +1379 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1381  +__s +; + +1382 + } +} + +1383 #ifde +__USE_GNU + + +1384  + #rchul +( +s +, +c + + `__rchul + ((s), (c)) + + ) + +1388 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1390  + #_HAVE_STRING_ARCH_dex + 1 + + ) + +1391  + #dex +( +s +, +c +) \ + +1392 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +1393 ? + `__rchr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1394 : + `__rchr_g + (( +s +), ( +c +)))) + + ) + +1399  + #_HAVE_STRING_ARCH_chr + 1 + + ) + +1400  + #chr +( +s +, +c +) \ + +1401 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +1402 ? + `__chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1403 : + `__chr_g + (( +s +), ( +c +)))) + + ) + +1405 #ifde +__i686__ + + +1406 +__STRING_INLINE + * +__chr_c + (cڡ * +__s +,  +__c +); + +1408 +__STRING_INLINE + * + +1409 + $__chr_c + (cڡ * +__s +,  +__c +) + +1411  +__d0 +, +__d1 +; + +1412 * +__s +; + +1413 +__asm__ + +__vީe__ + + +1421 : "=d" ( +__s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1422 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1423 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1425  +__s + - 1; + +1426 + } +} + +1428 +__STRING_INLINE + * +__chr_g + (cڡ * +__s +,  +__c +); + +1430 +__STRING_INLINE + * + +1431 + $__chr_g + (cڡ * +__s +,  +__c +) + +1433  +__d0 +, +__d1 +; + +1434 * +__s +; + +1435 +__asm__ + +__vީe__ + + +1444 : "=d" ( +__s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1445 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1446 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1448  +__s + - 1; + +1449 + } +} + +1451 +__STRING_INLINE + * +__chr_c + (cڡ * +__s +,  +__c +); + +1453 +__STRING_INLINE + * + +1454 + $__chr_c + (cڡ * +__s +,  +__c +) + +1456  +__d0 +, +__d1 +; + +1457 * +__s +; + +1458 +__asm__ + +__vީe__ + + +1468 : "=d" ( +__s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1469 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1470 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1472  +__s +; + +1473 + } +} + +1475 +__STRING_INLINE + * +__chr_g + (cڡ * +__s +,  +__c +); + +1477 +__STRING_INLINE + * + +1478 + $__chr_g + (cڡ * +__s +,  +__c +) + +1480  +__d0 +, +__d1 +; + +1481 * +__s +; + +1482 +__asm__ + +__vީe__ + + +1493 : "" ( +__s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1494 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1495 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1497  +__s +; + +1498 + } +} + +1502 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1504  + #_HAVE_STRING_ARCH_rdex + 1 + + ) + +1505  + #rdex +( +s +, +c +) \ + +1506 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +1507 ? + `__chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1508 : + `__chr_g + (( +s +), ( +c +)))) + + ) + +1514  + #_HAVE_STRING_ARCH_rcn + 1 + + ) + +1515  + #rcn +( +s +, +je +) \ + +1516 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +je +) &&  ((reject)[0]) == 1 \ + +1517 ? (( +je +)[0] == '\0' \ + +1518 ? + ` + ( +s +) \ + +1519 : (( +je +)[1] == '\0' \ + +1520 ? + `__rcn_c1 + (( +s +), ((( +je +)[0] << 8) & 0xff00)) \ + +1521 : + `__rcn_cg + (( +s +), ( +je +), + ` + (reject)))) \ + +1522 : + `__rcn_g + (( +s +), ( +je +)))) + + ) + +1524 +__STRING_INLINE + +size_t + +__rcn_c1 + (cڡ * +__s +,  +__je +); + +1526 #ide +_FORCE_INLINES + + +1527 +__STRING_INLINE + +size_t + + +1528 + $__rcn_c1 + (cڡ * +__s +,  +__je +) + +1530  +__d0 +; + +1531 * +__s +; + +1532 +__asm__ + +__vީe__ + + +1541 : "" ( +__s +), "=&a" ( +__d0 +) + +1542 : "0" ( +__s +), "1" ( +__je +), + +1543 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1545  ( +__s + - 1- +__s +; + +1546 + } +} + +1549 +__STRING_INLINE + +size_t + +__rcn_cg + (cڡ * +__s +, cڡ  +__je +[], + +1550 +size_t + +__je_n +); + +1552 +__STRING_INLINE + +size_t + + +1553 + $__rcn_cg + (cڡ * +__s +, cڡ  +__je +[], +size_t + +__je_n +) + +1555  +__d0 +, +__d1 +, +__d2 +; + +1556 cڡ * +__s +; + +1557 +__asm__ + +__vީe__ + + +1568 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1569 : "0" ( +__s +), "d" ( +__je +), "g" ( +__je_n +) + +1571  ( +__s + - 1- +__s +; + +1572 + } +} + +1574 +__STRING_INLINE + +size_t + +__rcn_g + (cڡ * +__s +, cڡ * +__je +); + +1575 #ifde +__PIC__ + + +1577 +__STRING_INLINE + +size_t + + +1578 + $__rcn_g + (cڡ * +__s +, cڡ * +__je +) + +1580  +__d0 +, +__d1 +, +__d2 +; + +1581 cڡ * +__s +; + +1582 +__asm__ + +__vީe__ + + +1599 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1600 : "r" ( +__je +), "0" ( +__s +), "1" (0), "2" (0xffffffff) + +1602  ( +__s + - 1- +__s +; + +1603 + } +} + +1605 +__STRING_INLINE + +size_t + + +1606 + $__rcn_g + (cڡ * +__s +, cڡ * +__je +) + +1608  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1609 cڡ * +__s +; + +1610 +__asm__ + +__vީe__ + + +1624 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1625 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" ( +__je +), "b" (__reject) + +1628  ( +__s + - 1- +__s +; + +1629 + } +} + +1635  + #_HAVE_STRING_ARCH_rn + 1 + + ) + +1636  + #rn +( +s +, +ac +) \ + +1637 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +ac +) &&  ((accept)[0]) == 1 \ + +1638 ? (( +ac +)[0] == '\0' \ + +1639 ? ((( +s +), 0) \ + +1640 : (( +ac +)[1] == '\0' \ + +1641 ? + `__rn_c1 + (( +s +), ((( +ac +)[0] << 8 ) & 0xff00)) \ + +1642 : + `__rn_cg + (( +s +), ( +ac +), + ` + (accept)))) \ + +1643 : + `__rn_g + (( +s +), ( +ac +)))) + + ) + +1645 #ide +_FORCE_INLINES + + +1646 +__STRING_INLINE + +size_t + +__rn_c1 + (cڡ * +__s +,  +__ac +); + +1648 +__STRING_INLINE + +size_t + + +1649 + $__rn_c1 + (cڡ * +__s +,  +__ac +) + +1651  +__d0 +; + +1652 * +__s +; + +1654 +__asm__ + +__vީe__ + + +1660 : "" ( +__s +), "=&q" ( +__d0 +) + +1661 : "0" ( +__s +), "1" ( +__ac +), + +1662 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +) + +1664  ( +__s + - 1- +__s +; + +1665 + } +} + +1668 +__STRING_INLINE + +size_t + +__rn_cg + (cڡ * +__s +, cڡ  +__ac +[], + +1669 +size_t + +__ac_n +); + +1671 +__STRING_INLINE + +size_t + + +1672 + $__rn_cg + (cڡ * +__s +, cڡ  +__ac +[], +size_t + +__ac_n +) + +1674  +__d0 +, +__d1 +, +__d2 +; + +1675 cڡ * +__s +; + +1676 +__asm__ + +__vީe__ + + +1687 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1688 : "0" ( +__s +), "g" ( +__ac +), "g" ( +__ac_n +), + +1691 "m" ( *(ru {  +__x +[0xfffffff]; } *) +__s +), + +1692 "m" ( *(ru { +__exnsi__ +  +__x +[ +__ac_n +]; } *) +__ac +) + +1694  ( +__s + - 1- +__s +; + +1695 + } +} + +1697 +__STRING_INLINE + +size_t + +__rn_g + (cڡ * +__s +, cڡ * +__ac +); + +1698 #ifde +__PIC__ + + +1700 +__STRING_INLINE + +size_t + + +1701 + $__rn_g + (cڡ * +__s +, cڡ * +__ac +) + +1703  +__d0 +, +__d1 +, +__d2 +; + +1704 cڡ * +__s +; + +1705 +__asm__ + +__vީe__ + + +1721 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1722 : "d" ( +__ac +), "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" (__accept) + +1724  ( +__s + - 1- +__s +; + +1725 + } +} + +1727 +__STRING_INLINE + +size_t + + +1728 + $__rn_g + (cڡ * +__s +, cڡ * +__ac +) + +1730  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1731 cڡ * +__s +; + +1732 +__asm__ + +__vީe__ + + +1746 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1747 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "3" ( +__ac +), "b" (__accept) + +1749  ( +__s + - 1- +__s +; + +1750 + } +} + +1755  + #_HAVE_STRING_ARCH_brk + 1 + + ) + +1756  + #brk +( +s +, +ac +) \ + +1757 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +ac +) &&  ((accept)[0]) == 1 \ + +1758 ? (( +ac +)[0] == '\0' \ + +1759 ? ((( +s +), (*) 0) \ + +1760 : (( +ac +)[1] == '\0' \ + +1761 ? + `rchr + (( +s +), ( +ac +)[0]) \ + +1762 : + `__brk_cg + (( +s +), ( +ac +), + ` + (accept)))) \ + +1763 : + `__brk_g + (( +s +), ( +ac +)))) + + ) + +1765 +__STRING_INLINE + * +__brk_cg + (cڡ * +__s +, cڡ  +__ac +[], + +1766 +size_t + +__ac_n +); + +1768 +__STRING_INLINE + * + +1769 + $__brk_cg + (cڡ * +__s +, cڡ  +__ac +[], +size_t + +__ac_n +) + +1771  +__d0 +, +__d1 +, +__d2 +; + +1772 * +__s +; + +1773 +__asm__ + +__vީe__ + + +1788 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1789 : "0" ( +__s +), "d" ( +__ac +), "g" ( +__ac_n +) + +1791  +__s +; + +1792 + } +} + +1794 +__STRING_INLINE + * +__brk_g + (cڡ * +__s +, cڡ * +__ac +); + +1795 #ifde +__PIC__ + + +1797 +__STRING_INLINE + * + +1798 + $__brk_g + (cڡ * +__s +, cڡ * +__ac +) + +1800  +__d0 +, +__d1 +, +__d2 +; + +1801 * +__s +; + +1802 +__asm__ + +__vީe__ + + +1823 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1824 : "d" ( +__ac +), "0" ( +__s +), "1" (0), "2" (0xffffffff) + +1826  +__s +; + +1827 + } +} + +1829 +__STRING_INLINE + * + +1830 + $__brk_g + (cڡ * +__s +, cڡ * +__ac +) + +1832  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1833 * +__s +; + +1834 +__asm__ + +__vީe__ + + +1853 : "=S" ( +__s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&d" ( +__d2 +), "=&D" ( +__d3 +) + +1854 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "b" ( +__ac +) + +1856  +__s +; + +1857 + } +} + +1862  + #_HAVE_STRING_ARCH_rr + 1 + + ) + +1863  + #rr +( +hayack +, +ed +) \ + +1864 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +ed +) &&  ((needle)[0]) == 1 \ + +1865 ? (( +ed +)[0] == '\0' \ + +1866 ? ( +hayack +) \ + +1867 : (( +ed +)[1] == '\0' \ + +1868 ? + `rchr + (( +hayack +), ( +ed +)[0]) \ + +1869 : + `__rr_cg + (( +hayack +), ( +ed +), \ + +1870 + ` + ( +ed +)))) \ + +1871 : + `__rr_g + (( +hayack +), ( +ed +)))) + + ) + +1875 +__STRING_INLINE + * +__rr_cg + (cڡ * +__hayack +, + +1876 cڡ  +__ed +[], + +1877 +size_t + +__ed_n +); + +1879 +__STRING_INLINE + * + +1880 + $__rr_cg + (cڡ * +__hayack +, cڡ  +__ed +[], + +1881 +size_t + +__ed_n +) + +1883  +__d0 +, +__d1 +, +__d2 +; + +1884 * +__s +; + +1885 +__asm__ + +__vީe__ + + +1898 : "=&a" ( +__s +), "=&S" ( +__d0 +), "=&D" ( +__d1 +), "=&c" ( +__d2 +) + +1899 : "g" ( +__ed_n +), "1" ( +__hayack +), "d" ( +__ed +) + +1901  +__s +; + +1902 + } +} + +1904 +__STRING_INLINE + * +__rr_g + (cڡ * +__hayack +, + +1905 cڡ * +__ed +); + +1906 #ifde +__PIC__ + + +1908 +__STRING_INLINE + * + +1909 + $__rr_g + (cڡ * +__hayack +, cڡ * +__ed +) + +1911  +__d0 +, +__d1 +, +__d2 +; + +1912 * +__s +; + +1913 +__asm__ + +__vީe__ + + +1932 : "=&a" ( +__s +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +) + +1933 : "0" (0), "1" (0xffffffff), "2" ( +__hayack +), "3" ( +__ed +), + +1934 "d" ( +__ed +) + +1936  +__s +; + +1937 + } +} + +1939 +__STRING_INLINE + * + +1940 + $__rr_g + (cڡ * +__hayack +, cڡ * +__ed +) + +1942  +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1943 * +__s +; + +1944 +__asm__ + +__vީe__ + + +1961 : "=&a" ( +__s +), "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), "=&d" ( +__d3 +) + +1962 : "0" (0), "1" (0xffffffff), "2" ( +__hayack +), "3" ( +__ed +), + +1963 "b" ( +__ed +) + +1965  +__s +; + +1966 + } +} + +1972 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1973 #ifde +__i686__ + + +1974  + #_HAVE_STRING_ARCH_ffs + 1 + + ) + +1975  + #ffs +( +wd +( + `__but_cڡt_p + (word) \ + +1976 ? + `__but_ffs + ( +wd +) \ + +1977 : ({  +__t +, +__tmp +; \ + +1978 +__asm__ + +__vީe__ + \ + +1981 : "=&r" ( +__t +), "" ( +__tmp +) \ + +1982 : "rm" ( +wd +), "1" (-1)); \ + +1983 +__t + + 1; })) + + ) + +1985 #ide +ff + + +1986  + #ff +( +wd + + `ffs +(wd) + + ) + +1991 #ide +_FORCE_INLINES + + +1992 #unde +__STRING_INLINE + + + @/usr/include/bits/string2.h + +20 #ide +_STRING_H + + +24 #ide +__NO_STRING_INLINES + + +41 #ide +__STRING_INLINE + + +42 #ifde +__lulus + + +43  + #__STRING_INLINE + +le + + + ) + +45  + #__STRING_INLINE + +__ex_le + + + ) + +49 #i +_STRING_INLINE_uligd + + +51  + ~ + +52  + ~ + +54 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +55  + #__STRING2_SMALL_GET16 +( +c +, +idx +) \ + +56 (((cڡ *(cڡ *( +c +))[ +idx + + 1] << 8 \ + +57 | ((cڡ *(cڡ *( +c +))[ +idx +]) + + ) + +58  + #__STRING2_SMALL_GET32 +( +c +, +idx +) \ + +59 (((((cڡ *(cڡ *( +c +))[ +idx + + 3] << 8 \ + +60 | ((cڡ *(cڡ *( +c +))[ +idx + + 2]) << 8 \ + +61 | ((cڡ *(cڡ *( +c +))[ +idx + + 1]) << 8 \ + +62 | ((cڡ *(cڡ *( +c +))[ +idx +]) + + ) + +64  + #__STRING2_SMALL_GET16 +( +c +, +idx +) \ + +65 (((cڡ *(cڡ *( +c +))[ +idx +] << 8 \ + +66 | ((cڡ *(cڡ *( +c +))[ +idx + + 1]) + + ) + +67  + #__STRING2_SMALL_GET32 +( +c +, +idx +) \ + +68 (((((cڡ *(cڡ *( +c +))[ +idx +] << 8 \ + +69 | ((cڡ *(cڡ *( +c +))[ +idx + + 1]) << 8 \ + +70 | ((cڡ *(cڡ *( +c +))[ +idx + + 2]) << 8 \ + +71 | ((cڡ *(cڡ *( +c +))[ +idx + + 3]) + + ) + +76  + #__STRING2_COPY_TYPE +( +N +) \ + +77 ru {  +__r +[ +N +]; } \ + +78 + t__ibu__ + (( + t__cked__ +) + t__STRING2_COPY_ARR +## + tN + + + ) + +79 + t__STRING2_COPY_TYPE + (2); + +80 +__STRING2_COPY_TYPE + (3); + +81 +__STRING2_COPY_TYPE + (4); + +82 +__STRING2_COPY_TYPE + (5); + +83 +__STRING2_COPY_TYPE + (6); + +84 +__STRING2_COPY_TYPE + (7); + +85 +__STRING2_COPY_TYPE + (8); + +86 #unde +__STRING2_COPY_TYPE + + +92  + #__rg2_1br_p +( +__x +) \ + +93 (( +size_t +)(cڡ *)(( +__x ++ 1- (size_t)(cڡ *)(__x=1) + + ) + +96 #i! +defed + +_HAVE_STRING_ARCH_memt + + +97 #i! +__GNUC_PREREQ + (3, 0) + +98 #i +_STRING_INLINE_uligd + + +99  + #memt +( +s +, +c +, +n +) \ + +100 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +n +) && (n) <= 16 \ + +101 ? (( +n +) == 1 \ + +102 ? + `__memt_1 + ( +s +, +c +) \ + +103 : + `__memt_gc + ( +s +, +c +, +n +)) \ + +104 : ( + `__but_cڡt_p + ( +c +) && (c) == '\0' \ + +105 ? ({ * +__s + = ( +s +); + `__bzo + (__s, +n +); __s; }) \ + +106 : + `memt + ( +s +, +c +, +n +)))) + + ) + +108  + #__memt_1 +( +s +, +c +({ * +__s + = (s); \ + +109 *(( +__ut8_t + * +__s +(__ut8_t +c +; __s; }) + + ) + +111  + #__memt_gc +( +s +, +c +, +n +) \ + +112 ({ * +__s + = ( +s +); \ + +114  +__ui +; \ + +115  +__usi +; \ + +116  +__uc +; \ + +117 } * +__u + = +__s +; \ + +118 +__ut8_t + +__c + = (__ut8_t( +c +); \ + +121 (( +n +)) \ + +124 +__u +-> +__ui + = +__c + * 0x01010101; \ + +125 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +127 +__u +-> +__ui + = +__c + * 0x01010101; \ + +128 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +130 +__u +-> +__ui + = +__c + * 0x01010101; \ + +131 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +133 +__u +-> +__usi + = ( +__c + * 0x0101; \ + +134 +__u + = + `__exnsi__ + ((*) __u + 2); \ + +135 +__u +-> +__uc + = ( +__c +; \ + +139 +__u +-> +__ui + = +__c + * 0x01010101; \ + +140 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +142 +__u +-> +__ui + = +__c + * 0x01010101; \ + +143 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +145 +__u +-> +__ui + = +__c + * 0x01010101; \ + +146 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +148 +__u +-> +__usi + = ( +__c + * 0x0101; \ + +152 +__u +-> +__ui + = +__c + * 0x01010101; \ + +153 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +155 +__u +-> +__ui + = +__c + * 0x01010101; \ + +156 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +158 +__u +-> +__ui + = +__c + * 0x01010101; \ + +159 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +161 +__u +-> +__uc + = ( +__c +; \ + +165 +__u +-> +__ui + = +__c + * 0x01010101; \ + +166 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +168 +__u +-> +__ui + = +__c + * 0x01010101; \ + +169 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +171 +__u +-> +__ui + = +__c + * 0x01010101; \ + +172 +__u + = + `__exnsi__ + ((*) __u + 4); \ + +174 +__u +-> +__ui + = +__c + * 0x01010101; \ + +179 +__s +; }) + + ) + +181  + #memt +( +s +, +c +, +n +) \ + +182 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) && (c) == '\0' \ + +183 ? ({ * +__s + = ( +s +); + `__bzo + (__s, +n +); __s; }) \ + +184 : + `memt + ( +s +, +c +, +n +))) + + ) + +193 #i +__GNUC_PREREQ + (2, 91) + +194  + #__bzo +( +s +, +n + + `__but_memt + (s, '\0',) + + ) + +202 #ifde +__USE_GNU + + +203 #i! +defed + +_HAVE_STRING_ARCH_mempy + || defed +_FORCE_INLINES + + +204 #ide +_HAVE_STRING_ARCH_mempy + + +205 #i +__GNUC_PREREQ + (3, 4) + +206  + #__mempy +( +de +, +c +, +n + + `__but_mempy + (de, src,) + + ) + +207 #i +__GNUC_PREREQ + (3, 0) + +208  + #__mempy +( +de +, +c +, +n +) \ + +209 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +210 && + `__rg2_1br_p + ( +c +&& +n + <= 8 \ + +211 ? + `__but_memy + ( +de +, +c +, +n +) + (n) \ + +212 : + `__mempy + ( +de +, +c +, +n +))) + + ) + +214  + #__mempy +( +de +, +c +, +n +) \ + +215 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +216 && + `__rg2_1br_p + ( +c +&& +n + <= 8 \ + +217 ? + `__mempy_sml + ( +de +, + `__mempy_gs + ( +c +), +n +) \ + +218 : + `__mempy + ( +de +, +c +, +n +))) + + ) + +222  + #mempy +( +de +, +c +, +n + + `__mempy + (de, src,) + + ) + +225 #i! +__GNUC_PREREQ + (3, 0|| +defed + +_FORCE_INLINES + + +226 #i +_STRING_INLINE_uligd + + +227 #ide +_FORCE_INLINES + + +228  + #__mempy_gs +( +c +) \ + +229 ((cڡ *( +c +))[0], ((const *) (src))[2], \ + +230 ((cڡ *( +c +))[4], ((const *) (src))[6], \ + +231 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 0), \ + +232 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 4), \ + +233 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 0), \ + +234 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 4) + + ) + +236 +__STRING_INLINE + * +__mempy_sml + (*, , , , , + +237 +__ut16_t +, __ut16_t, +__ut32_t +, + +238 +__ut32_t +, +size_t +); + +239 +__STRING_INLINE + * + +240 + $__mempy_sml + (* +__de1 +, + +241  +__c0_1 +,  +__c2_1 +,  +__c4_1 +,  +__c6_1 +, + +242 +__ut16_t + +__c0_2 +, __ut16_ +__c4_2 +, + +243 +__ut32_t + +__c0_4 +, __ut32_ +__c4_4 +, + +244 +size_t + +__ +) + +247 +__ut32_t + +__ui +; + +248 +__ut16_t + +__usi +; + +249  +__uc +; + +250  +__c +; + +251 } * +__u + = +__de1 +; + +252 ( +__ +) + +255 +__u +-> +__c + = +__c0_1 +; + +256 +__u + = + `__exnsi__ + ((*) __u + 1); + +259 +__u +-> +__usi + = +__c0_2 +; + +260 +__u + = + `__exnsi__ + ((*) __u + 2); + +263 +__u +-> +__usi + = +__c0_2 +; + +264 +__u + = + `__exnsi__ + ((*) __u + 2); + +265 +__u +-> +__c + = +__c2_1 +; + +266 +__u + = + `__exnsi__ + ((*) __u + 1); + +269 +__u +-> +__ui + = +__c0_4 +; + +270 +__u + = + `__exnsi__ + ((*) __u + 4); + +273 +__u +-> +__ui + = +__c0_4 +; + +274 +__u + = + `__exnsi__ + ((*) __u + 4); + +275 +__u +-> +__c + = +__c4_1 +; + +276 +__u + = + `__exnsi__ + ((*) __u + 1); + +279 +__u +-> +__ui + = +__c0_4 +; + +280 +__u + = + `__exnsi__ + ((*) __u + 4); + +281 +__u +-> +__usi + = +__c4_2 +; + +282 +__u + = + `__exnsi__ + ((*) __u + 2); + +285 +__u +-> +__ui + = +__c0_4 +; + +286 +__u + = + `__exnsi__ + ((*) __u + 4); + +287 +__u +-> +__usi + = +__c4_2 +; + +288 +__u + = + `__exnsi__ + ((*) __u + 2); + +289 +__u +-> +__c + = +__c6_1 +; + +290 +__u + = + `__exnsi__ + ((*) __u + 1); + +293 +__u +-> +__ui + = +__c0_4 +; + +294 +__u + = + `__exnsi__ + ((*) __u + 4); + +295 +__u +-> +__ui + = +__c4_4 +; + +296 +__u + = + `__exnsi__ + ((*) __u + 4); + +299  (* +__u +; + +300 + } +} + +302 #ide +_FORCE_INLINES + + +303  + #__mempy_gs +( +c +) \ + +304 ((cڡ *( +c +))[0], \ + +305 + `__exnsi__ + (( +__STRING2_COPY_ARR2 +) \ + +306 { { ((cڡ *( +c +))[0], ((const *) (src))[1] } }), \ + +307 + `__exnsi__ + (( +__STRING2_COPY_ARR3 +) \ + +308 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +309 ((cڡ *( +c +))[2] } }), \ + +310 + `__exnsi__ + (( +__STRING2_COPY_ARR4 +) \ + +311 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +312 ((cڡ *( +c +))[2], ((const *) (src))[3] } }), \ + +313 + `__exnsi__ + (( +__STRING2_COPY_ARR5 +) \ + +314 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +315 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +316 ((cڡ *( +c +))[4] } }), \ + +317 + `__exnsi__ + (( +__STRING2_COPY_ARR6 +) \ + +318 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +319 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +320 ((cڡ *( +c +))[4], ((const *) (src))[5] } }), \ + +321 + `__exnsi__ + (( +__STRING2_COPY_ARR7 +) \ + +322 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +323 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +324 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +325 ((cڡ *( +c +))[6] } }), \ + +326 + `__exnsi__ + (( +__STRING2_COPY_ARR8 +) \ + +327 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +328 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +329 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +330 ((cڡ *( +c +))[6], ((cڡ *(c))[7] } }) + + ) + +332 +__STRING_INLINE + * +__mempy_sml + (*, , +__STRING2_COPY_ARR2 +, + +333 +__STRING2_COPY_ARR3 +, + +334 +__STRING2_COPY_ARR4 +, + +335 +__STRING2_COPY_ARR5 +, + +336 +__STRING2_COPY_ARR6 +, + +337 +__STRING2_COPY_ARR7 +, + +338 +__STRING2_COPY_ARR8 +, +size_t +); + +339 +__STRING_INLINE + * + +340 + $__mempy_sml + (* +__de +,  +__c1 +, + +341 +__STRING2_COPY_ARR2 + +__c2 +, +__STRING2_COPY_ARR3 + +__c3 +, + +342 +__STRING2_COPY_ARR4 + +__c4 +, +__STRING2_COPY_ARR5 + +__c5 +, + +343 +__STRING2_COPY_ARR6 + +__c6 +, +__STRING2_COPY_ARR7 + +__c7 +, + +344 +__STRING2_COPY_ARR8 + +__c8 +, +size_t + +__ +) + +347  +__c +; + +348 +__STRING2_COPY_ARR2 + +__s2 +; + +349 +__STRING2_COPY_ARR3 + +__s3 +; + +350 +__STRING2_COPY_ARR4 + +__s4 +; + +351 +__STRING2_COPY_ARR5 + +__s5 +; + +352 +__STRING2_COPY_ARR6 + +__s6 +; + +353 +__STRING2_COPY_ARR7 + +__s7 +; + +354 +__STRING2_COPY_ARR8 + +__s8 +; + +355 } * +__u + = +__de +; + +356 ( +__ +) + +359 +__u +-> +__c + = +__c1 +; + +362 +__exnsi__ + +__u +-> +__s2 + = +__c2 +; + +365 +__exnsi__ + +__u +-> +__s3 + = +__c3 +; + +368 +__exnsi__ + +__u +-> +__s4 + = +__c4 +; + +371 +__exnsi__ + +__u +-> +__s5 + = +__c5 +; + +374 +__exnsi__ + +__u +-> +__s6 + = +__c6 +; + +377 +__exnsi__ + +__u +-> +__s7 + = +__c7 +; + +380 +__exnsi__ + +__u +-> +__s8 + = +__c8 +; + +383  + `__exnsi__ + ((* +__u + + +__ +); + +384 + } +} + +392 #ide +_HAVE_STRING_ARCH_rchr + + +393 * +__wmemchr + (cڡ * +__s +,  +__c +); + +394 #i +__GNUC_PREREQ + (3, 2) + +395  + #rchr +( +s +, +c +) \ + +396 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +&& !__but_cڡt_( +s +) \ + +397 && ( +c +) == '\0' \ + +398 ? (* + `__wmemchr + ( +s +, +c +) \ + +399 : + `__but_rchr + ( +s +, +c +))) + + ) + +401  + #rchr +( +s +, +c +) \ + +402 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) && (c) == '\0' \ + +403 ? (* + `__wmemchr + ( +s +, +c +) \ + +404 : + `rchr + ( +s +, +c +))) + + ) + +410 #i(! +defed + +_HAVE_STRING_ARCH_ry + && ! +__GNUC_PREREQ + (3, 0)) \ + +411 || +defed + + g_FORCE_INLINES + + +412 #i! +defed + +_HAVE_STRING_ARCH_ry + && ! +__GNUC_PREREQ + (3, 0) + +413  + #ry +( +de +, +c +) \ + +414 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +415 ? ( + `__rg2_1br_p + ( +c +&& + ` + (src) + 1 <= 8 \ + +416 ? + `__ry_sml + ( +de +, + `__ry_gs + ( +c +), \ + +417 + ` + ( +c +) + 1) \ + +418 : (* + `memy + ( +de +, +c +, + ` + (src) + 1)) \ + +419 : + `ry + ( +de +, +c +))) + + ) + +422 #i +_STRING_INLINE_uligd + + +423 #ide +_FORCE_INLINES + + +424  + #__ry_gs +( +c +) \ + +425 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 0), \ + +426 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 4), \ + +427 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 0), \ + +428 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 4) + + ) + +430 +__STRING_INLINE + * +__ry_sml + (*, +__ut16_t +, __uint16_t, + +431 +__ut32_t +, __ut32_t, +size_t +); + +432 +__STRING_INLINE + * + +433 + $__ry_sml + (* +__de +, + +434 +__ut16_t + +__c0_2 +, __ut16_ +__c4_2 +, + +435 +__ut32_t + +__c0_4 +, __ut32_ +__c4_4 +, + +436 +size_t + +__ +) + +439 +__ut32_t + +__ui +; + +440 +__ut16_t + +__usi +; + +441  +__uc +; + +442 } * +__u + = (* +__de +; + +443 ( +__ +) + +446 +__u +-> +__uc + = '\0'; + +449 +__u +-> +__usi + = +__c0_2 +; + +452 +__u +-> +__usi + = +__c0_2 +; + +453 +__u + = + `__exnsi__ + ((*) __u + 2); + +454 +__u +-> +__uc + = '\0'; + +457 +__u +-> +__ui + = +__c0_4 +; + +460 +__u +-> +__ui + = +__c0_4 +; + +461 +__u + = + `__exnsi__ + ((*) __u + 4); + +462 +__u +-> +__uc + = '\0'; + +465 +__u +-> +__ui + = +__c0_4 +; + +466 +__u + = + `__exnsi__ + ((*) __u + 4); + +467 +__u +-> +__usi + = +__c4_2 +; + +470 +__u +-> +__ui + = +__c0_4 +; + +471 +__u + = + `__exnsi__ + ((*) __u + 4); + +472 +__u +-> +__usi + = +__c4_2 +; + +473 +__u + = + `__exnsi__ + ((*) __u + 2); + +474 +__u +-> +__uc + = '\0'; + +477 +__u +-> +__ui + = +__c0_4 +; + +478 +__u + = + `__exnsi__ + ((*) __u + 4); + +479 +__u +-> +__ui + = +__c4_4 +; + +482  +__de +; + +483 + } +} + +485 #ide +_FORCE_INLINES + + +486  + #__ry_gs +( +c +) \ + +487 + `__exnsi__ + (( +__STRING2_COPY_ARR2 +) \ + +488 { { ((cڡ *( +c +))[0], '\0' } }), \ + +489 + `__exnsi__ + (( +__STRING2_COPY_ARR3 +) \ + +490 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +492 + `__exnsi__ + (( +__STRING2_COPY_ARR4 +) \ + +493 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +494 ((cڡ *( +c +))[2], '\0' } }), \ + +495 + `__exnsi__ + (( +__STRING2_COPY_ARR5 +) \ + +496 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +497 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +499 + `__exnsi__ + (( +__STRING2_COPY_ARR6 +) \ + +500 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +501 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +502 ((cڡ *( +c +))[4], '\0' } }), \ + +503 + `__exnsi__ + (( +__STRING2_COPY_ARR7 +) \ + +504 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +505 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +506 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +508 + `__exnsi__ + (( +__STRING2_COPY_ARR8 +) \ + +509 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +510 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +511 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +512 ((cڡ *( +c +))[6], '\0' } }) + + ) + +514 +__STRING_INLINE + * +__ry_sml + (*, +__STRING2_COPY_ARR2 +, + +515 +__STRING2_COPY_ARR3 +, + +516 +__STRING2_COPY_ARR4 +, + +517 +__STRING2_COPY_ARR5 +, + +518 +__STRING2_COPY_ARR6 +, + +519 +__STRING2_COPY_ARR7 +, + +520 +__STRING2_COPY_ARR8 +, +size_t +); + +521 +__STRING_INLINE + * + +522 + $__ry_sml + (* +__de +, + +523 +__STRING2_COPY_ARR2 + +__c2 +, +__STRING2_COPY_ARR3 + +__c3 +, + +524 +__STRING2_COPY_ARR4 + +__c4 +, +__STRING2_COPY_ARR5 + +__c5 +, + +525 +__STRING2_COPY_ARR6 + +__c6 +, +__STRING2_COPY_ARR7 + +__c7 +, + +526 +__STRING2_COPY_ARR8 + +__c8 +, +size_t + +__ +) + +529  +__c +; + +530 +__STRING2_COPY_ARR2 + +__s2 +; + +531 +__STRING2_COPY_ARR3 + +__s3 +; + +532 +__STRING2_COPY_ARR4 + +__s4 +; + +533 +__STRING2_COPY_ARR5 + +__s5 +; + +534 +__STRING2_COPY_ARR6 + +__s6 +; + +535 +__STRING2_COPY_ARR7 + +__s7 +; + +536 +__STRING2_COPY_ARR8 + +__s8 +; + +537 } * +__u + = (* +__de +; + +538 ( +__ +) + +541 +__u +-> +__c + = '\0'; + +544 +__exnsi__ + +__u +-> +__s2 + = +__c2 +; + +547 +__exnsi__ + +__u +-> +__s3 + = +__c3 +; + +550 +__exnsi__ + +__u +-> +__s4 + = +__c4 +; + +553 +__exnsi__ + +__u +-> +__s5 + = +__c5 +; + +556 +__exnsi__ + +__u +-> +__s6 + = +__c6 +; + +559 +__exnsi__ + +__u +-> +__s7 + = +__c7 +; + +562 +__exnsi__ + +__u +-> +__s8 + = +__c8 +; + +565  +__de +; + +566 + } +} + +572 #ifde +__USE_GNU + + +573 #i! +defed + +_HAVE_STRING_ARCH_py + || defed +_FORCE_INLINES + + +574 #ide +_HAVE_STRING_ARCH_py + + +575 #i +__GNUC_PREREQ + (3, 4) + +576  + #__py +( +de +, +c + + `__but_py + (de, src) + + ) + +577 #i +__GNUC_PREREQ + (3, 0) + +578  + #__py +( +de +, +c +) \ + +579 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +580 ? ( + `__rg2_1br_p + ( +c +&& + ` + (src) + 1 <= 8 \ + +581 ? + `__but_ry + ( +de +, +c ++ + ` + (src) \ + +582 : ((*( +__mempy +( +de +, +c +, + ` + (src) + 1) \ + +584 : + `__py + ( +de +, +c +))) + + ) + +586  + #__py +( +de +, +c +) \ + +587 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +) \ + +588 ? ( + `__rg2_1br_p + ( +c +&& + ` + (src) + 1 <= 8 \ + +589 ? + `__py_sml + ( +de +, + `__py_gs + ( +c +), \ + +590 + ` + ( +c +) + 1) \ + +591 : ((*( +__mempy +( +de +, +c +, + ` + (src) + 1) \ + +593 : + `__py + ( +de +, +c +))) + + ) + +597  + #py +( +de +, +c + + `__py + (de, src) + + ) + +600 #i! +__GNUC_PREREQ + (3, 0|| +defed + +_FORCE_INLINES + + +601 #i +_STRING_INLINE_uligd + + +602 #ide +_FORCE_INLINES + + +603  + #__py_gs +( +c +) \ + +604 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 0), \ + +605 +__exnsi__ + + `__STRING2_SMALL_GET16 + ( +c +, 4), \ + +606 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 0), \ + +607 +__exnsi__ + + `__STRING2_SMALL_GET32 + ( +c +, 4) + + ) + +609 +__STRING_INLINE + * +__py_sml + (*, +__ut16_t +, __uint16_t, + +610 +__ut32_t +, __ut32_t, +size_t +); + +611 +__STRING_INLINE + * + +612 + $__py_sml + (* +__de +, + +613 +__ut16_t + +__c0_2 +, __ut16_ +__c4_2 +, + +614 +__ut32_t + +__c0_4 +, __ut32_ +__c4_4 +, + +615 +size_t + +__ +) + +618  +__ui +; + +619  +__usi +; + +620  +__uc +; + +621  +__c +; + +622 } * +__u + = (* +__de +; + +623 ( +__ +) + +626 +__u +-> +__uc + = '\0'; + +629 +__u +-> +__usi + = +__c0_2 +; + +630 +__u + = + `__exnsi__ + ((*) __u + 1); + +633 +__u +-> +__usi + = +__c0_2 +; + +634 +__u + = + `__exnsi__ + ((*) __u + 2); + +635 +__u +-> +__uc + = '\0'; + +638 +__u +-> +__ui + = +__c0_4 +; + +639 +__u + = + `__exnsi__ + ((*) __u + 3); + +642 +__u +-> +__ui + = +__c0_4 +; + +643 +__u + = + `__exnsi__ + ((*) __u + 4); + +644 +__u +-> +__uc + = '\0'; + +647 +__u +-> +__ui + = +__c0_4 +; + +648 +__u + = + `__exnsi__ + ((*) __u + 4); + +649 +__u +-> +__usi + = +__c4_2 +; + +650 +__u + = + `__exnsi__ + ((*) __u + 1); + +653 +__u +-> +__ui + = +__c0_4 +; + +654 +__u + = + `__exnsi__ + ((*) __u + 4); + +655 +__u +-> +__usi + = +__c4_2 +; + +656 +__u + = + `__exnsi__ + ((*) __u + 2); + +657 +__u +-> +__uc + = '\0'; + +660 +__u +-> +__ui + = +__c0_4 +; + +661 +__u + = + `__exnsi__ + ((*) __u + 4); + +662 +__u +-> +__ui + = +__c4_4 +; + +663 +__u + = + `__exnsi__ + ((*) __u + 3); + +666  & +__u +-> +__c +; + +667 + } +} + +669 #ide +_FORCE_INLINES + + +670  + #__py_gs +( +c +) \ + +671 + `__exnsi__ + (( +__STRING2_COPY_ARR2 +) \ + +672 { { ((cڡ *( +c +))[0], '\0' } }), \ + +673 + `__exnsi__ + (( +__STRING2_COPY_ARR3 +) \ + +674 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +676 + `__exnsi__ + (( +__STRING2_COPY_ARR4 +) \ + +677 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +678 ((cڡ *( +c +))[2], '\0' } }), \ + +679 + `__exnsi__ + (( +__STRING2_COPY_ARR5 +) \ + +680 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +681 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +683 + `__exnsi__ + (( +__STRING2_COPY_ARR6 +) \ + +684 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +685 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +686 ((cڡ *( +c +))[4], '\0' } }), \ + +687 + `__exnsi__ + (( +__STRING2_COPY_ARR7 +) \ + +688 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +689 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +690 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +692 + `__exnsi__ + (( +__STRING2_COPY_ARR8 +) \ + +693 { { ((cڡ *( +c +))[0], ((const *) (src))[1], \ + +694 ((cڡ *( +c +))[2], ((const *) (src))[3], \ + +695 ((cڡ *( +c +))[4], ((const *) (src))[5], \ + +696 ((cڡ *( +c +))[6], '\0' } }) + + ) + +698 +__STRING_INLINE + * +__py_sml + (*, +__STRING2_COPY_ARR2 +, + +699 +__STRING2_COPY_ARR3 +, + +700 +__STRING2_COPY_ARR4 +, + +701 +__STRING2_COPY_ARR5 +, + +702 +__STRING2_COPY_ARR6 +, + +703 +__STRING2_COPY_ARR7 +, + +704 +__STRING2_COPY_ARR8 +, +size_t +); + +705 +__STRING_INLINE + * + +706 + $__py_sml + (* +__de +, + +707 +__STRING2_COPY_ARR2 + +__c2 +, +__STRING2_COPY_ARR3 + +__c3 +, + +708 +__STRING2_COPY_ARR4 + +__c4 +, +__STRING2_COPY_ARR5 + +__c5 +, + +709 +__STRING2_COPY_ARR6 + +__c6 +, +__STRING2_COPY_ARR7 + +__c7 +, + +710 +__STRING2_COPY_ARR8 + +__c8 +, +size_t + +__ +) + +713  +__c +; + +714 +__STRING2_COPY_ARR2 + +__s2 +; + +715 +__STRING2_COPY_ARR3 + +__s3 +; + +716 +__STRING2_COPY_ARR4 + +__s4 +; + +717 +__STRING2_COPY_ARR5 + +__s5 +; + +718 +__STRING2_COPY_ARR6 + +__s6 +; + +719 +__STRING2_COPY_ARR7 + +__s7 +; + +720 +__STRING2_COPY_ARR8 + +__s8 +; + +721 } * +__u + = (* +__de +; + +722 ( +__ +) + +725 +__u +-> +__c + = '\0'; + +728 +__exnsi__ + +__u +-> +__s2 + = +__c2 +; + +731 +__exnsi__ + +__u +-> +__s3 + = +__c3 +; + +734 +__exnsi__ + +__u +-> +__s4 + = +__c4 +; + +737 +__exnsi__ + +__u +-> +__s5 + = +__c5 +; + +740 +__exnsi__ + +__u +-> +__s6 + = +__c6 +; + +743 +__exnsi__ + +__u +-> +__s7 + = +__c7 +; + +746 +__exnsi__ + +__u +-> +__s8 + = +__c8 +; + +749  +__de + + +__ + - 1; + +750 + } +} + +758 #ide +_HAVE_STRING_ARCH_y + + +759 #i +__GNUC_PREREQ + (3, 2) + +760  + #y +( +de +, +c +, +n + + `__but_y + (de, src,) + + ) + +762  + #y +( +de +, +c +, +n +) \ + +763 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +764 ? ( + ` + ( +c ++ 1 >(( +size_t +( +n +)) \ + +765 ? (* + `memy + ( +de +, +c +, +n +) \ + +766 : + `y + ( +de +, +c +, +n +)) \ + +767 : + `y + ( +de +, +c +, +n +))) + + ) + +773 #ide +_HAVE_STRING_ARCH_t + + +774 #ifde +_USE_STRING_ARCH_rchr + + +775  + #t +( +de +, +c +, +n +) \ + +776 ( + `__exnsi__ + ({ * +__de + = ( +de +); \ + +777 + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +778 ? ( + ` + ( +c +< (( +size_t +( +n +)) \ + +779 ? + `rt + ( +__de +, +c +) \ + +780 : (*((* + `__mempy + ( + `rchr + ( +__de +, '\0'), \ + +781 +c +, +n +)'\0', +__de +)) \ + +782 : + `t + ( +de +, +c +, +n +); })) + + ) + +783 #i +__GNUC_PREREQ + (3, 2) + +784  + #t +( +de +, +c +, +n + + `__but_t + (de, src,) + + ) + +786  + #t +( +de +, +c +, +n +) \ + +787 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +c +&& __but_cڡt_( +n +) \ + +788 ? ( + ` + ( +c +< (( +size_t +( +n +)) \ + +789 ? + `rt + ( +de +, +c +) \ + +790 : + `t + ( +de +, +c +, +n +)) \ + +791 : + `t + ( +de +, +c +, +n +))) + + ) + +797 #ide +_HAVE_STRING_ARCH_rcmp + + +798 #i +__GNUC_PREREQ + (3, 2) + +799  + #rcmp +( +s1 +, +s2 +) \ + +800 +__exnsi__ + \ + +801 ({ +size_t + +__s1_n +, +__s2_n +; \ + +802 ( + `__but_cڡt_p + ( +s1 +&& __but_cڡt_( +s2 +) \ + +803 && ( +__s1_n + = + `__but_ + ( +s1 +), +__s2_n + = __but_ ( +s2 +), \ + +804 (! + `__rg2_1br_p + ( +s1 +|| +__s1_n + >= 4) \ + +805 && (! + `__rg2_1br_p + ( +s2 +|| +__s2_n + >= 4)) \ + +806 ? + `__but_rcmp + ( +s1 +, +s2 +) \ + +807 : ( + `__but_cڡt_p + ( +s1 +&& + `__rg2_1br_p + (s1) \ + +808 && ( +__s1_n + = + `__but_ + ( +s1 +), __s1_len < 4) \ + +809 ? ( + `__but_cڡt_p + ( +s2 +&& + `__rg2_1br_p + (s2) \ + +810 ? + `__but_rcmp + ( +s1 +, +s2 +) \ + +811 : + `__rcmp_cg + ( +s1 +, +s2 +, +__s1_n +)) \ + +812 : ( + `__but_cڡt_p + ( +s2 +&& + `__rg2_1br_p + (s2) \ + +813 && ( +__s2_n + = + `__but_ + ( +s2 +), __s2_len < 4) \ + +814 ? ( + `__but_cڡt_p + ( +s1 +&& + `__rg2_1br_p + (s1) \ + +815 ? + `__but_rcmp + ( +s1 +, +s2 +) \ + +816 : + `__rcmp_gc + ( +s1 +, +s2 +, +__s2_n +)) \ + +817 : + `__but_rcmp + ( +s1 +, +s2 +)))); }) + + ) + +819  + #rcmp +( +s1 +, +s2 +) \ + +820 +__exnsi__ + \ + +821 ({ +size_t + +__s1_n +, +__s2_n +; \ + +822 ( + `__but_cڡt_p + ( +s1 +&& __but_cڡt_( +s2 +) \ + +823 && ( +__s1_n + = + ` + ( +s1 +), +__s2_n + = s( +s2 +), \ + +824 (! + `__rg2_1br_p + ( +s1 +|| +__s1_n + >= 4) \ + +825 && (! + `__rg2_1br_p + ( +s2 +|| +__s2_n + >= 4)) \ + +826 ? + `memcmp + ((cڡ *( +s1 +), (cڡ *( +s2 +), \ + +827 ( +__s1_n + < +__s2_n + ? __s1_len : __s2_len) + 1) \ + +828 : ( + `__but_cڡt_p + ( +s1 +&& + `__rg2_1br_p + (s1) \ + +829 && ( +__s1_n + = + ` + ( +s1 +), __s1_len < 4) \ + +830 ? ( + `__but_cڡt_p + ( +s2 +&& + `__rg2_1br_p + (s2) \ + +831 ? + `__rcmp_cc + ( +s1 +, +s2 +, +__s1_n +) \ + +832 : + `__rcmp_cg + ( +s1 +, +s2 +, +__s1_n +)) \ + +833 : ( + `__but_cڡt_p + ( +s2 +&& + `__rg2_1br_p + (s2) \ + +834 && ( +__s2_n + = + ` + ( +s2 +), __s2_len < 4) \ + +835 ? ( + `__but_cڡt_p + ( +s1 +&& + `__rg2_1br_p + (s1) \ + +836 ? + `__rcmp_cc + ( +s1 +, +s2 +, +__s2_n +) \ + +837 : + `__rcmp_gc + ( +s1 +, +s2 +, +__s2_n +)) \ + +838 : + `rcmp + ( +s1 +, +s2 +)))); }) + + ) + +841  + #__rcmp_cc +( +s1 +, +s2 +, +l +) \ + +842 ( + `__exnsi__ + ({  +__su + = \ + +843 (((cڡ *(cڡ *( +s1 +))[0] \ + +844 - ((cڡ *(cڡ *)( +s2 +))[0]); \ + +845 i( +l + > 0 && +__su + == 0) \ + +847 +__su + = (((const *) \ + +848 (cڡ *( +s1 +))[1] \ + +850 (cڡ *( +s2 +))[1]); \ + +851 i( +l + > 1 && +__su + == 0) \ + +853 +__su + = \ + +855 (cڡ *( +s1 +))[2] \ + +857 (cڡ *( +s2 +))[2]); \ + +858 i( +l + > 2 && +__su + == 0) \ + +859 +__su + = \ + +861 (cڡ *( +s1 +))[3] \ + +863 (cڡ *( +s2 +))[3]); \ + +866 +__su +; })) + + ) + +868  + #__rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +869 ( + `__exnsi__ + ({ cڡ * +__s2 + = \ + +870 (cڡ *(cڡ *( +s2 +); \ + +871  +__su + = \ + +872 (((cڡ *(cڡ *( +s1 +))[0] \ + +873 - +__s2 +[0]); \ + +874 i( +l1 + > 0 && +__su + == 0) \ + +876 +__su + = (((const *) \ + +877 (cڡ *( +s1 +))[1] - +__s2 +[1]); \ + +878 i( +l1 + > 1 && +__su + == 0) \ + +880 +__su + = (((const *) \ + +881 (cڡ *( +s1 +))[2] - +__s2 +[2]); \ + +882 i( +l1 + > 2 && +__su + == 0) \ + +883 +__su + = (((const *) \ + +884 (cڡ *( +s1 +))[3] \ + +885 - +__s2 +[3]); \ + +888 +__su +; })) + + ) + +890  + #__rcmp_gc +( +s1 +, +s2 +, +l2 +(- + `__rcmp_cg + (s2, s1,2)) + + ) + +895 #ide +_HAVE_STRING_ARCH_cmp + + +896  + #cmp +( +s1 +, +s2 +, +n +) \ + +897 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +n +) \ + +898 && (( + `__but_cڡt_p + ( +s1 +) \ + +899 && + ` + ( +s1 +< (( +size_t +( +n +))) \ + +900 || ( + `__but_cڡt_p + ( +s2 +) \ + +901 && + ` + ( +s2 +< (( +size_t +( +n +)))) \ + +902 ? + `rcmp + ( +s1 +, +s2 +: + `cmp + (s1, s2, +n +))) + + ) + +908 #i! +defed + +_HAVE_STRING_ARCH_rcn + || defed +_FORCE_INLINES + + +909 #ide +_HAVE_STRING_ARCH_rcn + + +910 #i +__GNUC_PREREQ + (3, 2) + +911  + #rcn +( +s +, +je +) \ + +912 +__exnsi__ + \ + +913 ({  +__r0 +, +__r1 +, +__r2 +; \ + +914 ( + `__but_cڡt_p + ( +je +&& + `__rg2_1br_p + (reject) \ + +915 ? (( + `__but_cڡt_p + ( +s +&& + `__rg2_1br_p + (s)) \ + +916 ? + `__but_rcn + ( +s +, +je +) \ + +917 : (( +__r0 + = ((cڡ *( +je +))[0], __r0 == '\0') \ + +918 ? + ` + ( +s +) \ + +919 : (( +__r1 + = ((cڡ *( +je +))[1], __r1 == '\0') \ + +920 ? + `__rcn_c1 + ( +s +, +__r0 +) \ + +921 : (( +__r2 + = ((cڡ *( +je +))[2], __r2 == '\0') \ + +922 ? + `__rcn_c2 + ( +s +, +__r0 +, +__r1 +) \ + +923 : (((cڡ *( +je +))[3] == '\0' \ + +924 ? + `__rcn_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +925 : + `__but_rcn + ( +s +, +je +)))))) \ + +926 : + `__but_rcn + ( +s +, +je +)); }) + + ) + +928  + #rcn +( +s +, +je +) \ + +929 +__exnsi__ + \ + +930 ({  +__r0 +, +__r1 +, +__r2 +; \ + +931 ( + `__but_cڡt_p + ( +je +&& + `__rg2_1br_p + (reject) \ + +932 ? (( +__r0 + = ((cڡ *( +je +))[0], __r0 == '\0') \ + +933 ? + ` + ( +s +) \ + +934 : (( +__r1 + = ((cڡ *( +je +))[1], __r1 == '\0') \ + +935 ? + `__rcn_c1 + ( +s +, +__r0 +) \ + +936 : (( +__r2 + = ((cڡ *( +je +))[2], __r2 == '\0') \ + +937 ? + `__rcn_c2 + ( +s +, +__r0 +, +__r1 +) \ + +938 : (((cڡ *( +je +))[3] == '\0' \ + +939 ? + `__rcn_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +940 : + `rcn + ( +s +, +je +))))) \ + +941 : + `rcn + ( +s +, +je +)); }) + + ) + +945 +__STRING_INLINE + +size_t + +__rcn_c1 + (cڡ * +__s +,  +__je +); + +946 +__STRING_INLINE + +size_t + + +947 + $__rcn_c1 + (cڡ * +__s +,  +__je +) + +949 +size_t + +__su + = 0; + +950  +__s +[ +__su +] !'\0' && __s[__su] ! +__je +) + +951 ++ +__su +; + +952  +__su +; + +953 + } +} + +955 +__STRING_INLINE + +size_t + +__rcn_c2 + (cڡ * +__s +,  +__je1 +, + +956  +__je2 +); + +957 +__STRING_INLINE + +size_t + + +958 + $__rcn_c2 + (cڡ * +__s +,  +__je1 +,  +__je2 +) + +960 +size_t + +__su + = 0; + +961  +__s +[ +__su +] !'\0' && __s[__su] ! +__je1 + + +962 && +__s +[ +__su +] ! +__je2 +) + +963 ++ +__su +; + +964  +__su +; + +965 + } +} + +967 +__STRING_INLINE + +size_t + +__rcn_c3 + (cڡ * +__s +,  +__je1 +, + +968  +__je2 +,  +__je3 +); + +969 +__STRING_INLINE + +size_t + + +970 + $__rcn_c3 + (cڡ * +__s +,  +__je1 +,  +__je2 +, + +971  +__je3 +) + +973 +size_t + +__su + = 0; + +974  +__s +[ +__su +] !'\0' && __s[__su] ! +__je1 + + +975 && +__s +[ +__su +] ! +__je2 + && __s[__su] ! +__je3 +) + +976 ++ +__su +; + +977  +__su +; + +978 + } +} + +984 #i! +defed + +_HAVE_STRING_ARCH_rn + || defed +_FORCE_INLINES + + +985 #ide +_HAVE_STRING_ARCH_rn + + +986 #i +__GNUC_PREREQ + (3, 2) + +987  + #rn +( +s +, +ac +) \ + +988 +__exnsi__ + \ + +989 ({  +__a0 +, +__a1 +, +__a2 +; \ + +990 ( + `__but_cڡt_p + ( +ac +&& + `__rg2_1br_p + (accept) \ + +991 ? (( + `__but_cڡt_p + ( +s +&& + `__rg2_1br_p + (s)) \ + +992 ? + `__but_rn + ( +s +, +ac +) \ + +993 : (( +__a0 + = ((cڡ *( +ac +))[0], __a0 == '\0') \ + +994 ? ((( +s +), ( +size_t +) 0) \ + +995 : (( +__a1 + = ((cڡ *( +ac +))[1], __a1 == '\0') \ + +996 ? + `__rn_c1 + ( +s +, +__a0 +) \ + +997 : (( +__a2 + = ((cڡ *( +ac +))[2], __a2 == '\0') \ + +998 ? + `__rn_c2 + ( +s +, +__a0 +, +__a1 +) \ + +999 : (((cڡ *( +ac +))[3] == '\0' \ + +1000 ? + `__rn_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1001 : + `__but_rn + ( +s +, +ac +)))))) \ + +1002 : + `__but_rn + ( +s +, +ac +)); }) + + ) + +1004  + #rn +( +s +, +ac +) \ + +1005 +__exnsi__ + \ + +1006 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1007 ( + `__but_cڡt_p + ( +ac +&& + `__rg2_1br_p + (accept) \ + +1008 ? (( +__a0 + = ((cڡ *( +ac +))[0], __a0 == '\0') \ + +1009 ? ((( +s +), ( +size_t +) 0) \ + +1010 : (( +__a1 + = ((cڡ *( +ac +))[1], __a1 == '\0') \ + +1011 ? + `__rn_c1 + ( +s +, +__a0 +) \ + +1012 : (( +__a2 + = ((cڡ *( +ac +))[2], __a2 == '\0') \ + +1013 ? + `__rn_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1014 : (((cڡ *( +ac +))[3] == '\0' \ + +1015 ? + `__rn_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1016 : + `rn + ( +s +, +ac +))))) \ + +1017 : + `rn + ( +s +, +ac +)); }) + + ) + +1021 +__STRING_INLINE + +size_t + +__rn_c1 + (cڡ * +__s +,  +__ac +); + +1022 +__STRING_INLINE + +size_t + + +1023 + $__rn_c1 + (cڡ * +__s +,  +__ac +) + +1025 +size_t + +__su + = 0; + +1027  +__s +[ +__su +] = +__ac +) + +1028 ++ +__su +; + +1029  +__su +; + +1030 + } +} + +1032 +__STRING_INLINE + +size_t + +__rn_c2 + (cڡ * +__s +,  +__ac1 +, + +1033  +__ac2 +); + +1034 +__STRING_INLINE + +size_t + + +1035 + $__rn_c2 + (cڡ * +__s +,  +__ac1 +,  +__ac2 +) + +1037 +size_t + +__su + = 0; + +1039  +__s +[ +__su +] = +__ac1 + || __s[__su] = +__ac2 +) + +1040 ++ +__su +; + +1041  +__su +; + +1042 + } +} + +1044 +__STRING_INLINE + +size_t + +__rn_c3 + (cڡ * +__s +,  +__ac1 +, + +1045  +__ac2 +,  +__ac3 +); + +1046 +__STRING_INLINE + +size_t + + +1047 + $__rn_c3 + (cڡ * +__s +,  +__ac1 +,  +__ac2 +,  +__ac3 +) + +1049 +size_t + +__su + = 0; + +1051  +__s +[ +__su +] = +__ac1 + || __s[__su] = +__ac2 + + +1052 || +__s +[ +__su +] = +__ac3 +) + +1053 ++ +__su +; + +1054  +__su +; + +1055 + } +} + +1060 #i! +defed + +_HAVE_STRING_ARCH_brk + || defed +_FORCE_INLINES + + +1061 #ide +_HAVE_STRING_ARCH_brk + + +1062 #i +__GNUC_PREREQ + (3, 2) + +1063  + #brk +( +s +, +ac +) \ + +1064 +__exnsi__ + \ + +1065 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1066 ( + `__but_cڡt_p + ( +ac +&& + `__rg2_1br_p + (accept) \ + +1067 ? (( + `__but_cڡt_p + ( +s +&& + `__rg2_1br_p + (s)) \ + +1068 ? + `__but_brk + ( +s +, +ac +) \ + +1069 : (( +__a0 + = ((cڡ *( +ac +))[0], __a0 == '\0') \ + +1070 ? ((( +s +), (* +NULL +) \ + +1071 : (( +__a1 + = ((cڡ *( +ac +))[1], __a1 == '\0') \ + +1072 ? + `__but_rchr + ( +s +, +__a0 +) \ + +1073 : (( +__a2 + = ((cڡ *( +ac +))[2], __a2 == '\0') \ + +1074 ? + `__brk_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1075 : (((cڡ *( +ac +))[3] == '\0' \ + +1076 ? + `__brk_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1077 : + `__but_brk + ( +s +, +ac +)))))) \ + +1078 : + `__but_brk + ( +s +, +ac +)); }) + + ) + +1080  + #brk +( +s +, +ac +) \ + +1081 +__exnsi__ + \ + +1082 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1083 ( + `__but_cڡt_p + ( +ac +&& + `__rg2_1br_p + (accept) \ + +1084 ? (( +__a0 + = ((cڡ *( +ac +))[0], __a0 == '\0') \ + +1085 ? ((( +s +), (* +NULL +) \ + +1086 : (( +__a1 + = ((cڡ *( +ac +))[1], __a1 == '\0') \ + +1087 ? + `rchr + ( +s +, +__a0 +) \ + +1088 : (( +__a2 + = ((cڡ *( +ac +))[2], __a2 == '\0') \ + +1089 ? + `__brk_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1090 : (((cڡ *( +ac +))[3] == '\0' \ + +1091 ? + `__brk_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1092 : + `brk + ( +s +, +ac +))))) \ + +1093 : + `brk + ( +s +, +ac +)); }) + + ) + +1097 +__STRING_INLINE + * +__brk_c2 + (cڡ * +__s +,  +__ac1 +, + +1098  +__ac2 +); + +1099 +__STRING_INLINE + * + +1100 + $__brk_c2 + (cڡ * +__s +,  +__ac1 +,  +__ac2 +) + +1103 * +__s + !'\0' && *__! +__ac1 + && *__! +__ac2 +) + +1104 ++ +__s +; + +1105  * +__s + ='\0' ? +NULL + : (*( +size_t +) __s; + +1106 + } +} + +1108 +__STRING_INLINE + * +__brk_c3 + (cڡ * +__s +,  +__ac1 +, + +1109  +__ac2 +,  +__ac3 +); + +1110 +__STRING_INLINE + * + +1111 + $__brk_c3 + (cڡ * +__s +,  +__ac1 +,  +__ac2 +,  +__ac3 +) + +1114 * +__s + !'\0' && *__! +__ac1 + && *__! +__ac2 + + +1115 && * +__s + ! +__ac3 +) + +1116 ++ +__s +; + +1117  * +__s + ='\0' ? +NULL + : (*( +size_t +) __s; + +1118 + } +} + +1124 #i! +defed + +_HAVE_STRING_ARCH_rr + && ! +__GNUC_PREREQ + (2, 97) + +1125  + #rr +( +hayack +, +ed +) \ + +1126 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +ed +&& + `__rg2_1br_p + (needle) \ + +1127 ? (((cڡ *( +ed +))[0] == '\0' \ + +1128 ? (*( +size_t +( +hayack +) \ + +1129 : (((cڡ *( +ed +))[1] == '\0' \ + +1130 ? + `rchr + ( +hayack +, \ + +1131 ((cڡ *( +ed +))[0]) \ + +1132 : + `rr + ( +hayack +, +ed +))) \ + +1133 : + `rr + ( +hayack +, +ed +))) + + ) + +1137 #i! +defed + +_HAVE_STRING_ARCH_ok_r + || defed +_FORCE_INLINES + + +1138 #ide +_HAVE_STRING_ARCH_ok_r + + +1139  + #__ok_r +( +s +, +p +, +x +) \ + +1140 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +p +&& + `__rg2_1br_p + (sep) \ + +1141 && ((cڡ *( +p +))[0] != '\0' \ + +1142 && ((cڡ *( +p +))[1] == '\0' \ + +1143 ? + `__ok_r_1c + ( +s +, ((cڡ *( +p +))[0], +x +) \ + +1144 : + `__ok_r + ( +s +, +p +, +x +))) + + ) + +1147 +__STRING_INLINE + * +__ok_r_1c + (* +__s +,  +__p +, ** +__x +); + +1148 +__STRING_INLINE + * + +1149 + $__ok_r_1c + (* +__s +,  +__p +, ** +__x +) + +1151 * +__su +; + +1152 i( +__s + = +NULL +) + +1153 +__s + = * +__x +; + +1154 * +__s + = +__p +) + +1155 ++ +__s +; + +1156 +__su + = +NULL +; + +1157 i(* +__s + != '\0') + +1159 +__su + = +__s +++; + +1160 * +__s + != '\0') + +1161 i(* +__s +++ = +__p +) + +1163 +__s +[-1] = '\0'; + +1167 * +__x + = +__s +; + +1168  +__su +; + +1169 + } +} + +1170 #ifde +__USE_POSIX + + +1171  + #ok_r +( +s +, +p +, +x + + `__ok_r + (s, s,ex) + + ) + +1176 #i! +defed + +_HAVE_STRING_ARCH_rp + || defed +_FORCE_INLINES + + +1177 #ide +_HAVE_STRING_ARCH_rp + + +1179 * +__rp_g + (** +__rgp +, cڡ * +__dim +); + +1180  + #__rp +( +s +, +je +) \ + +1181 +__exnsi__ + \ + +1182 ({  +__r0 +, +__r1 +, +__r2 +; \ + +1183 ( + `__but_cڡt_p + ( +je +&& + `__rg2_1br_p + (reject) \ + +1184 && ( +__r0 + = ((cڡ *( +je +))[0], \ + +1185 ((cڡ *( +je +))[0] != '\0') \ + +1186 ? (( +__r1 + = ((cڡ *( +je +))[1], \ + +1187 ((cڡ *( +je +))[1] == '\0') \ + +1188 ? + `__rp_1c + ( +s +, +__r0 +) \ + +1189 : (( +__r2 + = ((cڡ *( +je +))[2], __r2 == '\0') \ + +1190 ? + `__rp_2c + ( +s +, +__r0 +, +__r1 +) \ + +1191 : (((cڡ *( +je +))[3] == '\0' \ + +1192 ? + `__rp_3c + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +1193 : + `__rp_g + ( +s +, +je +)))) \ + +1194 : + `__rp_g + ( +s +, +je +)); }) + + ) + +1197 +__STRING_INLINE + * +__rp_1c + (** +__s +,  +__je +); + +1198 +__STRING_INLINE + * + +1199 + $__rp_1c + (** +__s +,  +__je +) + +1201 * +__tv + = * +__s +; + +1202 i( +__tv + ! +NULL + && (* +__s + = + `rchr + (__tv, +__je +)) != NULL) + +1203 *(* +__s +)++ = '\0'; + +1204  +__tv +; + +1205 + } +} + +1207 +__STRING_INLINE + * +__rp_2c + (** +__s +,  +__je1 +,  +__je2 +); + +1208 +__STRING_INLINE + * + +1209 + $__rp_2c + (** +__s +,  +__je1 +,  +__je2 +) + +1211 * +__tv + = * +__s +; + +1212 i( +__tv + ! +NULL +) + +1214 * +__ + = +__tv +; + +1217 i(* +__ + == '\0') + +1219 +__ + = +NULL +; + +1222 i(* +__ + = +__je1 + || *__ = +__je2 +) + +1224 * +__ +++ = '\0'; + +1227 ++ +__ +; + +1229 * +__s + = +__ +; + +1231  +__tv +; + +1232 + } +} + +1234 +__STRING_INLINE + * +__rp_3c + (** +__s +,  +__je1 +,  +__je2 +, + +1235  +__je3 +); + +1236 +__STRING_INLINE + * + +1237 + $__rp_3c + (** +__s +,  +__je1 +,  +__je2 +,  +__je3 +) + +1239 * +__tv + = * +__s +; + +1240 i( +__tv + ! +NULL +) + +1242 * +__ + = +__tv +; + +1245 i(* +__ + == '\0') + +1247 +__ + = +NULL +; + +1250 i(* +__ + = +__je1 + || *__ = +__je2 + || *__ = +__je3 +) + +1252 * +__ +++ = '\0'; + +1255 ++ +__ +; + +1257 * +__s + = +__ +; + +1259  +__tv +; + +1260 + } +} + +1261 #ifde +__USE_MISC + + +1262  + #rp +( +s +, +je + + `__rp + (s,eje) + + ) + +1269 #ifde +__USE_MISC + + +1271 #i! +defed + +_HAVE_STRING_ARCH_rdup + || !defed +_HAVE_STRING_ARCH_dup + + +1272  + #__ed_mloc_d_oc + + + ) + +1273  + ~ + +1276 #ide +_HAVE_STRING_ARCH_rdup + + +1278 * + $__rdup + (cڡ * +__rg + +__THROW + +__ibu_mloc__ +; + +1279  + #__rdup +( +s +) \ + +1280 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +s +&& + `__rg2_1br_p + (s) \ + +1281 ? (((cڡ *( +s +))[0] == '\0' \ + +1282 ? (* + `oc + (( +size_t +) 1, (size_t) 1) \ + +1283 : ({ +size_t + +__n + = + ` + ( +s +) + 1; \ + +1284 * +__tv + = (* + `mloc + ( +__n +); \ + +1285 i( +__tv + ! +NULL +) \ + +1286 +__tv + = (* + `memy + (__tv, +s +, +__n +); \ + +1287 +__tv +; + } +})) \ + +1288 : + `__rdup + ( +s +))) + + ) + +1290 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +1291  + #rdup +( +s + + `__rdup + (s) + + ) + +1295 #ide +_HAVE_STRING_ARCH_dup + + +1297 * + $__dup + (cڡ * +__rg +, +size_t + +__n +) + +1298 +__THROW + +__ibu_mloc__ +; + +1299  + #__dup +( +s +, +n +) \ + +1300 ( + `__exnsi__ + ( + `__but_cڡt_p + ( +s +&& + `__rg2_1br_p + (s) \ + +1301 ? (((cڡ *( +s +))[0] == '\0' \ + +1302 ? (* + `oc + (( +size_t +) 1, (size_t) 1) \ + +1303 : ({ +size_t + +__n + = + ` + ( +s +) + 1; \ + +1304 +size_t + +__n + = ( +n +); \ + +1305 * +__tv +; \ + +1306 i( +__n + < +__n +) \ + +1307 +__n + = +__n + + 1; \ + +1308 +__tv + = (* + `mloc + ( +__n +); \ + +1309 i( +__tv + ! +NULL +) \ + +1311 +__tv +[ +__n + - 1] = '\0'; \ + +1312 +__tv + = (* + `memy + (__tv, +s +, \ + +1313 +__n + - 1); \ + +1315 +__tv +; + } +})) \ + +1316 : + `__dup + ( +s +, +n +))) + + ) + +1318 #ifde +__USE_XOPEN2K8 + + +1319  + #dup +( +s +, +n + + `__dup + (s,) + + ) + +1325 #ide +_FORCE_INLINES + + +1326 #unde +__STRING_INLINE + + + @/usr/include/bits/string3.h + +18 #ide +_STRING_H + + +22 #i! +__GNUC_PREREQ + (5,0) + +23 +__wnde + ( +__wn_memt_zo_n +, + +27 #ide +__lulus + + +31 #unde +memy + + +32 #unde +memmove + + +33 #unde +memt + + +34 #unde +rt + + +35 #unde +ry + + +36 #unde +t + + +37 #unde +y + + +38 #ifde +__USE_GNU + + +39 #unde +mempy + + +40 #unde +py + + +42 #ifde +__USE_MISC + + +43 #unde +bcy + + +44 #unde +bzo + + +49 +__ftify_funi + * + +50 +__NTH + ( + $memy + (* +__ri + +__de +, cڡ *__ri +__c +, + +51 +size_t + +__n +)) + +53  + `__but___memy_chk + ( +__de +, +__c +, +__n +, + `__bos0 + (__dest)); + +54 + } +} + +56 +__ftify_funi + * + +57 +__NTH + ( + $memmove + (* +__de +, cڡ * +__c +, +size_t + +__n +)) + +59  + `__but___memmove_chk + ( +__de +, +__c +, +__n +, + `__bos0 + (__dest)); + +60 + } +} + +62 #ifde +__USE_GNU + + +63 +__ftify_funi + * + +64 +__NTH + ( + $mempy + (* +__ri + +__de +, cڡ *__ri +__c +, + +65 +size_t + +__n +)) + +67  + `__but___mempy_chk + ( +__de +, +__c +, +__n +, + `__bos0 + (__dest)); + +68 + } +} + +77 +__ftify_funi + * + +78 +__NTH + ( + $memt + (* +__de +,  +__ch +, +size_t + +__n +)) + +82 #i! + `__GNUC_PREREQ + (5,0) + +83 i( + `__but_cڡt_p + ( +__n +) && __len == 0 + +84 && (! + `__but_cڡt_p + ( +__ch +) || __ch != 0)) + +86 + `__wn_memt_zo_n + (); + +87  +__de +; + +90  + `__but___memt_chk + ( +__de +, +__ch +, +__n +, + `__bos0 + (__dest)); + +91 + } +} + +93 #ifde +__USE_MISC + + +94 +__ftify_funi +  + +95 +__NTH + ( + $bcy + (cڡ * +__c +, * +__de +, +size_t + +__n +)) + +97 ( + `__but___memmove_chk + ( +__de +, +__c +, +__n +, + `__bos0 + (__dest)); + +98 + } +} + +100 +__ftify_funi +  + +101 +__NTH + ( + $bzo + (* +__de +, +size_t + +__n +)) + +103 ( + `__but___memt_chk + ( +__de +, '\0', +__n +, + `__bos0 + (__dest)); + +104 + } +} + +107 +__ftify_funi + * + +108 +__NTH + ( + $ry + (* +__ri + +__de +, cڡ *__ri +__c +)) + +110  + `__but___ry_chk + ( +__de +, +__c +, + `__bos + (__dest)); + +111 + } +} + +113 #ifde +__USE_GNU + + +114 +__ftify_funi + * + +115 +__NTH + ( + $py + (* +__ri + +__de +, cڡ *__ri +__c +)) + +117  + `__but___py_chk + ( +__de +, +__c +, + `__bos + (__dest)); + +118 + } +} + +122 +__ftify_funi + * + +123 +__NTH + ( + $y + (* +__ri + +__de +, cڡ *__ri +__c +, + +124 +size_t + +__n +)) + +126  + `__but___y_chk + ( +__de +, +__c +, +__n +, + `__bos + (__dest)); + +127 + } +} + +130 * + $__y_chk + (* +__de +, cڡ * +__c +, +size_t + +__n +, + +131 +size_t + +__den + +__THROW +; + +132 * + `__REDIRECT_NTH + ( +__y_s +, (* +__de +, cڡ * +__c +, + +133 +size_t + +__n +), +y +); + +135 +__ftify_funi + * + +136 + `__NTH + ( + $y + (* +__de +, cڡ * +__c +, +size_t + +__n +)) + +138 i( + `__bos + ( +__de +!( +size_t +) -1 + +139 && (! + `__but_cڡt_p + ( +__n +|| __> + `__bos + ( +__de +))) + +140  + `__y_chk + ( +__de +, +__c +, +__n +, + `__bos + (__dest)); + +141  + `__y_s + ( +__de +, +__c +, +__n +); + +142 + } +} + +145 +__ftify_funi + * + +146 +__NTH + ( + $rt + (* +__ri + +__de +, cڡ *__ri +__c +)) + +148  + `__but___rt_chk + ( +__de +, +__c +, + `__bos + (__dest)); + +149 + } +} + +152 +__ftify_funi + * + +153 +__NTH + ( + $t + (* +__ri + +__de +, cڡ *__ri +__c +, + +154 +size_t + +__n +)) + +156  + `__but___t_chk + ( +__de +, +__c +, +__n +, + `__bos + (__dest)); + +157 + } +} + + @/usr/include/bits/sys_errlist.h + +19 #ide +_STDIO_H + + +25 #ifde +__USE_MISC + + +26  +sys_ü +; + +27 cڡ *cڡ +sys_i +[]; + +29 #ifde +__USE_GNU + + +30  +_sys_ü +; + +31 cڡ *cڡ +_sys_i +[]; + + @/usr/include/bits/time.h + +23 #i +defed + +__ed_timev + || defed +__USE_GNU + + +24 #ide +_STRUCT_TIMEVAL + + +25  + #_STRUCT_TIMEVAL + 1 + + ) + +26  + ~ + +30  + stimev + + +32 +__time_t + + mtv_c +; + +33 +__sucds_t + + mtv_uc +; + +38 #ide +__ed_timev + + +39 #ide +_BITS_TIME_H + + +40  + #_BITS_TIME_H + 1 + + ) + +48  + #CLOCKS_PER_SEC + (( +ock_t +1000000) + + ) + +50 #i(! +defed + +__STRICT_ANSI__ + || defed +__USE_POSIX +) \ + +51 && ! +defed + + g__USE_XOPEN2K + + +54  + ~ + +55  +__syscf + (); + +56  + #CLK_TCK + (( +__ock_t + + `__syscf + (2) + + ) + +59 #ifde +__USE_POSIX199309 + + +61  + #CLOCK_REALTIME + 0 + + ) + +63  + #CLOCK_MONOTONIC + 1 + + ) + +65  + #CLOCK_PROCESS_CPUTIME_ID + 2 + + ) + +67  + #CLOCK_THREAD_CPUTIME_ID + 3 + + ) + +69  + #CLOCK_MONOTONIC_RAW + 4 + + ) + +71  + #CLOCK_REALTIME_COARSE + 5 + + ) + +73  + #CLOCK_MONOTONIC_COARSE + 6 + + ) + +75  + #CLOCK_BOOTTIME + 7 + + ) + +77  + #CLOCK_REALTIME_ALARM + 8 + + ) + +79  + #CLOCK_BOOTTIME_ALARM + 9 + + ) + +81  + #CLOCK_TAI + 11 + + ) + +84  + #TIMER_ABSTIME + 1 + + ) + +87 #ifde +__USE_GNU + + +88  + ~ + +90 +__BEGIN_DECLS + + +93  + $ock_adjtime + ( +__ockid_t + +__ock_id +,  +timex + * +__utx + +__THROW +; + +95 +__END_DECLS + + +101 #unde +__ed_timev + + + @/usr/include/bits/types.h + +23 #idef +_BITS_TYPES_H + + +24  + #_BITS_TYPES_H + 1 + + ) + +26  + ~ + +27  + ~ + +30  + t__u_ch +; + +31  + t__u_sht +; + +32  + t__u_t +; + +33  + t__u_lg +; + +36 sigd  + t__t8_t +; + +37  + t__ut8_t +; + +38 sigd  + t__t16_t +; + +39  + t__ut16_t +; + +40 sigd  + t__t32_t +; + +41  + t__ut32_t +; + +42 #i +__WORDSIZE + == 64 + +43 sigd  + t__t64_t +; + +44  + t__ut64_t +; + +46 +__exnsi__ + sigd  + t__t64_t +; + +47 +__exnsi__ +  + t__ut64_t +; + +51 #i +__WORDSIZE + == 64 + +52  + t__quad_t +; + +53  + t__u_quad_t +; + +55 +__exnsi__ +  + t__quad_t +; + +56 +__exnsi__ +  + t__u_quad_t +; + +89  + #__S16_TYPE +  + + ) + +90  + #__U16_TYPE +  + + ) + +91  + #__S32_TYPE +  + + ) + +92  + #__U32_TYPE +  + + ) + +93  + #__SLONGWORD_TYPE +  + + ) + +94  + #__ULONGWORD_TYPE +  + + ) + +95 #i +__WORDSIZE + == 32 + +96  + #__SQUAD_TYPE + +__quad_t + + + ) + +97  + #__UQUAD_TYPE + +__u_quad_t + + + ) + +98  + #__SWORD_TYPE +  + + ) + +99  + #__UWORD_TYPE +  + + ) + +100  + #__SLONG32_TYPE +  + + ) + +101  + #__ULONG32_TYPE +  + + ) + +102  + #__S64_TYPE + +__quad_t + + + ) + +103  + #__U64_TYPE + +__u_quad_t + + + ) + +106  + #__STD_TYPE + +__exnsi__ +  + + ) + +107 #i +__WORDSIZE + == 64 + +108  + t__SQUAD_TYPE +  + + ) + +109  + t__UQUAD_TYPE +  + + ) + +110  + t__SWORD_TYPE +  + + ) + +111  + t__UWORD_TYPE +  + + ) + +112  + t__SLONG32_TYPE +  + + ) + +113  + t__ULONG32_TYPE +  + + ) + +114  + t__S64_TYPE +  + + ) + +115  + t__U64_TYPE +  + + ) + +117  + t__STD_TYPE +  + + ) + +121  + ~ + +124 +__STD_TYPE + + t__DEV_T_TYPE + + t__dev_t +; + +125 +__STD_TYPE + +__UID_T_TYPE + + g__uid_t +; + +126 +__STD_TYPE + +__GID_T_TYPE + + g__gid_t +; + +127 +__STD_TYPE + +__INO_T_TYPE + + g__o_t +; + +128 +__STD_TYPE + +__INO64_T_TYPE + + g__o64_t +; + +129 +__STD_TYPE + +__MODE_T_TYPE + + g__mode_t +; + +130 +__STD_TYPE + +__NLINK_T_TYPE + + g__ƚk_t +; + +131 +__STD_TYPE + +__OFF_T_TYPE + + g__off_t +; + +132 +__STD_TYPE + +__OFF64_T_TYPE + + g__off64_t +; + +133 +__STD_TYPE + +__PID_T_TYPE + + g__pid_t +; + +134 +__STD_TYPE + +__FSID_T_TYPE + + g__fsid_t +; + +135 +__STD_TYPE + +__CLOCK_T_TYPE + + g__ock_t +; + +136 +__STD_TYPE + +__RLIM_T_TYPE + + g__im_t +; + +137 +__STD_TYPE + +__RLIM64_T_TYPE + + g__im64_t +; + +138 +__STD_TYPE + +__ID_T_TYPE + + g__id_t +; + +139 +__STD_TYPE + +__TIME_T_TYPE + + g__time_t +; + +140 +__STD_TYPE + +__USECONDS_T_TYPE + + g__ucds_t +; + +141 +__STD_TYPE + +__SUSECONDS_T_TYPE + + g__sucds_t +; + +143 +__STD_TYPE + +__DADDR_T_TYPE + + g__daddr_t +; + +144 +__STD_TYPE + +__KEY_T_TYPE + + g__key_t +; + +147 +__STD_TYPE + +__CLOCKID_T_TYPE + + g__ockid_t +; + +150 +__STD_TYPE + +__TIMER_T_TYPE + + g__tim_t +; + +153 +__STD_TYPE + +__BLKSIZE_T_TYPE + + g__blksize_t +; + +158 +__STD_TYPE + +__BLKCNT_T_TYPE + + g__blkt_t +; + +159 +__STD_TYPE + +__BLKCNT64_T_TYPE + + g__blkt64_t +; + +162 +__STD_TYPE + +__FSBLKCNT_T_TYPE + + g__fsblkt_t +; + +163 +__STD_TYPE + +__FSBLKCNT64_T_TYPE + + g__fsblkt64_t +; + +166 +__STD_TYPE + +__FSFILCNT_T_TYPE + + g__fsft_t +; + +167 +__STD_TYPE + +__FSFILCNT64_T_TYPE + + g__fsft64_t +; + +170 +__STD_TYPE + +__FSWORD_T_TYPE + + g__fswd_t +; + +172 +__STD_TYPE + +__SSIZE_T_TYPE + + g__ssize_t +; + +175 +__STD_TYPE + +__SYSCALL_SLONG_TYPE + + g__sys_g_t +; + +177 +__STD_TYPE + +__SYSCALL_ULONG_TYPE + + g__sys_ulg_t +; + +181  +__off64_t + + t__loff_t +; + +182  +__quad_t + * + t__qaddr_t +; + +183 * + t__ddr_t +; + +186 +__STD_TYPE + +__SWORD_TYPE + + g___t +; + +189 +__STD_TYPE + +__U32_TYPE + + g__sockn_t +; + +192 #unde +__STD_TYPE + + + @/usr/include/bits/unistd.h + +19 #ide +_UNISTD_H + + +23 +ssize_t + + $__ad_chk + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +24 +size_t + +__bu + +__wur +; + +25 +ssize_t + + `__REDIRECT + ( +__ad_s +, ( +__fd +, * +__buf +, + +26 +size_t + +__nbys +), +ad + +__wur +; + +27 +ssize_t + + `__REDIRECT + ( +__ad_chk_wn +, + +28 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +29 +size_t + +__bu +), +__ad_chk +) + +30 +__wur + + `__wljr + ("read called with biggerengthhan size of " + +33 +__ftify_funi + +__wur + +ssize_t + + +34 + $ad + ( +__fd +, * +__buf +, +size_t + +__nbys +) + +36 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +38 i(! + `__but_cڡt_p + ( +__nbys +)) + +39  + `__ad_chk + ( +__fd +, +__buf +, +__nbys +, + `__bos0 + (__buf)); + +41 i( +__nbys + > + `__bos0 + ( +__buf +)) + +42  + `__ad_chk_wn + ( +__fd +, +__buf +, +__nbys +, + `__bos0 + (__buf)); + +44  + `__ad_s + ( +__fd +, +__buf +, +__nbys +); + +45 + } +} + +47 #ifde +__USE_UNIX98 + + +48 +ssize_t + + $__d_chk + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +49 +__off_t + +__offt +, +size_t + +__bufsize + +__wur +; + +50 +ssize_t + + $__d64_chk + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +51 +__off64_t + +__offt +, +size_t + +__bufsize + +__wur +; + +52 +ssize_t + + `__REDIRECT + ( +__d_s +, + +53 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +54 +__off_t + +__offt +), +d + +__wur +; + +55 +ssize_t + + `__REDIRECT + ( +__d64_s +, + +56 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +57 +__off64_t + +__offt +), +d64 + +__wur +; + +58 +ssize_t + + `__REDIRECT + ( +__d_chk_wn +, + +59 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +60 +__off_t + +__offt +, +size_t + +__bufsize +), +__d_chk +) + +61 +__wur + + `__wljr + ("pread called with biggerengthhan size of " + +63 +ssize_t + + `__REDIRECT + ( +__d64_chk_wn +, + +64 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +65 +__off64_t + +__offt +, +size_t + +__bufsize +), + +66 +__d64_chk +) + +67 +__wur + + `__wljr + ("pread64 called with biggerengthhan size of " + +70 #ide +__USE_FILE_OFFSET64 + + +71 +__ftify_funi + +__wur + +ssize_t + + +72 + $d + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off_t + +__offt +) + +74 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +76 i(! + `__but_cڡt_p + ( +__nbys +)) + +77  + `__d_chk + ( +__fd +, +__buf +, +__nbys +, +__offt +, + `__bos0 + (__buf)); + +79 i +__nbys + > + `__bos0 + ( +__buf +)) + +80  + `__d_chk_wn + ( +__fd +, +__buf +, +__nbys +, +__offt +, + +81 + `__bos0 + ( +__buf +)); + +83  + `__d_s + ( +__fd +, +__buf +, +__nbys +, +__offt +); + +84 + } +} + +86 +__ftify_funi + +__wur + +ssize_t + + +87 + $d + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off64_t + +__offt +) + +89 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +91 i(! + `__but_cڡt_p + ( +__nbys +)) + +92  + `__d64_chk + ( +__fd +, +__buf +, +__nbys +, +__offt +, + `__bos0 + (__buf)); + +94 i +__nbys + > + `__bos0 + ( +__buf +)) + +95  + `__d64_chk_wn + ( +__fd +, +__buf +, +__nbys +, +__offt +, + +96 + `__bos0 + ( +__buf +)); + +99  + `__d64_s + ( +__fd +, +__buf +, +__nbys +, +__offt +); + +100 + } +} + +103 #ifde +__USE_LARGEFILE64 + + +104 +__ftify_funi + +__wur + +ssize_t + + +105 + $d64 + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off64_t + +__offt +) + +107 i( + `__bos0 + ( +__buf +!( +size_t +) -1) + +109 i(! + `__but_cڡt_p + ( +__nbys +)) + +110  + `__d64_chk + ( +__fd +, +__buf +, +__nbys +, +__offt +, + `__bos0 + (__buf)); + +112 i +__nbys + > + `__bos0 + ( +__buf +)) + +113  + `__d64_chk_wn + ( +__fd +, +__buf +, +__nbys +, +__offt +, + +114 + `__bos0 + ( +__buf +)); + +117  + `__d64_s + ( +__fd +, +__buf +, +__nbys +, +__offt +); + +118 + } +} + +122 #i +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +123 +ssize_t + + $__adlk_chk + (cڡ * +__ri + +__th +, + +124 * +__ri + +__buf +, +size_t + +__n +, + +125 +size_t + +__bu +) + +126 +__THROW + + `__nnu + ((1, 2) +__wur +; + +127 +ssize_t + + `__REDIRECT_NTH + ( +__adlk_s +, + +128 (cڡ * +__ri + +__th +, + +129 * +__ri + +__buf +, +size_t + +__n +), +adlk +) + +130 + `__nnu + ((1, 2) +__wur +; + +131 +ssize_t + + `__REDIRECT_NTH + ( +__adlk_chk_wn +, + +132 (cڡ * +__ri + +__th +, + +133 * +__ri + +__buf +, +size_t + +__n +, + +134 +size_t + +__bu +), +__adlk_chk +) + +135 + `__nnu + ((1, 2) +__wur + + `__wljr + ("readlink called with biggerength " + +138 +__ftify_funi + + `__nnu + ((1, 2) +__wur + +ssize_t + + +139 + `__NTH + ( + $adlk + (cڡ * +__ri + +__th +, *__ri +__buf +, + +140 +size_t + +__n +)) + +142 i( + `__bos + ( +__buf +!( +size_t +) -1) + +144 i(! + `__but_cڡt_p + ( +__n +)) + +145  + `__adlk_chk + ( +__th +, +__buf +, +__n +, + `__bos + (__buf)); + +147 i +__n + > + `__bos + ( +__buf +)) + +148  + `__adlk_chk_wn + ( +__th +, +__buf +, +__n +, + `__bos + (__buf)); + +150  + `__adlk_s + ( +__th +, +__buf +, +__n +); + +151 + } +} + +154 #ifde +__USE_ATFILE + + +155 +ssize_t + + $__adlk_chk + ( +__fd +, cڡ * +__ri + +__th +, + +156 * +__ri + +__buf +, +size_t + +__n +, + +157 +size_t + +__bu +) + +158 +__THROW + + `__nnu + ((2, 3) +__wur +; + +159 +ssize_t + + `__REDIRECT_NTH + ( +__adlk_s +, + +160 ( +__fd +, cڡ * +__ri + +__th +, + +161 * +__ri + +__buf +, +size_t + +__n +), + +162 +adlk +) + +163 + `__nnu + ((2, 3) +__wur +; + +164 +ssize_t + + `__REDIRECT_NTH + ( +__adlk_chk_wn +, + +165 ( +__fd +, cڡ * +__ri + +__th +, + +166 * +__ri + +__buf +, +size_t + +__n +, + +167 +size_t + +__bu +), +__adlk_chk +) + +168 + `__nnu + ((2, 3) +__wur + + `__wljr + ("readlinkat called with bigger " + +172 +__ftify_funi + + `__nnu + ((2, 3) +__wur + +ssize_t + + +173 + `__NTH + ( + $adlk + ( +__fd +, cڡ * +__ri + +__th +, + +174 * +__ri + +__buf +, +size_t + +__n +)) + +176 i( + `__bos + ( +__buf +!( +size_t +) -1) + +178 i(! + `__but_cڡt_p + ( +__n +)) + +179  + `__adlk_chk + ( +__fd +, +__th +, +__buf +, +__n +, + `__bos + (__buf)); + +181 i( +__n + > + `__bos + ( +__buf +)) + +182  + `__adlk_chk_wn + ( +__fd +, +__th +, +__buf +, +__n +, + +183 + `__bos + ( +__buf +)); + +185  + `__adlk_s + ( +__fd +, +__th +, +__buf +, +__n +); + +186 + } +} + +189 * + $__gcwd_chk + (* +__buf +, +size_t + +__size +, size_ +__bu +) + +190 +__THROW + +__wur +; + +191 * + `__REDIRECT_NTH + ( +__gcwd_s +, + +192 (* +__buf +, +size_t + +__size +), +gcwd + +__wur +; + +193 * + `__REDIRECT_NTH + ( +__gcwd_chk_wn +, + +194 (* +__buf +, +size_t + +__size +, size_ +__bu +), + +195 +__gcwd_chk +) + +196 +__wur + + `__wljr + ("getcwd caller with biggerengthhan size of " + +199 +__ftify_funi + +__wur + * + +200 + `__NTH + ( + $gcwd + (* +__buf +, +size_t + +__size +)) + +202 i( + `__bos + ( +__buf +!( +size_t +) -1) + +204 i(! + `__but_cڡt_p + ( +__size +)) + +205  + `__gcwd_chk + ( +__buf +, +__size +, + `__bos + (__buf)); + +207 i( +__size + > + `__bos + ( +__buf +)) + +208  + `__gcwd_chk_wn + ( +__buf +, +__size +, + `__bos + (__buf)); + +210  + `__gcwd_s + ( +__buf +, +__size +); + +211 + } +} + +213 #i +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +214 * + $__gwd_chk + (* +__buf +, +size_t + +bu +) + +215 +__THROW + + `__nnu + ((1) +__wur +; + +216 * + `__REDIRECT_NTH + ( +__gwd_wn +, (* +__buf +), +gwd +) + +217 + `__nnu + ((1) +__wur + + `__wljr + ("please use getcwd instead,s getwd " + +220 +__ftify_funi + + `__nnu + ((1) +__ibu_dd__ + +__wur + * + +221 + `__NTH + ( + $gwd + (* +__buf +)) + +223 i( + `__bos + ( +__buf +!( +size_t +) -1) + +224  + `__gwd_chk + ( +__buf +, + `__bos + (__buf)); + +225  + `__gwd_wn + ( +__buf +); + +226 + } +} + +229 +size_t + + $__cfr_chk + ( +__me +, * +__buf +, +size_t + +__n +, + +230 +size_t + +__bu + +__THROW +; + +231 +size_t + + `__REDIRECT_NTH + ( +__cfr_s +, ( +__me +, * +__buf +, + +232 +size_t + +__n +), +cfr +); + +233 +size_t + + `__REDIRECT_NTH + ( +__cfr_chk_wn +, + +234 ( +__me +, * +__buf +, +size_t + +__n +, + +235 +size_t + +__bu +), +__cfr_chk +) + +236 + `__wljr + ("confstr called with biggerengthhan size of destination " + +239 +__ftify_funi + +size_t + + +240 + `__NTH + ( + $cfr + ( +__me +, * +__buf +, +size_t + +__n +)) + +242 i( + `__bos + ( +__buf +!( +size_t +) -1) + +244 i(! + `__but_cڡt_p + ( +__n +)) + +245  + `__cfr_chk + ( +__me +, +__buf +, +__n +, + `__bos + (__buf)); + +247 i( + `__bos + ( +__buf +< +__n +) + +248  + `__cfr_chk_wn + ( +__me +, +__buf +, +__n +, + `__bos + (__buf)); + +250  + `__cfr_s + ( +__me +, +__buf +, +__n +); + +251 + } +} + +254  + $__ggroups_chk + ( +__size +, +__gid_t + +__li +[], +size_t + +__lin +) + +255 +__THROW + +__wur +; + +256  + `__REDIRECT_NTH + ( +__ggroups_s +, ( +__size +, +__gid_t + +__li +[]), + +257 +ggroups + +__wur +; + +258  + `__REDIRECT_NTH + ( +__ggroups_chk_wn +, + +259 ( +__size +, +__gid_t + +__li +[], +size_t + +__lin +), + +260 +__ggroups_chk +) + +261 +__wur + + `__wljr + ("getgroups called with bigger group counthan what " + +264 +__ftify_funi +  + +265 + `__NTH + ( + $ggroups + ( +__size +, +__gid_t + +__li +[])) + +267 i( + `__bos + ( +__li +!( +size_t +) -1) + +269 i(! + `__but_cڡt_p + ( +__size +) || __size < 0) + +270  + `__ggroups_chk + ( +__size +, +__li +, + `__bos + (__list)); + +272 i( +__size + *  ( +__gid_t +> + `__bos + ( +__li +)) + +273  + `__ggroups_chk_wn + ( +__size +, +__li +, + `__bos + (__list)); + +275  + `__ggroups_s + ( +__size +, +__li +); + +276 + } +} + +279  + $__yme_r_chk + ( +__fd +, * +__buf +, +size_t + +__bu +, + +280 +size_t + +__ėl + +__THROW + + `__nnu + ((2)); + +281  + `__REDIRECT_NTH + ( +__yme_r_s +, ( +__fd +, * +__buf +, + +282 +size_t + +__bu +), +yme_r +) + +283 + `__nnu + ((2)); + +284  + `__REDIRECT_NTH + ( +__yme_r_chk_wn +, + +285 ( +__fd +, * +__buf +, +size_t + +__bu +, + +286 +size_t + +__ėl +), +__yme_r_chk +) + +287 + `__nnu + ((2) + `__wljr + ("ttyname_r called with bigger buflenhan " + +290 +__ftify_funi +  + +291 + `__NTH + ( + $yme_r + ( +__fd +, * +__buf +, +size_t + +__bu +)) + +293 i( + `__bos + ( +__buf +!( +size_t +) -1) + +295 i(! + `__but_cڡt_p + ( +__bu +)) + +296  + `__yme_r_chk + ( +__fd +, +__buf +, +__bu +, + `__bos + (__buf)); + +298 i( +__bu + > + `__bos + ( +__buf +)) + +299  + `__yme_r_chk_wn + ( +__fd +, +__buf +, +__bu +, + `__bos + (__buf)); + +301  + `__yme_r_s + ( +__fd +, +__buf +, +__bu +); + +302 + } +} + +305 #i +defed + +__USE_REENTRANT + || defed +__USE_POSIX199506 + + +306  + $__glog_r_chk + (* +__buf +, +size_t + +__bu +, size_ +__ėl +) + +307 + `__nnu + ((1)); + +308  + `__REDIRECT + ( +__glog_r_s +, (* +__buf +, +size_t + +__bu +), + +309 +glog_r + + `__nnu + ((1)); + +310  + `__REDIRECT + ( +__glog_r_chk_wn +, + +311 (* +__buf +, +size_t + +__bu +, size_ +__ėl +), + +312 +__glog_r_chk +) + +313 + `__nnu + ((1) + `__wljr + ("getlogin_r called with bigger buflenhan " + +316 +__ftify_funi +  + +317 + $glog_r + (* +__buf +, +size_t + +__bu +) + +319 i( + `__bos + ( +__buf +!( +size_t +) -1) + +321 i(! + `__but_cڡt_p + ( +__bu +)) + +322  + `__glog_r_chk + ( +__buf +, +__bu +, + `__bos + (__buf)); + +324 i( +__bu + > + `__bos + ( +__buf +)) + +325  + `__glog_r_chk_wn + ( +__buf +, +__bu +, + `__bos + (__buf)); + +327  + `__glog_r_s + ( +__buf +, +__bu +); + +328 + } +} + +332 #i +defed + +__USE_MISC + || defed +__USE_UNIX98 + + +333  + $__ghome_chk + (* +__buf +, +size_t + +__bu +, size_ +__ėl +) + +334 +__THROW + + `__nnu + ((1)); + +335  + `__REDIRECT_NTH + ( +__ghome_s +, (* +__buf +, +size_t + +__bu +), + +336 +ghome + + `__nnu + ((1)); + +337  + `__REDIRECT_NTH + ( +__ghome_chk_wn +, + +338 (* +__buf +, +size_t + +__bu +, size_ +__ėl +), + +339 +__ghome_chk +) + +340 + `__nnu + ((1) + `__wljr + ("gethostname called with bigger buflenhan " + +343 +__ftify_funi +  + +344 + `__NTH + ( + $ghome + (* +__buf +, +size_t + +__bu +)) + +346 i( + `__bos + ( +__buf +!( +size_t +) -1) + +348 i(! + `__but_cڡt_p + ( +__bu +)) + +349  + `__ghome_chk + ( +__buf +, +__bu +, + `__bos + (__buf)); + +351 i( +__bu + > + `__bos + ( +__buf +)) + +352  + `__ghome_chk_wn + ( +__buf +, +__bu +, + `__bos + (__buf)); + +354  + `__ghome_s + ( +__buf +, +__bu +); + +355 + } +} + +359 #i +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_UNIX98 +) + +360  + $__gdomame_chk + (* +__buf +, +size_t + +__bu +, size_ +__ėl +) + +361 +__THROW + + `__nnu + ((1) +__wur +; + +362  + `__REDIRECT_NTH + ( +__gdomame_s +, (* +__buf +, + +363 +size_t + +__bu +), + +364 +gdomame + + `__nnu + ((1) +__wur +; + +365  + `__REDIRECT_NTH + ( +__gdomame_chk_wn +, + +366 (* +__buf +, +size_t + +__bu +, size_ +__ėl +), + +367 +__gdomame_chk +) + +368 + `__nnu + ((1) +__wur + + `__wljr + ("getdomainname called with bigger " + +372 +__ftify_funi +  + +373 + `__NTH + ( + $gdomame + (* +__buf +, +size_t + +__bu +)) + +375 i( + `__bos + ( +__buf +!( +size_t +) -1) + +377 i(! + `__but_cڡt_p + ( +__bu +)) + +378  + `__gdomame_chk + ( +__buf +, +__bu +, + `__bos + (__buf)); + +380 i( +__bu + > + `__bos + ( +__buf +)) + +381  + `__gdomame_chk_wn + ( +__buf +, +__bu +, + `__bos + (__buf)); + +383  + `__gdomame_s + ( +__buf +, +__bu +); + +384 + } +} + + @/usr/include/bits/waitflags.h + +19 #i! +defed + +_SYS_WAIT_H + && !defed +_STDLIB_H + + +25  + #WNOHANG + 1 + + ) + +26  + #WUNTRACED + 2 + + ) + +29  + #WSTOPPED + 2 + + ) + +30  + #WEXITED + 4 + + ) + +31  + #WCONTINUED + 8 + + ) + +32  + #WNOWAIT + 0x01000000 + + ) + +34  + #__WNOTHREAD + 0x20000000 + + ) + +36  + #__WALL + 0x40000000 + + ) + +37  + #__WCLONE + 0x80000000 + + ) + +40 #i +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +41 #ide +__ENUM_IDTYPE_T + + +42  + #__ENUM_IDTYPE_T + 1 + + ) + +46 #unde +P_ALL + + +47 #unde +P_PID + + +48 #unde +P_PGID + + +52 + mP_ALL +, + +53 + mP_PID +, + +54 + mP_PGID + + +55 } + tidty_t +; + + @/usr/include/bits/waitstatus.h + +19 #i! +defed + +_SYS_WAIT_H + && !defed +_STDLIB_H + + +28  + #__WEXITSTATUS +( +us +(((us& 0xff00>> 8) + + ) + +31  + #__WTERMSIG +( +us +((us& 0x7f) + + ) + +34  + #__WSTOPSIG +( +us + + `__WEXITSTATUS +(us) + + ) + +37  + #__WIFEXITED +( +us +( + `__WTERMSIG +(us=0) + + ) + +40  + #__WIFSIGNALED +( +us +) \ + +41 (((sigd ((( +us +& 0x7f+ 1>> 1> 0) + + ) + +44  + #__WIFSTOPPED +( +us +(((us& 0xff=0x7f) + + ) + +48 #ifde +WCONTINUED + + +49  + #__WIFCONTINUED +( +us +((us= +__W_CONTINUED +) + + ) + +53  + #__WCOREDUMP +( +us +((us& +__WCOREFLAG +) + + ) + +56  + #__W_EXITCODE +( +t +, +sig +(ԑ<< 8 | (sig)) + + ) + +57  + #__W_STOPCODE +( +sig +((sig<< 8 | 0x7f) + + ) + +58  + #__W_CONTINUED + 0xffff + + ) + +59  + #__WCOREFLAG + 0x80 + + ) + +62 #ifdef +__USE_MISC + + +64  + ~ + +66  + uwa + + +68  + mw_us +; + +71 #if +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +72  + m__w_rmsig +:7; + +73  + m__w_cedump +:1; + +74  + m__w_tcode +:8; + +77 #if +__BYTE_ORDER + = +__BIG_ENDIAN + + +79  + m__w_tcode +:8; + +80  + m__w_cedump +:1; + +81  + m__w_rmsig +:7; + +83 } + m__wa_rmed +; + +86 #if +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +87  + m__w_v +:8; + +88  + m__w_sig +:8; + +91 #if +__BYTE_ORDER + = +__BIG_ENDIAN + + +93  + m__w_sig +:8; + +94  + m__w_v +:8; + +96 } + m__wa_ݳd +; + +99  + #w_rmsig + +__wa_rmed +. +__w_rmsig + + + ) + +100  + #w_cedump + +__wa_rmed +. +__w_cedump + + + ) + +101  + #w_tcode + +__wa_rmed +. +__w_tcode + + + ) + +102  + #w_sig + +__wa_ݳd +. +__w_sig + + + ) + +103  + #w_v + +__wa_ݳd +. +__w_v + + + ) + + @/usr/include/bits/wchar.h + +19 #ide +_BITS_WCHAR_H + + +20  + #_BITS_WCHAR_H + 1 + + ) + +33 #ifde +__WCHAR_MAX__ + + +34  + #__WCHAR_MAX + +__WCHAR_MAX__ + + + ) + +35 #i +L +'\0' - 1 > 0 + +36  + #__WCHAR_MAX + (0xffffffffu + +L +'\0') + + ) + +38  + #__WCHAR_MAX + (0x7ffffff+ +L +'\0') + + ) + +41 #ifde +__WCHAR_MIN__ + + +42  + #__WCHAR_MIN + +__WCHAR_MIN__ + + + ) + +43 #i +L +'\0' - 1 > 0 + +44  + #__WCHAR_MIN + ( +L +'\0' + 0) + + ) + +46  + #__WCHAR_MIN + (- +__WCHAR_MAX + - 1) + + ) + + @/usr/include/bits/wordsize.h + +3 #i +defed + +__x86_64__ + && !defed +__ILP32__ + + +4  + #__WORDSIZE + 64 + + ) + +6  + #__WORDSIZE + 32 + + ) + +9 #ifde +__x86_64__ + + +10  + #__WORDSIZE_TIME64_COMPAT32 + 1 + + ) + +12  + #__SYSCALL_WORDSIZE + 64 + + ) + + @/usr/include/endian.h + +18 #idef +_ENDIAN_H + + +19  + #_ENDIAN_H + 1 + + ) + +21  + ~ + +31  + #__LITTLE_ENDIAN + 1234 + + ) + +32  + #__BIG_ENDIAN + 4321 + + ) + +33  + #__PDP_ENDIAN + 3412 + + ) + +36  + ~ + +40 #ide +__FLOAT_WORD_ORDER + + +41  + #__FLOAT_WORD_ORDER + +__BYTE_ORDER + + + ) + +44 #ifdef +__USE_MISC + + +45  + #LITTLE_ENDIAN + +__LITTLE_ENDIAN + + + ) + +46  + #BIG_ENDIAN + +__BIG_ENDIAN + + + ) + +47  + #PDP_ENDIAN + +__PDP_ENDIAN + + + ) + +48  + #BYTE_ORDER + +__BYTE_ORDER + + + ) + +51 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +52  + #__LONG_LONG_PAIR +( +HI +, +LO +LO, + ) +HI + +53 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +54  + #__LONG_LONG_PAIR +( +HI +, +LO +HI, + ) +LO + +58 #i +defed + +__USE_MISC + && !defed +__ASSEMBLER__ + + +60  + ~ + +62 #i +__BYTE_ORDER + = +__LITTLE_ENDIAN + + +63  + #htobe16 +( +x + + `__bsw_16 + (x) + + ) + +64  + #hte16 +( +x +(x) + + ) + +65  + #be16toh +( +x + + `__bsw_16 + (x) + + ) + +66  + #16toh +( +x +(x) + + ) + +68  + #htobe32 +( +x + + `__bsw_32 + (x) + + ) + +69  + #hte32 +( +x +(x) + + ) + +70  + #be32toh +( +x + + `__bsw_32 + (x) + + ) + +71  + #32toh +( +x +(x) + + ) + +73  + #htobe64 +( +x + + `__bsw_64 + (x) + + ) + +74  + #hte64 +( +x +(x) + + ) + +75  + #be64toh +( +x + + `__bsw_64 + (x) + + ) + +76  + #64toh +( +x +(x) + + ) + +79  + #htobe16 +( +x +(x) + + ) + +80  + #hte16 +( +x + + `__bsw_16 + (x) + + ) + +81  + #be16toh +( +x +(x) + + ) + +82  + #16toh +( +x + + `__bsw_16 + (x) + + ) + +84  + #htobe32 +( +x +(x) + + ) + +85  + #hte32 +( +x + + `__bsw_32 + (x) + + ) + +86  + #be32toh +( +x +(x) + + ) + +87  + #32toh +( +x + + `__bsw_32 + (x) + + ) + +89  + #htobe64 +( +x +(x) + + ) + +90  + #hte64 +( +x + + `__bsw_64 + (x) + + ) + +91  + #be64toh +( +x +(x) + + ) + +92  + #64toh +( +x + + `__bsw_64 + (x) + + ) + + @/usr/include/features.h + +18 #idef +_FEATURES_H + + +19  + #_FEATURES_H + 1 + + ) + +97 #unde +__USE_ISOC11 + + +98 #unde +__USE_ISOC99 + + +99 #unde +__USE_ISOC95 + + +100 #unde +__USE_ISOCXX11 + + +101 #unde +__USE_POSIX + + +102 #unde +__USE_POSIX2 + + +103 #unde +__USE_POSIX199309 + + +104 #unde +__USE_POSIX199506 + + +105 #unde +__USE_XOPEN + + +106 #unde +__USE_XOPEN_EXTENDED + + +107 #unde +__USE_UNIX98 + + +108 #unde +__USE_XOPEN2K + + +109 #unde +__USE_XOPEN2KXSI + + +110 #unde +__USE_XOPEN2K8 + + +111 #unde +__USE_XOPEN2K8XSI + + +112 #unde +__USE_LARGEFILE + + +113 #unde +__USE_LARGEFILE64 + + +114 #unde +__USE_FILE_OFFSET64 + + +115 #unde +__USE_MISC + + +116 #unde +__USE_ATFILE + + +117 #unde +__USE_GNU + + +118 #unde +__USE_REENTRANT + + +119 #unde +__USE_FORTIFY_LEVEL + + +120 #unde +__KERNEL_STRICT_NAMES + + +124 #ide +_LOOSE_KERNEL_NAMES + + +125  + #__KERNEL_STRICT_NAMES + + + ) + +135 #i +defed + +__GNUC__ + && defed +__GNUC_MINOR__ + + +136  + #__GNUC_PREREQ +( +maj +, +m +) \ + +137 (( +__GNUC__ + << 16+ +__GNUC_MINOR__ + >(( +maj +<< 16+ ( +m +)) + + ) + +139  + #__GNUC_PREREQ +( +maj +, +m +0 + + ) + +146 #i( +defed + +_BSD_SOURCE + || defed +_SVID_SOURCE +) \ + +147 && ! +defed + + g_DEFAULT_SOURCE + + +152 #unde +_DEFAULT_SOURCE + + +153  + #_DEFAULT_SOURCE + 1 + + ) + +157 #ifde +_GNU_SOURCE + + +158 #unde +_ISOC95_SOURCE + + +159  + #_ISOC95_SOURCE + 1 + + ) + +160 #unde +_ISOC99_SOURCE + + +161  + #_ISOC99_SOURCE + 1 + + ) + +162 #unde +_ISOC11_SOURCE + + +163  + #_ISOC11_SOURCE + 1 + + ) + +164 #unde +_POSIX_SOURCE + + +165  + #_POSIX_SOURCE + 1 + + ) + +166 #unde +_POSIX_C_SOURCE + + +167  + #_POSIX_C_SOURCE + 200809L + + ) + +168 #unde +_XOPEN_SOURCE + + +169  + #_XOPEN_SOURCE + 700 + + ) + +170 #unde +_XOPEN_SOURCE_EXTENDED + + +171  + #_XOPEN_SOURCE_EXTENDED + 1 + + ) + +172 #unde +_LARGEFILE64_SOURCE + + +173  + #_LARGEFILE64_SOURCE + 1 + + ) + +174 #unde +_DEFAULT_SOURCE + + +175  + #_DEFAULT_SOURCE + 1 + + ) + +176 #unde +_ATFILE_SOURCE + + +177  + #_ATFILE_SOURCE + 1 + + ) + +182 #i( +defed + +_DEFAULT_SOURCE + \ + +183 || (! +defed + + g__STRICT_ANSI__ + \ + +184 && ! +defed + + g_ISOC99_SOURCE + \ + +185 && ! +defed + + g_POSIX_SOURCE + && !defed + g_POSIX_C_SOURCE + \ + +186 && ! +defed + + g_XOPEN_SOURCE +)) + +187 #unde +_DEFAULT_SOURCE + + +188  + #_DEFAULT_SOURCE + 1 + + ) + +192 #i( +defed + +_ISOC11_SOURCE + \ + +193 || ( +defed + + g__STDC_VERSION__ + && __STDC_VERSION__ >= 201112L)) + +194  + #__USE_ISOC11 + 1 + + ) + +198 #i( +defed + +_ISOC99_SOURCE + || defed +_ISOC11_SOURCE + \ + +199 || ( +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L)) + +200  + #__USE_ISOC99 + 1 + + ) + +204 #i( +defed + +_ISOC99_SOURCE + || defed +_ISOC11_SOURCE + \ + +205 || ( +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199409L)) + +206  + #__USE_ISOC95 + 1 + + ) + +213 #i(( +defed + +__lulus + && __cplusplus >= 201103L) \ + +214 || +defed + +__GXX_EXPERIMENTAL_CXX0X__ +) + +215  + #__USE_ISOCXX11 + 1 + + ) + +221 #ifde +_DEFAULT_SOURCE + + +222 #i! +defed + +_POSIX_SOURCE + && !defed +_POSIX_C_SOURCE + + +223  + #__USE_POSIX_IMPLICITLY + 1 + + ) + +225 #unde +_POSIX_SOURCE + + +226  + #_POSIX_SOURCE + 1 + + ) + +227 #unde +_POSIX_C_SOURCE + + +228  + #_POSIX_C_SOURCE + 200809L + + ) + +230 #i((! +defed + +__STRICT_ANSI__ + \ + +231 || ( +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) >= 500)) \ + +232 && ! +defed + +_POSIX_SOURCE + && !defed +_POSIX_C_SOURCE +) + +233  + #_POSIX_SOURCE + 1 + + ) + +234 #i +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 500 + +235  + #_POSIX_C_SOURCE + 2 + + ) + +236 #i +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 600 + +237  + #_POSIX_C_SOURCE + 199506L + + ) + +238 #i +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 700 + +239  + #_POSIX_C_SOURCE + 200112L + + ) + +241  + #_POSIX_C_SOURCE + 200809L + + ) + +243  + #__USE_POSIX_IMPLICITLY + 1 + + ) + +246 #i( +defed + +_POSIX_SOURCE + \ + +247 || ( +defed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >= 1) \ + +248 || +defed + +_XOPEN_SOURCE +) + +249  + #__USE_POSIX + 1 + + ) + +252 #i +defed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >2 || defed +_XOPEN_SOURCE + + +253  + #__USE_POSIX2 + 1 + + ) + +256 #i +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199309L + +257  + #__USE_POSIX199309 + 1 + + ) + +260 #i +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199506L + +261  + #__USE_POSIX199506 + 1 + + ) + +264 #i +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 200112L + +265  + #__USE_XOPEN2K + 1 + + ) + +266 #unde +__USE_ISOC95 + + +267  + #__USE_ISOC95 + 1 + + ) + +268 #unde +__USE_ISOC99 + + +269  + #__USE_ISOC99 + 1 + + ) + +272 #i +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 200809L + +273  + #__USE_XOPEN2K8 + 1 + + ) + +274 #unde +_ATFILE_SOURCE + + +275  + #_ATFILE_SOURCE + 1 + + ) + +278 #ifdef +_XOPEN_SOURCE + + +279  + #__USE_XOPEN + 1 + + ) + +280 #i( +_XOPEN_SOURCE + - 0) >= 500 + +281  + #__USE_XOPEN_EXTENDED + 1 + + ) + +282  + #__USE_UNIX98 + 1 + + ) + +283 #unde +_LARGEFILE_SOURCE + + +284  + #_LARGEFILE_SOURCE + 1 + + ) + +285 #i( +_XOPEN_SOURCE + - 0) >= 600 + +286 #i( +_XOPEN_SOURCE + - 0) >= 700 + +287  + #__USE_XOPEN2K8 + 1 + + ) + +288  + #__USE_XOPEN2K8XSI + 1 + + ) + +290  + #__USE_XOPEN2K + 1 + + ) + +291  + #__USE_XOPEN2KXSI + 1 + + ) + +292 #unde +__USE_ISOC95 + + +293  + #__USE_ISOC95 + 1 + + ) + +294 #unde +__USE_ISOC99 + + +295  + #__USE_ISOC99 + 1 + + ) + +298 #ifde +_XOPEN_SOURCE_EXTENDED + + +299  + #__USE_XOPEN_EXTENDED + 1 + + ) + +304 #ifde +_LARGEFILE_SOURCE + + +305  + #__USE_LARGEFILE + 1 + + ) + +308 #ifde +_LARGEFILE64_SOURCE + + +309  + #__USE_LARGEFILE64 + 1 + + ) + +312 #i +defed + +_FILE_OFFSET_BITS + && _FILE_OFFSET_BITS == 64 + +313  + #__USE_FILE_OFFSET64 + 1 + + ) + +316 #i +defed + +_DEFAULT_SOURCE + + +317  + #__USE_MISC + 1 + + ) + +320 #ifdef +_ATFILE_SOURCE + + +321  + #__USE_ATFILE + 1 + + ) + +324 #ifdef +_GNU_SOURCE + + +325  + #__USE_GNU + 1 + + ) + +328 #i +defed + +_REENTRANT + || defed +_THREAD_SAFE + + +329  + #__USE_REENTRANT + 1 + + ) + +332 #i +defed + +_FORTIFY_SOURCE + && _FORTIFY_SOURCE > 0 \ + +333 && +__GNUC_PREREQ + (4, 1&& +defed + + g__OPTIMIZE__ + && __OPTIMIZE__ > 0 + +334 #i +_FORTIFY_SOURCE + > 1 + +335  + #__USE_FORTIFY_LEVEL + 2 + + ) + +337  + #__USE_FORTIFY_LEVEL + 1 + + ) + +340  + #__USE_FORTIFY_LEVEL + 0 + + ) + +345  + ~ + +353 #unde +__GNU_LIBRARY__ + + +354  + #__GNU_LIBRARY__ + 6 + + ) + +358  + #__GLIBC__ + 2 + + ) + +359  + #__GLIBC_MINOR__ + 23 + + ) + +361  + #__GLIBC_PREREQ +( +maj +, +m +) \ + +362 (( +__GLIBC__ + << 16+ +__GLIBC_MINOR__ + >(( +maj +<< 16+ ( +m +)) + + ) + +365 #ide +__ASSEMBLER__ + + +366 #ide +_SYS_CDEFS_H + + +367  + ~ + +372 #i +defed + +__USE_FILE_OFFSET64 + && !defed +__REDIRECT + + +373  + #__USE_LARGEFILE + 1 + + ) + +374  + #__USE_LARGEFILE64 + 1 + + ) + +380 #i +__GNUC_PREREQ + (2, 7&& +defed + +__OPTIMIZE__ + \ + +381 && ! +defed + + g__OPTIMIZE_SIZE__ + && !defed + g__NO_INLINE__ + \ + +382 && +defed + + g__ex_le + + +383  + #__USE_EXTERN_INLINES + 1 + + ) + +391  + ~ + + @/usr/include/libio.h + +28 #ide +_IO_STDIO_H + + +29  + #_IO_STDIO_H + + + ) + +31  + ~<_G_cfig.h +> + +33  + #_IO_os_t + +_G_os_t + + + ) + +34  + #_IO_os64_t + +_G_os64_t + + + ) + +35  + #_IO_size_t + +size_t + + + ) + +36  + #_IO_ssize_t + +__ssize_t + + + ) + +37  + #_IO_off_t + +__off_t + + + ) + +38  + #_IO_off64_t + +__off64_t + + + ) + +39  + #_IO_pid_t + +__pid_t + + + ) + +40  + #_IO_uid_t + +__uid_t + + + ) + +41  + #_IO_icv_t + +_G_icv_t + + + ) + +42  + #_IO_HAVE_ST_BLKSIZE + +_G_HAVE_ST_BLKSIZE + + + ) + +43  + #_IO_BUFSIZ + +_G_BUFSIZ + + + ) + +44  + #_IO_va_li + +_G_va_li + + + ) + +45  + #_IO_wt_t + +wt_t + + + ) + +48  + #__ed___va_li + + + ) + +49  + ~ + +50 #ifde +__GNUC_VA_LIST + + +51 #unde +_IO_va_li + + +52  + #_IO_va_li + +__gnuc_va_li + + + ) + +55 #ide +__P + + +56  + ~ + +59  + #_IO_UNIFIED_JUMPTABLES + 1 + + ) + +61 #ide +EOF + + +62  + #EOF + (-1) + + ) + +64 #ide +NULL + + +65 #i +defed + +__GNUG__ + && \ + +66 ( + g__GNUC__ + > 2 || (__GNUC__ =2 && +__GNUC_MINOR__ + >= 8)) + +67  + #NULL + ( +__nu +) + + ) + +69 #i! +defed +( +__lulus +) + +70  + #NULL + ((*)0) + + ) + +72  + #NULL + (0) + + ) + +77  + #_IOS_INPUT + 1 + + ) + +78  + #_IOS_OUTPUT + 2 + + ) + +79  + #_IOS_ATEND + 4 + + ) + +80  + #_IOS_APPEND + 8 + + ) + +81  + #_IOS_TRUNC + 16 + + ) + +82  + #_IOS_NOCREATE + 32 + + ) + +83  + #_IOS_NOREPLACE + 64 + + ) + +84  + #_IOS_BIN + 128 + + ) + +92  + #_IO_MAGIC + 0xFBAD0000 + + ) + +93  + #_OLD_STDIO_MAGIC + 0xFABC0000 + + ) + +94  + #_IO_MAGIC_MASK + 0xFFFF0000 + + ) + +95  + #_IO_USER_BUF + 1 + + ) + +96  + #_IO_UNBUFFERED + 2 + + ) + +97  + #_IO_NO_READS + 4 + + ) + +98  + #_IO_NO_WRITES + 8 + + ) + +99  + #_IO_EOF_SEEN + 0x10 + + ) + +100  + #_IO_ERR_SEEN + 0x20 + + ) + +101  + #_IO_DELETE_DONT_CLOSE + 0x40 + + ) + +102  + #_IO_LINKED + 0x80 + + ) + +103  + #_IO_IN_BACKUP + 0x100 + + ) + +104  + #_IO_LINE_BUF + 0x200 + + ) + +105  + #_IO_TIED_PUT_GET + 0x400 + + ) + +106  + #_IO_CURRENTLY_PUTTING + 0x800 + + ) + +107  + #_IO_IS_APPENDING + 0x1000 + + ) + +108  + #_IO_IS_FILEBUF + 0x2000 + + ) + +109  + #_IO_BAD_SEEN + 0x4000 + + ) + +110  + #_IO_USER_LOCK + 0x8000 + + ) + +112  + #_IO_FLAGS2_MMAP + 1 + + ) + +113  + #_IO_FLAGS2_NOTCANCEL + 2 + + ) + +114 #ifde +_LIBC + + +115  + #_IO_FLAGS2_FORTIFY + 4 + + ) + +117  + #_IO_FLAGS2_USER_WBUF + 8 + + ) + +118 #ifde +_LIBC + + +119  + #_IO_FLAGS2_SCANF_STD + 16 + + ) + +120  + #_IO_FLAGS2_NOCLOSE + 32 + + ) + +121  + #_IO_FLAGS2_CLOEXEC + 64 + + ) + +125  + #_IO_SKIPWS + 01 + + ) + +126  + #_IO_LEFT + 02 + + ) + +127  + #_IO_RIGHT + 04 + + ) + +128  + #_IO_INTERNAL + 010 + + ) + +129  + #_IO_DEC + 020 + + ) + +130  + #_IO_OCT + 040 + + ) + +131  + #_IO_HEX + 0100 + + ) + +132  + #_IO_SHOWBASE + 0200 + + ) + +133  + #_IO_SHOWPOINT + 0400 + + ) + +134  + #_IO_UPPERCASE + 01000 + + ) + +135  + #_IO_SHOWPOS + 02000 + + ) + +136  + #_IO_SCIENTIFIC + 04000 + + ) + +137  + #_IO_FIXED + 010000 + + ) + +138  + #_IO_UNITBUF + 020000 + + ) + +139  + #_IO_STDIO + 040000 + + ) + +140  + #_IO_DONT_CLOSE + 0100000 + + ) + +141  + #_IO_BOOLALPHA + 0200000 + + ) + +144  +_IO_jump_t +;  + g_IO_FILE +; + +147 #ifde +_IO_MTSAFE_IO + + +150  + t_IO_lock_t +; + +156  + s_IO_mk + { + +157  +_IO_mk + * + m_xt +; + +158  +_IO_FILE + * + m_sbuf +; + +162  + m_pos +; + +164  +t_ampos +( +ampos + + +{ + m_os + = sp; } + +165  +t_offt +( +offt +{ + m_pos + = offt; + m_os + = ( +ampos +)(-2); } + +166 + mpublic +: + +167 +ammk +( +ambuf + * +sb +); + +168 ~ +ammk +(); + +169  +vg +({  + m_os + == -2; } + +170  +d +( +ammk +&); + +171  +d +(); + +176 + e__codecvt_su + + +178 + m__codecvt_ok +, + +179 + m__codecvt_l +, + +180 + m__codecvt_r +, + +181 + m__codecvt_nocv + + +184 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +187  + s_IO_codecvt + + +189 (* + m__codecvt_der +( + m_IO_codecvt + *); + +190 +__codecvt_su + (* +__codecvt_do_out +( + m_IO_codecvt + *, + +191 + m__mbe_t + *, + +192 cڡ + mwch_t + *, + +193 cڡ + mwch_t + *, + +194 cڡ + mwch_t + **, *, + +196 +__codecvt_su + (* +__codecvt_do_unshi +( + m_IO_codecvt + *, + +197 + m__mbe_t + *, *, + +199 +__codecvt_su + (* +__codecvt_do_ +( + m_IO_codecvt + *, + +200 + m__mbe_t + *, + +202 cڡ **, + mwch_t + *, + +203 + mwch_t + *, wchar_t **); + +204 (* + m__codecvt_do_codg +( + m_IO_codecvt + *); + +205 (* + m__codecvt_do_ways_nocv +( + m_IO_codecvt + *); + +206 (* + m__codecvt_do_ngth +( + m_IO_codecvt + *, + m__mbe_t + *, + +207 cڡ *, cڡ *, + m_IO_size_t +); + +208 (* + m__codecvt_do_max_ngth +( + m_IO_codecvt + *); + +210 +_IO_icv_t + + m__cd_ +; + +211 +_IO_icv_t + + m__cd_out +; + +215  + s_IO_wide_da + + +217 +wch_t + * + m_IO_ad_r +; + +218 +wch_t + * + m_IO_ad_d +; + +219 +wch_t + * + m_IO_ad_ba +; + +220 +wch_t + * + m_IO_wre_ba +; + +221 +wch_t + * + m_IO_wre_r +; + +222 +wch_t + * + m_IO_wre_d +; + +223 +wch_t + * + m_IO_buf_ba +; + +224 +wch_t + * + m_IO_buf_d +; + +226 +wch_t + * + m_IO_ve_ba +; + +227 +wch_t + * + m_IO_backup_ba +; + +229 +wch_t + * + m_IO_ve_d +; + +231 +__mbe_t + + m_IO_e +; + +232 +__mbe_t + + m_IO_ϡ_e +; + +233  +_IO_codecvt + + m_codecvt +; + +235 +wch_t + + m_shtbuf +[1]; + +237 cڡ  +_IO_jump_t + * + m_wide_vb +; + +241  + s_IO_FILE + { + +242  + m_ags +; + +243  + #_IO_fe_ags + +_ags + + + ) + +247 * + m_IO_ad_r +; + +248 * + m_IO_ad_d +; + +249 * + m_IO_ad_ba +; + +250 * + m_IO_wre_ba +; + +251 * + m_IO_wre_r +; + +252 * + m_IO_wre_d +; + +253 * + m_IO_buf_ba +; + +254 * + m_IO_buf_d +; + +256 * + m_IO_ve_ba +; + +257 * + m_IO_backup_ba +; + +258 * + m_IO_ve_d +; + +260  +_IO_mk + * + m_mks +; + +262  +_IO_FILE + * + m_cha +; + +264  + m_fo +; + +266  + m_blksize +; + +268  + m_ags2 +; + +270 +_IO_off_t + + m_d_offt +; + +272  + #__HAVE_COLUMN + + + ) + +274  + m_cur_cumn +; + +275 sigd  + m_vb_offt +; + +276  + m_shtbuf +[1]; + +280 +_IO_lock_t + * + m_lock +; + +281 #ifde +_IO_USE_OLD_IO_FILE + + +284  + s_IO_FILE_come + + +286  +_IO_FILE + + m_fe +; + +288 #i +defed + +_G_IO_IO_FILE_VERSION + && _G_IO_IO_FILE_VERSION == 0x20001 + +289 +_IO_off64_t + + m_offt +; + +290 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +292  +_IO_codecvt + * + m_codecvt +; + +293  +_IO_wide_da + * + m_wide_da +; + +294  +_IO_FILE + * + m_䓻s_li +; + +295 * + m_䓻s_buf +; + +297 * + m__d1 +; + +298 * + m__d2 +; + +299 * + m__d3 +; + +300 * + m__d4 +; + +302 +size_t + + m__d5 +; + +303  + m_mode +; + +305  + m_unud2 +[15 *  (- 4 *  (*-  ( +size_t +)]; + +309 #ide +__lulus + + +310  +_IO_FILE + + t_IO_FILE +; + +313  + g_IO_FILE_us +; + +315  +_IO_FILE_us + +_IO_2_1_d_ +; + +316  +_IO_FILE_us + +_IO_2_1_dout_ +; + +317  +_IO_FILE_us + +_IO_2_1_dr_ +; + +318 #ide +_LIBC + + +319  + #_IO_d + (( +_IO_FILE +*)(& +_IO_2_1_d_ +)) + + ) + +320  + #_IO_dout + (( +_IO_FILE +*)(& +_IO_2_1_dout_ +)) + + ) + +321  + #_IO_dr + (( +_IO_FILE +*)(& +_IO_2_1_dr_ +)) + + ) + +323 +_IO_FILE + * +_IO_d + +ibu_hidd +; + +324 +_IO_FILE + * +_IO_dout + +ibu_hidd +; + +325 +_IO_FILE + * +_IO_dr + +ibu_hidd +; + +333  +__ssize_t + + t__io_ad_ + (* + t__cook +, * + t__buf +, + tsize_t + + t__nbys +); + +341  +__ssize_t + + t__io_wre_ + (* + t__cook +, cڡ * + t__buf +, + +342 + tsize_t + + t__n +); + +350  + t__io_ek_ + (* + t__cook +, + t_IO_off64_t + * + t__pos +,  + t__w +); + +353  + t__io_o_ + (* + t__cook +); + +356 #ifde +_GNU_SOURCE + + +358  +__io_ad_ + + tcook_ad_funi_t +; + +359  +__io_wre_ + + tcook_wre_funi_t +; + +360  +__io_ek_ + + tcook_ek_funi_t +; + +361  +__io_o_ + + tcook_o_funi_t +; + +366 +__io_ad_ + * + mad +; + +367 +__io_wre_ + * + mwre +; + +368 +__io_ek_ + * + mek +; + +369 +__io_o_ + * + mo +; + +370 } + t_IO_cook_io_funis_t +; + +371  +_IO_cook_io_funis_t + + tcook_io_funis_t +; + +373  + g_IO_cook_fe +; + +376  +_IO_cook_ + ( +_IO_cook_fe + * +__cfe +,  +__ad_wre +, + +377 * +__cook +, +_IO_cook_io_funis_t + +__s +); + +381 #ifde +__lulus + + +385  +__undow + ( +_IO_FILE + *); + +386  +__uow + ( +_IO_FILE + *); + +387  +__ovow + ( +_IO_FILE + *, ); + +388 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +389 +_IO_wt_t + +__wundow + ( +_IO_FILE + *); + +390 +_IO_wt_t + +__wuow + ( +_IO_FILE + *); + +391 +_IO_wt_t + +__wovow + ( +_IO_FILE + *, _IO_wint_t); + +394 #i +__GNUC__ + >= 3 + +395  + #_IO_BE +( +ex +, +s + + `__but_ex + (x),es) + + ) + +397  + #_IO_BE +( +ex +, +s +x) + + ) + +400  + #_IO_gc_uocked +( +_ +) \ + +401 ( + `_IO_BE + (( +_ +)-> +_IO_ad_r + >(_)-> +_IO_ad_d +, 0) \ + +402 ? + `__uow + ( +_ +: *(*(_)-> +_IO_ad_r +++) + + ) + +403  + #_IO_ekc_uocked +( +_ +) \ + +404 ( + `_IO_BE + (( +_ +)-> +_IO_ad_r + >(_)-> +_IO_ad_d +, 0) \ + +405 && + `__undow + ( +_ += +EOF + ? EOF \ + +406 : *(*( +_ +)-> +_IO_ad_r +) + + ) + +407  + #_IO_putc_uocked +( +_ch +, +_ +) \ + +408 ( + `_IO_BE + (( +_ +)-> +_IO_wre_r + >(_)-> +_IO_wre_d +, 0) \ + +409 ? + `__ovow + ( +_ +, (( +_ch +)) \ + +410 : ((*( +_ +)-> +_IO_wre_r +++ = ( +_ch +))) + + ) + +412 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +413  + #_IO_gwc_uocked +( +_ +) \ + +414 ( + `_IO_BE + (( +_ +)-> +_wide_da + = +NULL + \ + +415 || (( +_ +)-> +_wide_da +-> +_IO_ad_r + \ + +416 >( +_ +)-> +_wide_da +-> +_IO_ad_d +), 0) \ + +417 ? + `__wuow + ( +_ +: ( +_IO_wt_t +*(_)-> +_wide_da +-> +_IO_ad_r +++) + + ) + +418  + #_IO_putwc_uocked +( +_wch +, +_ +) \ + +419 ( + `_IO_BE + (( +_ +)-> +_wide_da + = +NULL + \ + +420 || (( +_ +)-> +_wide_da +-> +_IO_wre_r + \ + +421 >( +_ +)-> +_wide_da +-> +_IO_wre_d +), 0) \ + +422 ? + `__wovow + ( +_ +, +_wch +) \ + +423 : ( +_IO_wt_t +(*( +_ +)-> +_wide_da +-> +_IO_wre_r +++ = ( +_wch +))) + + ) + +426  + #_IO_of_uocked +( +__ +(((__)-> +_ags + & +_IO_EOF_SEEN +!0) + + ) + +427  + #_IO__uocked +( +__ +(((__)-> +_ags + & +_IO_ERR_SEEN +!0) + + ) + +429  +_IO_gc + ( +_IO_FILE + * +__ +); + +430  +_IO_putc + ( +__c +, +_IO_FILE + * +__ +); + +431  +_IO_of + ( +_IO_FILE + * +__ + +__THROW +; + +432  +_IO_ + ( +_IO_FILE + * +__ + +__THROW +; + +434  +_IO_ekc_locked + ( +_IO_FILE + * +__ +); + +437  + #_IO_PENDING_OUTPUT_COUNT +( +_ +) \ + +438 (( +_ +)-> +_IO_wre_r + - (_)-> +_IO_wre_ba +) + + ) + +440  +_IO_ockfe + ( +_IO_FILE + * +__THROW +; + +441  +_IO_fuockfe + ( +_IO_FILE + * +__THROW +; + +442  +_IO_rylockfe + ( +_IO_FILE + * +__THROW +; + +444 #ifde +_IO_MTSAFE_IO + + +445  + #_IO_ekc +( +_ + + `_IO_ekc_locked + (_) + + ) + +446  + #_IO_ockfe +( +_ +) \ + +447 i((( +_ +)-> +_ags + & +_IO_USER_LOCK +=0 + `_IO_ockfe + (_) + + ) + +448  + #_IO_fuockfe +( +_ +) \ + +449 i((( +_ +)-> +_ags + & +_IO_USER_LOCK +=0 + `_IO_fuockfe + (_) + + ) + +451  + #_IO_ekc +( +_ + + `_IO_ekc_uocked + (_) + + ) + +452  + #_IO_ockfe +( +_ + + + ) + +453  + #_IO_fuockfe +( +_ + + + ) + +454  + #_IO_rylockfe +( +_ + + + ) + +455  + #_IO_nup_gi_t +( +_f +, +_ + + + ) + +456  + #_IO_nup_gi_d +( +_Do + + + ) + +459  +_IO_vfsnf + ( +_IO_FILE + * +__ri +, const * __restrict, + +460 +_IO_va_li +, * +__ri +); + +461  +_IO_vrtf + ( +_IO_FILE + * +__ri +, const *__restrict, + +462 +_IO_va_li +); + +463 +_IO_ssize_t + +_IO_dn + ( +_IO_FILE + *, , _IO_ssize_t); + +464 +_IO_size_t + +_IO_sgn + ( +_IO_FILE + *, *, _IO_size_t); + +466 +_IO_off64_t + +_IO_ekoff + ( +_IO_FILE + *, _IO_off64_t, , ); + +467 +_IO_off64_t + +_IO_ekpos + ( +_IO_FILE + *, _IO_off64_t, ); + +469  +_IO__backup_ + ( +_IO_FILE + * +__THROW +; + +471 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +472 +_IO_wt_t + +_IO_gwc + ( +_IO_FILE + * +__ +); + +473 +_IO_wt_t + +_IO_putwc + ( +wch_t + +__wc +, +_IO_FILE + * +__ +); + +474  +_IO_fwide + ( +_IO_FILE + * +__ +,  +__mode + +__THROW +; + +475 #i +__GNUC__ + >= 2 + +478 #i +defed + +_LIBC + && defed +SHARED + + +479  + ~ + +480 #i +SHLIB_COMPAT + ( +libc +, +GLIBC_2_0 +, +GLIBC_2_1 +) + +481  + #_IO_fwide_maybe_comtib + \ + +482 ( + `__but_ex + (& +_IO_d_ud + = +NULL +, 0)) + + ) + +483 cڡ  +_IO_d_ud +; + +484 +wk_ex + ( +_IO_d_ud +); + +487 #ide +_IO_fwide_maybe_comtib + + +488  + #_IO_fwide_maybe_comtib + (0) + + ) + +492  + #_IO_fwide +( +__ +, +__mode +) \ + +493 ({  +__su + = ( +__mode +); \ + +494 i( +__su + < 0 && ! +_IO_fwide_maybe_comtib +) \ + +496 i(( +__ +)-> +_mode + == 0) \ + +498 ( +__ +)-> +_mode + = -1; \ + +499 +__su + = ( +__ +)-> +_mode +; \ + +501 i( + `__but_cڡt_p + ( +__mode +) && (__mode) == 0) \ + +502 +__su + = +_IO_fwide_maybe_comtib + ? -1 : ( +__ +)-> +_mode +; \ + +504 +__su + = + `_IO_fwide + ( +__ +, __result); \ + +505 +__su +; }) + + ) + +508  +_IO_vfwsnf + ( +_IO_FILE + * +__ri +, cڡ +wch_t + * __restrict, + +509 +_IO_va_li +, * +__ri +); + +510  +_IO_vfwtf + ( +_IO_FILE + * +__ri +, cڡ +wch_t + *__restrict, + +511 +_IO_va_li +); + +512 +_IO_ssize_t + +_IO_wdn + ( +_IO_FILE + *, +wt_t +, _IO_ssize_t); + +513  +_IO__wbackup_ + ( +_IO_FILE + * +__THROW +; + +516 #ifde +__LDBL_COMPAT + + +517  + ~ + +520 #ifde +__lulus + + + @/usr/include/limits.h + +22 #ide +_LIBC_LIMITS_H_ + + +23  + #_LIBC_LIMITS_H_ + 1 + + ) + +25  + ~ + +31  + #MB_LEN_MAX + 16 + + ) + +36 #i! +defed + +__GNUC__ + || __GNUC__ < 2 + +41 #ide +_LIMITS_H + + +42  + #_LIMITS_H + 1 + + ) + +44  + ~ + +53  + #CHAR_BIT + 8 + + ) + +56  + #SCHAR_MIN + (-128) + + ) + +57  + #SCHAR_MAX + 127 + + ) + +60  + #UCHAR_MAX + 255 + + ) + +63 #ifde +__CHAR_UNSIGNED__ + + +64  + #CHAR_MIN + 0 + + ) + +65  + #CHAR_MAX + +UCHAR_MAX + + + ) + +67  + #CHAR_MIN + +SCHAR_MIN + + + ) + +68  + #CHAR_MAX + +SCHAR_MAX + + + ) + +72  + #SHRT_MIN + (-32768) + + ) + +73  + #SHRT_MAX + 32767 + + ) + +76  + #USHRT_MAX + 65535 + + ) + +79  + #INT_MIN + (- +INT_MAX + - 1) + + ) + +80  + #INT_MAX + 2147483647 + + ) + +83  + #UINT_MAX + 4294967295U + + ) + +86 #i +__WORDSIZE + == 64 + +87  + #LONG_MAX + 9223372036854775807L + + ) + +89  + #LONG_MAX + 2147483647L + + ) + +91  + #LONG_MIN + (- +LONG_MAX + - 1L) + + ) + +94 #i +__WORDSIZE + == 64 + +95  + #ULONG_MAX + 18446744073709551615UL + + ) + +97  + #ULONG_MAX + 4294967295UL + + ) + +100 #ifde +__USE_ISOC99 + + +103  + #LLONG_MAX + 9223372036854775807LL + + ) + +104  + #LLONG_MIN + (- +LLONG_MAX + - 1LL) + + ) + +107  + #ULLONG_MAX + 18446744073709551615ULL + + ) + +121 #i +defed + +__GNUC__ + && !defed +_GCC_LIMITS_H_ + + +123 #ude_x< +lims +. +h +> + +129 #i +defed + +__USE_ISOC99 + && defed +__GNUC__ + + +130 #ide +LLONG_MIN + + +131  + #LLONG_MIN + (- +LLONG_MAX +-1) + + ) + +133 #ide +LLONG_MAX + + +134  + #LLONG_MAX + +__LONG_LONG_MAX__ + + + ) + +136 #ide +ULLONG_MAX + + +137  + #ULLONG_MAX + ( +LLONG_MAX + * 2ULL + 1) + + ) + +141 #ifdef +__USE_POSIX + + +143  + ~ + +146 #ifdef +__USE_POSIX2 + + +147  + ~ + +150 #ifdef +__USE_XOPEN + + +151  + ~ + + @/usr/include/sys/select.h + +21 #ide +_SYS_SELECT_H + + +22  + #_SYS_SELECT_H + 1 + + ) + +24  + ~ + +27  + ~ + +30  + ~ + +33  + ~ + +35 #ide +__sigt_t_defed + + +36  + #__sigt_t_defed + + + ) + +37  +__sigt_t + + tsigt_t +; + +41  + #__ed_time_t + + + ) + +42  + #__ed_timeec + + + ) + +43  + ~ + +44  + #__ed_timev + + + ) + +45  + ~ + +47 #ide +__sucds_t_defed + + +48  +__sucds_t + + tsucds_t +; + +49  + #__sucds_t_defed + + + ) + +54  + t__fd_mask +; + +57 #unde +__NFDBITS + + +59  + #__NFDBITS + (8 * ( ( +__fd_mask +)) + + ) + +60  + #__FD_ELT +( +d +((d/ +__NFDBITS +) + + ) + +61  + #__FD_MASK +( +d +(( +__fd_mask +(1UL << ((d% +__NFDBITS +))) + + ) + +68 #ifde +__USE_XOPEN + + +69 +__fd_mask + + mfds_bs +[ +__FD_SETSIZE + / +__NFDBITS +]; + +70  + #__FDS_BITS +( +t +((t)-> +fds_bs +) + + ) + +72 +__fd_mask + + m__fds_bs +[ +__FD_SETSIZE + / +__NFDBITS +]; + +73  + #__FDS_BITS +( +t +((t)-> +__fds_bs +) + + ) + +75 } + tfd_t +; + +78  + #FD_SETSIZE + +__FD_SETSIZE + + + ) + +80 #ifde +__USE_MISC + + +82  +__fd_mask + + tfd_mask +; + +85  + #NFDBITS + +__NFDBITS + + + ) + +90  + #FD_SET +( +fd +, +fd + + `__FD_SET + (fd, fd) + + ) + +91  + #FD_CLR +( +fd +, +fd + + `__FD_CLR + (fd, fd) + + ) + +92  + #FD_ISSET +( +fd +, +fd + + `__FD_ISSET + (fd, fd) + + ) + +93  + #FD_ZERO +( +fd + + `__FD_ZERO + (fd) + + ) + +96 +__BEGIN_DECLS + + +106  + + ( +__nfds +, +fd_t + * +__ri + +__adfds +, + +107 +fd_t + * +__ri + +__wrefds +, + +108 +fd_t + * +__ri + +__exfds +, + +109  +timev + * +__ri + +__timeout +); + +111 #ifde +__USE_XOPEN2K + + +118  +p + ( +__nfds +, +fd_t + * +__ri + +__adfds +, + +119 +fd_t + * +__ri + +__wrefds +, + +120 +fd_t + * +__ri + +__exfds +, + +121 cڡ  +timeec + * +__ri + +__timeout +, + +122 cڡ +__sigt_t + * +__ri + +__sigmask +); + +127 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__GNUC__ + + +128  + ~ + +131 + g__END_DECLS + + + @/usr/include/sys/sysmacros.h + +19 #ide +_SYS_SYSMACROS_H + + +20  + #_SYS_SYSMACROS_H + 1 + + ) + +22  + ~ + +24 +__BEGIN_DECLS + + +26 +__exnsi__ + + +27  + $gnu_dev_maj + ( +__dev +) + +28 +__THROW + +__ibu_cڡ__ +; + +29 +__exnsi__ + + +30  + $gnu_dev_m + ( +__dev +) + +31 +__THROW + +__ibu_cڡ__ +; + +32 +__exnsi__ + + +33  + $gnu_dev_makedev + ( +__maj +, + +34  +__m +) + +35 +__THROW + +__ibu_cڡ__ +; + +37 #ifde +__USE_EXTERN_INLINES + + +38 +__exnsi__ + +__ex_le + +__ibu_cڡ__ +  + +39 + `__NTH + ( + $gnu_dev_maj + ( +__dev +)) + +41  (( +__dev + >> 8) & 0xfff) | (() (__dev >> 32) & ~0xfff); + +42 + } +} + +44 +__exnsi__ + +__ex_le + +__ibu_cڡ__ +  + +45 +__NTH + ( + $gnu_dev_m + ( +__dev +)) + +47  ( +__dev + & 0xff) | (() (__dev >> 12) & ~0xff); + +48 + } +} + +50 +__exnsi__ + +__ex_le + +__ibu_cڡ__ +  + +51 +__NTH + ( + $gnu_dev_makedev + ( +__maj +,  +__m +)) + +53  (( +__m + & 0xff| (( +__maj + & 0xfff) << 8) + +54 | (((( +__m + & ~0xff)) << 12) + +55 | (((( +__maj + & ~0xfff)) << 32)); + +56 + } +} + +58 + g__END_DECLS + + +61  + #maj +( +dev + + `gnu_dev_maj + (dev) + + ) + +62  + #m +( +dev + + `gnu_dev_m + (dev) + + ) + +63  + #makedev +( +maj +, +m + + `gnu_dev_makedev + (maj, m) + + ) + + @/usr/include/sys/ucontext.h + +18 #ide +_SYS_UCONTEXT_H + + +19  + #_SYS_UCONTEXT_H + 1 + + ) + +21  + ~ + +22  + ~ + +26  + ~ + +28 #ifde +__x86_64__ + + +31 +__exnsi__ +  + tgg_t +; + +34  + #NGREG + 23 + + ) + +37  +gg_t + + tggt_t +[ +NGREG +]; + +39 #ifde +__USE_GNU + + +43 + mREG_R8 + = 0, + +44  + #REG_R8 + +REG_R8 + + + ) + +45 + mREG_R9 +, + +46  + #REG_R9 + +REG_R9 + + + ) + +47 + mREG_R10 +, + +48  + #REG_R10 + +REG_R10 + + + ) + +49 + mREG_R11 +, + +50  + #REG_R11 + +REG_R11 + + + ) + +51 + mREG_R12 +, + +52  + #REG_R12 + +REG_R12 + + + ) + +53 + mREG_R13 +, + +54  + #REG_R13 + +REG_R13 + + + ) + +55 + mREG_R14 +, + +56  + #REG_R14 + +REG_R14 + + + ) + +57 + mREG_R15 +, + +58  + #REG_R15 + +REG_R15 + + + ) + +59 + mREG_RDI +, + +60  + #REG_RDI + +REG_RDI + + + ) + +61 + mREG_RSI +, + +62  + #REG_RSI + +REG_RSI + + + ) + +63 + mREG_RBP +, + +64  + #REG_RBP + +REG_RBP + + + ) + +65 + mREG_RBX +, + +66  + #REG_RBX + +REG_RBX + + + ) + +67 + mREG_RDX +, + +68  + #REG_RDX + +REG_RDX + + + ) + +69 + mREG_RAX +, + +70  + #REG_RAX + +REG_RAX + + + ) + +71 + mREG_RCX +, + +72  + #REG_RCX + +REG_RCX + + + ) + +73 + mREG_RSP +, + +74  + #REG_RSP + +REG_RSP + + + ) + +75 + mREG_RIP +, + +76  + #REG_RIP + +REG_RIP + + + ) + +77 + mREG_EFL +, + +78  + #REG_EFL + +REG_EFL + + + ) + +79 + mREG_CSGSFS +, + +80  + #REG_CSGSFS + +REG_CSGSFS + + + ) + +81 + mREG_ERR +, + +82  + #REG_ERR + +REG_ERR + + + ) + +83 + mREG_TRAPNO +, + +84  + #REG_TRAPNO + +REG_TRAPNO + + + ) + +85 + mREG_OLDMASK +, + +86  + #REG_OLDMASK + +REG_OLDMASK + + + ) + +87 + mREG_CR2 + + +88  + #REG_CR2 + +REG_CR2 + + + ) + +92  + s_libc_xg + + +94  + msignifind +[4]; + +95  + mexpڒt +; + +96  + mddg +[3]; + +99  + s_libc_xmmg + + +101 +__ut32_t + + memt +[4]; + +104  + s_libc_塩e + + +107 +__ut16_t + + mcwd +; + +108 +__ut16_t + + mswd +; + +109 +__ut16_t + + mw +; + +110 +__ut16_t + + mf +; + +111 +__ut64_t + + mr +; + +112 +__ut64_t + + mrdp +; + +113 +__ut32_t + + mmxc +; + +114 +__ut32_t + + mmx_mask +; + +115  +_libc_xg + + m_ +[8]; + +116  +_libc_xmmg + + m_xmm +[16]; + +117 +__ut32_t + + mddg +[24]; + +121  +_libc_塩e + * + tgt_t +; + +126 +ggt_t + + mggs +; + +128 +gt_t + + mgs +; + +129 +__exnsi__ +  + m__rved1 + [8]; + +130 } + tmcڋxt_t +; + +133  + sucڋxt + + +135  + muc_ags +; + +136  +ucڋxt + * + muc_lk +; + +137 +ack_t + + muc_ack +; + +138 +mcڋxt_t + + muc_mcڋxt +; + +139 +__sigt_t + + muc_sigmask +; + +140  +_libc_塩e + + m__gs_mem +; + +141 } + tucڋxt_t +; + +146  + tgg_t +; + +149  + #NGREG + 19 + + ) + +152  +gg_t + + tggt_t +[ +NGREG +]; + +154 #ifde +__USE_GNU + + +158 + mREG_GS + = 0, + +159  + #REG_GS + +REG_GS + + + ) + +160 + mREG_FS +, + +161  + #REG_FS + +REG_FS + + + ) + +162 + mREG_ES +, + +163  + #REG_ES + +REG_ES + + + ) + +164 + mREG_DS +, + +165  + #REG_DS + +REG_DS + + + ) + +166 + mREG_EDI +, + +167  + #REG_EDI + +REG_EDI + + + ) + +168 + mREG_ESI +, + +169  + #REG_ESI + +REG_ESI + + + ) + +170 + mREG_EBP +, + +171  + #REG_EBP + +REG_EBP + + + ) + +172 + mREG_ESP +, + +173  + #REG_ESP + +REG_ESP + + + ) + +174 + mREG_EBX +, + +175  + #REG_EBX + +REG_EBX + + + ) + +176 + mREG_EDX +, + +177  + #REG_EDX + +REG_EDX + + + ) + +178 + mREG_ECX +, + +179  + #REG_ECX + +REG_ECX + + + ) + +180 + mREG_EAX +, + +181  + #REG_EAX + +REG_EAX + + + ) + +182 + mREG_TRAPNO +, + +183  + #REG_TRAPNO + +REG_TRAPNO + + + ) + +184 + mREG_ERR +, + +185  + #REG_ERR + +REG_ERR + + + ) + +186 + mREG_EIP +, + +187  + #REG_EIP + +REG_EIP + + + ) + +188 + mREG_CS +, + +189  + #REG_CS + +REG_CS + + + ) + +190 + mREG_EFL +, + +191  + #REG_EFL + +REG_EFL + + + ) + +192 + mREG_UESP +, + +193  + #REG_UESP + +REG_UESP + + + ) + +194 + mREG_SS + + +195  + #REG_SS + +REG_SS + + + ) + +200  + s_libc_g + + +202  + msignifind +[4]; + +203  + mexpڒt +; + +206  + s_libc_塩e + + +208  + mcw +; + +209  + msw +; + +210  + mg +; + +211  + moff +; + +212  + mcsl +; + +213  + mdaoff +; + +214  + mdal +; + +215  +_libc_g + + m_ +[8]; + +216  + mus +; + +220  +_libc_塩e + * + tgt_t +; + +225 +ggt_t + + mggs +; + +228 +gt_t + + mgs +; + +229  + mdmask +; + +230  + m2 +; + +231 } + tmcڋxt_t +; + +234  + sucڋxt + + +236  + muc_ags +; + +237  +ucڋxt + * + muc_lk +; + +238 +ack_t + + muc_ack +; + +239 +mcڋxt_t + + muc_mcڋxt +; + +240 +__sigt_t + + muc_sigmask +; + +241  +_libc_塩e + + m__gs_mem +; + +242 } + tucڋxt_t +; + + @/usr/include/sys/uio.h + +18 #ide +_SYS_UIO_H + + +19  + #_SYS_UIO_H + 1 + + ) + +21  + ~ + +23  + ~ + +25 + g__BEGIN_DECLS + + +28  + ~ + +39 +ssize_t + + $adv + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +) + +40 +__wur +; + +50 +ssize_t + + $wrev + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +) + +51 +__wur +; + +54 #ifde +__USE_MISC + + +55 #ide +__USE_FILE_OFFSET64 + + +65 +ssize_t + + $dv + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +, + +66 +__off_t + +__offt + +__wur +; + +77 +ssize_t + + $pwrev + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +, + +78 +__off_t + +__offt + +__wur +; + +80 #ifde +__REDIRECT + + +81 +ssize_t + + `__REDIRECT + ( +dv +, ( +__fd +, cڡ  +iovec + * +__iovec +, + +82  +__cou +, +__off64_t + +__offt +), + +83 +dv64 + +__wur +; + +84 +ssize_t + + `__REDIRECT + ( +pwrev +, ( +__fd +, cڡ  +iovec + * +__iovec +, + +85  +__cou +, +__off64_t + +__offt +), + +86 +pwrev64 + +__wur +; + +88  + #dv + +dv64 + + + ) + +89  + #pwrev + +pwrev64 + + + ) + +93 #ifde +__USE_LARGEFILE64 + + +103 +ssize_t + + $dv64 + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +, + +104 +__off64_t + +__offt + +__wur +; + +115 +ssize_t + + $pwrev64 + ( +__fd +, cڡ  +iovec + * +__iovec +,  +__cou +, + +116 +__off64_t + +__offt + +__wur +; + +120 +__END_DECLS + + + @/usr/include/xlocale.h + +20 #ide +_XLOCALE_H + + +21  + #_XLOCALE_H + 1 + + ) + +27  + s__lo_ru + + +30  +__lo_da + * + m__los +[13]; + +33 cڡ * + m__y_b +; + +34 cڡ * + m__y_tow +; + +35 cڡ * + m__y_tou +; + +38 cڡ * + m__mes +[13]; + +39 } * + t__lo_t +; + +42  +__lo_t + + tlo_t +; + + @/usr/include/_G_config.h + +4 #ide +_G_cfig_h + + +5  + #_G_cfig_h + 1 + + ) + +9  + ~ + +10  + #__ed_size_t + + + ) + +11 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +12  + #__ed_wch_t + + + ) + +14  + #__ed_NULL + + + ) + +15  + ~ + +16  + #__ed_mbe_t + + + ) + +17 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +18  + #__ed_wt_t + + + ) + +20  + ~ + +23 +__off_t + + m__pos +; + +24 +__mbe_t + + m__e +; + +25 } + t_G_os_t +; + +28 +__off64_t + + m__pos +; + +29 +__mbe_t + + m__e +; + +30 } + t_G_os64_t +; + +31 #i +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +32  + ~ + +35  +__gcv_fo + + m__cd +; + +38  +__gcv_fo + + m__cd +; + +39  +__gcv__da + + m__da +; + +40 } + m__combed +; + +41 } + t_G_icv_t +; + +46  + #_G_va_li + +__gnuc_va_li + + + ) + +48  + #_G_HAVE_MMAP + 1 + + ) + +49  + #_G_HAVE_MREMAP + 1 + + ) + +51  + #_G_IO_IO_FILE_VERSION + 0x20001 + + ) + +54  + #_G_HAVE_ST_BLKSIZE + + `defed + ( +_STATBUF_ST_BLKSIZE +) + + ) + +56  + #_G_BUFSIZ + 8192 + + ) + + @/usr/include/asm/socket.h + +1  + ~ + + @/usr/include/bits/byteswap-16.h + +19 #ide +_BITS_BYTESWAP_H + + +23 #ifde +__GNUC__ + + +24 #i +__GNUC__ + >= 2 + +25  + #__bsw_16 +( +x +) \ + +26 ( +__exnsi__ + \ + +27 ({  +__v +, +__x + = (( +x +); \ + +28 i( + `__but_cڡt_p + ( +__x +)) \ + +29 +__v + = + `__bsw_cڡt_16 + ( +__x +); \ + +31 + `__asm__ + ("rorw $8, %w0" \ + +32 : "" ( +__v +) \ + +33 : "0" ( +__x +) \ + +35 +__v +; })) + + ) + +38  + #__bsw_16 +( +x +) \ + +39 ( +__exnsi__ + \ + +40 ({  +__x + = (( +x +); \ + +41 + `__bsw_cڡt_16 + ( +__x +); })) + + ) + +44  +__le +  + +45 + $__bsw_16 + ( +__bsx +) + +47  + `__bsw_cڡt_16 + ( +__bsx +); + +48 + } +} + + @/usr/include/bits/endian.h + +3 #ide +_ENDIAN_H + + +7  + #__BYTE_ORDER + +__LITTLE_ENDIAN + + + ) + + @/usr/include/bits/fcntl-linux.h + +19 #idef +_FCNTL_H + + +37 #ifde +__USE_GNU + + +38  + ~ + +42  + #O_ACCMODE + 0003 + + ) + +43  + #O_RDONLY + 00 + + ) + +44  + #O_WRONLY + 01 + + ) + +45  + #O_RDWR + 02 + + ) + +46 #ide +O_CREAT + + +47  + #O_CREAT + 0100 + + ) + +49 #ide +O_EXCL + + +50  + #O_EXCL + 0200 + + ) + +52 #ide +O_NOCTTY + + +53  + #O_NOCTTY + 0400 + + ) + +55 #ide +O_TRUNC + + +56  + #O_TRUNC + 01000 + + ) + +58 #ide +O_APPEND + + +59  + #O_APPEND + 02000 + + ) + +61 #ide +O_NONBLOCK + + +62  + #O_NONBLOCK + 04000 + + ) + +64 #ide +O_NDELAY + + +65  + #O_NDELAY + +O_NONBLOCK + + + ) + +67 #ide +O_SYNC + + +68  + #O_SYNC + 04010000 + + ) + +70  + #O_FSYNC + +O_SYNC + + + ) + +71 #ide +O_ASYNC + + +72  + #O_ASYNC + 020000 + + ) + +74 #ide +__O_LARGEFILE + + +75  + #__O_LARGEFILE + 0100000 + + ) + +78 #ide +__O_DIRECTORY + + +79  + #__O_DIRECTORY + 0200000 + + ) + +81 #ide +__O_NOFOLLOW + + +82  + #__O_NOFOLLOW + 0400000 + + ) + +84 #ide +__O_CLOEXEC + + +85  + #__O_CLOEXEC + 02000000 + + ) + +87 #ide +__O_DIRECT + + +88  + #__O_DIRECT + 040000 + + ) + +90 #ide +__O_NOATIME + + +91  + #__O_NOATIME + 01000000 + + ) + +93 #ide +__O_PATH + + +94  + #__O_PATH + 010000000 + + ) + +96 #ide +__O_DSYNC + + +97  + #__O_DSYNC + 010000 + + ) + +99 #ide +__O_TMPFILE + + +100  + #__O_TMPFILE + (020000000 | +__O_DIRECTORY +) + + ) + +103 #ide +F_GETLK + + +104 #ide +__USE_FILE_OFFSET64 + + +105  + #F_GETLK + 5 + + ) + +106  + #F_SETLK + 6 + + ) + +107  + #F_SETLKW + 7 + + ) + +109  + #F_GETLK + +F_GETLK64 + + + ) + +110  + #F_SETLK + +F_SETLK64 + + + ) + +111  + #F_SETLKW + +F_SETLKW64 + + + ) + +114 #ide +F_GETLK64 + + +115  + #F_GETLK64 + 12 + + ) + +116  + #F_SETLK64 + 13 + + ) + +117  + #F_SETLKW64 + 14 + + ) + +131 #ifde +__USE_GNU + + +132  + #F_OFD_GETLK + 36 + + ) + +133  + #F_OFD_SETLK + 37 + + ) + +134  + #F_OFD_SETLKW + 38 + + ) + +137 #ifde +__USE_LARGEFILE64 + + +138  + #O_LARGEFILE + +__O_LARGEFILE + + + ) + +141 #ifde +__USE_XOPEN2K8 + + +142  + #O_DIRECTORY + +__O_DIRECTORY + + + ) + +143  + #O_NOFOLLOW + +__O_NOFOLLOW + + + ) + +144  + #O_CLOEXEC + +__O_CLOEXEC + + + ) + +147 #ifde +__USE_GNU + + +148  + #O_DIRECT + +__O_DIRECT + + + ) + +149  + #O_NOATIME + +__O_NOATIME + + + ) + +150  + #O_PATH + +__O_PATH + + + ) + +151  + #O_TMPFILE + +__O_TMPFILE + + + ) + +157 #i +defed + +__USE_POSIX199309 + || defed +__USE_UNIX98 + + +158  + #O_DSYNC + +__O_DSYNC + + + ) + +159 #i +defed + +__O_RSYNC + + +160  + #O_RSYNC + +__O_RSYNC + + + ) + +162  + #O_RSYNC + +O_SYNC + + + ) + +167  + #F_DUPFD + 0 + + ) + +168  + #F_GETFD + 1 + + ) + +169  + #F_SETFD + 2 + + ) + +170  + #F_GETFL + 3 + + ) + +171  + #F_SETFL + 4 + + ) + +173 #ide +__F_SETOWN + + +174  + #__F_SETOWN + 8 + + ) + +175  + #__F_GETOWN + 9 + + ) + +178 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +179  + #F_SETOWN + +__F_SETOWN + + + ) + +180  + #F_GETOWN + +__F_GETOWN + + + ) + +183 #ide +__F_SETSIG + + +184  + #__F_SETSIG + 10 + + ) + +185  + #__F_GETSIG + 11 + + ) + +187 #ide +__F_SETOWN_EX + + +188  + #__F_SETOWN_EX + 15 + + ) + +189  + #__F_GETOWN_EX + 16 + + ) + +192 #ifde +__USE_GNU + + +193  + #F_SETSIG + +__F_SETSIG + + + ) + +194  + #F_GETSIG + +__F_GETSIG + + + ) + +195  + #F_SETOWN_EX + +__F_SETOWN_EX + + + ) + +196  + #F_GETOWN_EX + +__F_GETOWN_EX + + + ) + +199 #ifde +__USE_GNU + + +200  + #F_SETLEASE + 1024 + + ) + +201  + #F_GETLEASE + 1025 + + ) + +202  + #F_NOTIFY + 1026 + + ) + +203  + #F_SETPIPE_SZ + 1031 + + ) + +204  + #F_GETPIPE_SZ + 1032 + + ) + +206 #ifde +__USE_XOPEN2K8 + + +207  + #F_DUPFD_CLOEXEC + 1030 + + ) + +212  + #FD_CLOEXEC + 1 + + ) + +214 #ide +F_RDLCK + + +216  + #F_RDLCK + 0 + + ) + +217  + #F_WRLCK + 1 + + ) + +218  + #F_UNLCK + 2 + + ) + +223 #ide +F_EXLCK + + +224  + #F_EXLCK + 4 + + ) + +225  + #F_SHLCK + 8 + + ) + +228 #ifde +__USE_MISC + + +230  + #LOCK_SH + 1 + + ) + +231  + #LOCK_EX + 2 + + ) + +232  + #LOCK_NB + 4 + + ) + +234  + #LOCK_UN + 8 + + ) + +237 #ifde +__USE_GNU + + +238  + #LOCK_MAND + 32 + + ) + +239  + #LOCK_READ + 64 + + ) + +240  + #LOCK_WRITE + 128 + + ) + +241  + #LOCK_RW + 192 + + ) + +244 #ifde +__USE_GNU + + +246  + #DN_ACCESS + 0x00000001 + + ) + +247  + #DN_MODIFY + 0x00000002 + + ) + +248  + #DN_CREATE + 0x00000004 + + ) + +249  + #DN_DELETE + 0x00000008 + + ) + +250  + #DN_RENAME + 0x00000010 + + ) + +251  + #DN_ATTRIB + 0x00000020 + + ) + +252  + #DN_MULTISHOT + 0x80000000 + + ) + +256 #ifde +__USE_GNU + + +258 + e__pid_ty + + +260 + mF_OWNER_TID + = 0, + +261 + mF_OWNER_PID +, + +262 + mF_OWNER_PGRP +, + +263 + mF_OWNER_GID + = +F_OWNER_PGRP + + +267  + sf_owr_ex + + +269 +__pid_ty + + mty +; + +270 +__pid_t + + mpid +; + +276 #ifdef +__USE_MISC + + +277  + #FAPPEND + +O_APPEND + + + ) + +278  + #FFSYNC + +O_FSYNC + + + ) + +279  + #FASYNC + +O_ASYNC + + + ) + +280  + #FNONBLOCK + +O_NONBLOCK + + + ) + +281  + #FNDELAY + +O_NDELAY + + + ) + +284 #ide +__POSIX_FADV_DONTNEED + + +285  + #__POSIX_FADV_DONTNEED + 4 + + ) + +286  + #__POSIX_FADV_NOREUSE + 5 + + ) + +289 #ifde +__USE_XOPEN2K + + +290  + #POSIX_FADV_NORMAL + 0 + + ) + +291  + #POSIX_FADV_RANDOM + 1 + + ) + +292  + #POSIX_FADV_SEQUENTIAL + 2 + + ) + +293  + #POSIX_FADV_WILLNEED + 3 + + ) + +294  + #POSIX_FADV_DONTNEED + +__POSIX_FADV_DONTNEED + + + ) + +295  + #POSIX_FADV_NOREUSE + +__POSIX_FADV_NOREUSE + + + ) + +299 #ifde +__USE_GNU + + +301  + #SYNC_FILE_RANGE_WAIT_BEFORE + 1 + + ) + +304  + #SYNC_FILE_RANGE_WRITE + 2 + + ) + +307  + #SYNC_FILE_RANGE_WAIT_AFTER + 4 + + ) + +312  + #SPLICE_F_MOVE + 1 + + ) + +313  + #SPLICE_F_NONBLOCK + 2 + + ) + +316  + #SPLICE_F_MORE + 4 + + ) + +317  + #SPLICE_F_GIFT + 8 + + ) + +321  + #FALLOC_FL_KEEP_SIZE + 1 + + ) + +324  + #FALLOC_FL_PUNCH_HOLE + 2 + + ) + +325  + #FALLOC_FL_COLLAPSE_RANGE + 8 + + ) + +328  + #FALLOC_FL_ZERO_RANGE + 16 + + ) + +333  + sfe_hd + + +335  + mhd_bys +; + +336  + mhd_ty +; + +338  + mf_hd +[0]; + +342  + #MAX_HANDLE_SZ + 128 + + ) + +346 #ifde +__USE_ATFILE + + +347  + #AT_FDCWD + -100 + + ) + +350  + #AT_SYMLINK_NOFOLLOW + 0x100 + + ) + +351  + #AT_REMOVEDIR + 0x200 + + ) + +353  + #AT_SYMLINK_FOLLOW + 0x400 + + ) + +354 #ifde +__USE_GNU + + +355  + #AT_NO_AUTOMOUNT + 0x800 + + ) + +357  + #AT_EMPTY_PATH + 0x1000 + + ) + +359  + #AT_EACCESS + 0x200 + + ) + +363 + g__BEGIN_DECLS + + +365 #ifde +__USE_GNU + + +368 +ssize_t + + $adahd + ( +__fd +, +__off64_t + +__offt +, +size_t + +__cou +) + +369 +__THROW +; + +376  + `sync_fe_nge + ( +__fd +, +__off64_t + +__offt +, __off64_ +__cou +, + +377  +__ags +); + +384 +ssize_t + + `vmli + ( +__fdout +, cڡ  +iovec + * +__iov +, + +385 +size_t + +__cou +,  +__ags +); + +391 +ssize_t + + `li + ( +__fd +, +__off64_t + * +__off +,  +__fdout +, + +392 +__off64_t + * +__offout +, +size_t + +__n +, + +393  +__ags +); + +399 +ssize_t + + `e + ( +__fd +,  +__fdout +, +size_t + +__n +, + +400  +__ags +); + +406 #ide +__USE_FILE_OFFSET64 + + +407  + `o + ( +__fd +,  +__mode +, +__off_t + +__offt +, __off_ +__n +); + +409 #ifde +__REDIRECT + + +410  + `__REDIRECT + ( +o +, ( +__fd +,  +__mode +, +__off64_t + +__offt +, + +411 +__off64_t + +__n +), + +412 +o64 +); + +414  + #o + +o64 + + + ) + +417 #ifde +__USE_LARGEFILE64 + + +418  + `o64 + ( +__fd +,  +__mode +, +__off64_t + +__offt +, + +419 +__off64_t + +__n +); + +424  + $me_to_hd_ + ( +__dfd +, cڡ * +__me +, + +425  +fe_hd + * +__hd +, * +__m_id +, + +426  +__ags + +__THROW +; + +432  + `ݒ_by_hd_ + ( +__moudfd +,  +fe_hd + * +__hd +, + +433  +__ags +); + +437 +__END_DECLS + + + @/usr/include/bits/libio-ldbl.h + +19 #ide +_IO_STDIO_H + + +23 + $__LDBL_REDIR_DECL + ( +_IO_vfsnf +) + +24 + `__LDBL_REDIR_DECL + ( +_IO_vrtf +) + + @/usr/include/bits/libm-simd-decl-stubs.h + +19 #ide +_MATH_H + + +33 #ide +_BITS_LIBM_SIMD_DECL_STUBS_H + + +34  + #_BITS_LIBM_SIMD_DECL_STUBS_H + 1 + + ) + +36  + #__DECL_SIMD_cos + + + ) + +37  + #__DECL_SIMD_cosf + + + ) + +38  + #__DECL_SIMD_co + + + ) + +40  + #__DECL_SIMD_s + + + ) + +41  + #__DECL_SIMD_sf + + + ) + +42  + #__DECL_SIMD_sl + + + ) + +44  + #__DECL_SIMD_scos + + + ) + +45  + #__DECL_SIMD_scosf + + + ) + +46  + #__DECL_SIMD_sco + + + ) + +48  + #__DECL_SIMD_log + + + ) + +49  + #__DECL_SIMD_logf + + + ) + +50  + #__DECL_SIMD_logl + + + ) + +52  + #__DECL_SIMD_exp + + + ) + +53  + #__DECL_SIMD_expf + + + ) + +54  + #__DECL_SIMD_ex + + + ) + +56  + #__DECL_SIMD_pow + + + ) + +57  + #__DECL_SIMD_powf + + + ) + +58  + #__DECL_SIMD_powl + + + ) + + @/usr/include/bits/posix1_lim.h + +24 #idef +_BITS_POSIX1_LIM_H + + +25  + #_BITS_POSIX1_LIM_H + 1 + + ) + +31  + #_POSIX_AIO_LISTIO_MAX + 2 + + ) + +34  + #_POSIX_AIO_MAX + 1 + + ) + +37  + #_POSIX_ARG_MAX + 4096 + + ) + +40 #ifde +__USE_XOPEN2K + + +41  + #_POSIX_CHILD_MAX + 25 + + ) + +43  + #_POSIX_CHILD_MAX + 6 + + ) + +47  + #_POSIX_DELAYTIMER_MAX + 32 + + ) + +51  + #_POSIX_HOST_NAME_MAX + 255 + + ) + +54  + #_POSIX_LINK_MAX + 8 + + ) + +57  + #_POSIX_LOGIN_NAME_MAX + 9 + + ) + +60  + #_POSIX_MAX_CANON + 255 + + ) + +64  + #_POSIX_MAX_INPUT + 255 + + ) + +67  + #_POSIX_MQ_OPEN_MAX + 8 + + ) + +70  + #_POSIX_MQ_PRIO_MAX + 32 + + ) + +73  + #_POSIX_NAME_MAX + 14 + + ) + +76 #ifde +__USE_XOPEN2K + + +77  + #_POSIX_NGROUPS_MAX + 8 + + ) + +79  + #_POSIX_NGROUPS_MAX + 0 + + ) + +83 #ifde +__USE_XOPEN2K + + +84  + #_POSIX_OPEN_MAX + 20 + + ) + +86  + #_POSIX_OPEN_MAX + 16 + + ) + +89 #i! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +92  + #_POSIX_FD_SETSIZE + +_POSIX_OPEN_MAX + + + ) + +96  + #_POSIX_PATH_MAX + 256 + + ) + +99  + #_POSIX_PIPE_BUF + 512 + + ) + +103  + #_POSIX_RE_DUP_MAX + 255 + + ) + +106  + #_POSIX_RTSIG_MAX + 8 + + ) + +109  + #_POSIX_SEM_NSEMS_MAX + 256 + + ) + +112  + #_POSIX_SEM_VALUE_MAX + 32767 + + ) + +115  + #_POSIX_SIGQUEUE_MAX + 32 + + ) + +118  + #_POSIX_SSIZE_MAX + 32767 + + ) + +121  + #_POSIX_STREAM_MAX + 8 + + ) + +124  + #_POSIX_SYMLINK_MAX + 255 + + ) + +128  + #_POSIX_SYMLOOP_MAX + 8 + + ) + +131  + #_POSIX_TIMER_MAX + 32 + + ) + +134  + #_POSIX_TTY_NAME_MAX + 9 + + ) + +137 #ifde +__USE_XOPEN2K + + +138  + #_POSIX_TZNAME_MAX + 6 + + ) + +140  + #_POSIX_TZNAME_MAX + 3 + + ) + +143 #i! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +145  + #_POSIX_QLIMIT + 1 + + ) + +149  + #_POSIX_HIWAT + +_POSIX_PIPE_BUF + + + ) + +152  + #_POSIX_UIO_MAXIOV + 16 + + ) + +156  + #_POSIX_CLOCKRES_MIN + 20000000 + + ) + +160  + ~ + +163 #idef +SSIZE_MAX + + +164  + #SSIZE_MAX + +LONG_MAX + + + ) + +171 #idef +NGROUPS_MAX + + +172  + #NGROUPS_MAX + 8 + + ) + + @/usr/include/bits/posix2_lim.h + +22 #idef +_BITS_POSIX2_LIM_H + + +23  + #_BITS_POSIX2_LIM_H + 1 + + ) + +27  + #_POSIX2_BC_BASE_MAX + 99 + + ) + +30  + #_POSIX2_BC_DIM_MAX + 2048 + + ) + +33  + #_POSIX2_BC_SCALE_MAX + 99 + + ) + +36  + #_POSIX2_BC_STRING_MAX + 1000 + + ) + +40  + #_POSIX2_COLL_WEIGHTS_MAX + 2 + + ) + +44  + #_POSIX2_EXPR_NEST_MAX + 32 + + ) + +47  + #_POSIX2_LINE_MAX + 2048 + + ) + +51  + #_POSIX2_RE_DUP_MAX + 255 + + ) + +55  + #_POSIX2_CHARCLASS_NAME_MAX + 14 + + ) + +62 #idef +BC_BASE_MAX + + +63  + #BC_BASE_MAX + +_POSIX2_BC_BASE_MAX + + + ) + +65 #idef +BC_DIM_MAX + + +66  + #BC_DIM_MAX + +_POSIX2_BC_DIM_MAX + + + ) + +68 #idef +BC_SCALE_MAX + + +69  + #BC_SCALE_MAX + +_POSIX2_BC_SCALE_MAX + + + ) + +71 #idef +BC_STRING_MAX + + +72  + #BC_STRING_MAX + +_POSIX2_BC_STRING_MAX + + + ) + +74 #idef +COLL_WEIGHTS_MAX + + +75  + #COLL_WEIGHTS_MAX + 255 + + ) + +77 #idef +EXPR_NEST_MAX + + +78  + #EXPR_NEST_MAX + +_POSIX2_EXPR_NEST_MAX + + + ) + +80 #idef +LINE_MAX + + +81  + #LINE_MAX + +_POSIX2_LINE_MAX + + + ) + +83 #idef +CHARCLASS_NAME_MAX + + +84  + #CHARCLASS_NAME_MAX + 2048 + + ) + +88  + #RE_DUP_MAX + (0x7fff) + + ) + + @/usr/include/bits/select.h + +18 #ide +_SYS_SELECT_H + + +22  + ~ + +25 #i +defed + +__GNUC__ + && __GNUC__ >= 2 + +27 #i +__WORDSIZE + == 64 + +28  + #__FD_ZERO_STOS + "osq" + + ) + +30  + #__FD_ZERO_STOS + "o" + + ) + +33  + #__FD_ZERO +( +fd +) \ + +35  +__d0 +, +__d1 +; \ + +36 +__asm__ + + `__vީe__ + ("d;; " +__FD_ZERO_STOS + \ + +37 : "=c" ( +__d0 +), "=D" ( +__d1 +) \ + +38 : "a" (0), "0" ( ( +fd_t +) \ + +39 /  ( +__fd_mask +)), \ + +40 "1" (& + `__FDS_BITS + ( +fd +)[0]) \ + +42 } 0) + + ) + +48  + #__FD_ZERO +( +t +) \ + +50  +__i +; \ + +51 +fd_t + * +__r + = ( +t +); \ + +52  +__i + = 0; __<  ( +fd_t +/  ( +__fd_mask +); ++__i) \ + +53 + `__FDS_BITS + ( +__r +)[ +__i +] = 0; \ + +54 } 0) + + ) + +58  + #__FD_SET +( +d +, +t +) \ + +59 ((( + `__FDS_BITS + ( +t +)[ + `__FD_ELT + ( +d +)] | + `__FD_MASK + (d))) + + ) + +60  + #__FD_CLR +( +d +, +t +) \ + +61 ((( + `__FDS_BITS + ( +t +)[ + `__FD_ELT + ( +d +)] &~ + `__FD_MASK + (d))) + + ) + +62  + #__FD_ISSET +( +d +, +t +) \ + +63 (( + `__FDS_BITS + ( +t +)[ + `__FD_ELT + ( +d +)] & + `__FD_MASK + (d)!0) + + ) + + @/usr/include/bits/select2.h + +19 #ide +_SYS_SELECT_H + + +24  +__fdt_chk + ( +__d +); + +25  + $__fdt_wn + ( +__d +) + +26 + `__wljr + ("bit outside of fd_set selected"); + +27 #unde +__FD_ELT + + +28  + #__FD_ELT +( +d +) \ + +29 +__exnsi__ + \ + +30 ({  +__d + = ( +d +); \ + +31 ( + `__but_cڡt_p + ( +__d +) \ + +32 ? (0 < +__d + && __d < +__FD_SETSIZE + \ + +33 ? ( +__d + / +__NFDBITS +) \ + +34 : + `__fdt_wn + ( +__d +)) \ + +35 : + `__fdt_chk + ( +__d +)); + } +}) + + ) + + @/usr/include/bits/sockaddr.h + +23 #ide +_BITS_SOCKADDR_H + + +24  + #_BITS_SOCKADDR_H + 1 + + ) + +28  + t_my_t +; + +34  + #__SOCKADDR_COMMON +( +_efix +) \ + +35 +_my_t + +_efix +## +my + + + ) + +37  + #__SOCKADDR_COMMON_SIZE + ( ()) + + ) + +40  + #_SS_SIZE + 128 + + ) + + @/usr/include/bits/socket_type.h + +19 #ide +_SYS_SOCKET_H + + +24 + e__sock_ty + + +26 + mSOCK_STREAM + = 1, + +28  + #SOCK_STREAM + +SOCK_STREAM + + + ) + +29 + mSOCK_DGRAM + = 2, + +31  + #SOCK_DGRAM + +SOCK_DGRAM + + + ) + +32 + mSOCK_RAW + = 3, + +33  + #SOCK_RAW + +SOCK_RAW + + + ) + +34 + mSOCK_RDM + = 4, + +35  + #SOCK_RDM + +SOCK_RDM + + + ) + +36 + mSOCK_SEQPACKET + = 5, + +38  + #SOCK_SEQPACKET + +SOCK_SEQPACKET + + + ) + +39 + mSOCK_DCCP + = 6, + +40  + #SOCK_DCCP + +SOCK_DCCP + + + ) + +41 + mSOCK_PACKET + = 10, + +44  + #SOCK_PACKET + +SOCK_PACKET + + + ) + +49 + mSOCK_CLOEXEC + = 02000000, + +51  + #SOCK_CLOEXEC + +SOCK_CLOEXEC + + + ) + +52 + mSOCK_NONBLOCK + = 00004000 + +54  + #SOCK_NONBLOCK + +SOCK_NONBLOCK + + + ) + + @/usr/include/bits/timex.h + +18 #idef +_BITS_TIMEX_H + + +19  + #_BITS_TIMEX_H + 1 + + ) + +21  + ~ + +25  + stimex + + +27  + mmodes +; + +28 +__sys_g_t + + mofft +; + +29 +__sys_g_t + + meq +; + +30 +__sys_g_t + + mmaxr +; + +31 +__sys_g_t + + mer +; + +32  + mus +; + +33 +__sys_g_t + + mcڡt +; + +34 +__sys_g_t + + mecisi +; + +35 +__sys_g_t + + mtޔ +; + +36  +timev + + mtime +; + +37 +__sys_g_t + + mtick +; + +38 +__sys_g_t + + mseq +; + +39 +__sys_g_t + + mjr +; + +40  + mshi +; + +41 +__sys_g_t + + mab +; + +42 +__sys_g_t + + mjt +; + +43 +__sys_g_t + + mlt +; + +44 +__sys_g_t + + mrt +; + +45 +__sys_g_t + + mbt +; + +47  + mi +; + +56  + #ADJ_OFFSET + 0x0001 + + ) + +57  + #ADJ_FREQUENCY + 0x0002 + + ) + +58  + #ADJ_MAXERROR + 0x0004 + + ) + +59  + #ADJ_ESTERROR + 0x0008 + + ) + +60  + #ADJ_STATUS + 0x0010 + + ) + +61  + #ADJ_TIMECONST + 0x0020 + + ) + +62  + #ADJ_TAI + 0x0080 + + ) + +63  + #ADJ_SETOFFSET + 0x0100 + + ) + +64  + #ADJ_MICRO + 0x1000 + + ) + +65  + #ADJ_NANO + 0x2000 + + ) + +66  + #ADJ_TICK + 0x4000 + + ) + +67  + #ADJ_OFFSET_SINGLESHOT + 0x8001 + + ) + +68  + #ADJ_OFFSET_SS_READ + 0xa001 + + ) + +71  + #MOD_OFFSET + +ADJ_OFFSET + + + ) + +72  + #MOD_FREQUENCY + +ADJ_FREQUENCY + + + ) + +73  + #MOD_MAXERROR + +ADJ_MAXERROR + + + ) + +74  + #MOD_ESTERROR + +ADJ_ESTERROR + + + ) + +75  + #MOD_STATUS + +ADJ_STATUS + + + ) + +76  + #MOD_TIMECONST + +ADJ_TIMECONST + + + ) + +77  + #MOD_CLKB + +ADJ_TICK + + + ) + +78  + #MOD_CLKA + +ADJ_OFFSET_SINGLESHOT + + + ) + +79  + #MOD_TAI + +ADJ_TAI + + + ) + +80  + #MOD_MICRO + +ADJ_MICRO + + + ) + +81  + #MOD_NANO + +ADJ_NANO + + + ) + +85  + #STA_PLL + 0x0001 + + ) + +86  + #STA_PPSFREQ + 0x0002 + + ) + +87  + #STA_PPSTIME + 0x0004 + + ) + +88  + #STA_FLL + 0x0008 + + ) + +90  + #STA_INS + 0x0010 + + ) + +91  + #STA_DEL + 0x0020 + + ) + +92  + #STA_UNSYNC + 0x0040 + + ) + +93  + #STA_FREQHOLD + 0x0080 + + ) + +95  + #STA_PPSSIGNAL + 0x0100 + + ) + +96  + #STA_PPSJITTER + 0x0200 + + ) + +97  + #STA_PPSWANDER + 0x0400 + + ) + +98  + #STA_PPSERROR + 0x0800 + + ) + +100  + #STA_CLOCKERR + 0x1000 + + ) + +101  + #STA_NANO + 0x2000 + + ) + +102  + #STA_MODE + 0x4000 + + ) + +103  + #STA_CLK + 0x8000 + + ) + +106  + #STA_RONLY + ( +STA_PPSSIGNAL + | +STA_PPSJITTER + | +STA_PPSWANDER + | \ + +107 +STA_PPSERROR + | +STA_CLOCKERR + | +STA_NANO + | +STA_MODE + | +STA_CLK +) + + ) + + @/usr/include/bits/typesizes.h + +19 #ide +_BITS_TYPES_H + + +23 #idef +_BITS_TYPESIZES_H + + +24  + #_BITS_TYPESIZES_H + 1 + + ) + +30 #i +defed + +__x86_64__ + && defed +__ILP32__ + + +31  + #__SYSCALL_SLONG_TYPE + +__SQUAD_TYPE + + + ) + +32  + #__SYSCALL_ULONG_TYPE + +__UQUAD_TYPE + + + ) + +34  + #__SYSCALL_SLONG_TYPE + +__SLONGWORD_TYPE + + + ) + +35  + #__SYSCALL_ULONG_TYPE + +__ULONGWORD_TYPE + + + ) + +38  + #__DEV_T_TYPE + +__UQUAD_TYPE + + + ) + +39  + #__UID_T_TYPE + +__U32_TYPE + + + ) + +40  + #__GID_T_TYPE + +__U32_TYPE + + + ) + +41  + #__INO_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +42  + #__INO64_T_TYPE + +__UQUAD_TYPE + + + ) + +43  + #__MODE_T_TYPE + +__U32_TYPE + + + ) + +44 #ifde +__x86_64__ + + +45  + #__NLINK_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +46  + #__FSWORD_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +48  + #__NLINK_T_TYPE + +__UWORD_TYPE + + + ) + +49  + #__FSWORD_T_TYPE + +__SWORD_TYPE + + + ) + +51  + #__OFF_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +52  + #__OFF64_T_TYPE + +__SQUAD_TYPE + + + ) + +53  + #__PID_T_TYPE + +__S32_TYPE + + + ) + +54  + #__RLIM_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +55  + #__RLIM64_T_TYPE + +__UQUAD_TYPE + + + ) + +56  + #__BLKCNT_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +57  + #__BLKCNT64_T_TYPE + +__SQUAD_TYPE + + + ) + +58  + #__FSBLKCNT_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +59  + #__FSBLKCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +60  + #__FSFILCNT_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +61  + #__FSFILCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +62  + #__ID_T_TYPE + +__U32_TYPE + + + ) + +63  + #__CLOCK_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +64  + #__TIME_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +65  + #__USECONDS_T_TYPE + +__U32_TYPE + + + ) + +66  + #__SUSECONDS_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +67  + #__DADDR_T_TYPE + +__S32_TYPE + + + ) + +68  + #__KEY_T_TYPE + +__S32_TYPE + + + ) + +69  + #__CLOCKID_T_TYPE + +__S32_TYPE + + + ) + +70  + #__TIMER_T_TYPE + * + + ) + +71  + #__BLKSIZE_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +72  + #__FSID_T_TYPE + su {  +__v +[2]; } + + ) + +73  + #__SSIZE_T_TYPE + +__SWORD_TYPE + + + ) + +74  + #__CPU_MASK_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +76 #ifde +__x86_64__ + + +80  + #__OFF_T_MATCHES_OFF64_T + 1 + + ) + +83  + #__INO_T_MATCHES_INO64_T + 1 + + ) + +87  + #__FD_SETSIZE + 1024 + + ) + + @/usr/include/bits/uio.h + +18 #i! +defed + +_SYS_UIO_H + && !defed +_FCNTL_H + + +22 #ide +_BITS_UIO_H + + +23  + #_BITS_UIO_H + 1 + + ) + +25  + ~ + +39  + #UIO_MAXIOV + 1024 + + ) + +43  + siovec + + +45 * + miov_ba +; + +46 +size_t + + miov_n +; + +52 #ifde +__USE_GNU + + +53 #i +defed + +_SYS_UIO_H + && !defed +_BITS_UIO_H_FOR_SYS_UIO_H + + +54  + #_BITS_UIO_H_FOR_SYS_UIO_H + 1 + + ) + +56 +__BEGIN_DECLS + + +59 +ssize_t + + $oss_vm_adv + ( +pid_t + +__pid +, cڡ  +iovec + * +__lvec +, + +60  +__liovt +, + +61 cڡ  +iovec + * +__rvec +, + +62  +__riovt +, + +63  +__ags +) + +64 +__THROW +; + +67 +ssize_t + + $oss_vm_wrev + ( +pid_t + +__pid +, cڡ  +iovec + * +__lvec +, + +68  +__liovt +, + +69 cڡ  +iovec + * +__rvec +, + +70  +__riovt +, + +71  +__ags +) + +72 +__THROW +; + +74 +__END_DECLS + + + @/usr/include/bits/xopen_lim.h + +29 #ide +_XOPEN_LIM_H + + +30  + #_XOPEN_LIM_H + 1 + + ) + +32  + #__ed_IOV_MAX + + + ) + +33  + ~ + +65  + #_XOPEN_IOV_MAX + +_POSIX_UIO_MAXIOV + + + ) + +70  + #NL_ARGMAX + +_POSIX_ARG_MAX + + + ) + +73  + #NL_LANGMAX + +_POSIX2_LINE_MAX + + + ) + +76  + #NL_MSGMAX + +INT_MAX + + + ) + +80  + #NL_NMAX + +INT_MAX + + + ) + +83  + #NL_SETMAX + +INT_MAX + + + ) + +86  + #NL_TEXTMAX + +INT_MAX + + + ) + +89  + #NZERO + 20 + + ) + +93 #ifde +INT_MAX + + +94 #i +INT_MAX + == 32767 + +95  + #WORD_BIT + 16 + + ) + +97 #i +INT_MAX + == 2147483647 + +98  + #WORD_BIT + 32 + + ) + +101  + #WORD_BIT + 64 + + ) + +104 #i +defed + +__INT_MAX__ + + +105 #i +__INT_MAX__ + == 32767 + +106  + #WORD_BIT + 16 + + ) + +108 #i +__INT_MAX__ + == 2147483647 + +109  + #WORD_BIT + 32 + + ) + +112  + #WORD_BIT + 64 + + ) + +116  + #WORD_BIT + 32 + + ) + +120 #ifde +LONG_MAX + + +121 #i +LONG_MAX + == 2147483647 + +122  + #LONG_BIT + 32 + + ) + +125  + #LONG_BIT + 64 + + ) + +127 #i +defed + +__LONG_MAX__ + + +128 #i +__LONG_MAX__ + == 2147483647 + +129  + #LONG_BIT + 32 + + ) + +132  + #LONG_BIT + 64 + + ) + +135  + ~ + +136 #i +__WORDSIZE + == 64 + +137  + #LONG_BIT + 64 + + ) + +139  + #LONG_BIT + 32 + + ) + + @/usr/include/gnu/stubs.h + +6 #i! +defed + +__x86_64__ + + +7  + ~ + +9 #i +defed + +__x86_64__ + && defed +__LP64__ + + +10  + ~ + +12 #i +defed + +__x86_64__ + && defed +__ILP32__ + + +13  + ~ + + @/usr/include/linux/errno.h + +1  + ~ + + @/usr/include/linux/limits.h + +1 #ide +_LINUX_LIMITS_H + + +2  + #_LINUX_LIMITS_H + + + ) + +4  + #NR_OPEN + 1024 + + ) + +6  + #NGROUPS_MAX + 65536 + + ) + +7  + #ARG_MAX + 131072 + + ) + +8  + #LINK_MAX + 127 + + ) + +9  + #MAX_CANON + 255 + + ) + +10  + #MAX_INPUT + 255 + + ) + +11  + #NAME_MAX + 255 + + ) + +12  + #PATH_MAX + 4096 + + ) + +13  + #PIPE_BUF + 4096 + + ) + +14  + #XATTR_NAME_MAX + 255 + + ) + +15  + #XATTR_SIZE_MAX + 65536 + + ) + +16  + #XATTR_LIST_MAX + 65536 + + ) + +18  + #RTSIG_MAX + 32 + + ) + + @/usr/include/linux/param.h + +1 #ide +_LINUX_PARAM_H + + +2  + #_LINUX_PARAM_H + + + ) + +4  + ~ + + @/usr/include/stdc-predef.h + +18 #idef +_STDC_PREDEF_H + + +19  + #_STDC_PREDEF_H + 1 + + ) + +36 #ifde +__GCC_IEC_559 + + +37 #i +__GCC_IEC_559 + > 0 + +38  + #__STDC_IEC_559__ + 1 + + ) + +41  + #__STDC_IEC_559__ + 1 + + ) + +44 #ifde +__GCC_IEC_559_COMPLEX + + +45 #i +__GCC_IEC_559_COMPLEX + > 0 + +46  + #__STDC_IEC_559_COMPLEX__ + 1 + + ) + +49  + #__STDC_IEC_559_COMPLEX__ + 1 + + ) + +55  + #__STDC_ISO_10646__ + 201505L + + ) + +58  + #__STDC_NO_THREADS__ + 1 + + ) + + @/usr/include/sys/cdefs.h + +18 #idef +_SYS_CDEFS_H + + +19  + #_SYS_CDEFS_H + 1 + + ) + +22 #ide +_FEATURES_H + + +23  + ~ + +29 #i +defed + +__GNUC__ + && !defed +__STDC__ + + +34 #unde +__P + + +35 #unde +__PMT + + +37 #ifde +__GNUC__ + + +41 #i +__GNUC_PREREQ + (4, 6&& ! +defed + +_LIBC + + +42  + #__LEAF + , +__af__ + + + ) + +43  + #__LEAF_ATTR + + `__ibu__ + (( +__af__ +)) + + ) + +45  + #__LEAF + + + ) + +46  + #__LEAF_ATTR + + + ) + +54 #i! +defed + +__lulus + && +__GNUC_PREREQ + (3, 3) + +55  + #__THROW + + `__ibu__ + (( +__nhrow__ + +__LEAF +)) + + ) + +56  + #__THROWNL + + `__ibu__ + (( +__nhrow__ +)) + + ) + +57  + #__NTH +( +f + + `__ibu__ + (( +__nhrow__ + +__LEAF +) + ) +fct + +59 #i +defed + +__lulus + && +__GNUC_PREREQ + (2,8) + +60  + #__THROW + + `throw + () + + ) + +61  + #__THROWNL + + `throw + () + + ) + +62  + #__NTH +( +f + +__LEAF_ATTR + f + `throw + () + + ) + +64  + #__THROW + + + ) + +65  + #__THROWNL + + + ) + +66  + #__NTH +( +f + + ) +fct + +72  + #__le + + + ) + +74  + #__THROW + + + ) + +75  + #__THROWNL + + + ) + +76  + #__NTH +( +f + + ) +fct + +82  + #__P +( +gs + + ) +args + +83  + #__PMT +( +gs + + ) +args + +88  + #__CONCAT +( +x +, +y +x ## + ) +y + +89  + #__STRING +( +x +#x + + ) + +92  + #__r_t + * + + ) + +93  + #__lg_doub_t +  + + ) + +97 #ifdef +__lulus + + +98  + #__BEGIN_DECLS + "C" { + + ) + +99  + #__END_DECLS + } + + ) + +101  + #__BEGIN_DECLS + + + ) + +102  + #__END_DECLS + + + ) + +111 #i +defed + +__lulus + && defed +_GLIBCPP_USE_NAMESPACES + + +112  + #__BEGIN_NAMESPACE_STD + +mea + +d + { + + ) + +113  + #__END_NAMESPACE_STD + } + + ) + +114  + #__USING_NAMESPACE_STD +( +me + +usg + +d +::me; + + ) + +115  + #__BEGIN_NAMESPACE_C99 + +mea + +__c99 + { + + ) + +116  + #__END_NAMESPACE_C99 + } + + ) + +117  + #__USING_NAMESPACE_C99 +( +me + +usg + +__c99 +::me; + + ) + +122  + #__BEGIN_NAMESPACE_STD + + + ) + +123  + #__END_NAMESPACE_STD + + + ) + +124  + #__USING_NAMESPACE_STD +( +me +) + + ) + +125  + #__BEGIN_NAMESPACE_C99 + + + ) + +126  + #__END_NAMESPACE_C99 + + + ) + +127  + #__USING_NAMESPACE_C99 +( +me +) + + ) + +132  + #__bos +( +r + + `__but_obje_size + (r, +__USE_FORTIFY_LEVEL + > 1) + + ) + +133  + #__bos0 +( +r + + `__but_obje_size + (r, 0) + + ) + +135 #i +__GNUC_PREREQ + (4,3) + +136  + #__wnde +( +me +, +msg +) \ + +137  + `me + ( + `__ibu__ +(( + `__wng__ + ( +msg +))) + + ) + +138  + #__wljr +( +msg + + `__ibu__ +(( + `__wng__ + (msg))) + + ) + +139  + #__rde +( +me +, +msg +) \ + +140  + `me + ( + `__ibu__ +(( + `__r__ + ( +msg +))) + + ) + +142  + #__wnde +( +me +, +msg +  + `me + () + + ) + +143  + #__wljr +( +msg +) + + ) + +144  + #__rde +( +me +, +msg +  + `me + () + + ) + +148 #i +__GNUC_PREREQ + (2,97) + +150  + #__exr + [] + + ) + +152 #ifde +__GNUC__ + + +153  + #__exr + [0] + + ) + +155 #i +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +156  + #__exr + [] + + ) + +159  + #__exr + [1] + + ) + +175 #i +defed + +__GNUC__ + && __GNUC__ >= 2 + +177  + #__REDIRECT +( +me +, +o +, +s +m + `__asm__ + ( + `__ASMNAME + (#s)) + + ) + +178 #ifde +__lulus + + +179  + #__REDIRECT_NTH +( +me +, +o +, +s +) \ + +180 +me + +o + +__THROW + + `__asm__ + ( + `__ASMNAME + (#s)) + + ) + +181  + #__REDIRECT_NTHNL +( +me +, +o +, +s +) \ + +182 +me + +o + +__THROWNL + + `__asm__ + ( + `__ASMNAME + (#s)) + + ) + +184  + #__REDIRECT_NTH +( +me +, +o +, +s +) \ + +185 +me + +o + + `__asm__ + ( + `__ASMNAME + (#s) +__THROW + + + ) + +186  + #__REDIRECT_NTHNL +( +me +, +o +, +s +) \ + +187 +me + +o + + `__asm__ + ( + `__ASMNAME + (#s) +__THROWNL + + + ) + +189  + #__ASMNAME +( +ame + + `__ASMNAME2 + ( +__USER_LABEL_PREFIX__ +, cme) + + ) + +190  + #__ASMNAME2 +( +efix +, +ame + + `__STRING + (efix + ) +cname + +203 #i! +defed + +__GNUC__ + || __GNUC__ < 2 + +204  + #__ibu__ +( +xyz + + + ) + +210 #i +__GNUC_PREREQ + (2,96) + +211  + #__ibu_mloc__ + + `__ibu__ + (( +__mloc__ +)) + + ) + +213  + #__ibu_mloc__ + + + ) + +218 #i +__GNUC_PREREQ + (4, 3) + +219  + #__ibu_loc_size__ +( +ms +) \ + +220 + `__ibu__ + (( +__loc_size__ + +ms +)) + + ) + +222  + #__ibu_loc_size__ +( +ms + + + ) + +228 #i +__GNUC_PREREQ + (2,96) + +229  + #__ibu_pu__ + + `__ibu__ + (( +__pu__ +)) + + ) + +231  + #__ibu_pu__ + + + ) + +235 #i +__GNUC_PREREQ + (2,5) + +236  + #__ibu_cڡ__ + + `__ibu__ + (( +__cڡ__ +)) + + ) + +238  + #__ibu_cڡ__ + + + ) + +244 #i +__GNUC_PREREQ + (3,1) + +245  + #__ibu_ud__ + + `__ibu__ + (( +__ud__ +)) + + ) + +246  + #__ibu_nole__ + + `__ibu__ + (( +__nole__ +)) + + ) + +248  + #__ibu_ud__ + + `__ibu__ + (( +__unud__ +)) + + ) + +249  + #__ibu_nole__ + + + ) + +253 #i +__GNUC_PREREQ + (3,2) + +254  + #__ibu_dd__ + + `__ibu__ + (( +__dd__ +)) + + ) + +256  + #__ibu_dd__ + + + ) + +265 #i +__GNUC_PREREQ + (2,8) + +266  + #__ibu_fm_g__ +( +x + + `__ibu__ + (( + `__fm_g__ + (x))) + + ) + +268  + #__ibu_fm_g__ +( +x + + + ) + +275 #i +__GNUC_PREREQ + (2,97) + +276  + #__ibu_fm_rfm__ +( +a +, +b +) \ + +277 + `__ibu__ + (( + `__fm__ + ( +__rfm__ +, +a +, +b +))) + + ) + +279  + #__ibu_fm_rfm__ +( +a +, +b + + + ) + +284 #i +__GNUC_PREREQ + (3,3) + +285  + #__nnu +( +ms + + `__ibu__ + (( +__nnu__ +ams)) + + ) + +287  + #__nnu +( +ms +) + + ) + +292 #i +__GNUC_PREREQ + (3,4) + +293  + #__ibu_wn_unud_su__ + \ + +294 + `__ibu__ + (( +__wn_unud_su__ +)) + + ) + +295 #i +__USE_FORTIFY_LEVEL + > 0 + +296  + #__wur + +__ibu_wn_unud_su__ + + + ) + +299  + #__ibu_wn_unud_su__ + + + ) + +301 #ide +__wur + + +302  + #__wur + + + ) + +306 #i +__GNUC_PREREQ + (3,2) + +307  + #__ways_le + +__le + + `__ibu__ + (( +__ways_le__ +)) + + ) + +309  + #__ways_le + +__le + + + ) + +314 #i +__GNUC_PREREQ + (4,3) + +315  + #__ibu_tificl__ + + `__ibu__ + (( +__tificl__ +)) + + ) + +317  + #__ibu_tificl__ + + + ) + +329 #i(! +defed + +__lulus + || +__GNUC_PREREQ + (4,3) \ + +330 || ( +defed + +__g__ + && (defed +__GNUC_STDC_INLINE__ + \ + +331 || +defed + +__GNUC_GNU_INLINE__ +))) + +332 #i +defed + +__GNUC_STDC_INLINE__ + || defed +__lulus + + +333  + #__ex_le + +__le + + `__ibu__ + (( +__gnu_le__ +)) + + ) + +334  + #__ex_ways_le + \ + +335 +__ways_le + + `__ibu__ + (( +__gnu_le__ +)) + + ) + +337  + #__ex_le + +__le + + + ) + +338  + #__ex_ways_le + +__ways_le + + + ) + +342 #ifde +__ex_ways_le + + +343  + #__ftify_funi + +__ex_ways_le + +__ibu_tificl__ + + + ) + +348 #i +__GNUC_PREREQ + (4,3) + +349  + #__va_g_ck +( + `__but_va_g_ck + () + + ) + +350  + #__va_g_ck_n +( + `__but_va_g_ck_n + () + + ) + +357 #i! +__GNUC_PREREQ + (2,8) + +358  + #__exnsi__ + + + ) + +362 #i! +__GNUC_PREREQ + (2,92) + +363  + #__ri + + + ) + +369 #i +__GNUC_PREREQ + (3,1&& ! +defed + +__GNUG__ + + +370  + #__ri_r + +__ri + + + ) + +372 #ifde +__GNUC__ + + +373  + #__ri_r + + + ) + +375 #i +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +376  + #__ri_r + +ri + + + ) + +379  + #__ri_r + + + ) + +384 #i +__GNUC__ + >= 3 + +385  + #__glibc_uiky +( +cd + + `__but_ex + ((cd), 0) + + ) + +386  + #__glibc_liky +( +cd + + `__but_ex + ((cd), 1) + + ) + +388  + #__glibc_uiky +( +cd +(cd) + + ) + +389  + #__glibc_liky +( +cd +(cd) + + ) + +392 #i(! +defed + +_Nܑu + \ + +393 && ( +defed + +__STDC_VERSION__ + ? __STDC_VERSION__ : 0) < 201112 \ + +394 && ! + $__GNUC_PREREQ + (4,7)) + +395 #i + `__GNUC_PREREQ + (2,8) + +396  + #_Nܑu + + `__ibu__ + (( +__nܑu__ +)) + + ) + +398  + #_Nܑu + + + ) + +402 #i(! +defed + +_Stic_as + && !defed +__lulus + \ + +403 && ( +defed + +__STDC_VERSION__ + ? __STDC_VERSION__ : 0) < 201112 \ + +404 && (! + `__GNUC_PREREQ + (4, 6|| +defed + +__STRICT_ANSI__ +)) + +405  + #_Stic_as +( +ex +, +dgnoic +) \ + +406 (* + `__Stic_as_funi + ()) \ + +407 [!! (ru {  +__r_if_give +: ( +ex +? 2 : -1; })] + + ) + +410  + ~ + +412 #i +defed + +__LONG_DOUBLE_MATH_OPTIONAL + && defed +__NO_LONG_DOUBLE_MATH + + +413  + #__LDBL_COMPAT + 1 + + ) + +414 #ifde +__REDIRECT + + +415  + #__LDBL_REDIR1 +( +me +, +o +, +s + + `__REDIRECT + (me,ro,ls) + + ) + +416  + #__LDBL_REDIR +( +me +, +o +) \ + +417 + `__LDBL_REDIR1 + ( +me +, +o +, +__dbl_ +##me) + + ) + +418  + #__LDBL_REDIR1_NTH +( +me +, +o +, +s + + `__REDIRECT_NTH + (me,ro,ls) + + ) + +419  + #__LDBL_REDIR_NTH +( +me +, +o +) \ + +420 + `__LDBL_REDIR1_NTH + ( +me +, +o +, +__dbl_ +##me) + + ) + +421  + #__LDBL_REDIR1_DECL +( +me +, +s +) \ + +422 + `__tyof + ( +me +m + `__asm + ( + `__ASMNAME + (#s)); + + ) + +423  + #__LDBL_REDIR_DECL +( +me +) \ + +424 + `__tyof + ( +me +m + `__asm + ( + `__ASMNAME + ("__dbl_" #me)); + + ) + +425  + #__REDIRECT_LDBL +( +me +, +o +, +s +) \ + +426 + `__LDBL_REDIR1 + ( +me +, +o +, +__dbl_ +## +s +) + + ) + +427  + #__REDIRECT_NTH_LDBL +( +me +, +o +, +s +) \ + +428 + `__LDBL_REDIR1_NTH + ( +me +, +o +, +__dbl_ +## +s +) + + ) + +431 #i! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT + + +432  + #__LDBL_REDIR1 +( +me +, +o +, +s +m + ) +proto + +433  + #__LDBL_REDIR +( +me +, +o +m + ) +proto + +434  + #__LDBL_REDIR1_NTH +( +me +, +o +, +s +m +__THROW + + + ) + +435  + #__LDBL_REDIR_NTH +( +me +, +o +m +__THROW + + + ) + +436  + #__LDBL_REDIR_DECL +( +me +) + + ) + +437 #ifde +__REDIRECT + + +438  + #__REDIRECT_LDBL +( +me +, +o +, +s + + `__REDIRECT + (me,ro,ls) + + ) + +439  + #__REDIRECT_NTH_LDBL +( +me +, +o +, +s +) \ + +440 + `__REDIRECT_NTH + ( +me +, +o +, +s +) + + ) + + @/usr/include/asm-generic/socket.h + +1 #ide +__ASM_GENERIC_SOCKET_H + + +2  + #__ASM_GENERIC_SOCKET_H + + + ) + +4  + ~ + +7  + #SOL_SOCKET + 1 + + ) + +9  + #SO_DEBUG + 1 + + ) + +10  + #SO_REUSEADDR + 2 + + ) + +11  + #SO_TYPE + 3 + + ) + +12  + #SO_ERROR + 4 + + ) + +13  + #SO_DONTROUTE + 5 + + ) + +14  + #SO_BROADCAST + 6 + + ) + +15  + #SO_SNDBUF + 7 + + ) + +16  + #SO_RCVBUF + 8 + + ) + +17  + #SO_SNDBUFFORCE + 32 + + ) + +18  + #SO_RCVBUFFORCE + 33 + + ) + +19  + #SO_KEEPALIVE + 9 + + ) + +20  + #SO_OOBINLINE + 10 + + ) + +21  + #SO_NO_CHECK + 11 + + ) + +22  + #SO_PRIORITY + 12 + + ) + +23  + #SO_LINGER + 13 + + ) + +24  + #SO_BSDCOMPAT + 14 + + ) + +25  + #SO_REUSEPORT + 15 + + ) + +26 #ide +SO_PASSCRED + + +27  + #SO_PASSCRED + 16 + + ) + +28  + #SO_PEERCRED + 17 + + ) + +29  + #SO_RCVLOWAT + 18 + + ) + +30  + #SO_SNDLOWAT + 19 + + ) + +31  + #SO_RCVTIMEO + 20 + + ) + +32  + #SO_SNDTIMEO + 21 + + ) + +36  + #SO_SECURITY_AUTHENTICATION + 22 + + ) + +37  + #SO_SECURITY_ENCRYPTION_TRANSPORT + 23 + + ) + +38  + #SO_SECURITY_ENCRYPTION_NETWORK + 24 + + ) + +40  + #SO_BINDTODEVICE + 25 + + ) + +43  + #SO_ATTACH_FILTER + 26 + + ) + +44  + #SO_DETACH_FILTER + 27 + + ) + +45  + #SO_GET_FILTER + +SO_ATTACH_FILTER + + + ) + +47  + #SO_PEERNAME + 28 + + ) + +48  + #SO_TIMESTAMP + 29 + + ) + +49  + #SCM_TIMESTAMP + +SO_TIMESTAMP + + + ) + +51  + #SO_ACCEPTCONN + 30 + + ) + +53  + #SO_PEERSEC + 31 + + ) + +54  + #SO_PASSSEC + 34 + + ) + +55  + #SO_TIMESTAMPNS + 35 + + ) + +56  + #SCM_TIMESTAMPNS + +SO_TIMESTAMPNS + + + ) + +58  + #SO_MARK + 36 + + ) + +60  + #SO_TIMESTAMPING + 37 + + ) + +61  + #SCM_TIMESTAMPING + +SO_TIMESTAMPING + + + ) + +63  + #SO_PROTOCOL + 38 + + ) + +64  + #SO_DOMAIN + 39 + + ) + +66  + #SO_RXQ_OVFL + 40 + + ) + +68  + #SO_WIFI_STATUS + 41 + + ) + +69  + #SCM_WIFI_STATUS + +SO_WIFI_STATUS + + + ) + +70  + #SO_PEEK_OFF + 42 + + ) + +73  + #SO_NOFCS + 43 + + ) + +75  + #SO_LOCK_FILTER + 44 + + ) + +77  + #SO_SELECT_ERR_QUEUE + 45 + + ) + +79  + #SO_BUSY_POLL + 46 + + ) + +81  + #SO_MAX_PACING_RATE + 47 + + ) + +83  + #SO_BPF_EXTENSIONS + 48 + + ) + +85  + #SO_INCOMING_CPU + 49 + + ) + +87  + #SO_ATTACH_BPF + 50 + + ) + +88  + #SO_DETACH_BPF + +SO_DETACH_FILTER + + + ) + + @/usr/include/asm/errno.h + +1  + ~ + + @/usr/include/asm/param.h + +1  + ~ + + @/usr/include/bits/local_lim.h + +24 #ide +NR_OPEN + + +25  + #__undef_NR_OPEN + + + ) + +27 #ide +LINK_MAX + + +28  + #__undef_LINK_MAX + + + ) + +30 #ide +OPEN_MAX + + +31  + #__undef_OPEN_MAX + + + ) + +33 #ide +ARG_MAX + + +34  + #__undef_ARG_MAX + + + ) + +38  + ~ + +41 #ifde +__undef_NR_OPEN + + +42 #unde +NR_OPEN + + +43 #unde +__undef_NR_OPEN + + +46 #ifde +__undef_LINK_MAX + + +47 #unde +LINK_MAX + + +48 #unde +__undef_LINK_MAX + + +51 #ifde +__undef_OPEN_MAX + + +52 #unde +OPEN_MAX + + +53 #unde +__undef_OPEN_MAX + + +56 #ifde +__undef_ARG_MAX + + +57 #unde +ARG_MAX + + +58 #unde +__undef_ARG_MAX + + +62  + #_POSIX_THREAD_KEYS_MAX + 128 + + ) + +64  + #PTHREAD_KEYS_MAX + 1024 + + ) + +67  + #_POSIX_THREAD_DESTRUCTOR_ITERATIONS + 4 + + ) + +69  + #PTHREAD_DESTRUCTOR_ITERATIONS + +_POSIX_THREAD_DESTRUCTOR_ITERATIONS + + + ) + +72  + #_POSIX_THREAD_THREADS_MAX + 64 + + ) + +74 #unde +PTHREAD_THREADS_MAX + + +78  + #AIO_PRIO_DELTA_MAX + 20 + + ) + +81  + #PTHREAD_STACK_MIN + 16384 + + ) + +84  + #DELAYTIMER_MAX + 2147483647 + + ) + +87  + #TTY_NAME_MAX + 32 + + ) + +90  + #LOGIN_NAME_MAX + 256 + + ) + +93  + #HOST_NAME_MAX + 64 + + ) + +96  + #MQ_PRIO_MAX + 32768 + + ) + +99  + #SEM_VALUE_MAX + (2147483647) + + ) + + @/usr/include/gconv.h + +22 #ide +_GCONV_H + + +23  + #_GCONV_H + 1 + + ) + +25  + ~ + +26  + #__ed_mbe_t + + + ) + +27  + #__ed_wt_t + + + ) + +28  + ~ + +29  + #__ed_size_t + + + ) + +30  + #__ed_wch_t + + + ) + +31  + ~ + +34  + #__UNKNOWN_10646_CHAR + (( +wch_t +0xfffd) + + ) + +39 + m__GCONV_OK + = 0, + +40 + m__GCONV_NOCONV +, + +41 + m__GCONV_NODB +, + +42 + m__GCONV_NOMEM +, + +44 + m__GCONV_EMPTY_INPUT +, + +45 + m__GCONV_FULL_OUTPUT +, + +46 + m__GCONV_ILLEGAL_INPUT +, + +47 + m__GCONV_INCOMPLETE_INPUT +, + +49 + m__GCONV_ILLEGAL_DESCRIPTOR +, + +50 + m__GCONV_INTERNAL_ERROR + + +57 + m__GCONV_IS_LAST + = 0x0001, + +58 + m__GCONV_IGNORE_ERRORS + = 0x0002, + +59 + m__GCONV_SWAP + = 0x0004, + +60 + m__GCONV_TRANSLIT + = 0x0008 + +65  + g__gcv_ +; + +66  + g__gcv__da +; + +67  + g__gcv_lded_obje +; + +71 (* + t__gcv_f +( + t__gcv_ + *,  + t__gcv__da + *, + +73 **, + tsize_t + *, , ); + +76  + $wt_t + (* + t__gcv_btowc_f +( + t__gcv_ + *, ); + +79 (* + t__gcv__f +( + t__gcv_ + *); + +80 (* + t__gcv_d_f +( + t__gcv_ + *); + +84  + s__gcv_ + + +86  +__gcv_lded_obje + * +__shlib_hd +; + +87 cڡ * +__modme +; + +89  +__cou +; + +91 * +__om_me +; + +92 * +__to_me +; + +94 +__gcv_f + +__f +; + +95 +__gcv_btowc_f + +__btowc_f +; + +96 +__gcv__f + +___f +; + +97 +__gcv_d_f + +__d_f +; + +101  +__m_eded_om +; + +102  +__max_eded_om +; + +103  +__m_eded_to +; + +104  +__max_eded_to +; + +107  +__eful +; + +109 * +__da +; + +114  + s__gcv__da + + +116 * +__outbuf +; + +117 * +__outbund +; + +121  +__ags +; + +125  +__voti_cou +; + +129  +___u +; + +131 +__mbe_t + * +__ +; + +132 +__mbe_t + +__e +; + +138  + s__gcv_fo + + +140 +size_t + +__ns +; + +141  +__gcv_ + * +__s +; + +142 +__exnsi__ +  +__gcv__da + +__da + +__exr +; + +143 } * + t__gcv_t +; + +146  + `__gcv_e + ( +__gcv_ + * + +, + +147  +__gcv__da + * +_da +, + +148 cڡ * +buft +, + +149 cڡ ** +bu +, + +150 cڡ * +bund +, + +151 ** +outbuft +, + +152 +size_t + * +vsib +); + + @/usr/include/gnu/stubs-32.h + +6 #ifde +_LIBC + + +7 #r +Alitis + +may + +n + +defe + +the + +mao + +_LIBC + + +10  + #__ub_chags + + + ) + +11  + #__ub_ach + + + ) + +12  + #__ub_fchags + + + ) + +13  + #__ub_fdach + + + ) + +14  + #__ub_gy + + + ) + +15  + #__ub_lchmod + + + ) + +16  + #__ub_voke + + + ) + +17  + #__ub_og + + + ) + +18  + #__ub_sigtu + + + ) + +19  + #__ub_sk + + + ) + +20  + #__ub_ty + + + ) + + @/usr/include/gnu/stubs-64.h + +6 #ifde +_LIBC + + +7 #r +Alitis + +may + +n + +defe + +the + +mao + +_LIBC + + +10  + #__ub___comt_bdush + + + ) + +11  + #__ub_chags + + + ) + +12  + #__ub_ach + + + ) + +13  + #__ub_fchags + + + ) + +14  + #__ub_fdach + + + ) + +15  + #__ub_gmsg + + + ) + +16  + #__ub_gy + + + ) + +17  + #__ub_lchmod + + + ) + +18  + #__ub_putmsg + + + ) + +19  + #__ub_voke + + + ) + +20  + #__ub_og + + + ) + +21  + #__ub_sigtu + + + ) + +22  + #__ub_sk + + + ) + +23  + #__ub_ty + + + ) + + @/usr/include/gnu/stubs-x32.h + +6 #ifde +_LIBC + + +7 #r +Alitis + +may + +n + +defe + +the + +mao + +_LIBC + + +10  + #__ub___comt_bdush + + + ) + +11  + #__ub___comt__modu + + + ) + +12  + #__ub___comt_g_kl_syms + + + ) + +13  + #__ub___comt_quy_modu + + + ) + +14  + #__ub___comt_ulib + + + ) + +15  + #__ub_chags + + + ) + +16  + #__ub_ach + + + ) + +17  + #__ub_fchags + + + ) + +18  + #__ub_fdach + + + ) + +19  + #__ub_gmsg + + + ) + +20  + #__ub_gy + + + ) + +21  + #__ub_lchmod + + + ) + +22  + #__ub_nfsrvl + + + ) + +23  + #__ub_putmsg + + + ) + +24  + #__ub_voke + + + ) + +25  + #__ub_og + + + ) + +26  + #__ub_sigtu + + + ) + +27  + #__ub_sk + + + ) + +28  + #__ub_ty + + + ) + + @/usr/include/wchar.h + +23 #ide +_WCHAR_H + + +25 #i! +defed + +__ed_mbe_t + && !defed +__ed_wt_t + + +26  + #_WCHAR_H + 1 + + ) + +27  + ~ + +30 #ifde +_WCHAR_H + + +32  + #__ed___FILE + + + ) + +33 #i +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +34  + #__ed_FILE + + + ) + +36  + ~ + +38  + #__ed___va_li + + + ) + +39  + ~ + +41  + ~ + +44  + #__ed_size_t + + + ) + +45  + #__ed_wch_t + + + ) + +46  + #__ed_NULL + + + ) + +48 #i +defed + +_WCHAR_H + || defed +__ed_wt_t + || !defed +__WINT_TYPE__ + + +49 #unde +__ed_wt_t + + +50  + #__ed_wt_t + + + ) + +51  + ~ + +55 #ide +_WINT_T + + +60  + #_WINT_T + + + ) + +61  + twt_t +; + +65 #i +defed + +__lulus + && defed +_GLIBCPP_USE_NAMESPACES + \ + +66 && +defed + +__WINT_TYPE__ + + +67 +__BEGIN_NAMESPACE_STD + + +68  +__WINT_TYPE__ + + twt_t +; + +69 + g__END_NAMESPACE_STD + + +74 #i +defed + +__lulus + && +__GNUC_PREREQ + (4, 4) + +75  + #__CORRECT_ISO_CPP_WCHAR_H_PROTO + + + ) + +79 #i( +defed + +_WCHAR_H + || defed +__ed_mbe_t +&& !defed +____mbe_t_defed + + +80  + #____mbe_t_defed + 1 + + ) + +84  + m__cou +; + +87 #ifde +__WINT_TYPE__ + + +88 +__WINT_TYPE__ + + m__wch +; + +90 +wt_t + + m__wch +; + +92  + m__wchb +[4]; + +93 } + m__vue +; + +94 } + t__mbe_t +; + +96 #unde +__ed_mbe_t + + +101 #ifde +_WCHAR_H + + +103 #ide +__mbe_t_defed + + +104 +__BEGIN_NAMESPACE_C99 + + +106  +__mbe_t + + tmbe_t +; + +107 + g__END_NAMESPACE_C99 + + +108  + #__mbe_t_defed + 1 + + ) + +111 #ifde +__USE_GNU + + +112 + $__USING_NAMESPACE_C99 +( +mbe_t +) + +115 #ide +WCHAR_MIN + + +117  + #WCHAR_MIN + +__WCHAR_MIN + + + ) + +118  + #WCHAR_MAX + +__WCHAR_MAX + + + ) + +121 #ide +WEOF + + +122  + #WEOF + (0xffffffffu) + + ) + +127 #i +defed + +__USE_XOPEN + && !defed +__USE_UNIX98 + + +128  + ~ + +132 +__BEGIN_DECLS + + +134 +__BEGIN_NAMESPACE_STD + + +137  +tm +; + +138 +__END_NAMESPACE_STD + + +142 + $__USING_NAMESPACE_STD +( +tm +) + +145 +__BEGIN_NAMESPACE_STD + + +147 +wch_t + * + $wcsy + ( +wch_t + * +__ri + +__de +, + +148 cڡ +wch_t + * +__ri + +__c +) + +149 +__THROW + + `__nnu + ((1, 2)); + +152 +wch_t + * + $wcy + ( +wch_t + * +__ri + +__de +, + +153 cڡ +wch_t + * +__ri + +__c +, +size_t + +__n +) + +154 +__THROW + + `__nnu + ((1, 2)); + +157 +wch_t + * + $wcst + ( +wch_t + * +__ri + +__de +, + +158 cڡ +wch_t + * +__ri + +__c +) + +159 +__THROW + + `__nnu + ((1, 2)); + +161 +wch_t + * + $wct + ( +wch_t + * +__ri + +__de +, + +162 cڡ +wch_t + * +__ri + +__c +, +size_t + +__n +) + +163 +__THROW + + `__nnu + ((1, 2)); + +166  + $wcscmp + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +) + +167 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +169  + $wccmp + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, +size_t + +__n +) + +170 +__THROW + +__ibu_pu__ + + `__nnu + ((1, 2)); + +171 +__END_NAMESPACE_STD + + +173 #ifde +__USE_XOPEN2K8 + + +175  + $wcscmp + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 + +__THROW +; + +178  + $wccmp + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +179 +size_t + +__n + +__THROW +; + +183  + ~ + +185  + $wcscmp_l + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +186 +__lo_t + +__loc + +__THROW +; + +188  + $wccmp_l + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +189 +size_t + +__n +, +__lo_t + +__loc + +__THROW +; + +192 +__BEGIN_NAMESPACE_STD + + +195  + $wcscl + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 + +__THROW +; + +199 +size_t + + $wcsxm + ( +wch_t + * +__ri + +__s1 +, + +200 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n + +__THROW +; + +201 +__END_NAMESPACE_STD + + +203 #ifde +__USE_XOPEN2K8 + + +209  + $wcscl_l + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +210 +__lo_t + +__loc + +__THROW +; + +215 +size_t + + $wcsxm_l + ( +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +216 +size_t + +__n +, +__lo_t + +__loc + +__THROW +; + +219 +wch_t + * + $wcsdup + (cڡ +wch_t + * +__s + +__THROW + +__ibu_mloc__ +; + +222 +__BEGIN_NAMESPACE_STD + + +224 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +225 "C++" +wch_t + * + $wcschr + ( +wch_t + * +__wcs +, wch_ +__wc +) + +226 +__THROW + + `__asm + ("wcschr" +__ibu_pu__ +; + +227 "C++" cڡ +wch_t + * + $wcschr + (cڡ +wch_t + * +__wcs +, wch_ +__wc +) + +228 +__THROW + + `__asm + ("wcschr" +__ibu_pu__ +; + +230 +wch_t + * + $wcschr + (cڡ +wch_t + * +__wcs +, wch_ +__wc +) + +231 +__THROW + +__ibu_pu__ +; + +234 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +235 "C++" +wch_t + * + $wcchr + ( +wch_t + * +__wcs +, wch_ +__wc +) + +236 +__THROW + + `__asm + ("wcchr" +__ibu_pu__ +; + +237 "C++" cڡ +wch_t + * + $wcchr + (cڡ +wch_t + * +__wcs +, wch_ +__wc +) + +238 +__THROW + + `__asm + ("wcchr" +__ibu_pu__ +; + +240 +wch_t + * + $wcchr + (cڡ +wch_t + * +__wcs +, wch_ +__wc +) + +241 +__THROW + +__ibu_pu__ +; + +243 +__END_NAMESPACE_STD + + +245 #ifde +__USE_GNU + + +248 +wch_t + * + $wcschul + (cڡ +wch_t + * +__s +, wch_ +__wc +) + +249 +__THROW + +__ibu_pu__ +; + +252 +__BEGIN_NAMESPACE_STD + + +255 +size_t + + $wcscn + (cڡ +wch_t + * +__wcs +, cڡ wch_* +__je +) + +256 +__THROW + +__ibu_pu__ +; + +259 +size_t + + $wcsn + (cڡ +wch_t + * +__wcs +, cڡ wch_* +__ac +) + +260 +__THROW + +__ibu_pu__ +; + +262 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +263 "C++" +wch_t + * + $wcbrk + ( +wch_t + * +__wcs +, cڡ wch_* +__ac +) + +264 +__THROW + + `__asm + ("wcbrk" +__ibu_pu__ +; + +265 "C++" cڡ +wch_t + * + $wcbrk + (cڡ +wch_t + * +__wcs +, + +266 cڡ +wch_t + * +__ac +) + +267 +__THROW + + `__asm + ("wcbrk" +__ibu_pu__ +; + +269 +wch_t + * + $wcbrk + (cڡ +wch_t + * +__wcs +, cڡ wch_* +__ac +) + +270 +__THROW + +__ibu_pu__ +; + +273 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +274 "C++" +wch_t + * + $wcsr + ( +wch_t + * +__hayack +, cڡ wch_* +__ed +) + +275 +__THROW + + `__asm + ("wcsr" +__ibu_pu__ +; + +276 "C++" cڡ +wch_t + * + $wcsr + (cڡ +wch_t + * +__hayack +, + +277 cڡ +wch_t + * +__ed +) + +278 +__THROW + + `__asm + ("wcsr" +__ibu_pu__ +; + +280 +wch_t + * + $wcsr + (cڡ +wch_t + * +__hayack +, cڡ wch_* +__ed +) + +281 +__THROW + +__ibu_pu__ +; + +285 +wch_t + * + $wcok + ( +wch_t + * +__ri + +__s +, + +286 cڡ +wch_t + * +__ri + +__dim +, + +287 +wch_t + ** +__ri + +__r + +__THROW +; + +290 +size_t + + $wc + (cڡ +wch_t + * +__s + +__THROW + +__ibu_pu__ +; + +291 +__END_NAMESPACE_STD + + +293 #ifde +__USE_XOPEN + + +295 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +296 "C++" +wch_t + * + $wcswcs + ( +wch_t + * +__hayack +, cڡ wch_* +__ed +) + +297 +__THROW + + `__asm + ("wcswcs" +__ibu_pu__ +; + +298 "C++" cڡ +wch_t + * + $wcswcs + (cڡ +wch_t + * +__hayack +, + +299 cڡ +wch_t + * +__ed +) + +300 +__THROW + + `__asm + ("wcswcs" +__ibu_pu__ +; + +302 +wch_t + * + $wcswcs + (cڡ +wch_t + * +__hayack +, cڡ wch_* +__ed +) + +303 +__THROW + +__ibu_pu__ +; + +307 #ifde +__USE_XOPEN2K8 + + +309 +size_t + + $wcn + (cڡ +wch_t + * +__s +, +size_t + +__maxn +) + +310 +__THROW + +__ibu_pu__ +; + +314 +__BEGIN_NAMESPACE_STD + + +316 #ifde +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +317 "C++" +wch_t + * + $wmemchr + ( +wch_t + * +__s +, wch_ +__c +, +size_t + +__n +) + +318 +__THROW + + `__asm + ("wmemchr" +__ibu_pu__ +; + +319 "C++" cڡ +wch_t + * + $wmemchr + (cڡ +wch_t + * +__s +, wch_ +__c +, + +320 +size_t + +__n +) + +321 +__THROW + + `__asm + ("wmemchr" +__ibu_pu__ +; + +323 +wch_t + * + $wmemchr + (cڡ +wch_t + * +__s +, wch_ +__c +, +size_t + +__n +) + +324 +__THROW + +__ibu_pu__ +; + +328  + $wmemcmp + (cڡ +wch_t + * +__s1 +, cڡ wch_* +__s2 +, +size_t + +__n +) + +329 +__THROW + +__ibu_pu__ +; + +332 +wch_t + * + $wmemy + ( +wch_t + * +__ri + +__s1 +, + +333 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n + +__THROW +; + +337 +wch_t + * + $wmemmove + ( +wch_t + * +__s1 +, cڡ wch_* +__s2 +, +size_t + +__n +) + +338 +__THROW +; + +341 +wch_t + * + $wmemt + ( +wch_t + * +__s +, wch_ +__c +, +size_t + +__n + +__THROW +; + +342 +__END_NAMESPACE_STD + + +344 #ifde +__USE_GNU + + +347 +wch_t + * + $wmempy + ( +wch_t + * +__ri + +__s1 +, + +348 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +) + +349 +__THROW +; + +353 +__BEGIN_NAMESPACE_STD + + +356 +wt_t + + $btowc + ( +__c + +__THROW +; + +360  + $wob + ( +wt_t + +__c + +__THROW +; + +364  + $mbs + (cڡ +mbe_t + * +__ps + +__THROW + +__ibu_pu__ +; + +368 +size_t + + $mbowc + ( +wch_t + * +__ri + +__pwc +, + +369 cڡ * +__ri + +__s +, +size_t + +__n +, + +370 +mbe_t + * +__ri + +__p + +__THROW +; + +373 +size_t + + $wtomb + (* +__ri + +__s +, +wch_t + +__wc +, + +374 +mbe_t + * +__ri + +__ps + +__THROW +; + +377 +size_t + + $__mb + (cڡ * +__ri + +__s +, +size_t + +__n +, + +378 +mbe_t + * +__ri + +__ps + +__THROW +; + +379 +size_t + + $mb + (cڡ * +__ri + +__s +, +size_t + +__n +, + +380 +mbe_t + * +__ri + +__ps + +__THROW +; + +381 +__END_NAMESPACE_STD + + +383 #ifde +__USE_EXTERN_INLINES + + +389 +wt_t + + $__btowc_s + ( +__c + + `__asm + ("btowc"); + +390 +__ex_le + +wt_t + + +391 + `__NTH + ( + $btowc + ( +__c +)) + +392 {  ( + `__but_cڡt_p + ( +__c +) && __c >= '\0' && __c <= '\x7f' + +393 ? ( +wt_t + +__c + : + `__btowc_s + (__c)); + } +} + +395  + $__wob_s + ( +wt_t + +__c + + `__asm + ("wctob"); + +396 +__ex_le +  + +397 + `__NTH + ( + $wob + ( +wt_t + +__wc +)) + +398 {  ( + `__but_cڡt_p + ( +__wc +&& __w> +L +'\0' && __wc <= L'\x7f' + +399 ? ( +__wc + : + `__wob_s + (__wc)); + } +} + +401 +__ex_le + +size_t + + +402 +__NTH + ( + $mb + (cڡ * +__ri + +__s +, +size_t + +__n +, + +403 +mbe_t + * +__ri + +__ps +)) + +404 {  ( +__ps + ! +NULL + + +405 ? + `mbowc + ( +NULL +, +__s +, +__n +, +__ps +: + `__mb + (__s, __n, NULL)); + } +} + +408 +__BEGIN_NAMESPACE_STD + + +411 +size_t + + $mbtowcs + ( +wch_t + * +__ri + +__d +, + +412 cڡ ** +__ri + +__c +, +size_t + +__n +, + +413 +mbe_t + * +__ri + +__ps + +__THROW +; + +417 +size_t + + $wctombs + (* +__ri + +__d +, + +418 cڡ +wch_t + ** +__ri + +__c +, +size_t + +__n +, + +419 +mbe_t + * +__ri + +__ps + +__THROW +; + +420 +__END_NAMESPACE_STD + + +423 #ifdef +__USE_XOPEN2K8 + + +426 +size_t + + $mbowcs + ( +wch_t + * +__ri + +__d +, + +427 cڡ ** +__ri + +__c +, +size_t + +__nmc +, + +428 +size_t + +__n +, +mbe_t + * +__ri + +__ps + +__THROW +; + +432 +size_t + + $wcombs + (* +__ri + +__d +, + +433 cڡ +wch_t + ** +__ri + +__c +, + +434 +size_t + +__nwc +, size_ +__n +, + +435 +mbe_t + * +__ri + +__ps + +__THROW +; + +440 #ifde +__USE_XOPEN + + +442  + $wcwidth + ( +wch_t + +__c + +__THROW +; + +446  + $wcswidth + (cڡ +wch_t + * +__s +, +size_t + +__n + +__THROW +; + +450 +__BEGIN_NAMESPACE_STD + + +453  + $wcod + (cڡ +wch_t + * +__ri + +__Ō +, + +454 +wch_t + ** +__ri + +__dr + +__THROW +; + +455 +__END_NAMESPACE_STD + + +457 #ifde +__USE_ISOC99 + + +458 +__BEGIN_NAMESPACE_C99 + + +460  + $wcof + (cڡ +wch_t + * +__ri + +__Ō +, + +461 +wch_t + ** +__ri + +__dr + +__THROW +; + +462  + $wcd + (cڡ +wch_t + * +__ri + +__Ō +, + +463 +wch_t + ** +__ri + +__dr + +__THROW +; + +464 +__END_NAMESPACE_C99 + + +468 +__BEGIN_NAMESPACE_STD + + +471  + $wc + (cڡ +wch_t + * +__ri + +__Ō +, + +472 +wch_t + ** +__ri + +__dr +,  +__ba + +__THROW +; + +476  + $wcoul + (cڡ +wch_t + * +__ri + +__Ō +, + +477 +wch_t + ** +__ri + +__dr +,  +__ba +) + +478 +__THROW +; + +479 +__END_NAMESPACE_STD + + +481 #ifde +__USE_ISOC99 + + +482 +__BEGIN_NAMESPACE_C99 + + +485 +__exnsi__ + + +486  + $wcl + (cڡ +wch_t + * +__ri + +__Ō +, + +487 +wch_t + ** +__ri + +__dr +,  +__ba +) + +488 +__THROW +; + +492 +__exnsi__ + + +493  + $wcou + (cڡ +wch_t + * +__ri + +__Ō +, + +494 +wch_t + ** +__ri + +__dr +, + +495  +__ba + +__THROW +; + +496 +__END_NAMESPACE_C99 + + +499 #ifde +__USE_GNU + + +502 +__exnsi__ + + +503  + $wcoq + (cڡ +wch_t + * +__ri + +__Ō +, + +504 +wch_t + ** +__ri + +__dr +,  +__ba +) + +505 +__THROW +; + +509 +__exnsi__ + + +510  + $wcouq + (cڡ +wch_t + * +__ri + +__Ō +, + +511 +wch_t + ** +__ri + +__dr +, + +512  +__ba + +__THROW +; + +515 #ifde +__USE_GNU + + +529  + ~ + +533  + $wc_l + (cڡ +wch_t + * +__ri + +__Ō +, + +534 +wch_t + ** +__ri + +__dr +,  +__ba +, + +535 +__lo_t + +__loc + +__THROW +; + +537  + $wcoul_l + (cڡ +wch_t + * +__ri + +__Ō +, + +538 +wch_t + ** +__ri + +__dr +, + +539  +__ba +, +__lo_t + +__loc + +__THROW +; + +541 +__exnsi__ + + +542  + $wcl_l + (cڡ +wch_t + * +__ri + +__Ō +, + +543 +wch_t + ** +__ri + +__dr +, + +544  +__ba +, +__lo_t + +__loc + +__THROW +; + +546 +__exnsi__ + + +547  + $wcou_l + (cڡ +wch_t + * +__ri + +__Ō +, + +548 +wch_t + ** +__ri + +__dr +, + +549  +__ba +, +__lo_t + +__loc +) + +550 +__THROW +; + +552  + $wcod_l + (cڡ +wch_t + * +__ri + +__Ō +, + +553 +wch_t + ** +__ri + +__dr +, +__lo_t + +__loc +) + +554 +__THROW +; + +556  + $wcof_l + (cڡ +wch_t + * +__ri + +__Ō +, + +557 +wch_t + ** +__ri + +__dr +, +__lo_t + +__loc +) + +558 +__THROW +; + +560  + $wcd_l + (cڡ +wch_t + * +__ri + +__Ō +, + +561 +wch_t + ** +__ri + +__dr +, + +562 +__lo_t + +__loc + +__THROW +; + +566 #ifde +__USE_XOPEN2K8 + + +569 +wch_t + * + $wy + ( +wch_t + * +__ri + +__de +, + +570 cڡ +wch_t + * +__ri + +__c + +__THROW +; + +574 +wch_t + * + $wny + ( +wch_t + * +__ri + +__de +, + +575 cڡ +wch_t + * +__ri + +__c +, +size_t + +__n +) + +576 +__THROW +; + +583 +__FILE + * + $ݒ_wmemam + ( +wch_t + ** +__buoc +, +size_t + * +__sizoc + +__THROW +; + +586 #i +defed + +__USE_ISOC95 + || defed +__USE_UNIX98 + + +587 +__BEGIN_NAMESPACE_STD + + +590  + $fwide + ( +__FILE + * +__ +,  +__mode + +__THROW +; + +597  + `fwtf + ( +__FILE + * +__ri + +__am +, + +598 cڡ +wch_t + * +__ri + +__fm +, ...) + +604  + `wtf + (cڡ +wch_t + * +__ri + +__fm +, ...) + +607  + $swtf + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +608 cڡ +wch_t + * +__ri + +__fm +, ...) + +609 +__THROW + ; + +615  + `vfwtf + ( +__FILE + * +__ri + +__s +, + +616 cڡ +wch_t + * +__ri + +__fm +, + +617 +__gnuc_va_li + +__g +) + +623  + `vwtf + (cڡ +wch_t + * +__ri + +__fm +, + +624 +__gnuc_va_li + +__g +) + +628  + $vswtf + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +629 cڡ +wch_t + * +__ri + +__fm +, + +630 +__gnuc_va_li + +__g +) + +631 +__THROW + ; + +638  + `fwsnf + ( +__FILE + * +__ri + +__am +, + +639 cڡ +wch_t + * +__ri + +__fm +, ...) + +645  + `wsnf + (cڡ +wch_t + * +__ri + +__fm +, ...) + +648  + $swsnf + (cڡ +wch_t + * +__ri + +__s +, + +649 cڡ +wch_t + * +__ri + +__fm +, ...) + +650 +__THROW + ; + +652 #i +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +653 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +654 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +655 #ifde +__REDIRECT + + +659  + `__REDIRECT + ( +fwsnf +, ( +__FILE + * +__ri + +__am +, + +660 cڡ +wch_t + * +__ri + +__fm +, ...), + +661 +__isoc99_fwsnf +) + +663  + `__REDIRECT + ( +wsnf +, (cڡ +wch_t + * +__ri + +__fm +, ...), + +664 +__isoc99_wsnf +) + +666  + `__REDIRECT_NTH + ( +swsnf +, (cڡ +wch_t + * +__ri + +__s +, + +667 cڡ +wch_t + * +__ri + +__fm +, + +668 ...), +__isoc99_swsnf +) + +671  + `__isoc99_fwsnf + ( +__FILE + * +__ri + +__am +, + +672 cڡ +wch_t + * +__ri + +__fm +, ...); + +673  + `__isoc99_wsnf + (cڡ +wch_t + * +__ri + +__fm +, ...); + +674  + $__isoc99_swsnf + (cڡ +wch_t + * +__ri + +__s +, + +675 cڡ +wch_t + * +__ri + +__fm +, ...) + +676 +__THROW +; + +677  + #fwsnf + +__isoc99_fwsnf + + + ) + +678  + #wsnf + +__isoc99_wsnf + + + ) + +679  + #swsnf + +__isoc99_swsnf + + + ) + +683 +__END_NAMESPACE_STD + + +686 #ifde +__USE_ISOC99 + + +687 +__BEGIN_NAMESPACE_C99 + + +692  + `vfwsnf + ( +__FILE + * +__ri + +__s +, + +693 cڡ +wch_t + * +__ri + +__fm +, + +694 +__gnuc_va_li + +__g +) + +700  + `vwsnf + (cڡ +wch_t + * +__ri + +__fm +, + +701 +__gnuc_va_li + +__g +) + +704  + $vswsnf + (cڡ +wch_t + * +__ri + +__s +, + +705 cڡ +wch_t + * +__ri + +__fm +, + +706 +__gnuc_va_li + +__g +) + +707 +__THROW + ; + +709 #i! +defed + +__USE_GNU + \ + +710 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +711 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +712 #ifde +__REDIRECT + + +713  + `__REDIRECT + ( +vfwsnf +, ( +__FILE + * +__ri + +__s +, + +714 cڡ +wch_t + * +__ri + +__fm +, + +715 +__gnuc_va_li + +__g +), +__isoc99_vfwsnf +) + +717  + `__REDIRECT + ( +vwsnf +, (cڡ +wch_t + * +__ri + +__fm +, + +718 +__gnuc_va_li + +__g +), +__isoc99_vwsnf +) + +720  + `__REDIRECT_NTH + ( +vswsnf +, (cڡ +wch_t + * +__ri + +__s +, + +721 cڡ +wch_t + * +__ri + +__fm +, + +722 +__gnuc_va_li + +__g +), +__isoc99_vswsnf +) + +725  + `__isoc99_vfwsnf + ( +__FILE + * +__ri + +__s +, + +726 cڡ +wch_t + * +__ri + +__fm +, + +727 +__gnuc_va_li + +__g +); + +728  + `__isoc99_vwsnf + (cڡ +wch_t + * +__ri + +__fm +, + +729 +__gnuc_va_li + +__g +); + +730  + $__isoc99_vswsnf + (cڡ +wch_t + * +__ri + +__s +, + +731 cڡ +wch_t + * +__ri + +__fm +, + +732 +__gnuc_va_li + +__g + +__THROW +; + +733  + #vfwsnf + +__isoc99_vfwsnf + + + ) + +734  + #vwsnf + +__isoc99_vwsnf + + + ) + +735  + #vswsnf + +__isoc99_vswsnf + + + ) + +739 +__END_NAMESPACE_C99 + + +743 +__BEGIN_NAMESPACE_STD + + +748 +wt_t + + `fgwc + ( +__FILE + * +__am +); + +749 +wt_t + + `gwc + ( +__FILE + * +__am +); + +755 +wt_t + + `gwch + (); + +762 +wt_t + + `utwc + ( +wch_t + +__wc +, +__FILE + * +__am +); + +763 +wt_t + + `putwc + ( +wch_t + +__wc +, +__FILE + * +__am +); + +769 +wt_t + + `putwch + ( +wch_t + +__wc +); + +777 +wch_t + * + `fgws + (wch_* +__ri + +__ws +,  +__n +, + +778 +__FILE + * +__ri + +__am +); + +784  + `utws + (cڡ +wch_t + * +__ri + +__ws +, + +785 +__FILE + * +__ri + +__am +); + +792 +wt_t + + `ungwc + (wt_ +__wc +, +__FILE + * +__am +); + +793 +__END_NAMESPACE_STD + + +796 #ifde +__USE_GNU + + +804 +wt_t + + `gwc_uocked + ( +__FILE + * +__am +); + +805 +wt_t + + `gwch_uocked + (); + +813 +wt_t + + `fgwc_uocked + ( +__FILE + * +__am +); + +821 +wt_t + + `utwc_uocked + ( +wch_t + +__wc +, +__FILE + * +__am +); + +830 +wt_t + + `putwc_uocked + ( +wch_t + +__wc +, +__FILE + * +__am +); + +831 +wt_t + + `putwch_uocked + ( +wch_t + +__wc +); + +840 +wch_t + * + `fgws_uocked + (wch_* +__ri + +__ws +,  +__n +, + +841 +__FILE + * +__ri + +__am +); + +849  + `utws_uocked + (cڡ +wch_t + * +__ri + +__ws +, + +850 +__FILE + * +__ri + +__am +); + +854 +__BEGIN_NAMESPACE_C99 + + +858 +size_t + + $wcsime + ( +wch_t + * +__ri + +__s +, +size_t + +__maxsize +, + +859 cڡ +wch_t + * +__ri + +__fm +, + +860 cڡ  +tm + * +__ri + +__ + +__THROW +; + +861 +__END_NAMESPACE_C99 + + +863 #ifde +__USE_GNU + + +864  + ~ + +868 +size_t + + $wcsime_l + ( +wch_t + * +__ri + +__s +, +size_t + +__maxsize +, + +869 cڡ +wch_t + * +__ri + +__fm +, + +870 cڡ  +tm + * +__ri + +__ +, + +871 +__lo_t + +__loc + +__THROW +; + +880 #i +defed + +__USE_UNIX98 + && !defed +__USE_GNU + + +881  + #__ed_iswxxx + + + ) + +882  + ~ + +886 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +887  + ~ + +890 #ifde +__LDBL_COMPAT + + +891  + ~ + +894 +__END_DECLS + + +902 #unde +__ed_mbe_t + + +903 #unde +__ed_wt_t + + + @/usr/include/asm-generic/errno.h + +1 #ide +_ASM_GENERIC_ERRNO_H + + +2  + #_ASM_GENERIC_ERRNO_H + + + ) + +4  + ~ + +6  + #EDEADLK + 35 + + ) + +7  + #ENAMETOOLONG + 36 + + ) + +8  + #ENOLCK + 37 + + ) + +17  + #ENOSYS + 38 + + ) + +19  + #ENOTEMPTY + 39 + + ) + +20  + #ELOOP + 40 + + ) + +21  + #EWOULDBLOCK + +EAGAIN + + + ) + +22  + #ENOMSG + 42 + + ) + +23  + #EIDRM + 43 + + ) + +24  + #ECHRNG + 44 + + ) + +25  + #EL2NSYNC + 45 + + ) + +26  + #EL3HLT + 46 + + ) + +27  + #EL3RST + 47 + + ) + +28  + #ELNRNG + 48 + + ) + +29  + #EUNATCH + 49 + + ) + +30  + #ENOCSI + 50 + + ) + +31  + #EL2HLT + 51 + + ) + +32  + #EBADE + 52 + + ) + +33  + #EBADR + 53 + + ) + +34  + #EXFULL + 54 + + ) + +35  + #ENOANO + 55 + + ) + +36  + #EBADRQC + 56 + + ) + +37  + #EBADSLT + 57 + + ) + +39  + #EDEADLOCK + +EDEADLK + + + ) + +41  + #EBFONT + 59 + + ) + +42  + #ENOSTR + 60 + + ) + +43  + #ENODATA + 61 + + ) + +44  + #ETIME + 62 + + ) + +45  + #ENOSR + 63 + + ) + +46  + #ENONET + 64 + + ) + +47  + #ENOPKG + 65 + + ) + +48  + #EREMOTE + 66 + + ) + +49  + #ENOLINK + 67 + + ) + +50  + #EADV + 68 + + ) + +51  + #ESRMNT + 69 + + ) + +52  + #ECOMM + 70 + + ) + +53  + #EPROTO + 71 + + ) + +54  + #EMULTIHOP + 72 + + ) + +55  + #EDOTDOT + 73 + + ) + +56  + #EBADMSG + 74 + + ) + +57  + #EOVERFLOW + 75 + + ) + +58  + #ENOTUNIQ + 76 + + ) + +59  + #EBADFD + 77 + + ) + +60  + #EREMCHG + 78 + + ) + +61  + #ELIBACC + 79 + + ) + +62  + #ELIBBAD + 80 + + ) + +63  + #ELIBSCN + 81 + + ) + +64  + #ELIBMAX + 82 + + ) + +65  + #ELIBEXEC + 83 + + ) + +66  + #EILSEQ + 84 + + ) + +67  + #ERESTART + 85 + + ) + +68  + #ESTRPIPE + 86 + + ) + +69  + #EUSERS + 87 + + ) + +70  + #ENOTSOCK + 88 + + ) + +71  + #EDESTADDRREQ + 89 + + ) + +72  + #EMSGSIZE + 90 + + ) + +73  + #EPROTOTYPE + 91 + + ) + +74  + #ENOPROTOOPT + 92 + + ) + +75  + #EPROTONOSUPPORT + 93 + + ) + +76  + #ESOCKTNOSUPPORT + 94 + + ) + +77  + #EOPNOTSUPP + 95 + + ) + +78  + #EPFNOSUPPORT + 96 + + ) + +79  + #EAFNOSUPPORT + 97 + + ) + +80  + #EADDRINUSE + 98 + + ) + +81  + #EADDRNOTAVAIL + 99 + + ) + +82  + #ENETDOWN + 100 + + ) + +83  + #ENETUNREACH + 101 + + ) + +84  + #ENETRESET + 102 + + ) + +85  + #ECONNABORTED + 103 + + ) + +86  + #ECONNRESET + 104 + + ) + +87  + #ENOBUFS + 105 + + ) + +88  + #EISCONN + 106 + + ) + +89  + #ENOTCONN + 107 + + ) + +90  + #ESHUTDOWN + 108 + + ) + +91  + #ETOOMANYREFS + 109 + + ) + +92  + #ETIMEDOUT + 110 + + ) + +93  + #ECONNREFUSED + 111 + + ) + +94  + #EHOSTDOWN + 112 + + ) + +95  + #EHOSTUNREACH + 113 + + ) + +96  + #EALREADY + 114 + + ) + +97  + #EINPROGRESS + 115 + + ) + +98  + #ESTALE + 116 + + ) + +99  + #EUCLEAN + 117 + + ) + +100  + #ENOTNAM + 118 + + ) + +101  + #ENAVAIL + 119 + + ) + +102  + #EISNAM + 120 + + ) + +103  + #EREMOTEIO + 121 + + ) + +104  + #EDQUOT + 122 + + ) + +106  + #ENOMEDIUM + 123 + + ) + +107  + #EMEDIUMTYPE + 124 + + ) + +108  + #ECANCELED + 125 + + ) + +109  + #ENOKEY + 126 + + ) + +110  + #EKEYEXPIRED + 127 + + ) + +111  + #EKEYREVOKED + 128 + + ) + +112  + #EKEYREJECTED + 129 + + ) + +115  + #EOWNERDEAD + 130 + + ) + +116  + #ENOTRECOVERABLE + 131 + + ) + +118  + #ERFKILL + 132 + + ) + +120  + #EHWPOISON + 133 + + ) + + @/usr/include/asm-generic/param.h + +1 #ide +__ASM_GENERIC_PARAM_H + + +2  + #__ASM_GENERIC_PARAM_H + + + ) + +4 #ide +HZ + + +5  + #HZ + 100 + + ) + +8 #ide +EXEC_PAGESIZE + + +9  + #EXEC_PAGESIZE + 4096 + + ) + +12 #ide +NOGROUP + + +13  + #NOGROUP + (-1) + + ) + +16  + #MAXHOSTNAMELEN + 64 + + ) + + @/usr/include/asm/sockios.h + +1  + ~ + + @/usr/include/bits/wchar-ldbl.h + +19 #ide +_WCHAR_H + + +23 #i +defed + +__USE_ISOC95 + || defed +__USE_UNIX98 + + +24 +__BEGIN_NAMESPACE_C99 + + +25 +__LDBL_REDIR_DECL + ( +fwtf +); + +26 +__LDBL_REDIR_DECL + ( +wtf +); + +27 +__LDBL_REDIR_DECL + ( +swtf +); + +28 +__LDBL_REDIR_DECL + ( +vfwtf +); + +29 +__LDBL_REDIR_DECL + ( +vwtf +); + +30 +__LDBL_REDIR_DECL + ( +vswtf +); + +31 #i +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +32 && ! +defed + + g__REDIRECT + \ + +33 && ( +defed + + g__STRICT_ANSI__ + || defed + g__USE_XOPEN2K +) + +34 + $__LDBL_REDIR1_DECL + ( +fwsnf +, +__dbl___isoc99_fwsnf +) + +35 + $__LDBL_REDIR1_DECL + ( +wsnf +, +__dbl___isoc99_wsnf +) + +36 + $__LDBL_REDIR1_DECL + ( +swsnf +, +__dbl___isoc99_swsnf +) + +38 + `__LDBL_REDIR_DECL + ( +fwsnf +); + +39 + `__LDBL_REDIR_DECL + ( +wsnf +); + +40 + `__LDBL_REDIR_DECL + ( +swsnf +); + +42 +__END_NAMESPACE_C99 + + +45 #ifde +__USE_ISOC99 + + +46 +__BEGIN_NAMESPACE_C99 + + +47 + `__LDBL_REDIR1_DECL + ( +wcd +, +wcod +); + +48 #i! +defed + +__USE_GNU + && !defed +__REDIRECT + \ + +49 && ( +defed + +__STRICT_ANSI__ + || defed +__USE_XOPEN2K +) + +50 + $__LDBL_REDIR1_DECL + ( +vfwsnf +, +__dbl___isoc99_vfwsnf +) + +51 + $__LDBL_REDIR1_DECL + ( +vwsnf +, +__dbl___isoc99_vwsnf +) + +52 + $__LDBL_REDIR1_DECL + ( +vswsnf +, +__dbl___isoc99_vswsnf +) + +54 + `__LDBL_REDIR_DECL + ( +vfwsnf +); + +55 + `__LDBL_REDIR_DECL + ( +vwsnf +); + +56 + `__LDBL_REDIR_DECL + ( +vswsnf +); + +58 +__END_NAMESPACE_C99 + + +61 #ifde +__USE_GNU + + +62 + `__LDBL_REDIR1_DECL + ( +wcd_l +, +wcod_l +); + +65 #i +__USE_FORTIFY_LEVEL + > 0 && +defed + +__ftify_funi + + +66 + $__LDBL_REDIR_DECL + ( +__swtf_chk +) + +67 + $__LDBL_REDIR_DECL + ( +__vswtf_chk +) + +68 #i +__USE_FORTIFY_LEVEL + > 1 + +69 + $__LDBL_REDIR_DECL + ( +__fwtf_chk +) + +70 + $__LDBL_REDIR_DECL + ( +__wtf_chk +) + +71 + $__LDBL_REDIR_DECL + ( +__vfwtf_chk +) + +72 + $__LDBL_REDIR_DECL + ( +__vwtf_chk +) + + @/usr/include/bits/wchar2.h + +19 #ide +_WCHAR_H + + +24 +wch_t + * + $__wmemy_chk + ( +wch_t + * +__ri + +__s1 +, + +25 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +, + +26 +size_t + +__ns1 + +__THROW +; + +27 +wch_t + * + `__REDIRECT_NTH + ( +__wmemy_s +, + +28 ( +wch_t + * +__ri + +__s1 +, + +29 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +), + +30 +wmemy +); + +31 +wch_t + * + `__REDIRECT_NTH + ( +__wmemy_chk_wn +, + +32 ( +wch_t + * +__ri + +__s1 +, + +33 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +, + +34 +size_t + +__ns1 +), +__wmemy_chk +) + +35 + `__wljr + ("wmemcpy called withength biggerhan size of destination " + +38 +__ftify_funi + +wch_t + * + +39 + `__NTH + ( + $wmemy + ( +wch_t + * +__ri + +__s1 +, cڡ wch_*__ri +__s2 +, + +40 +size_t + +__n +)) + +42 i( + `__bos0 + ( +__s1 +!( +size_t +) -1) + +44 i(! + `__but_cڡt_p + ( +__n +)) + +45  + `__wmemy_chk + ( +__s1 +, +__s2 +, +__n +, + +46 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +48 i( +__n + > + `__bos0 + ( +__s1 +/  ( +wch_t +)) + +49  + `__wmemy_chk_wn + ( +__s1 +, +__s2 +, +__n +, + +50 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +52  + `__wmemy_s + ( +__s1 +, +__s2 +, +__n +); + +53 + } +} + +56 +wch_t + * + $__wmemmove_chk + ( +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +57 +size_t + +__n +, size_ +__ns1 + +__THROW +; + +58 +wch_t + * + `__REDIRECT_NTH + ( +__wmemmove_s +, (wch_* +__s1 +, + +59 cڡ +wch_t + * +__s2 +, + +60 +size_t + +__n +), +wmemmove +); + +61 +wch_t + * + `__REDIRECT_NTH + ( +__wmemmove_chk_wn +, + +62 ( +wch_t + * +__s1 +, cڡ wch_* +__s2 +, + +63 +size_t + +__n +, size_ +__ns1 +), +__wmemmove_chk +) + +64 + `__wljr + ("wmemmove called withength biggerhan size of destination " + +67 +__ftify_funi + +wch_t + * + +68 + `__NTH + ( + $wmemmove + ( +wch_t + * +__s1 +, cڡ wch_* +__s2 +, +size_t + +__n +)) + +70 i( + `__bos0 + ( +__s1 +!( +size_t +) -1) + +72 i(! + `__but_cڡt_p + ( +__n +)) + +73  + `__wmemmove_chk + ( +__s1 +, +__s2 +, +__n +, + +74 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +76 i( +__n + > + `__bos0 + ( +__s1 +/  ( +wch_t +)) + +77  + `__wmemmove_chk_wn + ( +__s1 +, +__s2 +, +__n +, + +78 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +80  + `__wmemmove_s + ( +__s1 +, +__s2 +, +__n +); + +81 + } +} + +84 #ifde +__USE_GNU + + +85 +wch_t + * + $__wmempy_chk + ( +wch_t + * +__ri + +__s1 +, + +86 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +, + +87 +size_t + +__ns1 + +__THROW +; + +88 +wch_t + * + `__REDIRECT_NTH + ( +__wmempy_s +, + +89 ( +wch_t + * +__ri + +__s1 +, + +90 cڡ +wch_t + * +__ri + +__s2 +, + +91 +size_t + +__n +), +wmempy +); + +92 +wch_t + * + `__REDIRECT_NTH + ( +__wmempy_chk_wn +, + +93 ( +wch_t + * +__ri + +__s1 +, + +94 cڡ +wch_t + * +__ri + +__s2 +, +size_t + +__n +, + +95 +size_t + +__ns1 +), +__wmempy_chk +) + +96 + `__wljr + ("wmempcpy called withength biggerhan size of destination " + +99 +__ftify_funi + +wch_t + * + +100 + `__NTH + ( + $wmempy + ( +wch_t + * +__ri + +__s1 +, cڡ wch_*__ri +__s2 +, + +101 +size_t + +__n +)) + +103 i( + `__bos0 + ( +__s1 +!( +size_t +) -1) + +105 i(! + `__but_cڡt_p + ( +__n +)) + +106  + `__wmempy_chk + ( +__s1 +, +__s2 +, +__n +, + +107 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +109 i( +__n + > + `__bos0 + ( +__s1 +/  ( +wch_t +)) + +110  + `__wmempy_chk_wn + ( +__s1 +, +__s2 +, +__n +, + +111 + `__bos0 + ( +__s1 +/  ( +wch_t +)); + +113  + `__wmempy_s + ( +__s1 +, +__s2 +, +__n +); + +114 + } +} + +118 +wch_t + * + $__wmemt_chk + ( +wch_t + * +__s +, wch_ +__c +, +size_t + +__n +, + +119 +size_t + +__ns + +__THROW +; + +120 +wch_t + * + `__REDIRECT_NTH + ( +__wmemt_s +, (wch_* +__s +, wch_ +__c +, + +121 +size_t + +__n +), +wmemt +); + +122 +wch_t + * + `__REDIRECT_NTH + ( +__wmemt_chk_wn +, + +123 ( +wch_t + * +__s +, wch_ +__c +, +size_t + +__n +, + +124 +size_t + +__ns +), +__wmemt_chk +) + +125 + `__wljr + ("wmemset called withength biggerhan size of destination " + +128 +__ftify_funi + +wch_t + * + +129 + `__NTH + ( + $wmemt + ( +wch_t + * +__s +, wch_ +__c +, +size_t + +__n +)) + +131 i( + `__bos0 + ( +__s +!( +size_t +) -1) + +133 i(! + `__but_cڡt_p + ( +__n +)) + +134  + `__wmemt_chk + ( +__s +, +__c +, +__n +, + `__bos0 + (__s/  ( +wch_t +)); + +136 i( +__n + > + `__bos0 + ( +__s +/  ( +wch_t +)) + +137  + `__wmemt_chk_wn + ( +__s +, +__c +, +__n +, + +138 + `__bos0 + ( +__s +/  ( +wch_t +)); + +140  + `__wmemt_s + ( +__s +, +__c +, +__n +); + +141 + } +} + +144 +wch_t + * + $__wcsy_chk + ( +wch_t + * +__ri + +__de +, + +145 cڡ +wch_t + * +__ri + +__c +, + +146 +size_t + +__n + +__THROW +; + +147 +wch_t + * + `__REDIRECT_NTH + ( +__wcsy_s +, + +148 ( +wch_t + * +__ri + +__de +, + +149 cڡ +wch_t + * +__ri + +__c +), +wcsy +); + +151 +__ftify_funi + +wch_t + * + +152 + `__NTH + ( + $wcsy + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +)) + +154 i( + `__bos + ( +__de +!( +size_t +) -1) + +155  + `__wcsy_chk + ( +__de +, +__c +, + `__bos + (__de/  ( +wch_t +)); + +156  + `__wcsy_s + ( +__de +, +__c +); + +157 + } +} + +160 +wch_t + * + $__wy_chk + ( +wch_t + * +__ri + +__de +, + +161 cڡ +wch_t + * +__ri + +__c +, + +162 +size_t + +__den + +__THROW +; + +163 +wch_t + * + `__REDIRECT_NTH + ( +__wy_s +, + +164 ( +wch_t + * +__ri + +__de +, + +165 cڡ +wch_t + * +__ri + +__c +), +wy +); + +167 +__ftify_funi + +wch_t + * + +168 + `__NTH + ( + $wy + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +)) + +170 i( + `__bos + ( +__de +!( +size_t +) -1) + +171  + `__wy_chk + ( +__de +, +__c +, + `__bos + (__de/  ( +wch_t +)); + +172  + `__wy_s + ( +__de +, +__c +); + +173 + } +} + +176 +wch_t + * + $__wcy_chk + ( +wch_t + * +__ri + +__de +, + +177 cڡ +wch_t + * +__ri + +__c +, +size_t + +__n +, + +178 +size_t + +__den + +__THROW +; + +179 +wch_t + * + `__REDIRECT_NTH + ( +__wcy_s +, + +180 ( +wch_t + * +__ri + +__de +, + +181 cڡ +wch_t + * +__ri + +__c +, + +182 +size_t + +__n +), +wcy +); + +183 +wch_t + * + `__REDIRECT_NTH + ( +__wcy_chk_wn +, + +184 ( +wch_t + * +__ri + +__de +, + +185 cڡ +wch_t + * +__ri + +__c +, + +186 +size_t + +__n +, size_ +__den +), +__wcy_chk +) + +187 + `__wljr + ("wcsncpy called withength biggerhan size of destination " + +190 +__ftify_funi + +wch_t + * + +191 + `__NTH + ( + $wcy + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +, + +192 +size_t + +__n +)) + +194 i( + `__bos + ( +__de +!( +size_t +) -1) + +196 i(! + `__but_cڡt_p + ( +__n +)) + +197  + `__wcy_chk + ( +__de +, +__c +, +__n +, + +198 + `__bos + ( +__de +/  ( +wch_t +)); + +199 i( +__n + > + `__bos + ( +__de +/  ( +wch_t +)) + +200  + `__wcy_chk_wn + ( +__de +, +__c +, +__n +, + +201 + `__bos + ( +__de +/  ( +wch_t +)); + +203  + `__wcy_s + ( +__de +, +__c +, +__n +); + +204 + } +} + +207 +wch_t + * + $__wny_chk + ( +wch_t + * +__ri + +__de +, + +208 cڡ +wch_t + * +__ri + +__c +, +size_t + +__n +, + +209 +size_t + +__den + +__THROW +; + +210 +wch_t + * + `__REDIRECT_NTH + ( +__wny_s +, + +211 ( +wch_t + * +__ri + +__de +, + +212 cڡ +wch_t + * +__ri + +__c +, + +213 +size_t + +__n +), +wny +); + +214 +wch_t + * + `__REDIRECT_NTH + ( +__wny_chk_wn +, + +215 ( +wch_t + * +__ri + +__de +, + +216 cڡ +wch_t + * +__ri + +__c +, + +217 +size_t + +__n +, size_ +__den +), +__wny_chk +) + +218 + `__wljr + ("wcpncpy called withength biggerhan size of destination " + +221 +__ftify_funi + +wch_t + * + +222 + `__NTH + ( + $wny + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +, + +223 +size_t + +__n +)) + +225 i( + `__bos + ( +__de +!( +size_t +) -1) + +227 i(! + `__but_cڡt_p + ( +__n +)) + +228  + `__wny_chk + ( +__de +, +__c +, +__n +, + +229 + `__bos + ( +__de +/  ( +wch_t +)); + +230 i( +__n + > + `__bos + ( +__de +/  ( +wch_t +)) + +231  + `__wny_chk_wn + ( +__de +, +__c +, +__n +, + +232 + `__bos + ( +__de +/  ( +wch_t +)); + +234  + `__wny_s + ( +__de +, +__c +, +__n +); + +235 + } +} + +238 +wch_t + * + $__wcst_chk + ( +wch_t + * +__ri + +__de +, + +239 cڡ +wch_t + * +__ri + +__c +, + +240 +size_t + +__den + +__THROW +; + +241 +wch_t + * + `__REDIRECT_NTH + ( +__wcst_s +, + +242 ( +wch_t + * +__ri + +__de +, + +243 cڡ +wch_t + * +__ri + +__c +), +wcst +); + +245 +__ftify_funi + +wch_t + * + +246 + `__NTH + ( + $wcst + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +)) + +248 i( + `__bos + ( +__de +!( +size_t +) -1) + +249  + `__wcst_chk + ( +__de +, +__c +, + `__bos + (__de/  ( +wch_t +)); + +250  + `__wcst_s + ( +__de +, +__c +); + +251 + } +} + +254 +wch_t + * + $__wct_chk + ( +wch_t + * +__ri + +__de +, + +255 cڡ +wch_t + * +__ri + +__c +, + +256 +size_t + +__n +, size_ +__den + +__THROW +; + +257 +wch_t + * + `__REDIRECT_NTH + ( +__wct_s +, + +258 ( +wch_t + * +__ri + +__de +, + +259 cڡ +wch_t + * +__ri + +__c +, + +260 +size_t + +__n +), +wct +); + +262 +__ftify_funi + +wch_t + * + +263 + `__NTH + ( + $wct + ( +wch_t + * +__ri + +__de +, cڡ wch_*__ri +__c +, + +264 +size_t + +__n +)) + +266 i( + `__bos + ( +__de +!( +size_t +) -1) + +267  + `__wct_chk + ( +__de +, +__c +, +__n +, + +268 + `__bos + ( +__de +/  ( +wch_t +)); + +269  + `__wct_s + ( +__de +, +__c +, +__n +); + +270 + } +} + +273  + $__swtf_chk + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +274  +__ag +, +size_t + +__s_n +, + +275 cڡ +wch_t + * +__ri + +__fm +, ...) + +276 +__THROW + ; + +278  + `__REDIRECT_NTH_LDBL + ( +__swtf_s +, + +279 ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +280 cڡ +wch_t + * +__ri + +__fmt +, ...), + +281 +swtf +); + +283 #ifde +__va_g_ck + + +284 +__ftify_funi +  + +285 + `__NTH + ( + $swtf + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +286 cڡ +wch_t + * +__ri + +__fmt +, ...)) + +288 i( + `__bos + ( +__s +!( +size_t +-1 || +__USE_FORTIFY_LEVEL + > 1) + +289  + `__swtf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +290 + `__bos + ( +__s +/  ( +wch_t +), + +291 +__fmt +, + `__va_g_ck + ()); + +292  + `__swtf_s + ( +__s +, +__n +, +__fmt +, + `__va_g_ck + ()); + +293 + } +} + +294 #i! +defed + +__lulus + + +296  + #swtf +( +s +, +n +, ...) \ + +297 ( + `__bos + ( +s +!( +size_t +-1 || +__USE_FORTIFY_LEVEL + > 1 \ + +298 ? + `__swtf_chk + ( +s +, +n +, +__USE_FORTIFY_LEVEL + - 1, \ + +299 + `__bos + ( +s +/  ( +wch_t +), +__VA_ARGS__ +) \ + +300 : + `swtf + ( +s +, +n +, +__VA_ARGS__ +)) + + ) + +303  + $__vswtf_chk + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +304  +__ag +, +size_t + +__s_n +, + +305 cڡ +wch_t + * +__ri + +__fm +, + +306 +__gnuc_va_li + +__g +) + +307 +__THROW + ; + +309  + `__REDIRECT_NTH_LDBL + ( +__vswtf_s +, + +310 ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +311 cڡ +wch_t + * +__ri + +__fmt +, + +312 +__gnuc_va_li + +__ +), +vswtf +); + +314 +__ftify_funi +  + +315 + `__NTH + ( + $vswtf + ( +wch_t + * +__ri + +__s +, +size_t + +__n +, + +316 cڡ +wch_t + * +__ri + +__fmt +, +__gnuc_va_li + +__ +)) + +318 i( + `__bos + ( +__s +!( +size_t +-1 || +__USE_FORTIFY_LEVEL + > 1) + +319  + `__vswtf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +320 + `__bos + ( +__s +/  ( +wch_t +), +__fmt +, +__ +); + +321  + `__vswtf_s + ( +__s +, +__n +, +__fmt +, +__ +); + +322 + } +} + +325 #i +__USE_FORTIFY_LEVEL + > 1 + +327  +__fwtf_chk + ( +__FILE + * +__ri + +__am +,  +__ag +, + +328 cڡ +wch_t + * +__ri + +__fm +, ...); + +329  +__wtf_chk + ( +__ag +, cڡ +wch_t + * +__ri + +__fm +, + +331  +__vfwtf_chk + ( +__FILE + * +__ri + +__am +,  +__ag +, + +332 cڡ +wch_t + * +__ri + +__fm +, + +333 +__gnuc_va_li + +__ +); + +334  +__vwtf_chk + ( +__ag +, cڡ +wch_t + * +__ri + +__fm +, + +335 +__gnuc_va_li + +__ +); + +337 #ifde +__va_g_ck + + +338 +__ftify_funi +  + +339 + $wtf + (cڡ +wch_t + * +__ri + +__fmt +, ...) + +341  + `__wtf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + `__va_g_ck + ()); + +342 + } +} + +344 +__ftify_funi +  + +345 + $fwtf + ( +__FILE + * +__ri + +__am +, cڡ +wch_t + *__ri +__fmt +, ...) + +347  + `__fwtf_chk + ( +__am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +348 + `__va_g_ck + ()); + +349 + } +} + +350 #i! +defed + +__lulus + + +351  + #wtf +(...) \ + +352 + `__wtf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +353  + #fwtf +( +am +, ...) \ + +354 + `__fwtf_chk + ( +am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +357 +__ftify_funi +  + +358 + $vwtf + (cڡ +wch_t + * +__ri + +__fmt +, +__gnuc_va_li + +__ +) + +360  + `__vwtf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +361 + } +} + +363 +__ftify_funi +  + +364 + $vfwtf + ( +__FILE + * +__ri + +__am +, + +365 cڡ +wch_t + * +__ri + +__fmt +, +__gnuc_va_li + +__ +) + +367  + `__vfwtf_chk + ( +__am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +368 + } +} + +372 +wch_t + * + $__fgws_chk + ( +wch_t + * +__ri + +__s +, +size_t + +__size +,  +__n +, + +373 +__FILE + * +__ri + +__am + +__wur +; + +374 +wch_t + * + `__REDIRECT + ( +__fgws_s +, + +375 ( +wch_t + * +__ri + +__s +,  +__n +, + +376 +__FILE + * +__ri + +__am +), +fgws + +__wur +; + +377 +wch_t + * + `__REDIRECT + ( +__fgws_chk_wn +, + +378 ( +wch_t + * +__ri + +__s +, +size_t + +__size +,  +__n +, + +379 +__FILE + * +__ri + +__am +), +__fgws_chk +) + +380 +__wur + + `__wljr + ("fgetws called with bigger sizehanength " + +383 +__ftify_funi + +__wur + +wch_t + * + +384 + $fgws + ( +wch_t + * +__ri + +__s +,  +__n +, +__FILE + *__ri +__am +) + +386 i( + `__bos + ( +__s +!( +size_t +) -1) + +388 i(! + `__but_cڡt_p + ( +__n +) || __n <= 0) + +389  + `__fgws_chk + ( +__s +, + `__bos + (__s/  ( +wch_t +), + +390 +__n +, +__am +); + +392 i(( +size_t + +__n + > + `__bos + ( +__s +/  ( +wch_t +)) + +393  + `__fgws_chk_wn + ( +__s +, + `__bos + (__s/  ( +wch_t +), + +394 +__n +, +__am +); + +396  + `__fgws_s + ( +__s +, +__n +, +__am +); + +397 + } +} + +399 #ifde +__USE_GNU + + +400 +wch_t + * + $__fgws_uocked_chk + ( +wch_t + * +__ri + +__s +, +size_t + +__size +, + +401  +__n +, +__FILE + * +__ri + +__am +) + +402 +__wur +; + +403 +wch_t + * + `__REDIRECT + ( +__fgws_uocked_s +, + +404 ( +wch_t + * +__ri + +__s +,  +__n +, + +405 +__FILE + * +__ri + +__am +), +fgws_uocked +) + +406 +__wur +; + +407 +wch_t + * + `__REDIRECT + ( +__fgws_uocked_chk_wn +, + +408 ( +wch_t + * +__ri + +__s +, +size_t + +__size +,  +__n +, + +409 +__FILE + * +__ri + +__am +), + +410 +__fgws_uocked_chk +) + +411 +__wur + + `__wljr + ("fgetws_unlocked called with bigger sizehanength " + +414 +__ftify_funi + +__wur + +wch_t + * + +415 + $fgws_uocked + ( +wch_t + * +__ri + +__s +,  +__n +, +__FILE + *__ri +__am +) + +417 i( + `__bos + ( +__s +!( +size_t +) -1) + +419 i(! + `__but_cڡt_p + ( +__n +) || __n <= 0) + +420  + `__fgws_uocked_chk + ( +__s +, + `__bos + (__s/  ( +wch_t +), + +421 +__n +, +__am +); + +423 i(( +size_t + +__n + > + `__bos + ( +__s +/  ( +wch_t +)) + +424  + `__fgws_uocked_chk_wn + ( +__s +, + `__bos + (__s/  ( +wch_t +), + +425 +__n +, +__am +); + +427  + `__fgws_uocked_s + ( +__s +, +__n +, +__am +); + +428 + } +} + +432 +size_t + + $__wtomb_chk + (* +__ri + +__s +, +wch_t + +__wch +, + +433 +mbe_t + * +__ri + +__p +, + +434 +size_t + +__bu + +__THROW + +__wur +; + +435 +size_t + + `__REDIRECT_NTH + ( +__wtomb_s +, + +436 (* +__ri + +__s +, +wch_t + +__wch +, + +437 +mbe_t + * +__ri + +__ps +), +wtomb + +__wur +; + +439 +__ftify_funi + +__wur + +size_t + + +440 + `__NTH + ( + $wtomb + (* +__ri + +__s +, +wch_t + +__wch +, + +441 +mbe_t + * +__ri + +__ps +)) + +446  + #__WCHAR_MB_LEN_MAX + 16 + + ) + +447 #i +defed + +MB_LEN_MAX + && MB_LEN_MAX ! +__WCHAR_MB_LEN_MAX + + +450 i( + `__bos + ( +__s +!( +size_t +-1 && +__WCHAR_MB_LEN_MAX + > __bos (__s)) + +451  + `__wtomb_chk + ( +__s +, +__wch +, +__ps +, + `__bos + (__s)); + +452  + `__wtomb_s + ( +__s +, +__wch +, +__ps +); + +453 + } +} + +456 +size_t + + $__mbtowcs_chk + ( +wch_t + * +__ri + +__d +, + +457 cڡ ** +__ri + +__c +, + +458 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +459 +size_t + +__dn + +__THROW +; + +460 +size_t + + `__REDIRECT_NTH + ( +__mbtowcs_s +, + +461 ( +wch_t + * +__ri + +__d +, + +462 cڡ ** +__ri + +__c +, + +463 +size_t + +__n +, +mbe_t + * +__ri + +__ps +), + +464 +mbtowcs +); + +465 +size_t + + `__REDIRECT_NTH + ( +__mbtowcs_chk_wn +, + +466 ( +wch_t + * +__ri + +__d +, + +467 cڡ ** +__ri + +__c +, + +468 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +469 +size_t + +__dn +), +__mbtowcs_chk +) + +470 + `__wljr + ("mbsrtowcs called with dst buffer smallerhanen " + +473 +__ftify_funi + +size_t + + +474 + `__NTH + ( + $mbtowcs + ( +wch_t + * +__ri + +__d +, cڡ **__ri +__c +, + +475 +size_t + +__n +, +mbe_t + * +__ri + +__ps +)) + +477 i( + `__bos + ( +__d +!( +size_t +) -1) + +479 i(! + `__but_cڡt_p + ( +__n +)) + +480  + `__mbtowcs_chk + ( +__d +, +__c +, +__n +, +__ps +, + +481 + `__bos + ( +__d +/  ( +wch_t +)); + +483 i( +__n + > + `__bos + ( +__d +/  ( +wch_t +)) + +484  + `__mbtowcs_chk_wn + ( +__d +, +__c +, +__n +, +__ps +, + +485 + `__bos + ( +__d +/  ( +wch_t +)); + +487  + `__mbtowcs_s + ( +__d +, +__c +, +__n +, +__ps +); + +488 + } +} + +491 +size_t + + $__wctombs_chk + (* +__ri + +__d +, + +492 cڡ +wch_t + ** +__ri + +__c +, + +493 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +494 +size_t + +__dn + +__THROW +; + +495 +size_t + + `__REDIRECT_NTH + ( +__wctombs_s +, + +496 (* +__ri + +__d +, + +497 cڡ +wch_t + ** +__ri + +__c +, + +498 +size_t + +__n +, +mbe_t + * +__ri + +__ps +), + +499 +wctombs +); + +500 +size_t + + `__REDIRECT_NTH + ( +__wctombs_chk_wn +, + +501 (* +__ri + +__d +, + +502 cڡ +wch_t + ** +__ri + +__c +, + +503 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +504 +size_t + +__dn +), +__wctombs_chk +) + +505 + `__wljr + ("wcsrtombs called with dst buffer smallerhanen"); + +507 +__ftify_funi + +size_t + + +508 + `__NTH + ( + $wctombs + (* +__ri + +__d +, cڡ +wch_t + **__ri +__c +, + +509 +size_t + +__n +, +mbe_t + * +__ri + +__ps +)) + +511 i( + `__bos + ( +__d +!( +size_t +) -1) + +513 i(! + `__but_cڡt_p + ( +__n +)) + +514  + `__wctombs_chk + ( +__d +, +__c +, +__n +, +__ps +, + `__bos + (__dst)); + +516 i( +__n + > + `__bos + ( +__d +)) + +517  + `__wctombs_chk_wn + ( +__d +, +__c +, +__n +, +__ps +, + `__bos + (__dst)); + +519  + `__wctombs_s + ( +__d +, +__c +, +__n +, +__ps +); + +520 + } +} + +523 #ifde +__USE_GNU + + +524 +size_t + + $__mbowcs_chk + ( +wch_t + * +__ri + +__d +, + +525 cڡ ** +__ri + +__c +, +size_t + +__nmc +, + +526 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +527 +size_t + +__dn + +__THROW +; + +528 +size_t + + `__REDIRECT_NTH + ( +__mbowcs_s +, + +529 ( +wch_t + * +__ri + +__d +, + +530 cڡ ** +__ri + +__c +, +size_t + +__nmc +, + +531 +size_t + +__n +, +mbe_t + * +__ri + +__ps +), + +532 +mbowcs +); + +533 +size_t + + `__REDIRECT_NTH + ( +__mbowcs_chk_wn +, + +534 ( +wch_t + * +__ri + +__d +, + +535 cڡ ** +__ri + +__c +, +size_t + +__nmc +, + +536 +size_t + +__n +, +mbe_t + * +__ri + +__ps +, + +537 +size_t + +__dn +), +__mbowcs_chk +) + +538 + `__wljr + ("mbsnrtowcs called with dst buffer smallerhanen " + +541 +__ftify_funi + +size_t + + +542 + `__NTH + ( + $mbowcs + ( +wch_t + * +__ri + +__d +, cڡ **__ri +__c +, + +543 +size_t + +__nmc +, size_ +__n +, +mbe_t + * +__ri + +__ps +)) + +545 i( + `__bos + ( +__d +!( +size_t +) -1) + +547 i(! + `__but_cڡt_p + ( +__n +)) + +548  + `__mbowcs_chk + ( +__d +, +__c +, +__nmc +, +__n +, +__ps +, + +549 + `__bos + ( +__d +/  ( +wch_t +)); + +551 i( +__n + > + `__bos + ( +__d +/  ( +wch_t +)) + +552  + `__mbowcs_chk_wn + ( +__d +, +__c +, +__nmc +, +__n +, +__ps +, + +553 + `__bos + ( +__d +/  ( +wch_t +)); + +555  + `__mbowcs_s + ( +__d +, +__c +, +__nmc +, +__n +, +__ps +); + +556 + } +} + +559 +size_t + + $__wcombs_chk + (* +__ri + +__d +, + +560 cڡ +wch_t + ** +__ri + +__c +, + +561 +size_t + +__nwc +, size_ +__n +, + +562 +mbe_t + * +__ri + +__ps +, +size_t + +__dn +) + +563 +__THROW +; + +564 +size_t + + `__REDIRECT_NTH + ( +__wcombs_s +, + +565 (* +__ri + +__d +, + +566 cڡ +wch_t + ** +__ri + +__c +, + +567 +size_t + +__nwc +, size_ +__n +, + +568 +mbe_t + * +__ri + +__ps +), +wcombs +); + +569 +size_t + + `__REDIRECT_NTH + ( +__wcombs_chk_wn +, + +570 (* +__ri + +__d +, + +571 cڡ +wch_t + ** +__ri + +__c +, + +572 +size_t + +__nwc +, size_ +__n +, + +573 +mbe_t + * +__ri + +__ps +, + +574 +size_t + +__dn +), +__wcombs_chk +) + +575 + `__wljr + ("wcsnrtombs called with dst buffer smallerhanen"); + +577 +__ftify_funi + +size_t + + +578 + `__NTH + ( + $wcombs + (* +__ri + +__d +, cڡ +wch_t + **__ri +__c +, + +579 +size_t + +__nwc +, size_ +__n +, +mbe_t + * +__ri + +__ps +)) + +581 i( + `__bos + ( +__d +!( +size_t +) -1) + +583 i(! + `__but_cڡt_p + ( +__n +)) + +584  + `__wcombs_chk + ( +__d +, +__c +, +__nwc +, +__n +, +__ps +, + +585 + `__bos + ( +__d +)); + +587 i( +__n + > + `__bos + ( +__d +)) + +588  + `__wcombs_chk_wn + ( +__d +, +__c +, +__nwc +, +__n +, +__ps +, + +589 + `__bos + ( +__d +)); + +591  + `__wcombs_s + ( +__d +, +__c +, +__nwc +, +__n +, +__ps +); + +592 + } +} + + @/usr/include/wctype.h + +23 #ide +_WCTYPE_H + + +25  + ~ + +26  + ~ + +28 #ide +__ed_iswxxx + + +29  + #_WCTYPE_H + 1 + + ) + +32  + #__ed_wt_t + + + ) + +33  + ~ + +37 #ide +WEOF + + +38  + #WEOF + (0xffffffffu) + + ) + +41 #unde +__ed_iswxxx + + +46 #ide +__iswxxx_defed + + +47  + #__iswxxx_defed + 1 + + ) + +49 +__BEGIN_NAMESPACE_C99 + + +52  + twy_t +; + +53 + g__END_NAMESPACE_C99 + + +55 #ide +_ISwb + + +60  + ~ + +61 #i +__BYTE_ORDER + = +__BIG_ENDIAN + + +62  + #_ISwb +( +b +(1 << (b)) + + ) + +64  + #_ISwb +( +b +) \ + +65 (( +b +) < 8 ? () ((1UL << (bit)) << 24) \ + +66 : (( +b +) < 16 ? () ((1UL << (bit)) << 8) \ + +67 : (( +b +) < 24 ? () ((1UL << (bit)) >> 8) \ + +68 : (((1UL << ( +b +)>> 24)))) + + ) + +73 + m__ISwu + = 0, + +74 + m__ISwlow + = 1, + +75 + m__ISwpha + = 2, + +76 + m__ISwdig + = 3, + +77 + m__ISwxdig + = 4, + +78 + m__ISwa + = 5, + +79 + m__ISwt + = 6, + +80 + m__ISwgph + = 7, + +81 + m__ISwbnk + = 8, + +82 + m__ISwl + = 9, + +83 + m__ISwpun + = 10, + +84 + m__ISwnum + = 11, + +86 + m_ISwu + = +_ISwb + ( +__ISwu +), + +87 + m_ISwlow + = +_ISwb + ( +__ISwlow +), + +88 + m_ISwpha + = +_ISwb + ( +__ISwpha +), + +89 + m_ISwdig + = +_ISwb + ( +__ISwdig +), + +90 + m_ISwxdig + = +_ISwb + ( +__ISwxdig +), + +91 + m_ISwa + = +_ISwb + ( +__ISwa +), + +92 + m_ISwt + = +_ISwb + ( +__ISwt +), + +93 + m_ISwgph + = +_ISwb + ( +__ISwgph +), + +94 + m_ISwbnk + = +_ISwb + ( +__ISwbnk +), + +95 + m_ISwl + = +_ISwb + ( +__ISwl +), + +96 + m_ISwpun + = +_ISwb + ( +__ISwpun +), + +97 + m_ISwnum + = +_ISwb + ( +__ISwnum +) + +102 +__BEGIN_DECLS + + +104 +__BEGIN_NAMESPACE_C99 + + +111  + $iswnum + ( +wt_t + +__wc + +__THROW +; + +117  + $iswpha + ( +wt_t + +__wc + +__THROW +; + +120  + $iswl + ( +wt_t + +__wc + +__THROW +; + +124  + $iswdig + ( +wt_t + +__wc + +__THROW +; + +128  + $iswgph + ( +wt_t + +__wc + +__THROW +; + +133  + $iswlow + ( +wt_t + +__wc + +__THROW +; + +136  + $iswt + ( +wt_t + +__wc + +__THROW +; + +141  + $iswpun + ( +wt_t + +__wc + +__THROW +; + +146  + $iswa + ( +wt_t + +__wc + +__THROW +; + +151  + $iswu + ( +wt_t + +__wc + +__THROW +; + +156  + $iswxdig + ( +wt_t + +__wc + +__THROW +; + +161 #ifde +__USE_ISOC99 + + +162  + $iswbnk + ( +wt_t + +__wc + +__THROW +; + +171 +wy_t + + $wy + (cڡ * +__ݔty + +__THROW +; + +175  + $iswy + ( +wt_t + +__wc +, +wy_t + +__desc + +__THROW +; + +176 +__END_NAMESPACE_C99 + + +183 +__BEGIN_NAMESPACE_C99 + + +186 cڡ + t__t32_t + * + twns_t +; + +187 +__END_NAMESPACE_C99 + + +188 #ifde +__USE_GNU + + +189 + $__USING_NAMESPACE_C99 +( +wns_t +) + +192 +__BEGIN_NAMESPACE_C99 + + +194 +wt_t + + $towlow + ( +wt_t + +__wc + +__THROW +; + +197 +wt_t + + $towu + ( +wt_t + +__wc + +__THROW +; + +198 +__END_NAMESPACE_C99 + + +200 +__END_DECLS + + +207 #ifde +_WCTYPE_H + + +213 +__BEGIN_DECLS + + +215 +__BEGIN_NAMESPACE_C99 + + +218 +wns_t + + $wns + (cڡ * +__ݔty + +__THROW +; + +221 +wt_t + + $towns + ( +wt_t + +__wc +, +wns_t + +__desc + +__THROW +; + +222 +__END_NAMESPACE_C99 + + +224 #ifde +__USE_XOPEN2K8 + + +226  + ~ + +230  + $iswnum_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +236  + $iswpha_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +239  + $iswl_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +243  + $iswdig_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +247  + $iswgph_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +252  + $iswlow_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +255  + $iswt_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +260  + $iswpun_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +265  + $iswa_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +270  + $iswu_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +275  + $iswxdig_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +280  + $iswbnk_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +284 +wy_t + + $wy_l + (cڡ * +__ݔty +, +__lo_t + +__lo +) + +285 +__THROW +; + +289  + $iswy_l + ( +wt_t + +__wc +, +wy_t + +__desc +, +__lo_t + +__lo +) + +290 +__THROW +; + +298 +wt_t + + $towlow_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +301 +wt_t + + $towu_l + ( +wt_t + +__wc +, +__lo_t + +__lo + +__THROW +; + +305 +wns_t + + $wns_l + (cڡ * +__ݔty +, +__lo_t + +__lo +) + +306 +__THROW +; + +309 +wt_t + + $towns_l + ( +wt_t + +__wc +, +wns_t + +__desc +, + +310 +__lo_t + +__lo + +__THROW +; + +314 +__END_DECLS + + + @/usr/include/asm-generic/errno-base.h + +1 #ide +_ASM_GENERIC_ERRNO_BASE_H + + +2  + #_ASM_GENERIC_ERRNO_BASE_H + + + ) + +4  + #EPERM + 1 + + ) + +5  + #ENOENT + 2 + + ) + +6  + #ESRCH + 3 + + ) + +7  + #EINTR + 4 + + ) + +8  + #EIO + 5 + + ) + +9  + #ENXIO + 6 + + ) + +10  + #E2BIG + 7 + + ) + +11  + #ENOEXEC + 8 + + ) + +12  + #EBADF + 9 + + ) + +13  + #ECHILD + 10 + + ) + +14  + #EAGAIN + 11 + + ) + +15  + #ENOMEM + 12 + + ) + +16  + #EACCES + 13 + + ) + +17  + #EFAULT + 14 + + ) + +18  + #ENOTBLK + 15 + + ) + +19  + #EBUSY + 16 + + ) + +20  + #EEXIST + 17 + + ) + +21  + #EXDEV + 18 + + ) + +22  + #ENODEV + 19 + + ) + +23  + #ENOTDIR + 20 + + ) + +24  + #EISDIR + 21 + + ) + +25  + #EINVAL + 22 + + ) + +26  + #ENFILE + 23 + + ) + +27  + #EMFILE + 24 + + ) + +28  + #ENOTTY + 25 + + ) + +29  + #ETXTBSY + 26 + + ) + +30  + #EFBIG + 27 + + ) + +31  + #ENOSPC + 28 + + ) + +32  + #ESPIPE + 29 + + ) + +33  + #EROFS + 30 + + ) + +34  + #EMLINK + 31 + + ) + +35  + #EPIPE + 32 + + ) + +36  + #EDOM + 33 + + ) + +37  + #ERANGE + 34 + + ) + + @/usr/include/asm-generic/sockios.h + +1 #ide +__ASM_GENERIC_SOCKIOS_H + + +2  + #__ASM_GENERIC_SOCKIOS_H + + + ) + +5  + #FIOSETOWN + 0x8901 + + ) + +6  + #SIOCSPGRP + 0x8902 + + ) + +7  + #FIOGETOWN + 0x8903 + + ) + +8  + #SIOCGPGRP + 0x8904 + + ) + +9  + #SIOCATMARK + 0x8905 + + ) + +10  + #SIOCGSTAMP + 0x8906 + + ) + +11  + #SIOCGSTAMPNS + 0x8907 + + ) + + @ +1 +. +1 +/usr/include +198 +5604 +VIL/acl/lib_acl.c +VIL/acl/lib_acl.h +VIL/alg/lib_ftp_alg.c +VIL/alg/lib_ftp_alg.h +VIL/alg/lib_sip_alg.c +VIL/alg/lib_sip_alg.h +VIL/conntrack/rte_cnxn_tracking.c +VIL/conntrack/rte_cnxn_tracking.h +VIL/conntrack/rte_ct_synproxy.c +VIL/conntrack/rte_ct_tcp.c +VIL/conntrack/rte_ct_tcp.h +VIL/conntrack/rte_ct_udp.c +VIL/l2l3_stack/bond.c +VIL/l2l3_stack/hle.c +VIL/l2l3_stack/hle.h +VIL/l2l3_stack/interface.c +VIL/l2l3_stack/interface.h +VIL/l2l3_stack/l2_proto.c +VIL/l2l3_stack/l2_proto.h +VIL/l2l3_stack/l3fwd_common.h +VIL/l2l3_stack/l3fwd_lpm4.c +VIL/l2l3_stack/l3fwd_lpm4.h +VIL/l2l3_stack/l3fwd_lpm6.c +VIL/l2l3_stack/l3fwd_lpm6.h +VIL/l2l3_stack/l3fwd_main.c +VIL/l2l3_stack/lib_arp.c +VIL/l2l3_stack/lib_arp.h +VIL/l2l3_stack/lib_icmpv6.c +VIL/l2l3_stack/lib_icmpv6.h +VIL/l2l3_stack/main_l2l3.c +VIL/l2l3_stack/tsx.c +VIL/l2l3_stack/tsx.h +VIL/pipeline_arpicmp/pipeline_arpicmp.c +VIL/pipeline_arpicmp/pipeline_arpicmp.h +VIL/pipeline_arpicmp/pipeline_arpicmp_be.c +VIL/pipeline_arpicmp/pipeline_arpicmp_be.h +VIL/pipeline_common/pipeline_common_be.c +VIL/pipeline_common/pipeline_common_be.h +VIL/pipeline_common/pipeline_common_fe.c +VIL/pipeline_common/pipeline_common_fe.h +VIL/pipeline_loadb/pipeline_loadb.c +VIL/pipeline_loadb/pipeline_loadb.h +VIL/pipeline_loadb/pipeline_loadb_be.c +VIL/pipeline_loadb/pipeline_loadb_be.h +VIL/pipeline_master/pipeline_master.c +VIL/pipeline_master/pipeline_master.h +VIL/pipeline_master/pipeline_master_be.c +VIL/pipeline_master/pipeline_master_be.h +VIL/pipeline_passthrough/pipeline_passthrough.c +VIL/pipeline_passthrough/pipeline_passthrough.h +VIL/pipeline_passthrough/pipeline_passthrough_be.c +VIL/pipeline_passthrough/pipeline_passthrough_be.h +VIL/pipeline_txrx/pipeline_txrx.c +VIL/pipeline_txrx/pipeline_txrx.h +VIL/pipeline_txrx/pipeline_txrx_be.c +VIL/pipeline_txrx/pipeline_txrx_be.h +vnf_common/app.h +vnf_common/config_check.c +vnf_common/config_parse.c +vnf_common/config_parse_tm.c +vnf_common/cpu_core_map.c +vnf_common/cpu_core_map.h +vnf_common/hash_func.h +vnf_common/parser.h +vnf_common/pipeline.h +vnf_common/pipeline_actions_common.h +vnf_common/pipeline_be.h +vnf_common/thread.c +vnf_common/thread.h +vnf_common/thread_fe.c +vnf_common/thread_fe.h +vnf_common/vnf_common.c +vnf_common/vnf_common.h +vnf_common/vnf_define.h +/usr/include/arpa/inet.h +/usr/include/ctype.h +/usr/include/errno.h +/usr/include/execinfo.h +/usr/include/fcntl.h +/usr/include/getopt.h +/usr/include/inttypes.h +/usr/include/libgen.h +/usr/include/math.h +/usr/include/netinet/in.h +/usr/include/setjmp.h +/usr/include/signal.h +/usr/include/stdint.h +/usr/include/stdio.h +/usr/include/stdlib.h +/usr/include/string.h +/usr/include/sys/param.h +/usr/include/sys/queue.h +/usr/include/sys/socket.h +/usr/include/sys/types.h +/usr/include/sys/wait.h +/usr/include/time.h +/usr/include/unistd.h +/usr/include/alloca.h +/usr/include/bits/byteswap.h +/usr/include/bits/confname.h +/usr/include/bits/environments.h +/usr/include/bits/errno.h +/usr/include/bits/fcntl.h +/usr/include/bits/fcntl2.h +/usr/include/bits/huge_val.h +/usr/include/bits/huge_valf.h +/usr/include/bits/huge_vall.h +/usr/include/bits/in.h +/usr/include/bits/inf.h +/usr/include/bits/math-finite.h +/usr/include/bits/math-vector.h +/usr/include/bits/mathcalls.h +/usr/include/bits/mathdef.h +/usr/include/bits/mathinline.h +/usr/include/bits/nan.h +/usr/include/bits/param.h +/usr/include/bits/posix_opt.h +/usr/include/bits/pthreadtypes.h +/usr/include/bits/setjmp.h +/usr/include/bits/setjmp2.h +/usr/include/bits/sigaction.h +/usr/include/bits/sigcontext.h +/usr/include/bits/siginfo.h +/usr/include/bits/signum.h +/usr/include/bits/sigset.h +/usr/include/bits/sigstack.h +/usr/include/bits/sigthread.h +/usr/include/bits/socket.h +/usr/include/bits/socket2.h +/usr/include/bits/stat.h +/usr/include/bits/stdio-ldbl.h +/usr/include/bits/stdio.h +/usr/include/bits/stdio2.h +/usr/include/bits/stdio_lim.h +/usr/include/bits/stdlib-bsearch.h +/usr/include/bits/stdlib-float.h +/usr/include/bits/stdlib-ldbl.h +/usr/include/bits/stdlib.h +/usr/include/bits/string.h +/usr/include/bits/string2.h +/usr/include/bits/string3.h +/usr/include/bits/sys_errlist.h +/usr/include/bits/time.h +/usr/include/bits/types.h +/usr/include/bits/unistd.h +/usr/include/bits/waitflags.h +/usr/include/bits/waitstatus.h +/usr/include/bits/wchar.h +/usr/include/bits/wordsize.h +/usr/include/endian.h +/usr/include/features.h +/usr/include/libio.h +/usr/include/limits.h +/usr/include/sys/select.h +/usr/include/sys/sysmacros.h +/usr/include/sys/ucontext.h +/usr/include/sys/uio.h +/usr/include/xlocale.h +/usr/include/_G_config.h +/usr/include/asm/socket.h +/usr/include/bits/byteswap-16.h +/usr/include/bits/endian.h +/usr/include/bits/fcntl-linux.h +/usr/include/bits/libio-ldbl.h +/usr/include/bits/libm-simd-decl-stubs.h +/usr/include/bits/posix1_lim.h +/usr/include/bits/posix2_lim.h +/usr/include/bits/select.h +/usr/include/bits/select2.h +/usr/include/bits/sockaddr.h +/usr/include/bits/socket_type.h +/usr/include/bits/timex.h +/usr/include/bits/typesizes.h +/usr/include/bits/uio.h +/usr/include/bits/xopen_lim.h +/usr/include/gnu/stubs.h +/usr/include/linux/errno.h +/usr/include/linux/limits.h +/usr/include/linux/param.h +/usr/include/stdc-predef.h +/usr/include/sys/cdefs.h +/usr/include/asm-generic/socket.h +/usr/include/asm/errno.h +/usr/include/asm/param.h +/usr/include/bits/local_lim.h +/usr/include/gconv.h +/usr/include/gnu/stubs-32.h +/usr/include/gnu/stubs-64.h +/usr/include/gnu/stubs-x32.h +/usr/include/wchar.h +/usr/include/asm-generic/errno.h +/usr/include/asm-generic/param.h +/usr/include/asm/sockios.h +/usr/include/bits/wchar-ldbl.h +/usr/include/bits/wchar2.h +/usr/include/wctype.h +/usr/include/asm-generic/errno-base.h +/usr/include/asm-generic/sockios.h diff --git a/common/vnf_common/app.h b/common/vnf_common/app.h index 2af62f11..51c40c97 100644 --- a/common/vnf_common/app.h +++ b/common/vnf_common/app.h @@ -33,7 +33,7 @@ #include "pipeline.h" #define APP_PARAM_NAME_SIZE PIPELINE_NAME_SIZE -#define APP_LINK_PCI_BDF_SIZE 16 +#define APP_LINK_PCI_BDF_SIZE 32 struct app_link_params *fdir_p_link; struct app_mempool_params { char *name; @@ -234,7 +234,7 @@ struct app_thread_pipeline_data { }; #ifndef APP_MAX_THREAD_PIPELINES -#define APP_MAX_THREAD_PIPELINES 16 +#define APP_MAX_THREAD_PIPELINES 32 #endif #ifndef APP_THREAD_TIMER_PERIOD @@ -262,7 +262,7 @@ struct app_thread_data { }; #ifndef APP_MAX_LINKS -#define APP_MAX_LINKS 16 +#define APP_MAX_LINKS 32 #endif struct app_eal_params { @@ -386,11 +386,11 @@ struct app_eal_params { #define APP_MAX_PKTQ_TM APP_MAX_LINKS #ifndef APP_MAX_PKTQ_SOURCE -#define APP_MAX_PKTQ_SOURCE 16 +#define APP_MAX_PKTQ_SOURCE 32 #endif #ifndef APP_MAX_PKTQ_SINK -#define APP_MAX_PKTQ_SINK 16 +#define APP_MAX_PKTQ_SINK 32 #endif #ifndef APP_MAX_MSGQ diff --git a/common/vnf_common/pipeline_be.h b/common/vnf_common/pipeline_be.h index 006a415e..fad6b25f 100644 --- a/common/vnf_common/pipeline_be.h +++ b/common/vnf_common/pipeline_be.h @@ -183,31 +183,31 @@ pipeline_port_out_params_get_ops(struct pipeline_port_out_params *p) } #ifndef PIPELINE_NAME_SIZE -#define PIPELINE_NAME_SIZE 32 +#define PIPELINE_NAME_SIZE 64 #endif #ifndef PIPELINE_MAX_PORT_IN -#define PIPELINE_MAX_PORT_IN 16 +#define PIPELINE_MAX_PORT_IN 64 #endif #ifndef PIPELINE_MAX_PORT_OUT -#define PIPELINE_MAX_PORT_OUT 16 +#define PIPELINE_MAX_PORT_OUT 64 #endif #ifndef PIPELINE_MAX_TABLES -#define PIPELINE_MAX_TABLES 16 +#define PIPELINE_MAX_TABLES 64 #endif #ifndef PIPELINE_MAX_MSGQ_IN -#define PIPELINE_MAX_MSGQ_IN 16 +#define PIPELINE_MAX_MSGQ_IN 64 #endif #ifndef PIPELINE_MAX_MSGQ_OUT -#define PIPELINE_MAX_MSGQ_OUT 16 +#define PIPELINE_MAX_MSGQ_OUT 64 #endif #ifndef PIPELINE_MAX_ARGS -#define PIPELINE_MAX_ARGS 32 +#define PIPELINE_MAX_ARGS 64 #endif struct pipeline_params { -- cgit 1.2.3-korg