From: Deepak S Date: Wed, 31 May 2017 12:56:50 +0000 (+0000) Subject: [SAMPLEVNF] Adding support to handle more than 16 ports X-Git-Tag: v1.0.0~9^2 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F71%2F35571%2F2;p=samplevnf.git [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 --- diff --git a/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.c b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.c index a7f10dbd..2da8b5e4 100644 --- a/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.c +++ b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.c @@ -101,7 +101,8 @@ struct rte_ct_cnxn_tracker *cgnat_cnxn_tracker; /***** Common Port Allocation declarations *****/ struct rte_ring *port_alloc_ring[MAX_CGNAPT_SETS] = { NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL }; + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL}; const char *napt_port_alloc_ring_name[MAX_CGNAPT_SETS] = { "NAPT_PORT_ALLOC_0 ", "NAPT_PORT_ALLOC_1 ", @@ -110,7 +111,15 @@ const char *napt_port_alloc_ring_name[MAX_CGNAPT_SETS] = { "NAPT_PORT_ALLOC_4 ", "NAPT_PORT_ALLOC_5 ", "NAPT_PORT_ALLOC_6 ", - "NAPT_PORT_ALLOC_7 " + "NAPT_PORT_ALLOC_7 ", + "NAPT_PORT_ALLOC_8 ", + "NAPT_PORT_ALLOC_9 ", + "NAPT_PORT_ALLOC_10 ", + "NAPT_PORT_ALLOC_11 ", + "NAPT_PORT_ALLOC_12 ", + "NAPT_PORT_ALLOC_13 ", + "NAPT_PORT_ALLOC_14 ", + "NAPT_PORT_ALLOC_16 " }; int vnf_set_count = -1; diff --git a/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.h b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.h index c9b81fa8..94f19f1e 100644 --- a/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.h +++ b/VNFs/vCGNAPT/pipeline/pipeline_cgnapt_be.h @@ -560,7 +560,7 @@ struct pub_ip_range { int create_napt_common_table(uint32_t nFlows); struct rte_mempool *napt_port_pool; -#define MAX_CGNAPT_SETS 8 +#define MAX_CGNAPT_SETS 16 /** * A structure defining a bulk port allocation element. 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  + ~<¹e_pÜt.h +> + +19  + #ACL_LIB_DEBUG + 0 + + ) + +20  +¹e_aþ_f›ld_def + + gf›ld_fÜm©_v4 +[] = { + +23 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +24 . + gsize + = ( +ušt8_t +), + +25 . + gf›ld_šdex + = 0, + +26 . + gšput_šdex + = 0, + +27 . + goff£t + = ( +‘h”_hdr +) + + +28 +off£tof +( +v4_hdr +, +Ãxt_´Ùo_id +), + +33 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +34 . + gsize + = ( +ušt32_t +), + +35 . + gf›ld_šdex + = 1, + +36 . + gšput_šdex + = 1, + +37 . + goff£t + = ( +‘h”_hdr +) + + +38 +off£tof +( +v4_hdr +, +¤c_addr +), + +43 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +44 . + gsize + = ( +ušt32_t +), + +45 . + gf›ld_šdex + = 2, + +46 . + gšput_šdex + = 2, + +47 . + goff£t + = ( +‘h”_hdr +) + + +48 +off£tof +( +v4_hdr +, +d¡_addr +), + +53 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +54 . + gsize + = ( +ušt16_t +), + +55 . + gf›ld_šdex + = 3, + +56 . + gšput_šdex + = 3, + +57 . + goff£t + = ( +‘h”_hdr +) + + +58 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +¤c_pÜt +), + +63 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +64 . + gsize + = ( +ušt16_t +), + +65 . + gf›ld_šdex + = 4, + +66 . + gšput_šdex + = 3, + +67 . + goff£t + = ( +‘h”_hdr +) + + +68 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +d¡_pÜt +), + +72  + #SIZEOF_VLAN_HDR + 4 + + ) + +74  +¹e_aþ_f›ld_def + + gf›ld_fÜm©_vÏn_v4 +[] = { + +77 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +78 . + gsize + = ( +ušt8_t +), + +79 . + gf›ld_šdex + = 0, + +80 . + gšput_šdex + = 0, + +81 . + goff£t + = ( +‘h”_hdr +) + + +82 +SIZEOF_VLAN_HDR + + +off£tof +( +v4_hdr +, +Ãxt_´Ùo_id +), + +87 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +88 . + gsize + = ( +ušt32_t +), + +89 . + gf›ld_šdex + = 1, + +90 . + gšput_šdex + = 1, + +91 . + goff£t + = ( +‘h”_hdr +) + + +92 +SIZEOF_VLAN_HDR + + +off£tof +( +v4_hdr +, +¤c_addr +), + +97 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +98 . + gsize + = ( +ušt32_t +), + +99 . + gf›ld_šdex + = 2, + +100 . + gšput_šdex + = 2, + +101 . + goff£t + = ( +‘h”_hdr +) + + +102 +SIZEOF_VLAN_HDR + + +off£tof +( +v4_hdr +, +d¡_addr +), + +107 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +108 . + gsize + = ( +ušt16_t +), + +109 . + gf›ld_šdex + = 3, + +110 . + gšput_šdex + = 3, + +111 . + goff£t + = ( +‘h”_hdr +) + + +112 +SIZEOF_VLAN_HDR + + + +113 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +¤c_pÜt +), + +118 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +119 . + gsize + = ( +ušt16_t +), + +120 . + gf›ld_šdex + = 4, + +121 . + gšput_šdex + = 4, + +122 . + goff£t + = ( +‘h”_hdr +) + + +123 +SIZEOF_VLAN_HDR + + + +124 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +d¡_pÜt +), + +128  + #SIZEOF_QINQ_HEADER + 8 + + ) + +130  +¹e_aþ_f›ld_def + + gf›ld_fÜm©_qšq_v4 +[] = { + +133 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +134 . + gsize + = ( +ušt8_t +), + +135 . + gf›ld_šdex + = 0, + +136 . + gšput_šdex + = 0, + +137 . + goff£t + = ( +‘h”_hdr +) + + +138 +SIZEOF_QINQ_HEADER + + +off£tof +( +v4_hdr +, +Ãxt_´Ùo_id +), + +143 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +144 . + gsize + = ( +ušt32_t +), + +145 . + gf›ld_šdex + = 1, + +146 . + gšput_šdex + = 1, + +147 . + goff£t + = ( +‘h”_hdr +) + + +148 +SIZEOF_QINQ_HEADER + + +off£tof +( +v4_hdr +, +¤c_addr +), + +153 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +154 . + gsize + = ( +ušt32_t +), + +155 . + gf›ld_šdex + = 2, + +156 . + gšput_šdex + = 2, + +157 . + goff£t + = ( +‘h”_hdr +) + + +158 +SIZEOF_QINQ_HEADER + + +off£tof +( +v4_hdr +, +d¡_addr +), + +163 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +164 . + gsize + = ( +ušt16_t +), + +165 . + gf›ld_šdex + = 3, + +166 . + gšput_šdex + = 3, + +167 . + goff£t + = ( +‘h”_hdr +) + + +168 +SIZEOF_QINQ_HEADER + + + +169 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +¤c_pÜt +), + +174 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +175 . + gsize + = ( +ušt16_t +), + +176 . + gf›ld_šdex + = 4, + +177 . + gšput_šdex + = 4, + +178 . + goff£t + = ( +‘h”_hdr +) + + +179 +SIZEOF_QINQ_HEADER + + + +180 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +d¡_pÜt +), + +184  +¹e_aþ_f›ld_def + + gf›ld_fÜm©_v6 +[] = { + +187 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +188 . + gsize + = ( +ušt8_t +), + +189 . + gf›ld_šdex + = 0, + +190 . + gšput_šdex + = 0, + +191 . + goff£t + = ( +‘h”_hdr +) + + +192 +off£tof +( +v6_hdr +, +´Ùo +), + +197 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +198 . + gsize + = ( +ušt32_t +), + +199 . + gf›ld_šdex + = 1, + +200 . + gšput_šdex + = 1, + +201 . + goff£t + = ( +‘h”_hdr +) + + +202 +off£tof +( +v6_hdr +, +¤c_addr +), + +206 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +207 . + gsize + = ( +ušt32_t +), + +208 . + gf›ld_šdex + = 2, + +209 . + gšput_šdex + = 2, + +210 . + goff£t + = ( +‘h”_hdr +) + + +211 +off£tof +( +v6_hdr +, +¤c_addr +è+ ( + gušt32_t +), + +215 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +216 . + gsize + = ( +ušt32_t +), + +217 . + gf›ld_šdex + = 3, + +218 . + gšput_šdex + = 3, + +219 . + goff£t + = ( +‘h”_hdr +) + + +220 +off£tof +( +v6_hdr +, +¤c_addr +è+ 2 * ( + gušt32_t +), + +224 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +225 . + gsize + = ( +ušt32_t +), + +226 . + gf›ld_šdex + = 4, + +227 . + gšput_šdex + = 4, + +228 . + goff£t + = ( +‘h”_hdr +) + + +229 +off£tof +( +v6_hdr +, +¤c_addr +è+ 3 * ( + gušt32_t +), + +234 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +235 . + gsize + = ( +ušt32_t +), + +236 . + gf›ld_šdex + = 5, + +237 . + gšput_šdex + = 5, + +238 . + goff£t + = ( +‘h”_hdr +) + + +239 +off£tof +( +v6_hdr +, +d¡_addr +), + +243 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +244 . + gsize + = ( +ušt32_t +), + +245 . + gf›ld_šdex + = 6, + +246 . + gšput_šdex + = 6, + +247 . + goff£t + = ( +‘h”_hdr +) + + +248 +off£tof +( +v6_hdr +, +d¡_addr +è+ ( + gušt32_t +), + +252 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +253 . + gsize + = ( +ušt32_t +), + +254 . + gf›ld_šdex + = 7, + +255 . + gšput_šdex + = 7, + +256 . + goff£t + = ( +‘h”_hdr +) + + +257 +off£tof +( +v6_hdr +, +d¡_addr +è+ 2 * ( + gušt32_t +), + +261 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +262 . + gsize + = ( +ušt32_t +), + +263 . + gf›ld_šdex + = 8, + +264 . + gšput_šdex + = 8, + +265 . + goff£t + = ( +‘h”_hdr +) + + +266 +off£tof +( +v6_hdr +, +d¡_addr +è+ 3 * ( + gušt32_t +), + +271 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +272 . + gsize + = ( +ušt16_t +), + +273 . + gf›ld_šdex + = 9, + +274 . + gšput_šdex + = 9, + +275 . + goff£t + = ( +‘h”_hdr +) + + +276 ( +v6_hdr +è+ +off£tof +( +tý_hdr +, +¤c_pÜt +), + +281 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +282 . + gsize + = ( +ušt16_t +), + +283 . + gf›ld_šdex + = 10, + +284 . + gšput_šdex + = 9, + +285 . + goff£t + = ( +‘h”_hdr +) + + +286 ( +v6_hdr +è+ +off£tof +( +tý_hdr +, +d¡_pÜt +), + +290 * + $lib_aþ_ü—‹_aùive_¡ªdby_bË_v4 +( +ušt8_t + +bË_num +, + +291 +ušt32_t + * +libaþ_n_ruËs +) + +293 + `´štf +("Create LIBACL‡ctive IPV4 Tables„te_socket_id(): %i\n", + +294 + `¹e_sock‘_id +()); + +297  +¹e_bË_aþ_·¿ms + +commÚ_v4_bË_libaþ_·¿ms + = { + +298 . +Çme + = "LIBACLIPV4A", + +299 . +n_ruËs + = * +libaþ_n_ruËs +, + +300 . +n_ruË_f›lds + = + `RTE_DIM +( +f›ld_fÜm©_v4 +), + +303 + `memýy +( +commÚ_v4_bË_libaþ_·¿ms +. +f›ld_fÜm© +, + +304 +f›ld_fÜm©_v4 +, (field_format_ipv4)); + +306 +ušt32_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þ_ü—‹_aùive_¡ªdby_bË_v6 +( +ušt8_t + +bË_num +, + +318 +ušt32_t + * +libaþ_n_ruËs +) + +320 + `´štf +("Create LIBACL‡ctive IPV6 Tables„te_socket_id(): %i\n", + +321 + `¹e_sock‘_id +()); + +323  +¹e_bË_aþ_·¿ms + +commÚ_v6_bË_libaþ_·¿ms + = { + +324 . +Çme + = "LIBACLIPV6A", + +325 . +n_ruËs + = * +libaþ_n_ruËs +, + +326 . +n_ruË_f›lds + = + `RTE_DIM +( +f›ld_fÜm©_v6 +), + +329 + `memýy +( +commÚ_v6_bË_libaþ_·¿ms +. +f›ld_fÜm© +, + +330 +f›ld_fÜm©_v6 +, (field_format_ipv6)); + +332 +ušt32_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£_cÚfig +( +lib_aþ + * +¶ib_aþ +, + +343 * +¬g_Çme +, * +¬g_v®ue +, + +344 +ušt32_t + * +libaþ_n_ruËs +) + +346 +ušt32_t + +n_ruËs_´e£Á + = 0; + +347 +ušt32_t + +pkt_ty³_´e£Á + = 0; + +349 +¶ib_aþ +-> +n_ruËs + = +DEFULT_NUM_RULE +; + +350 * +libaþ_n_ruËs + = +DEFULT_NUM_RULE +; + +351 +¶ib_aþ +-> +n_ruË_f›lds + = + `RTE_DIM +( +f›ld_fÜm©_v4 +); + +352 +¶ib_aþ +-> +f›ld_fÜm© + = +f›ld_fÜm©_v4 +; + +353 +¶ib_aþ +-> +f›ld_fÜm©_size + = ( +f›ld_fÜm©_v4 +); + +354 ià( + `¡rcmp +( +¬g_Çme +, "n_rules") == 0) { + +355 ià( +n_ruËs_´e£Á +) { + +356 + `´štf +("n_rules_present"); + +359 +n_ruËs_´e£Á + = 1; + +361 +¶ib_aþ +-> +n_ruËs + = + `©oi +( +¬g_v®ue +); + +362 * +libaþ_n_ruËs + = + `©oi +( +¬g_v®ue +); + +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_v®ue +, "ipv4") == 0) { + +374 +¶ib_aþ +-> +n_ruË_f›lds + = + +375 + `RTE_DIM +( +f›ld_fÜm©_v4 +); + +376 +¶ib_aþ +-> +f›ld_fÜm© + = +f›ld_fÜm©_v4 +; + +377 +¶ib_aþ +-> +f›ld_fÜm©_size + = + +378 ( +f›ld_fÜm©_v4 +); + +383 ià( + `¡rcmp +( +¬g_v®ue +, "vlan_ipv4") == 0) { + +384 +¶ib_aþ +-> +n_ruË_f›lds + = + +385 + `RTE_DIM +( +f›ld_fÜm©_vÏn_v4 +); + +386 +¶ib_aþ +-> +f›ld_fÜm© + = + +387 +f›ld_fÜm©_vÏn_v4 +; + +388 +¶ib_aþ +-> +f›ld_fÜm©_size + = + +389 ( +f›ld_fÜm©_vÏn_v4 +); + +394 ià( + `¡rcmp +( +¬g_v®ue +, "qinq_ipv4") == 0) { + +395 +¶ib_aþ +-> +n_ruË_f›lds + = + +396 + `RTE_DIM +( +f›ld_fÜm©_qšq_v4 +); + +397 +¶ib_aþ +-> +f›ld_fÜm© + = + +398 +f›ld_fÜm©_qšq_v4 +; + +399 +¶ib_aþ +-> +f›ld_fÜm©_size + = + +400 ( +f›ld_fÜm©_qšq_v4 +); + +405 ià( + `¡rcmp +( +¬g_v®ue +, "ipv6") == 0) { + +406 +¶ib_aþ +-> +n_ruË_f›lds + = + +407 + `RTE_DIM +( +f›ld_fÜm©_v6 +); + +408 +¶ib_aþ +-> +f›ld_fÜm© + = +f›ld_fÜm©_v6 +; + +409 +¶ib_aþ +-> +f›ld_fÜm©_size + = + +410 ( +f›ld_fÜm©_v6 +); + +414 + `´štf +("other"); + +419 + } +} + +444 +ušt64_t + + +445 +lib_aþ_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +446  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +447 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +448 * +¶ib_aþ_ruË_bË_v4_aùive +, + +449 * +¶ib_aþ_ruË_bË_v6_aùive +, + +450  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +451  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +452 +ušt64_t + * +cÚÁ¿ck_mask +, + +453 +ušt64_t + * +cÚÃxi¡_mask +, + +454  +lib_aþ_v4_’abËd +,  +lib_aþ_v6_’abËd +) + +457 +ušt64_t + + glookup_h™_mask + = 0; + +458 +ušt64_t + + glookup_h™_mask_v4 + = 0; + +459 +ušt64_t + + glookup_h™_mask_v6 + = 0; + +460 +ušt64_t + + glookup_miss_mask + = 0; + +461  + g¡©us +; + +464 ià( + glib_aþ_v4_’abËd +) { + +465 ià( + gACL_LIB_DEBUG +) + +466 +´štf +("ACL IPV4 Looku°Mask Befܐð0x%" +PRIx64 +"\n", + +467 +pkts_mask +); + +468 + g¡©us + = +¹e_bË_aþ_Ýs +. +f_lookup +( + +469 +¶ib_aþ_ruË_bË_v4_aùive +, + +470 +pkts +, +pkts_mask +, & +lookup_h™_mask_v4 +, + +471 (**è +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v4 +); + +472 ià( + g¡©us + < 0) + +473 +´štf +("Lookup failed\n"); + +474 ià( + gACL_LIB_DEBUG +) + +475 +´štf +("ACL IPV4 Looku°Mask Aᔠ= 0x%" +PRIx64 +"\n", + +476 +lookup_h™_mask_v4 +); + +479 ià( + glib_aþ_v6_’abËd +) { + +480 ià( + gACL_LIB_DEBUG +) + +481 +´štf +("ACL IPV6 Looku°Mask Befܐð0x%" +PRIx64 +"\n", + +482 +pkts_mask +); + +483 + g¡©us + = +¹e_bË_aþ_Ýs +. +f_lookup +( + +484 +¶ib_aþ_ruË_bË_v6_aùive +, + +485 +pkts +, +pkts_mask +, & +lookup_h™_mask_v6 +, + +486 (**è +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v6 +); + +487 ià( + g¡©us + < 0) + +488 +´štf +("Lookup Failed\n"); + +489 ià( + gACL_LIB_DEBUG +) + +490 +´štf +("ACL IPV6 Looku°Mask 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 Looku°Mask 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Ý_w™hout_ruË + +ð +__bužtš_pÝcouÁÎ +( +lookup_miss_mask +); + +503 ià( + gACL_LIB_DEBUG +) + +504 +´štf +("pkt_wÜk_aþ_key…kts_drÝ: %" +PRIu64 + "‚_pkts: %u\n", + +505 * +pkts_drÝ_w™hout_ruË +, + +506 +__bužtš_pÝcouÁÎ +( +lookup_miss_mask +)); + +508 +ušt64_t + + gpkts_to_´oûss + = +lookup_h™_mask +; + +510 ; + gpkts_to_´oûss +;) { + +511 +ušt8_t + + gpos + = (ušt8_t) +__bužtš_ùzÎ +( +pkts_to_´oûss +); + +513 +ušt64_t + + gpkt_mask + = 1LLU << +pos +; + +515 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +516  +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +518 +ušt8_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 +ušt16_t + + gphy_pÜt + = +’Œy +-> +h—d +. +pÜt_id +; + +528 +ušt32_t + + gaùiÚ_id + = +’Œy +-> +aùiÚ_id +; + +530 ià( + gACL_LIB_DEBUG +) + +531 +´štf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +533 +ušt32_t + + gdsý_off£t + = +IP_START + + +IP_HDR_DSCP_OFST +; + +535 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +536 + glib_aþ_aùiÚ_couÁ +) { + +537 + gp_aùiÚ_couÁ”_bË + + +538 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +539 [ +aùiÚ_id +]. + g·ck‘CouÁ +++; + +540 + gp_aùiÚ_couÁ”_bË + + +541 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +542 [ +aùiÚ_id +]. + gby‹CouÁ + += + +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_aùiÚ_couÁ”_bË + + +549 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +550 [ +aùiÚ_id +]. +·ck‘CouÁ +, + +551 +p_aùiÚ_couÁ”_bË + + +552 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +553 [ +aùiÚ_id +]. +by‹CouÁ +); + +556 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +557 + glib_aþ_aùiÚ_·ck‘_drÝ +) { + +560 ià( + gACL_LIB_DEBUG +) + +561 +´štf +("ACL before drop…kt_mask %" + +562 +PRIx64 +",…kt_num %d\n", + +563 +pkts_mask +, +pos +); + +564 + gpkts_mask + &ð~(1LLU << +pos +); + +565 (* + gpkts_drÝ_w™hout_ruË +)++; + +566 ià( + gACL_LIB_DEBUG +) + +567 +´štf +("ACL‡á” dr݅kt_mask %" +PRIx64 + + +569 +PRIu64 +"\n", +pkts_mask +, +pos +, + +570 * +pkts_drÝ_w™hout_ruË +); + +573 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +574 + glib_aþ_aùiÚ_fwd +) { + +575 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +576 +fwd_pÜt +; + +577 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +578 ià( + gACL_LIB_DEBUG +) + +579 +´štf +("Action FWD Port ID: %" + +580 +PRIu16 +"\n", +phy_pÜt +); + +583 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +584 + glib_aþ_aùiÚ_Çt +) { + +585 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +586 +Çt_pÜt +; + +587 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +588 ià( + gACL_LIB_DEBUG +) + +589 +´štf +("Action NAT Port ID: %" + +590 +PRIu16 +"\n", +phy_pÜt +); + +593 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +594 + glib_aþ_aùiÚ_dsý +) { + +597 +ušt8_t + * + gdsý + = +RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +598 +dsý_off£t +); + +599 * + gdsý + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +600 +dsý_´iܙy + << 2; + +601 ià( + gACL_LIB_DEBUG +) + +602 +´štf +("Action DSCP DSCP Priority: %" + +603 +PRIu16 + "\n", * +dsý +); + +606 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +607 + glib_aþ_aùiÚ_·ck‘_acû± +) { + +608 ià( + gACL_LIB_DEBUG +) + +609 +´štf +("Action Accept\n"); + +611 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +612 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +615 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +616 ià( + gACL_LIB_DEBUG +) + +617 +´štf +("ACL CTƒnabled: 0x%" + +618 +PRIx64 +"…kt_mask: 0x%" + +619 +PRIx64 +"\n", + +620 * +cÚÁ¿ck_mask +, + +621 +pkt_mask +); + +624 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +625 & + glib_aþ_aùiÚ_cÚÃxi¡ +) { + +628 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +634 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +635 + g´iv©e_public + == + +636 +lib_aþ_public_´iv©e +) + +637 * +cÚÃxi¡_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 * +cÚÁ¿ck_mask +, + +645 * +cÚÃxi¡_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 +ušt16_t + + gphy_pÜt + = +’Œy +-> +h—d +. +pÜt_id +; + +657 +ušt32_t + + gaùiÚ_id + = +’Œy +-> +aùiÚ_id +; + +659 ià( + gACL_LIB_DEBUG +) + +660 +´štf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +662 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +663 + glib_aþ_aùiÚ_couÁ +) { + +664 + gp_aùiÚ_couÁ”_bË + + +665 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +666 [ +aùiÚ_id +]. + g·ck‘CouÁ +++; + +667 + gp_aùiÚ_couÁ”_bË + + +668 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +669 [ +aùiÚ_id +]. + gby‹CouÁ + += + +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_aùiÚ_couÁ”_bË + + +676 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +677 [ +aùiÚ_id +]. +·ck‘CouÁ +, + +678 +p_aùiÚ_couÁ”_bË + + +679 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +680 [ +aùiÚ_id +]. +by‹CouÁ +); + +683 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +684 + glib_aþ_aùiÚ_·ck‘_drÝ +) { + +686 ià( + gACL_LIB_DEBUG +) + +687 +´štf +("ACL before drop…kt_mask %" + +688 +PRIx64 +",…kt_num %d\n", + +689 +pkts_mask +, +pos +); + +690 + gpkts_mask + &ð~(1LLU << +pos +); + +691 (* + gpkts_drÝ_w™hout_ruË +)++; + +692 ià( + gACL_LIB_DEBUG +) + +693 +´štf +("ACL‡á” dr݅kt_mask %" +PRIx64 + + +695 +PRIu64 + "\n", +pkts_mask +, +pos +, + +696 * +pkts_drÝ_w™hout_ruË +); + +700 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +701 + glib_aþ_aùiÚ_fwd +) { + +702 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +703 +fwd_pÜt +; + +704 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +705 ià( + gACL_LIB_DEBUG +) + +706 +´štf +("Action FWD Port ID: %" + +707 +PRIu16 +"\n", +phy_pÜt +); + +710 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +711 + glib_aþ_aùiÚ_Çt +) { + +712 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +713 +Çt_pÜt +; + +714 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +715 ià( + gACL_LIB_DEBUG +) + +716 +´štf +("Action NAT Port ID: %" + +717 +PRIu16 +"\n", +phy_pÜt +); + +720 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +721 + glib_aþ_aùiÚ_dsý +) { + +724 +ušt32_t + + gdsý_off£t + = +IP_START + + + +725 +IP_HDR_DSCP_OFST_IPV6 +; + +726 +ušt16_t + * + gdsý + = +RTE_MBUF_METADATA_UINT16_PTR +( + +727 +pkt +, +dsý_off£t +); + +728 +ušt16_t + + g‹mp + = * +dsý +; + +729 +ušt16_t + + gdsý_v®ue + = ( +¹e_bsw­16 +( +‹mp +) & + +731 +ušt8_t + + gdsý_¡Üe + = + +732 +aùiÚ_¬¿y_aùive + + +733 [ +aùiÚ_id +]. +dsý_´iܙy + << 2; + +734 +ušt16_t + + gdsý_‹mp + = +dsý_¡Üe +; + +736 + gdsý_‹mp + = +dsý_‹mp + << 4; + +737 * + gdsý + = +¹e_bsw­16 +( +dsý_‹mp + | +dsý_v®ue +); + +738 ià( + gACL_LIB_DEBUG +) + +739 +´štf +("Action DSCP DSCP Priority: %" + +740 +PRIu16 +"\n", * +dsý +); + +743 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +744 & + glib_aþ_aùiÚ_·ck‘_acû± +) { + +745 ià( + gACL_LIB_DEBUG +) + +746 +´štf +("Action Accept\n"); + +748 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +749 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +752 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +753 ià( + gACL_LIB_DEBUG +) + +754 +´štf +("ACL CTƒnabled: 0x%" + +755 +PRIx64 +"…kt_mask: 0x%" + +756 +PRIx64 +"\n", + +757 * +cÚÁ¿ck_mask +, + +758 +pkt_mask +); + +761 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +762 & + glib_aþ_aùiÚ_cÚÃxi¡ +) { + +765 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +771 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +772 + g´iv©e_public + == + +773 +lib_aþ_public_´iv©e +) + +774 * +cÚÃxi¡_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 * +cÚÁ¿ck_mask +, + +782 * +cÚÃxi¡_mask +, + +783 +pkt_mask +); + +788  + gpkts_mask +; + +813 +ušt64_t + + +814 +lib_aþ_v4_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +815  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +816 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +817 * +¶ib_aþ_ruË_bË_v4_aùive +, + +818  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +819  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +820 +ušt64_t + * +cÚÁ¿ck_mask +, + +821 +ušt64_t + * +cÚÃxi¡_mask +) + +824 +ušt64_t + + glookup_h™_mask_v4 + = 0; + +825 +ušt64_t + + glookup_miss_mask_v4 + = 0; + +826  + g¡©us +; + +828 ià( + gACL_LIB_DEBUG +) + +829 +´štf +("ACL IPV4 Looku°Mask Befܐð0x%" +PRIx64 +"\n", + +830 +pkts_mask +); + +831 + g¡©us + = +¹e_bË_aþ_Ýs +. +f_lookup +( + +832 +¶ib_aþ_ruË_bË_v4_aùive +, + +833 +pkts +, +pkts_mask +, & +lookup_h™_mask_v4 +, + +834 (**è +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v4 +); + +835 ià( + g¡©us + < 0) + +836 +´štf +("Lookup Failed\n"); + +837 ià( + gACL_LIB_DEBUG +) + +838 +´štf +("ACL IPV4 Looku°Mask Aᔠ= 0x%" +PRIx64 +"\n", + +839 +lookup_h™_mask_v4 +); + +840 ià( + gACL_LIB_DEBUG +) + +841 +´štf +("ACL Looku°Mask 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Ý_w™hout_ruË + +ð +__bužtš_pÝcouÁÎ +( +lookup_miss_mask_v4 +); + +847 ià( + gACL_LIB_DEBUG +) + +848 +´štf +("pkt_wÜk_aþ_key…kts_drÝ: %" +PRIu64 + "‚_pkts: %u\n", + +849 * +pkts_drÝ_w™hout_ruË +, + +850 +__bužtš_pÝcouÁÎ +( +lookup_miss_mask_v4 +)); + +852 +ušt64_t + + gpkts_to_´oûss + = +lookup_h™_mask_v4 +; + +854 ; + gpkts_to_´oûss +;) { + +855 +ušt8_t + + gpos + = (ušt8_t) +__bužtš_ùzÎ +( +pkts_to_´oûss +); + +857 +ušt64_t + + gpkt_mask + = 1LLU << +pos +; + +859 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +860  +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +864  +lib_aþ_bË_’Œy + * + g’Œy + = + +865 ( +lib_aþ_bË_’Œy + *) + +866 +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v4 +[ +pos +]; + +867 +ušt16_t + + gphy_pÜt + = +’Œy +-> +h—d +. +pÜt_id +; + +868 +ušt32_t + + gaùiÚ_id + = +’Œy +-> +aùiÚ_id +; + +870 ià( + gACL_LIB_DEBUG +) + +871 +´štf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +873 +ušt32_t + + gdsý_off£t + = +IP_START + + +IP_HDR_DSCP_OFST +; + +875 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +876 + glib_aþ_aùiÚ_couÁ +) { + +877 + gp_aùiÚ_couÁ”_bË + + +878 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +879 [ +aùiÚ_id +]. + g·ck‘CouÁ +++; + +880 + gp_aùiÚ_couÁ”_bË + + +881 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +882 [ +aùiÚ_id +]. + gby‹CouÁ + += + +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_aùiÚ_couÁ”_bË + + +889 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +890 [ +aùiÚ_id +]. +·ck‘CouÁ +, + +891 +p_aùiÚ_couÁ”_bË + + +892 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +893 [ +aùiÚ_id +]. +by‹CouÁ +); + +896 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +897 + glib_aþ_aùiÚ_·ck‘_drÝ +) { + +900 ià( + gACL_LIB_DEBUG +) + +901 +´štf +("ACL before drop…kt_mask %" + +902 +PRIx64 +",…kt_num %d\n", + +903 +pkts_mask +, +pos +); + +904 + gpkts_mask + &ð~(1LLU << +pos +); + +905 (* + gpkts_drÝ_w™hout_ruË +)++; + +906 ià( + gACL_LIB_DEBUG +) + +907 +´štf +("ACL‡á” dr݅kt_mask %" +PRIx64 + + +909 +PRIu64 + "\n", +pkts_mask +, +pos +, + +910 * +pkts_drÝ_w™hout_ruË +); + +913 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +914 + glib_aþ_aùiÚ_fwd +) { + +915 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +916 +fwd_pÜt +; + +917 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +918 ià( + gACL_LIB_DEBUG +) + +919 +´štf +("Action FWD Port ID: %" + +920 +PRIu16 +"\n", +phy_pÜt +); + +923 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +924 + glib_aþ_aùiÚ_Çt +) { + +925 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +926 +Çt_pÜt +; + +927 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +928 ià( + gACL_LIB_DEBUG +) + +929 +´štf +("Action NAT Port ID: %" + +930 +PRIu16 +"\n", +phy_pÜt +); + +933 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +934 + glib_aþ_aùiÚ_dsý +) { + +937 +ušt8_t + * + gdsý + = +RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +938 +dsý_off£t +); + +939 * + gdsý + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +940 +dsý_´iܙy + << 2; + +941 ià( + gACL_LIB_DEBUG +) + +942 +´štf +("Action DSCP DSCP Priority: %" + +943 +PRIu16 + "\n", * +dsý +); + +946 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +947 + glib_aþ_aùiÚ_·ck‘_acû± +) { + +948 ià( + gACL_LIB_DEBUG +) + +949 +´štf +("Action Accept\n"); + +951 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +952 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +955 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +956 ià( + gACL_LIB_DEBUG +) + +957 +´štf +("ACL CTƒnabled: 0x%" + +958 +PRIx64 +"…kt_mask: 0x%" + +959 +PRIx64 +"\n", + +960 * +cÚÁ¿ck_mask +, + +961 +pkt_mask +); + +964 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +965 & + glib_aþ_aùiÚ_cÚÃxi¡ +) { + +968 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +974 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +975 + g´iv©e_public + == + +976 +lib_aþ_public_´iv©e +) + +977 * +cÚÃxi¡_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 * +cÚÁ¿ck_mask +, + +985 * +cÚÃxi¡_mask +, + +986 +pkt_mask +); + +991  + gpkts_mask +; + +1016 +ušt64_t + + +1017 +lib_aþ_v6_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +1018  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +1019 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +1020 * +¶ib_aþ_ruË_bË_v6_aùive +, + +1021  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +1022  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +1023 +ušt64_t + * +cÚÁ¿ck_mask +, + +1024 +ušt64_t + * +cÚÃxi¡_mask +) + +1027 +ušt64_t + + glookup_h™_mask_v6 + = 0; + +1028 +ušt64_t + + glookup_miss_mask_v6 + = 0; + +1029  + g¡©us +; + +1032 ià( + gACL_LIB_DEBUG +) + +1033 +´štf +("ACL IPV6 Looku°Mask Befܐð0x%" +PRIx64 +"\n", + +1034 +pkts_mask +); + +1035 + g¡©us + = +¹e_bË_aþ_Ýs +. +f_lookup +( + +1036 +¶ib_aþ_ruË_bË_v6_aùive +, + +1037 +pkts +, +pkts_mask +, & +lookup_h™_mask_v6 +, + +1038 (**è +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v6 +); + +1039 ià( + g¡©us + < 0) + +1040 +´štf +("Lookup Failed\n"); + +1041 ià( + gACL_LIB_DEBUG +) + +1042 +´štf +("ACL IPV6 Looku°Mask Aᔠ= 0x%" +PRIx64 +"\n", + +1043 +lookup_h™_mask_v6 +); + +1045 ià( + gACL_LIB_DEBUG +) + +1046 +´štf +("ACL Looku°Mask 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Ý_w™hout_ruË + +ð +__bužtš_pÝcouÁÎ +( +lookup_miss_mask_v6 +); + +1052 ià( + gACL_LIB_DEBUG +) + +1053 +´štf +("pkt_wÜk_aþ_key…kts_drÝ: %" +PRIu64 + "‚_pkts: %u\n", + +1054 * +pkts_drÝ_w™hout_ruË +, + +1055 +__bužtš_pÝcouÁÎ +( +lookup_miss_mask_v6 +)); + +1057 +ušt64_t + + gpkts_to_´oûss + = +lookup_h™_mask_v6 +; + +1059 ; + gpkts_to_´oûss +;) { + +1060 +ušt8_t + + gpos + = (ušt8_t) +__bužtš_ùzÎ +( +pkts_to_´oûss +); + +1062 +ušt64_t + + gpkt_mask + = 1LLU << +pos +; + +1064 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +1065  +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +1068  +lib_aþ_bË_’Œy + * + g’Œy + = + +1069 ( +lib_aþ_bË_’Œy + *) + +1070 +¶ib_aþ +-> +¶ib_aþ_’Œ›s_v6 +[ +pos +]; + +1071 +ušt16_t + + gphy_pÜt + = +’Œy +-> +h—d +. +pÜt_id +; + +1072 +ušt32_t + + gaùiÚ_id + = +’Œy +-> +aùiÚ_id +; + +1074 ià( + gACL_LIB_DEBUG +) + +1075 +´štf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +1077 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +1078 + glib_aþ_aùiÚ_couÁ +) { + +1079 + gp_aùiÚ_couÁ”_bË + + +1080 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +1081 [ +aùiÚ_id +]. + g·ck‘CouÁ +++; + +1082 + gp_aùiÚ_couÁ”_bË + + +1083 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +1084 [ +aùiÚ_id +]. + gby‹CouÁ + += + +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_aùiÚ_couÁ”_bË + + +1091 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +1092 [ +aùiÚ_id +]. +·ck‘CouÁ +, + +1093 +p_aùiÚ_couÁ”_bË + + +1094 [ +¶ib_aþ +-> +aùiÚ_couÁ”_šdex +] + +1095 [ +aùiÚ_id +]. +by‹CouÁ +); + +1098 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +1099 + glib_aþ_aùiÚ_·ck‘_drÝ +) { + +1101 ià( + gACL_LIB_DEBUG +) + +1102 +´štf +("ACL before drop…kt_mask %" + +1103 +PRIx64 +",…kt_num %d\n", + +1104 +pkts_mask +, +pos +); + +1105 + gpkts_mask + &ð~(1LLU << +pos +); + +1106 (* + gpkts_drÝ_w™hout_ruË +)++; + +1107 ià( + gACL_LIB_DEBUG +) + +1108 +´štf +("ACL‡á” dr݅kt_mask %" +PRIx64 + + +1110 +PRIu64 + "\n", +pkts_mask +, +pos +, + +1111 * +pkts_drÝ_w™hout_ruË +); + +1115 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +1116 + glib_aþ_aùiÚ_fwd +) { + +1117 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +1118 +fwd_pÜt +; + +1119 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +1120 ià( + gACL_LIB_DEBUG +) + +1121 +´štf +("Action FWD Port ID: %" + +1122 +PRIu16 +"\n", +phy_pÜt +); + +1125 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +1126 + glib_aþ_aùiÚ_Çt +) { + +1127 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +1128 +Çt_pÜt +; + +1129 + g’Œy +-> + gh—d +. + gpÜt_id + = +phy_pÜt +; + +1130 ià( + gACL_LIB_DEBUG +) + +1131 +´štf +("Action NAT Port ID: %" + +1132 +PRIu16 +"\n", +phy_pÜt +); + +1135 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + & + +1136 + glib_aþ_aùiÚ_dsý +) { + +1139 +ušt32_t + + gdsý_off£t + = +IP_START + + + +1140 +IP_HDR_DSCP_OFST_IPV6 +; + +1141 +ušt16_t + * + gdsý + = +RTE_MBUF_METADATA_UINT16_PTR +( + +1142 +pkt +, +dsý_off£t +); + +1143 +ušt16_t + + g‹mp + = * +dsý +; + +1144 +ušt16_t + + gdsý_v®ue + = ( +¹e_bsw­16 +( +‹mp +) & + +1146 +ušt8_t + + gdsý_¡Üe + = + +1147 +aùiÚ_¬¿y_aùive + + +1148 [ +aùiÚ_id +]. +dsý_´iܙy + << 2; + +1149 +ušt16_t + + gdsý_‹mp + = +dsý_¡Üe +; + +1151 + gdsý_‹mp + = +dsý_‹mp + << 4; + +1152 * + gdsý + = +¹e_bsw­16 +( +dsý_‹mp + | +dsý_v®ue +); + +1153 ià( + gACL_LIB_DEBUG +) + +1154 +´štf +("Action DSCP DSCP Priority: %" + +1155 +PRIu16 +"\n", * +dsý +); + +1158 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +1159 & + glib_aþ_aùiÚ_·ck‘_acû± +) { + +1160 ià( + gACL_LIB_DEBUG +) + +1161 +´štf +("Action Accept\n"); + +1163 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +1164 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +1167 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +1168 ià( + gACL_LIB_DEBUG +) + +1169 +´štf +("ACL CTƒnabled: 0x%" + +1170 +PRIx64 +"…kt_mask: 0x%" + +1171 +PRIx64 +"\n", + +1172 * +cÚÁ¿ck_mask +, + +1173 +pkt_mask +); + +1176 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_b™m­ + + +1177 & + glib_aþ_aùiÚ_cÚÃxi¡ +) { + +1180 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +1186 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +1187 + g´iv©e_public + == + +1188 +lib_aþ_public_´iv©e +) + +1189 * +cÚÃxi¡_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 * +cÚÁ¿ck_mask +, + +1197 * +cÚÃxi¡_mask +, + +1198 +pkt_mask +); + +1202  + gpkts_mask +; + + @VIL/acl/lib_acl.h + +17 #iâdeà +__INCLUDE_ACL_LIB_H__ + + +18  + #__INCLUDE_ACL_LIB_H__ + + + ) + +20  + ~<¡dlib.h +> + +21  + ~<¡ršg.h +> + +22  + ~<š‰y³s.h +> + +23  + ~<¹e_p–še.h +> + +24  + ~<¹e_bË_aþ.h +> + +25  + ~"¹e_úxn_Œackšg.h +" + +26  + ~"¹e_ù_tý.h +" + +28  + #lib_aþ_aùiÚ_·ck‘_drÝ + 1 + + ) + +29  + #lib_aþ_aùiÚ_·ck‘_acû± + 2 + + ) + +30  + #lib_aþ_aùiÚ_Çt + 4 + + ) + +31  + #lib_aþ_aùiÚ_fwd + 8 + + ) + +32  + #lib_aþ_aùiÚ_couÁ + 16 + + ) + +33  + #lib_aþ_aùiÚ_dsý + 32 + + ) + +34  + #lib_aþ_aùiÚ_cÚÁ¿ck + 64 + + ) + +35  + #lib_aþ_aùiÚ_cÚÃxi¡ + 128 + + ) + +36  + #aùiÚ_¬¿y_max + 10000 + + ) + +37  + #lib_aþ_´iv©e_public + 0 + + ) + +38  + #lib_aþ_public_´iv©e + 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  + sp–še_aùiÚ_key + { + +50 +ušt32_t + + maùiÚ_id +; + +51 +ušt32_t + + maùiÚ_b™m­ +; + +52 +ušt32_t + + mÇt_pÜt +; + +53 +ušt32_t + + mfwd_pÜt +; + +54 +ušt8_t + + mdsý_´iܙy +; + +55 +ušt8_t + + m´iv©e_public +; + +56 } + g__¹e_ÿche_®igÃd +; + +62  + saùiÚ_couÁ”_block + { + +63 +ušt64_t + + mby‹CouÁ +; + +64 +ušt64_t + + m·ck‘CouÁ +; + +65 } + g__¹e_ÿche_®igÃd +; + +70  + slib_aþ_bË_’Œy + { + +71  +¹e_p–še_bË_’Œy + + mh—d +; + +72 +ušt32_t + + maùiÚ_id +; + +76  + slib_aþ + { + +77 +ušt32_t + + mn_ruËs +; + +78 +ušt32_t + + mn_ruË_f›lds +; + +79  +¹e_aþ_f›ld_def + * + mf›ld_fÜm© +; + +80 +ušt32_t + + mf›ld_fÜm©_size +; + +81  + maùiÚ_couÁ”_šdex +; + +82  +lib_aþ_bË_’Œy + + +83 * + m¶ib_aþ_’Œ›s_v4 +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +84  +lib_aþ_bË_’Œy + + +85 * + m¶ib_aþ_’Œ›s_v6 +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +86 } + g__¹e_ÿche_®igÃd +; + +88 * +lib_aþ_ü—‹_aùive_¡ªdby_bË_v4 +( +ušt8_t + +bË_num +, + +89 +ušt32_t + * +libaþ_n_ruËs +); + +91 * +lib_aþ_ü—‹_aùive_¡ªdby_bË_v6 +( +ušt8_t + +bË_num +, + +92 +ušt32_t + * +libaþ_n_ruËs +); + +93  +lib_aþ_·r£_cÚfig +( +lib_aþ + * +¶ib_aþ +, + +94 * +¬g_Çme +, * +¬g_v®ue +, + +95 +ušt32_t + * +libaþ_n_ruËs +); + +96 +ušt64_t + + +97 +lib_aþ_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +98  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +99 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +100 * +¶ib_aþ_ruË_bË_v4_aùive +, + +101 * +¶ib_aþ_ruË_bË_v6_aùive +, + +102  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +103  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +104 +ušt64_t + * +cÚÁ¿ck_mask +, + +105 +ušt64_t + * +cÚÃxi¡_mask +, + +106  +lib_aþ_v4_’abËd +,  +lib_aþ_v6_’abËd +); + +107 +ušt64_t + + +108 +lib_aþ_v4_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +109  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +110 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +111 * +¶ib_aþ_ruË_bË_v4_aùive +, + +112  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +113  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +114 +ušt64_t + * +cÚÁ¿ck_mask +, + +115 +ušt64_t + * +cÚÃxi¡_mask +); + +116 +ušt64_t + + +117 +lib_aþ_v6_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +118  +¹e_mbuf + ** +pkts +, +ušt64_t + +pkts_mask +, + +119 +ušt64_t + * +pkts_drÝ_w™hout_ruË +, + +120 * +¶ib_aþ_ruË_bË_v6_aùive +, + +121  +p–še_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +122  +aùiÚ_couÁ”_block + (* +p_aùiÚ_couÁ”_bË +)[ +aùiÚ_¬¿y_max +], + +123 +ušt64_t + * +cÚÁ¿ck_mask +, + +124 +ušt64_t + * +cÚÃxi¡_mask +); + + @VIL/alg/lib_ftp_alg.c + +16  + ~<¡dio.h +> + +17  + ~<¡dlib.h +> + +18  + ~<¡dšt.h +> + +19  + ~<¡ršg.h +> + +20  + ~ + +22  + ~<­p.h +> + +23  + ~<¹e_commÚ.h +> + +24  + ~<¹e_m®loc.h +> + +25  + ~<¹e_mbuf.h +> + +26  + ~<¹e_.h +> + +27  + ~<¹e_by‹Üd”.h +> + +28  + ~<¹e_bË_Ím.h +> + +29  + ~<¹e_bË_hash.h +> + +30  + ~<¹e_p–še.h +> + +31  + ~<¹e_¬p.h +> + +32  + ~<¹e_icmp.h +> + +33  + ~<¹e_hash.h +> + +34  + ~<¹e_jhash.h +> + +35  + ~<¹e_cyþes.h +> + +36  + ~"p–še_cgDZ_commÚ.h +" + +37  + ~"p–še_aùiÚs_commÚ.h +" + +38  + ~"p–še_cgDZ_be.h +" + +39  + ~"hash_func.h +" + +40  + ~"lib_áp_®g.h +" + +41  + ~"vnf_commÚ.h +" + +42  + ~"p–še_commÚ_be.h +" + +43  + ~"¹e_ù_tý.h +" + +44  + ~"¹e_úxn_Œackšg.h +" + +45  + #ALG_DEBUG + 1 + + ) + +48 +ušt8_t + + +49 +¹e_ù_ü—‹_úxn_hashkey +( + +50 +ušt32_t + * +¤c_addr +, + +51 +ušt32_t + * +d¡_addr +, + +52 +ušt16_t + +¤c_pÜt +, + +53 +ušt16_t + +d¡_pÜt +, + +54 +ušt8_t + +´Ùo +, + +55 +ušt32_t + * +key +, + +56 +ušt8_t + +ty³ +); + +59  +¹e_mbuf + * + glib_®g_pkt +; + +60 ’um { + mPRIVATE +, + mPUBLIC +}; + +61  +¹e_hash_·¿m‘”s + + gáp_®g_hash_·¿ms + = { + +62 . +Çme + = "FTP ALG", + +63 . + g’Œ›s + = 1024, + +64 . + g»£rved + = 0, + +65 . + gkey_Ën + = ( +áp_®g_key +), + +66 . + ghash_func + = +¹e_jhash +, + +67 . + ghash_func_š™_v® + = 0, + +70  +¹e_hash + * + gáp_®g_hash_hªdË +; + +75  + $lib_áp_®g_š™ +() + +77 + `´štf +("NAT FTP ALG initialization ...\n"); + +81 +áp_®g_hash_hªdË + = + `¹e_hash_ü—‹ +(& +áp_®g_hash_·¿ms +); + +83 #ifdeà +ALGDBG + + +84 ià( +áp_®g_hash_hªdË + =ð +NULL +) + +85 + `´štf +("FTP ALG„te_hash_create failed ...\n"); + +87 + `´štf +("ftp_alg_hash_table %p\n\n", + +88 (*) +áp_®g_hash_hªdË +); + +91 + } +} + +99  +áp_®g_bË_’Œy + * + $»Œ›ve_áp_®g_’Œy +( +áp_®g_key + +®g_key +) + +101  +áp_®g_bË_’Œy + * +»t_®g_d©a + = +NULL +; + +102 +®g_key +. +fžËr1 + = 0; + +103 +®g_key +. +fžËr2 + = 0; + +105  +»t + = + `¹e_hash_lookup_d©a +( +áp_®g_hash_hªdË +, & +®g_key +, + +106 (**)& +»t_®g_d©a +); + +107 ià( +»t + < 0) { + +108 #ifdeà +ALGDBG + + +109 + `´štf +("alg-hash†ookup failed„et %d, EINVAL %d, ENOENT %d\n", + +110 +»t +, +EINVAL +, +ENOENT +); + +113  +»t_®g_d©a +; + +116  +NULL +; + +117 + } +} + +124  + $»move_áp_®g_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +) + +129  +áp_®g_key + +®g_key +; + +130 +®g_key +. +l4pÜt + = + `¹e_bsw­16 +( +pÜtid +); + +131 +®g_key +. +_add»ss + = + `¹e_bsw­32 +( +addr +); + +132 +®g_key +. +fžËr1 + = 0; + +133 +®g_key +. +fžËr2 + = 0; + +135 #ifdeà +ALGDBG + + +136 + `´štf +("»move_®g_’Œy i°%x,…܈%d\n", +®g_key +. +_add»ss +, + +137 +®g_key +. +l4pÜt +); + +139  + `¹e_hash_d–_key +( +áp_®g_hash_hªdË +, & +®g_key +); + +140 + } +} + +147 + $pÝuϋ_áp_®g_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +) + +151  +áp_®g_key + +®g_key +; + +152 +®g_key +. +l4pÜt + = + `¹e_bsw­16 +( +pÜtid +); + +154 +®g_key +. +_add»ss + = + `¹e_bsw­32 +( +addr +); + +155 +®g_key +. +fžËr1 + = 0; + +156 +®g_key +. +fžËr2 + = 0; + +161 #ifdeà +ALGDBG + + +162 + `´štf +("pÝuϋ_áp_®g_’Œy i°%x,…܈%d\n", +®g_key +. +_add»ss +, + +163 +®g_key +. +l4pÜt +); + +166  +áp_®g_bË_’Œy + * +Ãw_®g_d©a + = + +167 + `»Œ›ve_áp_®g_’Œy +( +®g_key +); + +168 ià( +Ãw_®g_d©a +) { + +169 #ifdeà +ALGDBG + + +170 + `´štf +("®g_’Œyƒxi¡ %x,…܈%d\n", +®g_key +. +_add»ss +, + +171 +®g_key +. +l4pÜt +); + +176 +Ãw_®g_d©a + = ( +áp_®g_bË_’Œy + *) + +177 + `m®loc +(( +Ãw_®g_d©a +)); + +179 +Ãw_®g_d©a +-> +l4pÜt + = + `¹e_bsw­16 +( +pÜtid +); + +180 +Ãw_®g_d©a +-> +_add»ss + = + `¹e_bsw­32 +( +addr +); + +181 + `¹e_hash_add_key_d©a +( +áp_®g_hash_hªdË +, & +®g_key +, +Ãw_®g_d©a +); + +183 #ifdeà +ALGDBG + + +185 +´štf + + +187 ( +®g_key +. +_add»ss + >> 24), + +188 (( +®g_key +. +_add»ss + & 0x00ff0000) >> 16), + +189 (( +®g_key +. +_add»ss + & 0x0000ff00) >> 8), + +190 (( +®g_key +. +_add»ss + & 0x000000ff)), +pÜtid +); + +192 + `puts +(""); + +194 + } +} + +202  + $áp_®g_modify_·ylßd +( + +203  +cgDZ_bË_’Œy + * +eg»ss_’Œy +, + +204 * +pÜt_¡ršg +, + +205 * +pÜt_¡ršg_Œª¦©ed +,  +áp_£ssiÚ_ty³ +) + +207 +ušt32_t + +Œª¥Üt_ +; + +208 +ušt16_t + +Œª¥Üt_pÜt +; + +209 +ušt16_t + +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +; + +210 +ušt16_t + +Ãw_pÜt_¡ršg_Ëngth +; + +212 +ušt8_t + * +b±r_public_add»ss +; + +214 +Œª¥Üt_ + = +eg»ss_’Œy +-> +d©a +. +pub_ +; + +215 +Œª¥Üt_pÜt + = +eg»ss_’Œy +-> +d©a +. +pub_pÜt +; + +216 +tmp5 + = ( +ušt16_t +è( +Œª¥Üt_pÜt +/0x100); + +217 +tmp6 + = ( +ušt16_t +è( +Œª¥Üt_pÜt + % 0x100); + +219 +Œª¥Üt_ + = + `¹e_bsw­32 +(transport_ip); + +221 +b±r_public_add»ss + = ( +ušt8_t + *è& +Œª¥Üt_ +; + +223 +tmp4 + = +b±r_public_add»ss +[3]; + +224 +tmp3 + = +b±r_public_add»ss +[2]; + +225 +tmp2 + = +b±r_public_add»ss +[1]; + +226 +tmp1 + = +b±r_public_add»ss +[0]; + +228 ià( +áp_£ssiÚ_ty³ + == 1) + +229 + `¥rštf +( +pÜt_¡ršg_Œª¦©ed +, +FTP_PASV_PARAMETER_STRING +, + +230 +FTP_PASV_RETURN_CODE +, +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, + +231 +tmp5 +, +tmp6 +); + +233 + `¥rštf +( +pÜt_¡ršg_Œª¦©ed +, +FTP_PORT_PARAMETER_STRING +, + +234 +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +); + +235 #ifdeà +ALGDBG + + +236 + `´štf +("FTP ALG: FTP‚ew string: Len:%d %s\n", + +237 ( +ušt16_t +è + `¡¾’ +( +pÜt_¡ršg_Œª¦©ed +)-2, + +238 +pÜt_¡ršg_Œª¦©ed +); + +240 + `´štf +("FTP‚onranslated PASV string: Len:%d, %s\n", + +241 ( +ušt16_t +) + `¡¾’ +( +pÜt_¡ršg +)-2,…ort_string); + +242 + `´štf +("old strlen:%d‚ew strlen:%d\n", + +243 () + `¡¾’ +( +pÜt_¡ršg +), + +244 () + `¡¾’ +( +pÜt_¡ršg_Œª¦©ed +)); + +247 ( +Ãw_pÜt_¡ršg_Ëngth + = + +248 ( +ušt16_t +è + `¡¾’ +( +pÜt_¡ršg_Œª¦©ed +)); + +249 + } +} + +256  +šlše +  + $áp_®g_modify_pkt_Ën +( +¹e_mbuf + * +pkt +) + +258 +ušt16_t + +pkt_Ëngth + = 0; + +259  +_hdr_size_by‹s + = + `¹e_ù_g‘_IP_hdr_size +( +pkt +); + +260 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +262 ià( +_hdr_size_by‹s + =ð +IPv4_HEADER_SIZE +) { + +263  +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +264 +pkt_Ëngth + = + `¹e_bsw­16 +( +ihdr4 +-> +tÙ®_Ëngth +è+ +ETH_HDR_SIZE +; + +265 } ià( +_hdr_size_by‹s + =ð +IPv6_HEADER_SIZE +) { + +266  +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +267 +pkt_Ëngth + = + `¹e_bsw­16 +( +ihdr6 +-> +·ylßd_Ën +) + + +268 +IPv6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +271 +ušt16_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 +ušt16_t + + $áp_®g_g‘_IP_hdr_size +( +¹e_mbuf + * +pkt +) + +298 +ušt8_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_ù_v”siÚ +( +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_bsw­32 +( +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 +ušt16_t + +_hdr_size_by‹s + = +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_by‹s +); + +369 +ušt32_t + +‹mp +; + +370 +‹mp + = + `¹e_bsw­32 +( +thdr +-> +»cv_ack +); + +372 ià( +ackSeqdiff + < 0) + +373 +‹mp + +ð + `abs +( +ackSeqdiff +); + +375 +‹mp + -ð + `abs +( +ackSeqdiff +); + +377 +thdr +-> +»cv_ack + = + `¹e_bsw­32 +( +‹mp +); + +378 + } +} + +386  + $áp_®g_adju¡_tý_£q +( +¹e_mbuf + * +pkt +, +št16_t + +ackSeqdiff +) + +389 +ušt16_t + +_hdr_size_by‹s + = +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_by‹s +); + +395 +ušt32_t + +‹mp +; + +397 +‹mp + = + `¹e_bsw­32 +( +thdr +-> +£Á_£q +); + +398 ià( +ackSeqdiff + < 0) + +399 +‹mp + -ð + `abs +( +ackSeqdiff +); + +401 +‹mp + +ð + `abs +( +ackSeqdiff +); + +403 +thdr +-> +£Á_£q + = + `¹e_bsw­32 +( +‹mp +); + +404 + } +} + +414  + $áp_®g_d–_tý_£qu’û +( + +415  +¹e_mbuf + * +pkt +, + +416 * +pÜt_¡ršg +, + +417 +št16_t + +exi¡šg_týSeqdiff +, + +418 +ušt16_t + +Þd_pÜt_¡ršg_Ëngth +, + +419 +ušt16_t + +Ãw_pÜt_¡ršg_Ëngth +) + +421 +št16_t + +cu¼’t_£qu’û_numb”_d– +=0; + +422 +št16_t + +fš®_£qu’û_numb”_d– +; + +424 +ušt16_t + +_hdr_size_by‹s + = +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_by‹s +); + +434 +cu¼’t_£qu’û_numb”_d– + = ( +št16_t +è( +Ãw_pÜt_¡ršg_Ëngth + - + +435 +Þd_pÜt_¡ršg_Ëngth +); + +436 +hdr +-> +tÙ®_Ëngth + = + `¹e_bsw­16 +(iphdr->total_length); + +438 #ifdeà +ALGDBG + + +439 + `´štf +("tÙ®_Ëngth :%u\n", +hdr +-> +tÙ®_Ëngth +); + +441 if( +cu¼’t_£qu’û_numb”_d– + < 0) + +442 +hdr +-> +tÙ®_Ëngth + -ð + `abs +( +cu¼’t_£qu’û_numb”_d– +); + +444 +hdr +-> +tÙ®_Ëngth + +ð +cu¼’t_£qu’û_numb”_d– +; + +446 +hdr +-> +tÙ®_Ëngth + = + `¹e_bsw­16 +(iphdr->total_length); + +447 ià( +exi¡šg_týSeqdiff + !=0) + +448 + `áp_®g_adju¡_tý_£q +( +pkt +, +exi¡šg_týSeqdiff +); + +449 +fš®_£qu’û_numb”_d– +ð +cu¼’t_£qu’û_numb”_d– + + +exi¡šg_týSeqdiff +; + +450  +fš®_£qu’û_numb”_d– +; + +451 + } +} + +462  + $áp_®g_dpi +( + +463  +p–še_cgDZ + * +p_Çt +, + +464  +p–še_cgDZ_’Œy_key + * +Çt_’Œy_key +, + +465  +¹e_mbuf + * +pkt +, + +466  +¹e_ù_úxn_Œack” + * +cgÇt_úxn_Œack” +, + +467 +št32_t + +ù_pos™iÚ +, + +468 +ušt8_t + +dœeùiÚ +) + +476 * +pÜt_cmd_¡ršg +; + +477 * +pÜt_cmd_’d_¡ršg +; + +478 * +tý_h—d”_’d +; + +479 * +tý_¡¬t +; + +482 +ušt16_t + +´iv©e_pÜt_numb” +; + +483 +ušt16_t + +public_pÜt_numb” +; + +484 +ušt16_t + +1 +, +2 +, +3 +, +4 +, +pÜt1 +, +pÜt2 +; + +485 +št16_t + +týSeqdiff +; + +486 +št16_t + +ackSeqdiff +, +ackAdju¡ +; + +487 +ušt32_t + +´iv©e_add»ss +; + +488 +ušt32_t + +public_add»ss +; + +489 +ušt8_t + * +b±r_´iv©e_add»ss +; + +491  +pÜt_¡ršg +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +492  +pÜt_¡ršg_Œª¦©ed +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +493 +št16_t + +Ãw_pÜt_¡ršg_Ëngth +; + +494 +št16_t + +Þd_pÜt_¡ršg_Ëngth +; + +495  +dummy_v®ue +; + +496  +cgDZ_bË_’Œy + * +eg»ss_’Œy +, * +šg»ss_’Œy +; + +497 +ušt32_t + +ù_key +[10]; + +498 +ušt8_t + +key_dœeùiÚ +; + +500 +ušt16_t + +_hdr_size_by‹s + = +IPv4_HEADER_SIZE +; + +502  +v4_hdr + * +_hdr + = + `¹e_pktmbuf_mtod_off£t +( +pkt +, + +503  +v4_hdr + *, ( +‘h”_hdr +)); + +507  +tý_hdr + * +thdr + = + `¹e_pktmbuf_mtod_off£t +( +pkt +, tcp_hdr *, + +508 (( +‘h”_hdr +)+( +v4_hdr +))); + +509 +ušt16_t + +¤c_pÜt + = + `¹e_bsw­16 +( +thdr +->src_port); + +510 +ušt16_t + +d¡_pÜt + = + `¹e_bsw­16 +( +thdr +->dst_port); + +511 +ušt8_t + +´Ùo + = +_hdr +-> +Ãxt_´Ùo_id +; + +512 +ušt32_t + +¤c_addr + = + `¹e_bsw­32 +( +_hdr +->src_addr); + +513 +ušt32_t + +d¡_addr + = + `¹e_bsw­32 +( +_hdr +->dst_addr); + +514 +ušt32_t + +tmp_tý_·ylod_size +; + +517 - +¤c_pÜt + & +d¡_pÜt + +checkšg + +to + +be + +moved + +äom + +cgÇt +Ø +dpi + + +518 - +FÜ + +cÚŒÞ + +chªÃl + + +519 +fœ¡ + +v®id©iÚ + +of + +týSeqdiff + +to + +be + +checked + + +520 +IF + < > 0 + +521 + `áp_®g_tý_ack +(è +to + +be + + `ÿÎed +( +this + +šþudes + +PORT + + +522 +»¥Ú£ + +ªd + +PASV +„e¥Ú£ +ack + +as + +w–l +) + +523 +R‘uº + + +524 +ELSE + + +525 +the + +pÜt +/ +·sv + +·¿m‹r + +checkign + +to + +be + +dÚe + + +526 - +FÜ + +d©a + +chªÃl + + +527 - +»Œeive + +ALG + +’Œy + + +528 +IF + +found + + +529 - +»move + +the + +ALG + +’Œy + + +530 +ev’ +  +nÙ + + `found +( +found + +ÿ£s + +too +) + +531 - +£t + +the + +by·ss + +æag + +š +h +CT + +£ssiÚ + +bË + + +535 #ifdeà +ALGDBG + + +537 + `´štf +("á°p܈numb”: %d, %d\n", +¤c_pÜt +, +d¡_pÜt +); + +538 + `´štf +("ftp TCP seq‚um diff: %d\n", + +539 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ + +540 +ù_pos™iÚ +]. +týSeqdiff +); + +541 + `´štf +("tcp data offset: %d\n", + +542 (( +thdr +-> +d©a_off + & 0xf0) >> 2)); + +543 + `´štf +("ù…os™iÚ iÀdpi:%d\n", +ù_pos™iÚ +); + +547 ià( +¤c_pÜt + =ð21 || +d¡_pÜt + == 21) { + +556 +tý_¡¬t + = (*) +thdr +; + +559 +pÜt_cmd_¡ršg + = (* )( +tý_¡¬t ++(( +thdr +-> +d©a_off + & 0xf0) >> 2)); + +560 +tý_h—d”_’d + = +pÜt_cmd_¡ršg +; + +562 ià( +dœeùiÚ + =ð +PRIVATE +) { + +564 #ifdeà +ALGDBG + + +565 + `´štf +("In PRIVATE "); + +568 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +£q_þ›Á + + +569 ð + `¹e_bsw­32 +( +thdr +-> +£Á_£q +); + +570 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +ack_þ›Á + + +571 ð + `¹e_bsw­32 +( +thdr +-> +»cv_ack +); + +572 #ifdeà +ALGDBG + + +573 + `´štf +("-->Seq_cli:%u, Ack_cli:%u, Len:%4d\n", + +574 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +), + +575 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +576 ( + `¹e_bsw­16 +( +_hdr +-> +tÙ®_Ëngth +) - + +577 ((( +thdr +-> +d©a_off + & 0xf0) >> 4) * 4)) - 20); + +581 #ifdeà +ALGDBG + + +582 + `´štf +("In PUBLIC "); + +584 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +£q_£rv” + + +585 ð + `¹e_bsw­32 +( +thdr +-> +£Á_£q +); + +586 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +ack_£rv” + + +587 ð + `¹e_bsw­32 +( +thdr +-> +»cv_ack +); + +588 #ifdeà +ALGDBG + + +589 + `´štf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +590 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +),„‹_bsw­32Ñhdr-> +»cv_ack +), + +591 ( +_hdr +-> +tÙ®_Ëngth + - ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) + +596 ià( + `ssÿnf +( +pÜt_cmd_¡ršg +, +FTP_PASV_PARAMETER_STRING +, & +dummy_v®ue +, + +597 & +1 +, & +2 +, & +3 +, & +4 +, & +pÜt1 +, & +pÜt2 +) == + +598 +FTP_PASV_PARAMETER_COUNT +){ + +600 + `¥rštf + ( +pÜt_¡ršg +, +FTP_PASV_PARAMETER_STRING +, +FTP_PASV_RETURN_CODE +, + +601 +1 +, +2 +, +3 +, +4 +, +pÜt1 +, +pÜt2 +); + +603  +i + = 0; + +604  +pÜt_cmd_¡ršg +[ +i +] != '\r' &&…ort_cmd_string[i+1] != '\n') + +605 +i +++; + +607 +i + += 2; + +609 +Þd_pÜt_¡ršg_Ëngth + = +i +; + +611 +´iv©e_pÜt_numb” + = ( +ušt16_t +è( +pÜt1 + * 0x100 + +pÜt2 +); + +612 +b±r_´iv©e_add»ss + = ( +ušt8_t + *è& +´iv©e_add»ss +; + +614 +b±r_´iv©e_add»ss +[3] = ( +ušt8_t +è( +4 + & 0x00FF); + +615 +b±r_´iv©e_add»ss +[2] = ( +ušt8_t +è( +3 + & 0x00FF); + +616 +b±r_´iv©e_add»ss +[1] = ( +ušt8_t +è( +2 + & 0x00FF); + +617 +b±r_´iv©e_add»ss +[0] = ( +ušt8_t +è( +1 + & 0x00FF); + +621 ià( +dœeùiÚ + =ð +PUBLIC +) { + +628 + `pÝuϋ_áp_®g_’Œy +( +´iv©e_add»ss +, +´iv©e_pÜt_numb” +); + +634 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +635 +£rv”_dœeùiÚ + = +SERVER_IN_PUBLIC +; + +636 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +637 +áp_£ssiÚ_ty³ += 1; + +638 } ià( +dœeùiÚ + =ð +PRIVATE +) { + +641  +p–še_cgDZ_’Œy_key + +d©a_chªÃl_key +; + +642 +´iv©e_add»ss + = + `¹e_bsw­32 +(private_address); + +643 +d©a_chªÃl_key +. + + = +´iv©e_add»ss +; + +644 +d©a_chªÃl_key +. +pÜt + = +´iv©e_pÜt_numb” +; + +646 +d©a_chªÃl_key +. +pid + = +pkt +-> +pÜt +; + +653 #ifdeà +FTP_ALG + + +654 ià( + `add_dyÇmic_cgDZ_’Œy_®g +(( +p–še + *) +p_Çt +, + +655 & +d©a_chªÃl_key +, & +eg»ss_’Œy +, & +šg»ss_’Œy +) == 0){ + +657 #ifdeà +ALGDBG + + +658 + `´štf +("Wrong FTP ALG…acket\n"); + +662 +p_Çt +-> +DZDrݳdPktCouÁ +++; + +664 #ifdeà +CGNAPT_DEBUGGING + + +665 +p_Çt +-> +DZDrݳdPktCouÁ4 +++; + +671 +tmp_tý_·ylod_size + = + `¹e_bsw­16 +( +_hdr +-> +tÙ®_Ëngth +) - + +672 (( +thdr +-> +d©a_off + & 0xf0è>> 2è- +_hdr_size_by‹s +; + +673 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +674 +tý_·ylßd_size + = +tmp_tý_·ylod_size +; + +677 + `pÝuϋ_áp_®g_’Œy +( +eg»ss_’Œy +-> +d©a +. +pub_ +, + +678 +eg»ss_’Œy +-> +d©a +. +pub_pÜt +); + +680 +Ãw_pÜt_¡ršg_Ëngth + = + `áp_®g_modify_·ylßd +( +eg»ss_’Œy +, + +681 +pÜt_¡ršg +, + +682 +pÜt_¡ršg_Œª¦©ed +, 1); + +683 + `¡ºýy +( +tý_h—d”_’d +, +pÜt_¡ršg_Œª¦©ed +, + +684 + `¡¾’ +( +pÜt_¡ršg_Œª¦©ed +)); + +685 +týSeqdiff + = + `áp_®g_d–_tý_£qu’û +Ð +pkt +, +pÜt_¡ršg +, + +686 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +687 [ +ù_pos™iÚ +]. +týSeqdiff +, + +688 +Þd_pÜt_¡ršg_Ëngth +, + +689 +Ãw_pÜt_¡ršg_Ëngth +); + +692 + `áp_®g_modify_pkt_Ën +( +pkt +); + +699 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +700 +®g_by·ss_æag + = +NO_BYPASS +; + +701 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +702 +týSeqdiff + =cpSeqdiff; + +703 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +704 +£rv”_dœeùiÚ + = +SERVER_IN_PRIVATE +; + +705 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +706 +áp_£ssiÚ_ty³ + = 1; + +710 } ià( + `ssÿnf +( +pÜt_cmd_¡ršg +, +FTP_PORT_PARAMETER_STRING +, + +711 & +1 +, & +2 +, & +3 +, & +4 +, & +pÜt1 +, & +pÜt2 +) == + +712 +FTP_PORT_PARAMETER_COUNT +){ + +714  +i + = 0; + +715  +ušt8_t + +pÜt_h™ +; + +716  +pÜt_cmd_¡ršg +[ +i +] != '\r' && + +717 +pÜt_cmd_¡ršg +[ +i ++1] != '\n') + +718 +i +++; + +720 +i + += 2; + +722 +Þd_pÜt_¡ršg_Ëngth + = +i +; + +724 #ifdeà +ALGDBG + + +725 + `´štf +Ð" Exi¡šg Seq Difàð%d", +cgÇt_úxn_Œack” +-> + +726 +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +týSeqdiff +); + +727 + `´štf +("FTP ALG: FTP PORT command†ength: %d\n", + +728 +Þd_pÜt_¡ršg_Ëngth +); + +731 +´iv©e_pÜt_numb” + = ( +ušt16_t +è( +pÜt1 + * 0x100 + +pÜt2 +); + +733 #ifdeà +ALGDBG + + +734 + `´štf +("FTP ALG:…rivate…ort‚umber before swap: %u\n", + +735 +´iv©e_pÜt_numb” +); + +738 +b±r_´iv©e_add»ss + = ( +ušt8_t + *è& +´iv©e_add»ss +; + +739 +b±r_´iv©e_add»ss +[3] = ( +ušt8_t +è( +4 + & 0x00FF); + +740 +b±r_´iv©e_add»ss +[2] = ( +ušt8_t +è( +3 + & 0x00FF); + +741 +b±r_´iv©e_add»ss +[1] = ( +ušt8_t +è( +2 + & 0x00FF); + +742 +b±r_´iv©e_add»ss +[0] = ( +ušt8_t +è( +1 + & 0x00FF); + +744 + `¥rštf +( +pÜt_¡ršg +, +FTP_PORT_PARAMETER_STRING +, +1 +, +2 +, + +745 +3 +, +4 +, +pÜt1 +, +pÜt2 +); + +747 #ifdeà +ALGDBG + + +748 + `´štf +("FTP ALG: FTP original PORT string: %d,%s\n", + +749 (è + `¡¾’ +( +pÜt_¡ršg +)-2,…ort_string); + +750 + `´štf +("´v‡ddr: %x\n", +´iv©e_add»ss +); + +754 ià( +dœeùiÚ + =ð +PUBLIC +) { + +760  +p–še_cgDZ_’Œy_key + +d©a_chªÃl_key +; + +761 +d©a_chªÃl_key +. + + = +´iv©e_add»ss +; + +762 +d©a_chªÃl_key +. +pÜt + = +´iv©e_pÜt_numb” +; + +763 +d©a_chªÃl_key +. +pid + = 0xffff; + +766 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +767 +£rv”_dœeùiÚ + = +SERVER_IN_PRIVATE +; + +768 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +769 +áp_£ssiÚ_ty³ += 0; + +772 #ifdeà +ALGDBG + + +773 + `´štf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +774 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +), + +775 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +776 ( +_hdr +-> +tÙ®_Ëngth + - + +777 ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) - 20)); + +779 + `pÝuϋ_áp_®g_’Œy +( +´iv©e_add»ss +, +´iv©e_pÜt_numb” +); + +780 } ià( +dœeùiÚ + =ð +PRIVATE +) { + +786  +p–še_cgDZ_’Œy_key + +d©a_chªÃl_key +; + +787 +´iv©e_add»ss + = + `¹e_bsw­32 +(private_address); + +788 +d©a_chªÃl_key +. + + = +´iv©e_add»ss +; + +789 +d©a_chªÃl_key +. +pÜt + = +´iv©e_pÜt_numb” +; + +791 +d©a_chªÃl_key +. +pid + = +pkt +-> +pÜt +; + +800 #ifdeà +FTP_ALG + + +801 ià( + `add_dyÇmic_cgDZ_’Œy_®g +(( +p–še + *) + +802 +p_Çt +, & +d©a_chªÃl_key +, & +eg»ss_’Œy +, + +803 & +šg»ss_’Œy +) == 0){ + +805 #ifdeà +ALGDBG + + +806 + `´štf +("Wrong FTP ALG…acket\n"); + +809 +p_Çt +-> +DZDrݳdPktCouÁ +++; + +811 #ifdeà +CGNAPT_DEBUGGING + + +812 +p_Çt +-> +DZDrݳdPktCouÁ4 +++; + +818 +tmp_tý_·ylod_size + = + `¹e_bsw­16 +( +_hdr +-> +tÙ®_Ëngth +) - + +819 (( +thdr +-> +d©a_off + & 0xf0) >> 2) - + +820 +_hdr_size_by‹s +; + +821 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +822 +tý_·ylßd_size + = +tmp_tý_·ylod_size +; + +825 + `pÝuϋ_áp_®g_’Œy +( +eg»ss_’Œy +-> +d©a +. +pub_ +, + +826 +eg»ss_’Œy +-> +d©a +. +pub_pÜt +); + +828 +Ãw_pÜt_¡ršg_Ëngth + = + `áp_®g_modify_·ylßd +( +eg»ss_’Œy +, + +829 +pÜt_¡ršg +, + +830 +pÜt_¡ršg_Œª¦©ed +, 0); + +831 + `¡ºýy +( +tý_h—d”_’d +, +pÜt_¡ršg_Œª¦©ed +, + +832 + `¡¾’ +( +pÜt_¡ršg_Œª¦©ed +)); + +833 +týSeqdiff + = + `áp_®g_d–_tý_£qu’û +Ð +pkt +, +pÜt_¡ršg +, + +834 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +835 [ +ù_pos™iÚ +]. +týSeqdiff +, + +836 +Þd_pÜt_¡ršg_Ëngth +, + +837 +Ãw_pÜt_¡ršg_Ëngth +); + +839 + `áp_®g_modify_pkt_Ën +( +pkt +); + +848 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +849 +®g_by·ss_æag + = +NO_BYPASS +; + +850 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +851 +týSeqdiff + =cpSeqdiff; + +852 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +853 +£rv”_dœeùiÚ + = +SERVER_IN_PUBLIC +; + +854 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. + +855 +áp_£ssiÚ_ty³ + = 0; + +857 #ifdeà +ALGDBG + + +858 + `´štf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +859 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +), + +860 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +861 ( +_hdr +-> +tÙ®_Ëngth + - + +862 ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) - 20)); + +869 ià(( +ackAdju¡ += +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ + +870 +ù_pos™iÚ +]. +týSeqdiff +) != 0) { + +871 ià( +dœeùiÚ + =ð +PRIVATE +) { + +873 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +874 [ +ù_pos™iÚ +]. +£q_þ›Á + != + +875 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +876 [ +ù_pos™iÚ +]. +ack_£rv” +) { + +877  +Seqh™s +; + +878 + `áp_®g_adju¡_tý_£q +Ð +pkt +, +ackAdju¡ +); + +879 +tmp_tý_·ylod_size + = + `¹e_bsw­16 +( + +880 +_hdr +-> +tÙ®_Ëngth +) - + +881 (( +thdr +-> +d©a_off + & 0xf0) >> 2) - + +882 +_hdr_size_by‹s +; + +883 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +884 [ +ù_pos™iÚ +]. +tý_·ylßd_size + = +tmp_tý_·ylod_size +; + +885 #ifdeà +ALGDBG + + +886 + `´štf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +887 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +), + +888 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +889 ( +_hdr +-> +tÙ®_Ëngth + -((( +thdr +-> +d©a_off + & 0xf0) >> 2))- 20)); + +893 ià( +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +894 [ +ù_pos™iÚ +]. +ack_£rv” + != + +895 ( +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +896 [ +ù_pos™iÚ +]. +£q_þ›Á + + + +897 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s + + +898 [ +ù_pos™iÚ +]. +tý_·ylßd_size +)) { + +899  +Ackh™s +; + +900 + `áp_®g_adju¡_tý_ack +Ð +pkt +, +ackAdju¡ +); + +901 #ifdeà +ALGDBG + + +902 + `´štf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +903 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +), + +904 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +905 ( +_hdr +-> +tÙ®_Ëngth + -((( +thdr +-> +d©a_off + & 0xf0) >> 2))- 20)); + +914 #ifdeà +ALGDBG + + +915 + `´štf +("In Data Channel \n"); + +917 + `»move_áp_®g_’Œy + ( +d¡_addr +, +d¡_pÜt +); + +918 +cgÇt_úxn_Œack” +-> +hash_bË_’Œ›s +[ +ù_pos™iÚ +]. +®g_by·ss_æag + = +BYPASS +; + +920 + } +} + + @VIL/alg/lib_ftp_alg.h + +16 #iâdeà +__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 + eáp_®g_by·ss + { + +45 + mNO_BYPASS +, + +46 + mBYPASS + + +49 + eáp_®g_mode + { + +50 + mFTP_ALG_PORT +, + +51 + mFTP_ALG_PASV + + +53 + eáp_®g_dœeùiÚ + { + +54 + mSERVER_IN_PRIVATE +, + +55 + mSERVER_IN_PUBLIC + + +57 + ephy_pÜt + { + +58 + mPRIVATE_PORT +, + +59 + mPUBLIC_PORT + + +62  + sáp_®g_key + { + +63 +ušt32_t + + m_add»ss +; + +64 +ušt16_t + + ml4pÜt +; + +65 +ušt8_t + + mfžËr1 +; + +66 +ušt8_t + + mfžËr2 +; + +68  + sáp_®g_bË_’Œy + { + +69 +ušt32_t + + m_add»ss +; + +70 +ušt16_t + + ml4pÜt +; + +71 +ušt8_t + + máp_®g_mode +; + +72 +ušt8_t + + máp_®g_dœeùiÚ +; + +73 +ušt32_t + + m£ssiÚ_id +; + +74 +ušt8_t + + m®g_by·ss_æag +; + +75 +ušt8_t + + mdummy +; + +76 +ušt8_t + + mdummy1 +; + +78 } + g__¹e_ÿche_®igÃd +; + +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 commªd sucûssful.\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 EÁ”šg PassivMod(%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  +p–še_cgDZ + * +p_Çt +, + +95  +p–še_cgDZ_’Œy_key + * +Çt_’Œy_key +, + +96  +¹e_mbuf + * +pkt +, + +97  +¹e_ù_úxn_Œack” + * +cgÇt_úxn_Œack” +, + +98 +št32_t + +ù_pos™iÚ +, + +99 +ušt8_t + +dœeùiÚ +); + +100  +lib_áp_®g_š™ +(); + +101 +št8_t + +¹e_ù_v”siÚ +(* +i_hdr +); + + @VIL/alg/lib_sip_alg.c + +17  + ~<¡dio.h +> + +18  + ~<¡dlib.h +> + +19  + ~<¡dšt.h +> + +20  + ~<¡ršg.h +> + +21  + ~ + +22  + ~<¬·/š‘.h +> + +23  + ~ + +25  + ~<­p.h +> + +26  + ~<¹e_commÚ.h +> + +27  + ~<¹e_m®loc.h +> + +28  + ~<¹e_.h +> + +29  + ~<¹e_udp.h +> + +30  + ~<¹e_by‹Üd”.h +> + +31  + ~<¹e_bË_Ím.h +> + +32  + ~<¹e_bË_hash.h +> + +33  + ~<¹e_p–še.h +> + +34  + ~<¹e_¬p.h +> + +35  + ~<¹e_icmp.h +> + +36  + ~<¹e_hash.h +> + +37  + ~<¹e_jhash.h +> + +38  + ~<¹e_cyþes.h +> + +40  + ~"p–še_aùiÚs_commÚ.h +" + +41  + ~"hash_func.h +" + +42  + ~"lib_s_®g.h +" + +43  + ~"vnf_commÚ.h +" + +44  + ~"p–še_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 Tryšg" + + ) + +51  + #SIP_ALG_RINGING + "180 Ršgšg" + + ) + +52  + #SIP_ALG_ACK + "ACK" + + ) + +53  + #SIP_ALG_CONTACT + "Cڏù" + + ) + +54  + #SIP_ALG_CONTENT_LEN + "CڋÁ-L’gth" + + ) + +55  + #SIP_ALG_VIA + "VŸ" + + ) + +56  + #SIP_ALG_FROM + "From" + + ) + +57  + #SIP_ALG_TO + "To" + + ) + +58  + #SIP_ALG_CALLID + "C®l-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 + "­¶iÿtiÚ/sdp" + + ) + +64  + #SIP_ALG_CSEQ + "CSeq" + + ) + +65  + #SIP_ALG_AUDIO + "m÷udio" + + ) + +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 + "RemÙe-P¬ty-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_·¿m‘”s + + gs_®g_hash_·¿ms + = { + +108 . +Çme + = +NULL +, + +109 . + g’Œ›s + = +MAX_NUM_SIP_ALG_ENTRIES +, + +110 . + g»£rved + = 0, + +111 . + gkey_Ën + = ( +s_®g_key +), + +112 . + ghash_func + = +¹e_jhash +, + +113 . + ghash_func_š™_v® + = 0, + +114 . + gexŒa_æ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_´oûss +( +¹e_mbuf + * +pkt +, + +122 +ušt16_t + +pkt_dœeùiÚ +, ušt16_ˆ +ÿÎ_dœeùiÚ +, + +123 +ušt16_t + +msgTy³ +, +ušt32_t + +modIp +, + +124 +ušt16_t + +modL4PÜt +, +ušt32_t + +pubIp +, + +125 +ušt16_t + +pubL4PÜt +, ušt16_ˆ +modRPÜt +, + +126 +ušt16_t + +modRtýPÜt +, ušt16_ˆ* +diffModSL’ +); + +127 * +g‘SC®lIdSŒ +(* +pMsg +); + +128 * +ÇtSAlgModifyPaylßdAddrPÜt +(* +pSMsg +, ** +pSMsgEnd +, + +129 +ušt32_t + +ÞdSŒL’ +, ušt32_ˆ* +diffL’ +, + +130 +ušt32_t + +pub_ +, +ušt16_t + +pub_pÜt +, + +131 +ušt32_t + +ty³ +); + +132 * +ÇtSAlgAdju¡Msg +(* +pSMsg +, ** +pSMsgEnd +, + +133 +ušt32_t + +ÃwSŒL’ +, ušt32_ˆ +ÞdSŒL’ +); + +137  + $lib_s_®g_š™ +() + +139 * +s + = + `¹e_zm®loc +( +NULL +, 64, +RTE_CACHE_LINE_SIZE +);; + +140  +sock‘id + = 0; + +142 if(! +s +){ + +143 + `´štf +("NAT SIP ALG Init failed\n"); + +146 + `¢´štf +( +s +, + `¡¾’ +(s), "v4_s_®g_hash_%d", +sock‘id +); + +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 ALG„te_hash_create failed. socket %d ...\n", + +156 +s_®g_hash_·¿ms +. +sock‘_id +); + +157 + `¹e_ex™ +(0, "SIP ALG„te_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_d©a + = +NULL +; + +186  +»t + = + `¹e_hash_lookup +( +s_®g_hash_bË +, +®g_key +); + +188 ià( +»t + < 0) { + +189 #ifdeà +ALGDBG + + +190 + `´štf +("alg-hash†ookup failed„et %d, " + +192 +»t +, +EINVAL +, +ENOENT +); + +195 +s_®g_d©a + = +s_®g_bË +[ +»t +]; + +196  +s_®g_d©a +; + +199  +NULL +; + +200 + } +} + +203  + $»move_s_®g_’Œy +( +ušt32_t + +addr +, +ušt16_t + +pÜtid +) + +205  +s_®g_key + +®g_key +; + +206 * +s_®g_’Œy_d©a +; + +207  +»t +; + +209 +®g_key +. +l4pÜt + = +pÜtid +; + +210 +®g_key +. +_add»ss + = +addr +; + +211 +®g_key +. +fžËr1 + = 0; + +212 +®g_key +. +fžËr2 + = 0; + +214 ià( +ALG_DEBUG +) + +215 + `´štf +("»move_s_’Œy i°%x,…܈%d\n", +®g_key +. +_add»ss +, + +216 +®g_key +. +l4pÜt +); + +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_d©a + = +s_®g_bË +[ +»t +]; + +229 + `ä“ +( +s_®g_’Œy_d©a +); + +230 + `¹e_hash_d–_key +( +s_®g_hash_bË +, & +®g_key +); + +233 + } +} + +239  +pÝuϋ_s_®g_’Œy +( +ušt32_t + +addr +, +ušt16_t + +pÜtid +, + +240 * +s_ÿÎ_id +, +ušt8_t + +ÿÎ_dœeùiÚ +, + +241 +s_®g_pÜt_ty³ + +pÜt_ty³ +); + +242  + $pÝuϋ_s_®g_’Œy +( +ušt32_t + +addr +, +ušt16_t + +pÜtid +, + +243 * +s_ÿÎ_id +, +ušt8_t + +ÿÎ_dœeùiÚ +, + +244 +s_®g_pÜt_ty³ + +pÜt_ty³ +) + +246  +s_®g_key + +®g_key +; + +248 +®g_key +. +l4pÜt + = +pÜtid +; + +249 +®g_key +. +_add»ss + = +addr +; + +250 +®g_key +. +fžËr1 + = 0; + +251 +®g_key +. +fžËr2 + = 0; + +252  +»t +; + +254 ià( +ALG_DEBUG +) + +255 + `´štf +("populate_sip_alg_entry…ort %d, ip %x\n", + +256 +®g_key +. +l4pÜt +,‡lg_key. +_add»ss +); + +258  +s_®g_bË_’Œy + * +Ãw_®g_d©a + = + +259 + `»Œ›ve_s_®g_’Œy +(& +®g_key +); + +261 ià( +Ãw_®g_d©a +) { + +262 ià( +ALG_DEBUG +) + +263 + `´štf +("sip_alg_entryƒxists ip%x,…ort %d\n", + +264 +®g_key +. +_add»ss +,‡lg_key. +l4pÜt +); + +268 +Ãw_®g_d©a + = +NULL +; + +269 +Ãw_®g_d©a + = ( +s_®g_bË_’Œy + *) + +270 + `m®loc +(( +s_®g_bË_’Œy +)); + +271 ià( +Ãw_®g_d©a + =ð +NULL +) { + +272 + `´štf +("populate sip‡lgƒntry:‡llocation failed\n"); + +276 +Ãw_®g_d©a +-> +l4pÜt + = +pÜtid +; + +277 +Ãw_®g_d©a +-> +_add»ss + = +addr +; + +278 +Ãw_®g_d©a +-> +l4pÜt_ty³ + = +pÜt_ty³ +; + +279 +Ãw_®g_d©a +-> +s_®g_ÿÎ_dœeùiÚ + = +ÿÎ_dœeùiÚ +; + +280 + `¡rýy +((*) +Ãw_®g_d©a +-> +s_®g_ÿÎ_id +, (*) +s_ÿÎ_id +); + +281 +Ãw_®g_d©a +-> +fžËr1 + = 0; + +282 +Ãw_®g_d©a +-> +fžËr2 + = 0; + +283 +Ãw_®g_d©a +-> +fžËr3 + = 0; + +285 +»t + = + `¹e_hash_add_key +( +s_®g_hash_bË +, & +®g_key +); + +286 ià( +»t + < 0) { + +287 + `´štf +("pÝuϋ s -„‹_hash_add_key_d©¨ERROR %d\n", +»t +); + +288 + `ä“ +( +Ãw_®g_d©a +); + +292 +s_®g_bË +[ +»t +] = +Ãw_®g_d©a +; + +294 ià( +ALG_DEBUG +) { + +295 + `´štf +("SIP_ALG:able update - ip=%x on…ort=%d„et=%d\n", + +296 +®g_key +. +_add»ss +, +pÜtid +, +»t +); + +299 + } +} + +301  + $s_®g_dpi +( +¹e_mbuf + * +pkt +, +pkt_dœ + +pkt_dœeùiÚ +, + +302 +ušt32_t + +modIp +, +ušt16_t + +modL4PÜt +, + +303 +ušt32_t + +pubIp +, +ušt16_t + +pubL4PÜt +, + +304 +ušt16_t + +modRPÜt +, ušt16_ˆ +modRtýPÜt +) + +306 +ušt16_t + +msgTy³ + = 0; + +307 +s_®g_ÿÎ_dœeùiÚ + +ÿÎ_dœeùiÚ + = 0; + +308 +ušt32_t + +_add»ss + = 0; + +309 +ušt16_t + +pÜt + = 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 * +pSMsg + = +NULL +; + +315  +s_®g_bË_’Œy + * +s_®g_’Œy +; + +316 * +s_ÿÎ_id + = +NULL +; + +317  +pos + = 0; + +318  +s_®g_key + +®g_key +; + +319 +ušt16_t + +diffModSL’ + = 0; + +321 +_h + = ( +v4_hdr + *)((*) +‘h_h + + ( +‘h”_hdr +)); + +322 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +323 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +325 ià( +ALG_DEBUG +) { + +326 + `´štf +("%s:…ack‘†’gth(%u), bufã¸Ëngth(%u)\n", +__func__ +, + +327 + `¹e_pktmbuf_pkt_Ën +( +pkt +),…kt-> +buf_Ën +); + +328 + `´štf +("%s:†a¡ segm’ˆaddr(%°%p)\n", +__func__ +, + +329 + `¹e_pktmbuf_Ï¡£g +( +pkt +),…kt); + +330 + `´štf +("%s: d©¨Ën(%u, %u)\n", +__func__ +, + `¹e_pktmbuf_d©a_Ën +( +pkt +), + +331 + `¹e_pktmbuf_d©a_Ën +( + `¹e_pktmbuf_Ï¡£g +( +pkt +))); + +332 + `´štf +("%s: bufã¸addr(%p), d©a_off(%u),‚b_£gs(%u)\n", +__func__ +, + +333 +pkt +-> +buf_addr +,…kt-> +d©a_off +,…kt-> +nb_£gs +); + +336 ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_INVITE +)) { + +338 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0) == + +339 +TRUE +) + +340 +s_ÿÎ_id + = + +341 + `g‘SC®lIdSŒ +( +pSMsg + + +pos + + + +342 + `TAG_TO_DATAPOS +( +SIP_ALG_CALLID +)); + +344 ià( +ALG_DEBUG +) + +345 + `´štf +("s®gdpi: %d c®Èid %s\n", +__LINE__ +, + +346 +s_ÿÎ_id +); + +348 ià( +pkt_dœeùiÚ + =ð +PRIVATE +) { + +349 +ÿÎ_dœeùiÚ + = +SIP_CALL_OUTGOING +; + +350 +_add»ss + = + `¹e_bsw­32 +( +_h +-> +¤c_addr +); + +351 +pÜt + = + `¹e_bsw­16 +( +udp_h +-> +¤c_pÜt +); + +352 } ià( +pkt_dœeùiÚ + =ð +PUBLIC +) { + +353 +ÿÎ_dœeùiÚ + = +SIP_CALL_INCOMING +; + +354 +_add»ss + = +pubIp +; + +355 +pÜt + = +pubL4PÜt +; + +358 ià( +ALG_DEBUG +) + +359 + `´štf +("0=>sip_alg_dpi:…kt_dir(%d), call_dir(%d), " + +361 +pkt_dœeùiÚ +, +ÿÎ_dœeùiÚ +, +_add»ss +, +pÜt +); + +364 +»t + = + `pÝuϋ_s_®g_’Œy +( +_add»ss +, +pÜt +, + +365 +s_ÿÎ_id +, +ÿÎ_dœeùiÚ +, + +366 +SIP_UDP +); + +367 ià( +»t + < 0) { + +368 + `´štf +("sipalgdpi:populate SIP‡lg UDPƒntry failed\n"); + +371 ià( +modRPÜt + != 0) { + +372 +»t + = + `pÝuϋ_s_®g_’Œy +( +_add»ss +, +modRPÜt +, + +373 +s_ÿÎ_id +, + +374 +ÿÎ_dœeùiÚ +, +SIP_RTP +); + +375 ià( +»t + < 0) { + +376 + `´štf +("sipalgdpi: " + +381 ià( +modRtýPÜt + != 0) { + +382 +»t + = + `pÝuϋ_s_®g_’Œy +( +_add»ss +, +modRtýPÜt +, + +383 +s_ÿÎ_id +, + +384 +ÿÎ_dœeùiÚ +, +SIP_RTCP +); + +385 ià( +»t + < 0) { + +386 + `´štf +("sipalgdpi: " + +393 +pSMsg + = + +394 + `s_®g_´oûss +( +pkt +, +pkt_dœeùiÚ +, +ÿÎ_dœeùiÚ +, + +395 +SIP_ALG_INVITE_MSGTYPE +, +modIp +, +modL4PÜt +, 0, + +396 0, +modRPÜt +, +modRtýPÜt +, & +diffModSL’ +); + +403 ià( +pkt_dœeùiÚ + =ð +PRIVATE +) { + +404 +®g_key +. +_add»ss + = + `¹e_bsw­32 +( +_h +-> +¤c_addr +); + +405 +®g_key +. +l4pÜt + = + `¹e_bsw­16 +( +udp_h +-> +¤c_pÜt +); + +407 +®g_key +. +_add»ss + = +pubIp +; + +408 +®g_key +. +l4pÜt + = +pubL4PÜt +; + +411 +®g_key +. +fžËr1 + = 0; + +412 +®g_key +. +fžËr2 + = 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_dœeùiÚ +, +modIp +, +modL4PÜt +, + +421 +modRPÜt +, +modRtýPÜt +, +pubIp +, +pubL4PÜt +); + +424 ià( +s_®g_’Œy +) { + +425 +ÿÎ_dœeùiÚ + = +s_®g_’Œy +-> +s_®g_ÿÎ_dœeùiÚ +; + +426 ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_BYE +) || + +427 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_CANCEL +)) { + +428 +msgTy³ + = +SIP_ALG_BYE_MSGTYPE +; + +430  +sAlgProûss +; + +431 } ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_ACK +)) { + +432 +msgTy³ + = +SIP_ALG_ACK_MSGTYPE +; + +434  +sAlgProûss +; + +437 +pSMsg + += 8; + +439 ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_200_OK +)) { + +441 ià( +ÇtSAlgMsgF›ldPos + + +442 ( +pSMsg +, +SIP_ALG_CSEQ +, & +pos +, 0è=ð +TRUE +) { + +443 * +pBye +; + +445 +pBye + = + +446 +pSMsg + + +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 +( +pSMsg +, +SIP_ALG_TRYING +) || + +465 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_RINGING +)) { + +466 +msgTy³ + = +SIP_ALG_TRYING_RINGING_MSGTYPE +; + +469 +sAlgProûss +: + +470 ià( +ALG_DEBUG +) + +471 + `´štf +("2=>%s:…kt_dir(%d), call_dir(%d), " + +474 +__func__ +, +pkt_dœeùiÚ +, +ÿÎ_dœeùiÚ +, + +475 +msgTy³ +, +modIp +, +modL4PÜt +, +modRPÜt +, + +476 +modRtýPÜt +); + +478 +pSMsg + = + +479 + `s_®g_´oûss +( +pkt +, +pkt_dœeùiÚ +, +ÿÎ_dœeùiÚ +, + +480 +msgTy³ +, +modIp +, +modL4PÜt +, +pubIp +, + +481 +pubL4PÜt +, +modRPÜt +, +modRtýPÜt +, + +482 & +diffModSL’ +); + +484 +pSMsg + = +NULL +; + +487 ià( +ALG_DEBUG +) + +488 + `´štf +("%s: BefܐIPÙ®†’gth(%u), ud°Ëngth(%u)\n", +__func__ +, + +489 + `¹e_bsw­16 +( +_h +-> +tÙ®_Ëngth +),„‹_bsw­16( +udp_h +-> +dg¿m_Ën +)); + +494 +ušt16_t + +Ën + = 0; + +495 ià( +diffModSL’ + > 0) { + +496 +Ën + = + `¹e_bsw­16 +( +udp_h +-> +dg¿m_Ën +); + +497 +Ën + +ð +diffModSL’ +; + +498 +udp_h +-> +dg¿m_Ën + = + `¹e_bsw­16 +( +Ën +); + +500 +Ën + = + `¹e_bsw­16 +( +_h +-> +tÙ®_Ëngth +); + +501 +Ën + +ð +diffModSL’ +; + +502 +_h +-> +tÙ®_Ëngth + = + `¹e_bsw­16 +( +Ën +); + +504 ià( + `¹e_pktmbuf_­³nd +( +pkt +, +diffModSL’ +è=ð +NULL +) + +505 + `´štf +("%s:…ktmbuf_­³nd„‘uº NULL", +__func__ +); + +509 ià( +ALG_DEBUG +) + +510 + `´štf +("%s: After IPotal†ength(%u), udp†ength(%u), " + +511 "diffModSL’(%u)\n", +__func__ +, + +512 + `¹e_bsw­16 +( +_h +-> +tÙ®_Ëngth +), + +513 + `¹e_bsw­16 +( +udp_h +-> +dg¿m_Ën +), + +514 +diffModSL’ +); + +516 ià( +pSMsg + !ð +NULL +) + +520 + } +} + +522 * + $s_®g_´oûss +( +¹e_mbuf + * +pkt +, +ušt16_t + +pkt_dœeùiÚ +, + +523 +ušt16_t + +ÿÎ_dœeùiÚ +, ušt16_ˆ +msgTy³ +, +ušt32_t + +modIp +, + +524 +ušt16_t + +modL4PÜt +, +ušt32_t + +pubIp +, ušt16_ˆ +pubL4PÜt +, + +525 +ušt16_t + +modRPÜt +, ušt16_ˆ +modRtýPÜt +, + +526 +ušt16_t + * +diffModSL’ +) + +528  +v4_hdr + * +_h +; + +529  +‘h”_hdr + * +‘h_h + = + `¹e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +530  +udp_hdr + * +udp_h +; + +531 * +pSMsg +, * +pSŒ +, * +pEndPŒ +; + +532  +pos +; + +534 +ušt32_t + +diffL’ +, +addrPÜtL’ +; + +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 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +541 * +pTmpSMsg + = +pSMsg +; + +542 * +pS¹SMsg + = +pSMsg +; + +544 +s_msg_Ën + = + +545 + `¹e_bsw­16 +( +_h +-> +tÙ®_Ëngth +è- ( +v4_hdr +) - + +546 ( +udp_hdr +); + +548 ià( + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) == + +549 +TRUE +) + +550 +pTmpSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +552 + `´štf +("sip_alg_process: Invalid Content Length\n"); + +553  +NULL +; + +556 + `SKIP_SPACES +( +pTmpSMsg +); + +557  +sdpD©aL’ + = + `¡¹Þ +( +pTmpSMsg +, & +pSŒ +, 10); + +559 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, +SIP_ALG_DOUBLE_CRLF +, & +pos +, 0); + +560 +pTmpSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_DOUBLE_CRLF +)); + +562 ià( +sdpD©aL’ + != 0) + +563 ià( +ÇtSAlgMsgF›ldPos + + +564 ( +pTmpSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, 0è=ð +TRUE +) { + +565 +pTmpSMsg + +ð +pos + + + `¡¾’ +( +SIP_ALG_REMOTE_PARTY_ID +); + +567 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +568 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +570 +pTmpSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_DOUBLE_CRLF +)); + +573  +sMsgL’ + = ( +pTmpSMsg + - +pSMsg +); + +575 * +pSMsgEnd + = +pSMsg + + +sMsgL’ + + +sdpD©aL’ +; + +577 ià( +ALG_DEBUG +) + +578 + `´štf +("%s:…SipMsg: %p,…SipMsgEnd: %p, sipMsgLen: %d, " + +580 +__func__ +, +pSMsg +, +pSMsgEnd +, +sMsgL’ +, +sdpD©aL’ +, + +581 +s_msg_Ën +); + +583 ià( +ÿÎ_dœeùiÚ + =ð +SIP_CALL_OUTGOING +) { + +584 ià(( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) + +585 || ( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +)) { + +587 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +588 =ð +TRUE +) { + +590 +pSMsg + += + +591 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +592 +SIP_ALG_VIA_FIELD_IPADDR +); + +593 +pTmpSMsg + = +pSMsg +; + +595 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +596 +SIP_ALG_SEMICOLON +, & +pos +, + +598 +pTmpSMsg + +ð +pos +; + +599 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +601 + `´štf +("sip_alg_process; No valid VIA field\n"); + +602  +NULL +; + +605 +pSMsg + = + +606 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +607 +addrPÜtL’ +, + +608 & +diffL’ +, +modIp +, + +609 +modL4PÜt +, + +610 +ADDRESS_PORT_STRING +); + +612 * +diffModSL’ + +ð +diffL’ +; + +616 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +617 =ð +TRUE +) { + +618 +pSMsg + +ð +pos +; + +620 +pTmpSMsg + = +pSMsg +; + +622 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +623 & +pos +, 0); + +624 +pTmpSMsg + +ð +pos +; + +625 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +627 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +629 +pSMsg + +ð +pos + + 1; + +631 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +633 +´štf + + +635  +NULL +; + +638 +pSMsg + = + +639 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +640 +addrPÜtL’ +, + +641 & +diffL’ +, +modIp +, + +642 +modL4PÜt +, + +643 +ADDRESS_PORT_STRING +); + +645 * +diffModSL’ + +ð +diffL’ +; + +649 ià( +ÇtSAlgMsgF›ldPos + + +650 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +651 +pSMsg + +ð +pos +; + +653 +pTmpSMsg + = +pSMsg +; + +655 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +656 +SIP_ALG_CRLF +, & +pos +, + +658 +pTmpSMsg + +ð +pos +; + +659 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +661 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +663 +pSMsg + +ð +pos + + 1; + +664 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +666 + `´štf +("sip_alg_process; " + +668  +NULL +; + +672 +pSMsg + = + +673 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +674 +addrPÜtL’ +, + +675 & +diffL’ +, +modIp +, 0, + +676 +ADDRESS_PORT_STRING +); + +678 * +diffModSL’ + +ð +diffL’ +; + +681 ià( +ÇtSAlgMsgF›ldPos + + +682 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +683 +pSMsg + +ð +pos +; + +685 +pTmpSMsg + = +pSMsg +; + +686 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +687 +SIP_ALG_CRLF +, & +pos +, + +689 +pTmpSMsg + +ð +pos +; + +691 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +693 +pSMsg + +ð +pos + + 1; + +694 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +697 + `´štf +("sip_alg_process; " + +699  +NULL +; + +702 +pSMsg + = + +703 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +704 +addrPÜtL’ +, + +705 & +diffL’ +, +modIp +, + +706 +modL4PÜt +, + +707 +ADDRESS_PORT_STRING +); + +709 * +diffModSL’ + +ð +diffL’ +; + +711 ià( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) { + +713 ià( +ÇtSAlgMsgF›ldPos + + +714 ( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, + +715 0è=ð +TRUE +) { + +716 +pSMsg + += + +717 ( +pos + + + +718 + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +719 + `SKIP_SPACES +( +pSMsg +); + +721 ià(! +IS_STRING_SAME + + +722 ( +pSMsg +, +SIP_ALG_APPSDP +)) { + +723 + `´štf +("sip_alg_process " + +725  +NULL +; + +728 + `´štf +("sip_alg_process; " + +730  +NULL +; + +734 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +735 +SIP_ALG_CONTENT_LEN +, & +pos +, + +737 +pSMsg + += + +738 ( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +739 + `SKIP_SPACES +( +pSMsg +); + +740 +sdpMsgL’ + = + `¡¹Þ +( +pSMsg +, & +pEndPŒ +, 10); + +741 ià(! +sdpMsgL’ +) { + +743 ià( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +) + +744  +sAlgProûssEx™ +; + +746 + `´štf +("sip_alg_process - " + +748  +NULL +; + +752 ià( +ÇtSAlgMsgF›ldPos + + +753 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +754 0è=ð +TRUE +) { + +755 +pSMsg + +ð +pos +; + +757 +pTmpSMsg + = +pSMsg +; + +759 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pSMsg +, + +760 +SIP_ALG_CRLF +, + +761 & +pos +, + +763 +pTmpSMsg + +ð +pos +; + +766 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +767 +SIP_ALG_IPV4 +, & +pos +, + +769 +pSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_IPV4 +)); + +770 + `SKIP_SPACES +( +pSMsg +); + +772 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +774 + `´štf +("sip_alg_processing: " + +776  +NULL +; + +779 +pSMsg + = + +780 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +781 & +pSMsgEnd +, + +782 +addrPÜtL’ +, + +783 & +diffL’ +, + +784 +modIp +, 0, + +785 +ADDRESS_PORT_STRING +); + +787 * +diffModSL’ + +ð +diffL’ +; + +788 +sdpMsgL’ + +ð +diffL’ +; + +792 ià( +ÇtSAlgMsgF›ldPos + + +793 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +794 0è=ð +TRUE +) { + +795 +pSMsg + +ð +pos +; + +796 +pTmpSMsg + = +pSMsg +; + +798 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pSMsg +, + +799 +SIP_ALG_CRLF +, + +800 & +pos +, + +802 +pTmpSMsg + +ð +pos +; + +805 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +806 +SIP_ALG_IPV4 +, & +pos +, + +808 +pSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_IPV4 +)); + +809 + `SKIP_SPACES +( +pSMsg +); + +811 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +813 + `´štf +("sip_alg_processing: " + +815  +NULL +; + +818 +pSMsg + = + +819 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +820 & +pSMsgEnd +, + +821 +addrPÜtL’ +, + +822 & +diffL’ +, + +823 +modIp +, 0, + +824 +ADDRESS_PORT_STRING +); + +826 * +diffModSL’ + +ð +diffL’ +; + +827 +sdpMsgL’ + +ð +diffL’ +; + +831 ià( +ÇtSAlgMsgF›ldPos + + +832 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +833 0è=ð +TRUE +) { + +834 +pSMsg + += + +835 ( +pos + + + +836 + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +837 + `SKIP_SPACES +( +pSMsg +); + +838 +pTmpSMsg + = +pSMsg +; + +839 +ÇtSAlgMsgF›ldPosFšdS·û + + +840 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +842 +pTmpSMsg + +ð +pos +; + +843 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +847 +pSMsg + = + +848 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +849 & +pSMsgEnd +, + +850 +addrPÜtL’ +, + +851 & +diffL’ +, 0, + +852 +modRPÜt +, + +853 +PORT_STRING +); + +855 * +diffModSL’ + +ð +diffL’ +; + +856 +sdpMsgL’ + +ð +diffL’ +; + +860 ià( +ÇtSAlgMsgF›ldPos + + +861 ( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, + +862 0è=ð +TRUE +) { + +863 +pSMsg + += + +864 ( +pos + + + +865 + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +866 + `SKIP_SPACES +( +pSMsg +); + +867 +pTmpSMsg + = +pSMsg +; + +868 +ÇtSAlgMsgF›ldPosFšdS·û + + +869 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +871 +pTmpSMsg + +ð +pos +; + +872 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +875 +pSMsg + = + +876 +ÇtSAlgModifyPaylßdAddrPÜt + + +877 ( +pSMsg +, & +pSMsgEnd +, +addrPÜtL’ +, + +878 & +diffL’ +, 0, +modRtýPÜt +, + +879 +PORT_STRING +); + +881 * +diffModSL’ + +ð +diffL’ +; + +882 +sdpMsgL’ + +ð +diffL’ +; + +887 } ià(( +msgTy³ + =ð +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +888 || ( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +890 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +891 =ð +TRUE +) { + +893 +pSMsg + += + +894 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +895 +SIP_ALG_VIA_FIELD_IPADDR +); + +896 +pTmpSMsg + = +pSMsg +; + +898 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +899 +SIP_ALG_SEMICOLON +, & +pos +, + +901 +pTmpSMsg + +ð +pos +; + +902 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +904 + `´štf +("sip_alg_process; No valid VIA field\n"); + +905  +NULL +; + +908 +pSMsg + = + +909 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +910 +addrPÜtL’ +, + +911 & +diffL’ +, +modIp +, + +912 +modL4PÜt +, + +913 +ADDRESS_PORT_STRING +); + +914 * +diffModSL’ + = +diffL’ +; + +917 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +918 =ð +TRUE +) { + +919 +pSMsg + +ð +pos +; + +921 +pTmpSMsg + = +pSMsg +; + +923 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +924 & +pos +, 0); + +925 +pTmpSMsg + +ð +pos +; + +928 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +930 +pSMsg + +ð +pos + + 1; + +932 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +934 +´štf + + +936  +NULL +; + +939 +pSMsg + = + +940 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +941 +addrPÜtL’ +, + +942 & +diffL’ +, +modIp +, + +943 +modL4PÜt +, + +944 +ADDRESS_PORT_STRING +); + +946 * +diffModSL’ + +ð +diffL’ +; + +950 ià( +ÇtSAlgMsgF›ldPos + + +951 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +952 +pSMsg + +ð +pos +; + +954 +pTmpSMsg + = +pSMsg +; + +956 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +957 +SIP_ALG_CRLF +, & +pos +, + +959 +pTmpSMsg + +ð +pos +; + +962 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +964 +pSMsg + +ð +pos + + 1; + +965 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +967 + `´štf +("sip_alg_process; " + +969  +NULL +; + +973 +pSMsg + = + +974 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +975 +addrPÜtL’ +, + +976 & +diffL’ +, +modIp +, 0, + +977 +ADDRESS_PORT_STRING +); + +979 * +diffModSL’ + +ð +diffL’ +; + +981 } ià( +pkt_dœeùiÚ + =ð +PRIVATE + + +982 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +986 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +987 =ð +TRUE +) { + +989 +pSMsg + += + +990 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +991 +SIP_ALG_VIA_FIELD_IPADDR +); + +992 +pTmpSMsg + = +pSMsg +; + +994 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +995 +SIP_ALG_SEMICOLON +, & +pos +, + +997 +pTmpSMsg + +ð +pos +; + +998 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1000 + `´štf +("sip_alg_process; No valid VIA field\n"); + +1001  +NULL +; + +1004 +pSMsg + = + +1005 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1006 +addrPÜtL’ +, + +1007 & +diffL’ +, +modIp +, 0, + +1008 +ADDRESS_PORT_STRING +); + +1009 * +diffModSL’ + = +diffL’ +; + +1012 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1013 =ð +TRUE +) { + +1014 +pSMsg + +ð +pos +; + +1016 +pTmpSMsg + = +pSMsg +; + +1018 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1019 & +pos +, 0); + +1020 +pTmpSMsg + +ð +pos +; + +1021 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1023 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1025 +pSMsg + +ð +pos + + 1; + +1027 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1029 +´štf + + +1031  +NULL +; + +1034 +pSMsg + = + +1035 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1036 +addrPÜtL’ +, + +1037 & +diffL’ +, +modIp +, + +1038 +modL4PÜt +, + +1039 +ADDRESS_PORT_STRING +); + +1041 * +diffModSL’ + +ð +diffL’ +; + +1045 ià( +ÇtSAlgMsgF›ldPos + + +1046 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1047 +pSMsg + +ð +pos +; + +1049 +pTmpSMsg + = +pSMsg +; + +1051 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1052 +SIP_ALG_CRLF +, & +pos +, + +1054 +pTmpSMsg + +ð +pos +; + +1055 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1057 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1059 +pSMsg + +ð +pos + + 1; + +1060 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1062 + `´štf +("sip_alg_process; " + +1064  +NULL +; + +1068 +pSMsg + = + +1069 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1070 +addrPÜtL’ +, + +1071 & +diffL’ +, +modIp +, 0, + +1072 +ADDRESS_PORT_STRING +); + +1074 * +diffModSL’ + +ð +diffL’ +; + +1077 ià( +ÇtSAlgMsgF›ldPos + + +1078 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1079 +pSMsg + +ð +pos +; + +1081 +pTmpSMsg + = +pSMsg +; + +1082 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1083 +SIP_ALG_CRLF +, & +pos +, 0); + +1084 +pTmpSMsg + +ð +pos +; + +1086  +æag + = 0; + +1087 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, + +1088 & +pos +, 0è=ð +FALSE +) + +1089 +æag + = 1; + +1091 ià( +æag +) + +1092  +SMsgAdvªû2 +; + +1093 +pSMsg + +ð +pos + + 1; + +1094 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1097 + `´štf +("sip_alg_process; " + +1099  +NULL +; + +1102 +pSMsg + = + +1103 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1104 +addrPÜtL’ +, + +1105 & +diffL’ +, +modIp +, + +1106 +modL4PÜt +, + +1107 +ADDRESS_PORT_STRING +); + +1109 * +diffModSL’ + +ð +diffL’ +; + +1110 } ià( +pkt_dœeùiÚ + =ð +PUBLIC + + +1111 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1118 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1119 +pSMsg + +ð +pos + + 1; + +1120 +pTmpSMsg + = +pSMsg +; + +1121 + `ÇtSAlgMsgF›ldPosFšdS·û +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1122 & +pos +, 0); + +1123 +pTmpSMsg + +ð +pos +; + +1124 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1126 +pSMsg + = + +1127 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1128 +addrPÜtL’ +, + +1129 & +diffL’ +, +modIp +, + +1130 +modL4PÜt +, + +1131 +ADDRESS_PORT_STRING +); + +1132 * +diffModSL’ + +ð +diffL’ +; + +1136 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1137 =ð +TRUE +) { + +1138 +pSMsg + +ð +pos +; + +1139 +pTmpSMsg + = +pSMsg +; + +1140 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1141 & +pos +, 0); + +1142 +pTmpSMsg + +ð +pos +; + +1143 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1145 +pSMsg + +ð +pos + + 1; + +1146 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1147 +pSMsg + = + +1148 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1149 & +pSMsgEnd +, + +1150 +addrPÜtL’ +, + +1151 & +diffL’ +, + +1152 +modIp +, + +1153 +modL4PÜt +, + +1154 +ADDRESS_PORT_STRING +); + +1155 * +diffModSL’ + +ð +diffL’ +; + +1160 ià( +ÇtSAlgMsgF›ldPos + + +1161 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1162 +pSMsg + +ð +pos +; + +1164 +pTmpSMsg + = +pSMsg +; + +1166 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1167 +SIP_ALG_CRLF +, & +pos +, + +1169 +pTmpSMsg + +ð +pos +; + +1172 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1174 +pSMsg + +ð +pos + + 1; + +1175 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1177 + `´štf +("sip_alg_process; " + +1179  +NULL +; + +1183 +pSMsg + = + +1184 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1185 +addrPÜtL’ +, + +1186 & +diffL’ +, +modIp +, 0, + +1187 +ADDRESS_PORT_STRING +); + +1189 * +diffModSL’ + +ð +diffL’ +; + +1190 } ià( +pkt_dœeùiÚ + =ð +PRIVATE + + +1191 && ( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1197 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1198 =ð +TRUE +) { + +1199 +pSMsg + +ð +pos +; + +1201 +pTmpSMsg + = +pSMsg +; + +1203 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1204 & +pos +, 0); + +1205 +pTmpSMsg + +ð +pos +; + +1206 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1208 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1210 +pSMsg + +ð +pos + + 1; + +1212 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1214 +´štf + + +1216  +NULL +; + +1219 +pSMsg + = + +1220 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1221 +addrPÜtL’ +, + +1222 & +diffL’ +, +modIp +, + +1223 +modL4PÜt +, + +1224 +ADDRESS_PORT_STRING +); + +1226 * +diffModSL’ + = +diffL’ +; + +1230 ià( +ÇtSAlgMsgF›ldPos + + +1231 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1232 +pSMsg + +ð +pos +; + +1234 +pTmpSMsg + = +pSMsg +; + +1235 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1236 +SIP_ALG_CRLF +, & +pos +, + +1238 +pTmpSMsg + +ð +pos +; + +1240  +æag + = 0; + +1241 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, + +1242 & +pos +, 0è=ð +FALSE +) + +1243 +æag + = 1; + +1245 ià( +æag +) + +1246  +SMsgAdvªû2 +; + +1247 +pSMsg + +ð +pos + + 1; + +1248 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1250 + `´štf +("sip_alg_process; " + +1252  +NULL +; + +1255 +pSMsg + = + +1256 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1257 +addrPÜtL’ +, + +1258 & +diffL’ +, +modIp +, + +1259 +modL4PÜt +, + +1260 +ADDRESS_PORT_STRING +); + +1262 * +diffModSL’ + +ð +diffL’ +; + +1263 } ià( +pkt_dœeùiÚ + =ð +PUBLIC + + +1264 && ( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1268 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1269 =ð +TRUE +) { + +1271 +pSMsg + += + +1272 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +1273 +SIP_ALG_VIA_FIELD_IPADDR +); + +1274 +pTmpSMsg + = +pSMsg +; + +1276 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +1277 +SIP_ALG_SEMICOLON +, & +pos +, + +1279 +pTmpSMsg + +ð +pos +; + +1280 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1282 + `´štf +("sip_alg_process; No valid VIA field\n"); + +1283  +NULL +; + +1286 +pSMsg + = + +1287 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1288 +addrPÜtL’ +, + +1289 & +diffL’ +, +modIp +, 0, + +1290 +ADDRESS_PORT_STRING +); + +1291 * +diffModSL’ + = +diffL’ +; + +1294 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1295 =ð +TRUE +) { + +1296 +pSMsg + +ð +pos +; + +1298 +pTmpSMsg + = +pSMsg +; + +1300 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1301 & +pos +, 0); + +1302 +pTmpSMsg + +ð +pos +; + +1303 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1305 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1307 +pSMsg + +ð +pos + + 1; + +1309 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1311 +´štf + + +1313  +NULL +; + +1316 +pSMsg + = + +1317 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1318 +addrPÜtL’ +, + +1319 & +diffL’ +, +modIp +, + +1320 +modL4PÜt +, + +1321 +ADDRESS_PORT_STRING +); + +1323 * +diffModSL’ + +ð +diffL’ +; + +1326 ià( +ÇtSAlgMsgF›ldPos + + +1327 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1328 +pSMsg + +ð +pos +; + +1330 +pTmpSMsg + = +pSMsg +; + +1331 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1332 +SIP_ALG_CRLF +, & +pos +, + +1334 +pTmpSMsg + +ð +pos +; + +1335 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1337 +pSMsg + +ð +pos + + 1; + +1338 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1340 +pSMsg + = + +1341 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1342 & +pSMsgEnd +, + +1343 +addrPÜtL’ +, + +1344 & +diffL’ +, + +1345 +modIp +, 0, + +1346 +ADDRESS_PORT_STRING +); + +1348 * +diffModSL’ + +ð +diffL’ +; + +1351 + `´štf +("sip_alg_process; " + +1353  +NULL +; + +1357 } ià( +ÿÎ_dœeùiÚ + =ð +SIP_CALL_INCOMING +) { + +1358 ià(( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) + +1359 || ( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +)) { + +1362 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0) + +1363 =ð +TRUE +) { + +1364 +pSMsg + +ð +pos + + 1; + +1365 +pTmpSMsg + = +pSMsg +; + +1366 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_SIP +, + +1367 & +pos +, 0); + +1368 +pTmpSMsg + +ð( +pos + - 1); + +1370 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1372 +´štf + + +1374 +__LINE__ +); + +1375  +NULL +; + +1378 +pSMsg + = + +1379 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1380 +addrPÜtL’ +, + +1381 & +diffL’ +, +modIp +, + +1382 +modL4PÜt +, + +1383 +ADDRESS_PORT_STRING +); + +1384 * +diffModSL’ + +ð +diffL’ +; + +1388 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1389 =ð +TRUE +) { + +1390 +pSMsg + +ð +pos +; + +1391 +pTmpSMsg + = +pSMsg +; + +1392 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1393 & +pos +, 0); + +1394 +pTmpSMsg + +ð +pos +; + +1395 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1397 +pSMsg + +ð +pos + + 1; + +1398 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1400 + `´štf +("sip_alg_processing; " + +1402 +__LINE__ +); + +1403  +NULL +; + +1406 +pSMsg + = + +1407 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1408 +addrPÜtL’ +, + +1409 & +diffL’ +, +modIp +, + +1410 +modL4PÜt +, + +1411 +ADDRESS_PORT_STRING +); + +1412 * +diffModSL’ + +ð +diffL’ +; + +1414 } ià(( +msgTy³ + =ð +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +1415 || ( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +1418 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1419 =ð +TRUE +) { + +1420 +pSMsg + +ð +pos +; + +1421 +pTmpSMsg + = +pSMsg +; + +1422 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1423 & +pos +, 0); + +1424 +pTmpSMsg + +ð +pos +; + +1425 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1427 +pSMsg + +ð +pos + + 1; + +1428 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1429 +pSMsg + = + +1430 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1431 & +pSMsgEnd +, + +1432 +addrPÜtL’ +, + +1433 & +diffL’ +, + +1434 +modIp +, + +1435 +modL4PÜt +, + +1436 +ADDRESS_PORT_STRING +); + +1437 * +diffModSL’ + +ð +diffL’ +; + +1440 ià( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +) { + +1444 ià( +ÇtSAlgMsgF›ldPos + + +1445 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, + +1446 0è=ð +TRUE +) { + +1447 +pSMsg + +ð +pos +; + +1449 +pTmpSMsg + = +pSMsg +; + +1450 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +1451 +SIP_ALG_SEMICOLON +, + +1452 & +pos +, 0); + +1453 +pTmpSMsg + +ð +pos +; + +1455  +æag + = 0; + +1456 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +1457 +SIP_ALG_AT +, & +pos +, + +1458 30è=ð +FALSE +) + +1459 +æag + = 1; + +1461 ià( +æag +) + +1462  +SMsgAdvªû +; + +1464 +pSMsg + +ð +pos + + 1; + +1465 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1467 + `´štf +("sip_alg_process; " + +1469  +NULL +; + +1472 +pSMsg + = + +1473 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1474 & +pSMsgEnd +, + +1475 +addrPÜtL’ +, + +1476 & +diffL’ +, + +1477 +modIp +, + +1478 +modL4PÜt +, + +1479 +ADDRESS_PORT_STRING +); + +1481 * +diffModSL’ + +ð +diffL’ +; + +1482 +SMsgAdvªû +: + +1484 +pTmpSMsg + = +pSMsg +; + +1485 ià( +ÇtSAlgMsgF›ldPos + + +1486 ( +pSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, + +1487 0è=ð +TRUE +) { + +1488 +pSMsg + +ð +pos + + + +1489 + `¡¾’ +( +SIP_ALG_REMOTE_PARTY_ID +); + +1490 +pTmpSMsg + = +pSMsg +; + +1491 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +1492 +SIP_ALG_GREAT +, + +1493 & +pos +, 0); + +1494 +pTmpSMsg + +ð +pos +; + +1495 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +1496 +SIP_ALG_AT +, & +pos +, + +1498 +pSMsg + +ð +pos + + 1; + +1499 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1501 +pSMsg + = + +1502 +ÇtSAlgModifyPaylßdAddrPÜt + + +1503 ( +pSMsg +, & +pSMsgEnd +, +addrPÜtL’ +, + +1504 & +diffL’ +, +modIp +, +modL4PÜt +, + +1505 +ADDRESS_PORT_STRING +); + +1506 +diffModSL’ + +ð +diffL’ +; + +1508 + `´štf +("sip_alg_process: " + +1510 +pSMsg + = +pTmpSMsg +; + +1514 ià( +ÇtSAlgMsgF›ldPos + + +1515 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +1516 0è=ð +TRUE +) { + +1517 +pSMsg + +ð +pos +; + +1519 +pTmpSMsg + = +pSMsg +; + +1521 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pSMsg +, + +1522 +SIP_ALG_CRLF +, + +1523 & +pos +, + +1525 +pTmpSMsg + +ð +pos +; + +1528 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +1529 +SIP_ALG_IPV4 +, & +pos +, + +1531 +pSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_IPV4 +)); + +1532 + `SKIP_SPACES +( +pSMsg +); + +1534 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1536 + `´štf +("sip_alg_processing: " + +1538  +NULL +; + +1541 +pSMsg + = + +1542 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1543 & +pSMsgEnd +, + +1544 +addrPÜtL’ +, + +1545 & +diffL’ +, + +1546 +modIp +, 0, + +1547 +ADDRESS_PORT_STRING +); + +1549 * +diffModSL’ + +ð +diffL’ +; + +1550 +sdpMsgL’ + +ð +diffL’ +; + +1554 ià( +ÇtSAlgMsgF›ldPos + + +1555 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +1556 0è=ð +TRUE +) { + +1557 +pSMsg + +ð +pos +; + +1558 +pTmpSMsg + = +pSMsg +; + +1560 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pSMsg +, + +1561 +SIP_ALG_CRLF +, + +1562 & +pos +, + +1564 +pTmpSMsg + +ð +pos +; + +1567 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +1568 +SIP_ALG_IPV4 +, & +pos +, + +1570 +pSMsg + +ð( +pos + + + `¡¾’ +( +SIP_ALG_IPV4 +)); + +1571 + `SKIP_SPACES +( +pSMsg +); + +1573 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1575 + `´štf +("sip_alg_processing: " + +1577  +NULL +; + +1580 +pSMsg + = + +1581 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1582 & +pSMsgEnd +, + +1583 +addrPÜtL’ +, + +1584 & +diffL’ +, + +1585 +modIp +, 0, + +1586 +ADDRESS_PORT_STRING +); + +1588 * +diffModSL’ + +ð +diffL’ +; + +1589 +sdpMsgL’ + +ð +diffL’ +; + +1593 ià( +ÇtSAlgMsgF›ldPos + + +1594 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +1595 0è=ð +TRUE +) { + +1596 +pSMsg + += + +1597 ( +pos + + + `¡¾’ +( +SIP_ALG_AUDIO +)); + +1598 + `SKIP_SPACES +( +pSMsg +); + +1599 +pTmpSMsg + = +pSMsg +; + +1600 +ÇtSAlgMsgF›ldPosFšdS·û + + +1601 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +1603 +pTmpSMsg + +ð +pos +; + +1604 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1608 +pSMsg + = + +1609 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1610 & +pSMsgEnd +, + +1611 +addrPÜtL’ +, + +1612 & +diffL’ +, 0, + +1613 +modRPÜt +, + +1614 +PORT_STRING +); + +1616 * +diffModSL’ + +ð +diffL’ +; + +1617 +sdpMsgL’ + +ð +diffL’ +; + +1620 } ià( +pkt_dœeùiÚ + =ð +PUBLIC + + +1621 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1625 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1626 +pSMsg + +ð +pos + + 1; + +1627 +pTmpSMsg + = +pSMsg +; + +1628 + `ÇtSAlgMsgF›ldPosFšdS·û +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1629 & +pos +, 0); + +1630 +pTmpSMsg + +ð +pos +; + +1631 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1633 +pSMsg + = + +1634 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1635 +addrPÜtL’ +, + +1636 & +diffL’ +, +modIp +, + +1637 +modL4PÜt +, + +1638 +ADDRESS_PORT_STRING +); + +1639 * +diffModSL’ + +ð +diffL’ +; + +1643 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1644 =ð +TRUE +) { + +1645 +pSMsg + +ð +pos +; + +1646 +pTmpSMsg + = +pSMsg +; + +1647 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1648 & +pos +, 0); + +1649 +pTmpSMsg + +ð +pos +; + +1650 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1652 +pSMsg + +ð +pos + + 1; + +1653 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1654 +pSMsg + = + +1655 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1656 & +pSMsgEnd +, + +1657 +addrPÜtL’ +, + +1658 & +diffL’ +, + +1659 +modIp +, + +1660 +modL4PÜt +, + +1661 +ADDRESS_PORT_STRING +); + +1662 * +diffModSL’ + +ð +diffL’ +; + +1665 +´štf + + +1667  +NULL +; + +1669 } ià( +pkt_dœeùiÚ + =ð +PRIVATE + + +1670 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1674 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1675 =ð +TRUE +) { + +1677 +pSMsg + += + +1678 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +1679 +SIP_ALG_VIA_FIELD_IPADDR +); + +1680 +pTmpSMsg + = +pSMsg +; + +1682 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +1683 +SIP_ALG_SEMICOLON +, & +pos +, + +1685 +pTmpSMsg + +ð +pos +; + +1686 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1688 + `´štf +("sip_alg_process; No valid VIA field\n"); + +1689  +NULL +; + +1692 +pSMsg + = + +1693 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1694 +addrPÜtL’ +, + +1695 & +diffL’ +, +modIp +, 0, + +1696 +ADDRESS_PORT_STRING +); + +1697 * +diffModSL’ + = +diffL’ +; + +1700 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1701 =ð +TRUE +) { + +1702 +pSMsg + +ð +pos +; + +1704 +pTmpSMsg + = +pSMsg +; + +1706 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1707 & +pos +, 0); + +1708 +pTmpSMsg + +ð +pos +; + +1709 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1711 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1713 +pSMsg + +ð +pos + + 1; + +1715 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1717 +´štf + + +1719  +NULL +; + +1722 +pSMsg + = + +1723 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1724 +addrPÜtL’ +, + +1725 & +diffL’ +, +modIp +, + +1726 +modL4PÜt +, + +1727 +ADDRESS_PORT_STRING +); + +1729 * +diffModSL’ + +ð +diffL’ +; + +1731 } ià( +pkt_dœeùiÚ + =ð +PRIVATE + + +1732 && +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1736 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1737 =ð +TRUE +) { + +1739 +pSMsg + += + +1740 ( +pos + + + `¡¾’ +( +SIP_ALG_VIA +) + + +1741 +SIP_ALG_VIA_FIELD_IPADDR +); + +1742 +pTmpSMsg + = +pSMsg +; + +1744 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, + +1745 +SIP_ALG_SEMICOLON +, & +pos +, + +1747 +pTmpSMsg + +ð +pos +; + +1748 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1750 + `´štf +("sip_alg_process; No valid VIA field\n"); + +1751  +NULL +; + +1754 +pSMsg + = + +1755 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1756 +addrPÜtL’ +, + +1757 & +diffL’ +, +modIp +, 0, + +1758 +ADDRESS_PORT_STRING +); + +1759 * +diffModSL’ + = +diffL’ +; + +1762 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, + +1763 +SIP_ALG_FROM +, & +pos +, 0è=ð +TRUE +) { + +1764 +pSMsg + +ð +pos +; + +1766 +pTmpSMsg + = +pSMsg +; + +1768 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1769 & +pos +, 0); + +1770 +pTmpSMsg + +ð +pos +; + +1771 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1773 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1775 +pSMsg + +ð +pos + + 1; + +1777 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1779 +´štf + + +1781  +NULL +; + +1784 +pSMsg + = + +1785 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1786 +addrPÜtL’ +, + +1787 & +diffL’ +, +modIp +, + +1788 +modL4PÜt +, + +1789 +ADDRESS_PORT_STRING +); + +1791 * +diffModSL’ + +ð +diffL’ +; + +1793 } ià( +pkt_dœeùiÚ + =ð +PUBLIC + + +1794 && +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1796 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1797 =ð +TRUE +) { + +1798 +pSMsg + +ð +pos +; + +1800 +pTmpSMsg + = +pSMsg +; + +1802 + `ÇtSAlgMsgF›ldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1803 & +pos +, 0); + +1804 +pTmpSMsg + +ð +pos +; + +1805 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1807 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1809 +pSMsg + +ð +pos + + 1; + +1811 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1813 +´štf + + +1815  +NULL +; + +1818 +pSMsg + = + `ÇtSAlgModifyPaylßdAddrPÜt +(pSipMsg, + +1819 & +pSMsgEnd +, + +1820 +addrPÜtL’ +, + +1821 & +diffL’ +, +modIp +, + +1822 +modL4PÜt +, + +1823 +ADDRESS_PORT_STRING +); + +1825 * +diffModSL’ + = +diffL’ +; + +1829 ià( +ÇtSAlgMsgF›ldPos + + +1830 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1831 +pSMsg + +ð +pos +; + +1833 +pTmpSMsg + = +pSMsg +; + +1834 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1835 +SIP_ALG_CRLF +, & +pos +, + +1837 +pTmpSMsg + +ð +pos +; + +1839 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1841 +pSMsg + +ð +pos + + 1; + +1842 +addrPÜtL’ + = +pTmpSMsg + - +pSMsg +; + +1844 + `´štf +("sip_alg_process; " + +1846  +NULL +; + +1849 +pSMsg + = + +1850 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1851 +addrPÜtL’ +, + +1852 & +diffL’ +, +modIp +, + +1853 +modL4PÜt +, + +1854 +ADDRESS_PORT_STRING +); + +1856 * +diffModSL’ + +ð +diffL’ +; + +1860 +SMsgAdvªû2 +: + +1862 ià( +ÿÎ_dœeùiÚ + =ð +SIP_CALL_OUTGOING +) { + +1864 ià( +pkt_dœeùiÚ + =ð +PRIVATE +) { + +1865 ià( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1866 ià( +»move_s_®g_’Œy + + +1867 ( + `¹e_bsw­32 +( +_h +-> +¤c_addr +), + +1868 + `¹e_bsw­16 +( +udp_h +-> +¤c_pÜt +)) < 0) + +1869 + `´štf +("removesipalgentry failed: " + +1871 +_h +-> +¤c_addr +, +udp_h +-> +¤c_pÜt +); + +1875 ià( +pkt_dœeùiÚ + =ð +PUBLIC +) { + +1876 ià( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1877 ià( + `»move_s_®g_’Œy +( +pubIp +, +pubL4PÜt +) < 0) + +1878 + `´štf +("removesipalgentry failed: " + +1880 +pubIp +, +pubL4PÜt +); + +1886 ià(( +sdpMsgL’ + > 0è&& ( +sdpD©aL’ + > 0)) { + +1887 +pSMsg + = +pS¹SMsg +; + +1888 * +tmpSdpL’ + = +NULL +; + +1890 +sdpMsgL’ + +ð +sdpD©aL’ +; + +1891 +tmpSdpL’ + = + `™ß +( +sdpMsgL’ +); + +1892  +tmpSŒL’ + = + `¡¾’ +( +tmpSdpL’ +); + +1895 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) + +1896 =ð +TRUE +) { + +1897 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1898 + `SKIP_SPACES +( +pSMsg +); + +1899 +pTmpSMsg + = +pSMsg +; + +1900 + `ÇtSAlgMsgF›ldPosFšdC¾f +( +pTmpSMsg +, + +1901 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +1903 +pTmpSMsg + +ð +pos +; + +1904 + `SKIP_SPACES +( +pSMsg +); + +1905 +diffL’ + = +pTmpSMsg + - +pSMsg +; + +1906 + `ÇtSAlgAdju¡Msg +( +pSMsg +, & +pSMsgEnd +, +tmpSŒL’ +, + +1907 +diffL’ +); + +1908 + `¡ºýy +( +pSMsg +, +tmpSdpL’ +, +tmpSŒL’ +); + +1910 + `´štf +("sip_alg_process: Invalid Content Length\n"); + +1911  +NULL +; + +1915 +sAlgProûssEx™ +: + +1917  +pS¹SMsg +; + +1918 + } +} + +1924  + $ÇtSAlgG‘AudioPÜts +( +¹e_mbuf + * +pkt +, +ušt16_t + * +¹pPÜt +, + +1925 +ušt16_t + * +¹ýPÜt +) + +1927  +v4_hdr + * +_h +; + +1928  +‘h”_hdr + * +‘h_h + = + `¹e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +1929  +udp_hdr + * +udp_h +; + +1930 * +pSMsg +, * +pEndPŒ +; + +1931  +pos +, +sdpMsgL’ +; + +1933 +_h + = ( +v4_hdr + *)((*) +‘h_h + + ( +‘h”_hdr +)); + +1934 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1935 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +1938 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, 0è=ð +FALSE +) + +1941 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +1942 + `SKIP_SPACES +( +pSMsg +); + +1945 ià(! + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_APPSDP +)) { + +1946 + `´štf +("sip_alg_getAudioPort Invalid Contentype\n"); + +1951 + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0); + +1952 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1953 + `SKIP_SPACES +( +pSMsg +); + +1954 +sdpMsgL’ + = + `¡¹Þ +( +pSMsg +, & +pEndPŒ +, 10); + +1955 ià(! +sdpMsgL’ +) { + +1956 + `´štf +("sipAlggetAudioport - sdpMsgLen is 0\n"); + +1961 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, 0) == + +1962 +TRUE +) { + +1963 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +1964 + `SKIP_SPACES +( +pSMsg +); + +1965 * +¹pPÜt + = + `¡¹Þ +( +pSMsg +, & +pEndPŒ +, 10); + +1967 * +¹pPÜt + = 0; + +1970 ià( + `ÇtSAlgMsgF›ldPos +( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, 0) == + +1971 +TRUE +) { + +1972 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +1973 + `SKIP_SPACES +( +pSMsg +); + +1974 * +¹ýPÜt + = + `¡¹Þ +( +pSMsg +, & +pEndPŒ +, 10); + +1976 * +¹ýPÜt + = 0; + +1978 ià( +ALG_DEBUG +) + +1979 + `´štf +(" sipAlgGetAudioPort;„tpPort %d,„tcpPort %d\n", + +1980 * +¹pPÜt +, * +¹ýPÜt +); + +1982 + } +} + +1986 + $ÇtSAlgMsgF›ldPosFšdS·û +(* +pD©a +, cÚ¡ * +pIdSŒ +, * +pPos +, + +1987  +£¬chL’ +) + +1989 * +pS¹ + = +pD©a +; + +1990  +i + = 0; + +1992 ià(! +pIdSŒ +) + +1993  +FALSE +; + +1995 ià(! +£¬chL’ +) + +1996 +£¬chL’ + = 1500; + +1998  +TRUE +) { + +1999 * +pD©a + != ' ') { + +2000 +pD©a +++; + +2001 +i +++; + +2004 ià( +i + > +£¬chL’ +) { + +2005 + `´štf +("SIP ALG Find Field Pos: " + +2007 +£¬chL’ +); + +2008 * +pPos + = +£¬chL’ +; + +2009  +FALSE +; + +2012 ià( + `bcmp +( +pD©a +, +pIdSŒ +, + `¡¾’ +(pIdStr)) == 0) + +2016 * +pPos + = +pD©a + - +pS¹ +; + +2017  +TRUE +; + +2018 + } +} + +2021  + $ÇtSAlgMsgF›ldPosFšdC¾f +( + +2022 * +pD©a +, + +2023 cÚ¡ * +pIdSŒ +, + +2024 * +pPos +, + +2025  +£¬chL’ +) + +2027 * +pS¹ + = +pD©a +; + +2028  +i + = 0; + +2030 ià(! +pIdSŒ +) + +2031  +FALSE +; + +2033 ià(! +£¬chL’ +) + +2034 +£¬chL’ + = 1500; + +2036  +TRUE +) { + +2037 * +pD©a + != '\r' && *(pData + 1) != '\n') { + +2038 +pD©a +++; + +2039 +i +++; + +2041 ià( +i + >ð +£¬chL’ +) { + +2042 + `´štf +("SIP ALG Find Field Pos: " + +2044 +£¬chL’ +); + +2045 * +pPos + = +£¬chL’ +; + +2046  +FALSE +; + +2049 ià( + `bcmp +( +pD©a +, +pIdSŒ +, + `¡¾’ +(pIdStr)) == 0) + +2053 * +pPos + = +pD©a + - +pS¹ +; + +2054  +TRUE +; + +2055 + } +} + +2058  + $ÇtSAlgMsgF›ldPos +(* +pD©a +, + +2059 cÚ¡ * +pIdSŒ +, + +2060 * +pPos +, + +2061  +£¬chL’ +) + +2063 * +pS¹ + = +pD©a +; + +2064  +i + = 0, +j + = 0; + +2066 ià(! +pIdSŒ +) + +2067  +FALSE +; + +2069 ià(! +£¬chL’ +) + +2070 +£¬chL’ + = 1500; + +2072  +TRUE +) { + +2073 * +pD©a + != '\r' && *(pData + 1) != '\n') { + +2076 * +pD©a + == ' ') { + +2077 +pD©a +++; + +2078 +j +++; + +2081 ià(* +pD©a + == '\r' && *(pData + 1) == '\n') + +2084 ià( + `bcmp +( +pD©a +, +pIdSŒ +, + `¡¾’ +(pIdStr)) == 0) { + +2085 * +pPos + = +pD©a + - +pS¹ +; + +2086  +TRUE +; + +2089 +pD©a +++; + +2090 +j +++; + +2092 ià( +j + >ð +£¬chL’ +) { + +2093 * +pPos + = +pD©a + - +pS¹ +; + +2094  +FALSE +; + +2101  +i + = 0; i < ( +£¬chL’ + - 1); i++) { + +2102 ià( +pD©a +[ +i +] == '\r') + +2103 ià( +pD©a +[ +i + + 1] == '\n') + +2107 ià( +i + > +£¬chL’ +) { + +2108 + `´štf +("SIP ALG Find Field Pos: " + +2110 +£¬chL’ +); + +2111 * +pPos + = +£¬chL’ +; + +2112  +FALSE +; + +2115 +pD©a + +ð +i + + 2; + +2116 +£¬chL’ + -ð( +i + + 2); + +2118 ià(( +pD©a +[0] == '\r' &&…Data[1] == '\n') || + +2119 ( +£¬chL’ + <= 0)) { + +2122 ià( +£¬chL’ + > 0) { + +2123 +pD©a + += 2; + +2127 * +pPos + = +pD©a + - +pS¹ +; + +2129  +FALSE +; + +2133 * +pPos + = +pD©a + - +pS¹ +; + +2134  +TRUE +; + +2135 + } +} + +2138 * + $g‘SC®lIdSŒ +(* +pMsg +) + +2140 * +pS¹ +; + +2141 * +pC®lId + = +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 +pC®lId + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +2159 ià(! +pC®lId +) + +2160  +NULL +; + +2162 + `bcÝy +( +pS¹ +, +pC®lId +, +pMsg + -…Start); + +2163 *( +pC®lId + + ( +pMsg + - +pS¹ +)) = 0; + +2165 ià( +ALG_DEBUG +) + +2166 + `´štf +("%s: %s\n", +__func__ +, +pC®lId +); + +2168  +pC®lId +; + +2169 + } +} + +2171 * + $ÇtSAlgModifyPaylßdAddrPÜt +( + +2172 * +pSMsg +, ** +pSMsgEnd +, + +2173 +ušt32_t + +ÞdSŒL’ +, ušt32_ˆ* +diffL’ +, + +2174 +ušt32_t + +modIp +, +ušt16_t + +modPÜt +, ušt32_ˆ +ty³ +) + +2176  +add½Üt +[ +MAX_ADDR_PORT_SIZE +]; + +2177  +š_addr + +Addr +; + +2178 +ušt32_t + +ÃwSŒL’ + = 0; + +2179 * +tmpPÜt + = +NULL +; + +2181 ià( +modPÜt + != 0) + +2182 +tmpPÜt + = + `™ß +( +modPÜt +); + +2184 * +diffL’ + = 0; + +2185 ià( +ty³ + =ð +ADDRESS_PORT_STRING +) { + +2186 +Addr +. +s_addr + = + `htÚl +( +modIp +); + +2187 * +tmpAddr + = + `š‘_Áß +( +Addr +); + +2189 ià( +modPÜt + != 0) + +2190 + `¥rštf +( +add½Üt +, "%s:%s", +tmpAddr +, +tmpPÜt +); + +2192 + `¥rštf +( +add½Üt +, "%s", +tmpAddr +); + +2194 +ÃwSŒL’ + = + `¡¾’ +( +add½Üt +); + +2196 ià( + `abs +( +ÃwSŒL’ + - +ÞdSŒL’ +) > 0) { + +2201 + `ÇtSAlgAdju¡Msg +( +pSMsg +, +pSMsgEnd +, + +2202 +ÃwSŒL’ +, +ÞdSŒL’ +); + +2206 + `¡ºýy +( +pSMsg +, +add½Üt +, + `¡¾’ +(addrport)); + +2207 } ià( +ty³ + =ð +PORT_STRING +) { + +2208 if( +tmpPÜt +) + +2209 +ÃwSŒL’ + = + `¡¾’ +( +tmpPÜt +); + +2211 ià( + `abs +( +ÃwSŒL’ + - +ÞdSŒL’ +) > 0) { + +2216 + `ÇtSAlgAdju¡Msg +( +pSMsg +, +pSMsgEnd +, + +2217 +ÃwSŒL’ +, +ÞdSŒL’ +); + +2221 if( +tmpPÜt +) + +2222 + `¡ºýy +( +pSMsg +, +tmpPÜt +, + `¡¾’ +(tmpPort)); + +2225 ià( +ÃwSŒL’ + > +ÞdSŒL’ +) + +2226 * +diffL’ + = +ÃwSŒL’ + - +ÞdSŒL’ +; + +2228  +pSMsg +; + +2229 + } +} + +2231 * + $ÇtSAlgAdju¡Msg +(* +pSMsg +, ** +pSMsgEnd +, + +2232 +ušt32_t + +ÃwSŒL’ +, ušt32_ˆ +ÞdSŒL’ +) + +2234  +MsgBufãr +[ +MAX_SIP_UDP_MSG_SIZE +]; + +2236 ià( +ÃwSŒL’ + > +ÞdSŒL’ +) { + +2237 +pSMsg + +ð +ÞdSŒL’ +; + +2238  +msgL’ + = * +pSMsgEnd + - +pSMsg +; + +2240 + `¡ºýy +( +MsgBufãr +, +pSMsg +, +msgL’ +); + +2241 +pSMsg + +ð( +ÃwSŒL’ + - +ÞdSŒL’ +); + +2242 + `¡ºýy +( +pSMsg +, +MsgBufãr +, +msgL’ +); + +2244 ià( +ALG_DEBUG +) + +2245 + `´štf +("ÇtSAlgAdju¡Msg: %u\n", +msgL’ +); + +2248 * +pSMsgEnd + +ð( +ÃwSŒL’ + - +ÞdSŒL’ +); + +2251 + `mem£t +( +pSMsg +, ' ', +ÞdSŒL’ +); + +2254  +pSMsg +; + +2255 + } +} + + @VIL/alg/lib_sip_alg.h + +17 #iâdeà +__INCLUDE_LIB_ALG_H__ + + +18  + #__INCLUDE_LIB_ALG_H__ + + + ) + +20  + ~"¹e_‘h”.h +" + +22 +ušt16_t + + gs_£ssiÚ_numb” +; + +23  + #IS_STRING_SAME +( +pSŒ +, +¡rId +è( + `bcmp +(ÕSŒ), sŒId, + `¡¾’ +(¡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_ÿÎ_dœeùiÚ + { + +35 + mSIP_CALL_INCOMING +, + +36 + mSIP_CALL_OUTGOING + + +40 + es_®g_pÜt_ty³ + { + +41 + mSIP_UDP +, + +42 + mSIP_RTP +, + +43 + mSIP_RTCP + + +50  + ss_®g_key + { + +55 +ušt32_t + + m_add»ss +; + +56 +ušt16_t + + ml4pÜt +; + +57 +ušt8_t + + mfžËr1 +; + +58 +ušt8_t + + mfžËr2 +; + +65  + ss_®g_bË_’Œy + { + +66 +ušt32_t + + m_add»ss +; + +71 +ušt16_t + + ml4pÜt +; + +72 +ušt8_t + + ms_®g_ÿÎ_dœeùiÚ +; + +74 +ušt8_t + + ms_®g_ÿÎ_id +[100]; + +75 +ušt8_t + + ml4pÜt_ty³ +; + +76 +ušt8_t + + mfžËr1 +; + +77 +ušt16_t + + mfžËr2 +; + +78 +ušt32_t + + mfžËr3 +; + +79 } + g__¹e_ÿche_®igÃd +; + +94  +lib_s_®g_š™ +(); + +117  +s_®g_dpi +( +¹e_mbuf + * +pkt +, +pkt_dœ + +pkt_dœeùiÚ +, + +118 +ušt32_t + +modIp +, +ušt16_t + +modL4PÜt +, + +119 +ušt32_t + +pubIp +, +ušt16_t + +pubL4PÜt +, + +120 +ušt16_t + +modRPÜt +, ušt16_ˆ +modRtýPÜt +); + +133  +ÇtSAlgG‘AudioPÜts +( + +134  +¹e_mbuf + * +pkt +, + +135 +ušt16_t + * +¹pPÜt +, + +136 +ušt16_t + * +¹ý_pÜt +); + +137  +ÇtSAlgMsgF›ldPos +( + +138 * +pD©a +, + +139 cÚ¡ * +pIdSŒ +, + +140 * +pos +, + +141  +£¬chL’ +); + +142  +ÇtSAlgMsgF›ldPosFšdC¾f +( + +143 * +pD©a +, + +144 cÚ¡ * +pIdSŒ +, + +145 * +pPos +, + +146  +£¬chL’ +); + +147  +ÇtSAlgMsgF›ldPosFšdS·û +( + +148 * +pD©a +, + +149 cÚ¡ * +pIdSŒ +, + +150 * +pPos +, + +151  +£¬chL’ +); + +152  +»move_s_®g_’Œy +( + +153 +ušt32_t + +addr +, + +154 +ušt16_t + +pÜtid +); + + @VIL/conntrack/rte_cnxn_tracking.c + +17  + ~<¹e_‘h”.h +> + +18  + ~<¹e_´eãtch.h +> + +19  + ~<¹e_cyþes.h +> + +20  + ~<¹e_m®loc.h +> + +21  + ~<¹e_memýy.h +> + +22  + ~<¹e_tim”.h +> + +23  + ~<¹e_¥šlock.h +> + +24  + ~"¹e_úxn_Œackšg.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”_b©ch_lookup_basic_ty³ +( + +58  +¹e_ù_úxn_Œack” + * +ù +, + +59  +¹e_mbuf + ** +pkts +, + +60 +ušt64_t + * +pkts_mask +, + +61 +ušt64_t + +no_Ãw_úxn_mask +, + +62 +ušt64_t + * +»¶y_pkt_mask +, + +63 +ušt64_t + * +hijack_mask +, + +64 +ušt8_t + +_hdr_size_by‹s +); + +74 + $¹e_ù_úxn_´št_pkt +( +¹e_mbuf + * +pkt +, +ušt8_t + +ty³ +) + +76  +i +; + +77 +ušt8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +IP_START +); + +79 + `´štf +("\n"); + +80 + `´štf +("IP‡nd 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³ +( +ušt8_t + * +ty³ +,  +¹e_mbuf + * +pkt +) + +106  +_hdr_size_by‹s + = + `¹e_ù_g‘_IP_hdr_size +( +pkt +); + +108 ià( +_hdr_size_by‹s + =ð +IPv4_HEADER_SIZE +) + +109 * +ty³ + = +IP_VERSION_4 +; + +111 ià( +_hdr_size_by‹s + =ð +IPv6_HEADER_SIZE +) + +112 * +ty³ + = +IP_VERSION_6 +; + +113 + } +} + +116 + $¹e_ù_´št_hashkey +( +ušt32_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 +ušt8_t + + +134 + $¹e_ù_ü—‹_úxn_hashkey +( + +135 +ušt32_t + * +¤c_addr +, + +136 +ušt32_t + * +d¡_addr +, + +137 +ušt16_t + +¤c_pÜt +, + +138 +ušt16_t + +d¡_pÜt +, + +139 +ušt8_t + +´Ùo +, + +140 +ušt32_t + * +key +, + +141 +ušt8_t + +ty³ +) + +143 +ušt8_t + +hash_Üd”_Üigš®_dœeùiÚ + = 1; + +145 +key +[9] = +´Ùo +; + +147 ià( +ty³ + =ð +IP_VERSION_4 +) { + +148 +ušt32_t + +sourû + = * +¤c_addr +; + +149 +ušt32_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_pÜt + < +d¡_pÜt +))) { + +155 +key +[0] = +sourû +; + +156 +key +[1] = +de¡ +; + +157 +key +[2] = ( +¤c_pÜt + << 16è| +d¡_pÜt +; + +159 +key +[0] = +de¡ +; + +160 +key +[1] = +sourû +; + +161 +key +[2] = ( +d¡_pÜt + << 16è| +¤c_pÜt +; + +162 +hash_Üd”_Üigš®_dœeùiÚ + = 0; + +166 ià( +ty³ + =ð +IP_VERSION_6 +) { + +167  +_cmp + = + `memcmp +( +¤c_addr +, +d¡_addr +, 16); + +168 +ušt32_t + * +lo_addr +; + +169 +ušt32_t + * +hi_addr +; + +171 ià(( +_cmp + < 0è|| ((_cm°=ð0è&& ( +¤c_pÜt + < +d¡_pÜt +))) { + +172 +lo_addr + = +¤c_addr +; + +173 +hi_addr + = +d¡_addr +; + +174 +key +[8] = ( +¤c_pÜt + << 16è| +d¡_pÜt +; + +176 +lo_addr + = +d¡_addr +; + +177 +hi_addr + = +¤c_addr +; + +178 +key +[8] = ( +d¡_pÜt + << 16è| +¤c_pÜt +; + +179 +hash_Üd”_Üigš®_dœeùiÚ + = 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š®_dœeùiÚ +; + +195 + } +} + +199 + $¹e_ù_g‘_IP_hdr_size +( +¹e_mbuf + * +pkt +) + +207 +ušt8_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_d©a + * +cd +) + +231 +cd +-> +¡©e_u£d_fÜ_tim” + = +RTE_CT_TCP_NONE +; + +232 + `¹e_ù_£t_úxn_tim”_fÜ_tý +( +ù +, +cd +, +RTE_CT_TCP_SYN_SENT +); + +233 + } +} + +264  +šlše +  + +265 + $¹e_ù_»memb”_Ãw_cÚÃùiÚ +( + +266  +¹e_ù_úxn_Œack” + * +ù +, + +267  +¹e_ù_úxn_d©a + * +’Œy +) + +269 +ù +-> +ϋ¡_cÚÃùiÚ +++; + +270 +ù +-> +Ãw_cÚÃùiÚs +[ù-> +ϋ¡_cÚÃùiÚ +] = +’Œy +; + +271 + } +} + +273  +¹e_ù_úxn_d©a + * + +274 + $¹e_ù_£¬ch_Ãw_cÚÃùiÚs +( +¹e_ù_úxn_Œack” + * +ù +, +ušt32_t + * +key +) + +276  +i +; + +278  +i + = 0; i <ð +ù +-> +ϋ¡_cÚÃùiÚ +; i++) { + +279 +ušt32_t + * +úxn_key + = +ù +-> +Ãw_cÚÃùiÚs +[ +i +]-> +key +; + +280  +key_cmp + = + `memcmp +( +úxn_key +, +key +, + +281 ( +ù +-> +Ãw_cÚÃùiÚs +[ +i +]-> +key +)); + +283 ià( +key_cmp + == 0) + +284  +ù +-> +Ãw_cÚÃùiÚs +[ +i +]; + +286  +NULL +; + +287 + } +} + +289  +šlše +  + $¹e_ù_fÜg‘_Ãw_cÚÃùiÚs +( +¹e_ù_úxn_Œack” + * +ù +) + +291 +ù +-> +ϋ¡_cÚÃùiÚ + = -1; + +292 + } +} + +297  +¹e_ù_·ck‘_aùiÚ + + +298 + $¹e_ù_hªdË_tý_lookup +( + +299  +¹e_ù_úxn_Œack” + * +ù +, + +300  +¹e_mbuf + * +·ck‘ +, + +301 +ušt8_t + +pkt_num +, + +302 +ušt8_t + +key_is_þ›Á_Üd” +, + +303 +ušt32_t + * +key +, + +304  +hash_bË_’Œy +, + +305  +no_Ãw_úxn +, + +306 +ušt8_t + +_hdr_size_by‹s +) + +308  +¹e_ù_úxn_d©a + +Ãw_úxn_d©a +; + +310 + `mem£t +(& +Ãw_úxn_d©a +, 0, ( +¹e_ù_úxn_d©a +)); + +311 +¹e_ù_·ck‘_aùiÚ + +·ck‘_aùiÚ +; + +313 #ifdeà +CT_CGNAT + + +314 +št32_t + +pos™iÚ + = +hash_bË_’Œy +; + +315 +ù +-> +pos™iÚs +[ +pkt_num +] = +pos™iÚ +; + +319 ià( +hash_bË_’Œy + >= 0) { + +325  +¹e_ù_úxn_d©a + * +’Œy + = + +326 & +ù +-> +hash_bË_’Œ›s +[ +hash_bË_’Œy +]; + +328 +·ck‘_aùiÚ + = + `¹e_ù_v”ify_tý_·ck‘ +( +ù +, +’Œy +, +·ck‘ +, + +329 +key_is_þ›Á_Üd” +, +_hdr_size_by‹s +); + +331  +·ck‘_aùiÚ +) { + +333  +RTE_CT_FORWARD_PACKET +: + +334 +’Œy +-> +couÁ”s +. +·ck‘s_fÜw¬ded +++; + +337  +RTE_CT_DROP_PACKET +: + +338 +’Œy +-> +couÁ”s +. +·ck‘s_drݳd +++; + +339  +RTE_CT_DROP_PACKET +; + +341  +RTE_CT_REOPEN_CNXN_AND_FORWARD_PACKET +: + +348 ià( + `¹e_ù_tý_Ãw_cÚÃùiÚ +( +ù +, & +Ãw_úxn_d©a +, + +349 +·ck‘ +, 0, +_hdr_size_by‹s +) != + +350 +RTE_CT_DROP_PACKET +) { + +351 + `¹e_memýy +(& +’Œy +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +352 & +Ãw_úxn_d©a +. +ù_´ÙocÞ +. +tý_ù_d©a +, + +353 ( +Ãw_úxn_d©a +. +ù_´ÙocÞ +. +tý_ù_d©a +)); + +354 + `¹e_ù_£t_tim”_fÜ_Ãw_úxn +( +ù +, +’Œy +); + +355 ià( +ù +-> +couÁ”s +-> +£ssiÚs_»aùiv©ed + > 0) + +356 +ù +-> +couÁ”s +-> +£ssiÚs_»aùiv©ed +--; + +361  +RTE_CT_SEND_SERVER_SYN +: + +362 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +364  +RTE_CT_SEND_SERVER_SYN +; + +366  +RTE_CT_SEND_SERVER_ACK +: + +367 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +369  +RTE_CT_SEND_SERVER_ACK +; + +371  +RTE_CT_HIJACK +: + +372 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +376  +RTE_CT_HIJACK +; + +378  +RTE_CT_DESTROY_CNXN_AND_FORWARD_PACKET +: + +396 ià( + `¹e_hash_d–_key +( +ù +-> +rhash +, +’Œy +-> +key +) >= 0) { + +407 +ù +-> +couÁ”s +-> +£ssiÚs_þo£d +++; + +408 ià( +ù +-> +couÁ”s +-> +cu¼’t_aùive_£ssiÚs + > 0) + +409 +ù +-> +couÁ”s +-> +cu¼’t_aùive_£ssiÚs +--; + +410 + `¹e_ù_ÿnûl_úxn_tim” +( +’Œy +); + +412 +’Œy +-> +couÁ”s +. +·ck‘s_fÜw¬ded +++; + +420  +¹e_ù_úxn_d©a + * +Ãw_hash_’Œy +; + +422 ià( +no_Ãw_úxn +) { + +423 +ù +-> +couÁ”s +-> +pkts_drÝ_šv®id_cÚn +++; + +424  +RTE_CT_DROP_PACKET +; + +427 +·ck‘_aùiÚ + = + `¹e_ù_tý_Ãw_cÚÃùiÚ +( +ù +, & +Ãw_úxn_d©a +, + +428 +·ck‘ +, +ù +-> +misc_ÝtiÚs +. +syÅroxy_’abËd +, + +429 +_hdr_size_by‹s +); + +431 ià( + `uÆik–y +( +·ck‘_aùiÚ + =ð +RTE_CT_DROP_PACKET +)) { + +432 +ù +-> +couÁ”s +-> +pkts_drÝ_šv®id_cÚn +++; + +433  +RTE_CT_DROP_PACKET +; + +437 +št32_t + +pos™iÚ + = + `¹e_hash_add_key +( +ù +-> +rhash +, +key +); + +438 ià( +pos™iÚ + < 0) { + +439 +´štf + + +441 +pos™iÚ +, +pkt_num +); + +442  +RTE_CT_DROP_PACKET +; + +444 #ifdeà +CT_CGNAT + + +445 +ù +-> +pos™iÚs +[ +pkt_num +] = +pos™iÚ +; + +447 +Ãw_hash_’Œy + = & +ù +-> +hash_bË_’Œ›s +[ +pos™iÚ +]; + +451 + `memýy +( +Ãw_úxn_d©a +. +key +, key, (new_cnxn_data.key)); + +452 +Ãw_úxn_d©a +. +key_is_þ›Á_Üd” + = key_is_client_order; + +453 +Ãw_úxn_d©a +. +´ÙocÞ + = +TCP_PROTOCOL +; + +454 + `¹e_úxn__ty³ +(& +Ãw_úxn_d©a +. +ty³ +, +·ck‘ +); + +455 + `¹e_memýy +( +Ãw_hash_’Œy +, & +Ãw_úxn_d©a +, + +456 ( +¹e_ù_úxn_d©a +)); + +457 +Ãw_hash_’Œy +-> +couÁ”s +. +·ck‘s_fÜw¬ded + = 1; + +458 +Ãw_hash_’Œy +-> +couÁ”s +. +·ck‘s_drݳd + = 0; + +459 +ù +-> +couÁ”s +-> +cu¼’t_aùive_£ssiÚs +++; + +460 +ù +-> +couÁ”s +-> +£ssiÚs_aùiv©ed +++; + +462 ià( +·ck‘_aùiÚ + =ð +RTE_CT_SEND_CLIENT_SYNACK +) { + +466 + `¹e_¥_·r£_ÝtiÚs +( +·ck‘ +, +Ãw_hash_’Œy +); + +473 + `¹e_¥_cvt_to_¥ooãd_þ›Á_syÇck +( +Ãw_hash_’Œy +, + +474 +·ck‘ +); + +481 +·ck‘_aùiÚ + = + `¹e_ù_v”ify_tý_·ck‘ +( +ù +, + +482 +Ãw_hash_’Œy +, +·ck‘ +, + +483 ! +key_is_þ›Á_Üd” +, + +484 +_hdr_size_by‹s +); + +486 ià( + `uÆik–y +( +·ck‘_aùiÚ + !ð +RTE_CT_FORWARD_PACKET +)) { + +488 + `´štf +("Seriousƒrror in synproxy generating "); + +489 + `´štf +("SYN/ACK\n"); + +490  +RTE_CT_DROP_PACKET +; + +492 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +494  +RTE_CT_SEND_CLIENT_SYNACK +; + +496 + `¹e_ù_£t_tim”_fÜ_Ãw_úxn +( +ù +, +Ãw_hash_’Œy +); + +508 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +509  +RTE_CT_FORWARD_PACKET +; + +510 + } +} + +512  +ušt64_t + + +513 + $¹e_ù_úxn_Œack”_b©ch_lookup_basic +( + +514  +¹e_ù_úxn_Œack” + * +ù +, + +515  +¹e_mbuf + ** +pkts +, + +516 +ušt64_t + +pkts_mask +, + +517 +ušt64_t + +no_Ãw_úxn_mask +, + +518 +ušt64_t + * +»¶y_pkt_mask +, + +519 +ušt64_t + * +hijack_mask +) + +522 +ušt64_t + +pkts_to_´oûss + = +pkts_mask +; + +524 +ušt64_t + +v®id_·ck‘s + = +pkts_mask +; + +525 +ušt8_t + +com·ùšg_m­ +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +527 +ušt8_t + +key_Üig_dœ +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +528 +ušt32_t + +·ck‘s_fÜ_lookup + = 0; + +529 +št32_t + +pos™iÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +530 +ušt32_t + +i +; + +531  +¹e_ù_úxn_d©a + +Ãw_úxn_d©a +; + +533 ià( +CNXN_TRX_DEBUG + > 1) { + +534 + `´štf +("EÁ” cnxÀŒack” %p", +ù +); + +535 + `´štf +(" synproxy batch†ookup with…acket mask %p\n", + +536 (*) +pkts_mask +); + +539 + `¹e_ù_fÜg‘_Ãw_cÚÃùiÚs +( +ù +); + +540 * +»¶y_pkt_mask + = 0; + +541 * +hijack_mask + = 0; + +548 ; +pkts_to_´oûss +;) { + +549 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_to_´oûss +); + +551 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +553 +pkts_to_´oûss + &ð~ +pkt_mask +; + +555  +¹e_mbuf + * +pkt + = +pkts +[ +pos +]; + +557  +_hdr_size_by‹s + = + `¹e_ù_g‘_IP_hdr_size +( +pkt +); + +559 ià( + `uÆik–y +( +_hdr_size_by‹s + < 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_by‹s +)); + +572 +ušt16_t + +¤c_pÜt + = + `¹e_bsw­16 +( +thdr +->src_port); + +573 +ušt16_t + +d¡_pÜt + = + `¹e_bsw­16 +( +thdr +->dst_port); + +575 ià( +_hdr_size_by‹s + =ð +IPv4_HEADER_SIZE +) { + +576  +v4_hdr + * +ihdr + = (v4_hd¸*) +_hdr +; + +577 +ušt8_t + +´Ùo + = +ihdr +-> +Ãxt_´Ùo_id +; + +579 ià(!( +´Ùo + =ð +TCP_PROTOCOL + ||…rÙØ=ð +UDP_PROTOCOL +)) { + +590 +ušt32_t + +¤c_addr + = + `¹e_bsw­32 +( +ihdr +->src_addr); + +591 +ušt32_t + +d¡_addr + = + `¹e_bsw­32 +( +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 +com·ùšg_m­ +[ +·ck‘s_fÜ_lookup +] = +pos +; + +603 +key_Üig_dœ +[ +·ck‘s_fÜ_lookup +] = + +604 + `¹e_ù_ü—‹_úxn_hashkey +(& +¤c_addr +, & +d¡_addr +, + +605 +¤c_pÜt +, +d¡_pÜt +, + +606 +´Ùo +, + +607 & +ù +-> +hash_keys + + +608 [ +·ck‘s_fÜ_lookup +][0], + +609 +IP_VERSION_4 +); + +610 +·ck‘s_fÜ_lookup +++; + +613 ià( +_hdr_size_by‹s + =ð +IPv6_HEADER_SIZE +) { + +614  +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +615 +ušt8_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 +com·ùšg_m­ +[ +·ck‘s_fÜ_lookup +] = +pos +; + +633 +key_Üig_dœ +[ +·ck‘s_fÜ_lookup +] = + +634 + `¹e_ù_ü—‹_úxn_hashkey +( + +635 ( +ušt32_t + *è +ihdr +-> +¤c_addr +, + +636 ( +ušt32_t + *è +ihdr +-> +d¡_addr +, + +637 +¤c_pÜt +, +d¡_pÜt +, + +638 +´Ùo +, + +639 & +ù +-> +hash_keys + + +640 [ +·ck‘s_fÜ_lookup +][0], + +641 +IP_VERSION_6 +); + +642 +·ck‘s_fÜ_lookup +++; + +647 ià( + `uÆik–y +( +·ck‘s_fÜ_lookup + == 0)) + +648  +v®id_·ck‘s +; + +651 + `mem£t +(& +Ãw_úxn_d©a +, 0, ( +¹e_ù_úxn_d©a +)); + +655  +lookup_»suÉ + = + +656 + `¹e_hash_lookup_bulk +( +ù +-> +rhash +, (cÚ¡ **)&ù-> +hash_key_±rs +, + +657 +·ck‘s_fÜ_lookup +, & +pos™iÚs +[0]); + +659 ià( + `uÆik–y +( +lookup_»suÉ + < 0)) { + +661 + `´štf +("Unexpected hashable…roblem, discarding‡ll…ackets"); + +664 #ifdeà +ALGDBG + + +665  +i + = 0; i < +·ck‘s_fÜ_lookup +; i++) { + +666 ià( +pos™iÚs +[ +i +] >= 0) + +667 + `´štf +("@CT…ositions[i]= %d, compacting_map[i]= %d\n", + +668 +pos™iÚs +[ +i +], +com·ùšg_m­ +[i]); + +671  +i + = 0; i < +·ck‘s_fÜ_lookup +; i++) { + +673  +hash_bË_’Œy + = +pos™iÚs +[ +i +]; + +675 +ušt8_t + +pkt_šdex + = +com·ùšg_m­ +[ +i +]; + +677 +ušt64_t + +pkt_mask + = 1LLU << +pkt_šdex +; + +678 +ušt8_t + +key_is_þ›Á_Üd” + = +key_Üig_dœ +[ +i +]; + +679 +ušt32_t + * +key + = +ù +-> +hash_key_±rs +[ +pkt_šdex +]; + +680 +ušt8_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‘_aùiÚ + +tý_pkt_aùiÚ +; + +689  +_hdr_size_by‹s + = + `¹e_ù_g‘_IP_hdr_size +( +·ck‘ +); + +690 +tý_pkt_aùiÚ + = + `¹e_ù_hªdË_tý_lookup +( +ù +, +·ck‘ +, + +691 +pkt_šdex +, +key_is_þ›Á_Üd” +, + +692 +key +, +hash_bË_’Œy +, +no_Ãw_úxn +, + +693 +_hdr_size_by‹s +); + +695  +tý_pkt_aùiÚ +) { + +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 +v®id_·ck‘s + ^ð +pkt_mask +; + +716 +ù +-> +couÁ”s +-> +pkts_drÝ +++; + +723 ià( +hash_bË_’Œy + >= 0) { + +729  +¹e_ù_úxn_d©a + * +’Œy + = + +730 & +ù +-> +hash_bË_’Œ›s +[ +hash_bË_’Œy +]; + +732 ià( +¹e_ù_udp_·ck‘ + + +733 ( +ù +, +’Œy +, +pkts +[ +pkt_šdex +], + +734 +key_is_þ›Á_Üd” +)) { + +735 +’Œy +-> +couÁ”s +. +·ck‘s_fÜw¬ded +++; + +736 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +744  +¹e_ù_úxn_d©a + * +»ûÁ_’Œy + = + +745 + `¹e_ù_£¬ch_Ãw_cÚÃùiÚs +( +ù +, +key +); + +747 ià( +»ûÁ_’Œy + !ð +NULL +) { + +748 ià( + `¹e_ù_udp_·ck‘ +( +ù +, +»ûÁ_’Œy +, + +749 +pkts +[ +pkt_šdex +], + +750 +key_is_þ›Á_Üd” +)) { + +751 +»ûÁ_’Œy +-> +couÁ”s +. + +752 +·ck‘s_fÜw¬ded +++; + +753 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +760 ià( +no_Ãw_úxn +) { + +764 +v®id_·ck‘s + ^ð +pkt_mask +; + +765 +ù +-> +couÁ”s +-> +pkts_drÝ +++; + +766 +ù +-> +couÁ”s +-> + +767 +pkts_drÝ_šv®id_cÚn +++; + +771 ià( + `¹e_ù_udp_Ãw_cÚÃùiÚ +( +ù +, + +772 & +Ãw_úxn_d©a +, + +773 +pkts +[ +pkt_šdex +])) { + +777 +št32_t + +pos™iÚ + = + +778 + `¹e_hash_add_key +( + +779 +ù +-> +rhash +, +key +); + +781 ià( +pos™iÚ + < 0) + +784  +¹e_ù_úxn_d©a + + +785 * +Ãw_hash_’Œy + = & +ù +-> + +786 +hash_bË_’Œ›s +[ +pos™iÚ +]; + +793 + `memýy +( +Ãw_úxn_d©a +. +key +, key, + +794 ( +Ãw_úxn_d©a +. +key +)); + +796 +Ãw_úxn_d©a +. + +797 +key_is_þ›Á_Üd” + + +798 ð +key_is_þ›Á_Üd” +; + +799 +Ãw_úxn_d©a +. +´ÙocÞ + = + +800 +UDP_PROTOCOL +; + +801 + `¹e_úxn__ty³ +( + +802 & +Ãw_úxn_d©a +. +ty³ +, + +803 +·ck‘ +); + +804 + `¹e_memýy +( +Ãw_hash_’Œy +, + +805 & +Ãw_úxn_d©a +, + +807 +¹e_ù_úxn_d©a +)); + +809 +Ãw_hash_’Œy +-> +couÁ”s +. + +810 +·ck‘s_fÜw¬ded + = 1; + +811 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +812 +Ãw_hash_’Œy +-> +couÁ”s +. + +813 +·ck‘s_drݳd + = 0; + +814 +ù +-> +couÁ”s +-> +pkts_drÝ + = 0; + +815 +ù +-> +couÁ”s +-> + +816 +cu¼’t_aùive_£ssiÚs +++; + +817 +ù +-> +couÁ”s +-> + +818 +£ssiÚs_aùiv©ed +++; + +820 +Ãw_hash_’Œy +-> + +821 +¡©e_u£d_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_cÚÃùiÚ +( + +829 +ù +, + +830 +Ãw_hash_’Œy +); + +839 ià( +CNXN_TRX_DEBUG + > 1) { + +840 + `´štf +("Exit cnxnracker synproxy batch†ookup with"); + +841 + `´štf +("…ack‘ mask %p\n", (*) +v®id_·ck‘s +); + +844  +v®id_·ck‘s +; + +845 + } +} + +847 +ušt64_t + + +848 + $¹e_ù_úxn_Œack”_b©ch_lookup_w™h_syÅroxy +( + +849  +¹e_ù_úxn_Œack” + * +ù +, + +850  +¹e_mbuf + ** +pkts +, + +851 +ušt64_t + +pkts_mask +, + +852  +¹e_syÅroxy_h–³r + * +¥_h–³r +) + +854  + `¹e_ù_úxn_Œack”_b©ch_lookup_basic +( +ù +, +pkts +, +pkts_mask +, 0, + +855 & +¥_h–³r +-> +»¶y_pkt_mask +, &¥_h–³r-> +hijack_mask +); + +856 + } +} + +857 #ifdeà +CT_CGNAT + + +858 +ušt64_t + + $cgDZ_ù_´oûss +( + +859  +¹e_ù_úxn_Œack” + * +ù +, + +860  +¹e_mbuf + ** +pkts +, + +861 +ušt64_t + +pkts_mask +, + +862  +¹e_CT_h–³r + * +ù_h–³r +) + +865 + `¹e_ù_di§bË_syÅroxy +( +ù +); + +866  + `¹e_ù_úxn_Œack”_b©ch_lookup_basic +( +ù +, +pkts +, +pkts_mask +, + +867 +ù_h–³r +-> +no_Ãw_úxn_mask +, + +868 & +ù_h–³r +-> +»¶y_pkt_mask +, + +869 & +ù_h–³r +-> +hijack_mask +); + +870 + } +} + +872 +ušt64_t + + +873 + $¹e_ù_úxn_Œack”_b©ch_lookup +( + +874  +¹e_ù_úxn_Œack” + * +ù +, + +875  +¹e_mbuf + ** +pkts +, + +876 +ušt64_t + +pkts_mask +, + +877  +¹e_CT_h–³r + * +ù_h–³r +) + +880  + `¹e_ù_úxn_Œack”_b©ch_lookup_basic +( +ù +, +pkts +, +pkts_mask +, + +881 +ù_h–³r +-> +no_Ãw_úxn_mask +, + +882 & +ù_h–³r +-> +»¶y_pkt_mask +, &ù_h–³r-> +hijack_mask +); + +883 + } +} + +886  + $¹e_ù_úxn_Œack”_b©ch_lookup_ty³ +( + +887  +¹e_ù_úxn_Œack” + * +ù +, + +888  +¹e_mbuf + ** +pkts +, + +889 +ušt64_t + * +pkts_mask +, + +890  +¹e_CT_h–³r + * +ù_h–³r +, + +891 +ušt8_t + +_hdr_size_by‹s +) + +894 + `¹e_ù_úxn_Œack”_b©ch_lookup_basic_ty³ +( +ù +, +pkts +, +pkts_mask +, + +895 +ù_h–³r +-> +no_Ãw_úxn_mask +, + +896 & +ù_h–³r +-> +»¶y_pkt_mask +, &ù_h–³r-> +hijack_mask +, + +897 +_hdr_size_by‹s +); + +898 + } +} + +902 +ušt64_t + + +903 + $¹e_ù_úxn_Œack”_b©ch_lookup_w™h_Ãw_úxn_cÚŒÞ +( + +904  +¹e_ù_úxn_Œack” + * +ù +, + +905  +¹e_mbuf + ** +pkts +, + +906 +ušt64_t + +pkts_mask +, + +907 +ušt64_t + +no_Ãw_úxn_mask +) + +909 +ušt64_t + +dÚt_ÿ» +; + +911  + `¹e_ù_úxn_Œack”_b©ch_lookup_basic +( +ù +, +pkts +, +pkts_mask +, + +912 +no_Ãw_úxn_mask +, + +913 & +dÚt_ÿ» +, &dont_care); + +914 + } +} + +918 + $¹e_ù_š™Ÿlize_deçuÉ_timeouts +( +¹e_ù_úxn_Œack” + * +Ãw_úxn_Œack” +) + +923 +ušt64_t + +h”tz + = + `¹e_g‘_tsc_hz +(); + +925 +Ãw_úxn_Œack” +-> +h”tz + = hertz; + +926 +Ãw_úxn_Œack” +-> +timšg_cyþes_³r_timšg_¡• + = +h”tz + / 10; + +927 +Ãw_úxn_Œack” +-> +timšg_100ms_¡•s_´evious + = 0; + +928 +Ãw_úxn_Œack” +-> +timšg_100ms_¡•s + = 0; + +929 +Ãw_úxn_Œack” +-> +timšg_Ï¡_time + = + `¹e_g‘_tsc_cyþes +(); + +932 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +933 [ +RTE_CT_TCP_SYN_SENT +] = 120 * +h”tz +; + +934 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +935 [ +RTE_CT_TCP_SYN_RECV +] = 60 * +h”tz +; + +937 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +938 [ +RTE_CT_TCP_ESTABLISHED +] = 60 * 60 * 24 * 5 * +h”tz +; + +940 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +941 [ +RTE_CT_TCP_FIN_WAIT +] = 120 * +h”tz +; + +942 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +943 [ +RTE_CT_TCP_CLOSE_WAIT +] = 60 * +h”tz +; + +944 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +945 [ +RTE_CT_TCP_LAST_ACK +] = 30 * +h”tz +; + +946 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +947 [ +RTE_CT_TCP_TIME_WAIT +] = 120 * +h”tz +; + +948 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +949 [ +RTE_CT_TCP_CLOSE +] = 10 * +h”tz +; + +950 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +951 [ +RTE_CT_TCP_SYN_SENT_2 +] = 120 * +h”tz +; + +952 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +953 [ +RTE_CT_TCP_RETRANS +] = 300 * +h”tz +; + +954 +Ãw_úxn_Œack” +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +955 [ +RTE_CT_TCP_UNACK +] = 300 * +h”tz +; + +957 +Ãw_úxn_Œack” +-> +ù_timeout +. +ud±imeout +. +udp_timeouts + + +958 [ +RTE_CT_UDP_UNREPLIED +] = 30 * +h”tz +; + +959 +Ãw_úxn_Œack” +-> +ù_timeout +. +ud±imeout +. +udp_timeouts + + +960 [ +RTE_CT_UDP_REPLIED +] = 180 * +h”tz +; + +962 +Ãw_úxn_Œack” +-> +misc_ÝtiÚs +. +tý_max_»Œªs + = + +963 +RTE_CT_TCP_MAX_RETRANS +; + +964 +Ãw_úxn_Œack” +-> +misc_ÝtiÚs +. +tý_loo£ + = 0; + +965 +Ãw_úxn_Œack” +-> +misc_ÝtiÚs +. +tý_be_lib”® + = 0; + +966 #ifdeà +CT_CGNAT + + +967  +i +; + +968  +i +=0; i < +RTE_HASH_LOOKUP_BULK_MAX + ;i ++ ) + +969 +Ãw_úxn_Œack” +-> +pos™iÚs +[ +i +] = -1; + +973 + } +} + +975  +¹e_CT_couÁ”_block + + g¹e_CT_couÁ”_bË +[ +MAX_CT_INSTANCES +] + +976 + g__¹e_ÿche_®igÃd +; + +977  + g¹e_CT_hi_couÁ”_block_š_u£ + = -1; + +980 + $¹e_ù_š™Ÿlize_úxn_Œack”_w™h_syÅroxy +( + +981  +¹e_ù_úxn_Œack” + * +Ãw_úxn_Œack” +, + +982 +ušt32_t + +max_cÚÃùiÚ_couÁ +, + +983 * +Çme +, + +984 +ušt16_t + +poš‹r_off£t +) + +986 +ušt32_t + +i +; + +987 +ušt32_t + +size +; + +988  +¹e_CT_couÁ”_block + * +couÁ”_±r +; + +995 +Ãw_úxn_Œack” +-> +poš‹r_off£t + =…ointer_offset; + +997 + `mem£t +( +Ãw_úxn_Œack” +-> +Çme +, '\0', (new_cnxn_tracker->name)); + +998 + `¡ºýy +( +Ãw_úxn_Œack” +-> +Çme +,‚ame, + `¡¾’ +(new_cnxn_tracker->name)); + +1001 +ušt32_t + +numb”_of_’Œ›s + = +max_cÚÃùiÚ_couÁ +; + +1003 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +¹e_ù_úxn_d©a +) * + +1004 +numb”_of_’Œ›s +); + +1005 +Ãw_úxn_Œack” +-> +hash_bË_’Œ›s + = + +1006 + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1007 ià( +Ãw_úxn_Œack” +-> +hash_bË_’Œ›s + =ð +NULL +) { + +1008 + `´štf +(" Notƒnough memory, or invalid‡rguments\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” +-> +couÁ”s + = +couÁ”_±r +; + +1037  +¹e_hash_·¿m‘”s + +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 . +exŒa_æ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 +ušt32_t + +max_cÚÃùiÚ_couÁ +, + +1056 * +Çme +) + +1058  + `¹e_ù_š™Ÿlize_úxn_Œack”_w™h_syÅroxy +( +Ãw_úxn_Œack” +, + +1059 +max_cÚÃùiÚ_couÁ +, +Çme +, 0); + +1060 + } +} + +1063 + $¹e_ù_ä“_úxn_Œack”_»sourûs +( +¹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”_expœed +( +¹e_tim” + * +¹ +, * +¬g +); + +1080 + $¹e_ù_£t_úxn_tim” +( + +1081  +¹e_ù_úxn_Œack” + * +ù +, + +1082  +¹e_ù_úxn_d©a + * +cd +, + +1083 +ušt64_t + +ticks_uÁž_timeout +) + +1090  +¹e_tim” + * +¹ + = (¹e_tim” *) +cd +; + +1091 #ifdeà +CT_CGNAT + + +1093 +ušt32_t + +cÜe_id + = + `g‘_tim”_cÜe_id +(); + +1096 +ušt32_t + +cÜe_id + = + `¹e_lcÜe_id +(); + +1101  +sucûss + = + `¹e_tim”_»£t +( +¹ +, +ticks_uÁž_timeout +, +SINGLE +, +cÜe_id +, + +1102 +¹e_ù_úxn_tim”_expœed +, +ù +); + +1104 ià( +sucûss + < 0) { + +1108 + `´štf +("CNXN_TRACKER: Failedo set connectionimer.\n"); + +1110 + } +} + +1118 + $¹e_ù_£t_úxn_tim”_fÜ_tý +( + +1119  +¹e_ù_úxn_Œack” + * +ù +, + +1120  +¹e_ù_úxn_d©a + * +cd +, + +1121 +ušt8_t + +tý_¡©e +) + +1124 +cd +-> +ex³ùed_timeout + = + +1125 ( +ù +-> +timšg_100ms_¡•s + * ct-> +timšg_cyþes_³r_timšg_¡• +) + + +1126 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +tý_¡©e +]; + +1128 ià( +tý_¡©e + =ð +cd +-> +¡©e_u£d_fÜ_tim” +) { + +1141 ià( +TESTING_TIMERS +) + +1142 + `´štf +("S‘ Tim” fÜ cÚÃùiÚ %°ªd s‹ %s\n", +cd +, + +1143 +¹e_ù_tý_Çmes +[ +tý_¡©e +]); + +1145 + `¹e_ù_£t_úxn_tim” +( +ù +, +cd +, + +1146 +ù +-> +ù_timeout +. + +1147 +týtimeout +. +tý_timeouts +[ +tý_¡©e +]); + +1148 +cd +-> +¡©e_u£d_fÜ_tim” + = +tý_¡©e +; + +1149 + } +} + +1158 + $¹e_ù_£t_úxn_tim”_fÜ_udp +( + +1159  +¹e_ù_úxn_Œack” + * +ù +, + +1160  +¹e_ù_úxn_d©a + * +cd +, + +1161 +ušt8_t + +udp_¡©e +) + +1164 +cd +-> +ex³ùed_timeout + = ( +ù +-> +timšg_cyþes_³r_timšg_¡• +) + + +1165 +ù +-> +ù_timeout +. +ud±imeout +. +udp_timeouts +[ +udp_¡©e +]; + +1167 ià( +udp_¡©e + =ð +cd +-> +¡©e_u£d_fÜ_tim” +) { + +1180 ià( +TESTING_TIMERS +) + +1181 + `´štf +("S‘ Tim” fÜ cÚÃùiÚ %°ªd s‹ %s\n", +cd +, + +1182 +¹e_ù_udp_Çmes +[ +udp_¡©e +]); + +1183 + `¹e_ù_£t_úxn_tim” +( +ù +, +cd +, + +1184 +ù +-> +ù_timeout +. + +1185 +ud±imeout +. +udp_timeouts +[ +udp_¡©e +]); + +1186 +cd +-> +¡©e_u£d_fÜ_tim” + = +udp_¡©e +; + +1187 + } +} + +1193 + $¹e_ù_ÿnûl_úxn_tim” +( +¹e_ù_úxn_d©a + * +cd +) + +1195 ià( +TESTING_TIMERS +) + +1196 + `´štf +("Cancel Timer\n"); + +1198 + `¹e_tim”_¡Ý +(& +cd +-> +tim” +); + +1199 + } +} + +1202 + $¹e_ù_hªdË_expœed_tim”s +( +¹e_ù_úxn_Œack” + * +ù +) + +1209 +ušt64_t + +Ãw_time + = + `¹e_g‘_tsc_cyþes +(); + +1210 +ušt64_t + +time_diff + = +Ãw_time + - +ù +-> +timšg_Ï¡_time +; + +1212 ià( +time_diff + >ð +ù +-> +timšg_cyþes_³r_timšg_¡• +) { + +1213 +ù +-> +timšg_Ï¡_time + = +Ãw_time +; + +1214 +ù +-> +timšg_100ms_¡•s +++; + +1217 ià( +ù +-> +timšg_100ms_¡•s + !ðù-> +timšg_100ms_¡•s_´evious +) { + +1218 + `¹e_tim”_mªage +(); + +1219 +ù +-> +timšg_100ms_¡•s_´evious + = ct-> +timšg_100ms_¡•s +; + +1221 + } +} + +1226 + $¹e_ù_úxn_tim”_expœed +( +¹e_tim” + * +¹ +, * +¬g +) + +1231  +¹e_ù_úxn_d©a + * +cd + = (¹e_ù_úxn_d©¨*) +¹ +; + +1232  +¹e_ù_úxn_Œack” + * +ù + = (¹e_ù_úxn_Œack” *) +¬g +; + +1233  +sucûss + = 0; + +1241 +ušt64_t + +cu¼’t_time + = +ù +-> +timšg_100ms_¡•s + * + +1242 +ù +-> +timšg_cyþes_³r_timšg_¡• +; + +1244 ià( +cd +-> +ex³ùed_timeout + >ð +cu¼’t_time +) { + +1245 +ušt64_t + +time_diff + = +cd +-> +ex³ùed_timeout + - +cu¼’t_time +; + +1247 + `¹e_ù_£t_úxn_tim” +( +ù +, +cd +, +time_diff +); + +1251 ià( +cd +-> +´ÙocÞ + =ð +TCP_PROTOCOL +) { + +1252 ià( +cd +-> +¡©e_u£d_fÜ_tim” + =ð +RTE_CT_TCP_TIME_WAIT + || + +1253 +cd +-> +¡©e_u£d_fÜ_tim” + =ð +RTE_CT_TCP_CLOSE +) + +1254 +ù +-> +couÁ”s +-> +£ssiÚs_þo£d +++; + +1256 +ù +-> +couÁ”s +-> +£ssiÚs_timedout +++; + +1261 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅrox›d +) + +1262 + `¹e_ù_»Ëa£_bufã»d_·ck‘s +( +ù +, +cd +); + +1264 } ià( +cd +-> +´ÙocÞ + =ð +UDP_PROTOCOL +) + +1265 +ù +-> +couÁ”s +-> +£ssiÚs_þo£d +++; + +1266 ià( +ù +-> +couÁ”s +-> +cu¼’t_aùive_£ssiÚs + > 0) + +1267 +ù +-> +couÁ”s +-> +cu¼’t_aùive_£ssiÚs +--; + +1269 ià( +RTE_CT_TIMER_EXPIRED_DUMP +) { + +1270 +ušt64_t + +³rûÁ + = ( +cd +-> +couÁ”s +. +·ck‘s_drݳd + * 10000) / + +1271 ( +cd +-> +couÁ”s +. +·ck‘s_fÜw¬ded + + + +1272 +cd +-> +couÁ”s +. +·ck‘s_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_u£d_fÜ_tim” +], + +1281 +cd +-> +couÁ”s +. +·ck‘s_fÜw¬ded +, + +1282 +cd +-> +couÁ”s +. +·ck‘s_drݳd +, + +1283 ( +ušt32_t +è( +³rûÁ + / 100), + +1284 ( +ušt32_t +è( +³rûÁ + % 100)); + +1285 } ià( +cd +-> +´ÙocÞ + =ð +UDP_PROTOCOL +) { + +1286 + `´štf +("CnxnTrkr %s, Timed-out UDP Connection: %p,", + +1287 +ù +-> +Çme +, +cd +); + +1288 + `´štf +(" %s,…kt fÜw¬ded %" +PRIu64 + + +1289 ",…kt drݳd %" +PRIu64 + ", drop%% %u.%u\n", + +1290 +¹e_ù_udp_Çmes +[ +cd +-> +¡©e_u£d_fÜ_tim” +], + +1291 +cd +-> +couÁ”s +. +·ck‘s_fÜw¬ded +, + +1292 +cd +-> +couÁ”s +. +·ck‘s_drݳd +, + +1293 ( +ušt32_t +è( +³rûÁ + / 100), + +1294 ( +ušt32_t +è( +³rûÁ + % 100)); + +1298 +sucûss + = + `¹e_hash_d–_key +( +ù +-> +rhash +, & +cd +-> +key +); + +1300 ià( +sucûss + < 0) { + +1302 + `¹e_ù_´št_hashkey +( +cd +-> +key +); + +1305 + } +} + +1307  +¹e_CT_couÁ”_block + * + +1308 + $¹e_ù_g‘_couÁ”_add»ss +( +¹e_ù_úxn_Œack” + * +ù +) + +1310  +ù +-> +couÁ”s +; + +1311 + } +} + +1314 + $¹e_ù_£t_cÚfigu¿tiÚ_ÝtiÚs +( +¹e_ù_úxn_Œack” + * +ù +, + +1315 * +Çme +, * +v®ue +) + +1318  +iv® + = + `©oi +( +v®ue +); + +1321 ià( + `¡rcmp +( +Çme +, "tcp_loose") == 0) { + +1322 +ù +-> +misc_ÝtiÚs +. +tý_loo£ + = +iv® +; + +1327 ià( + `¡rcmp +( +Çme +, "tcp_be_liberal") == 0) { + +1328 +ù +-> +misc_ÝtiÚs +. +tý_be_lib”® + = +iv® +; + +1333 ià( + `¡rcmp +( +Çme +, "tcp_max_retrans") == 0) { + +1334 +ù +-> +misc_ÝtiÚs +. +tý_max_»Œªs + = +iv® +; + +1338 +ušt64_t + +time_v®ue + = +iv® + * +ù +-> +h”tz +; + +1344 ià( + `¡rcmp +( +Çme +, "tcp_syn_sent") == 0) { + +1345 ià( +time_v®ue + == 0) + +1347 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_SYN_SENT +] = + +1348 +time_v®ue +; + +1353 ià( + `¡rcmp +( +Çme +, "tcp_syn_recv") == 0) { + +1354 ià( +time_v®ue + == 0) + +1356 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_SYN_RECV +] = + +1357 +time_v®ue +; + +1362 ià( + `¡rcmp +( +Çme +, "tcp_established") == 0) { + +1363 ià( +time_v®ue + == 0) + +1365 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_ESTABLISHED +] = + +1366 +time_v®ue +; + +1371 ià( + `¡rcmp +( +Çme +, "tcp_fin_wait") == 0) { + +1372 ià( +time_v®ue + == 0) + +1374 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_FIN_WAIT +] = + +1375 +time_v®ue +; + +1380 ià( + `¡rcmp +( +Çme +, "tcp_close_wait") == 0) { + +1381 ià( +time_v®ue + == 0) + +1383 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_CLOSE_WAIT +] = + +1384 +time_v®ue +; + +1389 ià( + `¡rcmp +( +Çme +, "tcp_last_ack") == 0) { + +1390 ià( +time_v®ue + == 0) + +1392 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_LAST_ACK +] = + +1393 +time_v®ue +; + +1398 ià( + `¡rcmp +( +Çme +, "tcp_time_wait") == 0) { + +1399 ià( +time_v®ue + == 0) + +1401 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_TIME_WAIT +] = + +1402 +time_v®ue +; + +1407 ià( + `¡rcmp +( +Çme +, "tcp_close") == 0) { + +1408 ià( +time_v®ue + == 0) + +1410 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_CLOSE +] = + +1411 +time_v®ue +; + +1416 ià( + `¡rcmp +( +Çme +, "tcp_syn_sent_2") == 0) { + +1417 ià( +time_v®ue + == 0) + +1419 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_SYN_SENT_2 +] = + +1420 +time_v®ue +; + +1425 ià( + `¡rcmp +( +Çme +, "tcp_retrans") == 0) { + +1426 ià( +time_v®ue + == 0) + +1428 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_RETRANS +] = + +1429 +time_v®ue +; + +1434 ià( + `¡rcmp +( +Çme +, "tcp_unack") == 0) { + +1435 ià( +time_v®ue + == 0) + +1437 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +RTE_CT_TCP_UNACK +] = + +1438 +time_v®ue +; + +1443 ià( + `¡rcmp +( +Çme +, "udp_unreplied") == 0) { + +1444 ià( +time_v®ue + == 0) + +1446 +ù +-> +ù_timeout +. +ud±imeout +. +udp_timeouts +[ +RTE_CT_UDP_UNREPLIED +] = + +1447 +time_v®ue +; + +1452 ià( + `¡rcmp +( +Çme +, "udp_replied") == 0) { + +1453 ià( +time_v®ue + == 0) + +1455 +ù +-> +ù_timeout +. +ud±imeout +. +udp_timeouts +[ +RTE_CT_UDP_REPLIED +] = + +1456 +time_v®ue +; + +1460 + } +} + +1463 + $¹e_ù_úxn_Œack”_b©ch_lookup_basic_ty³ +( + +1464  +¹e_ù_úxn_Œack” + * +ù +, + +1465  +¹e_mbuf + ** +pkts +, + +1466 +ušt64_t + * +pkts_mask +, + +1467 +ušt64_t + +no_Ãw_úxn_mask +, + +1468 +ušt64_t + * +»¶y_pkt_mask +, + +1469 +ušt64_t + * +hijack_mask +, + +1470 +ušt8_t + +_hdr_size_by‹s +) + +1473 +ušt64_t + +pkts_to_´oûss + = * +pkts_mask +; + +1475 +ušt8_t + +com·ùšg_m­ +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1477 +ušt8_t + +key_Üig_dœ +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1478 +ušt32_t + +·ck‘s_fÜ_lookup + = 0; + +1479 +št32_t + +pos™iÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1480 +ušt32_t + +i +; + +1481  +¹e_ù_úxn_d©a + +Ãw_úxn_d©a +; + +1483 ià( +CNXN_TRX_DEBUG + > 1) { + +1484 + `´štf +("EÁ” cnxÀŒack” %p", +ù +); + +1485 + `´štf +(" synproxy batch†ookup with…acket mask %p\n", + +1486 (*)* +pkts_mask +); + +1489 + `¹e_ù_fÜg‘_Ãw_cÚÃùiÚs +( +ù +); + +1490 * +»¶y_pkt_mask + = 0; + +1491 * +hijack_mask + = 0; + +1498  +_hdr_size_by‹s +) { + +1499  +IPv4_HEADER_SIZE +: + +1500 ; +pkts_to_´oûss +;) { + +1501 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( + +1502 +pkts_to_´oûss +); + +1504 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +1506 +pkts_to_´oûss + &ð~ +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_by‹s +)); + +1517 +ušt16_t + +¤c_pÜt + = + `¹e_bsw­16 +( +thdr +->src_port); + +1518 +ušt16_t + +d¡_pÜt + = + `¹e_bsw­16 +( +thdr +->dst_port); + +1520  +v4_hdr + * +ihdr + = (ipv4_hdr *) + +1521 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +1522 +ušt8_t + +´Ùo + = +ihdr +-> +Ãxt_´Ùo_id +; + +1524 ià(!( +´Ùo + =ð +TCP_PROTOCOL + ||…rÙØ=ð +UDP_PROTOCOL +)) { + +1535 +ušt32_t + +¤c_addr + = + `¹e_bsw­32 +( +ihdr +->src_addr); + +1536 +ušt32_t + +d¡_addr + = + `¹e_bsw­32 +( +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 +com·ùšg_m­ +[ +·ck‘s_fÜ_lookup +] = +pos +; + +1548 +key_Üig_dœ +[ +·ck‘s_fÜ_lookup +] = + +1549 + `¹e_ù_ü—‹_úxn_hashkey +(& +¤c_addr +, & +d¡_addr +, + +1550 +¤c_pÜt +, +d¡_pÜt +, + +1551 +´Ùo +, + +1552 & +ù +-> +hash_keys + + +1553 [ +·ck‘s_fÜ_lookup +][0], + +1554 +IP_VERSION_4 +); + +1555 +·ck‘s_fÜ_lookup +++; + +1558  +IPv6_HEADER_SIZE +: + +1559 ; +pkts_to_´oûss +;) { + +1560 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( + +1561 +pkts_to_´oûss +); + +1563 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +1565 +pkts_to_´oûss + &ð~ +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_by‹s +)); + +1579 +ušt16_t + +¤c_pÜt + = + `¹e_bsw­16 +( +thdr +->src_port); + +1580 +ušt16_t + +d¡_pÜt + = + `¹e_bsw­16 +( +thdr +->dst_port); + +1582  +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +1583 +ušt8_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 +com·ùšg_m­ +[ +·ck‘s_fÜ_lookup +] = +pos +; + +1601 +key_Üig_dœ +[ +·ck‘s_fÜ_lookup +] = + +1602 + `¹e_ù_ü—‹_úxn_hashkey +( + +1603 ( +ušt32_t + *è +ihdr +-> +¤c_addr +, + +1604 ( +ušt32_t + *è +ihdr +-> +d¡_addr +, + +1605 +¤c_pÜt +, +d¡_pÜt +, + +1606 +´Ùo +, + +1607 & +ù +-> +hash_keys + + +1608 [ +·ck‘s_fÜ_lookup +][0], + +1609 +IP_VERSION_6 +); + +1610 +·ck‘s_fÜ_lookup +++; + +1616 ià( + `uÆik–y +( +·ck‘s_fÜ_lookup + == 0)) + +1620 + `mem£t +(& +Ãw_úxn_d©a +, 0, ( +¹e_ù_úxn_d©a +)); + +1624  +lookup_»suÉ + = + `¹e_hash_lookup_bulk +( +ù +-> +rhash +, + +1625 (cÚ¡ **)& +ù +-> +hash_key_±rs +, + +1626 +·ck‘s_fÜ_lookup +, & +pos™iÚs +[0]); + +1628 ià( + `uÆik–y +( +lookup_»suÉ + < 0)) { + +1630 + `´štf +("Unexpected hashable…roblem, discarding‡ll…ackets"); + +1631 * +pkts_mask + = 0; + +1634  +i + = 0; i < +·ck‘s_fÜ_lookup +; i++) { + +1636  +hash_bË_’Œy + = +pos™iÚs +[ +i +]; + +1638 +ušt8_t + +pkt_šdex + = +com·ùšg_m­ +[ +i +]; + +1640 +ušt64_t + +pkt_mask + = 1LLU << +pkt_šdex +; + +1641 +ušt8_t + +key_is_þ›Á_Üd” + = +key_Üig_dœ +[ +i +]; + +1642 +ušt32_t + * +key + = +ù +-> +hash_key_±rs +[ +pkt_šdex +]; + +1643 +ušt8_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‘_aùiÚ + +tý_pkt_aùiÚ +; + +1652 +tý_pkt_aùiÚ + = + `¹e_ù_hªdË_tý_lookup +( +ù +, +·ck‘ +, + +1653 +pkt_šdex +, +key_is_þ›Á_Üd” +, + +1654 +key +, +hash_bË_’Œy +, +no_Ãw_úxn +, + +1655 +_hdr_size_by‹s +); + +1657  +tý_pkt_aùiÚ +) { + +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 +ù +-> +couÁ”s +-> +pkts_drÝ +++; + +1685 ià( +hash_bË_’Œy + >= 0) { + +1691  +¹e_ù_úxn_d©a + * +’Œy + = + +1692 & +ù +-> +hash_bË_’Œ›s +[ +hash_bË_’Œy +]; + +1694 ià( +¹e_ù_udp_·ck‘ + + +1695 ( +ù +, +’Œy +, +pkts +[ +pkt_šdex +], + +1696 +key_is_þ›Á_Üd” +)) { + +1697 +’Œy +-> +couÁ”s +. +·ck‘s_fÜw¬ded +++; + +1698 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +1706  +¹e_ù_úxn_d©a + * +»ûÁ_’Œy + = + +1707 + `¹e_ù_£¬ch_Ãw_cÚÃùiÚs +( +ù +, +key +); + +1709 ià( +»ûÁ_’Œy + !ð +NULL +) { + +1710 ià( + `¹e_ù_udp_·ck‘ +( +ù +, +»ûÁ_’Œy +, + +1711 +pkts +[ +pkt_šdex +], + +1712 +key_is_þ›Á_Üd” +)) { + +1713 +»ûÁ_’Œy +-> +couÁ”s +. + +1714 +·ck‘s_fÜw¬ded +++; + +1715 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +1722 ià( +no_Ãw_úxn +) { + +1726 * +pkts_mask + ^ð +pkt_mask +; + +1727 +ù +-> +couÁ”s +-> +pkts_drÝ +++; + +1728 +ù +-> +couÁ”s +-> + +1729 +pkts_drÝ_šv®id_cÚn +++; + +1733 ià( + `¹e_ù_udp_Ãw_cÚÃùiÚ +( +ù +, + +1734 & +Ãw_úxn_d©a +, +pkts +[ +pkt_šdex +])) { + +1738 +št32_t + +pos™iÚ + = + +1739 + `¹e_hash_add_key +( +ù +-> + +1740 +rhash +, +key +); + +1742 ià( +pos™iÚ + < 0) + +1745  +¹e_ù_úxn_d©a + + +1746 * +Ãw_hash_’Œy + = & +ù +-> + +1747 +hash_bË_’Œ›s +[ +pos™iÚ +]; + +1754 + `memýy +( +Ãw_úxn_d©a +. +key +, key, + +1755 ( +Ãw_úxn_d©a +. +key +)); + +1757 +Ãw_úxn_d©a +. + +1758 +key_is_þ›Á_Üd” + + +1759 ð +key_is_þ›Á_Üd” +; + +1760 +Ãw_úxn_d©a +. +´ÙocÞ + = + +1761 +UDP_PROTOCOL +; + +1762 + `¹e_úxn__ty³ +( + +1763 & +Ãw_úxn_d©a +. +ty³ +, + +1764 +·ck‘ +); + +1765 + `¹e_memýy +( +Ãw_hash_’Œy +, + +1766 & +Ãw_úxn_d©a +, + +1768 +¹e_ù_úxn_d©a +)); + +1770 +Ãw_hash_’Œy +-> +couÁ”s +. + +1771 +·ck‘s_fÜw¬ded + = 1; + +1772 +ù +-> +couÁ”s +-> +pkts_fÜw¬ded +++; + +1773 +Ãw_hash_’Œy +-> +couÁ”s +. + +1774 +·ck‘s_drݳd + = 0; + +1775 +ù +-> +couÁ”s +-> +pkts_drÝ + = 0; + +1776 +ù +-> +couÁ”s +-> + +1777 +cu¼’t_aùive_£ssiÚs +++; + +1778 +ù +-> +couÁ”s +-> + +1779 +£ssiÚs_aùiv©ed +++; + +1781 +Ãw_hash_’Œy +-> + +1782 +¡©e_u£d_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_cÚÃùiÚ +( + +1790 +ù +, + +1791 +Ãw_hash_’Œy +); + +1800 ià( +CNXN_TRX_DEBUG + > 1) { + +1801 + `´štf +("Exit cnxnracker synproxy batch†ookup with"); + +1802 + `´štf +("…ack‘ mask %p\n", (*)* +pkts_mask +); + +1804 + } +} + + @VIL/conntrack/rte_cnxn_tracking.h + +17 #iâdeà +_CNXN_TRACKING_H + + +18  + #_CNXN_TRACKING_H + + + ) + +20  + ~<¡dlib.h +> + +21  + ~<¡ršg.h +> + +22  + ~<š‰y³s.h +> + +23  + ~<¡dboÞ.h +> + +26  + ~<¹e_hash.h +> + +27  + ~<¹e_‘h”.h +> + +29  + ~"¹e_ù_tý.h +" + +54  +¹e_ù_úxn_Œack” + + g__¹e_ÿche_®igÃd +; + +56  +¹e_CT_hi_couÁ”_block_š_u£ +; + +58  + s¹e_CT_couÁ”_block + { + +60 +ušt64_t + + mcu¼’t_aùive_£ssiÚs +; + +61 +ušt64_t + + m£ssiÚs_aùiv©ed +; + +63 +ušt64_t + + m£ssiÚs_»aùiv©ed +; + +65 +ušt64_t + + m£ssiÚs_e¡ablished +; + +66 +ušt64_t + + m£ssiÚs_þo£d +; + +67 +ušt64_t + + m£ssiÚs_timedout +; + +68 +ušt64_t + + mpkts_fÜw¬ded +; + +69 +ušt64_t + + mpkts_drÝ +; + +70 +ušt64_t + + mpkts_drÝ_šv®id_cÚn +; + +71 +ušt64_t + + mpkts_drÝ_šv®id_¡©e +; + +72 +ušt64_t + + mpkts_drÝ_šv®id_r¡ +; + +73 +ušt64_t + + mpkts_drÝ_outof_wšdow +; + +74 } + g__¹e_ÿche_®igÃd +; + +76  + s¹e_syÅroxy_h–³r + { + +77 +ušt64_t + + m»¶y_pkt_mask +; + +78 +ušt64_t + + mhijack_mask +; + +79  +¹e_mbuf + ** + mbufã»d_pkts_to_fÜw¬d +; + +80 +ušt8_t + + mnum_bufã»d_pkts_to_fÜw¬d +; + +83  + s¹e_CT_h–³r + { + +84 +ušt64_t + + mno_Ãw_úxn_mask +; + +85 +ušt64_t + + m»¶y_pkt_mask +; + +86 +ušt64_t + + mhijack_mask +; + +87  +¹e_mbuf + ** + mbufã»d_pkts_to_fÜw¬d +; + +88 +ušt8_t + + mnum_bufã»d_pkts_to_fÜw¬d +; + +91  + #MAX_CT_INSTANCES + 24 + + ) + +93  +¹e_CT_couÁ”_block + +¹e_CT_couÁ”_bË +[ +MAX_CT_INSTANCES +] + +94 +__¹e_ÿche_®igÃd +; + +122 +ušt64_t + + +123 +¹e_ù_úxn_Œack”_b©ch_lookup +( + +124  +¹e_ù_úxn_Œack” + * +ù +, + +125  +¹e_mbuf + ** +pkts +, + +126 +ušt64_t + +pkts_mask +, + +127  +¹e_CT_h–³r + * +ù_h–³r +); + +130 +¹e_ù_úxn_Œack”_b©ch_lookup_ty³ +( + +131  +¹e_ù_úxn_Œack” + * +ù +, + +132  +¹e_mbuf + ** +pkts +, + +133 +ušt64_t + * +pkts_mask +, + +134  +¹e_CT_h–³r + * +ù_h–³r +, + +135 +ušt8_t + +_hdr_size_by‹s +); + +169 +ušt64_t + + +170 +¹e_ù_úxn_Œack”_b©ch_lookup_w™h_Ãw_úxn_cÚŒÞ +( + +171  +¹e_ù_úxn_Œack” + * +ù +, + +172  +¹e_mbuf + ** +pkts +, + +173 +ušt64_t + +pkts_mask +, + +174 +ušt64_t + +no_Ãw_úxn_mask +); + +205 +ušt64_t + + +206 +¹e_ù_úxn_Œack”_b©ch_lookup_w™h_syÅroxy +( + +207  +¹e_ù_úxn_Œack” + * +ù +, + +208  +¹e_mbuf + ** +pkts +, + +209 +ušt64_t + +pkts_mask +, + +210  +¹e_syÅroxy_h–³r + * +¥_h–³r +); + +239  +¹e_mbuf + * + +240 +¹e_ù_g‘_bufã»d_syÅroxy_·ck‘s +( +¹e_ù_úxn_Œack” + * +ù +); + +259 +¹e_ù_š™Ÿlize_úxn_Œack”_w™h_syÅroxy +( + +260  +¹e_ù_úxn_Œack” + * +Ãw_úxn_Œack” +, + +261 +ušt32_t + +max_cÚÃùiÚ_couÁ +, + +262 * +Çme +, + +263 +ušt16_t + +poš‹r_off£t +); + +283 +¹e_ù_š™Ÿlize_úxn_Œack” +( + +284  +¹e_ù_úxn_Œack” + * +Ãw_úxn_Œack” +, + +285 +ušt32_t + +max_cÚÃùiÚ_couÁ +, + +286 * +Çme +); + +301 +¹e_ù_ä“_úxn_Œack”_»sourûs +( + +302  +¹e_ù_úxn_Œack” + * +Þd_úxn_Œack” +); + +313 +¹e_ù_g‘_úxn_Œack”_size +(); + +323  +¹e_CT_couÁ”_block +* + +324 +¹e_ù_g‘_couÁ”_add»ss +( +¹e_ù_úxn_Œack” + * +ù +); + +346 +¹e_ù_£t_cÚfigu¿tiÚ_ÝtiÚs +( + +347  +¹e_ù_úxn_Œack” + * +ù +, + +348 * +Çme +, + +349 * +v®ue +); + +363 +¹e_ù_hªdË_expœed_tim”s +( +¹e_ù_úxn_Œack” + * +ù +); + +367 +¹e_ù_g‘_IP_hdr_size +( +¹e_mbuf + * +pkt +); + +378 +¹e_ù_’abË_syÅroxy +( +¹e_ù_úxn_Œack” + * +ù +); + +389 +¹e_ù_di§bË_syÅroxy +( +¹e_ù_úxn_Œack” + * +ù +); + +391 +¹e_ù_š™Ÿlize_deçuÉ_timeouts +( + +392  +¹e_ù_úxn_Œack” + * +Ãw_úxn_Œack” +); + +394 +ušt8_t + + +395 +¹e_ù_ü—‹_úxn_hashkey +( + +396 +ušt32_t + * +¤c_addr +, + +397 +ušt32_t + * +d¡_addr +, + +398 +ušt16_t + +¤c_pÜt +, + +399 +ušt16_t + +d¡_pÜt +, + +400 +ušt8_t + +´Ùo +, + +401 +ušt32_t + * +key +, + +402 +ušt8_t + +ty³ +); + +405 #ifdeà +CT_CGNAT + + +406 +ušt32_t + +g‘_tim”_cÜe_id +(); + +407 +ušt64_t + +cgDZ_ù_´oûss +( + +408  +¹e_ù_úxn_Œack” + * +ù +, + +409  +¹e_mbuf + ** +pkts +, + +410 +ušt64_t + +pkts_mask +, + +411  +¹e_CT_h–³r + * +ù_h–³r +); + + @VIL/conntrack/rte_ct_synproxy.c + +17  + ~<¡dio.h +> + +18  + ~<¡dlib.h +> + +19  + ~<¡dšt.h +> + +20  + ~<¡ddef.h +> + +21  + ~<¡ršg.h +> + +22  + ~ + +24  + ~<¹e_commÚ.h +> + +25  + ~<¹e_m®loc.h +> + +26  + ~<¹e_‘h”.h +> + +27  + ~<¹e_.h +> + +28  + ~<¹e_udp.h +> + +29  + ~<¹e_icmp.h +> + +30  + ~<¹e_by‹Üd”.h +> + +31  + ~<¹e_cyþes.h +> + +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_syÅroxy_ÝtiÚs + + gdeçuÉ_v4_syÅroxy_ÝtiÚs + = { + +102 . +ÝtiÚs + = +RTE_SP_OPTIONS_MSS + | + +103 +RTE_SP_OPTIONS_SACK_PERM + | + +104 +RTE_SP_OPTIONS_WINDOW_SCALE +, + +105 . + gmss + = 1460, + +106 . + gwšdow_sÿË + = 7, + +107 . + gš™Ÿl_wšdow + = +RTE_SP_DEFAULT_WINDOW + + +111  +¹e_syÅroxy_ÝtiÚs + + gdeçuÉ_v6_syÅroxy_ÝtiÚs + = { + +112 . +ÝtiÚs + = +RTE_SP_OPTIONS_MSS + | + +113 +RTE_SP_OPTIONS_SACK_PERM + | + +114 +RTE_SP_OPTIONS_WINDOW_SCALE +, + +115 . + gmss + = 1440, + +116 . + gwšdow_sÿË + = 7, + +117 . + gš™Ÿl_wšdow + = +RTE_SP_DEFAULT_WINDOW + + +121  +__¹e_unu£d +  + +122 + $¹e_ù_syÅroxy_´št_pkt_šfo +( +¹e_mbuf + * +pkt +) + +124  +v4_hdr + * +ihdr4 + = (ipv4_hdr *) + +125 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +126 +__¹e_unu£d +  +tý_hdr + * +thdr + = (tcp_hdr *) + +127 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +TCP_START +); + +128 +ušt32_t + +·ck‘_Ëngth + = + `¹e_pktmbuf_pkt_Ën +( +pkt +); + +130 + `´štf +("\Åack‘†’gth %u, i°Ëngth %u\n", +·ck‘_Ëngth +, + +131 + `¹e_bsw­16 +( +ihdr4 +-> +tÙ®_Ëngth +)); + +132 + `¹e_pktmbuf_dump +( +¡dout +, +pkt +, 80); + +133 + } +} + +135  +šlše +  + +136 + $¹e_¥_šüem’l_tý_chksum_upd©e_32 +( + +137 +ušt32_t + +num_befÜe +, + +138 +ušt32_t + +num_aᔠ+, + +140 +ušt16_t + * +chksum +) + +142 +ušt32_t + +sum +; + +144 +sum + = ~ + `¹e_bsw­16 +(* +chksum +) & 0xffff; + +145 +num_befÜe + = ~num_before; + +146 +sum + +ð( +num_befÜe + >> 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_bsw­16 +(~ +sum + & 0xffff); + +151 + } +} + +155  +šlše + +ušt32_t + + +156 + $¹e_¥_g‘_¿ndom_£q_numb” +() + +158  + `¹e_g‘_tsc_cyþes +(); + +159 + } +} + +162  +št8_t + + $¹e_ù_v”siÚ +(* +i_hdr +) + +164 +ušt8_t + * +ihdr + = (ušt8_ˆ*) +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  +šlše +  + +175 + $¹e_syÅroxy_adju¡_pkt_Ëngth +( +¹e_mbuf + * +pkt +) + +177 +ušt16_t + +pkt_Ëngth + = 0; + +178  +_hdr_size_by‹s + = + `¹e_ù_g‘_IP_hdr_size +( +pkt +); + +179 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +181 ià( +_hdr_size_by‹s + =ð +IP_V4_HEADER_SIZE +) { + +182  +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +184 +pkt_Ëngth + = + `¹e_bsw­16 +( +ihdr4 +-> +tÙ®_Ëngth +è+ +ETH_HDR_SIZE +; + +185 } ià( +_hdr_size_by‹s + =ð +IP_V6_HEADER_SIZE +) { + +186  +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +188 +pkt_Ëngth + = + `¹e_bsw­16 +( +ihdr6 +-> +·ylßd_Ën +) + + +189 +IP_V6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +191 +ušt16_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_syÅroxy_bužd_v4_h—d” +( + +207  +v4_hdr + * +hdr4 +, + +208 +ušt32_t + +¤c_addr +, + +209 +ušt32_t + +d¡_addr +, + +210 +ušt16_t + +tý_Ëngth +) + +214 +hdr4 +-> +v”siÚ_ihl + = 0x45; + +215 +hdr4 +-> +ty³_of_£rviû + = 0; + +216 +hdr4 +-> +tÙ®_Ëngth + = + `¹e_bsw­16 +( +tý_Ëngth + + +IP_V4_HEADER_SIZE +); + +217 +hdr4 +-> +·ck‘_id + = 0; + +219 +hdr4 +-> +äagm’t_off£t + = 0x0040; + +220 +hdr4 +-> +time_to_live + = +RTE_SP_DEFAULT_TTL +; + +221 +hdr4 +-> +Ãxt_´Ùo_id + = +RTE_TCP_PROTO_ID +; + +223 +hdr4 +-> +¤c_addr + = + `¹e_bsw­32 +(src_addr); + +224 +hdr4 +-> +d¡_addr + = + `¹e_bsw­32 +(dst_addr); + +225 + } +} + +229 + $¹e_syÅroxy_bužd_v6_h—d” +( + +230  +v6_hdr + * +hdr6 +, + +231 +ušt8_t + * +¤c_addr +, + +232 +ušt8_t + * +d¡_addr +, + +233 +ušt16_t + +tý_Ëngth +) + +237 +ušt8_t + +‹mp_¤c +[16]; + +238 +ušt8_t + +‹mp_d¡ +[16]; + +240 +hdr6 +-> +vtc_æow + = 0x60; + +241 +hdr6 +-> +·ylßd_Ën + = + `¹e_bsw­16 +( +tý_Ëngth +); + +242 +hdr6 +-> +´Ùo + = +RTE_TCP_PROTO_ID +; + +243 +hdr6 +-> +hÝ_lim™s + = +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  +ušt16_t + + +256 + $¹e_¥_add_tý_ÝtiÚs +( +tý_hdr + * +thdr +, + +257 cÚ¡  +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +) + +259 +ušt32_t + * +ÝtiÚs_±r + = (ušt32_ˆ*)( +thdr + + 1); + +260 +ušt32_t + * +§ved_±r + = +ÝtiÚs_±r +; + +261 +ušt8_t + +ÝtiÚs + = +t_Ýts +->options; + +262 +ušt32_t + +ÝtiÚ_by‹s +; + +264 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_MSS +) { + +265 +ÝtiÚ_by‹s + = ( +RTE_CT_TCPOPT_MSS + << 24) | + +266 ( +RTE_CT_TCPOLEN_MSS + << 16è| +t_Ýts +-> +mss +; + +267 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +ÝtiÚ_by‹s +); + +270 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_TIMESTAMP +) { + +274 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_SACK_PERM +) + +275 +ÝtiÚ_by‹s + = ( +RTE_CT_TCPOPT_SACK_PERM + << 24) | + +276 ( +RTE_CT_TCPOLEN_SACK_PERM + << 16); + +278 +ÝtiÚ_by‹s + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +279 ( +RTE_CT_TCPOPT_NOP + << 16); + +281 +ÝtiÚ_by‹s + |ð( +RTE_CT_TCPOPT_TIMESTAMP + << 8) | + +282 +RTE_CT_TCPOLEN_TIMESTAMP +; + +283 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +ÝtiÚ_by‹s +); + +284 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +t_Ýts +-> +ts_v® +); + +285 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +t_Ýts +-> +ts_echo_»¶y +); + +286 } ià( +ÝtiÚs + & +RTE_SP_OPTIONS_SACK_PERM +) { + +287 +ÝtiÚ_by‹s + = ( +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 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +ÝtiÚ_by‹s +); + +294 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_WINDOW_SCALE +) { + +295 +ÝtiÚ_by‹s + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +296 ( +RTE_CT_TCPOPT_WINDOW + << 16) | + +297 ( +RTE_CT_TCPOLEN_WINDOW + << 8) | + +298 +t_Ýts +-> +wšdow_sÿË +; + +299 * +ÝtiÚs_±r +++ = + `¹e_bsw­32 +( +ÝtiÚ_by‹s +); + +306 +ušt16_t + +d©a_off£t_by‹s + = (ušt16_t) + `RTE_PTR_DIFF +( +ÝtiÚs_±r +, + +307 +§ved_±r +è+ ( +tý_hdr +); + +308 +thdr +-> +d©a_off + = ( +d©a_off£t_by‹s + >> 2) << 4; + +310  +d©a_off£t_by‹s +; + +311 + } +} + +318  +šlše + +ušt16_t + + +319 + $¹e_syÅroxy_bužd_tý_h—d” +( + +320 +__¹e_unu£d +  +¹e_mbuf + * +Þd_pkt +, + +321  +tý_hdr + * +t_hdr +, + +322 +ušt16_t + +¤c_pÜt +, + +323 +ušt16_t + +d¡_pÜt +, + +324 +ušt32_t + +£q +, + +325 +ušt32_t + +ack +, + +326 +ušt8_t + +æags +, + +327 cÚ¡  +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +, + +328 +ušt8_t + +add_ÝtiÚs +) + +330 +t_hdr +-> +¤c_pÜt + = + `¹e_bsw­16 +(src_port); + +331 +t_hdr +-> +d¡_pÜt + = + `¹e_bsw­16 +(dst_port); + +332 +t_hdr +-> +£Á_£q + = + `¹e_bsw­32 +( +£q +); + +333 +t_hdr +-> +»cv_ack + = + `¹e_bsw­32 +( +ack +); + +335 +t_hdr +-> +tý_æags + = +æags +; + +336 +t_hdr +-> +rx_wš + = +t_Ýts +-> +š™Ÿl_wšdow +; + +338 +t_hdr +-> +tý_u½ + = 0; + +342 +ušt16_t + +Ãw_tý_hdr_size + = +TCP_MIN_HDR_SIZE +; + +344 ià( +add_ÝtiÚs +) + +345 +Ãw_tý_hdr_size + = + `¹e_¥_add_tý_ÝtiÚs +( +t_hdr +, +t_Ýts +); + +347 +t_hdr +-> +d©a_off + = ( +TCP_MIN_HDR_SIZE + >> 2) << 4; + +349  +Ãw_tý_hdr_size +; + +350 + } +} + +353 + $¹e_syÅroxy_compu‹_checksums +(* +i_hdr +,  +tý_hdr + * +t_hdr +) + +364 +št8_t + +hdr_chk + = + `¹e_ù_v”siÚ +( +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_¥ooãd_þ›Á_syÇck +( +¹e_ù_úxn_d©a + * +cd +, + +392  +¹e_mbuf + * +Þd_pkt +) + +398  +_hdr_size_by‹s + = + `¹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_by‹s +); + +403 +ušt16_t + +tý_h—d”_size +; + +406 +ušt32_t + +Ãw_£q + = + `¹e_¥_g‘_¿ndom_£q_numb” +(); + +408 ià( +RTE_CT_DEBUG_SPOOFED_SEQ +) + +409 +Ãw_£q + = 10; + +411 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +Üigš®_¥ooãd_£q + = +Ãw_£q +; + +414 +tý_h—d”_size + = + `¹e_syÅroxy_bužd_tý_h—d” +( +Þd_pkt +, +thdr +, + +415 + `¹e_bsw­16 +( +thdr +-> +d¡_pÜt +), + +416 + `¹e_bsw­16 +( +thdr +-> +¤c_pÜt +), + +417 +Ãw_£q +, + `¹e_bsw­32 +( +thdr +-> +£Á_£q +) + 1, + +418 +RTE_TCP_SYN_ACK +, + +419 +_hdr_size_by‹s + =ð +IP_V4_HEADER_SIZE + ? + +420 & +deçuÉ_v4_syÅroxy_ÝtiÚs + : + +421 & +deçuÉ_v6_syÅroxy_ÝtiÚs +, 1); + +424 ià( +_hdr_size_by‹s + =ð +IP_V4_HEADER_SIZE +) { + +425  +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +427 + `¹e_syÅroxy_bužd_v4_h—d” +( +ihdr4 +, + +428 + `¹e_bsw­32 +( +ihdr4 +-> +d¡_addr +), + +429 + `¹e_bsw­32 +( +ihdr4 +-> +¤c_addr +), +tý_h—d”_size +); + +431 } ià( +_hdr_size_by‹s + =ð +IP_V6_HEADER_SIZE +) { + +432  +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +434 + `¹e_syÅroxy_bužd_v6_h—d” +( +ihdr6 +, + +435 ( +ušt8_t + *) +ihdr6 +-> +d¡_addr +, + +436 ( +ušt8_t + *) +ihdr6 +-> +¤c_addr +, +tý_h—d”_size +); + +438 + `¹e_syÅroxy_adju¡_pkt_Ëngth +( +Þd_pkt +); + +440 + `¹e_syÅroxy_compu‹_checksums +( +hdr +, +thdr +); + +442 + } +} + +446 + $¹e_¥_cvt_to_¥ooãd_£rv”_syn +( +¹e_ù_úxn_d©a + * +cd +, + +447  +¹e_mbuf + * +Þd_pkt +) + +453  +_hdr_size_by‹s + = + `¹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_by‹s +); + +458 +ušt16_t + +tý_h—d”_size +; + +460 +tý_h—d”_size + = + `¹e_syÅroxy_bužd_tý_h—d” +( +Þd_pkt +, +thdr +, + +461 + `¹e_bsw­16 +( +thdr +-> +¤c_pÜt +), + +462 + `¹e_bsw­16 +( +thdr +-> +d¡_pÜt +), + +463 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +) - 1, 0, + +464 +RTE_TCP_SYN +, + +465 & +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_ÝtiÚs +, 1); + +467 ià( +_hdr_size_by‹s + =ð +IP_V4_HEADER_SIZE +) { + +468  +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +470 + `¹e_syÅroxy_bužd_v4_h—d” +( +ihdr4 +, + +471 + `¹e_bsw­32 +( +ihdr4 +-> +¤c_addr +), + +472 + `¹e_bsw­32 +( +ihdr4 +-> +d¡_addr +), +tý_h—d”_size +); + +473 } ià( +_hdr_size_by‹s + =ð +IP_V6_HEADER_SIZE +) { + +474  +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +476 + `¹e_syÅroxy_bužd_v6_h—d” +( +ihdr6 +, + +477 ( +ušt8_t + *) +ihdr6 +-> +¤c_addr +, + +478 ( +ušt8_t + *) +ihdr6 +-> +d¡_addr +, +tý_h—d”_size +); + +481 + `¹e_syÅroxy_adju¡_pkt_Ëngth +( +Þd_pkt +); + +483 + `¹e_syÅroxy_compu‹_checksums +( +hdr +, +thdr +); + +485 + } +} + +488 + $¹e_¥_cvt_to_¥ooãd_£rv”_ack +( +¹e_ù_úxn_d©a + * +cd +, + +489  +¹e_mbuf + * +Þd_pkt +) + +495  +_hdr_size_by‹s + = + `¹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_by‹s +); + +504 +ušt32_t + +»®_£q + = + `¹e_bsw­32 +( +thdr +-> +£Á_£q +); + +505 +ušt16_t + +tý_h—d”_size +; + +507 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff + = + +508 +»®_£q + - +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +Üigš®_¥ooãd_£q +; + +511 +tý_h—d”_size + = + `¹e_syÅroxy_bužd_tý_h—d” +( +Þd_pkt +, +thdr +, + +512 + `¹e_bsw­16 +( +thdr +-> +d¡_pÜt +), + +513 + `¹e_bsw­16 +( +thdr +-> +¤c_pÜt +), + +514 + `¹e_bsw­32 +( +thdr +-> +»cv_ack +), + +515 + `¹e_bsw­32 +( +thdr +-> +£Á_£q +è+ 1, +RTE_TCP_ACK +, + +516 & +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_ÝtiÚs +, 0); + +519 ià( +_hdr_size_by‹s + =ð +IP_V4_HEADER_SIZE +) { + +520  +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +522 + `¹e_syÅroxy_bužd_v4_h—d” +( +ihdr4 +, + +523 + `¹e_bsw­32 +( +ihdr4 +-> +d¡_addr +), + +524 + `¹e_bsw­32 +( +ihdr4 +-> +¤c_addr +), +tý_h—d”_size +); + +526 } ià( +_hdr_size_by‹s + =ð +IP_V6_HEADER_SIZE +) { + +527  +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +529 + `¹e_syÅroxy_bužd_v6_h—d” +( +ihdr6 +, + +530 ( +ušt8_t + *) +ihdr6 +-> +d¡_addr +, + +531 ( +ušt8_t + *) +ihdr6 +-> +¤c_addr +, +tý_h—d”_size +); + +533 + `¹e_syÅroxy_adju¡_pkt_Ëngth +( +Þd_pkt +); + +535 + `¹e_syÅroxy_compu‹_checksums +( +hdr +, +thdr +); + +536 + } +} + +551 + $¹e_¥_adju¡_£rv”_£q_aá”_wšdow_check +( + +552  +¹e_ù_úxn_d©a + * +cd +, + +553 +__¹e_unu£d + * +i_hdr +, + +554  +tý_hdr + * +thdr +, + +555 +¹e_ù_pkt_dœeùiÚ + +dœ +) + +557 +ušt32_t + +num_befÜe +, +num_aᔠ+; + +559 ià(! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished +) + +562 ià( +dœ + =ð +RTE_CT_DIR_ORIGINAL +) + +567 +num_befÜe + = + `¹e_bsw­32 +( +thdr +-> +£Á_£q +); + +568 +num_aᔠ+ = +num_befÜe + - +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff +; + +569 +thdr +-> +£Á_£q + = + `¹e_bsw­32 +( +num_aᔠ+); + +571 + `¹e_¥_šüem’l_tý_chksum_upd©e_32 +( +num_befÜe +, +num_aᔠ+, + +572 & +thdr +-> +cksum +); + +573 + } +} + +577 + $¹e_¥_adju¡_þ›Á_§ck_’Œ›s +( + +578  +tý_hdr + * +thdr +, + +579 +ušt32_t + +diff +) + +581 +ušt32_t + +num_befÜe +, +num_aᔠ+; + +582 +ušt32_t + * +§ck_±r +; + +583 +ušt8_t + +§ck_blk_size +; + +584 +ušt16_t + +d©aoff_š_by‹s + = ( +thdr +-> +d©a_off + & 0xf0) >> 2; + +585 +ušt16_t + +Ëngth + = +d©aoff_š_by‹s + - ( +tý_hdr +); + +587 ià(! +Ëngth +) + +590 +ušt8_t + * +ÝtiÚs_±r + = (ušt8_ˆ*)( +thdr + + 1); + +592  +Ëngth + > 0) { + +593 +ušt8_t + +Ýcode + = * +ÝtiÚs_±r +; + +594 +ušt8_t + +Ýsize + = +ÝtiÚs_±r +[1]; + +595  +i +; + +597  +Ýcode +) { + +599  +RTE_CT_TCPOPT_EOL +: + +602  +RTE_CT_TCPOPT_NOP +: + +603 +Ëngth +--; + +604 +ÝtiÚs_±r +++; + +607  +RTE_CT_TCPOPT_SACK +: + +616 +§ck_blk_size + = +Ýsize + - 2; + +618 +§ck_±r + = ( +ušt32_t + *)( +ÝtiÚs_±r + + 2); + +620  +num_acks + = +§ck_blk_size + >> 2; + +622 ià( + `uÆik–y +( +§ck_blk_size + > 32 || + +623 (( +§ck_blk_size + & 0x3) != 0))) { + +624 + `´štf +("Sack block…arsing failure\n"); + +628  +i + = 0; i < +num_acks +; i++) { + +629 +num_befÜe + = + `¹e_bsw­32 +(* +§ck_±r +); + +630 +num_aᔠ+ = +num_befÜe + + +diff +; + +631 * +§ck_±r + = + `¹e_bsw­32 +( +num_aᔠ+); + +632 +§ck_±r +++; + +633 + `¹e_¥_šüem’l_tý_chksum_upd©e_32 +( + +634 +num_befÜe +, + +635 +num_aᔠ+, + +636 & +thdr +-> +cksum +); + +643 ià(( +Ýsize + < 2è|| (Ýsiz> +Ëngth +)) { + +644 + `´štf +("ERROR!, opsize %i,†ength %i\n", + +645 +Ýsize +, +Ëngth +); + +649 +ÝtiÚs_±r + +ð +Ýsize +; + +650 +Ëngth + -ð +Ýsize +; + +652 + } +} + +655 + $¹e_¥_adju¡_þ›Á_ack_befÜe_wšdow_check +( + +656  +¹e_ù_úxn_d©a + * +cd +, + +657 +__¹e_unu£d + * +i_hdr +, + +658  +tý_hdr + * +thdr +, + +659 +¹e_ù_pkt_dœeùiÚ + +dœ +) + +661 +ušt32_t + +num_befÜe +, +num_aᔠ+; + +663 ià(! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished +) + +666 ià( +dœ + !ð +RTE_CT_DIR_ORIGINAL +) + +671 +num_befÜe + = + `¹e_bsw­32 +( +thdr +-> +»cv_ack +); + +672 +num_aᔠ+ = +num_befÜe + + +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff +; + +673 +thdr +-> +»cv_ack + = + `¹e_bsw­32 +( +num_aᔠ+); + +674 + `¹e_¥_šüem’l_tý_chksum_upd©e_32 +( +num_befÜe +, + +675 +num_aᔠ+, & +thdr +-> +cksum +); + +680 + `¹e_¥_adju¡_þ›Á_§ck_’Œ›s +( +thdr +, + +681 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff +); + +686 + } +} + +693 + $¹e_¥_·r£_tý_ÝtiÚs +( + +694 +ušt8_t + * +ÝtiÚs_±r +, + +695 +ušt16_t + +Ëngth +, + +696  +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +) + +698  +Ýsize +; + +700 +t_Ýts +-> +ÝtiÚs + = 0; + +702  +Ëngth + > 0) { + +703 +ušt8_t + +Ýcode + = * +ÝtiÚs_±r +++; + +705 ià( +Ýcode + =ð +RTE_CT_TCPOPT_EOL +) + +708 ià( +Ýcode + =ð +RTE_CT_TCPOPT_NOP +) { + +709 +Ëngth +--; + +713 +Ýsize + = * +ÝtiÚs_±r +++; + +715 ià( + `uÆik–y +( +Ýsize + < 2 || opsiz> +Ëngth +)) { + +717 + `´štf +("parsingƒrror, opsize: %i,†ength: %i\n", + +718 +Ýsize +, +Ëngth +); + +722  +Ýcode +) { + +724  +RTE_CT_TCPOPT_MSS +: + +725 ià( +Ýsize + =ð +RTE_CT_TCPOLEN_MSS +) { + +726 +ušt16_t + * +mss_±r + = (ušt16_ˆ*) +ÝtiÚs_±r +; + +728 +t_Ýts +-> +mss + = + `¹e_bsw­16 +(* +mss_±r +); + +729 +t_Ýts +-> +ÝtiÚs + |ð +RTE_SP_OPTIONS_MSS +; + +733  +RTE_CT_TCPOPT_WINDOW +: + +734 ià( +Ýsize + =ð +RTE_CT_TCPOLEN_WINDOW +) { + +735 +t_Ýts +-> +wšdow_sÿË + = + `RTE_MIN +(* +ÝtiÚs_±r +, + +736 +RTE_CT_MAX_TCP_WINDOW_SCALE +); + +737 +t_Ýts +-> +ÝtiÚs + |ð +RTE_SP_OPTIONS_WINDOW_SCALE +; + +741  +RTE_CT_TCPOPT_TIMESTAMP +: + +742 ià( +Ýsize + =ð +RTE_CT_TCPOLEN_TIMESTAMP +) { + +743 +ušt32_t + * +ts_v®_±r + = (ušt32_ˆ*) +ÝtiÚs_±r +; + +744 +ušt32_t + * +ts_eü_±r + = + +745 ( +ušt32_t + *)( +ÝtiÚs_±r + + 4); + +746 +t_Ýts +-> +ts_v® + = + `¹e_bsw­32 +(* +ts_v®_±r +); + +747 +t_Ýts +-> +ts_echo_»¶y + = + +748 + `¹e_bsw­32 +(* +ts_eü_±r +); + +749 +t_Ýts +-> +ÝtiÚs + |ð +RTE_SP_OPTIONS_TIMESTAMP +; + +753  +RTE_CT_TCPOPT_SACK_PERM +: + +754 ià( +Ýsize + =ð +RTE_CT_TCPOLEN_SACK_PERM +) + +755 +t_Ýts +-> +ÝtiÚs + |ð +RTE_SP_OPTIONS_SACK_PERM +; + +762 +ÝtiÚs_±r + +ð +Ýsize + - 2; + +763 +Ëngth + -ð +Ýsize +; + +766 + } +} + +770 + $¹e_¥_·r£_ÝtiÚs +( +¹e_mbuf + * +pkt +,  +¹e_ù_úxn_d©a + * +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 +ušt8_t + * +Ýt_±r + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +779 ( +IP_START + + +_hdr_Ëngth + + ( +tý_hdr +))); + +781  +¹e_syÅroxy_ÝtiÚs + * +t_Ýts + = + +782 & +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_ÝtiÚs +; + +783  +Ëngth_š_by‹s + = + +784 (( +thdr +-> +d©a_off + & 0xf0è>> 2è- ( +tý_hdr +); + +786 + `¹e_¥_·r£_tý_ÝtiÚs +( +Ýt_±r +, +Ëngth_š_by‹s +, +t_Ýts +); + +787 +t_Ýts +-> +š™Ÿl_wšdow + = +thdr +-> +rx_wš +; + +788 + } +} + +793  +¹e_mbuf + * + +794 + $¹e_ù_g‘_bufã»d_syÅroxy_·ck‘s +( + +795  +¹e_ù_úxn_Œack” + * +ù +) + +797  +¹e_mbuf + * +Œkr_li¡ + = +ù +-> +bufã»d_pkt_li¡ +; + +799 +ù +-> +bufã»d_pkt_li¡ + = +NULL +; + +800  +Œkr_li¡ +; + +801 + } +} + +805  + $¹e_ù_’abË_syÅroxy +( +¹e_ù_úxn_Œack” + * +ù +) + +807 +ù +-> +misc_ÝtiÚs +. +syÅroxy_’abËd + = 1; + +808 + `´štf +("rte_ct_enable_synproxy = %d\n", + +809 +ù +-> +misc_ÝtiÚs +. +syÅroxy_’abËd +); + +810 + } +} + +812  + $¹e_ù_di§bË_syÅroxy +( +¹e_ù_úxn_Œack” + * +ù +) + +814 +ù +-> +misc_ÝtiÚs +. +syÅroxy_’abËd + = 0; + +817 + } +} + +820 + $¹e_ù_bufãr_·ck‘ +( + +821  +¹e_ù_úxn_Œack” + * +ù +, + +822  +¹e_ù_úxn_d©a + * +cd +, + +823  +¹e_mbuf + * +pkt +) + +831  +¹e_mbuf + ** +Ãxt + = (rte_mbuf **) + +832 + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +833 +ù +-> +poš‹r_off£t +); + +834 * +Ãxt + = +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +bufã»d_pkt_li¡ +; + +835 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +bufã»d_pkt_li¡ + = +pkt +; + +836 + } +} + +839 + $¹e_ù_»Ëa£_bufã»d_·ck‘s +( + +840  +¹e_ù_úxn_Œack” + * +ù +, + +841  +¹e_ù_úxn_d©a + * +cd +) + +843  +¹e_mbuf + * +úxn_li¡ + = + +844 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +bufã»d_pkt_li¡ +; + +846 ià( +úxn_li¡ + =ð +NULL +) + +849 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +bufã»d_pkt_li¡ + = +NULL +; + +851  +¹e_mbuf + * +Œkr_li¡ + = +ù +-> +bufã»d_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 +ù +-> +poš‹r_off£t +); + +867 +Þd_Ãxt + = * +Ãxt +; + +868 * +Ãxt + = +Œkr_li¡ +; + +869 +Œkr_li¡ + = +úxn_li¡ +; + +870 +úxn_li¡ + = +Þd_Ãxt +; + +872 +ù +-> +bufã»d_pkt_li¡ + = +Œkr_li¡ +; + +873 + } +} + + @VIL/conntrack/rte_ct_tcp.c + +17  + ~<¡dlib.h +> + +18  + ~<¡ršg.h +> + +19  + ~ + +20  + ~<š‰y³s.h +> + +21  + ~"¹e_ù_tý.h +" + +22  + ~"¹e_úxn_Œackšg.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_befÜe +(£q1, seq2) + + ) + +43  +šlše + +ušt8_t + + $¹e_befÜe +( +ušt32_t + +£q1 +, ušt32_ˆ +£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Ú¡ +ušt8_t + + g¹e_ù_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 + e¹e_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  +ušt8_t + + g¹e_ù_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  +šlše + +ušt8_t + + +142 + $¹e_ù_g‘_šdex +( +ušt8_t + +tý_æags +) + +144 +ušt8_t + +imp܏Á_æags +; + +146 +tý_æags + &= 0x3f; + +147 +imp܏Á_æags + = (( +tý_æags + & 0x10) >> 1) | (tcp_flags & 7); + +150 ià( + `uÆik–y +(( +tý_æags + == 0) || (tcp_flags == 0x3f))) + +152  +RTE_CT_TCP_ILL_FLAG +; + +154  +¹e_ù_tý_æags_to_¡©e_bË_šdex +[ +imp܏Á_æags +]; + +156 + } +} + +158  +šlše +  + +159 + $¹e_ù_e™h”_dœeùiÚ_has_æags +( +¹e_ù_úxn_d©a + * +cd +, +ušt8_t + +æags +) + +161  (( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[0]. +æags + | cd-> + +162 +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[1]. +æags +) & flags) != 0; + +163 + } +} + +165  +šlše + +ušt32_t + + $¹e_ù_£q_¶us_Ëngth +( +¹e_mbuf + * +pkt +, + +166 +ušt8_t + +_hdr_size +) + +168 +ušt16_t + +pkt_Ëngth + = 0; + +169  +tý_hdr + * +týh—d” + = + +170 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +171 ( +IP_START + + + +172 +_hdr_size +)); + +173 +ušt32_t + +tý_hdr_size + = ( +týh—d” +-> +d©a_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_bsw­16 +( +ihdr +-> +tÙ®_Ëngth +); + +182 ià( +_hdr_size + =ð +IPv6_HEADER_SIZE +) { + +183  +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +185 +pkt_Ëngth + = + `¹e_bsw­16 +( +ihdr +-> +·ylßd_Ën +è+ +IPv6_HEADER_SIZE +; + +195  + `¹e_bsw­32 +( +týh—d” +-> +£Á_£q +) + + +196 +pkt_Ëngth + - +_hdr_size + - +tý_hdr_size + + + +197 (( +týh—d” +-> +tý_æags + & ( +RTE_CT_TCPHDR_SYN + | +RTE_CT_TCPHDR_FIN +)) != + +200 + } +} + +203 + $¹e_ù_check_fÜ_sÿlšg_ªd_§ck_³rm +( + +204  +¹e_mbuf + * +pkt +, + +205  +¹e_ù_tý_¡©e + * +¡©e +, + +206 +ušt8_t + +_hdr_size +) + +209  +tý_hdr + * +týh—d” + = + +210 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +211 ( +IP_START + + + +212 +_hdr_size +)); + +213 +ušt32_t + +d©aoff_š_by‹s + = ( +týh—d” +-> +d©a_off + & 0xf0) >> 2; + +214 +ušt32_t + +Ëngth + = +d©aoff_š_by‹s + - ( +tý_hdr +); + +216 +¡©e +-> +sÿË + = 0; + +217 +¡©e +-> +æags + = 0; + +219 ià( +Ëngth + == 0) + +222 +ušt8_t + * +ÝtiÚs_±r + = + +223 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +224 ( +IP_START + + +_hdr_size + + + +225 ( +tý_hdr +))); + +227  +Ëngth + > 0) { + +228 +ušt8_t + +ÝtiÚ + = * +ÝtiÚs_±r +; + +229 +ušt8_t + +Ýsize + = +ÝtiÚs_±r +[1]; + +232  +ÝtiÚ +) { + +234  +RTE_CT_TCPOPT_EOL +: + +238  +RTE_CT_TCPOPT_NOP +: + +239 +ÝtiÚs_±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 +( +ÝtiÚs_±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 +ÝtiÚs_±r + +ð +Ýsize +; + +268 +Ëngth + -ð +Ýsize +; + +271 + } +} + +274 + $¹e_ù_týdi¥Ïy_hdr +( +tý_hdr + * +týh—d” +) + +276 + `´štf +("Tý h—d”: src_pÜt=%d", + `¹e_bsw­16 +( +týh—d” +-> +¤c_pÜt +)); + +277 + `´štf +(", d¡_pÜt=%d", + `¹e_bsw­16 +( +týh—d” +-> +d¡_pÜt +)); + +278 + `´štf +(", s’t_£q=%u", + `¹e_bsw­32 +( +týh—d” +-> +£Á_£q +)); + +279 + `´štf +(",„ecv_ack=%u", + `¹e_bsw­32 +( +týh—d” +-> +»cv_ack +)); + +280 + `´štf +(",d©a_off=%d", +týh—d” +-> +d©a_off + / 16); + +281 + `´štf +(",tý_æags=%02x", +týh—d” +-> +tý_æags +); + +282 + `´štf +(",„x_wš=%d\n", + `¹e_bsw­16 +( +týh—d” +-> +rx_wš +)); + +284 + } +} + +286  +šlše +  + +287 + $¹e_ù_þ—r_úxn_d©a +( +__¹e_unu£d +  +¹e_ù_úxn_Œack” + * +ù +, + +288  +¹e_ù_úxn_d©a + * +cd +, + +289 +__¹e_unu£d +  +¹e_mbuf + * +pkt +) + +293 + `mem£t +(& +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, 0, + +294 ( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +)); + +295 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + = +RTE_CT_TCP_ILL_FLAG +; + +297 + } +} + +299 +¹e_ù_·ck‘_aùiÚ + + +300 + $¹e_ù_tý_Ãw_cÚÃùiÚ +( + +301  +¹e_ù_úxn_Œack” + * +ù +, + +302  +¹e_ù_úxn_d©a + * +cd +, + +303  +¹e_mbuf + * +pkt +, + +304  +u£_syÅroxy +, + +305 +ušt8_t + +_hdr_size +) + +307  +tý_hdr + * +týh—d” + = + +308 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +309 ( +IP_START + + +_hdr_size +)); + +311 +¹e_ù_tý_¡©es + +Ãw_¡©e +; + +312 +ušt8_t + +šdex +; + +313  +¹e_ù_tý_¡©e + * +£nd” + = + +314 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[ +RTE_CT_DIR_ORIGINAL +]; + +315  +¹e_ù_tý_¡©e + * +»ûiv” + = + +316 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[ +RTE_CT_DIR_REPLY +]; + +317 +ušt16_t + +wš +; + +319 ià( +CT_DEBUG +) + +320 + `¹e_ù_týdi¥Ïy_hdr +( +týh—d” +); + +322 +šdex + = + `¹e_ù_g‘_šdex +( +týh—d” +-> +tý_æags +); + +323 +Ãw_¡©e + = +¹e_ù_tý_¡©e_bË +[0][ +šdex +][ +RTE_CT_TCP_NONE +]; + +325 ià( + `uÆik–y +( +Ãw_¡©e + >ð +RTE_CT_TCP_MAX +)) { + +326 ià( +CT_DEBUG +) + +327 + `´štf +("invalid‚ew state with flags %02x\n", + +328 +týh—d” +-> +tý_æags +); + +329  +RTE_CT_DROP_PACKET +; + +337 ià( + `uÆik–y +(( +Ãw_¡©e + !ð +RTE_CT_TCP_SYN_SENT + + +338 && +ù +-> +misc_ÝtiÚs +. +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_d©a +( +ù +, +cd +, +pkt +); + +350 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + = +Ãw_¡©e +; + +352 +£nd” +-> +’d + = s’d”-> +max’d + = + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +353 +wš + = + `¹e_bsw­16 +( +týh—d” +-> +rx_wš +); + +354 +£nd” +-> +maxwš + = + `RTE_MAX +( +wš +, ( +ušt32_t +)1); + +356 ià( + `lik–y +( +Ãw_¡©e + =ð +RTE_CT_TCP_SYN_SENT +)) { + +358 + `¹e_ù_check_fÜ_sÿlšg_ªd_§ck_³rm +( +pkt +, +£nd” +, + +359 +_hdr_size +); + +361 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅrox›d + = +u£_syÅroxy +; + +363 ià( +u£_syÅroxy +) { + +370 ià( +CT_DEBUG + > 2) + +371 + `´štf +("synproxy sending SYN-ACKo client\n"); + +373  +RTE_CT_SEND_CLIENT_SYNACK +; + +382 +£nd” +-> +max’d + +ð£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: senderƒnd=%u maxend=%u maxwin=%u scale=%i", + +389 +£nd” +-> +’d +, s’d”-> +max’d +, s’d”-> +maxwš +, + +390 +£nd” +-> +sÿË +); + +391 + `´štf +("„eceiverƒnd=%u maxend=%u maxwin=%u scale=%i\n", + +392 +»ûiv” +-> +’d +,„eûiv”-> +max’d +, + +393 +»ûiv” +-> +maxwš +, + +394 +»ûiv” +-> +sÿË +); + +397  +RTE_CT_OPEN_CONNECTION +; + +398 + } +} + +400  +ušt32_t + + +401 + $¹e_ù_tý_§ck +( +¹e_mbuf + * +pkt +, +ušt8_t + +_hdr_size +) + +403  +tý_hdr + * +týh—d” + = + +404 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +405 ( +IP_START + + + +406 +_hdr_size +)); + +407 +ušt16_t + +d©aoff_š_by‹s + = ( +týh—d” +-> +d©a_off + & 0xf0) >> 2; + +408 +ušt16_t + +Ëngth + = +d©aoff_š_by‹s + - ( +tý_hdr +); + +409 +ušt32_t + +§ck + = + `¹e_bsw­32 +( +týh—d” +-> +»cv_ack +); + +411 ià( + `uÆik–y +(! +Ëngth +)) + +412  +§ck +; + +414 +ušt8_t + * +ÝtiÚs_±r + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +415 ( +IP_START + + +_hdr_size + + ( +tý_hdr +))); + +417  +Ëngth + > 0) { + +418 +ušt8_t + +Ýcode + = * +ÝtiÚs_±r +; + +419 +ušt8_t + +Ýsize + = +ÝtiÚs_±r +[1]; + +420  +i +; + +421 +ušt32_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 +ÝtiÚs_±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 +ÝtiÚs_±r + += 6; + +452  +i + = 0; i < ( +Ýsize + - 2); i += + +453 +RTE_CT_TCPOLEN_PER_SACK_ENTRY +) { + +454 +§ck_±r + = + +455 ( +ušt32_t + *è& +ÝtiÚs_±r +[ +i +]; + +456 +ušt32_t + +ack + = + `¹e_bsw­32 +(* +§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 +ÝtiÚs_±r + +ð +Ýsize +; + +474 +Ëngth + -ð +Ýsize +; + +476  +§ck +; + +477 + } +} + +483  +šlše +  + +484 + $¹e_ù_check_fÜ_»ŒªsmissiÚs +( + +485  +¹e_ù_tý + * +¡©e +, + +486 +ušt8_t + +dœ +, + +487 +ušt32_t + +£q +, + +488 +ušt32_t + +ack +, + +489 +ušt32_t + +’d +, + +490 +ušt16_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  +ušt8_t + + +512 + $¹e_ù_tý_š_wšdow +( + +513  +¹e_ù_úxn_d©a + * +cd +, + +514  +¹e_ù_úxn_Œack” + * +ù +, + +515  +¹e_ù_tý + * +¡©e +, + +516 +¹e_ù_pkt_dœeùiÚ + +dœ +, + +517 +ušt8_t + +šdex +, + +518  +¹e_mbuf + * +pkt +, + +519 +ušt8_t + +_hdr_size +) + +521  +¹e_ù_tý_¡©e + * +£nd” + = & +¡©e +-> +£’ +[ +dœ +]; + +522  +¹e_ù_tý_¡©e + * +»ûiv” + = & +¡©e +-> +£’ +[! +dœ +]; + +523 +ušt32_t + +£q +, +ack +, +§ck +, +’d +, +wš +, +swš +; + +524 +ušt8_t + +š_»cv_wš +, +tý_æags +; + +525 +¹e_ù_·ck‘_aùiÚ + +»s +; + +527 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +528  +tý_hdr + * +týh—d” + = + +529 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +530 ( +IP_START + + +_hdr_size +)); + +532 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅrox›d +) + +533 + `¹e_¥_adju¡_þ›Á_ack_befÜe_wšdow_check +( +cd +, +hdr +, + +534 +týh—d” +, +dœ +); + +537 +£q + = + `¹e_bsw­32 +( +týh—d” +-> +£Á_£q +); + +538 +ack + = +§ck + = + `¹e_bsw­32 +( +týh—d” +-> +»cv_ack +); + +539 +wš + = + `¹e_bsw­16 +( +týh—d” +-> +rx_wš +); + +540 +’d + = + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +541 +tý_æags + = +týh—d” +->tcp_flags; + +543 ià( +»ûiv” +-> +æags + & +RTE_CT_TCP_FLAG_SACK_PERM +) + +544 +§ck + = + `¹e_ù_tý_§ck +( +pkt +, +_hdr_size +); + +546 ià( + `uÆik–y +( +£nd” +-> +maxwš + == 0)) { + +548 ià( +tý_æags + & +RTE_CT_TCPHDR_SYN +) { + +553 +£nd” +-> +’d + = s’d”-> +max’d + =ƒnd; + +554 +£nd” +-> +maxwš + = + `RTE_MAX +( +wš +, ( +ušt32_t +)1); + +556 + `¹e_ù_check_fÜ_sÿlšg_ª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” +-> +max’d + = +’d + + s’d”-> +maxwš +; + +585 ià( +»ûiv” +-> +maxwš + == 0) + +586 +»ûiv” +-> +’d + =„eûiv”-> +max’d + = +§ck +; + +590 ià((( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + =ð +RTE_CT_TCP_SYN_SENT + && + +591 +dœ + =ð +RTE_CT_DIR_ORIGINAL +) || + +592 ( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + =ð +RTE_CT_TCP_SYN_RECV + && + +593 +dœ + =ð +RTE_CT_DIR_REPLY +)è&& + `¹e_aᔠ+( +’d +, +£nd” +->end)) { + +599 +£nd” +-> +’d + = s’d”-> +max’d + =ƒnd; + +600 +£nd” +-> +maxwš + = + `RTE_MAX +( +wš +, ( +ušt32_t +)1); + +602 + `¹e_ù_check_fÜ_sÿlšg_ª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ý_ù_d©a +. +¡©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_befÜe +( +£q +, +£nd” +-> +max’d + + 1è&& +š_»cv_wš + && + +623 + `¹e_befÜe +( +§ck +, +»ûiv” +-> +’d + + 1) && + +624 + `¹e_aᔠ+( +§ck +, + +625 +»ûiv” +-> +’d + - + `RTE_MAX +( +£nd” +-> +maxwš +, + +626 ( +ušt32_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” +-> +max’d +)) + +655 +»ûiv” +-> +maxwš + +ð +’d + - +£nd” +-> +max’d +; + +657 ià( + `¹e_aᔠ+( +§ck + + +wš +, +»ûiv” +-> +max’d + - 1)) + +658 +»ûiv” +-> +max’d + = +§ck + + + `RTE_MAX +( +wš +, ( +ušt32_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Ü_»ŒªsmissiÚs +( +¡©e +, +dœ +, +£q +, +ack +, + +666 +’d +, +wš +); + +667 +»s + = 1; + +669 +»s + = ( +£nd” +-> +æags + & +RTE_CT_TCP_FLAG_BE_LIBERAL + || + +670 +ù +-> +misc_ÝtiÚs +. +tý_be_lib”® +); + +673 ià( +CT_DEBUG +) { + +674 ià(! +»s +) { + +676 + `´štf +("tý_š_wšdow FAILED fÜ %p\n", +cd +); + +677 + `´štf +("rte_before(%u, %u + 1) is %d\n", + +678 +£q +, +£nd” +-> +max’d + + 1, + +679 + `¹e_befÜe +( +£q +, +£nd” +-> +max’d + + 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_befÜe(%u, %u + 1èi %d\n", +§ck +, + +684 +»ûiv” +-> +’d +, + `¹e_befÜe +( +§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 ( +ušt32_t +) +RTE_MAX_ACKWIN_CONST +) + +696 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅrox›d +) + +697 + `¹e_¥_adju¡_£rv”_£q_aá”_wšdow_check +( +cd +, +hdr +, + +698 +týh—d” +, +dœ +); + +699  +»s +; + +700 + } +} + +703  +šlše + +ušt8_t + + +704 + $¹e_ù_choo£_mš_timeout_¡©e +( + +705  +¹e_ù_úxn_Œack” + * +ù +, + +706 +ušt8_t + +¡©e1 +, + +707 +ušt8_t + +¡©e2 +) + +709 ià( +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +¡©e1 +] < + +710 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +¡©e2 +]) + +711  +¡©e1 +; + +713  +¡©e2 +; + +714 + } +} + +718 +¹e_ù_·ck‘_aùiÚ + + +719 + $¹e_ù_v”ify_tý_·ck‘ +( + +720  +¹e_ù_úxn_Œack” + * +ù +, + +721  +¹e_ù_úxn_d©a + * +cd +, + +722  +¹e_mbuf + * +pkt +, + +723 +ušt8_t + +key_was_杳d +, + +724 +ušt8_t + +_hdr_size +) + +726  +tý_hdr + * +týh—d” + = (tcp_hdr *) + +727 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, ( +IP_START + + +_hdr_size +)); + +729 +¹e_ù_tý_¡©es + +Ãw_¡©e +, +Þd_¡©e +; + +730 +¹e_ù_pkt_dœeùiÚ + +dœ +; + +731 +ušt8_t + +šdex +; + +735 +ušt8_t + +timeout_¡©e +; + +737 +dœ + = ( +cd +-> +key_is_þ›Á_Üd” + =ð! +key_was_杳d +); + +739 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅrox›d + && + +740 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +h®f_e¡ablished + && + +741 ! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished + && + +742 +dœ + =ð +RTE_CT_DIR_ORIGINAL +) { + +748 + `¹e_ù_bufãr_·ck‘ +( +ù +, +cd +, +pkt +); + +749  +RTE_CT_HIJACK +; + +752 +ušt32_t + +»cv_ack + = + `¹e_bsw­32 +( +týh—d” +->recv_ack); + +753 +ušt32_t + +£Á_£q + = + `¹e_bsw­32 +( +týh—d” +->sent_seq); + +755  +check_wšdow + = 1; + +756 +¹e_ù_·ck‘_aùiÚ + +»tuº_aùiÚ + = +RTE_CT_FORWARD_PACKET +; + +760 +Þd_¡©e + = +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e +; + +761 +šdex + = + `¹e_ù_g‘_šdex +( +týh—d” +-> +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 stateransition from %s ", + +767 +¹e_ù_tý_Çmes +[ +Þd_¡©e +]); + +768 + `´štf +("with flags 0x%02x\n", + +769 +týh—d” +-> +tý_æags +); + +772 +ù +-> +couÁ”s +-> +pkts_drÝ_šv®id_¡©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Þ +. +syÅroxy_d©a +. +syÅrox›d + && + +784 ! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +h®f_e¡ablished + && + +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Þ +. +syÅroxy_d©a +. +h®f_e¡ablished + = +Œue +; + +800 + `¹e_¥_cvt_to_¥ooãd_£rv”_syn +( +cd +, +pkt +); + +801 + `¹e_ù_þ—r_úxn_d©a +( +ù +, +cd +, +pkt +); + +802 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + = +RTE_CT_TCP_SYN_SENT +; + +804  +¹e_ù_tý_¡©e + * +£nd” + = + +805 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. + +806 +£’ +[ +RTE_CT_DIR_ORIGINAL +]; + +807 +ušt16_t + +wš + = + `¹e_bsw­16 +( +týh—d” +-> +rx_wš +); + +809 +£nd” +-> +’d + = s’d”-> +max’d + = + +810 + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +811 +£nd” +-> +maxwš + = + `RTE_MAX +( +wš +, ( +ušt32_t +)1); + +812 + `¹e_ù_check_fÜ_sÿlšg_ª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Þ +. +syÅroxy_d©a +. +syÅrox›d + && + +824 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +h®f_e¡ablished + && + +825 ! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished +) { + +833 ià(! + `¹e_ù_tý_š_wšdow +( +cd +, +ù +, + +834 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +835 +dœ +, +šdex +, +pkt +, +_hdr_size +)) { + +836 +ù +-> +couÁ”s +-> +pkts_drÝ_outof_wšdow +++; + +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_¥ooãd_£rv”_ack +( +cd +, +pkt +); + +854 +šdex + = + `¹e_ù_g‘_šdex +( +týh—d” +-> +tý_æags +); + +856 ià(! + `¹e_ù_tý_š_wšdow +( +cd +, +ù +, + +857 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +858 ! +dœ +, +šdex +, +pkt +, +_hdr_size +)) { + +859 +ù +-> +couÁ”s +-> +pkts_drÝ_outof_wšdow +++; + +860  +RTE_CT_DROP_PACKET +; + +865 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + = + +866 +RTE_CT_TCP_ESTABLISHED +; + +867 +ù +-> +couÁ”s +-> +£ssiÚs_e¡ablished +++; + +868 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished + = +Œue +; + +869 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + = +šdex +; + +870 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_dœ + = ! +dœ +; + +872 + `¹e_ù_£t_úxn_tim”_fÜ_tý +( +ù +, +cd +, + +873 +RTE_CT_TCP_ESTABLISHED +); + +874 + `¹e_ù_»Ëa£_bufã»d_·ck‘s +( +ù +, +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Þ +. +syÅroxy_d©a +. +syÅrox›d + && + +913 ! +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_e¡ablished +) + +914  +RTE_CT_DROP_PACKET +; + +916 ià( +šdex + =ð +RTE_CT_TCP_SAK_FLAG + && + +917 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + == + +918 +RTE_CT_TCP_SYN_FLAG + + +919 && +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_dœ + !ð +dœ + + +920 && +»cv_ack + =ð +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_’d +) { + +928  +¹e_ù_tý_¡©e + * +Ï¡_£’ + = + +929 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[cd->ct_protocol. + +930 +tý_ù_d©a +. + +931 +Ï¡_dœ +]; + +935 +Þd_¡©e + = +RTE_CT_TCP_SYN_SENT +; + +936 +Ãw_¡©e + = +RTE_CT_TCP_SYN_RECV +; + +938 +Ï¡_£’ +-> +’d + = +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_’d +; + +939 +Ï¡_£’ +-> +max’d + = + +940 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_’d +; + +941 +Ï¡_£’ +-> +maxwš + = + +942 + `RTE_MAX +( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_wš +, + +943 ( +ušt32_t +)1); + +944 +Ï¡_£’ +-> +sÿË + = + +945 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_wsÿË +; + +946 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_æags + &= + +947 ~ +RTE_CT_EXP_CHALLENGE_ACK +; + +948 +Ï¡_£’ +-> +æags + = + +949 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_æags +; + +950 + `mem£t +(& +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£’ +[ +dœ +], 0, + +951 ( +¹e_ù_tý_¡©e +)); + +955 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + = +šdex +; + +956 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_dœ + = +dœ +; + +957 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_£q + = +£Á_£q +; + +958 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_’d + = + +959 + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +960 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_wš + = + +961 + `¹e_bsw­16 +( +týh—d” +-> +rx_wš +); + +971 ià( +šdex + =ð +RTE_CT_TCP_SYN_FLAG + && + +972 +dœ + =ð +RTE_CT_DIR_ORIGINAL +) { + +973  +¹e_ù_tý_¡©e + +£’ +; + +976 + `¹e_ù_check_fÜ_sÿlšg_ªd_§ck_³rm +( +pkt +, & +£’ +, + +977 +_hdr_size +); + +980 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_æags + = +£’ +. +æags +; + +981 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_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ý_ù_d©a +. +Ï¡_æ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ý_ù_d©a +. +Ï¡_dœ + !ð +dœ + && + +1005 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + == + +1006 +RTE_CT_TCP_SYN_FLAG + + +1007 && ( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. + +1008 +Ï¡_æags + & +RTE_CT_EXP_CHALLENGE_ACK +)) { + +1010 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_æ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ý_ù_d©a +. +£’ +[! +dœ +]. +æags + & + +1026 +RTE_CT_TCP_FLAG_MAXACK_SET +) && + +1027 + `¹e_befÜe +( +£Á_£q +, +cd +-> +ù_´ÙocÞ +. + +1028 +tý_ù_d©a +. +£’ +[! +dœ +]. +maxack +)) { + +1030 +ù +-> +couÁ”s +-> +pkts_drÝ_šv®id_r¡ +++; + +1032  +RTE_CT_DROP_PACKET +; + +1035 ià((( +cd +-> +cÚn¡©us + =ð +RTE_SEEN_REPLY_CONN + && + +1036 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + == + +1037 +RTE_CT_TCP_SYN_FLAG +) || + +1038 ( +cd +-> +cÚn¡©us + !ð +RTE_ASSURED_CONN + && + +1039 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + == + +1040 +RTE_CT_TCP_ACK_FLAG +)) && + +1041 +»cv_ack + == + +1042 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_’d +) { + +1045 +check_wšdow + = 0; + +1054 ià( + `lik–y +( +check_wšdow +)) { + +1055 ià( + `uÆik–y +(! + `¹e_ù_tý_š_wšdow +( +cd +, +ù +, + +1056 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +1057 +dœ +, +šdex +, + +1058 +pkt +, +_hdr_size +))) { + +1059 +ù +-> +couÁ”s +-> +pkts_drÝ_outof_wšdow +++; + +1060  +RTE_CT_DROP_PACKET +; + +1064 ià( +Ãw_¡©e + =ð +RTE_CT_TCP_ESTABLISHED + && + +1065 +Þd_¡©e + !ð +RTE_CT_TCP_ESTABLISHED +) + +1068 +ù +-> +couÁ”s +-> +£ssiÚs_e¡ablished +++; + +1070 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_šdex + = +šdex +; + +1071 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_dœ + = +dœ +; + +1073 ià( +šdex + =ð +RTE_CT_TCP_SAK_FLAG +) + +1074 +cd +-> +cÚn¡©us + = +RTE_SEEN_REPLY_CONN +; + +1076 +timeout_¡©e + = +Ãw_¡©e +; + +1078 ià( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +»Œªs + >= + +1079 +ù +-> +misc_ÝtiÚs +. +tý_max_»Œªs +) + +1080 +timeout_¡©e + = + +1081 + `¹e_ù_choo£_mš_timeout_¡©e +( +ù +, +timeout_¡©e +, + +1082 +RTE_CT_TCP_RETRANS +); + +1083 ià( + `¹e_ù_e™h”_dœeùiÚ_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 +-> +cÚn¡©us + !ð +RTE_SEEN_REPLY_CONN +) { + +1090 ià( +týh—d” +-> +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 +-> +cÚn¡©us + !ð +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 +-> +cÚn¡©us + = +RTE_ASSURED_CONN +; + +1112 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +¡©e + = +Ãw_¡©e +; + +1113 + `¹e_ù_£t_úxn_tim”_fÜ_tý +( +ù +, +cd +, +timeout_¡©e +); + +1115  +»tuº_aùiÚ +; + +1116 + } +} + + @VIL/conntrack/rte_ct_tcp.h + +17 #iâdeà +__INCLUDE_RTE_CT_TCP_H__ + + +18  + #__INCLUDE_RTE_CT_TCP_H__ + + + ) + +19  + ~<¡dlib.h +> + +20  + ~<¡ršg.h +> + +21  + ~<š‰y³s.h +> + +23  + ~<¹e_tý.h +> + +24  + ~<¹e_pÜt.h +> + +25  + ~<¹e_tim”.h +> + +26  + ~<¹e_.h +> + +27  + ~<¹e_tý.h +> + +28  + ~<¹e_udp.h +> + +29  + ~<¹e_pÜt.h +> + +30  + ~<¹e_by‹Üd”.h +> + +31  + ~"¹e_úxn_Œackšg.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 + e¹e_ù_·ck‘_aùiÚ + { + +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 + e¹e_ù_cÚn¡©us + { + +77 + mRTE_INIT_CONN +, + +78 + mRTE_SEEN_REPLY_CONN +, + +79 + mRTE_ASSURED_CONN + + +84 cÚ¡ *cÚ¡ + g¹e_ù_tý_Çmes +[] = { + +100 cÚ¡ *cÚ¡ + g¹e_ù_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 + e¹e_ù_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 + e¹e_ù_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 + e¹e_ù_pkt_dœeùiÚ + { + +170 + mRTE_CT_DIR_ORIGINAL +, + +171 + mRTE_CT_DIR_REPLY + + +174  + s¹e_ù_tý_¡©e + { + +175 +ušt32_t + + m’d +; + +176 +ušt32_t + + mmax’d +; + +177 +ušt32_t + + mmaxwš +; + +178 +ušt32_t + + mmaxack +; + +179 +ušt8_t + + msÿË +; + +180 +ušt8_t + + mæags +; + +183  + s¹e_syÅroxy_ÝtiÚs + { + +184 +ušt8_t + + mÝtiÚs +; + +185 +ušt8_t + + mwšdow_sÿË +; + +186 +ušt16_t + + mmss +; + +187 +ušt32_t + + mts_v® +; + +188 +ušt32_t + + mts_echo_»¶y +; + +189 +ušt16_t + + mš™Ÿl_wšdow +; + +192  + sù_¥_úxn_d©a + { + +196  +¹e_mbuf + * + mbufã»d_pkt_li¡ +; + +197 +ušt32_t + + mÜigš®_¥ooãd_£q +; + +199 +ušt32_t + + m£q_diff +; + +200  +¹e_syÅroxy_ÝtiÚs + + múxn_ÝtiÚs +; + +202 +ušt8_t + + msyÅrox›d +; + +203 +boÞ + + mh®f_e¡ablished +; + +205 +boÞ + + múxn_e¡ablished +; + +208  + s¹e_ù_tý + { + +209  +¹e_ù_tý_¡©e + + m£’ +[2]; + +210 +ušt8_t + + m¡©e +; + +211 +ušt8_t + + mÏ¡_dœ +; + +214 +ušt8_t + + m»Œªs +; + +215 +ušt8_t + + mÏ¡_šdex +; + +216 +ušt32_t + + mÏ¡_£q +; + +217 +ušt32_t + + mÏ¡_ack +; + +218 +ušt32_t + + mÏ¡_’d +; + +219 +ušt16_t + + mÏ¡_wš +; + +221 +ušt8_t + + mÏ¡_wsÿË +; + +222 +ušt8_t + + mÏ¡_æags +; + +230  + s¹e_ù_úxn_couÁ”s + { + +231 +ušt64_t + + m·ck‘s_»ûived +; + +232 +ušt64_t + + m·ck‘s_fÜw¬ded +; + +233 +ušt64_t + + m·ck‘s_drݳd +; + +236  + s¹e_ù_´Ùo + { + +237  +¹e_ù_tý + + mtý_ù_d©a +; + +238  +ù_¥_úxn_d©a + + msyÅroxy_d©a +; + +248  + s¹e_ù_úxn_d©a + { + +252  +¹e_tim” + + mtim” +; + +254  +¹e_ù_úxn_couÁ”s + + mcouÁ”s +; + +258 +ušt32_t + + mkey +[10]; + +260  +¹e_ù_´Ùo + + mù_´ÙocÞ +; + +263 +ušt64_t + + mex³ùed_timeout +; + +266 +ušt8_t + + m¡©e_u£d_fÜ_tim” +; + +269 +ušt8_t + + mkey_is_þ›Á_Üd” +; + +270 +ušt8_t + + mcÚn¡©us +; + +271 +ušt8_t + + m´ÙocÞ +; + +273 +ušt8_t + + mty³ +; + +276 +ušt8_t + + m®g_by·ss_æag +; + +278 +ušt8_t + + m£rv”_dœeùiÚ +; + +279 +št16_t + + mtýSeqdiff +; + +281 +ušt8_t + + máp_£ssiÚ_ty³ +; + +282 +ušt32_t + + mtý_·ylßd_size +; + +283 +št16_t + + m£q_þ›Á +; + +284 +št16_t + + mack_þ›Á +; + +285 +št16_t + + m£q_£rv” +; + +286 +št16_t + + mack_£rv” +; + +288 } + g__¹e_ÿche_®igÃd +; + +291  + #RTE_CT_TCP_MAX_RETRANS + 3 + + ) + +293  + s¹e_ù_týtimeout + { + +295 +ušt64_t + + mtý_timeouts +[ +RTE_CT_TCP_MAX + + 1]; + +299  + s¹e_ù_misc_ÝtiÚs + { + +300 +ušt8_t + + msyÅroxy_’abËd +; + +301 +ušt32_t + + mtý_loo£ +; + +302 +ušt32_t + + mtý_be_lib”® +; + +303 +ušt32_t + + mtý_max_»Œªs +; + +306  + s¹e_ù_ud±imeout + { + +307 +ušt64_t + + mudp_timeouts +[ +RTE_CT_UDP_MAX + + 1]; + +310  + s¹e_ù_timeout + { + +311  +¹e_ù_týtimeout + + mtýtimeout +; + +312  +¹e_ù_ud±imeout + + mud±imeout +; + +315  + s¹e_ù_úxn_Œack” + { + +316  +¹e_hash + * + mrhash +; + +322 +ušt32_t + + mhash_keys +[ +RTE_HASH_LOOKUP_BULK_MAX +][10]; + +325 * + mhash_key_±rs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +326 #ifdeà +CT_CGNAT + + +327 +ušt32_t + + mpos™iÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +330 +ušt32_t + + mnum_úxn_’Œ›s +; + +336  +¹e_ù_úxn_d©a + * + mhash_bË_’Œ›s +; + +337  +¹e_CT_couÁ”_block + * + mcouÁ”s +; + +339 +ušt64_t + + mh”tz +; + +340 +ušt64_t + + mtimšg_cyþes_³r_timšg_¡• +; + +341 +ušt64_t + + mtimšg_100ms_¡•s +; + +342 +ušt64_t + + mtimšg_100ms_¡•s_´evious +; + +343 +ušt64_t + + mtimšg_Ï¡_time +; + +344  +¹e_ù_timeout + + mù_timeout +; + +345  +¹e_ù_misc_ÝtiÚs + + mmisc_ÝtiÚs +; + +347  + mÇme +[16]; + +348  +¹e_ù_úxn_d©a + * + mÃw_cÚÃùiÚs +[64]; + +349  +¹e_mbuf + * + mbufã»d_pkt_li¡ +; + +350  + mϋ¡_cÚÃùiÚ +; + +352 +ušt16_t + + mpoš‹r_off£t +; + +353 } + g__¹e_ÿche_®igÃd +; + +360 +¹e_ù_·ck‘_aùiÚ + + +361 +¹e_ù_tý_Ãw_cÚÃùiÚ +( + +362  +¹e_ù_úxn_Œack” + * +š¡ +, + +363  +¹e_ù_úxn_d©a + * +úxn +, + +364  +¹e_mbuf + * +pkt +, + +365  +u£_syÅroxy +, + +366 +ušt8_t + +_hdr_size +); + +373 +¹e_ù_·ck‘_aùiÚ + + +374 +¹e_ù_v”ify_tý_·ck‘ +( + +375  +¹e_ù_úxn_Œack” + * +š¡ +, + +376  +¹e_ù_úxn_d©a + * +úxn +, + +377  +¹e_mbuf + * +pkt +, + +378 +ušt8_t + +key_was_杳d +, + +379 +ušt8_t + +_hdr_size +); + +386 +ušt8_t + + +387 +¹e_ù_udp_Ãw_cÚÃùiÚ +( + +388  +¹e_ù_úxn_Œack” + * +ù +, + +389  +¹e_ù_úxn_d©a + * +cd +, + +390  +¹e_mbuf + * +pkt +); + +397 +¹e_ù_·ck‘_aùiÚ + + +398 +¹e_ù_udp_·ck‘ +( + +399  +¹e_ù_úxn_Œack” + * +ù +, + +400  +¹e_ù_úxn_d©a + * +cd +, + +401  +¹e_mbuf + * +pkt +, + +402 +ušt8_t + +key_was_杳d +); + +411 +¹e_ù_£t_úxn_tim”_fÜ_tý +( + +412  +¹e_ù_úxn_Œack” + * +ù +, + +413  +¹e_ù_úxn_d©a + * +cd +, + +414 +ušt8_t + +tý_¡©e +); + +417 +¹e_ù_£t_úxn_tim”_fÜ_udp +( + +418  +¹e_ù_úxn_Œack” + * +ù +, + +419  +¹e_ù_úxn_d©a + * +cd +, + +420 +ušt8_t + +tý_¡©e +); + +423  +¹e_ù_ÿnûl_úxn_tim” +( +¹e_ù_úxn_d©a + * +cd +); + +435 +¹e_¥_cvt_to_¥ooãd_þ›Á_syÇck +( +¹e_ù_úxn_d©a + * +cd +, + +436  +¹e_mbuf + * +Þd_pkt +); + +439 +¹e_¥_cvt_to_¥ooãd_£rv”_syn +( +¹e_ù_úxn_d©a + * +cd +, + +440  +¹e_mbuf + * +Þd_pkt +); + +443 +¹e_¥_cvt_to_¥ooãd_£rv”_ack +( +¹e_ù_úxn_d©a + * +cd +, + +444  +¹e_mbuf + * +Þd_pkt +); + +451 +¹e_¥_adju¡_þ›Á_ack_befÜe_wšdow_check +( + +452  +¹e_ù_úxn_d©a + * +cd +, + +453 * +i_hdr +, + +454  +tý_hdr + * +thdr +, + +455 +¹e_ù_pkt_dœeùiÚ + +dœ +); + +458 +¹e_¥_adju¡_£rv”_£q_aá”_wšdow_check +( + +459  +¹e_ù_úxn_d©a + * +cd +, + +460 * +i_hdr +, + +461  +tý_hdr + * +thdr +, + +462 +¹e_ù_pkt_dœeùiÚ + +dœ +); + +468 +¹e_¥_·r£_ÝtiÚs +( +¹e_mbuf + * +pkt +,  +¹e_ù_úxn_d©a + * +cd +); + +474 +¹e_ù_bufãr_·ck‘ +( + +475  +¹e_ù_úxn_Œack” + * +ù +, + +476  +¹e_ù_úxn_d©a + * +cd +, + +477  +¹e_mbuf + * +pkt +); + +480 +¹e_ù_»Ëa£_bufã»d_·ck‘s +( + +481  +¹e_ù_úxn_Œack” + * +ù +, + +482  +¹e_ù_úxn_d©a + * +cd +); + + @VIL/conntrack/rte_ct_udp.c + +17  + ~<¡dlib.h +> + +18  + ~<¡ršg.h +> + +19  + ~"¹e_ù_tý.h +" + +20  + ~"¹e_úxn_Œackšg.h +" + +22 +ušt8_t + + $¹e_ù_udp_Ãw_cÚÃùiÚ +( +__¹e_unu£d +  +¹e_ù_úxn_Œack” + * +ù +, + +23  +¹e_ù_úxn_d©a + * +cd +, + +24 +__¹e_unu£d +  +¹e_mbuf + * +pkt +) + +27 +cd +-> +cÚn¡©us + = +RTE_INIT_CONN +; + +29 + } +} + +30 +¹e_ù_·ck‘_aùiÚ + + $¹e_ù_udp_·ck‘ +( +¹e_ù_úxn_Œack” + * +ù +, + +31  +¹e_ù_úxn_d©a + * +cd +, + +32 +__¹e_unu£d +  +¹e_mbuf + * +pkt +, + +33 +ušt8_t + +key_was_杳d +) + +35 +¹e_ù_pkt_dœeùiÚ + +dœ +; + +37 +dœ + = ( +cd +-> +key_is_þ›Á_Üd” + =ð! +key_was_杳d +); + +39 ià( +dœ + =ð +RTE_CT_DIR_REPLY + && + +40 +cd +-> +cÚn¡©us + =ð +RTE_INIT_CONN +) { + +41 + `¹e_ù_£t_úxn_tim”_fÜ_udp +( +ù +, +cd +, +RTE_CT_UDP_REPLIED +); + +42 +cd +-> +cÚn¡©us + = +RTE_ASSURED_CONN +; + +43 } ià( +dœ + =ð +RTE_CT_DIR_REPLY + && + +44 +cd +-> +cÚn¡©us + =ð +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  + ~<š‹rçû.h +> + +18  + ~"tsx.h +" + +19 +š‹rçû_maš_t + +ifm +; + +20 +ušt8_t + +ifm_debug +; + +21  +USE_RTM_LOCKS +; + +22 +¹e_rwlock_t + +rwlock +; + +24  + $ifm_bÚd_pÜt_ü—‹ +(cÚ¡ * +Çme +,  +mode +, +pÜt_cÚfig_t + * +pÜtcÚf +) + +26  +pÜt_id +; + +27 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +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: Param‚ame 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 0o 6\n\r", + +38 +__FUNCTION__ +); + +39  +IFM_FAILURE +; + +41 ià( +pÜtcÚf + =ð +NULL +) { + +42 + `RTE_LOG +( +ERR +, +IFM +, "%s: Param…ortconf cannot be NULL\n\r", + +43 +__FUNCTION__ +); + +44  +IFM_FAILURE +; + +46 +bÚd_pÜt + = + `ifm_g‘_pÜt_by_Çme +( +Çme +); + +47 ià( +bÚd_pÜt + =ð +NULL +) { + +48 ià( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +49 + `RTE_LOG +( +INFO +, +IFM +, "C®Èifm_pÜt_£tu°%s\n\r", +Çme +); + +50 +pÜt_id + = + `¹e_‘h_bÚd_ü—‹ +( +Çme +, +mode +, 0); + +51 ià( +pÜt_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 +, +pÜt_id +, + +60 + `¹e_‘h_dev_sock‘_id +( +pÜt_id +), +mode +); + +62 +bÚd_pÜt + = ( +l2_phy_š‹rçû_t + *è + `¹e_zm®loc +( +NULL +, + +64 ( +l2_phy_š‹rçû_t +), + +65 +RTE_CACHE_LINE_SIZE +); + +66 +bÚd_pÜt +-> +pmdid + = +pÜt_id +; + +67 + `¡ºýy +( +bÚd_pÜt +-> +iâame +, +Çme +, +IFM_IFNAME_LEN +); + +68 + `memýy +(& +bÚd_pÜt +-> +pÜt_cÚfig +, +pÜtcÚf +, + +69 ( +pÜt_cÚfig_t +)); + +70 +bÚd_pÜt +-> +æags + |ð +IFM_MASTER +; + +71  +bÚd_pÜt + * +bÚd_šfo +; + +72 +bÚd_šfo + = ( +bÚd_pÜt + *) + `¹e_zm®loc +( +NULL +, + +74 +bÚd_pÜt +), + +75 +RTE_CACHE_LINE_SIZE +); + +76 +bÚd_šfo +-> +sock‘_id + = + `¹e_‘h_dev_sock‘_id +( +pÜt_id +); + +77 +bÚd_šfo +-> +mode + = mode; + +78 +bÚd_šfo +-> +bÚd_pÜtid + = +pÜt_id +; + +79 +bÚd_pÜt +-> +bÚd_cÚfig + = +bÚd_šfo +; + +80 ià( +mode + =ð +IFM_BONDING_MODE_8023AD +) + +81 +bÚd_pÜt +-> +tx_buf_Ën + = + +82 (2 * + `RTE_ETH_TX_BUFFER_SIZE +( +IFM_BURST_SIZE +)) * + +83 +RTE_MAX_ETHPORTS +; + +85 +ifm +. +pÜt_li¡ +[ +pÜt_id +] = +bÚd_pÜt +; + +86 ià( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +87 + `RTE_LOG +( +INFO +, +IFM +, + +89 +__FUNCTION__ +, +Çme +, +pÜt_id +); + +91 + `RTE_LOG +( +INFO +, +IFM +, "%s: Port %s‡lreadyƒxists inhe" + +92 "…܈li¡\n\r", +__FUNCTION__ +, +Çme +); + +93 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +94 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring†ock @ %d\n\r", + +95 +__FUNCTION__ +, +__LINE__ +); + +96 ià( +USE_RTM_LOCKS +) + +97 + `¹m_lock +(); + +99 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +101 ià(!( +bÚd_pÜt +-> +æags + & +IFM_MASTER +)) { + +102 + `RTE_LOG +( +ERR +, +IFM +, "%s: Previously…ort %s was‚ot " + +103 "cÚfigu»d‡ BÚd…Üt\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_uÆock +(); + +112 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +113  +IFM_FAILURE +; + +115 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +mode + != mode) { + +116 ià( + `¹e_‘h_bÚd_mode_£t +( +bÚd_pÜt +-> +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_uÆock +(); + +126 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +127  +IFM_FAILURE +; + +130 +bÚd_pÜt +-> +bÚd_cÚfig +-> +mode + = + +131 + `¹e_‘h_bÚd_mode_g‘ +( +bÚd_pÜt +-> +pmdid +); + +133 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy + = + +134 + `¹e_‘h_bÚd_xm™_pÞicy_g‘ +( +bÚd_pÜt +-> +pmdid +); + +135 ià( +ifm_debug + && +IFM_DEBUG_CONFIG +) + +136 + `RTE_LOG +( +INFO +, +IFM +, + +138 "\n\r", +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +, + +139 +bÚd_pÜt +-> +bÚd_cÚfig +-> +mode +, + +140 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy +); + +142 +pÜt_id + = +bÚd_pÜt +-> +pmdid +; + +143 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +144 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring†ock @ %d\n\r", + +145 +__FUNCTION__ +, +__LINE__ +); + +146 ià( +USE_RTM_LOCKS +) + +147 + `¹m_uÆock +(); + +149 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +151  +pÜt_id +; + +152 + } +} + +154  + $ifm_bÚd_pÜt_d–‘e +(cÚ¡ * +Çme +) + +156 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +157 ià( +Çme + =ð +NULL +) { + +158 + `RTE_LOG +( +ERR +, +IFM +, "%s: Param‚ame cannot be NULL\n\r", + +159 +__FUNCTION__ +); + +160  +IFM_FAILURE +; + +162 +bÚd_pÜt + = + `ifm_g‘_pÜt_by_Çme +( +Çme +); + +163 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +164 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +165 +__FUNCTION__ +, +__LINE__ +); + +166 ià( +USE_RTM_LOCKS +) + +167 + `¹m_lock +(); + +169 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +170 ià( +bÚd_pÜt + =ð +NULL +) { + +171 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort with‚ame %s‚ot" + +172 " found iÀthli¡\n\r", +__FUNCTION__ +, +Çme +); + +173  +IFM_FAILURE +; + +175 ià(!( +bÚd_pÜt +-> +æags + & +IFM_MASTER +)) { + +176 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %s is‚ot " + +177 "cÚfigu»d i nÙ bÚd…Üt\n\r", +__FUNCTION__ +, +Çme +); + +178 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +179 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +180 +__FUNCTION__ +, +__LINE__ +); + +181 ià( +USE_RTM_LOCKS +) { + +182 + `¹m_uÆock +(); + +184 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +186  +IFM_FAILURE +; + +188 ià( +bÚd_pÜt +-> +bÚd_cÚfig + && bÚd_pÜt->bÚd_cÚfig-> +¦ave_couÁ + > 0) { + +189 + `RTE_LOG +( +ERR +, +IFM +, "%s: First unbind‡ll slave " + +190 "pÜt äomhbÚd…܈%s\n\r", +__FUNCTION__ +, +Çme +); + +191 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +192 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +193 +__FUNCTION__ +, +__LINE__ +); + +194 ià( +USE_RTM_LOCKS +) { + +195 + `¹m_uÆock +(); + +197 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +199  +IFM_FAILURE +; + +201  +»t +; + +202 +»t + = + `¹e_‘h_bÚd_ä“ +( +Çme +); + +203 ià( +»t + < 0) { + +204 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo delete " + +205 "bÚd…܈%s\n\r", +__FUNCTION__ +, +Çme +); + +206 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +207 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +208 +__FUNCTION__ +, +__LINE__ +); + +209 ià( +USE_RTM_LOCKS +) { + +210 + `¹m_uÆock +(); + +212 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +214  +IFM_FAILURE +; + +216 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +217 + `RTE_LOG +( +INFO +, +IFM +, "%s: Bond…ort %s deleted successfully\n\r", + +218 +__FUNCTION__ +, +Çme +); + +220 ià( +bÚd_pÜt + && bÚd_pÜt-> +bÚd_cÚfig + !ð +NULL +) { + +221 + `¹e_ä“ +( +bÚd_pÜt +-> +bÚd_cÚfig +); + +222 +bÚd_pÜt +-> +bÚd_cÚfig + = +NULL +; + +224 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +225 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +226 +__FUNCTION__ +, +__LINE__ +); + +227 ià( +USE_RTM_LOCKS +) + +228 + `¹m_uÆock +(); + +230 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +231 + `ifm_»move_pÜt_d‘ažs +( +bÚd_pÜt +-> +pmdid +); + +233  +IFM_SUCCESS +; + +234 + } +} + +236  + $ifm_add_¦ave_pÜt +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +) + +238 +l2_phy_š‹rçû_t + * +bÚd_pÜt +, * +¦ave_pÜt +; + +239 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +241 +¦ave_pÜt + = + `ifm_g‘_pÜt +( +¦ave_pÜt_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__ +, +bÚded_pÜt_id +, +¦ave_pÜt_id +); + +246 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +247 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +248 +__FUNCTION__ +, +__LINE__ +); + +249 ià( +USE_RTM_LOCKS +) { + +250 + `¹m_lock +(); + +252 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +254 ià( +bÚd_pÜt + =ð +NULL +) { + +255 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +256 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +257 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +258 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +259 +__FUNCTION__ +, +__LINE__ +); + +260 ià( +USE_RTM_LOCKS +) { + +261 + `¹m_uÆock +(); + +263 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +265  +IFM_FAILURE +; + +267 ià( +¦ave_pÜt + =ð +NULL +) { + +268 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave…ort %u is‚ot‡vailable in " + +269 "p܈li¡.\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +); + +270 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +271 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +272 +__FUNCTION__ +, +__LINE__ +); + +273 ià( +USE_RTM_LOCKS +) { + +274 + `¹m_uÆock +(); + +276 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +278  +IFM_FAILURE +; + +280 ià( +bÚd_pÜt + && !(bÚd_pÜt-> +æags + & +IFM_MASTER +)) { + +281 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot configured " + +282 "a Ma¡”…Üt. %u\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +, + +283 +bÚd_pÜt +-> +æags + & +IFM_MASTER +); + +284 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +285 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +286 +__FUNCTION__ +, +__LINE__ +); + +287 ià( +USE_RTM_LOCKS +) { + +288 + `¹m_uÆock +(); + +290 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +292  +IFM_FAILURE +; + +294 ià( +bÚd_pÜt + && bÚd_pÜt-> +bÚd_cÚfig + + +295 && +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦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 WR†ock @ %d\n\r", + +301 +__FUNCTION__ +, +__LINE__ +); + +302 ià( +USE_RTM_LOCKS +) { + +303 + `¹m_uÆock +(); + +305 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +307  +IFM_FAILURE +; + +309 ià( +¦ave_pÜt + && sÏve_pÜt-> +æags + & +IFM_SLAVE +) { + +311 ià( +¦ave_pÜt +-> +bÚd_cÚfig + !ð +NULL +) { + +312 ià( +bÚded_pÜt_id + != + +313 +¦ave_pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +) { + +314 + `RTE_LOG +( +ERR +, +IFM +, + +317 +__FUNCTION__ +, +¦ave_pÜt_id +, + +318 +¦ave_pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +); + +319 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +320 + `RTE_LOG +( +INFO +, +IFM +, + +322 +__FUNCTION__ +, +__LINE__ +); + +323 ià( +USE_RTM_LOCKS +) { + +324 + `¹m_uÆock +(); + +326 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +328  +IFM_FAILURE +; + +330 ià( +ifm_debug + & +IFM_DEBUG +) + +331 + `RTE_LOG +( +INFO +, +IFM +, + +333 +__FUNCTION__ +, +¦ave_pÜt_id +, + +334 +bÚded_pÜt_id +); + +335 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +336 + `RTE_LOG +( +INFO +, +IFM +, + +338 +__FUNCTION__ +, +__LINE__ +); + +339 ià( +USE_RTM_LOCKS +) { + +340 + `¹m_uÆock +(); + +342 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +344  +IFM_SUCCESS +; + +348 ià( +bÚd_pÜt +-> +bÚd_cÚfig + && bÚd_pÜt->bÚd_cÚfig-> +¦ave_couÁ + && + +349 +bÚd_pÜt +-> +lšk_¥“d + !ð +¦ave_pÜt +->link_speed + +350 && +bÚd_pÜt +-> +lšk_du¶ex + !ð +¦ave_pÜt +->link_duplex) { + +351 + `RTE_LOG +( +ERR +, +IFM +, + +353 +__FUNCTION__ +); + +354 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +355 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +356 +__FUNCTION__ +, +__LINE__ +); + +357 ià( +USE_RTM_LOCKS +) { + +358 + `¹m_uÆock +(); + +360 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +362  +IFM_FAILURE +; + +364 ià( +ifm_debug + & +IFM_DEBUG +) + +365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Slave…ort %u Master…ort %u\n\r", + +366 +__FUNCTION__ +, +¦ave_pÜt_id +, +bÚded_pÜt_id +); + +367  +»t +; + +368 +»t + = + `¹e_‘h_bÚd_¦ave_add +( +bÚd_pÜt +-> +pmdid +, +¦ave_pÜt +->pmdid); + +369 ià( +»t + < 0) { + +370 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo‡dd slave…ort %uo bond " + +371 "p܈%u.\n\r", +__FUNCTION__ +, +¦ave_pÜt +-> +pmdid +, + +372 +bÚd_pÜt +-> +pmdid +); + +373 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +374 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +375 +__FUNCTION__ +, +__LINE__ +); + +376 ià( +USE_RTM_LOCKS +) { + +377 + `¹m_uÆock +(); + +379 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +381  +IFM_FAILURE +; + +383 +¦ave_pÜt +-> +æags + |ð +IFM_SLAVE +; + +385 ià( +bÚd_pÜt +-> +bÚd_cÚfig +) { + +386 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy + = + +387 + `¹e_‘h_bÚd_xm™_pÞicy_g‘ +( +bÚd_pÜt +-> +pmdid +); + +388 +bÚd_pÜt +-> +bÚd_cÚfig +-> +š‹º®_ms + = + +389 + `¹e_‘h_bÚd_lšk_mڙܚg_g‘ +( +bÚd_pÜt +-> +pmdid +); + +390 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_up_d–ay_ms + = + +391 + `¹e_‘h_bÚd_lšk_up_´Ý_d–ay_g‘ +( +bÚd_pÜt +-> +pmdid +); + +392 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_down_d–ay_ms + = + +393 + `¹e_‘h_bÚd_lšk_down_´Ý_d–ay_g‘ +( +bÚd_pÜt +-> +pmdid +); + +394 +bÚd_pÜt +-> +bÚd_cÚfig +-> +´im¬y + = + +395 + `¹e_‘h_bÚd_´im¬y_g‘ +( +bÚd_pÜt +-> +pmdid +); + +396 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ + = + +397 + `¹e_‘h_bÚd_¦aves_g‘ +( +bÚd_pÜt +-> +pmdid +, + +398 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦aves +, + +399 +RTE_MAX_ETHPORTS +); + +400 +bÚd_pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ + = + +401 + `¹e_‘h_bÚd_aùive_¦aves_g‘ +( +bÚd_pÜt +-> +pmdid +, + +402 +bÚd_pÜt +-> +bÚd_cÚfig +-> + +403 +aùive_¦aves +, + +404 +RTE_MAX_ETHPORTS +); + +405 +¦ave_pÜt +-> +bÚd_cÚfig + = +bÚd_pÜt +->bond_config; + +406 ià( +ifm_debug + & +IFM_DEBUG +) + +407 + `RTE_LOG +( +INFO +, +IFM +, "%s: Slave count is %u\n\r", + +408 +__FUNCTION__ +, + +409 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +); + +410 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ + == 1) { + +411 +»t + = + +412 + `ifm_pÜt_£tup +( +bÚd_pÜt +-> +pmdid +, + +413 &( +bÚd_pÜt +-> +pÜt_cÚfig +)); + +414 ià( +»t + < 0) { + +415 + `RTE_LOG +( +ERR +, +IFM +, + +417 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +418 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +419 + `RTE_LOG +( +INFO +, +IFM +, + +421 +__FUNCTION__ +, +__LINE__ +); + +422 ià( +USE_RTM_LOCKS +) { + +423 + `¹m_uÆock +(); + +425 + `¹e_rwlock_wr™e_uÆock +(& +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 WR†ock @ %d\n\r", + +437 +__FUNCTION__ +, +__LINE__ +); + +438 ià( +USE_RTM_LOCKS +) { + +439 + `¹m_uÆock +(); + +441 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +443  +IFM_SUCCESS +; + +444 + } +} + +446  + $ifm_»move_¦ave_pÜt +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +) + +448 +l2_phy_š‹rçû_t + * +bÚd_pÜt +, * +¦ave_pÜt +; + +450 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +452 +¦ave_pÜt + = + `ifm_g‘_pÜt +( +¦ave_pÜt_id +); + +455 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +456 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +457 +__FUNCTION__ +, +__LINE__ +); + +458 ià( +USE_RTM_LOCKS +) { + +459 + `¹m_lock +(); + +461 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +463 ià( +bÚd_pÜt + =ð +NULL +) { + +464 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable " + +465 "š…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +466 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +467 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +468 +__FUNCTION__ +, +__LINE__ +); + +469 ià( +USE_RTM_LOCKS +) + +470 + `¹m_uÆock +(); + +472 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +473  +IFM_FAILURE +; + +475 ià( +¦ave_pÜt + =ð +NULL +) { + +476 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave…ort %u is‚ot‡vailable " + +477 "š…܈li¡.\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +); + +478 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +479 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +480 +__FUNCTION__ +, +__LINE__ +); + +481 ià( +USE_RTM_LOCKS +) + +482 + `¹m_uÆock +(); + +484 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +485  +IFM_FAILURE +; + +487 ià( +bÚd_pÜt + && !(bÚd_pÜt-> +æags + & +IFM_MASTER +)) { + +488 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot configured " + +489 "a Ma¡”…Üt.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +490 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +491 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +492 +__FUNCTION__ +, +__LINE__ +); + +493 ià( +USE_RTM_LOCKS +) + +494 + `¹m_uÆock +(); + +496 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +497  +IFM_FAILURE +; + +499 ià( +¦ave_pÜt + && !(¦ave_pÜt-> +æags + & +IFM_SLAVE +)) { + +500 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave…ort %u is‚ot configured" + +501 "‡ ¦avpÜt.\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +); + +502 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +503 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +504 +__FUNCTION__ +, +__LINE__ +); + +505 ià( +USE_RTM_LOCKS +) + +506 + `¹m_uÆock +(); + +508 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +509  +IFM_FAILURE +; + +511  +i +; + +512  +found + = 0; + +513  +i + = 0; i < +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +; i++) { + +514 ià( +¦ave_pÜt_id + =ð +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦aves +[ +i +]) { + +515 +found + = 1; + +519 ià(! +found +) { + +520 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave…ort %u is‚ot binded " + +521 "w™h bÚd…܈%u\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +, + +522 +bÚded_pÜt_id +); + +523 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +524 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +525 +__FUNCTION__ +, +__LINE__ +); + +526 ià( +USE_RTM_LOCKS +) + +527 + `¹m_uÆock +(); + +529 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +530  +IFM_FAILURE +; + +532 ià( + `¹e_‘h_bÚd_¦ave_»move +( +bÚded_pÜt_id +, +¦ave_pÜt_id +) < 0) { + +533 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo unbind slave…ort %u" + +534 " from bÚd…܈%u\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +, + +535 +bÚded_pÜt_id +); + +536 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +537 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +538 +__FUNCTION__ +, +__LINE__ +); + +539 ià( +USE_RTM_LOCKS +) + +540 + `¹m_uÆock +(); + +542 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +543  +IFM_FAILURE +; + +545 +¦ave_pÜt +-> +æags + &ð~ +IFM_SLAVE +; + +546 +¦ave_pÜt +-> +bÚd_cÚfig + = +NULL +; + +547 +bÚd_pÜt +-> +bÚd_cÚfig +-> +´im¬y + = + +548 + `¹e_‘h_bÚd_´im¬y_g‘ +( +bÚd_pÜt +-> +pmdid +); + +549 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ + = + +550 + `¹e_‘h_bÚd_¦aves_g‘ +( +bÚd_pÜt +-> +pmdid +, + +551 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦aves +, + +552 +RTE_MAX_ETHPORTS +); + +553 +bÚd_pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ + = + +554 + `¹e_‘h_bÚd_aùive_¦aves_g‘ +( +bÚd_pÜt +-> +pmdid +, + +555 +bÚd_pÜt +-> +bÚd_cÚfig +-> + +556 +aùive_¦aves +, +RTE_MAX_ETHPORTS +); + +558 ià( +ifm_debug + & +IFM_DEBUG +) + +559 + `RTE_LOG +( +ERR +, +IFM +, "%s: Unbinded slave…ort %u fromhe bond " + +560 "p܈%u %d\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +, + +561 +bÚded_pÜt_id +, + +562 + `¹e_‘h_bÚd_´im¬y_g‘ +( +bÚd_pÜt +-> +pmdid +)); + +563 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +564 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +565 +__FUNCTION__ +, +__LINE__ +); + +566 ià( +USE_RTM_LOCKS +) + +567 + `¹m_uÆock +(); + +569 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +570  +IFM_SUCCESS +; + +571 + } +} + +573  + $£t_bÚd_mode +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +mode +) + +575 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +576 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +579 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +580 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +581 +__FUNCTION__ +, +__LINE__ +); + +582 ià( +USE_RTM_LOCKS +) + +583 + `¹m_lock +(); + +585 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +586 if( +bÚd_pÜt +) + +587 + `ifm_»move_pÜt_d‘ažs +( +bÚd_pÜt +-> +pmdid +); + +588 ià( +bÚd_pÜt + =ð +NULL +) { + +589 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +590 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +591  +IFM_FAILURE +; + +593 ià( +bÚd_pÜt + && bÚd_pÜt-> +bÚd_cÚfig +-> +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 WR†ock @ %d\n\r", + +600 +__FUNCTION__ +, +__LINE__ +); + +601 ià( +USE_RTM_LOCKS +) + +602 + `¹m_uÆock +(); + +604 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +605 + `ifm_»move_pÜt_d‘ažs +( +bÚd_pÜt +-> +pmdid +); + +606  +IFM_SUCCESS +; + +609 ià( + `¹e_‘h_bÚd_mode_£t +( +bÚd_pÜt +-> +pmdid +, +mode +) < 0) { + +610 + `RTE_LOG +( +ERR +, +IFM +, + +612 +__FUNCTION__ +, +mode +, +bÚd_pÜt +-> +pmdid +); + +613 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +614 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +615 +__FUNCTION__ +, +__LINE__ +); + +616 ià( +USE_RTM_LOCKS +) + +617 + `¹m_uÆock +(); + +619 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +620 + `ifm_»move_pÜt_d‘ažs +( +bÚd_pÜt +-> +pmdid +); + +621  +IFM_FAILURE +; + +624 +bÚd_pÜt +-> +bÚd_cÚfig +-> +mode + = + `¹e_‘h_bÚd_mode_g‘ +(bÚd_pÜt-> +pmdid +); + +626 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy + = + +627 + `¹e_‘h_bÚd_xm™_pÞicy_g‘ +( +bÚd_pÜt +-> +pmdid +); + +628 ià( +ifm_debug + & +IFM_DEBUG +) + +629 + `RTE_LOG +( +INFO +, +IFM +, + +631 "\n\r.", +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +, + +632 +bÚd_pÜt +-> +bÚd_cÚfig +-> +mode +, + +633 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy +); + +634 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +635 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +636 +__FUNCTION__ +, +__LINE__ +); + +637 ià( +USE_RTM_LOCKS +) + +638 + `¹m_uÆock +(); + +640 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +641 + `ifm_»move_pÜt_d‘ažs +( +bÚd_pÜt +-> +pmdid +); + +642  +IFM_SUCCESS +; + +643 + } +} + +645  + $g‘_bÚd_mode +( +ušt8_t + +bÚded_pÜt_id +) + +647 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +648 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +651 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +652 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +653 +__FUNCTION__ +, +__LINE__ +); + +654 ià( +USE_RTM_LOCKS +) { + +655 + `¹m_lock +(); + +657 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +659 ià( +bÚd_pÜt + =ð +NULL +) { + +660 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +661 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +662 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +663 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +664 +__FUNCTION__ +, +__LINE__ +); + +665 ià( +USE_RTM_LOCKS +) { + +666 + `¹m_uÆock +(); + +668 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +670  +IFM_FAILURE +; + +672 +ušt8_t + +mode + = +bÚd_pÜt +-> +bÚd_cÚfig +->mode; + +673 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +674 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +675 +__FUNCTION__ +, +__LINE__ +); + +676 ià( +USE_RTM_LOCKS +) { + +677 + `¹m_uÆock +(); + +679 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +681  +mode +; + +682 + } +} + +684  + $£t_bÚd_´im¬y +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +) + +686 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +687 +l2_phy_š‹rçû_t + * +¦ave_pÜt +; + +688 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +690 +¦ave_pÜt + = + `ifm_g‘_pÜt +( +¦ave_pÜt_id +); + +693 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +694 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +695 +__FUNCTION__ +, +__LINE__ +); + +696 ià( +USE_RTM_LOCKS +) + +697 + `¹m_lock +(); + +699 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +700 ià( +bÚd_pÜt + =ð +NULL +) { + +701 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +702 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +703 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +704 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +705 +__FUNCTION__ +, +__LINE__ +); + +706 ià( +USE_RTM_LOCKS +) + +707 + `¹m_uÆock +(); + +709 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +710  +IFM_FAILURE +; + +712 ià( +¦ave_pÜt + =ð +NULL +) { + +713 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave…ort %u is‚ot‡vailable in" + +714 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +715 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +716 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +717 +__FUNCTION__ +, +__LINE__ +); + +718 ià( +USE_RTM_LOCKS +) + +719 + `¹m_uÆock +(); + +721 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +722  +IFM_FAILURE +; + +724  +i +; + +725  +found + = 0; + +726  +i + = 0; i < +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +; i++) { + +727 ià( +¦ave_pÜt_id + =ð +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦aves +[ +i +]) { + +728 +found + = 1; + +732 ià(! +found +) { + +733 + `RTE_LOG +( +ERR +, +IFM +, "%s: Slave…ort %u is‚ot binded " + +735 +__FUNCTION__ +, +¦ave_pÜt_id +, +bÚded_pÜt_id +); + +736 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +737 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +738 +__FUNCTION__ +, +__LINE__ +); + +739 ià( +USE_RTM_LOCKS +) + +740 + `¹m_uÆock +(); + +742 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +743  +IFM_FAILURE +; + +746 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +´im¬y + =ð +¦ave_pÜt_id +) { + +747 ià( +ifm_debug + & +IFM_DEBUG +) + +748 + `RTE_LOG +( +INFO +, +IFM +, + +750 "%u\n\r.", +__FUNCTION__ +, +bÚded_pÜt_id +, + +751 +¦ave_pÜt_id +); + +752 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +753 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +754 +__FUNCTION__ +, +__LINE__ +); + +755 ià( +USE_RTM_LOCKS +) + +756 + `¹m_uÆock +(); + +758 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +759  +IFM_SUCCESS +; + +762 ià( + `¹e_‘h_bÚd_´im¬y_£t +( +bÚd_pÜt +-> +pmdid +, +¦ave_pÜt +->pmdid) < 0) { + +763 + `RTE_LOG +( +ERR +, +IFM +, + +765 +__FUNCTION__ +, +¦ave_pÜt +-> +pmdid +, +bÚd_pÜt +->pmdid); + +766 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +767 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +768 +__FUNCTION__ +, +__LINE__ +); + +769 ià( +USE_RTM_LOCKS +) + +770 + `¹m_uÆock +(); + +772 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +773  +IFM_FAILURE +; + +776 +bÚd_pÜt +-> +bÚd_cÚfig +-> +´im¬y + = + +777 + `¹e_‘h_bÚd_´im¬y_g‘ +( +bÚd_pÜt +-> +pmdid +); + +778 ià( +ifm_debug + & +IFM_DEBUG +) + +779 + `RTE_LOG +( +INFO +, +IFM +, + +781 +__FUNCTION__ +, +bÚd_pÜt +-> +bÚd_cÚfig +-> +´im¬y +, + +782 +bÚd_pÜt +-> +pmdid +); + +783 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +784 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +785 +__FUNCTION__ +, +__LINE__ +); + +786 ià( +USE_RTM_LOCKS +) + +787 + `¹m_uÆock +(); + +789 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +790  +IFM_SUCCESS +; + +791 + } +} + +793  + $g‘_bÚd_´im¬y_pÜt +( +ušt8_t + +bÚded_pÜt_id +) + +795 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +796 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +799 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +800 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +801 +__FUNCTION__ +, +__LINE__ +); + +802 ià( +USE_RTM_LOCKS +) { + +803 + `¹m_lock +(); + +805 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +807 ià( +bÚd_pÜt + =ð +NULL +) { + +808 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +809 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +810 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +811 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +812 +__FUNCTION__ +, +__LINE__ +); + +813 ià( +USE_RTM_LOCKS +) { + +814 + `¹m_uÆock +(); + +816 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +818  +IFM_FAILURE +; + +820 +ušt8_t + +´im¬y + = +bÚd_pÜt +-> +bÚd_cÚfig +->primary; + +821 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +822 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +823 +__FUNCTION__ +, +__LINE__ +); + +824 ià( +USE_RTM_LOCKS +) { + +825 + `¹m_uÆock +(); + +827 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +829  +´im¬y +; + +830 + } +} + +832  + $g‘_bÚd_¦ave_couÁ +( +ušt8_t + +bÚded_pÜt_id +) + +834 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +835 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +838 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +839 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +840 +__FUNCTION__ +, +__LINE__ +); + +841 ià( +USE_RTM_LOCKS +) { + +842 + `¹m_lock +(); + +844 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +846 ià( +bÚd_pÜt + =ð +NULL +) { + +847 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +848 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +849 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +850 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +851 +__FUNCTION__ +, +__LINE__ +); + +852 ià( +USE_RTM_LOCKS +) { + +853 + `¹m_uÆock +(); + +855 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +857  +IFM_FAILURE +; + +859 +ušt32_t + +¦ave_couÁ + = +bÚd_pÜt +-> +bÚd_cÚfig +->slave_count; + +860 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +861 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +862 +__FUNCTION__ +, +__LINE__ +); + +863 ià( +USE_RTM_LOCKS +) { + +864 + `¹m_uÆock +(); + +866 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +868  +¦ave_couÁ +; + +869 + } +} + +871  + $g‘_bÚd_aùive_¦ave_couÁ +( +ušt8_t + +bÚded_pÜt_id +) + +873 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +874 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +877 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +878 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +879 +__FUNCTION__ +, +__LINE__ +); + +880 ià( +USE_RTM_LOCKS +) { + +881 + `¹m_lock +(); + +883 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +885 ià( +bÚd_pÜt + =ð +NULL +) { + +886 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +887 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +888 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +889 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +890 +__FUNCTION__ +, +__LINE__ +); + +891 ià( +USE_RTM_LOCKS +) { + +892 + `¹m_uÆock +(); + +894 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +896  +IFM_FAILURE +; + +898 +ušt32_t + +¦ave_couÁ + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ +; + +899 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +900 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +901 +__FUNCTION__ +, +__LINE__ +); + +902 ià( +USE_RTM_LOCKS +) { + +903 + `¹m_uÆock +(); + +905 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +907  +¦ave_couÁ +; + +908 + } +} + +910  + $g‘_bÚd_¦aves +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦aves +[ +RTE_MAX_ETHPORTS +]) + +912 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +913 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +916 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +917 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +918 +__FUNCTION__ +, +__LINE__ +); + +919 ià( +USE_RTM_LOCKS +) { + +920 + `¹m_lock +(); + +922 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +924 ià( +bÚd_pÜt + =ð +NULL +) { + +925 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +926 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +927  +IFM_FAILURE +; + +929 + `memýy +( +¦aves +, +bÚd_pÜt +-> +bÚd_cÚfig +->slaves, + +930 +bÚd_pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +); + +931 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +932 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +933 +__FUNCTION__ +, +__LINE__ +); + +934 ià( +USE_RTM_LOCKS +) { + +935 + `¹m_uÆock +(); + +937 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +939  +IFM_SUCCESS +; + +940 + } +} + +942  + $g‘_bÚd_aùive_¦aves +( +ušt8_t + +bÚded_pÜt_id +, + +943 +ušt8_t + +aùive_¦aves +[ +RTE_MAX_ETHPORTS +]) + +945 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +946 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +949 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +950 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +951 +__FUNCTION__ +, +__LINE__ +); + +952 ià( +USE_RTM_LOCKS +) { + +953 + `¹m_lock +(); + +955 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +957 ià( +bÚd_pÜt + =ð +NULL +) { + +958 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +959 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +960  +IFM_FAILURE +; + +962 + `memýy +( +aùive_¦aves +, +bÚd_pÜt +-> +bÚd_cÚfig +->active_slaves, + +963 +bÚd_pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ +); + +964 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +965 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +966 +__FUNCTION__ +, +__LINE__ +); + +967 ià( +USE_RTM_LOCKS +) { + +968 + `¹m_uÆock +(); + +970 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +972  +IFM_SUCCESS +; + +973 + } +} + +975  + $£t_bÚd_mac_add»ss +( +ušt8_t + +bÚded_pÜt_id +,  +‘h”_addr + * +mac_addr +) + +977 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +978 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +981 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +982 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +983 +__FUNCTION__ +, +__LINE__ +); + +984 ià( +USE_RTM_LOCKS +) { + +985 + `¹m_lock +(); + +987 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +989 ià( +mac_addr + =ð +NULL +) { + +990 + `RTE_LOG +( +ERR +, +IFM +, "%s: MAC‡ddress cannot be NULL.\n\r", + +991 +__FUNCTION__ +); + +992 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +993 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +994 +__FUNCTION__ +, +__LINE__ +); + +995 ià( +USE_RTM_LOCKS +) { + +996 + `¹m_uÆock +(); + +998 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1000  +IFM_FAILURE +; + +1003 ià( +bÚd_pÜt + =ð +NULL +) { + +1004 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1005 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1006 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1007 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1008 +__FUNCTION__ +, +__LINE__ +); + +1009 ià( +USE_RTM_LOCKS +) { + +1010 + `¹m_uÆock +(); + +1012 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1014  +IFM_FAILURE +; + +1016 ià( + `¹e_‘h_bÚd_mac_add»ss_£t +( +bÚd_pÜt +-> +pmdid +, +mac_addr +) < 0) { + +1017 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set MAC‡ddr for…ort %u\n\r", + +1018 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1019 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1020 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1021 +__FUNCTION__ +, +__LINE__ +); + +1022 ià( +USE_RTM_LOCKS +) { + +1023 + `¹m_uÆock +(); + +1025 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1027  +IFM_FAILURE +; + +1029 + `¹e_‘h_maÿddr_g‘ +( +bÚd_pÜt +-> +pmdid +, + +1030 ( +‘h”_addr + *) +bÚd_pÜt +-> +maÿddr +); + +1031 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1032 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1033 +__FUNCTION__ +, +__LINE__ +); + +1034 ià( +USE_RTM_LOCKS +) { + +1035 + `¹m_uÆock +(); + +1037 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1039  +IFM_SUCCESS +; + +1040 + } +} + +1042  + $»£t_bÚd_mac_addr +( +ušt8_t + +bÚded_pÜt_id +) + +1044 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1045 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1048 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1049 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +1050 +__FUNCTION__ +, +__LINE__ +); + +1051 ià( +USE_RTM_LOCKS +) { + +1052 + `¹m_lock +(); + +1054 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1056 ià( +bÚd_pÜt + =ð +NULL +) { + +1057 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1058 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1059 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1060 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1061 +__FUNCTION__ +, +__LINE__ +); + +1062 ià( +USE_RTM_LOCKS +) { + +1063 + `¹m_uÆock +(); + +1065 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1067  +IFM_FAILURE +; + +1069 ià( + `¹e_‘h_bÚd_mac_add»ss_»£t +( +bÚd_pÜt +-> +pmdid +) < 0) { + +1070 + `RTE_LOG +( +ERR +, +IFM +, + +1072 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1073 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1074 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1075 +__FUNCTION__ +, +__LINE__ +); + +1076 ià( +USE_RTM_LOCKS +) { + +1077 + `¹m_uÆock +(); + +1079 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1081  +IFM_FAILURE +; + +1083 + `¹e_‘h_maÿddr_g‘ +( +bÚd_pÜt +-> +pmdid +, + +1084 ( +‘h”_addr + *) +bÚd_pÜt +-> +maÿddr +); + +1085 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1086 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1087 +__FUNCTION__ +, +__LINE__ +); + +1088 ià( +USE_RTM_LOCKS +) { + +1089 + `¹m_uÆock +(); + +1091 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1093  +IFM_FAILURE +; + +1094 + } +} + +1096  + $£t_bÚd_xm™pÞicy +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +pÞicy +) + +1099 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1100 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1102  +»t + = 0; + +1104 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1105 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +1106 +__FUNCTION__ +, +__LINE__ +); + +1107 ià( +USE_RTM_LOCKS +) { + +1108 + `¹m_lock +(); + +1110 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1112 ià( +bÚd_pÜt + =ð +NULL +) { + +1113 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1114 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1115 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1116 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1117 +__FUNCTION__ +, +__LINE__ +); + +1118 ià( +USE_RTM_LOCKS +) { + +1119 + `¹m_uÆock +(); + +1121 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1123  +IFM_FAILURE +; + +1125 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy + =ð +pÞicy +) { + +1126 ià( +ifm_debug + & +IFM_DEBUG +) + +1127 + `RTE_LOG +( +INFO +, +IFM +, + +1129 +__FUNCTION__ +, +bÚded_pÜt_id +); + +1130 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1131 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1132 +__FUNCTION__ +, +__LINE__ +); + +1133 ià( +USE_RTM_LOCKS +) { + +1134 + `¹m_uÆock +(); + +1136 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1138  +IFM_SUCCESS +; + +1140 ià( + `¹e_‘h_bÚd_xm™_pÞicy_£t +( +bÚd_pÜt +-> +pmdid +, +pÞicy +) < 0) { + +1141 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set…olicy for…ort %u\n\r", + +1142 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1143 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1144 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1145 +__FUNCTION__ +, +__LINE__ +); + +1146 ià( +USE_RTM_LOCKS +) { + +1147 + `¹m_uÆock +(); + +1149 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1151  +IFM_FAILURE +; + +1153 +»t + = + `¹e_‘h_bÚd_xm™_pÞicy_g‘ +( +bÚd_pÜt +-> +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 WR†ock @ %d\n\r", + +1161 +__FUNCTION__ +, +__LINE__ +); + +1162 ià( +USE_RTM_LOCKS +) { + +1163 + `¹m_uÆock +(); + +1165 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1167  +IFM_FAILURE +; + +1169 +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy + = +pÞicy +; + +1170 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1171 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1172 +__FUNCTION__ +, +__LINE__ +); + +1173 ià( +USE_RTM_LOCKS +) { + +1174 + `¹m_uÆock +(); + +1176 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1178  +IFM_SUCCESS +; + +1179 + } +} + +1181  + $g‘_bÚd_xm™pÞicy +( +ušt8_t + +bÚded_pÜt_id +) + +1183 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1185 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1187 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1188 + `RTE_LOG +( +INFO +, +IFM +, "%s: RD Acquiring†ock @ %d\n\r", + +1189 +__FUNCTION__ +, +__LINE__ +); + +1190 ià( +USE_RTM_LOCKS +) { + +1191 + `¹m_lock +(); + +1193 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1195 ià( +bÚd_pÜt + =ð +NULL +) { + +1196 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1197 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1198 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1199 + `RTE_LOG +( +INFO +, +IFM +, "%s:Releasing RD†ock @ %d\n\r", + +1200 +__FUNCTION__ +, +__LINE__ +); + +1201 ià( +USE_RTM_LOCKS +) { + +1202 + `¹m_uÆock +(); + +1204 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1206  +IFM_FAILURE +; + +1208 +ušt8_t + +pÞicy + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy +; + +1209 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1210 + `RTE_LOG +( +INFO +, +IFM +, "%s:Releasing RD†ock @ %d\n\r", + +1211 +__FUNCTION__ +, +__LINE__ +); + +1212 ià( +USE_RTM_LOCKS +) { + +1213 + `¹m_uÆock +(); + +1215 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1217  +pÞicy +; + +1218 + } +} + +1220  + $£t_bÚd_lšk_mÚt™Ü_äequ’cy +( +ušt8_t + +bÚded_pÜt_id +, + +1221 +ušt32_t + +š‹º®_ms +) + +1223 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1224 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1225 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +1226 +__FUNCTION__ +, +__LINE__ +); + +1227 ià( +USE_RTM_LOCKS +) { + +1228 + `¹m_lock +(); + +1230 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1233 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1234  +»t + = 0; + +1236 ià( +bÚd_pÜt + =ð +NULL +) { + +1237 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1238 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1239 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1240 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1241 +__FUNCTION__ +, +__LINE__ +); + +1242 ià( +USE_RTM_LOCKS +) { + +1243 + `¹m_uÆock +(); + +1245 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1247  +IFM_FAILURE +; + +1249 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +š‹º®_ms + == internal_ms) { + +1250 ià( +ifm_debug + & +IFM_DEBUG +) + +1251 + `RTE_LOG +( +INFO +, +IFM +, + +1253 +__FUNCTION__ +, +bÚded_pÜt_id +); + +1254 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1255 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1256 +__FUNCTION__ +, +__LINE__ +); + +1257 ià( +USE_RTM_LOCKS +) { + +1258 + `¹m_uÆock +(); + +1260 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1262  +IFM_SUCCESS +; + +1264 ià( + `¹e_‘h_bÚd_lšk_mڙܚg_£t +( +bÚd_pÜt +-> +pmdid +, +š‹º®_ms +) < 0) { + +1265 + `RTE_LOG +( +ERR +, +IFM +, + +1267 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1268 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1269 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1270 +__FUNCTION__ +, +__LINE__ +); + +1271 ià( +USE_RTM_LOCKS +) { + +1272 + `¹m_uÆock +(); + +1274 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1276  +IFM_FAILURE +; + +1278 +»t + = + `¹e_‘h_bÚd_lšk_mڙܚg_g‘ +( +bÚd_pÜt +-> +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 WR†ock @ %d\n\r", + +1286 +__FUNCTION__ +, +__LINE__ +); + +1287 ià( +USE_RTM_LOCKS +) { + +1288 + `¹m_uÆock +(); + +1290 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1292  +IFM_FAILURE +; + +1294 +bÚd_pÜt +-> +bÚd_cÚfig +-> +š‹º®_ms + = internal_ms; + +1295 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1296 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1297 +__FUNCTION__ +, +__LINE__ +); + +1298 ià( +USE_RTM_LOCKS +) { + +1299 + `¹m_uÆock +(); + +1301 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1303  +IFM_SUCCESS +; + +1304 + } +} + +1306  + $g‘_bÚd_lšk_mڙÜ_äequ’cy +( +ušt8_t + +bÚded_pÜt_id +) + +1308 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1310 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1312 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1313 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +1314 +__FUNCTION__ +, +__LINE__ +); + +1315 ià( +USE_RTM_LOCKS +) { + +1316 + `¹m_lock +(); + +1318 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1320 ià( +bÚd_pÜt + =ð +NULL +) { + +1321 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1322 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1323 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1324 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1325 +__FUNCTION__ +, +__LINE__ +); + +1326 ià( +USE_RTM_LOCKS +) { + +1327 + `¹m_uÆock +(); + +1329 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1331  +IFM_FAILURE +; + +1333 +ušt32_t + +š‹º®_ms + = +bÚd_pÜt +-> +bÚd_cÚfig +->internal_ms; + +1334 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1335 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1336 +__FUNCTION__ +, +__LINE__ +); + +1337 ià( +USE_RTM_LOCKS +) { + +1338 + `¹m_uÆock +(); + +1340 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1342  +š‹º®_ms +; + +1343 + } +} + +1345  + $£t_bÚd_lškdown_d–ay +( +ušt8_t + +bÚded_pÜt_id +, +ušt32_t + +d–ay_ms +) + +1347 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1348 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1349 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +1350 +__FUNCTION__ +, +__LINE__ +); + +1352 ià( +USE_RTM_LOCKS +) { + +1353 + `¹m_lock +(); + +1355 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1358 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1359  +d–ay + = 0; + +1361 ià( +bÚd_pÜt + =ð +NULL +) { + +1362 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1363 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1364 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1366 +__FUNCTION__ +, +__LINE__ +); + +1368 ià( +USE_RTM_LOCKS +) { + +1369 + `¹m_uÆock +(); + +1371 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1373  +IFM_FAILURE +; + +1375 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_down_d–ay_ms + =ð +d–ay_ms +) { + +1376 ià( +ifm_debug + & +IFM_DEBUG +) + +1377 + `RTE_LOG +( +INFO +, +IFM +, + +1379 +__FUNCTION__ +, +bÚded_pÜt_id +); + +1380 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1381 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1382 +__FUNCTION__ +, +__LINE__ +); + +1384 ià( +USE_RTM_LOCKS +) { + +1385 + `¹m_uÆock +(); + +1387 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1389  +IFM_SUCCESS +; + +1391 ià( + `¹e_‘h_bÚd_lšk_down_´Ý_d–ay_£t +( +bÚd_pÜt +-> +pmdid +, +d–ay_ms +) < + +1393 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set delay for…ort %u\n\r", + +1394 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1395 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1396 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1397 +__FUNCTION__ +, +__LINE__ +); + +1399 ià( +USE_RTM_LOCKS +) { + +1400 + `¹m_uÆock +(); + +1402 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1404  +IFM_FAILURE +; + +1406 +d–ay + = + `¹e_‘h_bÚd_lšk_down_´Ý_d–ay_g‘ +( +bÚd_pÜt +-> +pmdid +); + +1407 ià( +d–ay + < 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 WR†ock @ %d\n\r", + +1414 +__FUNCTION__ +, +__LINE__ +); + +1416 ià( +USE_RTM_LOCKS +) { + +1417 + `¹m_uÆock +(); + +1419 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1421  +IFM_FAILURE +; + +1423 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_down_d–ay_ms + = +d–ay +; + +1424 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1425 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1426 +__FUNCTION__ +, +__LINE__ +); + +1428 ià( +USE_RTM_LOCKS +) { + +1429 + `¹m_uÆock +(); + +1431 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1433  +IFM_SUCCESS +; + +1434 + } +} + +1436  + $g‘_bÚd_lšk_down_d–ay +( +ušt8_t + +bÚded_pÜt_id +) + +1438 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1440 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1441 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1442 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +1443 +__FUNCTION__ +, +__LINE__ +); + +1444 ià( +USE_RTM_LOCKS +) + +1445 + `¹m_lock +(); + +1447 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1449 ià( +bÚd_pÜt + =ð +NULL +) { + +1450 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1451 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1452 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1453 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1454 +__FUNCTION__ +, +__LINE__ +); + +1455 ià( +USE_RTM_LOCKS +) { + +1456 + `¹m_uÆock +(); + +1458 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1460  +IFM_FAILURE +; + +1462 +ušt32_t + +d–ay_ms + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_down_d–ay_ms +; + +1463 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1464 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1465 +__FUNCTION__ +, +__LINE__ +); + +1466 ià( +USE_RTM_LOCKS +) { + +1467 + `¹m_uÆock +(); + +1469 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1471  +d–ay_ms +; + +1473 + } +} + +1475  + $£t_bÚd_lškup_d–ay +( +ušt8_t + +bÚded_pÜt_id +, +ušt32_t + +d–ay_ms +) + +1477 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1478  +d–ay + = 0; + +1479 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1481 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1482 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +1483 +__FUNCTION__ +, +__LINE__ +); + +1484 ià( +USE_RTM_LOCKS +) + +1485 + `¹m_uÆock +(); + +1487 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1489 ià( +bÚd_pÜt + =ð +NULL +) { + +1490 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond…ort %u is‚ot‡vailable in" + +1491 "…܈li¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +1492 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1493 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1494 +__FUNCTION__ +, +__LINE__ +); + +1495 ià( +USE_RTM_LOCKS +) + +1496 + `¹m_uÆock +(); + +1498 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1499  +IFM_FAILURE +; + +1501 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_up_d–ay_ms + =ð +d–ay_ms +) { + +1502 ià( +ifm_debug + & +IFM_DEBUG +) + +1503 + `RTE_LOG +( +INFO +, +IFM +, + +1505 +__FUNCTION__ +, +bÚded_pÜt_id +); + +1506 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1507 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1508 +__FUNCTION__ +, +__LINE__ +); + +1509 ià( +USE_RTM_LOCKS +) + +1510 + `¹m_uÆock +(); + +1512 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1513  +IFM_SUCCESS +; + +1515 ià( + `¹e_‘h_bÚd_lšk_up_´Ý_d–ay_£t +( +bÚd_pÜt +-> +pmdid +, +d–ay_ms +) < 0) { + +1516 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo set delay for…ort %u\n\r", + +1517 +__FUNCTION__ +, +bÚd_pÜt +-> +pmdid +); + +1518 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1519 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1520 +__FUNCTION__ +, +__LINE__ +); + +1522 ià( +USE_RTM_LOCKS +) + +1523 + `¹m_uÆock +(); + +1525 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1526  +IFM_FAILURE +; + +1528 +d–ay + = + `¹e_‘h_bÚd_lšk_up_´Ý_d–ay_g‘ +( +bÚd_pÜt +-> +pmdid +); + +1529 ià( +d–ay + < 0) { + +1530 + `RTE_LOG +( +INFO +, +IFM +, + +1532 +__FUNCTION__ +); + +1533 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1534 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1535 +__FUNCTION__ +, +__LINE__ +); + +1537 ià( +USE_RTM_LOCKS +) + +1538 + `¹m_uÆock +(); + +1540 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1541  +IFM_FAILURE +; + +1543 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_up_d–ay_ms + = +d–ay +; + +1544 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1545 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +1546 +__FUNCTION__ +, +__LINE__ +); + +1548 ià( +USE_RTM_LOCKS +) + +1549 + `¹m_uÆock +(); + +1551 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1552  +IFM_SUCCESS +; + +1553 + } +} + +1555  + $g‘_bÚd_lšk_up_d–ay +( +ušt8_t + +bÚded_pÜt_id +) + +1557 +l2_phy_š‹rçû_t + * +bÚd_pÜt +; + +1558 +ušt32_t + +d–ay_ms +; + +1560 +bÚd_pÜt + = + `ifm_g‘_pÜt +( +bÚded_pÜt_id +); + +1562 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1563 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +1564 +__FUNCTION__ +, +__LINE__ +); + +1565 ià( +USE_RTM_LOCKS +) + +1566 + `¹m_lock +(); + +1568 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1569 ià( +bÚd_pÜt + =ð +NULL +) { + +1570 ià( +ifm_debug + & +IFM_DEBUG +) { + +1571 + `RTE_LOG +( +ERR +, +IFM +, + +1573 "…܈li¡.\n\r", +__FUNCTION__ +, + +1574 +bÚded_pÜt_id +); + +1576 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1577 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1578 +__FUNCTION__ +, +__LINE__ +); + +1579 ià( +USE_RTM_LOCKS +) + +1580 + `¹m_uÆock +(); + +1582 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1583  +IFM_FAILURE +; + +1585 +d–ay_ms + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +lšk_up_d–ay_ms +; + +1587 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1588 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1589 +__FUNCTION__ +, +__LINE__ +); + +1590 ià( +USE_RTM_LOCKS +) + +1591 + `¹m_uÆock +(); + +1593 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1594  +d–ay_ms +; + +1595 + } +} + + @VIL/l2l3_stack/hle.c + +16  + ~"tsx.h +" + +18  + ~ + +20  + $hË_š™ +() + +22 +mu‹x_v® + = 0; + +23 + } +} + +25  + $hË_lock +() + +27  +__©omic_exchªge_n + + +28 (& +mu‹x_v® +, 1, +__ATOMIC_ACQUIRE + | +__ATOMIC_HLE_ACQUIRE +)) + +29 + `_mm_·u£ +(); + +30  +TRUE +; + +31 + } +} + +33  + $hË_»Ëa£ +() + +35 + `__©omic_¡Üe_n +(& +mu‹x_v® +, 0, + +36 +__ATOMIC_RELEASE + | +__ATOMIC_HLE_RELEASE +); + +37  +TRUE +; + +38 + } +} + +40  + $is_hË_locked +() + +42  ( +mu‹x_v® + =ð0è? +FALSE + : +TRUE +; + +43 + } +} + + @VIL/l2l3_stack/hle.h + +17  + #HLE_TRUE + 1 + + ) + +18  + #HLE_FALSE + 0 + + ) + +20 vÞ©ž + gmu‹x_v® +; + +25  +hË_mu‹x +(); + +30  +hË_lock +(); + +35  +hË_»Ëa£ +(); + +40  +is_locked +(); + + @VIL/l2l3_stack/interface.c + +16  + ~<š‹rçû.h +> + +17  + ~<¹e_by‹Üd”.h +> + +18  + ~ + +19  + ~ + +21 +š‹rçû_maš_t + + gifm +; + +22  + gUSE_RTM_LOCKS + = 0; + +23 +¹e_rwlock_t + + grwlock +; + +24 +ušt8_t + + gifm_debug +; + +25  + g´ev_¡©e +; + +27  + $cÚfig_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 + `cÚfig_ifm_debug +( +IFM_DEBUG_CONFIG +, 1); + +65 ià( + `ÿn_u£_š‹l_cÜe_4th_g’_ã©u»s +()) { + +66 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +67 + `RTE_LOG +( +INFO +, +IFM +, "TSX‚ot currently supported...\n\r"); + +68 +USE_RTM_LOCKS + = 0; + +70 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +71 + `RTE_LOG +( +INFO +, +IFM +, "TSX‚ot 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 WR†ock @ %d\n\r", + +82 +__FUNCTION__ +, +__LINE__ +); + +83 ià( +USE_RTM_LOCKS +) + +84 + `¹m_lock +(); + +86 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +88 +ifm +. +pÜt_li¡ +[ +i +] = +NULL +; + +89 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +90 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +91 +__FUNCTION__ +, +__LINE__ +); + +92 ià( +USE_RTM_LOCKS +) + +93 + `¹m_uÆock +(); + +95 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +97 +ifm +. +ÅÜt_štŸlized + = + `¹e_‘h_dev_couÁ +(); + +98 +ifm +. +ÅÜt_cÚfigu»d + = 0; + +99 + `RTE_LOG +( +INFO +, +IFM +, "IFM_INIT: Number of…orts initialized during " + +100 "PCI…robšg %u.\n\r", +ifm +. +ÅÜt_štŸlized +); + +101 + } +} + +103  + $ifm_»move_pÜt_d‘ažs +( +ušt8_t + +pÜtid +) + +105 ià( +ifm +. +pÜt_li¡ +[ +pÜtid +] !ð +NULL +) { + +106 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +107 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring†ock %d\n\r", + +108 +__FUNCTION__ +, +__LINE__ +); + +109 ià( +USE_RTM_LOCKS +) + +110 + `¹m_lock +(); + +112 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +113 +l2_phy_š‹rçû_t + * +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜtid +]; + +114 +ifm +. +pÜt_li¡ +[ +pÜtid +] = +NULL +; + +115 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +116 + `RTE_LOG +( +INFO +, +IFM +, "%s: NULL set for…ort %u\n\r", + +117 +__FUNCTION__ +, +pÜtid +); + +118 + `¹e_ä“ +( +pÜt +); + +119 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +120 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +121 +__FUNCTION__ +, +__LINE__ +); + +123 ià( +USE_RTM_LOCKS +) + +124 + `¹m_uÆock +(); + +126 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +128 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +129 + `RTE_LOG +( +INFO +, +IFM +, + +131 " i ®»ady NuÎ.\n\r", +__FUNCTION__ +, +pÜtid +); + +133 + } +} + +135 +l2_phy_š‹rçû_t + * + $ifm_g‘_pÜt +( +ušt8_t + +pÜt_id +) + +137 +l2_phy_š‹rçû_t + * +pÜt + = +NULL +; + +138 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +139 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +140 +__LINE__ +); + +142 ià( +USE_RTM_LOCKS +) + +143 + `¹m_lock +(); + +145 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +147 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +149 ià( +pÜt + =ð +NULL +) { + +153 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +154 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +155 +__FUNCTION__ +, +__LINE__ +); + +156 ià( +USE_RTM_LOCKS +) + +157 + `¹m_uÆock +(); + +159 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +160  +NULL +; + +162 ià( +pÜt +-> +pmdid + =ð +pÜt_id +) { + +165 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +166 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +167 +__FUNCTION__ +, +__LINE__ +); + +169 ià( +USE_RTM_LOCKS +) + +170 + `¹m_uÆock +(); + +172 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +173  +pÜt +; + +180 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +181 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +182 +__LINE__ +); + +183 ià( +USE_RTM_LOCKS +) + +184 + `¹m_uÆock +(); + +186 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +187  +NULL +; + +188 + } +} + +190 +l2_phy_š‹rçû_t + * + $ifm_g‘_fœ¡_pÜt +() + +192 +l2_phy_š‹rçû_t + * +pÜt + = +NULL +; + +193 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +194 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +195 +__LINE__ +); + +197 ià( +USE_RTM_LOCKS +) + +198 + `¹m_lock +(); + +200 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +201 +pÜt + = +ifm +. +pÜt_li¡ +[0]; + +202 ià( +pÜt + =ð +NULL +) { + +205 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +206 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +207 +__FUNCTION__ +, +__LINE__ +); + +208 ià( +USE_RTM_LOCKS +) + +209 + `¹m_uÆock +(); + +211 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +212  +NULL +; + +216 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +217 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +218 +__LINE__ +); + +219 ià( +USE_RTM_LOCKS +) + +220 + `¹m_uÆock +(); + +222 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +223  +pÜt +; + +224 + } +} + +226 +l2_phy_š‹rçû_t + * + $ifm_g‘_Ãxt_pÜt +( +ušt8_t + +pÜt_id +) + +228 +l2_phy_š‹rçû_t + * +pÜt + = +NULL +; + +229 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +230 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +231 +__LINE__ +); + +232 ià( +USE_RTM_LOCKS +) + +233 + `¹m_lock +(); + +235 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +236 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id + + 1]; + +237 ià( +pÜt + =ð +NULL +) { + +238 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +239 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +240 +__FUNCTION__ +, +__LINE__ +); + +241 ià( +USE_RTM_LOCKS +) + +242 + `¹m_uÆock +(); + +244 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +245  +NULL +; + +249 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +250 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +251 +__LINE__ +); + +253 ià( +USE_RTM_LOCKS +) + +254 + `¹m_uÆock +(); + +256 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +257  +pÜt +; + +258 + } +} + +260 +l2_phy_š‹rçû_t + * + $ifm_g‘_pÜt_by_Çme +(cÚ¡ * +Çme +) + +262 +l2_phy_š‹rçû_t + * +pÜt + = +NULL +; + +263  +i +; + +264 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +265 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %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 +. +pÜt_li¡ +[i]; i++) { + +273 +pÜt + = +ifm +. +pÜt_li¡ +[ +i +]; + +274 ià( + `¡rcmp +( +Çme +, +pÜt +-> +iâame +) == 0) { + +275 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +276 + `RTE_LOG +( +INFO +, +IFM +, "FOUND!…ort %u %s\n\r", + +277 +pÜt +-> +pmdid +,…Üt-> +iâame +); + +278 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +279 + `RTE_LOG +( +INFO +, +IFM +, + +281 +__FUNCTION__ +, +__LINE__ +); + +282 ià( +USE_RTM_LOCKS +) + +283 + `¹m_uÆock +(); + +285 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +286  +pÜt +; + +289 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +290 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +291 +__LINE__ +); + +292 ià( +USE_RTM_LOCKS +) + +293 + `¹m_uÆock +(); + +295 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +296  +NULL +; + +297 + } +} + +299  + $lsi_ev’t_ÿÎback +( +ušt8_t + +pÜt_id +, +¹e_‘h_ev’t_ty³ + +ty³ +, + +300 * +·¿m +) + +302  +¹e_‘h_lšk + +lšk +; + +303 +l2_phy_š‹rçû_t + * +pÜt +; + +304  +nþ›Ás + = +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 WR†ock @ %d\n\r", + +312 +__FUNCTION__ +, +__LINE__ +); + +313 ià( +USE_RTM_LOCKS +) { + +314 + `¹m_lock +(); + +316 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +318 + `¹e_‘h_lšk_g‘ +( +pÜt_id +, & +lšk +); + +319  +i + = 0; i < +nþ›Ás +; i++) + +320 +ifm +. +if_þ›Á +[ +i +]. + `cb_lškupd©e +( +pÜt_id +, +lšk +. +lšk_¡©us +); + +321 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +322 ià( +pÜt + =ð +NULL +) { + +323 + `RTE_LOG +( +ERR +, +IFM +, + +325 +__FUNCTION__ +, +pÜt_id +); + +327 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +328 ià( +lšk +. +lšk_¡©us +) { + +329 +pÜt +-> +lšk_¡©us + = +IFM_ETH_LINK_UP +; + +330 +pÜt +-> +lšk_¥“d + = +lšk +.link_speed; + +331 +pÜt +-> +lšk_du¶ex + = +lšk +.link_duplex; + +332 + `RTE_LOG +( +INFO +, +IFM +, + +334 +pÜt_id +, () +lšk +. +lšk_¥“d +, + +335 ( +lšk +. +lšk_du¶ex + == + +336 +ETH_LINK_FULL_DUPLEX +) ? ("full-duplex") + +338 ià( +pÜt +-> +æags + & +IFM_MASTER +) { + +339 +pÜt +-> +æags + |ð +IFM_BONDED +; + +340 +pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ + = + +341 + `¹e_‘h_bÚd_aùive_¦aves_g‘ +( +pÜt +-> +pmdid +, + +342 +pÜt +-> + +343 +bÚd_cÚfig +-> + +344 +aùive_¦aves +, + +345 +RTE_MAX_ETHPORTS +); + +346  +‘h”_addr + +Ãw_mac +; + +347 + `¹e_‘h_maÿddr_g‘ +( +pÜt +-> +pmdid +, + +348 ( +‘h”_addr + *) + +349 & +Ãw_mac +); + +350 ià( +memcmp + + +351 (& +Ãw_mac +, +pÜt +-> +maÿddr +, + +352 ( +‘h”_addr +))) { + +353 + `RTE_LOG +( +INFO +, +IFM +, + +355 +pÜt +-> +pmdid +); + +357 + `RTE_LOG +( +INFO +, +IFM +, + +359 +pÜt +-> +pmdid +); + +362 ià( +pÜt +-> +æags + & +IFM_SLAVE +) { + +363 +ušt8_t + +ma¡”_pÜtid + = + +364 +pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +; + +365  +¹e_‘h_lšk + +lšk¡©us +; + +366 + `¹e_‘h_lšk_g‘ +( +ma¡”_pÜtid +, & +lšk¡©us +); + +367 + `RTE_LOG +( +INFO +, +IFM +, "P܈%u ' Ma¡”(%uè¡©u i %u\n\r", +pÜt_id +, + +368 +ma¡”_pÜtid +, +lšk¡©us +. +lšk_¡©us +); + +370 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +371 + `RTE_LOG +( +INFO +, +IFM +, + +373 +__FUNCTION__ +, +__LINE__ +); + +375 ià( +USE_RTM_LOCKS +) { + +376 + `¹m_uÆock +(); + +378 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +380 ià( +pÜt +-> +v4_li¡ + !ð +NULL +) { + +381 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +382 + `RTE_LOG +( +INFO +, +IFM +, + +384 +pÜt +-> +pmdid +); + +385 ià(! +´ev_¡©e +) { + +386 + `£nd_g¿tu™ous_¬p +( +pÜt +); + +387 +´ev_¡©e + = 1; + +392 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +393 + `RTE_LOG +( +INFO +, +IFM +, + +395 +pÜt +-> +pmdid +); + +399 ià( +pÜt +-> +æags + & +IFM_MASTER +) { + +400 +pÜt +-> +æags + &ð~ +IFM_BONDED +; + +403 +pÜt +-> +lšk_¡©us + = +IFM_ETH_LINK_DOWN +; + +404 + `RTE_LOG +( +INFO +, +IFM +, "EVENT-- PORT %u is Link DOWN.\n", + +405 +pÜt_id +); + +406 ià( +pÜt +-> +æags + & +IFM_SLAVE +) { + +407  +¹e_‘h_lšk + +lšk¡©us +; + +408 +ušt8_t + +ma¡”_pÜtid + = + +409 +pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +; + +410 + `¹e_‘h_lšk_g‘_nowa™ +( +ma¡”_pÜtid +, + +411 & +lšk¡©us +); + +412 + `RTE_LOG +( +INFO +, +IFM +, + +414 +pÜt_id +, +ma¡”_pÜtid +, + +415 +lšk¡©us +. +lšk_¡©us +); + +417 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +418 + `RTE_LOG +( +INFO +, +IFM +, + +420 +__FUNCTION__ +, +__LINE__ +); + +421 ià( +USE_RTM_LOCKS +) { + +422 + `¹m_uÆock +(); + +424 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +426 +´ev_¡©e + = 0; + +430 + } +} + +432  + $ifm_upd©e_lšk¡©us +( +ušt8_t + +pÜt_id +, +ušt16_t + +lšk¡©us +) + +434  +¹e_‘h_lšk + +lšk +; + +435 +l2_phy_š‹rçû_t + * +pÜt +; + +436 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +437 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +438 +__LINE__ +); + +440 ià( +USE_RTM_LOCKS +) { + +441 + `¹m_lock +(); + +443 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +445 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +447 ià( +pÜt + =ð +NULL +) { + +448 + `RTE_LOG +( +ERR +, +IFM +, + +450 +__FUNCTION__ +, +pÜt_id +); + +452 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +453 + `¹e_‘h_lšk_g‘ +( +pÜt_id +, & +lšk +); + +454 ià( +lšk¡©us + =ð +IFM_ETH_LINK_UP +) { + +455 +pÜt +-> +admš_¡©us + = +IFM_ETH_LINK_UP +; + +456 if(! +lšk +. +lšk_¡©us +) { + +457 ià( + `¹e_‘h_dev_£t_lšk_up +( +pÜt_id +) < 0) { + +458 + `RTE_LOG +( +INFO +, +IFM +, + +460 +__FUNCTION__ +, +pÜt +-> +pmdid +); + +462 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +463 + `RTE_LOG +( +INFO +, +IFM +, + +465 +__FUNCTION__ +, +__LINE__ +); + +467 ià( +USE_RTM_LOCKS +) { + +468 + `¹m_uÆock +(); + +470 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +472 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +473 + `RTE_LOG +( +INFO +, +IFM +, + +475 +__FUNCTION__ +, +pÜt +-> +pmdid +); + +476 + `£nd_g¿tu™ous_¬p +( +pÜt +); + +480 } ià( +lšk¡©us + =ð +IFM_ETH_LINK_DOWN +) + +482  +¡©us +; + +483 +pÜt +-> +admš_¡©us + = +IFM_ETH_LINK_DOWN +; + +485 if( +lšk +. +lšk_¡©us +) { + +486 +¡©us + = + `¹e_‘h_dev_£t_lšk_down +( +pÜt_id +); + +487 ià( +¡©us + < 0) + +489 + `´štf +("(%" +PRIu32 + "): PMD set†ink down... continuing...%" + +490 +PRId32 + "\n", +pÜt_id +, +¡©us +); + +495 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +496 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +497 +__LINE__ +); + +499 ià( +USE_RTM_LOCKS +) { + +500 + `¹m_uÆock +(); + +502 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +504 + } +} + +506  + $ifm_£t_l2_š‹rçû_mtu +( +ušt8_t + +pÜt_id +, +ušt16_t + +mtu +) + +508  +»t +; + +509 +l2_phy_š‹rçû_t + * +pÜt +; + +510 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +511 ià( +pÜt + =ð +NULL +) { + +512 + `RTE_LOG +( +ERR +, +IFM +, + +514 +__FUNCTION__ +, +pÜt_id +); + +517 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +518 +»t + = + `¹e_‘h_dev_£t_mtu +( +pÜt_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_wr™e_lock +(& +rwlock +); + +534 +pÜt +-> +mtu + = mtu; + +535 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +536 + `RTE_LOG +( +INFO +, +IFM +, + +538 +__FUNCTION__ +, +__LINE__ +); + +540 ià( +USE_RTM_LOCKS +) { + +541 + `¹m_uÆock +(); + +543 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +548 + } +} + +550  + $ifm_£t_pÜt_´omisc +( +ušt8_t + +pÜt_id +, ušt8_ˆ +’abË +) + +552 +l2_phy_š‹rçû_t + * +pÜt +; + +553 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +554 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +555 +__FUNCTION__ +, +__LINE__ +); + +556 ià( +USE_RTM_LOCKS +) { + +557 + `¹m_lock +(); + +559 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +561 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +562 ià( +pÜt + =ð +NULL +) { + +563 + `RTE_LOG +( +ERR +, +IFM +, + +565 +__FUNCTION__ +, +pÜt_id +); + +567 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +568 ià( +’abË + == 1) { + +569 + `¹e_‘h_´omiscuous_’abË +( +pÜt_id +); + +570 +pÜt +-> +´omisc + = 1; + +572 + `¹e_‘h_´omiscuous_di§bË +( +pÜt_id +); + +573 +pÜt +-> +´omisc + = 0; + +576 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +577 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +578 +__FUNCTION__ +, +__LINE__ +); + +579 ià( +USE_RTM_LOCKS +) { + +580 + `¹m_uÆock +(); + +582 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +584 + } +} + +586 +št32_t + + $ifm_g‘_Çùive_pÜts +() + +588  +ifm +. +ÅÜt_cÚfigu»d +; + +589 + } +} + +591 +št32_t + + $ifm_g‘_ÅÜts_š™Ÿlized +() + +593  +ifm +. +ÅÜt_štŸlized +; + +594 + } +} + +596 +ušt16_t + + $ifm_»ûive_bulk_pkts +( +ušt8_t + +pÜt_id +, +ušt16_t + +qid +, + +597  +¹e_mbuf + ** +rx_pkts +) + +599 +ušt64_t + +no_of_rcvd_pkt +; + +600 +no_of_rcvd_pkt + = + +601 + `¹e_‘h_rx_bur¡ +( +pÜt_id +, +qid +, +rx_pkts +, +IFM_BURST_SIZE +); + +602 ià( +ifm_debug + & +IFM_DEBUG_RXTX +) + +603 + `RTE_LOG +( +INFO +, +IFM +, + +605 +pÜt_id +, +no_of_rcvd_pkt +); + +606  +no_of_rcvd_pkt +; + +607 + } +} + +609 +ušt16_t + + $ifm_Œªsm™_bulk_pkts +( +l2_phy_š‹rçû_t + * +pÜt +, + +610  +¹e_mbuf + ** +tx_pkts +, +ušt64_t + +Åkts +) + +612 +ušt32_t + +bur¡_tx_d–ay_time + = +IFM_BURST_TX_WAIT_US +; + +613 +ušt32_t + +bur¡_tx_»Œy_num + = +IFM_BURST_TX_RETRIES +; + +614 +ušt32_t + +»Œy +; + +615 +ušt32_t + +no_of_tx_pkt +; + +616 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +617 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %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¡ +( +pÜt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, +tx_pkts +, + +625 +Åkts +); + +626 ià( + `uÆik–y +( +no_of_tx_pkt + < +Åkts +)) { + +627 +»Œy + = 0; + +628  +no_of_tx_pkt + < +IFM_BURST_SIZE + + +629 && +»Œy +++ < +bur¡_tx_»Œy_num +) { + +630 + `¹e_d–ay_us +( +bur¡_tx_d–ay_time +); + +631 +no_of_tx_pkt + = + +632 + `¹e_‘h_tx_bur¡ +( +pÜt +-> +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 RD†ock @ %d\n\r", + +643 +__FUNCTION__ +, +__LINE__ +); + +644 ià( +USE_RTM_LOCKS +) { + +645 + `¹m_uÆock +(); + +647 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +649  +no_of_tx_pkt +; + +650 + } +} + +652  + $ifm_Œªsm™_sšgË_pkt +( +l2_phy_š‹rçû_t + * +pÜt +,  +¹e_mbuf + * +tx_pkts +) + +654 +ušt64_t + +tx_Åkts + = 0; + +655 ià( +tx_pkts + =ð +NULL + || +pÜt + == NULL) { + +656 + `RTE_LOG +( +INFO +, +IFM +, + +658  +IFM_FAILURE +; + +660 ià( +ifm_debug + & +IFM_DEBUG_RXTX +) + +661 + `RTE_LOG +( +INFO +, +IFM +, + +663 +pÜt +-> +pmdid +); + +664 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +665 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %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_bufãr +( +pÜt +-> +pmdid +, +IFM_TX_DEFAULT_Q +,…Üt-> +tx_bufãr +, + +675 +tx_pkts +); + +676 ià( +ifm_debug + & +IFM_DEBUG_RXTX +) + +677 + `RTE_LOG +( +INFO +, +IFM +, + +679 +pÜt +-> +pmdid +, +tx_Åkts +); + +680 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +681 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RW†ock @ %d\n\r", + +682 +__FUNCTION__ +, +__LINE__ +); + +684 ià( +USE_RTM_LOCKS +) { + +685 + `¹m_uÆock +(); + +687 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +689 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +690 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock @ %d\n\r", + +691 +__FUNCTION__ +, +__LINE__ +); + +693 ià( +USE_RTM_LOCKS +) { + +694 + `¹m_lock +(); + +696 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +698 +pÜt +-> +n_txpkts + += + +699 + `¹e_‘h_tx_bufãr_æush +( +pÜt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, + +700 +pÜt +-> +tx_bufãr +); + +701 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +702 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock @ %d\n\r", + +703 +__FUNCTION__ +, +__LINE__ +); + +705 ià( +USE_RTM_LOCKS +) { + +706 + `¹m_uÆock +(); + +708 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +710 ià( +ifm_debug + & +IFM_DEBUG_RXTX +) + +711 + `RTE_LOG +( +INFO +, +IFM +, + +713 +pÜt +-> +n_txpkts +); + +714  +tx_Åkts +; + +715 + } +} + +717 +št16_t + + $ifm_add_v4_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +addr +, ušt32_ˆ +add¾’ +) + +719 +l2_phy_š‹rçû_t + * +pÜt +; + +720 +v4li¡_t + * +cÚf +; + +721 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +722 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +723 +__LINE__ +); + +725 ià( +USE_RTM_LOCKS +) { + +726 + `¹m_lock +(); + +728 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +730 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +731 ià( +pÜt + =ð +NULL +) { + +732 + `RTE_LOG +( +ERR +, +IFM +, + +734 +__FUNCTION__ +, +pÜt_id +); + +736 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +737 +cÚf + = ( +v4li¡_t + *è + `¹e_zm®loc +( +NULL +, (ipv4list_t), + +738 +RTE_CACHE_LINE_SIZE +); + +739 ià( +cÚf + !ð +NULL +) { + +740 +cÚf +-> +Ãxt + = +NULL +; + +742 +cÚf +-> +addr + = ipaddr; + +743 +cÚf +-> +pÜt + =…ort; + +744 +cÚf +-> +add¾’ + =‡ddrlen; + +745 ià( +pÜt +-> +v4_li¡ + =ð +NULL +) + +746 +pÜt +-> +æags + |ð +IFM_IPV4_ENABLED +; + +747 +cÚf +-> +Ãxt + = ( +v4li¡_t + *è +pÜt +-> +v4_li¡ +; + +748 +pÜt +-> +v4_li¡ + = ( +v4li¡_t + *è +cÚf +; + +749 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +750 + `RTE_LOG +( +INFO +, +IFM +, + +752 +__FUNCTION__ +, +__LINE__ +); + +754 ià( +USE_RTM_LOCKS +) { + +755 + `¹m_uÆock +(); + +757 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +762 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +763 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +764 +__LINE__ +); + +766 ià( +USE_RTM_LOCKS +) { + +767 + `¹m_uÆock +(); + +769 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +772 + } +} + +774 +št16_t + + $ifm_»move_v4_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +addr +, + +775 +ušt32_t + +add¾’ +) + +777 +l2_phy_š‹rçû_t + * +pÜt +; + +778 +v4li¡_t + * +li¡ +, * +´evli¡ + = +NULL +; + +779 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +780 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +781 +__LINE__ +); + +783 ià( +USE_RTM_LOCKS +) { + +784 + `¹m_lock +(); + +786 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +788 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +789 ià( +pÜt + =ð +NULL +) { + +790 + `RTE_LOG +( +ERR +, +IFM +, + +792 +__FUNCTION__ +, +pÜt_id +); + +794 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +795 ià( +pÜt +-> +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_uÆock +(); + +804 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +808 +li¡ + = ( +v4li¡_t + *è +pÜt +-> +v4_li¡ +; + +809  +li¡ + !ð +NULL +) { + +810 ià( +add¾’ + =ð +li¡ +->addrlen && + +811 + `memýy +(& +li¡ +-> +addr +, &addr, +add¾’ +)) { + +812 ià( +li¡ + =ð +pÜt +-> +v4_li¡ +) { + +813 +pÜt +-> +v4_li¡ + = +li¡ +-> +Ãxt +; + +815 ià( +´evli¡ + !ð +NULL +) + +816 +´evli¡ +-> +Ãxt + = +li¡ +->next; + +818 +pÜt +-> +æ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_uÆock +(); + +828 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +832 +´evli¡ + = +li¡ +; + +833 +li¡ + = i¶i¡-> +Ãxt +; + +837 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +838 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +839 +__LINE__ +); + +841 ià( +USE_RTM_LOCKS +) { + +842 + `¹m_uÆock +(); + +844 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +847 + } +} + +849 +št8_t + + $ifm_add_v6_pÜt +( +ušt8_t + +pÜt_id +, ušt8_ˆ +6addr +[], +ušt32_t + +add¾’ +) + +851 +l2_phy_š‹rçû_t + * +pÜt +; + +852 +v6li¡_t + * +6cÚf +; + +853 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +854 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +855 +__LINE__ +); + +857 ià( +USE_RTM_LOCKS +) { + +858 + `¹m_lock +(); + +860 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +862 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +863 ià( +pÜt + =ð +NULL +) { + +864 + `RTE_LOG +( +ERR +, +IFM +, + +866 +__FUNCTION__ +, +pÜt_id +); + +868 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +869 +6cÚf + = ( +v6li¡_t + *è + `¹e_zm®loc +( +NULL +, (ipv6list_t), + +870 +RTE_CACHE_LINE_SIZE +); + +871 ià( +6cÚf + !ð +NULL +) { + +872 +6cÚf +-> +Ãxt + = +NULL +; + +873 + `memýy +( +6cÚf +-> +addr +, +6addr +, +IFM_IPV6_ADDR_SIZE +); + +874 +6cÚf +-> +pÜt + =…ort; + +875 +6cÚf +-> +add¾’ + =‡ddrlen; + +877 ià( +pÜt +-> +v6_li¡ + =ð +NULL +) { + +878 +pÜt +-> +æags + |ð +IFM_IPV6_ENABLED +; + +880 +6cÚf +-> +Ãxt + = ( +v6li¡_t + *è +pÜt +-> +v6_li¡ +; + +881 +pÜt +-> +v6_li¡ + = ( +v6li¡_t + *è +6cÚf +; + +882 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +883 + `RTE_LOG +( +INFO +, +IFM +, + +885 +__FUNCTION__ +, +__LINE__ +); + +887 ià( +USE_RTM_LOCKS +) { + +888 + `¹m_uÆock +(); + +890 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +895 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +896 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +897 +__LINE__ +); + +899 ià( +USE_RTM_LOCKS +) { + +900 + `¹m_uÆock +(); + +902 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +905 + } +} + +907 +št16_t + + $ifm_»move_v6_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +6addr +, + +908 +ušt32_t + +add¾’ +) + +910 +l2_phy_š‹rçû_t + * +pÜt +; + +911 +v6li¡_t + * +6li¡ +, * +´ev6li¡ + = +NULL +; + +913 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +914 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquœšg†ock @ %d\n\r", +__FUNCTION__ +, + +915 +__LINE__ +); + +916 ià( +USE_RTM_LOCKS +) + +917 + `¹m_lock +(); + +919 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +920 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +921 ià( +pÜt + =ð +NULL +) { + +922 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +923 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +924 +__FUNCTION__ +, +__LINE__ +); + +925 ià( +USE_RTM_LOCKS +) { + +926 + `¹m_uÆock +(); + +928 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +930 + `RTE_LOG +( +ERR +, +IFM +, + +932 +__FUNCTION__ +, +pÜt_id +); + +934 ià( +pÜt + !ð +NULL + &&…Üt-> +pmdid + =ð +pÜt_id +) { + +935 ià( +pÜt +-> +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_uÆock +(); + +944 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +948 +6li¡ + = ( +v6li¡_t + *è +pÜt +-> +v6_li¡ +; + +949  +6li¡ + !ð +NULL +) { + +950 ià( +add¾’ + =ð +6li¡ +->addrlen && + +951 + `memýy +(& +6li¡ +-> +addr +, & +6addr +, +add¾’ +)) { + +952 ià( +6li¡ + =ð +pÜt +-> +v6_li¡ +) { + +953 +pÜt +-> +v6_li¡ + = +6li¡ +-> +Ãxt +; + +955 ià( +´ev6li¡ + !ð +NULL +) + +956 +´ev6li¡ +-> +Ãxt + = + +957 +6li¡ +-> +Ãxt +; + +959 +pÜt +-> +æ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_uÆock +(); + +969 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +973 +´ev6li¡ + = +6li¡ +; + +974 +6li¡ + = ip6li¡-> +Ãxt +; + +978 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +979 + `RTE_LOG +( +INFO +, +IFM +, "%s: R–—sšg†ock @ %d\n\r", +__FUNCTION__ +, + +980 +__LINE__ +); + +981 ià( +USE_RTM_LOCKS +) + +982 + `¹m_uÆock +(); + +984 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +986 + } +} + +988 +št32_t + + $ifm_chk_pÜt_v4_’abËd +( +ušt8_t + +pÜt_id +) + +990 +l2_phy_š‹rçû_t + * +pÜt +; + +992 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +993 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +994 +__FUNCTION__ +, +__LINE__ +); + +995 ià( +USE_RTM_LOCKS +) + +996 + `¹m_lock +(); + +998 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +999 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +1000 ià( +pÜt + =ð +NULL +) { + +1001 + `RTE_LOG +( +ERR +, +IFM +, + +1003 +__FUNCTION__ +, +pÜt_id +); + +1004 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1005 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +1006 +__FUNCTION__ +, +__LINE__ +); + +1007 ià( +USE_RTM_LOCKS +) + +1008 + `¹m_uÆock +(); + +1010 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1011  +IFM_FAILURE +; + +1013 ià(( +pÜt +-> +æags + & +IFM_IPV4_ENABLED +) == 0) { + +1014 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1015 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +1016 +__FUNCTION__ +, +__LINE__ +); + +1017 ià( +USE_RTM_LOCKS +) + +1018 + `¹m_uÆock +(); + +1020 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1023 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1024 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing†ock @ %d\n\r", + +1025 +__FUNCTION__ +, +__LINE__ +); + +1026 ià( +USE_RTM_LOCKS +) + +1027 + `¹m_uÆock +(); + +1029 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1032 + } +} + +1034 +št32_t + + $ifm_chk_pÜt_v6_’abËd +( +ušt8_t + +pÜt_id +) + +1036 +l2_phy_š‹rçû_t + * +pÜt +; + +1038 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1039 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RD†ock @ %d\n\r", + +1040 +__FUNCTION__ +, +__LINE__ +); + +1041 ià( +USE_RTM_LOCKS +) + +1042 + `¹m_lock +(); + +1044 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1046 +pÜt + = +ifm +. +pÜt_li¡ +[ +pÜt_id +]; + +1047 ià( +pÜt + =ð +NULL +) { + +1048 ià( +ifm_debug + & +IFM_DEBUG +) + +1049 + `RTE_LOG +( +ERR +, +IFM +, "%s: Port %u info‚ot found..." + +1051 +__FUNCTION__ +, +pÜt_id +); + +1052 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1053 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1054 +__FUNCTION__ +, +__LINE__ +); + +1055 ià( +USE_RTM_LOCKS +) + +1056 + `¹m_uÆock +(); + +1058 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1059  +IFM_FAILURE +; + +1061 ià(( +pÜt +-> +æags + & +IFM_IPV6_ENABLED +) == 0) { + +1062 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1063 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1064 +__FUNCTION__ +, +__LINE__ +); + +1065 ià( +USE_RTM_LOCKS +) + +1066 + `¹m_uÆock +(); + +1068 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1071 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1072 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RD†ock @ %d\n\r", + +1073 +__FUNCTION__ +, +__LINE__ +); + +1074 ià( +USE_RTM_LOCKS +) + +1075 + `¹m_uÆock +(); + +1077 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1080 + } +} + +1082  + $ifm_»gi¡”_fÜ_lškupd©e +( +ušt32_t + +þ›Áid +, + +1083 (* +cb_lškupd©e +è( +ušt8_t +, )) + +1085 +ifm +. +if_þ›Á +[ifm. +nþ›Á +]. +cb_lškupd©e + = cb_linkupdate; + +1086 +ifm +. +if_þ›Á +[ifm. +nþ›Á +]. +þ›Áid + = clientid; + +1087 +ifm +. +nþ›Á +++; + +1088 + } +} + +1090  + $ifm_pÜt_£tup +( +ušt8_t + +pÜt_id +, +pÜt_cÚfig_t + * +pcÚfig +) + +1092  +¡©us +, +sock +; + +1093  +buf +[12]; + +1094  +¹e_‘h_dev_šfo + +dev_šfo +; + +1095  +¹e_‘h_lšk + +lšk¡©us +; + +1096 +l2_phy_š‹rçû_t + * +pÜt + = +NULL +; + +1098 ià(! +ifm +. +ÅÜt_štŸlized +) { + +1099 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo configure…ort %u. 0…orts" + +1101 +__FUNCTION__ +, +pÜt_id +); + +1102  +IFM_FAILURE +; + +1104 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +1105 + `RTE_LOG +( +INFO +, +IFM +, "%s: Configuring…ort %u with " + +1106 "Äxq: %u,‚txq: %u\n\r", +__FUNCTION__ +, + +1107 +pÜt_id +, +pcÚfig +-> +Äx_queue +,…cÚfig-> +Áx_queue +); + +1108 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1109 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock1 @ %d\n\r", + +1110 +__FUNCTION__ +, +__LINE__ +); + +1111 ià( +USE_RTM_LOCKS +) + +1112 + `¹m_lock +(); + +1114 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1116 ià( +ifm +. +pÜt_li¡ +[ +pÜt_id +] =ð +NULL +) { + +1117 +ifm +. +pÜt_li¡ +[ +pÜt_id +] = + +1118 ( +l2_phy_š‹rçû_t + *è + `¹e_zm®loc +( +NULL +, + +1120 ( +l2_phy_š‹rçû_t +), + +1121 +RTE_CACHE_LINE_SIZE +); + +1122 +ifm +. +pÜt_li¡ +[ +pÜt_id +]-> +pmdid + =…ort_id; + +1124 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1125 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock1 @ %d\n\r", + +1126 +__FUNCTION__ +, +__LINE__ +); + +1127 ià( +USE_RTM_LOCKS +) + +1128 + `¹m_uÆock +(); + +1130 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1132 + `¹e_‘h_lšk_g‘ +( +pÜt_id +, & +lšk¡©us +); + +1133 ià( +lšk¡©us +. +lšk_¡©us +) { + +1134 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) { + +1135 + `RTE_LOG +( +INFO +, +IFM +, "%s: %u is up.Stop it before" + +1136 "„ecÚfiguršg.\n\r", +__FUNCTION__ +, +pÜt_id +); + +1138 + `¹e_‘h_dev_¡Ý +( +pÜt_id +); + +1141 +¡©us + = + `¹e_‘h_dev_cÚfigu» +( +pÜt_id +, +pcÚfig +-> +Äx_queue +, + +1142 +pcÚfig +-> +Áx_queue +, &pcÚfig-> +pÜt_cÚf +); + +1143 ià( +¡©us + < 0) { + +1144 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1145 + `RTE_LOG +( +ERR +, +IFM +, "%s:„te_eth_dev_configure is failed" + +1146 "f܅܈%u.\n\r", +__FUNCTION__ +, +pÜt_id +); + +1147  +IFM_FAILURE +; + +1149 +¡©us + = + `¹e_‘h_dev_ÿÎback_»gi¡” +( +pÜt_id +, + +1150 +RTE_ETH_EVENT_INTR_LSC +, + +1151 +lsi_ev’t_ÿÎback +, +NULL +); + +1152 ià( +¡©us + < 0) { + +1153 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1154 + `RTE_LOG +( +ERR +, +IFM +, "%s:„te_eth_dev_callback_register()" + +1155 " fažed f܅܈%u.\n\r", +__FUNCTION__ +, +pÜt_id +); + +1156  +IFM_FAILURE +; + +1159 ià( +pcÚfig +-> +´omisc +) + +1160 + `¹e_‘h_´omiscuous_’abË +( +pÜt_id +); + +1162 +sock + = + `¹e_‘h_dev_sock‘_id +( +pÜt_id +); + +1163 ià( +sock + == -1) + +1164 + `RTE_LOG +( +ERR +, +IFM +, "%s: Warning:„te_eth_dev_socket_id," + +1166 "ouˆoà¿ng%u\n\r", +__FUNCTION__ +, +pÜt_id +); + +1168  +Áxqs +; + +1169  +Áxqs + = 0;‚txq < +pcÚfig +-> +Áx_queue +;‚txqs++) { + +1170 +¡©us + = + `¹e_‘h_tx_queue_£tup +( +pÜt_id +, +Áxqs +, + +1171 +IFM_TX_DESC_DEFAULT +, +sock +, + +1172 &( +pcÚfig +-> +tx_cÚf +)); + +1173 ià( +¡©us + < 0) { + +1174 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1175 + `RTE_LOG +( +ERR +, +IFM +, "%s:„te_eth_tx_queue_setup failed" + +1176 " f܅܈%u\n\r", +__FUNCTION__ +, +pÜt_id +); + +1177  +IFM_FAILURE +; + +1180 +pÜt + = + `ifm_g‘_pÜt +( +pÜt_id +); + +1181 ià( +pÜt + =ð +NULL +) { + +1182 + `RTE_LOG +( +INFO +, +IFM +, "%s: P܈i NULL @ %d\n\r", +__FUNCTION__ +, + +1183 +__LINE__ +); + +1184  +IFM_FAILURE +; + +1187 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1188 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock 2 @ %d\n\r", + +1189 +__FUNCTION__ +, +__LINE__ +); + +1190 ià( +USE_RTM_LOCKS +) + +1191 + `¹m_lock +(); + +1193 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1195 ià( +pÜt +-> +tx_buf_Ën + == 0) { + +1196 +pÜt +-> +tx_buf_Ën + = + `RTE_ETH_TX_BUFFER_SIZE +( +IFM_BURST_SIZE +); + +1198 +pÜt +-> +tx_bufãr + = + `¹e_zm®loc_sock‘ +("tx_bufãr",…Üt-> +tx_buf_Ën +, 0, + +1199 + `¹e_‘h_dev_sock‘_id +( +pÜt_id +)); + +1201 ià( +pÜt +-> +tx_bufãr + =ð +NULL +) { + +1202 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1203 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo‡llocatex buffers for" + +1204 "…܈%u\n\r", +__FUNCTION__ +, +pÜt_id +); + +1205 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1206 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock2 %d\n\r", + +1207 +__FUNCTION__ +, +__LINE__ +); + +1208 ià( +USE_RTM_LOCKS +) + +1209 + `¹m_uÆock +(); + +1211 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1212  +IFM_FAILURE +; + +1214 + `¹e_‘h_tx_bufãr_š™ +( +pÜt +-> +tx_bufãr +, +IFM_BURST_SIZE +); + +1216 + `¥rštf +( +buf +, "MEMPOOL%d", +pÜt_id +); + +1217 +pÜt +-> +mempoÞ + = + `¹e_mempoÞ_ü—‹ +( +buf +, + +1218 +pcÚfig +-> +mempoÞ +. +poÞ_size +, + +1219 +pcÚfig +-> +mempoÞ +. +bufãr_size +, + +1220 +pcÚfig +-> +mempoÞ +. +ÿche_size +, + +1222 +¹e_pktmbuf_poÞ_´iv©e +), + +1223 +¹e_pktmbuf_poÞ_š™ +, +NULL +, + +1224 +¹e_pktmbuf_š™ +, +NULL +, +sock +, 0); + +1225 ià( +pÜt +-> +mempoÞ + =ð +NULL +) { + +1226 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1227 + `RTE_LOG +( +ERR +, +IFM +, "%s:„te_mempool_create is failed for…ort" + +1229 +__FUNCTION__ +, +pÜt_id +, + `¹e_¡»¼Ü +( +¹e_”ºo +)); + +1230 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1231 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock2 %d\n\r", + +1232 +__FUNCTION__ +, +__LINE__ +); + +1233 ià( +USE_RTM_LOCKS +) + +1234 + `¹m_uÆock +(); + +1236 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1237  +IFM_FAILURE +; + +1239  +Äxqs +; + +1240  +Äxqs + = 0;‚rxq < +pcÚfig +-> +Äx_queue +;‚rxqs++) { + +1241 +¡©us + = + `¹e_‘h_rx_queue_£tup +( +pÜt_id +, +Äxqs +, + +1242 +IFM_RX_DESC_DEFAULT +, +sock +, + +1243 &( +pcÚfig +-> +rx_cÚf +), + +1244 +pÜt +-> +mempoÞ +); + +1245 ià( +¡©us + < 0) { + +1246 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1247 + `RTE_LOG +( +ERR +, +IFM +, + +1250 +__FUNCTION__ +, +pÜt_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_uÆock +(); + +1259 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1260  +IFM_FAILURE +; + +1264 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1265 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR†ock2 @ %d\n\r", + +1266 +__FUNCTION__ +, +__LINE__ +); + +1267 ià( +USE_RTM_LOCKS +) + +1268 + `¹m_uÆock +(); + +1270 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1271 +¡©us + = + `¹e_‘h_dev_¡¬t +( +pÜt_id +); + +1272 ià( +¡©us + < 0) { + +1273 + `ifm_»move_pÜt_d‘ažs +( +pÜt_id +); + +1274 + `RTE_LOG +( +ERR +, +IFM +, "%s:„te_eth_dev_start is failed for" + +1275 "…܈%u.\n\r", +__FUNCTION__ +, +pÜt_id +); + +1276  +IFM_FAILURE +; + +1278 + `¹e_d–ay_ms +(5000); + +1280 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1281 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WR†ock3 @ %d\n\r", + +1282 +__FUNCTION__ +, +__LINE__ +); + +1283 ià( +USE_RTM_LOCKS +) + +1284 + `¹m_lock +(); + +1286 + `¹e_rwlock_wr™e_lock +(& +rwlock +); + +1287 + `¹e_‘h_maÿddr_g‘ +( +pÜt_id +, ( +‘h”_addr + *) +pÜt +-> +maÿddr +); + +1288 ià( +pcÚfig +-> +´omisc +) + +1289 +pÜt +-> +´omisc + = 1; + +1290 + `¹e_‘h_lšk_g‘ +( +pÜt_id +, & +lšk¡©us +); + +1292 +pÜt +-> +lšk_du¶ex + = +lšk¡©us +.link_duplex; + +1293 +pÜt +-> +lšk_autÚeg + = +lšk¡©us +.link_autoneg; + +1294 +pÜt +-> +lšk_¥“d + = +lšk¡©us +.link_speed; + +1295 +pÜt +-> +admš_¡©us + = +pcÚfig +-> +¡©e +; + +1298 + `mem£t +(& +dev_šfo +, 0, (dev_info)); + +1299 + `¹e_‘h_dev_šfo_g‘ +( +pÜt_id +, & +dev_šfo +); + +1300 +pÜt +-> +mš_rx_bufsize + = +dev_šfo +.min_rx_bufsize; + +1301 +pÜt +-> +max_rx_pkŽ’ + = +dev_šfo +.max_rx_pktlen; + +1302 +pÜt +-> +max_rx_queues + = +dev_šfo +.max_rx_queues; + +1303 +pÜt +-> +max_tx_queues + = +dev_šfo +.max_tx_queues; + +1304 + `¹e_‘h_dev_g‘_mtu +( +pÜt_id +, &( +pÜt +-> +mtu +)); + +1307 +pÜt +-> +»Œ›ve_bulk_pkts + = & +ifm_»ûive_bulk_pkts +; + +1308 +pÜt +-> +Œªsm™_bulk_pkts + = & +ifm_Œªsm™_bulk_pkts +; + +1309 +pÜt +-> +Œªsm™_sšgË_pkt + = & +ifm_Œªsm™_sšgË_pkt +; + +1310 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1311 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR3†ock @ %d\n\r", + +1312 +__FUNCTION__ +, +__LINE__ +); + +1313 ià( +USE_RTM_LOCKS +) + +1314 + `¹m_uÆock +(); + +1316 + `¹e_rwlock_wr™e_uÆock +(& +rwlock +); + +1317 + `RTE_LOG +( +INFO +, +IFM +, "%s: Port %u is successfully configured.\n\r", + +1318 +__FUNCTION__ +, +pÜt_id +); + +1319  +IFM_SUCCESS +; + +1320 + } +} + +1322  + $ifm_cÚfigu»_pÜts +( +pÜt_cÚfig_t + * +pcÚfig +) + +1324 +ušt8_t + +pÜt_id +; + +1325  +¡©us + = 0; + +1326 ià(! +ifm +. +ÅÜt_štŸlized +) { + +1327 + `RTE_LOG +( +ERR +, +IFM +, "%s, Configuring…orts failed. Zero…orts " + +1328 "¬štŸlized duršg PCI…robe", +__FUNCTION__ +); + +1329  +IFM_FAILURE +; + +1331 ià( +pcÚfig + =ð +NULL +) { + +1332 + `RTE_LOG +( +ERR +, +IFM +, "%s, Configuring…orts failed. " + +1333 "P¬am…cÚfig i NULL\n\r", +__FUNCTION__ +); + +1334  +IFM_FAILURE +; + +1338  +pÜt_id + = 0;…Üt_id < +ifm +. +ÅÜt_štŸlized +;…ort_id++) { + +1339 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +1340 + `RTE_LOG +( +INFO +, +IFM +, "Call ifm_port_setup %u\n\r", + +1341 +pÜt_id +); + +1342 +¡©us + = + +1343 + `ifm_pÜt_£tup +( +pcÚfig +[ +pÜt_id +].port_id, &pconfig[port_id]); + +1344 ià( +¡©us + =ð +IFM_SUCCESS +) + +1345 +ifm +. +ÅÜt_cÚfigu»d +++; + +1347 ià(! +ifm +. +ÅÜt_cÚfigu»d +) { + +1348 + `RTE_LOG +( +ERR +, +IFM +, "%s: Zero…orts‡re configured\n\r", + +1349 +__FUNCTION__ +); + +1350  +IFM_FAILURE +; + +1352 + `RTE_LOG +( +INFO +, +IFM +, "%s: Number of…orts sucessfully configured:" + +1353 " %d\n\r", +__FUNCTION__ +, +ifm +. +ÅÜt_cÚfigu»d +); + +1354  +IFM_SUCCESS +; + +1355 + } +} + +1357  + $´št_š‹rçû_d‘ažs +() + +1359 +l2_phy_š‹rçû_t + * +pÜt +; + +1360  +i + = 0; + +1361  +sockaddr_š + + +; + +1362 + `´štf +("\n\r"); + +1364 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1365 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RW†ock @ %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 +. +pÜt_li¡ +[i]; i++) { + +1373 +pÜt + = +ifm +. +pÜt_li¡ +[ +i +]; + +1374 + `´štf +(" %u", +pÜt +-> +pmdid +); + +1375 ià( +pÜt +-> +iâame + && + `¡¾’ +(port->ifname)) { + +1376 + `´štf +(" (%s)\t", +pÜt +-> +iâame +); + +1378 + `´štf +("\t\t"); + +1379 + `´štf +("MAC:%02x:%02x:%02x:%02x:%02x:%02x Adminstate:%s" + +1381 +pÜt +-> +maÿddr +[0],…ort->macaddr[1], + +1382 +pÜt +-> +maÿddr +[2],…ort->macaddr[3], + +1383 +pÜt +-> +maÿddr +[4],…ort->macaddr[5], + +1384 +pÜt +-> +admš_¡©us + ? "UP" : "DOWN", + +1385 +pÜt +-> +lšk_¡©us + ? "UP" : "DOWN"); + +1386 + `´štf +("\t\t"); + +1387 + `´štf +("S³ed: %u, %s-du¶ex\n\r", +pÜt +-> +lšk_¥“d +, + +1388 +pÜt +-> +lšk_du¶ex + ? "full" : "half"); + +1389 + `´štf +("\t\t"); + +1391 ià( +pÜt +-> +v4_li¡ + !ð +NULL +) { + +1392 + +. +sš_addr +. +s_addr + = + +1393 ()(( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> + +1394 +addr +; + +1395 + `´štf +("IP: %s/%d", + `š‘_Áß +( + +. +sš_addr +), + +1396 (( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> +add¾’ +); + +1398 + `´štf +("IP: NA"); + +1401 + `´štf +("\r\n"); + +1402 + `´štf +("\t\t"); + +1403 ià( +pÜt +-> +v6_li¡ + !ð +NULL +) { + +1404 +ušt8_t + * +addr + = + +1405 (( +v6li¡_t + *è( +pÜt +-> +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à( +pÜt +-> +æags + & +IFM_SLAVE +) { + +1417 + `´štf +(" IFM_SLAVE "); + +1418 + `´štf +(" MasterPort: %u", + +1419 +pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +); + +1421 ià( +pÜt +-> +æags + & +IFM_MASTER +) { + +1422 + `´štf +(" IFM_MASTER "); + +1423 + `´štf +(" Mode: %u", +pÜt +-> +bÚd_cÚfig +-> +mode +); + +1424 + `´štf +(" Prim¬yPÜt: %u", +pÜt +-> +bÚd_cÚfig +-> +´im¬y +); + +1425 + `´štf +("\n\r"); + +1426 + `´štf +("\t\tSlavePortCount: %u", + +1427 +pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +); + +1428 + `´štf +(" SlavePorts:"); + +1429  +i +; + +1430  +i + = 0; i < +pÜt +-> +bÚd_cÚfig +-> +¦ave_couÁ +; i++) { + +1431 + `´štf +(" %u ", +pÜt +-> +bÚd_cÚfig +-> +¦aves +[ +i +]); + +1433 + `´štf +(" ActivePortCount: %u", + +1434 +pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ +); + +1435 + `´štf +(" ActivePorts:"); + +1436  +i + = 0; i < +pÜt +-> +bÚd_cÚfig +-> +aùive_¦ave_couÁ +; + +1437 +i +++) { + +1438 + `´štf +(" %u ", + +1439 +pÜt +-> +bÚd_cÚfig +-> +aùive_¦aves +[ +i +]); + +1441 + `´štf +("\n\r"); + +1442 + `´štf +("\t\t"); + +1443 + `´štf +("Link_monitor_freq: %u ms ", + +1444 +pÜt +-> +bÚd_cÚfig +-> +š‹º®_ms +); + +1445 + `´štf +(" Link_up_prop_delay: %u ms ", + +1446 +pÜt +-> +bÚd_cÚfig +-> +lšk_up_d–ay_ms +); + +1447 + `´štf +(" Link_down_prop_delay: %u ms ", + +1448 +pÜt +-> +bÚd_cÚfig +-> +lšk_down_d–ay_ms +); + +1449 + `´štf +("\n\r"); + +1450 + `´štf +("\t\t"); + +1451 + `´štf +("Xmit_policy: %u", + +1452 +pÜt +-> +bÚd_cÚfig +-> +xm™_pÞicy +); + +1454 + `´štf +("\n\r"); + +1455 + `´štf +("\t\t"); + +1456 + `´štf +("n_rxpkts: %" +PRIu64 + " ,n_txpkts: %" PRIu64 " ,", + +1457 +pÜt +-> +n_rxpkts +,…Üt-> +n_txpkts +); + +1458  +¹e_‘h_¡©s + +‘h_¡©s +; + +1459 + `¹e_‘h_¡©s_g‘ +( +pÜt +-> +pmdid +, & +‘h_¡©s +); + +1460 + `´štf +("pkts_š: %" +PRIu64 + " ,", +‘h_¡©s +. +ack‘s +); + +1461 + `´štf +("pkts_out: %" +PRIu64 + " ", +‘h_¡©s +. +Ýack‘s +); + +1462 + `´štf +("\n\r"); + +1463 + `´štf +("\t\t"); + +1464 + `´štf +("š_”rs: %" +PRIu64 + " ,", +‘h_¡©s +. +›¼Üs +); + +1465 + `´štf +("š_mis£d: %" +PRIu64 + " ,", +‘h_¡©s +. +imis£d +); + +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 RW†ock @ %d\n\r", + +1473 +__FUNCTION__ +, +__LINE__ +); + +1474 ià( +USE_RTM_LOCKS +) + +1475 + `¹m_uÆock +(); + +1477 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1478 + } +} + + @VIL/l2l3_stack/interface.h + +16 #iâdeà +INTERFACE_H + + +17  + #INTERFACE_H + + + ) + +19  + ~<¡dio.h +> + +20  + ~<¡dlib.h +> + +21  + ~<¡ršg.h +> + +22  + ~<¡dšt.h +> + +23  + ~<š‰y³s.h +> + +24  + ~ + +25  + ~ + +26  + ~<Ãtš‘/š.h +> + +27  + ~<£tjmp.h +> + +28  + ~<¡d¬g.h +> + +29  + ~<ùy³.h +> + +30  + ~<”ºo.h +> + +31  + ~ + +32  + ~ + +33  + ~<¡dboÞ.h +> + +34  + ~ + +35  + ~<Ãtš‘/š.h +> + +36  + ~<¬·/š‘.h +> + +37  + ~<¹e_commÚ.h +> + +38  + ~<¹e_log.h +> + +39  + ~<¹e_m®loc.h +> + +40  + ~<¹e_memÜy.h +> + +41  + ~<¹e_memýy.h +> + +42  + ~<¹e_memzÚe.h +> + +43  + ~<¹e_—l.h +> + +44  + ~<¹e_³r_lcÜe.h +> + +45  + ~<¹e_Ïunch.h +> + +46  + ~<¹e_©omic.h +> + +47  + ~<¹e_cyþes.h +> + +48  + ~<¹e_´eãtch.h +> + +49  + ~<¹e_lcÜe.h +> + +50  + ~<¹e_³r_lcÜe.h +> + +51  + ~<¹e_b¿nch_´ediùiÚ.h +> + +52  + ~<¹e_š‹¼u±s.h +> + +53  + ~<¹e_pci.h +> + +54  + ~<¹e_¿ndom.h +> + +55  + ~<¹e_debug.h +> + +56  + ~<¹e_‘h”.h +> + +57  + ~<¹e_‘hdev.h +> + +58  + ~<¹e_ršg.h +> + +59  + ~<¹e_mempoÞ.h +> + +60  + ~<¹e_mbuf.h +> + +61  + ~<¹e_‘h_ù¾.h +> + +62  + ~<¹e_”ºo.h +> + +63  + ~<¹e_pÜt_‘hdev.h +> + +64  + ~<¹e_‘h_bÚd.h +> + +65  + ~<¹e_rwlock.h +> + +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Þ_cÚfig + { + +133 +ušt32_t + + mpoÞ_size +; + +134 +ušt32_t + + mbufãr_size +; + +136 +ušt32_t + + mÿche_size +; + +138 +ušt32_t + + mýu_sock‘_id +; + +140 } + g__¹e_ÿche_®igÃd +; + +147  + s_pÜt_cÚfig_ + { + +148 +ušt8_t + + mpÜt_id +; + +149  + mÄx_queue +; + +150  + mÁx_queue +; + +151 +ušt32_t + + mtx_buf_size +; + +152 +ušt32_t + + m¡©e +; + +153 +ušt32_t + + m´omisc +; + +154  +mempoÞ_cÚfig + + mmempoÞ +; + +156  +¹e_‘h_cÚf + + mpÜt_cÚf +; + +158  +¹e_‘h_rxcÚf + + mrx_cÚf +; + +160  +¹e_‘h_txcÚf + + mtx_cÚf +; + +162 } + tpÜt_cÚfig_t +; + +169  + s_if_¡©s_ + { + +170 +ušt64_t + + mrx_Åkts +; + +171 +ušt64_t + + mtx_Åkts +; + +172 +ušt64_t + + mrx_by‹s +; + +173 +ušt64_t + + mtx_by‹s +; + +174 +ušt64_t + + mrx_mis£d_pkts +; + +176 +ušt64_t + + mrx_”r_pkts +; + +177 +ušt64_t + + mrx_nobuf_çž +; + +178 +ušt64_t + + mtx_çžed_pkts +; + +179 +ušt64_t + + mq_rxpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +180 +ušt64_t + + mq_txpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +181 +ušt64_t + + mq_rx_by‹s +[ +IFM_QUEUE_STAT_CNTRS +]; + +183 +ušt64_t + + mq_tx_by‹s +[ +IFM_QUEUE_STAT_CNTRS +]; + +185 +ušt64_t + + mq_rx_pkt_drÝ +[ +IFM_QUEUE_STAT_CNTRS +]; + +187 } + t__¹e_ÿche_®igÃd + + tif_¡©s +; + +191  + sbÚd_pÜt + { + +192 +ušt8_t + + mbÚd_pÜtid +; + +194 +ušt8_t + + msock‘_id +; + +196 +ušt8_t + + mmode +; + +198 +ušt8_t + + mxm™_pÞicy +; + +200 +ušt32_t + + mš‹º®_ms +; + +202 +ušt32_t + + mlšk_up_d–ay_ms +; + +204 +ušt32_t + + mlšk_down_d–ay_ms +; + +206 +ušt8_t + + m´im¬y +; + +208 +ušt8_t + + m¦aves +[ +RTE_MAX_ETHPORTS +]; + +210  + m¦ave_couÁ +; + +212 +ušt8_t + + maùive_¦aves +[ +RTE_MAX_ETHPORTS +]; + +214  + maùive_¦ave_couÁ +; + +216 } + g__¹e_ÿche_®igÃd +; + +224  + s_l2_phy_š‹rçû_ + { + +225  +_l2_phy_š‹rçû_ + * + mÃxt +; + +226 +ušt8_t + + mpmdid +; + +227  + mif_šdex +; + +228  + miâame +[ +IFM_IFNAME_LEN +]; + +229 +ušt16_t + + mmtu +; + +230 +ušt8_t + + mmaÿddr +[ +IFM_ETHER_ADDR_SIZE +]; + +231 +ušt32_t + + m´omisc +; + +232 +ušt32_t + + mæags +; + +234 +ušt32_t + + mlšk_¥“d +; + +235 +ušt16_t + + mlšk_du¶ex +:1; + +236 +ušt16_t + + mlšk_autÚeg +:1; + +237 +ušt16_t + + mlšk_¡©us +:1; + +238 +ušt16_t + + madmš_¡©us +:1; + +240  +¹e_mempoÞ + * + mmempoÞ +; + +241 +ušt32_t + + mmš_rx_bufsize +; + +242 +ušt32_t + + mmax_rx_pkŽ’ +; + +243 +ušt16_t + + mmax_rx_queues +; + +244 +ušt16_t + + mmax_tx_queues +; + +245 +ušt64_t + + mn_rxpkts +; + +246 +ušt64_t + + mn_txpkts +; + +247 +if_¡©s + + m¡©s +; + +248 +ušt16_t +(* +»Œ›ve_bulk_pkts +è( + mušt8_t +, + mušt16_t +,  + m¹e_mbuf + **); + +250 +ušt16_t +(* +Œªsm™_bulk_pkts +è( + m_l2_phy_š‹rçû_ + *,  + m¹e_mbuf + **, + mušt64_t +); + +252 (* + mŒªsm™_sšgË_pkt +è( + m_l2_phy_š‹rçû_ + *,  + m¹e_mbuf + *); + +254  +¹e_‘h_dev_tx_bufãr + * + mtx_bufãr +; + +255 +ušt64_t + + mtx_buf_Ën +; + +256 * + mv4_li¡ +; + +257 * + mv6_li¡ +; + +258  +bÚd_pÜt + * + mbÚd_cÚfig +; + +259 +pÜt_cÚfig_t + + mpÜt_cÚfig +; + +260 } + t__¹e_ÿche_®igÃd + + tl2_phy_š‹rçû_t +; + +266  + s_v4li¡_ + { + +267  +_v4li¡_ + * + mÃxt +; + +268 +ušt32_t + + maddr +; + +269  + madd¾’ +; + +270  + mmtu +; + +271 +l2_phy_š‹rçû_t + * + mpÜt +; + +273 } + tv4li¡_t +; + +279  + s_v6li¡_ + { + +280  +_v6li¡_ + * + mÃxt +; + +281 +ušt8_t + + maddr +[ +IFM_IPV6_ADDR_SIZE +]; + +282  + madd¾’ +; + +283  + mmtu +; + +284 +l2_phy_š‹rçû_t + * + mpÜt +; + +285 } + tv6li¡_t +; + +292  + s_ifm_þ›Á_ + { + +293 +ušt32_t + + mþ›Áid +; + +294 (* + mcb_lškupd©e +è( + mušt8_t +, ); + +296 } + t__¹e_ÿche_®igÃd + + tifm_þ›Á +; + +302  + s_š‹rçû_maš_ + { + +303 +l2_phy_š‹rçû_t + * + mpÜt_li¡ +[ +IFM_MAX_PORTARR_SZ +]; + +304 +ušt32_t + + mÅÜt_cÚfigu»d +; + +305 +ušt32_t + + mÅÜt_štŸlized +; + +306 +ušt8_t + + mnþ›Á +; + +307 +ifm_þ›Á + + mif_þ›Á +[ +IFM_MAX_CLIENT +]; + +308 } + t__¹e_ÿche_®igÃd + + tš‹rçû_maš_t +; + +320  +ifm_cÚfigu»_pÜts +( +pÜt_cÚfig_t + * +pcÚfig +); + +333 +l2_phy_š‹rçû_t + * +ifm_g‘_fœ¡_pÜt +(); + +347 +l2_phy_š‹rçû_t + * +ifm_g‘_Ãxt_pÜt +( +ušt8_t + +pÜt_id +); + +359 +l2_phy_š‹rçû_t + * +ifm_g‘_pÜt +( +ušt8_t +); + +371 +l2_phy_š‹rçû_t + * +ifm_g‘_pÜt_by_Çme +(cÚ¡ * +Çme +); + +380  +ifm_»move_pÜt_d‘ažs +( +ušt8_t + +pÜtid +); + +390  +ifm_add_pÜt_to_pÜt_li¡ +( +l2_phy_š‹rçû_t + *); + +399  +is_pÜt_li¡_nuÎ +(); + +412  +ifm_pÜt_£tup +( +ušt8_t + +pÜt_id +, +pÜt_cÚfig_t + *); + +421  +ifm_š™ +(); + +433 +št32_t + +ifm_g‘_ÅÜts_š™Ÿlized +(); + +445 +št32_t + +ifm_g‘_Çùive_pÜts +(); + +457 +št32_t + +ifm_chk_pÜt_v4_’abËd +( +ušt8_t + +pÜt_id +); + +469 +št32_t + +ifm_chk_pÜt_v6_’abËd +( +ušt8_t + +pÜt_id +); + +485 +št16_t + +ifm_»move_v4_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +addr +, + +486 +ušt32_t + +add¾’ +); + +502 +št16_t + +ifm_»move_v6_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +6addr +, + +503 +ušt32_t + +add¾’ +); + +519 +št16_t + +ifm_add_v4_pÜt +( +ušt8_t + +pÜt_id +, +ušt32_t + +addr +, ušt32_ˆ +add¾’ +); + +535 +št8_t + +ifm_add_v6_pÜt +( +ušt8_t + +pÜt_id +, ušt8_ˆ +6addr +[], +ušt32_t + +add¾’ +); + +548  +ifm_Œªsm™_sšgË_pkt +( +l2_phy_š‹rçû_t + * +pÜt +, + +549  +¹e_mbuf + * +tx_pkts +); + +564 +ušt16_t + +ifm_Œªsm™_bulk_pkts +( +l2_phy_š‹rçû_t + *,  +¹e_mbuf + ** +tx_pkts +, + +565 +ušt64_t + +Åkts +); + +580 +ušt16_t + +ifm_»ûive_bulk_pkts +( +ušt8_t + +pÜt_id +, ušt16_ˆ +qid +, + +581  +¹e_mbuf + ** +rx_pkts +); + +594  +ifm_£t_pÜt_´omisc +( +ušt8_t + +pÜt_id +, ušt8_ˆ +’abË +); + +607  +ifm_£t_l2_š‹rçû_mtu +( +ušt8_t + +pÜt_id +, +ušt16_t + +mtu +); + +620  +ifm_upd©e_lšk¡©us +( +ušt8_t + +pÜt_id +, +ušt16_t + +lšk¡©us +); + +633  +ifm_»gi¡”_fÜ_lškupd©e +( +ušt32_t + +þ›Áid +, + +634 (* +cb_lškupd©e +è( +ušt8_t +, )); + +650  + `lsi_ev’t_ÿÎback +( +ušt8_t + +pÜt_id +, +¹e_‘h_ev’t_ty³ + +ty³ +, + +651 * +·¿m +); + +656  + `´št_š‹rçû_d‘ažs +(); + +667  + `ifm_bÚd_pÜt_ü—‹ +(cÚ¡ * +Çme +,  +mode +, +pÜt_cÚfig_t + * +pÜtcÚf +); + +674  + `ifm_bÚd_pÜt_d–‘e +(cÚ¡ * +Çme +); + +683  + `ifm_add_¦ave_pÜt +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +); + +692  + `ifm_»move_¦ave_pÜt +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +); + +701  + `£t_bÚd_mode +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +mode +); + +708  + `g‘_bÚd_mode +( +ušt8_t + +bÚded_pÜt_id +); + +717  + `£t_bÚd_´im¬y +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦ave_pÜt_id +); + +724  + `g‘_bÚd_´im¬y_pÜt +( +ušt8_t + +bÚded_pÜt_id +); + +731  + `g‘_bÚd_¦ave_couÁ +( +ušt8_t + +bÚded_pÜt_id +); + +738  + `g‘_bÚd_aùive_¦ave_couÁ +( +ušt8_t + +bÚded_pÜt_id +); + +747  + `g‘_bÚd_¦aves +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +¦aves +[ +RTE_MAX_ETHPORTS +]); + +756  + `g‘_bÚd_aùive_¦aves +( +ušt8_t + +bÚded_pÜt_id +, + +757 +ušt8_t + +¦aves +[ +RTE_MAX_ETHPORTS +]); + +766  + `£t_bÚd_mac_add»ss +( +ušt8_t + +bÚded_pÜt_id +,  +‘h”_addr + * +mac_addr +); + +773  + `»£t_bÚd_mac_addr +( +ušt8_t + +bÚded_pÜt_id +); + +774  + `g‘_bÚd_mac +( +ušt8_t + +bÚded_pÜt_id +,  +‘h”_addr + * +maÿddr +); + +783  + `£t_bÚd_xm™pÞicy +( +ušt8_t + +bÚded_pÜt_id +, ušt8_ˆ +pÞicy +); + +790  + `g‘_bÚd_xm™pÞicy +( +ušt8_t + +bÚded_pÜt_id +); + +799  + `£t_bÚd_lšk_mÚt™Ü_äequ’cy +( +ušt8_t + +bÚded_pÜt_id +, + +800 +ušt32_t + +š‹º®_ms +); + +807  + `g‘_bÚd_lšk_mڙÜ_äequ’cy +( +ušt8_t + +bÚded_pÜt_id +); + +816  + `£t_bÚd_lškdown_d–ay +( +ušt8_t + +bÚded_pÜt_id +, +ušt32_t + +d–ay_ms +); + +823  + `g‘_bÚd_lšk_down_d–ay +( +ušt8_t + +bÚded_pÜt_id +); + +832  + `£t_bÚd_lškup_d–ay +( +ušt8_t + +bÚded_pÜt_id +, +ušt32_t + +d–ay_ms +); + +839  + `g‘_bÚd_lšk_up_d–ay +( +ušt8_t + +bÚded_pÜt_id +); + +845  + `´št_¡©s +(); + +854  + `ifm_g‘_pÜt_šfo +( +ušt8_t + +pÜt_id +, +l2_phy_š‹rçû_t + * +pÜt_šfo +); + +863  + `ifm_g‘_Ãxt_pÜt_šfo +( +ušt8_t + +pÜt_id +, +l2_phy_š‹rçû_t + * +pÜt_šfo +); + +872  + `cÚfig_ifm_debug +( +dbg +,  +æag +); + + @VIL/l2l3_stack/l2_proto.c + +22  + ~"l2_´Ùo.h +" + +24  +´Ùo_·ck‘_ty³ + * + g´Ùo_li¡ +[3]; + +29 + $li¡_add_ty³ +( +ušt16_t + +ty³ +, + +30 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +31 +l2_phy_š‹rçû_t + *)) + +33 ià( +ty³ + =ð +ETHER_TYPE_IPv4 +) { + +34 +´Ùo_li¡ +[ +IPv4_VAL +] = + +35 + `¹e_m®loc +( +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_m®loc +( +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_m®loc +( +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 + * +pÜt +, + +65 +ušt8_t + +i +, +ušt64_t + * +pkts_mask +, ušt64_ˆ* +¬p_pkts_mask +, + +66 +ušt64_t + * +v4_pkts_mask +, ušt64_ˆ* +v6_pkts_mask +) + +68  +‘h”_hdr + * +‘h += +NULL +; + +69 +ušt16_t + +§me_mac +=0; + +70 +ušt16_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 => mbuf…kt dest mac‡ddr: %x:%x:%x:%x:%x:%x\n", + +84 +__FUNCTION__ +, +‘h +-> +d_addr +. +addr_by‹s +[0], + +85 +‘h +-> +d_addr +. +addr_by‹s +[1],ƒth->d_addr.addr_bytes[2], + +86 +‘h +-> +d_addr +. +addr_by‹s +[3],ƒth->d_addr.addr_bytes[4], + +87 +‘h +-> +d_addr +. +addr_by‹s +[5]); + +88 + `´štf +("% =>…܈maøaddr: %x:%x:%x:%x:%x:%x\n", +__FUNCTION__ +, + +89 +pÜt +-> +maÿddr +[0],…ort->macaddr[1],…ort->macaddr[2], + +90 +pÜt +-> +maÿddr +[3],…ort->macaddr[4],…ort->macaddr[5]); + +94 +§me_mac + = + +95 ( +is_§me_‘h”_addr + + +96 (& +‘h +-> +d_addr +, ( +‘h”_addr + *) +pÜt +-> +maÿddr +) + +98 (( +is_brßdÿ¡_‘h”_addr + + +99 (( +‘h”_addr + *)& +‘h +-> +d_addr +) + +100 && ( +‘hty³ + =ð +ETHER_TYPE_ARP +))) + +101 || ( +‘hty³ + =ð +ETHER_TYPE_IPv6 + + +102 && +‘h +-> +d_addr +. +addr_by‹s +[0] == 0x33 + +103 && +‘h +-> +d_addr +. +addr_by‹s +[1] == 0x33)); + +105 ià(! +§me_mac +) { + +106 +ušt64_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 +ušt64_t + +‹mp_mask + = 1LLU << +i +; + +112 * +v4_pkts_mask + ^ð +‹mp_mask +; + +113 } ià(( +‘hty³ + =ð +ETHER_TYPE_ARP +è&& +§me_mac +) { + +114 +ušt64_t + +‹mp_mask + = 1LLU << +i +; + +115 * +¬p_pkts_mask + ^ð +‹mp_mask +; + +116 } ià(( +‘hty³ + =ð +ETHER_TYPE_IPv6 +è&& +§me_mac +) { + +117 +ušt64_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Þ_hªdËr_»cv +( +¹e_mbuf + ** +pkts_bur¡ +, +ušt16_t + +nb_rx +, + +129 +l2_phy_š‹rçû_t + * +pÜt +) + +131 +ušt8_t + +i +; + +132 +ušt64_t + +pkts_mask + = 0; + +133 +ušt64_t + +¬p_pkts_mask + = 0; + +134 +ušt64_t + +v4_pkts_mask + = 0; + +135 +ušt64_t + +v6_pkts_mask + = 0; + +140  +i + = 0; i < +nb_rx +; i++) { + +141 + `l2_check_mac +( +pkts_bur¡ +, +pÜt +, +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 +, +pÜt +); + +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 +, +pÜt +); + +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 +, +pÜt +); + +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 +, +pÜtid +); + +187 +´Ùo_li¡ +[ +ARP_VAL +]-> + `func +( +pkts_bur¡ +, +nb_rx +, +¬p_pkts_mask +, + +188 +pÜtid +); + +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 +, +pÜtid +); + +205 +´Ùo_li¡ +[ +IPv4_VAL +]-> + `func +( +pkts_bur¡ +, +nb_rx +, +v4_pkts_mask +, + +206 +pÜtid +); + +223 + `¹e_ex™ +( +EXIT_FAILURE +, "Ethertype‚ot found \n"); + +226 + } +} + + @VIL/l2l3_stack/l2_proto.h + +26 #iâdeà +L2_PROTO_H + + +27  + #L2_PROTO_H + + + ) + +29  + ~<¡dio.h +> + +30  + ~<¡dlib.h +> + +31  + ~<¡ršg.h +> + +32  + ~<¡dšt.h +> + +33  + ~<š‰y³s.h +> + +34  + ~ + +35  + ~ + +36  + ~<Ãtš‘/š.h +> + +37  + ~<£tjmp.h +> + +38  + ~<¡d¬g.h +> + +39  + ~<ùy³.h +> + +40  + ~<”ºo.h +> + +41  + ~ + +42  + ~ + +43  + ~<¡dboÞ.h +> + +45  + ~<¹e_commÚ.h +> + +46  + ~<¹e_log.h +> + +47  + ~<¹e_m®loc.h +> + +48  + ~<¹e_memÜy.h +> + +49  + ~<¹e_memýy.h +> + +50  + ~<¹e_memzÚe.h +> + +51  + ~<¹e_—l.h +> + +52  + ~<¹e_³r_lcÜe.h +> + +53  + ~<¹e_Ïunch.h +> + +54  + ~<¹e_©omic.h +> + +55  + ~<¹e_cyþes.h +> + +56  + ~<¹e_´eãtch.h +> + +57  + ~<¹e_lcÜe.h +> + +58  + ~<¹e_³r_lcÜe.h +> + +59  + ~<¹e_b¿nch_´ediùiÚ.h +> + +60  + ~<¹e_š‹¼u±s.h +> + +61  + ~<¹e_pci.h +> + +62  + ~<¹e_¿ndom.h +> + +63  + ~<¹e_debug.h +> + +64  + ~<¹e_‘h”.h +> + +65  + ~<¹e_‘hdev.h +> + +66  + ~<¹e_.h +> + +67  + ~<¹e_ršg.h +> + +68  + ~<¹e_mempoÞ.h +> + +69  + ~<¹e_mbuf.h +> + +70  + ~<¹e_‘h_ù¾.h +> + +71  + ~<š‹rçû.h +> + +74  + #IPv4_VAL + 0 + + ) + +75  + #ARP_VAL + 1 + + ) + +76  + #IPv6_VAL + 2 + + ) + +79  + #L2_PROTO_DBG + 1 + + ) + +84  + s´Ùo_·ck‘_ty³ + { + +85 +ušt16_t + + mty³ +; + +86 (* + mfunc +è( +¹e_mbuf + ** + mm +, +ušt16_t + + mnb_pkts +, +ušt64_t + + mpkt_mask +, +l2_phy_š‹rçû_t + * + mpÜt +); + +87 } + g__¹e_ÿche_®igÃd +; + +98 +li¡_add_ty³ +( +ušt16_t + +ty³ +, + +99 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +100 +l2_phy_š‹rçû_t + *)); + +130 + `l2_check_mac +( +¹e_mbuf + * +m +[ +IFM_BURST_SIZE +], +l2_phy_š‹rçû_t + * +pÜt +, + +131 +ušt8_t + +pos +, +ušt64_t + * +pkts_mask +, ušt64_ˆ* +¬p_pkts_mask +, + +132 +ušt64_t + * +v4_pkts_mask +, ušt64_ˆ* +v6_pkts_mask +); + +147 + `´ÙocÞ_hªdËr_»cv +( +¹e_mbuf + * +m +[ +IFM_BURST_SIZE +], +ušt16_t + +nb_rx +, + +148 +l2_phy_š‹rçû_t + * +pÜt +); + + @VIL/l2l3_stack/l3fwd_common.h + +22 #iâdeà +L3FWD_COMMON_H + + +23  + #L3FWD_COMMON_H + + + ) + +26  + ~<¡dio.h +> + +27  + ~<¡dlib.h +> + +28  + ~<¡dšt.h +> + +29  + ~<š‰y³s.h +> + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~<¡ršg.h +> + +34  + ~<¡d¬g.h +> + +35  + ~<”ºo.h +> + +36  + ~ + +37  + ~<¡dboÞ.h +> + +38  + ~ + +39  + ~ + +42  + ~<¹e_commÚ.h +> + +43  + ~<¹e_hash.h +> + +44  + ~<¹e_jhash.h +> + +45  + ~<¹e_pÜt.h +> + +46  + ~<¹e_veù.h +> + +47  + ~<¹e_by‹Üd”.h +> + +48  + ~<¹e_log.h +> + +49  + ~<¹e_memÜy.h +> + +50  + ~<¹e_memýy.h +> + +51  + ~<¹e_memzÚe.h +> + +52  + ~<¹e_—l.h +> + +53  + ~<¹e_³r_lcÜe.h +> + +54  + ~<¹e_Ïunch.h +> + +55  + ~<¹e_©omic.h +> + +56  + ~<¹e_cyþes.h +> + +57  + ~<¹e_´eãtch.h +> + +58  + ~<¹e_lcÜe.h +> + +59  + ~<¹e_³r_lcÜe.h +> + +60  + ~<¹e_b¿nch_´ediùiÚ.h +> + +61  + ~<¹e_š‹¼u±s.h +> + +62  + ~<¹e_pci.h +> + +63  + ~<¹e_¿ndom.h +> + +64  + ~<¹e_debug.h +> + +65  + ~<¹e_‘h”.h +> + +66  + ~<¹e_‘hdev.h +> + +67  + ~<¹e_ršg.h +> + +68  + ~<¹e_mempoÞ.h +> + +69  + ~<¹e_mbuf.h +> + +70  + ~<¹e_.h +> + +71  + ~<¹e_tý.h +> + +72  + ~<¹e_udp.h +> + +73  + ~<¹e_bË_hash.h +> + +74  + ~<¹e_bË.h +> + +75  + ~<¹e_bË_Ím.h +> + +76  + ~<¹e_¡ršg_âs.h +> + +77  + ~<¹e_ýuæags.h +> + +78  + ~ + +79  + ~ + +80  + ~<¹e_bË_Ím_v6.h +> + +85  + #MAX_ROUTES + 4 + + ) + +86  + #L3FWD_DEBUG + 1 + + ) + +87  + #MULTIPATH_FEAT + 1 + + ) + +94  +l3fwd_š™ +(); + +99  +pÝuϋ_Ím4_bË_rou‹s +(); + +104  +pÝuϋ_Ím6_bË_rou‹s +(); + +109  +pÝuϋ_Ím_rou‹s +(); + + @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  + ~<š‰y³s.h +> + +29 * + gÍm4_bË +; + +32  +¹e_hash + * + gl2_adj_hash_hªdË +; + +33  +¹e_hash + * + gfib_·th_hash_hªdË +; + +35 +l3_¡©s_t + + g¡©s +; + +38 +ušt8_t + + gnh_lšks +[ +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 +ušt8_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 +("IP‡nd 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³ + * + g´Ùo_ty³ +[2]; + +119  + $Ím_š™ +() + +123  +¹e_bË_Ím_·¿ms + +Ím_·¿ms + = { + +124 . +Çme + = "LPMv4", + +125 . +n_ruËs + = +IPV4_L3FWD_LPM_MAX_RULES +, + +126 . +numb”_tbl8s + = +IPV4_L3FWD_LPM_NUMBER_TBL8S +, + +127 . +æags + = 0, + +128 . +’Œy_unique_size + = ( +fib_šfo +), + +129 . +off£t + = 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 +("Failedo create LPM IPV4able\n"); + +142  +¹e_hash_·¿m‘”s + +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_hªdË + = + `¹e_hash_ü—‹ +(& +l2_adj_v4_·¿ms +); + +153 ià( +l2_adj_hash_hªdË + =ð +NULL +) { + +154 + `´štf +("L2 ADJ„te_hash_create failed\n"); + +157 + `´štf +("l2_adj_hash_hªdË %p\n\n", (*) +l2_adj_hash_hªdË +); + +161  +¹e_hash_·¿m‘”s + +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_hªdË + = + `¹e_hash_ü—‹ +(& +fib_·th_v4_·¿ms +); + +172 ià( +fib_·th_hash_hªdË + =ð +NULL +) { + +173 + `´štf +("FIB…ath„te_hash_create failed\n"); + +177 + } +} + +179  + $Ím4_bË_rou‹_add +( +routšg_šfo + * +d©a +) + +182  +routšg_šfo + * +fib + = +d©a +; + +183  +¹e_bË_Ím_key + +Ím_key + = { + +184 . + + = +fib +-> +d¡__addr +, + +185 . +d•th + = +fib +->depth, + +187 +ušt8_t + +i +; + +188  +TÙ®_rou‹_couÁ +; + +189  +fib_šfo + +’Œy +; + +190 +’Œy +. +d¡__addr + = + `¹e_bsw­32 +( +fib +->dst_ip_addr); + +191 +’Œy +. +d•th + = +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 + `pÝuϋ_fib_·th +( +fib +-> +nh__addr +[ +i +], fib-> +out_pÜt +[i]); + +215 ià( +fib_·th_addr +) { + +217 +’Œy +. +·th +[ +i +] = +fib_·th_addr +; + +218 + `´štf +("Fib info forhe 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-> +d•th +, + +226 +fib_·th_addr +, + +227 (*) +’Œy +. +·th +[ +i +]-> +l2_adj_±r +); + +229 + `´štf +("Fib infØf܁hDe¡ 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-> +d•th +); + +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 +("Failedo Add IP„oute\n"); + +245 +TÙ®_rou‹_couÁ +++; + +246 + `´štf +("TÙ® Rou‹d Added : %u, Key_found: %d\n", +TÙ®_rou‹_couÁ +, + +247 +key_found +); + +248 + `´štf +("Adding Routeo LPMable...\n"); + +250 + `´štf +("Iterate with Cuckoo Hashable\n"); + +251 + `™”©e_cuckoo_hash_bË +(); + +253 + } +} + +255  + $Ím4_bË_rou‹_d–‘e +( +ušt32_t + +d¡_ +, +ušt8_t + +d•th +) + +258  +¹e_bË_Ím_key + +Ím_key + = { + +259 . + + = +d¡_ +, + +260 . +d•th + = depth, + +263  +key_found +, +»t +; + +264 * +’Œy + = +NULL +; + +266 +’Œy + = + `¹e_zm®loc +( +NULL +, 512, +RTE_CACHE_LINE_SIZE +); + +269 +»t + = + +270 +¹e_bË_Ím_Ýs +. + `f_d–‘e +( +Ím4_bË +, & +Ím_key +, & +key_found +, +’Œy +); + +272 ià( +»t +) { + +273 + `´štf +("Failedo Delete IP„oute from LPMv4able\n"); + +277 + `´štf +("Deleted„oute from LPMable (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. +d•th +, +key_found +); + +284 + `»move_fib_l2_adj_’Œy +( +’Œy +); + +285 + `¹e_ä“ +( +’Œy +); + +286 + `´štf +("Iterate with Cuckoo Hashable\n"); + +287 + `™”©e_cuckoo_hash_bË +(); + +289 + } +} + +292 + $Ím4_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ušt16_t + +nb_pkts +, + +293 +ušt64_t + +pkts_mask +, + +294 +l2_phy_š‹rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +295 +ušt64_t + * +h™_mask +) + +298  +routšg_bË_’Œy + * +v4_’Œ›s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +299 +ušt64_t + +lookup_h™_mask_v4 + = 0; + +300  +¡©us +; + +301 +ušt64_t + +pkts_key_mask + = +pkts_mask +; + +302 +ušt64_t + +lookup_miss_mask_v4 + = +pkts_mask +; + +304  +ušt64_t + +£Á_couÁ +; + +305  +ušt64_t + +rcvd_couÁ +; + +306 +rcvd_couÁ + +ð +nb_pkts +; + +307 ià( +L3FWD_DEBUG +) { + +308 +´štf + + +310 +nb_pkts +, +rcvd_couÁ +, (*) +pkts_mask +); + +312 +ušt32_t + +d¡_addr_off£t + = + +313 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +315 ; +pkts_key_mask +;) { + +317 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_key_mask +); + +318 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +319 +pkts_key_mask + &ð~ +pkt_mask +; + +320  +¹e_mbuf + * +mbuf + = +pkts_bur¡ +[ +pos +]; + +321 +ušt32_t + * +Ím_key + = +NULL +; + +322 +ušt32_t + * +d¡_addr + = +NULL +; + +323 +Ím_key + = ( +ušt32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, 128); + +324 +d¡_addr + = + +325 ( +ušt32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, + +326 +d¡_addr_off£t +); + +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 IP„oute\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 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +lookup_miss_mask_v4 +); + +364 +ušt64_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 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +lookup_h™_mask_v4 +); + +378 +ušt64_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 +ušt8_t + +ecmp_·th + = 0; + +387 +ecmp_·th + = + `_hash_lßd_b®ªû +( +pkts_bur¡ +[ +pos +]); + +388 +ušt8_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_lšks +[ +’Œ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_pÜt +-> +v4_li¡ + !ð +NULL +) + +419 + `»que¡_¬p +( +fib_·th +-> +l2_adj_±r +-> +phy_pÜt +-> + +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 +ušt8_t + * +‘h_de¡ + = + +433 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +434 +ušt8_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 + `memýy +( +‘h_de¡ +, +fib_·th +-> +l2_adj_±r +-> +l2_¡ršg +, ( +‘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_¡ršg +[ +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 +pÜt_±r +[ +pos +] = +fib_·th +-> +l2_adj_±r +-> +phy_pÜt +; + +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_pÜt +, +£Á_couÁ +); + +470 + } +} + +472  + $is_v®id_v4_pkt +( +v4_hdr + * +pkt +, +ušt32_t + +lšk_Ën +) + +474 ià( +lšk_Ën + < ( +v4_hdr +)) + +476 ià((( +pkt +-> +v”siÚ_ihl +) >> 4) != 4) + +478 ià(( +pkt +-> +v”siÚ_ihl + & 0xf) < 5) + +480 ià( + `¹e_ýu_to_be_16 +( +pkt +-> +tÙ®_Ëngth +è< ( +v4_hdr +)) + +483 + } +} + +486 + $g‘_de¡_mac_fÜ_ÃxthÝ +( +ušt32_t + +Ãxt_hÝ_ +, + +487 +ušt8_t + +out_phy_pÜt +,  +‘h”_addr + * +hw_addr +) + +489  +¬p_’Œy_d©a + * +¬p_d©a + = +NULL +; + +490  +¬p_key_v4 + +¬p_key +; + +491 +¬p_key +. +pÜt_id + = +out_phy_pÜt +; + +492 +¬p_key +. + + = +Ãxt_hÝ_ +; + +494 +¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +¬p_key +); + +495 ià( +¬p_d©a + =ð +NULL +) { + +496 + `´štf +("ARPƒntry is‚ot found for ip %x,…ort %d\n", + +497 +Ãxt_hÝ_ +, +out_phy_pÜt +); + +500 + `‘h”_addr_cÝy +(& +¬p_d©a +-> +‘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_d©a + = +NULL +; + +507 +l2_adj_key +. +fžËr1 + = 0; + +508 +l2_adj_key +. +fžËr2 + = 0; + +509 +l2_adj_key +. +fžËr3 + = 0; + +511  +»t + = + +512 + `¹e_hash_lookup_d©a +( +l2_adj_hash_hªdË +, & +l2_adj_key +, + +513 (**)& +»t_l2_adj_d©a +); + +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_d©a +; + +529 + } +} + +531  + $»move_fib_l2_adj_’Œy +(* +’Œy +) + +533  +fib_šfo + +’Œy1 +; + +534 + `memýy +(& +’Œ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_pÜt +, + +541 +fib_·th_addr +-> +»fcouÁ +); + +542 +fib_·th_addr +-> +»fcouÁ +--; + +543 + `´štf +("AFTER fib_pathƒntry,‚h_ip %x,…ort %d,„efcount %d\n", + +544 +fib_·th_addr +-> +nh_ +, fib_·th_addr-> +out_pÜt +, + +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_pÜt_id + = +fib_·th_addr +-> +out_pÜt +, + +558 #ifdeà +L3FWD_DEBUG + + +559 +´štf + + +561 +l2_adj_key +. +Next_hÝ_ +,†2_adj_key. +out_pÜt_id +, + +562 +adj_addr +-> +»fcouÁ +); + +565 + `¹e_hash_d–_key +( +l2_adj_hash_hªdË +, & +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_pÜt + = +fib_·th_addr +->out_port, + +575 +´štf + + +577 +fib_·th_addr +-> +nh_ +, fib_·th_addr-> +out_pÜt +, + +578 +fib_·th_addr +-> +»fcouÁ +); + +579 + `¹e_hash_d–_key +( +fib_·th_hash_hªdË +, & +·th_key +); + +580 + `¹e_ä“ +( +fib_·th_addr +); + +581 +fib_·th_addr + = +NULL +; + +583 + } +} + +585  +l2_adj_’Œy + * + $pÝuϋ_l2_adj +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +) + +588  +l2_adj_key_v4 + +l2_adj_key +; + +589 +l2_adj_key +. +out_pÜt_id + = +pÜtid +; + +590 +l2_adj_key +. +Next_hÝ_ + = +addr +; + +591 +l2_adj_key +. +fžËr1 + = 0; + +592 +l2_adj_key +. +fžËr2 + = 0; + +593 +l2_adj_key +. +fžËr3 + = 0; + +595  +‘h”_addr + +‘h_d¡ +; + +596  +l2_adj_’Œy + * +adj_d©a + = +NULL +; + +599 +adj_d©a + = + `»Œ›ve_l2_adj_’Œy +( +l2_adj_key +); + +601 ià( +adj_d©a +) { + +603 +´štf + + +605 +l2_adj_key +. +Next_hÝ_ +,†2_adj_key. +out_pÜt_id +, + +606 +adj_d©a +-> +»fcouÁ +,‡dj_data); + +607 + `‘h”_addr_cÝy +(& +adj_d©a +-> +‘h_addr +, & +‘h_d¡ +); + +608 +adj_d©a +-> +»fcouÁ +++; + +609 +´štf + + +611 +l2_adj_key +. +Next_hÝ_ +,†2_adj_key. +out_pÜt_id +, + +612 +adj_d©a +-> +»fcouÁ +,‡dj_data); + +613  +adj_d©a +; + +616  +‘h”_addr + +‘h_¤c +; + +617 +l2_phy_š‹rçû_t + * +pÜt +; + +619 +pÜt + = + `ifm_g‘_pÜt +( +pÜtid +); + +621 ià( +pÜt + !ð +NULL +) { + +622 + `memýy +(& +‘h_¤c +, & +pÜt +-> +maÿddr +, ( +‘h”_addr +)); + +623 * +p + = (*) +‘h_¤c +. +addr_by‹s +; + +624 + `´štf +("S-MAC %x:%x:%x:%x:%x:%x\n\r", +p +[0],…[1],…[2],…[3], + +625 +p +[4],…[5]); + +627 +ušt32_t + +size + = + +628 + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_’Œy +)); + +629 +adj_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +630 ià( +adj_d©a + =ð +NULL +) { + +631 + `´štf +("L2 Adjacency memory‡llocation failed !\n"); + +632  +NULL +; + +635 +adj_d©a +-> +out_pÜt_id + = +pÜtid +; + +636 +adj_d©a +-> +Next_hÝ_ + = +addr +; + +637 +adj_d©a +-> +»fcouÁ +++; + +639 +adj_d©a +-> +phy_pÜt + = +pÜt +; + +640 + `mem£t +(& +adj_d©a +-> +‘h_addr +, 0, ( +‘h”_addr +)); + +641 + `mem£t +(& +adj_d©a +-> +l2_¡ršg +, 0, 256); + +644 + `¹e_hash_add_key_d©a +( +l2_adj_hash_hªdË +, & +l2_adj_key +, + +645 +adj_d©a +); + +646 #ifdeà +L2L3_DEBUG + + +647 +´štf + + +649 +adj_d©a +); + +652 #ifdeà +L2L3_DEBUG + + +653 + `´štf +("\ÀPORT %u IS DOWN...\n", +pÜtid +); + +655  +NULL +; + +658 ià( + `g‘_de¡_mac_fÜ_ÃxthÝ +( +addr +, +pÜtid +, & +‘h_d¡ +)) { + +659 * +p + = (*) +‘h_d¡ +. +addr_by‹s +; + +660 +´štf + + +662 +p +[0],…[1],…[2],…[3],…[4],…[5]); + +664 + `memýy +( +adj_d©a +-> +l2_¡ršg +, & +‘h_d¡ +, ( +‘h”_addr +)); + +665 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], & +‘h_¤c +, + +666 ( +‘h”_addr +)); + +669 + `‘h”_addr_cÝy +(& +‘h_d¡ +, & +adj_d©a +-> +‘h_addr +); + +670 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +672 +adj_d©a +-> +æags + = +L2_ADJ_UNRESOLVED +; + +673 +´štf + + +676  +adj_d©a +; + +677 + } +} + +679  +fib_·th + * + $pÝuϋ_fib_·th +( +ušt32_t + +nh_ +, +ušt8_t + +pÜtid +) + +682  +fib_·th_key_v4 + +·th_key +; + +683 +·th_key +. +out_pÜt + = +pÜtid +; + +684 +·th_key +. +nh_ + =‚h_ip; + +685 +·th_key +. +fžËr1 + = 0; + +686 +·th_key +. +fžËr2 + = 0; + +687 +·th_key +. +fžËr3 + = 0; + +689  +fib_·th + * +fib_d©a + = +NULL +; + +692 +fib_d©a + = + `»Œ›ve_fib_·th_’Œy +( +·th_key +); + +694 ià( +fib_d©a +) { + +697 +´štf + + +699 +fib_d©a +-> +nh_ +, fib_d©a-> +out_pÜt +, fib_d©a-> +»fcouÁ +, + +700 +fib_d©a +); + +701 +fib_d©a +-> +»fcouÁ +++; + +702 +fib_d©a +-> +l2_adj_±r +-> +»fcouÁ +++; + +703 +´štf + + +705 +fib_d©a +-> +nh_ +, fib_d©a-> +out_pÜt +, fib_d©a-> +»fcouÁ +); + +706  +fib_d©a +; + +708 + `´štf +("fib_pathƒntry Doesn't Exists.......\n"); + +711 +fib_d©a + = +NULL +; + +712  +l2_adj_’Œy + * +l2_adj_±r + = +NULL +; + +713 +l2_adj_±r + = + `pÝuϋ_l2_adj +( +nh_ +, +pÜtid +); + +715 ià( +l2_adj_±r +) { + +717 +ušt32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +fib_·th +)); + +718 +fib_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +720 +fib_d©a +-> +out_pÜt + = +pÜtid +; + +721 +fib_d©a +-> +nh_ + =‚h_ip; + +722 +fib_d©a +-> +»fcouÁ +++; + +723 +fib_d©a +-> +l2_adj_±r + =†2_adj_ptr; + +725 + `´štf +("%s: g‘…܈d‘až %u %d\n\r", +__FUNCTION__ +, +pÜtid +, + +726 +__LINE__ +); + +728  +¡©us +; + +729 +¡©us + = + +730 + `¹e_hash_add_key_d©a +( +fib_·th_hash_hªdË +, & +·th_key +, + +731 +fib_d©a +); + +732 ià( +¡©us +) { + +733 +´štf + + +735 +fib_d©a +-> +nh_ +, fib_d©a-> +out_pÜt +, + +736 +fib_d©a +-> +»fcouÁ +); + +738 + `¹e_ä“ +( +fib_d©a +); + +740 +´štf + + +742 +fib_d©a +-> +nh_ +, fib_d©a-> +out_pÜt +, + +743 +fib_d©a +-> +»fcouÁ +); + +744 +´štf + + +746 +l2_adj_±r +, +fib_d©a +, fib_data->l2_adj_ptr); + +747 +´štf + + +749 +l2_adj_±r +, +fib_d©a +); + +750  +fib_d©a +; + +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_pÜt +); + +764  +fib_·th + * +»t_fib_·th_d©a + = +NULL +; + +765  +»t + = + +766 + `¹e_hash_lookup_d©a +( +fib_·th_hash_hªdË +, & +·th_key +, + +767 (**)& +»t_fib_·th_d©a +); + +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_pÜt +); + +776  +»t_fib_·th_d©a +; + +778 + } +} + +780  + $™”©e_cuckoo_hash_bË +() + +782 cÚ¡ * +Ãxt_key +; + +783 * +Ãxt_d©a +; + +784 +ušt32_t + +™” + = 0; + +786 + `´štf +("\n\t\t\t FIB_path Cacheable...."); + +787 +´štf + + +789 + `´štf +("\n\tNextHop IP Port Refcount†2_adj_ptr_addrress\n"); + +790 +´štf + + +793  +¹e_hash_™”©e + + +794 ( +fib_·th_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= 0) { + +795  +fib_·th + * +tmp_d©a + = (fib_·th *) +Ãxt_d©a +; + +796  +fib_·th_key_v4 + +tmp_key +; + +797 + `memýy +(& +tmp_key +, +Ãxt_key +, (tmp_key)); + +798 + `´štf +("\ˆ%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +800 ( +tmp_d©a +-> +nh_ + & 0xFF000000) >> 24, + +801 ( +tmp_d©a +-> +nh_ + & 0x00FF0000) >> 16, + +802 ( +tmp_d©a +-> +nh_ + & 0x0000FF00) >> 8, + +803 ( +tmp_d©a +-> +nh_ + & 0x000000FF),mp_d©a-> +out_pÜt +, + +804 +tmp_d©a +-> +»fcouÁ +,mp_d©a-> +l2_adj_±r +); + +807 +™” + = 0; + +809 + `´štf +("\n\t\t\t L2 ADJ Cacheable....."); + +810 +´štf + + +812 +´štf + + +814 +´štf + + +817  +¹e_hash_™”©e + + +818 ( +l2_adj_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= 0) { + +819  +l2_adj_’Œy + * +l2_d©a + = (l2_adj_’Œy *) +Ãxt_d©a +; + +820  +l2_adj_key_v4 + +l2_key +; + +821 + `memýy +(& +l2_key +, +Ãxt_key +, (l2_key)); + +822 + `´štf +("\ˆ%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +824 ( +l2_d©a +-> +Next_hÝ_ + & 0xFF000000) >> 24, + +825 ( +l2_d©a +-> +Next_hÝ_ + & 0x00FF0000) >> 16, + +826 ( +l2_d©a +-> +Next_hÝ_ + & 0x0000FF00) >> 8, + +827 ( +l2_d©a +-> +Next_hÝ_ + & 0x000000FF), + +828 +l2_d©a +-> +out_pÜt_id +,†2_d©a-> +l2_¡ršg +[0], + +829 +l2_d©a +-> +l2_¡ršg +[1],†2_data->l2_string[2], + +830 +l2_d©a +-> +l2_¡ršg +[3],†2_data->l2_string[4], + +831 +l2_d©a +-> +l2_¡ršg +[5],†2_data->l2_string[6], + +832 +l2_d©a +-> +l2_¡ršg +[7],†2_data->l2_string[8], + +833 +l2_d©a +-> +l2_¡ršg +[9],†2_data->l2_string[10], + +834 +l2_d©a +-> +l2_¡ršg +[11],†2_d©a-> +phy_pÜt +); + +836 + } +} + +838  + $´št_l3_¡©s +() + +840 + `´štf +("==============================================\n"); + +841 + `´štf +("\t\t L3 STATISTICS \t\n"); + +842 + `´štf +("==============================================\n"); + +843 + `´štf +(" Num oàReûived L3 Pkt  : %lu\n", +¡©s +. +nb_rx_l3_pkt +); + +844 + `´štf +(" Num oàDrݳd L3 Pkt  : %lu\n", +¡©s +. +nb_l3_drÝ_pkt +); + +845 + `´štf +(" Num oàT¿nsm™‹d L3 Pkt  : %lu\n", +¡©s +. +nb_tx_l3_pkt +); + +846 + `´štf +(" Num oàICMP Pkt Rcvd‡ˆL3 : %lu\n", +¡©s +. +nb_rx_l3_icmp_pkt +); + +847 + `´štf +(" Num oàICMP Pkt TxØICMP : %lu\n", +¡©s +. +nb_tx_l3_icmp_pkt +); + +848 +¡©s +. +tÙ®_nb_rx_l3_pkt + = sts. +nb_rx_l3_icmp_pkt + + sts. +nb_rx_l3_pkt +; + +849 +¡©s +. +tÙ®_nb_tx_l3_pkt + = sts. +nb_tx_l3_icmp_pkt + + sts. +nb_tx_l3_pkt +; + +850 + `´štf +(" Total Num of Rcvd…kts‡t L3: %lu\n", + +851 +¡©s +. +tÙ®_nb_rx_l3_pkt +); + +852 + `´štf +(" Total Num of Sent…kts‡t L3: %lu\n", + +853 +¡©s +. +tÙ®_nb_tx_l3_pkt +); + +854 + } +} + +857 + $_loÿl_·ck‘s_´oûss +( +¹e_mbuf + ** +pkt_bur¡ +, +ušt16_t + +nb_rx +, + +858 +ušt64_t + +icmp_pkt_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +860 + `´oûss_¬picmp_pkt_·r£ +( +pkt_bur¡ +, +nb_rx +, +icmp_pkt_mask +, +pÜt +); + +861 + } +} + +864 + $_fÜw¬d_d–iv” +( +¹e_mbuf + ** +pkt_bur¡ +, +ušt16_t + +nb_pkts +, + +865 +ušt64_t + +v4_fÜw¬d_pkts_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +867 ià( +L3FWD_DEBUG +) { + +868 +´štf + + +870 +nb_pkts +, +pÜt +-> +pmdid +); + +872 +ušt64_t + +pkts_fÜ_´oûss + = +v4_fÜw¬d_pkts_mask +; + +874  +v4_hdr + *ipv4_hdr; + +875 +l2_phy_š‹rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +876 +ušt64_t + +h™_mask + = 0; + +878 ; +pkts_fÜ_´oûss +;) { + +880 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_fÜ_´oûss +); + +881 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +882 +pkts_fÜ_´oûss + &ð~ +pkt_mask +; + +883 +v4_hdr + = + +884 + `¹e_pktmbuf_mtod_off£t +( +pkt_bur¡ +[ +pos +],  +v4_hdr + *, + +885 ( +‘h”_hdr +)); + +887 ià( + `is_v®id_v4_pkt +( +v4_hdr +, +pkt_bur¡ +[ +pos +]-> +pkt_Ën +) < 0) { + +888 + `¹e_pktmbuf_ä“ +( +pkt_bur¡ +[ +pos +]); + +889 +pkt_bur¡ +[ +pos +] = +NULL +; + +890 +v4_fÜw¬d_pkts_mask + &ð~(1LLU << +pos +); + +891 +nb_pkts +--; + +892 +¡©s +. +nb_l3_drÝ_pkt +++; + +896 ià( +L3FWD_DEBUG +) { + +897 +´štf + + +899 +nb_pkts +, +v4_fÜw¬d_pkts_mask +); + +903 + `Ím4_bË_lookup +( +pkt_bur¡ +, +nb_pkts +, +v4_fÜw¬d_pkts_mask +, +pÜt_±r +, + +904 & +h™_mask +); + +906 ; +h™_mask +;) { + +908 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +h™_mask +); + +909 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +910 +h™_mask + &ð~ +pkt_mask +; + +912 +pÜt_±r +[ +pos +]-> + `Œªsm™_sšgË_pkt +(port_ptr[pos], + +913 +pkt_bur¡ +[ +pos +]); + +916 + } +} + +919 + $l3_´ÙocÞ_ty³_add +( +ušt8_t + +´ÙocÞ_ty³ +, + +920 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +921 +l2_phy_š‹rçû_t + * +pÜt +)) + +923  +´ÙocÞ_ty³ +) { + +924  +IPPROTO_ICMP +: + +925 +´Ùo_ty³ +[ +IP_LOCAL +] = + +926 + `¹e_m®loc +( +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_m®loc +( +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_·ck‘s +( +¹e_mbuf + ** +m +, +ušt16_t + +nb_pkts +, + +946 +ušt64_t + +v®id_pkts_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +948 ià( +L3FWD_DEBUG +) { + +949 +´štf + + +951 +nb_pkts +, +pÜt +-> +pmdid +); + +953 +ušt64_t + +pkts_fÜ_´oûss + = +v®id_pkts_mask +; + +955  +v4_hdr + *ipv4_hdr; + +956 +ušt32_t + +cÚfigu»_pÜt_ + = 0; + +957 +ušt64_t + +icmp_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +958 +ušt64_t + +v4_fÜw¬d_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +959 +ušt16_t + +nb_icmp_pkt + = 0; + +960 +ušt16_t + +nb_l3_pkt + = 0; + +962 ià( +pÜt +-> +v4_li¡ + !ð +NULL +) + +963 +cÚfigu»_pÜt_ + = + +964 ( +ušt32_t +è((( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> +addr +); + +966 ; +pkts_fÜ_´oûss +;) { + +968 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_fÜ_´oûss +); + +969 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +970 +pkts_fÜ_´oûss + &ð~ +pkt_mask +; + +971 +v4_hdr + = + +972 + `¹e_pktmbuf_mtod_off£t +( +m +[ +pos +],  +v4_hdr + *, + +973 ( +‘h”_hdr +)); + +975 ià(( +v4_hdr +-> +Ãxt_´Ùo_id + =ð +IPPROTO_ICMP +) + +976 && ( +v4_hdr +-> +d¡_addr + =ð +cÚfigu»_pÜt_ +)) { + +977 +v4_fÜw¬d_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 +pÜt +); + +995 ià( +v4_fÜw¬d_pkts_mask +) { + +996 ià( +L3FWD_DEBUG +) + +997 +´štf + + +999 +´Ùo_ty³ +[ +IP_REMOTE +]-> + `func +( +m +, +nb_l3_pkt +, + +1000 +v4_fÜw¬d_pkts_mask +, +pÜt +); + +1002 + } +} + +1005 + $»sÞve_l2_adj +( +ušt32_t + +ÃxthÝ_ +, +ušt8_t + +out_pÜt_id +, + +1006 cÚ¡  +‘h”_addr + * +hw_addr +) + +1008  +l2_adj_key_v4 + +l2_adj_key + = { + +1009 . +Next_hÝ_ + = +ÃxthÝ_ +, + +1010 . +out_pÜt_id + = out_port_id, + +1014  +l2_adj_’Œy + * +adj_d©a + = + `»Œ›ve_l2_adj_’Œy +( +l2_adj_key +); + +1016 ià( +adj_d©a +) { + +1018 +´štf + + +1020 +l2_adj_key +. +Next_hÝ_ +,†2_adj_key. +out_pÜt_id +, + +1021 +adj_d©a +-> +»fcouÁ +,‡dj_data); + +1023 ià( +adj_d©a +-> +æags + =ð +L2_ADJ_UNRESOLVED + + +1024 || + `memcmp +( +hw_addr +, & +adj_d©a +-> +‘h_addr +, + +1025 ( +‘h”_addr +))) { + +1026 + `memýy +( +adj_d©a +-> +l2_¡ršg +, +hw_addr +, ( +‘h”_addr +)); + +1027 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], + +1028 & +adj_d©a +-> +phy_pÜt +-> +maÿddr +, + +1029 ( +‘h”_addr +)); + +1032 + `‘h”_addr_cÝy +( +hw_addr +, & +adj_d©a +-> +‘h_addr +); + +1033 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +1039 +l2_phy_š‹rçû_t + * +pÜt +; + +1040 +pÜt + = + `ifm_g‘_pÜt +( +out_pÜt_id +); + +1041 ià( +pÜt + !ð +NULL +) { + +1043 +ušt32_t + +size + = + +1044 + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_’Œy +)); + +1045 +adj_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1046 ià( +adj_d©a + =ð +NULL +) { + +1047 + `´štf +("L2 Adjacency memory‡llocation failed !\n"); + +1051 +adj_d©a +-> +out_pÜt_id + = out_port_id; + +1052 +adj_d©a +-> +Next_hÝ_ + = +ÃxthÝ_ +; + +1053 +adj_d©a +-> +phy_pÜt + = +pÜt +; + +1055 + `memýy +( +adj_d©a +-> +l2_¡ršg +, +hw_addr +, ( +‘h”_addr +)); + +1056 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], &adj_d©a-> +phy_pÜt +-> +maÿddr +, + +1057 ( +‘h”_addr +)); + +1060 + `‘h”_addr_cÝy +( +hw_addr +, & +adj_d©a +-> +‘h_addr +); + +1061 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +1063 + `¹e_hash_add_key_d©a +( +l2_adj_hash_hªdË +, & +l2_adj_key +, + +1064 +adj_d©a +); + +1065 +´štf + + +1067 +adj_d©a +); + +1069 + `´štf +("PORT:%u IS DOWN...\n", +out_pÜt_id +); + +1072 + } +} + +1074 +ušt8_t + + $_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +) + +1076 +ušt32_t + +¤c_addr_off£t + = + +1077 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST +; + +1078 +ušt32_t + +d¡_addr_off£t + = + +1079 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +1080 +ušt32_t + * +d¡_addr + = +NULL +; + +1081 +ušt32_t + * +¤c_addr + = +NULL +; + +1082 +¤c_addr + = + +1083 ( +ušt32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +¤c_addr_off£t +); + +1084 +d¡_addr + = + +1085 ( +ušt32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +d¡_addr_off£t +); + +1087 +ušt32_t + +hash_key1 + = * +¤c_addr +; + +1088 +ušt32_t + +hash_key2 + = * +d¡_addr +; + +1090 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1091 +hash_key2 + = +hash_key1 +; + +1093 +hash_key1 + = + `rÙr32 +(hash_key1, 16); + +1094 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1096 +hash_key2 + = +hash_key1 +; + +1098 +hash_key1 + = + `rÙr32 +(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 +ušt32_t + + $rÙr32 +( +ušt32_t + +v®ue +,  +couÁ +) + +1109 cÚ¡  +mask + = ( +CHAR_BIT + * ( +v®ue +) - 1); + +1110 +couÁ + &ð +mask +; + +1111  ( +v®ue + >> +couÁ +è| (v®u<< ((-couÁè& +mask +)); + +1112 + } +} + +1115 + $_loÿl_out_d–iv” +( +¹e_mbuf + ** +pkt_bur¡ +, +ušt16_t + +nb_rx +, + +1116 +ušt64_t + +v4_pkts_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +1118 + `_fÜw¬d_d–iv” +( +pkt_bur¡ +, +nb_rx +, +v4_pkts_mask +, +pÜt +); + +1119 + } +} + + @VIL/l2l3_stack/l3fwd_lpm4.h + +21 #iâdeà +L3FWD_LPM_H + + +22  + #L3FWD_LPM_H + + + ) + +24  + ~<¡dio.h +> + +25  + ~<¡dlib.h +> + +26  + ~<¡dšt.h +> + +27  + ~<š‰y³s.h +> + +28  + ~ + +29  + ~<¡ršg.h +> + +30  + ~ + +31  + ~<¡d¬g.h +> + +32  + ~<”ºo.h +> + +33  + ~ + +34  + ~<¡dboÞ.h +> + +36  + ~<¹e_debug.h +> + +37  + ~<¹e_memÜy.h +> + +38  + ~<¹e_‘h”.h +> + +39  + ~<¹e_‘hdev.h +> + +40  + ~<¹e_ršg.h +> + +41  + ~<¹e_mempoÞ.h +> + +42  + ~<¹e_cyþes.h +> + +43  + ~<¹e_mbuf.h +> + +44  + ~<¹e_.h +> + +45  + ~<¹e_tý.h +> + +46  + ~<¹e_udp.h +> + +47  + ~<¹e_Ím.h +> + +48  + ~<¹e_Ím6.h +> + +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  + sroutšg_šfo + { + +84 +ušt32_t + + md¡__addr +; + +85 +ušt8_t + + md•th +; + +86 +ušt32_t + + mm‘ric +; + +87 +ušt32_t + + mfib_nh_size +; + +88 +ušt32_t + + mnh__addr +[ +MAX_FIB_PATHS +]; + +89 +ušt8_t + + mout_pÜt +[ +MAX_FIB_PATHS +]; + +90 } + g__¹e_ÿche_®igÃd +; + +96  + sfib_·th + { + +97 +ušt32_t + + mnh_ +; + +98 +ušt8_t + + mout_pÜt +; + +99 +ušt32_t + + m»fcouÁ +; + +100  +l2_adj_’Œy + * + ml2_adj_±r +; + +101 } + g__¹e_ÿche_®igÃd +; + +107  + sfib_šfo + { + +108 +ušt32_t + + md¡__addr +; + +109 +ušt32_t + + mm‘ric +; + +110 +ušt32_t + + mfib_nh_size +; + +111 +ušt8_t + + md•th +; + +112  +fib_·th + * + m·th +[ +MAX_FIB_PATHS +]; + +113 } + g__¹e_ÿche_®igÃd +; + +118  + sl2_adj_’Œy + { + +119  +‘h”_addr + + m‘h_addr +; + +120 +ušt32_t + + mNext_hÝ_ +; + +121 +ušt8_t + + mout_pÜt_id +; + +122 +ušt32_t + + m»fcouÁ +; + +123 +ušt8_t + + ml2_¡ršg +[256]; + +124 +l2_phy_š‹rçû_t + * + mphy_pÜt +; + +125 +ušt8_t + + mæags +; + +126 } + g__¹e_ÿche_®igÃd +; + +131  + sfib_·th_key_v4 + { + +132 +ušt32_t + + mnh_ +; + +133 +ušt8_t + + mout_pÜt +; + +134 +ušt8_t + + mfžËr1 +; + +135 +ušt8_t + + mfžËr2 +; + +136 +ušt8_t + + mfžËr3 +; + +142  + sl2_adj_key_v4 + { + +143 +ušt32_t + + mNext_hÝ_ +; + +144 +ušt8_t + + mout_pÜt_id +; + +145 +ušt8_t + + mfžËr1 +; + +146 +ušt8_t + + mfžËr2 +; + +147 +ušt8_t + + mfžËr3 +; + +153  + sroutšg_bË_’Œy + { + +154 +ušt32_t + + m +; + +155 +ušt8_t + + mpÜt_id +; + +156  +l2_adj_’Œy + * + ml2_adj_±r +; + +157 } + g__¹e_ÿche_®igÃd +; + +162  + sl3fwd_¡©s + { + +163 +ušt64_t + + mnb_rx_l3_pkt +; + +164 +ušt64_t + + mnb_tx_l3_pkt +; + +165 +ušt64_t + + mnb_rx_l3_icmp_pkt +; + +167 +ušt64_t + + mnb_tx_l3_icmp_pkt +; + +169 +ušt64_t + + mnb_l3_drÝ_pkt +; + +170 +ušt64_t + + mtÙ®_nb_rx_l3_pkt +; + +172 +ušt64_t + + mtÙ®_nb_tx_l3_pkt +; + +174 } + tl3_¡©s_t +; + +176  + s_´ÙocÞ_ty³ + { + +177 +ušt8_t + + m´ÙocÞ_ty³ +; + +178 (* + mfunc +è( + m¹e_mbuf + **, + mušt16_t +, + mušt64_t +, + +179 + ml2_phy_š‹rçû_t + *); + +180 } + g__¹e_ÿche_®igÃd +; + +189  +Ím_š™ +(); + +198  +Ím4_bË_rou‹_add +( +routšg_šfo + * +šput_¬¿y +); + +209  +Ím4_bË_rou‹_d–‘e +( +ušt32_t + + +, +ušt8_t + +d•th +); + +222  +Ím4_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ušt16_t + +nb_pkts +, + +223 +ušt64_t + +v®id_pkts_mask +, + +224 +l2_phy_š‹rçû_t + * +pÜt +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +225 +ušt64_t + * +h™_mask +); + +236  +is_v®id_v4_pkt +( +v4_hdr + * +pkt +, +ušt32_t + +lšk_Ën +); + +251  +l3fwd_rx_v4_·ck‘s +( +¹e_mbuf + ** +m +, +ušt16_t + +nb_pkts +, + +252 +ušt64_t + +pkt_mask +, +l2_phy_š‹rçû_t + * +pÜt +); + +265  +g‘_de¡_mac_fÜ_ÃxthÝ +( +ušt32_t + +Ãxt_hÝ_ +, + +266 +ušt8_t + +out_phy_pÜt +,  +‘h”_addr + * +hw_addr +); + +276  +l2_adj_’Œy + * +»Œ›ve_l2_adj_’Œy +( +l2_adj_key_v4 + +l2_adj_key +); + +288  +l2_adj_’Œy + * +pÝuϋ_l2_adj +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +); + +299  +fib_·th + * +pÝuϋ_fib_·th +( +ušt32_t + +nh_ +, +ušt8_t + +pÜtid +); + +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 +ušt8_t + +_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +); + +353 +ušt32_t + +rÙr32 +(ušt32_ˆ +v®ue +,  +couÁ +); + +356 +»sÞve_l2_adj +( +ušt32_t + +ÃxthÝ_ +, +ušt8_t + +out_pÜt_id +, + +357 cÚ¡  +‘h”_addr + * +hw_addr +); + +360 +l3_´ÙocÞ_ty³_add +( +ušt8_t + +´ÙocÞ_ty³ +, + +361 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +362 +l2_phy_š‹rçû_t + *)); + +365 + `_loÿl_·ck‘s_´oûss +( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +366 +l2_phy_š‹rçû_t + *); + +367  + `_loÿl_out_d–iv” +( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +368 +l2_phy_š‹rçû_t + *); + +371 + `_fÜw¬d_d–iv” +( +¹e_mbuf + **, +ušt16_t +, +ušt64_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 * + gÍm6_bË +; + +30  +¹e_hash + * + gl2_adj_v6_hash_hªdË +; + +31  +¹e_hash + * + gfib_·th_v6_hash_hªdË +; + +32 +ušt8_t + +nh_lšks +[ +MAX_SUPPORTED_FIB_PATHS +][ +HASH_BUCKET_SIZE +]; + +33 +l3_¡©s_t + +¡©s +; + +35  +v6_´ÙocÞ_ty³ + * + g´Ùo_ty³ +[2]; + +37  + $Ím6_š™ +() + +42  +¹e_bË_Ím_v6_·¿ms + +Ím6_·¿ms + = { + +43 . +Çme + = "LPMv6", + +44 . +n_ruËs + = +IPV6_L3FWD_LPM_MAX_RULES +, + +45 . +numb”_tbl8s + = +IPV6_L3FWD_LPM_NUMBER_TBL8S +, + +46 . +’Œy_unique_size + = ( +v6_fib_šfo +), + +47 . +off£t + = 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 +("Failedo create LPM IPV6able\n"); + +60  +¹e_hash_·¿m‘”s + +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_hªdË + = + `¹e_hash_ü—‹ +(& +l2_adj_v6_·¿ms +); + +69 ià( +l2_adj_v6_hash_hªdË + =ð +NULL +) { + +70 + `´štf +("ND for IPV6„te_hash_create failed.\n"); + +73 + `´štf +("ND IPV6_hash_handle %p\n\n", + +74 (*) +l2_adj_v6_hash_hªdË +); + +78  +¹e_hash_·¿m‘”s + +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 . +exŒa_æag + = 1, + +88 +fib_·th_v6_hash_hªdË + = + `¹e_hash_ü—‹ +(& +fib_·th_v6_·¿ms +); + +90 ià( +fib_·th_v6_hash_hªdË + =ð +NULL +) { + +91 + `´štf +("FIB…ath„te_hash_create failed\n"); + +95 + } +} + +97  + $Ím6_bË_rou‹_add +( +v6_routšg_šfo + * +d©a +) + +100  +v6_routšg_šfo + * +fib + = +d©a +; + +102  +¹e_bË_Ím_v6_key + +Ím6_key +; + +103 +ušt8_t + +i +; + +104  +i + = 0; i < 16; i++) { + +105 +Ím6_key +. + +[ +i +] = +fib +-> +d¡_v6 +[i]; + +107 +Ím6_key +. +d•th + = +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 +. +d•th + = +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 + `pÝuϋ_v6_fib_·th +( +fib +-> +nh_v6 +[ +i +], fib-> +out_pÜt +[i]); + +140 ià( +v6_fib_·th_addr +) { + +141 +’Œy +. +·th +[ +i +] = +v6_fib_·th_addr +; + +142 + `´štf +("Fib…ath 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 +-> +d•th +, + +151 +v6_fib_·th_addr +, + +152 (*) +’Œy +. +·th +[ +i +]-> +l2_adj_v6_±r +); + +154 + `´štf +("Fib…ath 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 +-> +d•th +); + +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 +("Failedo Add IP„oute in LPMv6\n"); + +182 + `´štf +("Added„outeo IPv6 LPMable (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 +-> +d•th +); + +191 +TÙ®_rou‹_couÁ +++; + +192 + `´štf +("TÙ® Rou‹d 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‹_d–‘e +( +ušt8_t + +d¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ušt8_ˆ +d•th +) + +206  +¹e_bË_Ím_v6_key + +Ím6_key +; + +207 + `memýy +(& +Ím6_key +. + +, & +d¡_v6 +, ( +RTE_LPM_IPV6_ADDR_SIZE +)); + +208 +Ím6_key +. +d•th + = depth; + +209  +key_found +, +»t +; + +210 * +’Œy + = +NULL +; + +211 +’Œy + = + `¹e_zm®loc +( +NULL +, 512, +RTE_CACHE_LINE_SIZE +); + +213 +»t + = + +214 +¹e_bË_Ím_v6_Ýs +. + `f_d–‘e +( +Ím6_bË +, & +Ím6_key +, & +key_found +, + +215 +’Œy +); + +217 ià( +»t +) { + +218 + `´štf +("Failedo Delete IP„oute from LPMv6able\n"); + +222 + `´štf +("Deleted„oute from IPv6 LPMable (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. +d•th +, +key_found +); + +232 + `»move_v6_fib_l2_adj_’Œy +( +’Œy +); + +233 + `¹e_ä“ +( +’Œy +); + +235 + } +} + +238 + $Ím6_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, + +239 +ušt16_t + +nb_pkts +, + +240 +ušt64_t + +pkts_mask +, + +241 +l2_phy_š‹rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +242 +ušt64_t + * +h™_mask +) + +244  +v6_routšg_bË_’Œy + + +245 * +v6_’Œ›s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +246 +ušt64_t + +lookup_h™_mask_v6 + = 0; + +247  +¡©us +; + +248 +ušt64_t + +lookup_miss_mask + = +pkts_mask +; + +250 +ušt32_t + +d¡_addr_off£t + = + +251 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +252 +ušt64_t + +pkts_key_mask + = +pkts_mask +; + +255 ; +pkts_key_mask +;) { + +257 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_key_mask +); + +258 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +259 +pkts_key_mask + &ð~ +pkt_mask +; + +261 +ušt8_t + * +Ím6_key +; + +262 +ušt8_t + +d¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +263 + `memýy +( +d¡_addr +, + +264 ( +ušt8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts_bur¡ +[ +pos +], + +265 +d¡_addr_off£t +), + +266 +RTE_LPM_IPV6_ADDR_SIZE +); + +267 +Ím6_key + = + +268 ( +ušt8_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +pkts_bur¡ +[ +pos +], + +270 + `memýy +( +Í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 IP„oute\n"); + +283 + `´štf +(" IPV6 Looku°Mask Aᔠ= %p\n", (*) +lookup_h™_mask_v6 +); + +284 +lookup_miss_mask + =†ookup_miss_mask & (~ +lookup_h™_mask_v6 +); + +285 ià( +L3FWD_DEBUG +) { + +286 + `´štf +("AFTER†ookup_hit_mask = %p,†ookup_miss_mask =%p\n", + +287 (*) +lookup_h™_mask_v6 +, (*) +lookup_miss_mask +); + +290 ; +lookup_miss_mask +;) { + +292 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +lookup_miss_mask +); + +293 +ušt64_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 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +lookup_h™_mask_v6 +); + +305 +ušt64_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 +ušt8_t + +ecmp_·th + = + `v6_hash_lßd_b®ªû +( +pkts_bur¡ +[ +pos +]); + +315 +ušt8_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_lšks +[ +’Œ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 has‚ot„esolved\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 +ušt8_t + * +‘h_de¡ + = + +352 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +353 +ušt8_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 + `memýy +( +‘h_de¡ +, +fib_·th +-> +l2_adj_v6_±r +-> +l2_¡ršg +, + +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 +pÜt_±r +[ +pos +] = +fib_·th +-> +l2_adj_v6_±r +-> +phy_pÜt +; + +387 ià( +L3FWD_DEBUG +) + +388 + `´štf +("Successfully sento…ort %u \n\r", + +389 +fib_·th +-> +out_pÜt +); + +392 + } +} + +394  + $l3fwd_rx_v6_·ck‘s +( +¹e_mbuf + ** +m +, +ušt16_t + +nb_pkts +, + +395 +ušt64_t + +v®id_pkts_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +397 ià(! +pÜt +) + +399 ià( +L3FWD_DEBUG +) { + +400 +´štf + + +402 +PRIu64 + "\n", +nb_pkts +, +pÜt +-> +pmdid +, +v®id_pkts_mask +); + +404 +ušt64_t + +pkts_fÜ_´oûss + = +v®id_pkts_mask +; + +406  +v6_hdr + *ipv6_hdr; + +408 +ušt64_t + +icmp_pkts_mask + = +v®id_pkts_mask +; + +409 +ušt64_t + +v6_fÜw¬d_pkts_mask + = +v®id_pkts_mask +; + +410 +ušt16_t + +nb_icmpv6_pkt + = 0; + +411 +ušt16_t + +nb_l3_pkt + = 0; + +413 +ušt8_t + +cÚfigu»d_pÜt_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { 0 }; + +414 +št8_t + +sÞic™ed_node_muÉiÿ¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { + +417 +ušt8_t + +de¡_v6_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +419 + `mem£t +( +de¡_v6_addr +, 0, +RTE_LPM_IPV6_ADDR_SIZE +); + +421 + `´štf +("\n% : LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +422  +ii +; + +423 ià( +pÜt +-> +v6_li¡ + !ð +NULL +) { + +424  +ii + = 0; ii < 16; ii += 1) { + +425 +cÚfigu»d_pÜt_v6 +[ +ii +] = + +426 (( +v6li¡_t + *è( +pÜt +-> +v6_li¡ +))-> +addr +[ +ii +]; + +431  +ii + = 0; ii < 16; ii += 2) { + +432 ià( +pÜt + &&…Üt-> +v6_li¡ +) + +433 + `´štf +("%02X%02X ", + +434 (( +v6li¡_t + *è( +pÜt +-> +v6_li¡ +))-> +addr +[ +ii +], + +435 (( +v6li¡_t + *è( +pÜt +-> +v6_li¡ +))-> +addr +[ +ii + + + +439 + `´štf +("\n% : LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +440  +ii + = 0; ii < 16; ii += 2) { + +441 + `´štf +("%02X%02X ", +cÚfigu»d_pÜt_v6 +[ +ii +], + +442 +cÚfigu»d_pÜt_v6 +[ +ii + + 1]); + +445 ; +pkts_fÜ_´oûss +;) { + +447 + `´štf +("\n% : LINE # %u\n", +__FUNCTION__ +, +__LINE__ +); + +448 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_fÜ_´oûss +); + +449 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +450 +pkts_fÜ_´oûss + &ð~ +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_off£t +( +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 +, & +cÚfigu»d_pÜt_v6 +[0], + +486 +RTE_LPM_IPV6_ADDR_SIZE +) + +487 || ! + `memcmp +(& +de¡_v6_addr +[0], + +488 & +sÞic™ed_node_muÉiÿ¡_addr +[0], + +489 +RTE_LPM_IPV6_ADDR_SIZE +))) { + +490 +v6_fÜw¬d_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 +pÜt +); + +508 ià( +v6_fÜw¬d_pkts_mask +) { + +509 ià( +L3FWD_DEBUG +) + +510 +´štf + + +512 +´Ùo_ty³ +[ +IP_REMOTE +]-> + `func +( +m +, +nb_l3_pkt +, + +513 +v6_fÜw¬d_pkts_mask +, +pÜt +); + +515 + } +} + +517  +v6_fib_·th + * + $pÝuϋ_v6_fib_·th +( +ušt8_t + + +518 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +519 +ušt8_t + +pÜtid +) + +522  +fib_·th_key_v6 + +·th_key +; + +523 +ušt8_t + +i +; + +524  +i + = 0; i < 16; i++) { + +525 +·th_key +. +nh_v6 +[ +i +] =‚h_ipv6[i]; + +527 +·th_key +. +out_pÜt + = +pÜtid +; + +528 +·th_key +. +fžËr1 + = 0; + +529 +·th_key +. +fžËr2 + = 0; + +530 +·th_key +. +fžËr3 + = 0; + +532  +v6_fib_·th + * +fib_d©a + = +NULL +; + +534 +fib_d©a + = + `»Œ›ve_v6_fib_·th_’Œy +( +·th_key +); + +536 ià( +fib_d©a +) { + +538 + `´štf +(" Fib…athƒntryƒxists 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 +pÜtid +); + +547 +fib_d©a +-> +»fcouÁ +++; + +548  +fib_d©a +; + +550 + `´štf +("IPv6 fib_pathƒntry Doesn't Exists.......\n"); + +554 +fib_d©a + = +NULL +; + +555  +l2_adj_v6_’Œy + * +l2_adj_±r + = +NULL +; + +556 +l2_adj_±r + = + `pÝuϋ_v6_l2_adj +( +nh_v6 +, +pÜtid +); + +558 ià( +l2_adj_±r +) { + +560 +ušt32_t + +size + = + +561 + `RTE_CACHE_LINE_ROUNDUP +(( +v6_fib_·th +)); + +562 +fib_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +564  +i + = 0; i < 16; i++) { + +565 +fib_d©a +-> +nh_v6 +[ +i +] =‚h_ipv6[i]; + +567 +fib_d©a +-> +out_pÜt + = +pÜtid +; + +570 +fib_d©a +-> +»fcouÁ +++; + +571 +fib_d©a +-> +l2_adj_v6_±r + = +l2_adj_±r +; + +574 + `¹e_hash_add_key_d©a +( +fib_·th_v6_hash_hªdË +, & +·th_key +, + +575 +fib_d©a +); + +576 +´štf + + +578 +l2_adj_±r +, +fib_d©a +); + +579  +fib_d©a +; + +581 +´štf + + +584  +NULL +; + +586 + } +} + +588  +l2_adj_v6_’Œy + * + $pÝuϋ_v6_l2_adj +( +ušt8_t + + +589 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +590 +ušt8_t + +pÜtid +) + +593  +l2_adj_key_v6 + +l2_adj_key +; + +594 +ušt8_t + +i +; + +595  +i + = 0; i < 16; i++) { + +596 +l2_adj_key +. +nh_v6 +[ +i +] =‚h_ipv6[i]; + +598 +l2_adj_key +. +out_pÜt_id + = +pÜtid +; + +599 +l2_adj_key +. +fžËr1 + = 0; + +600 +l2_adj_key +. +fžËr2 + = 0; + +601 +l2_adj_key +. +fžËr3 + = 0; + +603  +l2_adj_v6_’Œy + * +adj_d©a + = +NULL +; + +604  +‘h”_addr + +‘h_d¡ +; + +606 +adj_d©a + = + `»Œ›ve_v6_l2_adj_’Œy +( +l2_adj_key +); + +608 ià( +adj_d©a +) { + +610 + `´štf +("ipv6_l2_adj_entryƒxists 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 +pÜtid +); + +619 + `‘h”_addr_cÝy +(& +adj_d©a +-> +‘h_addr +, & +‘h_d¡ +); + +620 +adj_d©a +-> +»fcouÁ +++; + +621  +adj_d©a +; + +624  +‘h”_addr + +‘h_¤c +; + +625 +ušt16_t + +‘h”_ty³ + = 0x086DD; + +626 +l2_phy_š‹rçû_t + * +pÜt +; + +627 +pÜt + = + `ifm_g‘_pÜt +( +pÜtid +); + +628 ià( +pÜt + =ð +NULL +) { + +629 + `´štf +("PORT %u IS DOWN.. UÇbˁشoûs !\n", +pÜtid +); + +630  +NULL +; + +633 + `memýy +(& +‘h_¤c +, & +pÜt +-> +maÿddr +, ( +‘h”_addr +)); + +634 +ušt32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_’Œy +)); + +635 +adj_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +636 ià( +adj_d©a + =ð +NULL +) { + +637 + `´štf +("L2 Adjacency memory‡llocation failed !\n"); + +638  +NULL +; + +641 +adj_d©a +-> +out_pÜt_id + = +pÜtid +; + +643  +i + = 0; i < 16; i++) { + +644 +adj_d©a +-> +nh_v6 +[ +i +] =‚h_ipv6[i]; + +646 +adj_d©a +-> +»fcouÁ +++; + +647 +adj_d©a +-> +phy_pÜt + = +pÜt +; + +649 + `¹e_hash_add_key_d©a +( +l2_adj_v6_hash_hªdË +, & +l2_adj_key +, +adj_d©a +); + +652 ià( + `g‘_de¡_mac_fÜ_ÃxthÝ_v6 +( +nh_v6 +, +pÜtid +, & +‘h_d¡ +)) { + +654 + `‘h”_addr_cÝy +(& +‘h_d¡ +, & +adj_d©a +-> +‘h_addr +); + +657 + `memýy +(& +adj_d©a +-> +l2_¡ršg +, & +‘h_d¡ +, + +658 ( +‘h”_addr +)); + +659 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], & +‘h_¤c +, + +660 ( +‘h”_addr +)); + +661 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[12], & +‘h”_ty³ +, 2); + +663 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +664 +´štf + + +666 +adj_d©a +); + +668  +adj_d©a +; + +670 +adj_d©a +-> +æ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_d©a + = +NULL +; + +682  +»t + = + +683 + `¹e_hash_lookup_d©a +( +l2_adj_v6_hash_hªdË +, & +l2_adj_key +, + +684 (**)& +»t_l2_adj_d©a +); + +685 ià( +»t + < 0) { + +686 +´štf + + +688 +»t +, +EINVAL +, +ENOENT +); + +690 + `´štf +("L2 Adj hash†ookup Successful..!!!\n"); + +691  +»t_l2_adj_d©a +; + +693  +NULL +; + +694 + } +} + +696  + $g‘_de¡_mac_fÜ_ÃxthÝ_v6 +( +ušt8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +697 +ušt32_t + +out_phy_pÜt +, + +698  +‘h”_addr + * +hw_addr +) + +700  +nd_’Œy_d©a + * +nd_d©a + = +NULL +; + +701  +nd_key_v6 + +tmp_nd_key +; + +702 +ušt8_t + +i +; + +703  +i + = 0; i < 16; i++) { + +704 +tmp_nd_key +. +v6 +[ +i +] = +nh_v6 +[i]; + +706 +tmp_nd_key +. +pÜt_id + = +out_phy_pÜt +; + +708 +nd_d©a + = + `»Œ›ve_nd_’Œy +( +tmp_nd_key +); + +709 ià( +nd_d©a + =ð +NULL +) { + +710 + `´štf +("NDƒntry is‚ot found\n"); + +713 + `‘h”_addr_cÝy +(& +nd_d©a +-> +‘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_d©a + = +NULL +; + +723  +»t + = + +724 + `¹e_hash_lookup_d©a +( +fib_·th_v6_hash_hªdË +, & +·th_key +, + +725 (**)& +»t_fib_·th_d©a +); + +726 ià( +»t + < 0) { + +727 +´štf + + +729 +»t +, +EINVAL +, +ENOENT +); + +730  +NULL +; + +732  +»t_fib_·th_d©a +; + +734 + } +} + +736  + $»move_v6_fib_l2_adj_’Œy +(* +’Œy +) + +738  +v6_fib_šfo + +’Œy1 +; + +739 + `memýy +(& +’Œ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_pathƒntry is‚ot 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_pÜt +, fib_·th_addr-> +»fcouÁ +); + +755 +fib_·th_addr +-> +»fcouÁ +--; + +756 + `´štf +("AFTER fib_pathƒntry is‚ot 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_pÜt +, 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 + `memýy +(& +l2_adj_key +. +nh_v6 +, +fib_·th_addr +->nh_ipv6, + +777 +RTE_LPM_IPV6_ADDR_SIZE +); + +778 +l2_adj_key +. +out_pÜt_id + = + +779 +fib_·th_addr +-> +out_pÜt +, + +780 + `¹e_hash_d–_key +( +l2_adj_v6_hash_hªdË +, + +781 & +l2_adj_key +); + +782 + `¹e_ä“ +( +adj_addr +); + +783 +adj_addr + = +NULL +; + +786  +fib_·th_key_v6 + +·th_key +; + +787 + `memýy +(& +·th_key +. +nh_v6 +, +fib_·th_addr +->nh_ipv6, + +788 +RTE_LPM_IPV6_ADDR_SIZE +); + +789 +·th_key +. +out_pÜt + = +fib_·th_addr +->out_port; + +790 + `¹e_hash_d–_key +( +fib_·th_v6_hash_hªdË +, & +·th_key +); + +791 + `¹e_ä“ +( +fib_·th_addr +); + +792 +fib_·th_addr + = +NULL +; + +794 + } +} + +796  + $is_v®id_v6_pkt +( +v6_hdr + * +pkt +, +ušt32_t + +lšk_Ën +) + +798 ià( +lšk_Ën + < ( +v4_hdr +)) + +800 ià( + `¹e_ýu_to_be_16 +( +pkt +-> +·ylßd_Ën +è< ( +v6_hdr +)) + +804 + } +} + +807 + $v6_l3_´ÙocÞ_ty³_add +( +ušt8_t + +´ÙocÞ_ty³ +, + +808 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +809 +l2_phy_š‹rçû_t + *)) + +811  +´ÙocÞ_ty³ +) { + +812  +IPPROTO_ICMPV6 +: + +813 +´Ùo_ty³ +[ +IP_LOCAL +] = + +814 + `¹e_m®loc +( +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_m®loc +( +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_loÿl_d–iv” +( +¹e_mbuf + ** +pkt_bur¡ +, +__¹e_unu£d + +ušt16_t + +nb_rx +, + +833 +ušt64_t + +icmp_pkt_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +835 ; +icmp_pkt_mask +;) { + +837 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +icmp_pkt_mask +); + +838 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +839 +icmp_pkt_mask + &ð~ +pkt_mask +; + +841 + `´oûss_icmpv6_pkt +( +pkt_bur¡ +[ +pos +], +pÜt +); + +843 + } +} + +846 + $v6_fÜw¬d_d–iv” +( +¹e_mbuf + ** +pkt_bur¡ +, +ušt16_t + +nb_pkts +, + +847 +ušt64_t + +v6_fÜw¬d_pkts_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +849 ià( +L3FWD_DEBUG +) { + +850 +´štf + + +852 +nb_pkts +, +pÜt +-> +pmdid +); + +854 +ušt64_t + +pkts_fÜ_´oûss + = +v6_fÜw¬d_pkts_mask +; + +856  +v6_hdr + *ipv6_hdr; + +857 +l2_phy_š‹rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +858 +ušt64_t + +h™_mask + = 0; + +860 ; +pkts_fÜ_´oûss +;) { + +862 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_fÜ_´oûss +); + +863 +ušt64_t + +pkt_mask + = 1LLU << +pos +; + +864 +pkts_fÜ_´oûss + &ð~ +pkt_mask +; + +865 +v6_hdr + = + +866 + `¹e_pktmbuf_mtod_off£t +( +pkt_bur¡ +[ +pos +],  +v6_hdr + *, + +867 ( +‘h”_hdr +)); + +870 ià( + `is_v®id_v6_pkt +( +v6_hdr +, +pkt_bur¡ +[ +pos +]-> +pkt_Ën +) < 0) { + +871 + `¹e_pktmbuf_ä“ +( +pkt_bur¡ +[ +pos +]); + +872 +pkt_bur¡ +[ +pos +] = +NULL +; + +873 +v6_fÜw¬d_pkts_mask + &ð~(1LLU << +pos +); + +874 +nb_pkts +--; + +875 +¡©s +. +nb_l3_drÝ_pkt +++; + +879 ià( +L3FWD_DEBUG +) { + +880 +´štf + + +882 +nb_pkts +, +v6_fÜw¬d_pkts_mask +); + +886 + `Ím6_bË_lookup +( +pkt_bur¡ +, +nb_pkts +, +v6_fÜw¬d_pkts_mask +, +pÜt_±r +, + +887 & +h™_mask +); + +888 + } +} + +890 +ušt8_t + + $v6_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +) + +892 +ušt32_t + +¤c_addr_off£t + = + +893 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST_IPV6 +; + +894 +ušt32_t + +d¡_addr_off£t + = + +895 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +896 +ušt8_t + +¤c_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +897 +ušt8_t + +d¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +899 + `memýy +(& +¤c_addr +, + +900 ( +ušt8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +¤c_addr_off£t +), + +901 +RTE_LPM_IPV6_ADDR_SIZE +); + +902 + `memýy +(& +d¡_addr +, + +903 ( +ušt8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +d¡_addr_off£t +), + +904 +RTE_LPM_IPV6_ADDR_SIZE +); + +905 +ušt32_t + +hash_key1 + = 0; + +906 +ušt32_t + +hash_key2 + = 0; + +907 +ušt8_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 + = + `rÙr32 +(hash_key1, +RTE_LPM_IPV6_ADDR_SIZE +); + +915 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +917 +hash_key2 + = +hash_key1 +; + +919 +hash_key1 + = + `rÙr32 +(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 + $»sÞve_v6_l2_adj +( +ušt8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ušt8_ˆ +pÜtid +, + +930  +‘h”_addr + * +hw_addr +) + +932  +l2_adj_v6_’Œy + * +adj_d©a + = +NULL +; + +933  +‘h”_addr + +‘h_d¡ +; + +934 +ušt16_t + +‘h”_ty³ + = 0x086DD; + +936  +l2_adj_key_v6 + +l2_adj_key +; + +937 + `memýy +(& +l2_adj_key +. +nh_v6 +, &nh_v6, +RTE_LPM_IPV6_ADDR_SIZE +); + +938 +l2_adj_key +. +out_pÜt_id + = +pÜtid +; + +940 +adj_d©a + = + `»Œ›ve_v6_l2_adj_’Œy +( +l2_adj_key +); + +941 ià( +adj_d©a +) { + +942 ià( +adj_d©a +-> +æags + =ð +L2_ADJ_UNRESOLVED + + +943 || + `memcmp +(& +adj_d©a +-> +‘h_addr +, +hw_addr +, 6)) { + +944 + `‘h”_addr_cÝy +( +hw_addr +, & +adj_d©a +-> +‘h_addr +); + +947 + `memýy +(& +adj_d©a +-> +l2_¡ršg +, +hw_addr +, + +948 ( +‘h”_addr +)); + +949 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], + +950 & +adj_d©a +-> +phy_pÜt +-> +maÿddr +, + +951 ( +‘h”_addr +)); + +952 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[12], & +‘h”_ty³ +, 2); + +954 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +960 +l2_phy_š‹rçû_t + * +pÜt +; + +961 +pÜt + = + `ifm_g‘_pÜt +( +pÜtid +); + +962 ià( +pÜt + =ð +NULL +) { + +963 + `´štf +("PORT %u IS DOWN..! UÇbˁØProûss\n", +pÜtid +); + +966 +ušt32_t + +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_’Œy +)); + +967 +adj_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +968 ià( +adj_d©a + =ð +NULL +) { + +969 + `´štf +("L2 Adjacency memory‡llocation failed !\n"); + +973 +adj_d©a +-> +out_pÜt_id + = +pÜtid +; + +974 + `memýy +( +adj_d©a +-> +nh_v6 +, &nh_v6, +RTE_LPM_IPV6_ADDR_SIZE +); + +976 +adj_d©a +-> +phy_pÜt + = +pÜt +; + +978 + `‘h”_addr_cÝy +(& +‘h_d¡ +, & +adj_d©a +-> +‘h_addr +); + +981 + `memýy +(& +adj_d©a +-> +l2_¡ršg +, +hw_addr +, ( +‘h”_addr +)); + +982 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[6], & +pÜt +-> +maÿddr +, + +983 ( +‘h”_addr +)); + +984 + `memýy +(& +adj_d©a +-> +l2_¡ršg +[12], & +‘h”_ty³ +, 2); + +986 +adj_d©a +-> +æags + = +L2_ADJ_RESOLVED +; + +989 + `¹e_hash_add_key_d©a +( +l2_adj_v6_hash_hªdË +, & +l2_adj_key +, +adj_d©a +); + +991 + `´štf +(" ND„esolution successful‡nd stored in ipv6_l2_adj_entry %p\n", + +992 +adj_d©a +); + +993 + } +} + +995  + $v6_™”©e__hash_bË +() + +997 cÚ¡ * +Ãxt_key +; + +998 * +Ãxt_d©a +; + +999 +ušt32_t + +™” + = 0; + +1000 +ušt8_t + +ii +; + +1001 + `´štf +("\n\t\t\t IPv6 FIB_path Cacheable...."); + +1002 +´štf + + +1004 +´štf + + +1006 +´štf + + +1009  +¹e_hash_™”©e + + +1010 ( +fib_·th_v6_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= 0) { + +1011  +v6_fib_·th + * +tmp_d©a + = + +1012 ( +v6_fib_·th + *) +Ãxt_d©a +; + +1013  +fib_·th_key_v6 + +tmp_key +; + +1014 + `memýy +(& +tmp_key +, +Ãxt_key +, (tmp_key)); + +1015  +ii + = 0; ii < 16; ii += 2) { + +1016 + `´štf +("%02X%02X ", +tmp_d©a +-> +nh_v6 +[ +ii +], + +1017 +tmp_d©a +-> +nh_v6 +[ +ii + + 1]); + +1019 + `´štf +(" \ˆ%u \ˆ%u \ˆ%p\n", +tmp_d©a +-> +out_pÜt +, + +1020 +tmp_d©a +-> +»fcouÁ +,mp_d©a-> +l2_adj_v6_±r +); + +1024 +™” + = 0; + +1026 + `´štf +("\n\t\t\t L2 ADJ Cacheable....."); + +1027 +´štf + + +1029 +´štf + + +1031 +´štf + + +1033  +¹e_hash_™”©e + + +1034 ( +l2_adj_v6_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= 0) { + +1035  +l2_adj_v6_’Œy + * +l2_d©a + = + +1036 ( +l2_adj_v6_’Œy + *) +Ãxt_d©a +; + +1037  +l2_adj_key_v6 + +l2_key +; + +1038 + `memýy +(& +l2_key +, +Ãxt_key +, (l2_key)); + +1039  +ii + = 0; ii < 16; ii += 2) { + +1040 + `´štf +("%02X%02X ", +l2_d©a +-> +nh_v6 +[ +ii +], + +1041 +l2_d©a +-> +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_d©a +-> +out_pÜt_id +, + +1045 +l2_d©a +-> +l2_¡ršg +[0], + +1046 +l2_d©a +-> +l2_¡ršg +[1], + +1047 +l2_d©a +-> +l2_¡ršg +[2], + +1048 +l2_d©a +-> +l2_¡ršg +[3], + +1049 +l2_d©a +-> +l2_¡ršg +[4], + +1050 +l2_d©a +-> +l2_¡ršg +[5], + +1051 +l2_d©a +-> +l2_¡ršg +[6], + +1052 +l2_d©a +-> +l2_¡ršg +[7], + +1053 +l2_d©a +-> +l2_¡ršg +[8], + +1054 +l2_d©a +-> +l2_¡ršg +[9], + +1055 +l2_d©a +-> +l2_¡ršg +[10], + +1056 +l2_d©a +-> +l2_¡ršg +[11],†2_d©a-> +phy_pÜt +); + +1058 + } +} + + @VIL/l2l3_stack/l3fwd_lpm6.h + +22 #iâdeà +L3FWD_LPM6_H + + +23  + #L3FWD_LPM6_H + + + ) + +25  + ~<¡dio.h +> + +26  + ~<¡dlib.h +> + +27  + ~<¡dšt.h +> + +28  + ~<š‰y³s.h +> + +29  + ~ + +30  + ~<¡ršg.h +> + +31  + ~ + +32  + ~<¡d¬g.h +> + +33  + ~<”ºo.h +> + +34  + ~ + +35  + ~<¡dboÞ.h +> + +37  + ~<¹e_debug.h +> + +38  + ~<¹e_‘h”.h +> + +39  + ~<¹e_‘hdev.h +> + +40  + ~<¹e_ršg.h +> + +41  + ~<¹e_mempoÞ.h +> + +42  + ~<¹e_cyþes.h +> + +43  + ~<¹e_mbuf.h +> + +44  + ~<¹e_.h +> + +45  + ~<¹e_tý.h +> + +46  + ~<¹e_udp.h +> + +47  + ~<¹e_Ím.h +> + +48  + ~<¹e_Ím6.h +> + +49  + ~<¹e_bË_Ím_v6.h +> + +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  + sv6_routšg_šfo + { + +75 +ušt8_t + + md¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +76 +ušt8_t + + md•th +; + +77 +ušt32_t + + mm‘ric +; + +78 +ušt32_t + + mfib_nh_size +; + +79 +ušt8_t + + mnh_v6 +[ +MAX_FIB_PATHS +][ +RTE_LPM_IPV6_ADDR_SIZE +]; + +80 +ušt8_t + + mout_pÜt +[ +MAX_FIB_PATHS +]; + +81 } + g__¹e_ÿche_®igÃd +; + +87  + sv6_fib_·th + { + +88 +ušt8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +89 +ušt32_t + + m»fcouÁ +; + +90 +ušt8_t + + mout_pÜt +; + +91  +l2_adj_v6_’Œy + * + ml2_adj_v6_±r +; + +92 } + g__¹e_ÿche_®igÃd +; + +98  + sv6_fib_šfo + { + +99 +ušt8_t + + md¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +100 +ušt8_t + + md•th +; + +101 +ušt32_t + + mm‘ric +; + +102 +ušt32_t + + mfib_nh_size +; + +103  +v6_fib_·th + * + m·th +[ +MAX_FIB_PATHS +]; + +104 } + g__¹e_ÿche_®igÃd +; + +109  + sl2_adj_v6_’Œy + { + +110  +‘h”_addr + + m‘h_addr +; + +111 +ušt8_t + + mout_pÜt_id +; + +112 +ušt8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +113 +ušt32_t + + m»fcouÁ +; + +114 +ušt8_t + + ml2_¡ršg +[256]; + +115 +l2_phy_š‹rçû_t + * + mphy_pÜt +; + +116 +ušt8_t + + mæags +; + +117 } + g__¹e_ÿche_®igÃd +; + +122  + sl2_adj_key_v6 + { + +125 +ušt8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +126 +ušt8_t + + mout_pÜt_id +; + +127 +ušt8_t + + mfžËr1 +; + +128 +ušt8_t + + mfžËr2 +; + +129 +ušt8_t + + mfžËr3 +; + +135  + sfib_·th_key_v6 + { + +138 +ušt8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +139 +ušt8_t + + mout_pÜt +; + +140 +ušt8_t + + mfžËr1 +; + +141 +ušt8_t + + mfžËr2 +; + +142 +ušt8_t + + mfžËr3 +; + +145  + sv6_´ÙocÞ_ty³ + { + +146 +ušt8_t + + m´ÙocÞ_ty³ +; + +147 (* + mfunc +è( + m¹e_mbuf + **, + mušt16_t +, + mušt64_t +, + +148 + ml2_phy_š‹rçû_t + *); + +149 } + g__¹e_ÿche_®igÃd +; + +157  +Ím6_š™ +(); + +166  +Ím6_bË_rou‹_add +( +v6_routšg_šfo + * +d©a +); + +177  +Ím6_bË_rou‹_d–‘e +( +ušt8_t + +d¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +178 +ušt8_t + +d•th +); + +191  +Ím6_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ušt16_t + +nb_pkts +, + +192 +ušt64_t + +pkts_mask +, + +193 +l2_phy_š‹rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +194 +ušt64_t + * +h™_mask +); + +209  +l3fwd_rx_v6_·ck‘s +( +¹e_mbuf + ** +m +, +ušt16_t + +nb_pkts +, + +210 +ušt64_t + +v®id_pkts_mask +, + +211 +l2_phy_š‹rçû_t + * +š_pÜt +); + +222  +v6_fib_·th + * +pÝuϋ_v6_fib_·th +( +ušt8_t + + +223 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +224 +ušt8_t + +out_pÜt +); + +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 + * +pÝuϋ_v6_l2_adj +( +ušt8_t + + +258 +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +259 +ušt8_t + +pÜtid +); + +272  +g‘_de¡_mac_fÜ_ÃxthÝ_v6 +( +ušt8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +273 +ušt32_t + +out_phy_pÜt +, + +274  +‘h”_addr + * +hw_addr +); + +281  +»move_v6_fib_l2_adj_’Œy +(* +’Œy +); + +284 +v6_l3_´ÙocÞ_ty³_add +( +ušt8_t + +´ÙocÞ_ty³ +, + +285 (* +func +è( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +286 +l2_phy_š‹rçû_t + *)); + +289 + `v6_loÿl_d–iv” +( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +290 +l2_phy_š‹rçû_t + *); + +293 + `v6_fÜw¬d_d–iv” +( +¹e_mbuf + **, +ušt16_t +, +ušt64_t +, + +294 +l2_phy_š‹rçû_t + *); + +296  + `is_v®id_v6_pkt +( +v6_hdr + * +pkt +, +ušt32_t + +lšk_Ën +); + +297 +ušt8_t + + `v6_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +); + +311  + `»sÞve_v6_l2_adj +( +ušt8_t + +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], ušt8_ˆ +pÜtid +, + +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  +routšg_šfo + + gšput_¬¿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_routšg_šfo + + gv6_š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_·ck‘s +); + +92 + `li¡_add_ty³ +( +ETHER_TYPE_IPv6 +, +l3fwd_rx_v6_·ck‘s +); + +94 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_ICMP +, +_loÿl_·ck‘s_´oûss +); + +95 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_TCP +, +_fÜw¬d_d–iv” +); + +96 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_UDP +, +_fÜw¬d_d–iv” +); + +98 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_ICMPV6 +, +v6_loÿl_d–iv” +); + +99 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_TCP +, +v6_fÜw¬d_d–iv” +); + +100 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_UDP +, +v6_fÜw¬d_d–iv” +); + +102 + } +} + +104  + $pÝuϋ_Ím_rou‹s +() + +106 + `pÝuϋ_Ím4_bË_rou‹s +(); + +108 + } +} + +110  + $pÝuϋ_Ím4_bË_rou‹s +() + +112 +ušt8_t + +i +; + +113 +´štf + + +115  +i + = 0; i < +MAX_ROUTES +; i++) { + +116 ià( + `Ím4_bË_rou‹_add +(& +šput_¬¿y +[ +i +])) { + +118 + `´štf +("TÙ®„ou‹ Added# %d\n", +i + + 1); + +120 + `¹e_ex™ +( +EXIT_FAILURE +, + +122 +i +); + +125 +´štf + + +127 + } +} + +129  + $pÝuϋ_Ím6_bË_rou‹s +() + +131 +ušt8_t + +i +; + +132 +´štf + + +134  +i + = 0; i < 2; i++) { + +135 ià( + `Ím6_bË_rou‹_add +(& +v6_šput_¬¿y +[ +i +])) { + +137 + `´štf +("Added„ou‹ # %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  + ~<¡dio.h +> + +19  + ~<¡dlib.h +> + +20  + ~<¡dšt.h +> + +21  + ~<¡ršg.h +> + +22  + ~ + +23  + ~<¹e_commÚ.h +> + +24  + ~<¹e_m®loc.h +> + +25  + ~<¹e_.h +> + +26  + ~<¹e_by‹Üd”.h +> + +27  + ~<¹e_log.h +> + +28  + ~<¹e_bË_Ím.h +> + +29  + ~<¹e_bË_hash.h +> + +30  + ~<¹e_p–še.h +> + +31  + ~<¹e_¬p.h +> + +32  + ~<¹e_icmp.h +> + +33  + ~<¹e_hash.h +> + +34  + ~<¹e_jhash.h +> + +35  + ~<¹e_cyþes.h +> + +36  + ~<¹e_tim”.h +> + +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_muÉiÿ¡_v4_addr +( +v4_addr +) \ + +58 ((( + `¹e_be_to_ýu_32 +(( +v4_addr +)è>> 24è& 0x000000FFè=ð0xE0) + + ) + +60 +ušt8_t + +´v_š_pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +61 +ušt32_t + +tim”_lcÜe +; + +62 +ušt32_t + + g¬p_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  +cÚv”t_´efixËn_to_Ãtmask_v6 +( +ušt32_t + +d•th +, + +71 +ušt8_t + +Ãtmask_v6 +[]); + +73 +ušt8_t + + gvnf_commÚ_¬p_lib_š™ +; + +74 +ušt8_t + + gvnf_commÚ_nd_lib_š™ +; + +75 +ušt8_t + + glßdb_p–še_couÁ +; + +77 +ušt32_t + + gARPICMP_DEBUG +; + +78 +ušt32_t + + gNDIPV6_DEBUG +; + +80 +ušt32_t + + g¬p_rou‹_tbl_šdex +; + +81 +ušt32_t + + gnd_rou‹_tbl_šdex +; + +82 +ušt32_t + + glšk_hw_addr_¬¿y_idx +; + +84 +ušt32_t + + glib_¬p_g‘_mac_»q +; + +85 +ušt32_t + + glib_¬p_nh_found +; + +86 +ušt32_t + + glib_¬p_no_nh_found +; + +87 +ušt32_t + + glib_¬p_¬p_’Œy_found +; + +88 +ušt32_t + + glib_¬p_no_¬p_’Œy_found +; + +89 +ušt32_t + + glib_¬p_pÝuϋ_ÿÎed +; + +90 +ušt32_t + + glib_¬p_d–‘e_ÿÎed +; + +91 +ušt32_t + + glib_¬p_du¶iÿ‹_found +; + +93 +ušt32_t + + glib_nd_g‘_mac_»q +; + +94 +ušt32_t + + glib_nd_nh_found +; + +95 +ušt32_t + + glib_nd_no_nh_found +; + +96 +ušt32_t + + glib_nd_nd_’Œy_found +; + +97 +ušt32_t + + glib_nd_no_¬p_’Œy_found +; + +98 +ušt32_t + + glib_nd_pÝuϋ_ÿÎed +; + +99 +ušt32_t + + glib_nd_d–‘e_ÿÎed +; + +100 +ušt32_t + + glib_nd_du¶iÿ‹_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 +ušt8_t + + gdeçuÉ_‘h”_addr +[6] = { 0, 0, 0, 0, 1, 1 }; + +108 +ušt8_t + + gdeçuÉ_ +[4] = { 0, 0, 1, 1 }; + +110  +¹e_hash_·¿m‘”s + + g¬p_hash_·¿ms + = { + +111 . +Çme + = "ARP", + +112 . + g’Œ›s + = 64, + +113 . + g»£rved + = 0, + +114 . + gkey_Ën + = ( +¬p_key_v4 +), + +115 . + ghash_func + = +¹e_jhash +, + +116 . + ghash_func_š™_v® + = 0, + +119  +¹e_hash_·¿m‘”s + + gnd_hash_·¿ms + = { + +120 . +Çme + = "ND", + +121 . + g’Œ›s + = 64, + +122 . + g»£rved + = 0, + +123 . + gkey_Ën + = ( +nd_key_v6 +), + +124 . + ghash_func + = +¹e_jhash +, + +125 . + ghash_func_š™_v® + = 0, + +128  +¹e_hash + * + g¬p_hash_hªdË +; + +129  +¹e_hash + * + gnd_hash_hªdË +; + +131  +´št_pkt1 +( +¹e_mbuf + * +pkt +); + +133  +­p_·¿ms + * + gmyAµ +; + +134  +¹e_p–še + * + gmyP +; + +135 +ušt8_t + + gnum_vnf_th»ads +; + +140  + s¬p_pÜt_add»ss + { + +141 +ušt32_t + + m +; + +142 +ušt8_t + + mmac_addr +[6]; + +145  +¬p_pÜt_add»ss + + g¬p_pÜt_add»s£s +[ +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 +ušt32_t + +g‘_nh +(uint32_t, uint32_t *); + +154  +g‘_nh_v6 +( +ušt8_t + +v6 +[], +ušt32_t + * +pÜt +, ušt8_ˆ +nhv6 +[]); + +156  + #MAX_ARP_DATA_ENTRY_TABLE + 7 + + ) + +158  +bË_¬p_’Œy_d©a + + g¬p_’Œy_d©a_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_d©a + + gnd_’Œy_d©a_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 ** +¡ršgs +; + +249 +size_t + +i +; + +251 +size + = + `backŒaû +( +¬¿y +, 10); + +252 +¡ršgs + = + `backŒaû_symbÞs +( +¬¿y +, +size +); + +254 + `RTE_LOG +( +INFO +, +LIBARP +, "Obšed %zd sck f¿mes.\n", +size +); + +256  +i + = 0; i < +size +; i++) + +257 + `RTE_LOG +( +INFO +, +LIBARP +, "%s\n", +¡ršgs +[ +i +]); + +259 + `ä“ +( +¡ršgs +); + +260 + } +} + +262 +ušt32_t + + $g‘_nh +( +ušt32_t + + +, ušt32_ˆ* +pÜt +) + +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 * +pÜt + = +lib_¬p_rou‹_bË +[ +i +].port; + +271 +lib_¬p_nh_found +++; + +272  +lib_¬p_rou‹_bË +[ +i +]. +nh +; + +274 ià( +ARPICMP_DEBUG +) + +275 + `´štf +("No‚h match ip 0x%x,…ort %u,_ip " + +277 + +, * +pÜt +, +lib_¬p_rou‹_bË +[ +i +].ip, + +278 +lib_¬p_rou‹_bË +[ +i +]. +pÜt +, + +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 +("NØNH - i°0x%x,…܈%u\n", + +, * +pÜt +); + +286 +lib_¬p_no_nh_found +++; + +288 + } +} + +291  + $g‘_nh_v6 +( +ušt8_t + +v6 +[], +ušt32_t + * +pÜt +, ušt8_ˆ +nhv6 +[]) + +293  +i + = 0; + +294 +ušt8_t + +Ãtmask_v6 +[16], +Ãt_nd +[16], +Ãt_š +[16]; + +295 +ušt8_t + +k + = 0, +l + = 0, +d•thæags + = 0, +d•thæags1 + = 0; + +296 + `mem£t +( +Ãtmask_v6 +, 0, (netmask_ipv6)); + +297 + `mem£t +( +Ãt_nd +, 0, (netip_nd)); + +298 + `mem£t +( +Ãt_š +, 0, (netip_in)); + +299 ià(! +v6 +) + +301  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +303 + `cÚv”t_´efixËn_to_Ãtmask_v6 +( +lib_nd_rou‹_bË +[ +i +]. +d•th +, + +304 +Ãtmask_v6 +); + +306  +k + = 0; k < 16; k++) { + +307 ià( +lib_nd_rou‹_bË +[ +i +]. +v6 +[ +k +] & +Ãtmask_v6 +[k]) { + +308 +d•thæags +++; + +309 +Ãt_nd +[ +k +] = +lib_nd_rou‹_bË +[ +i +]. +v6 +[k]; + +313  +l + = 0;† < 16;†++) { + +314 ià( +v6 +[ +l +] & +Ãtmask_v6 +[l]) { + +315 +d•thæags1 +++; + +316 +Ãt_š +[ +l +] = +v6 +[l]; + +319  +j + = 0; + +320 ià(( +d•thæags + =ð +d•thæags1 +) + +321 && ( + `memcmp +( +Ãt_nd +, +Ãt_š +, (netip_nd)) == 0)) { + +323 * +pÜt + = +lib_nd_rou‹_bË +[ +i +].port; + +324 +lib_nd_nh_found +++; + +326  +j + = 0; j < 16; j++) + +327 +nhv6 +[ +j +] = +lib_nd_rou‹_bË +[ +i +].nhipv6[j]; + +332 ià( +NDIPV6_DEBUG +) + +333 + `´štf +("No‚h match\n"); + +334 +d•thæags + = 0; + +335 +d•thæags1 + = 0; + +337 ià( +NDIPV6_DEBUG +) + +338 + `´štf +("NØNH - i°0x%x,…܈%u\n", +v6 +[0], * +pÜt +); + +339 +lib_nd_no_nh_found +++; + +340 + } +} + +343  + $g‘_de¡_mac_addr_pÜt +(cÚ¡ +ušt32_t + +addr +, + +344 +ušt32_t + * +phy_pÜt +,  +‘h”_addr + * +hw_addr +) + +346 +lib_¬p_g‘_mac_»q +++; + +347 +ušt32_t + +nh + = 0; + +349 +nh + = + `g‘_nh +( +addr +, +phy_pÜt +); + +350 ià( +nh + == 0) { + +351 ià( +ARPICMP_DEBUG +) + +352 + `´štf +("ARPICMP‚o‚h found for ip %x,…ort %d\n", + +353 +addr +, * +phy_pÜt +); + +355  +NH_NOT_FOUND +; + +358  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +359  +¬p_key_v4 + +tmp_¬p_key +; + +360 +tmp_¬p_key +. +pÜt_id + = * +phy_pÜt +; + +361 +tmp_¬p_key +. + + = +nh +; + +363 ià( +ARPICMP_DEBUG +) + +364 + `´štf +("%s:‚h: %x,…hypÜt: %d\n", +__FUNCTION__ +, +nh +, + +365 * +phy_pÜt +); + +367 +»t_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +tmp_¬p_key +); + +368 ià( +»t_¬p_d©a + =ð +NULL +) { + +369 ià( +ARPICMP_DEBUG +) { + +370 +´štf + + +372 +addr +, * +phy_pÜt +); + +373 + `´št_¬p_bË +(); + +375 ià( +nh + != 0) { + +376 ià( +ARPICMP_DEBUG +) + +377 + `´štf +("CG-NAPT„equesting ARP for ip %x, " + +378 "p܈%d\n", +nh +, * +phy_pÜt +); + +379 + `»que¡_¬p +(* +phy_pÜt +, +nh +); + +382 +lib_¬p_no_¬p_’Œy_found +++; + +383  +ARP_NOT_FOUND +; + +385 + `‘h”_addr_cÝy +(& +»t_¬p_d©a +-> +‘h_addr +, +hw_addr +); + +386 +lib_¬p_¬p_’Œy_found +++; + +387 ià( +ARPICMP_DEBUG +) + +388 + `´štf +("%s: ARPICMP hwadd¸found\n", +__FUNCTION__ +); + +389  +ARP_FOUND +; + +390 + } +} + +392  + $g‘_de¡_mac_add»ss +(cÚ¡ +ušt32_t + +addr +, ušt32_ˆ* +phy_pÜt +, + +393  +‘h”_addr + * +hw_addr +, +ušt32_t + * +nh +) + +395 +lib_¬p_g‘_mac_»q +++; + +397 * +nh + = + `g‘_nh +( +addr +, +phy_pÜt +); + +398 ià(* +nh + == 0) { + +399 ià( +ARPICMP_DEBUG + && +addr +) + +400 + `RTE_LOG +( +INFO +, +LIBARP +, + +402 +addr +, * +phy_pÜt +); + +406  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +407  +¬p_key_v4 + +tmp_¬p_key +; + +408 +tmp_¬p_key +. +pÜt_id + = * +phy_pÜt +; + +409 +tmp_¬p_key +. + + = * +nh +; + +411 +»t_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +tmp_¬p_key +); + +412 ià( +»t_¬p_d©a + =ð +NULL +) { + +413 ià( +ARPICMP_DEBUG + && +addr +) { + +414 + `RTE_LOG +( +INFO +, +LIBARP +, + +416 +addr +, * +phy_pÜt +); + +417 + `´št_¬p_bË +(); + +419 +lib_¬p_no_¬p_’Œy_found +++; + +422 + `‘h”_addr_cÝy +(& +»t_¬p_d©a +-> +‘h_addr +, +hw_addr +); + +423 +lib_¬p_¬p_’Œy_found +++; + +426 + } +} + +428  + $g‘_de¡_mac_addr +(cÚ¡ +ušt32_t + +addr +, + +429 +ušt32_t + * +phy_pÜt +,  +‘h”_addr + * +hw_addr +) + +431 +lib_¬p_g‘_mac_»q +++; + +432 +ušt32_t + +nh + = 0; + +434 +nh + = + `g‘_nh +( +addr +, +phy_pÜt +); + +435 ià( +nh + == 0) { + +436 ià( +ARPICMP_DEBUG + && +addr +) + +437 + `RTE_LOG +( +INFO +, +LIBARP +, + +439 +addr +, * +phy_pÜt +); + +443  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +444  +¬p_key_v4 + +tmp_¬p_key +; + +445 +tmp_¬p_key +. +pÜt_id + = * +phy_pÜt +; + +446 +tmp_¬p_key +. + + = +nh +; + +448 +»t_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +tmp_¬p_key +); + +449 ià( +»t_¬p_d©a + =ð +NULL +) { + +450 ià( +ARPICMP_DEBUG + && +addr +) { + +451 +´štf + + +453 +addr +, * +phy_pÜt +); + +454 + `´št_¬p_bË +(); + +457 ià( +nh + != 0) { + +458 ià( +ARPICMP_DEBUG + > 4) + +459 +´štf + + +461 +nh +, * +phy_pÜt +); + +462 ià( + `ifm_chk_pÜt_v4_’abËd +(* +phy_pÜt +)) { + +463 + `»que¡_¬p +(* +phy_pÜt +, +nh +); + +465 ià( +ARPICMP_DEBUG +) + +466 + `RTE_LOG +( +INFO +, +LIBARP +, + +468 +__FUNCTION__ +, * +phy_pÜt +); + +472 +lib_¬p_no_¬p_’Œy_found +++; + +475 + `‘h”_addr_cÝy +(& +»t_¬p_d©a +-> +‘h_addr +, +hw_addr +); + +476 +lib_¬p_¬p_’Œy_found +++; + +478 + } +} + +480  + $g‘_de¡_mac_add»ss_v6_pÜt +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +481  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]) + +483  +i + = 0, +j + = 0, +æag + = 0; + +484 +lib_nd_g‘_mac_»q +++; + +486 + `g‘_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +487  +j + = 0; j < 16; j++) { + +488 ià( +nhv6 +[ +j +]) + +489 +æag +++; + +491 ià( +æag + == 0) { + +492 ià( +NDIPV6_DEBUG +) + +493 + `´štf +("NDIPV6‚o‚h 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_pÜt +); + +505  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +506  +nd_key_v6 + +tmp_nd_key +; + +507 +tmp_nd_key +. +pÜt_id + = * +phy_pÜt +; + +509  +i + = 0; i < 16; i++) + +510 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +512 +»t_nd_d©a + = + `»Œ›ve_nd_’Œy +( +tmp_nd_key +); + +513 ià( +»t_nd_d©a + =ð +NULL +) { + +514 ià( +NDIPV6_DEBUG +) { + +515 + `´štf +("NDIPV6‚o‚dƒntry found for ip %x,…ort %d\n", + +516 +v6addr +[0], * +phy_pÜt +); + +518 +lib_nd_no_¬p_’Œy_found +++; + +521 + `‘h”_addr_cÝy +(& +»t_nd_d©a +-> +‘h_addr +, +hw_addr +); + +522 +lib_nd_nd_’Œy_found +++; + +524 + } +} + +526  + $g‘_de¡_mac_add»ss_v6 +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +527  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]) + +529  +i + = 0, +j + = 0, +æag + = 0; + +530 +lib_nd_g‘_mac_»q +++; + +532 + `g‘_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +533  +j + = 0; j < 16; j++) { + +534 ià( +nhv6 +[ +j +]) { + +535 +æag +++; + +538 ià( +æag + == 0) { + +539 ià( +NDIPV6_DEBUG + && +v6addr +) + +540 + `RTE_LOG +( +INFO +, +LIBARP +, + +542 +v6addr +[0], * +phy_pÜt +); + +546  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +547  +nd_key_v6 + +tmp_nd_key +; + +548 +tmp_nd_key +. +pÜt_id + = * +phy_pÜt +; + +550  +i + = 0; i < 16; i++) { + +551 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +554 +»t_nd_d©a + = + `»Œ›ve_nd_’Œy +( +tmp_nd_key +); + +555 ià( +»t_nd_d©a + =ð +NULL +) { + +556 ià( +NDIPV6_DEBUG + && +v6addr +) { + +557 + `RTE_LOG +( +INFO +, +LIBARP +, + +559 +v6addr +[0], * +phy_pÜt +); + +561 ià( +æag + != 0) { + +562 ià( +ARPICMP_DEBUG + > 4) + +563 +´štf + + +565 * +phy_pÜt +); + +566 + `»que¡_nd +(& +nhv6 +[0], + `ifm_g‘_pÜt +(* +phy_pÜt +)); + +570 +lib_nd_no_¬p_’Œy_found +++; + +573 + `‘h”_addr_cÝy +(& +»t_nd_d©a +-> +‘h_addr +, +hw_addr +); + +574 +lib_nd_nd_’Œy_found +++; + +576 + } +} + +582  + slib_¬p_¬p_bË_’Œy + { + +583  +¹e_p–še_bË_’Œy + + mh—d +; + +584 +ušt64_t + + mmaÿddr +; + +587 cÚ¡ * + $¬p_Ý_Çme +( +ušt16_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_id’t +), + +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 +-> +v”siÚ_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=%d…roto=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_d©a +. +¬p_sha +. +addr_by‹s +[0], + +660 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[1], + +661 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[2], + +662 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[3], + +663 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[4], + +664 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[5]); + +665 + `RTE_LOG +( +INFO +, +LIBARP +, " sip=%d.%d.%d.%d\n", + +666 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 24) & 0xFF, + +667 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 16) & 0xFF, + +668 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 8) & 0xFF, + +669 + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) & 0xFF); + +670 + `RTE_LOG +( +INFO +, +LIBARP +, + +672 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[0], + +673 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[1], + +674 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[2], + +675 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[3], + +676 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[4], + +677 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[5]); + +678 + `RTE_LOG +( +INFO +, +LIBARP +, "ip=%d.%d.%d.%d\n", + +679 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 24) & 0xFF, + +680 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 16) & 0xFF, + +681 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 8) & 0xFF, + +682 + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬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_by‹s +[0], + +690 +‘h_h +-> +s_addr +. +addr_by‹s +[1], + +691 +‘h_h +-> +s_addr +. +addr_by‹s +[2], + +692 +‘h_h +-> +s_addr +. +addr_by‹s +[3], + +693 +‘h_h +-> +s_addr +. +addr_by‹s +[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_by‹s +[0], + +696 +‘h_h +-> +d_addr +. +addr_by‹s +[1], + +697 +‘h_h +-> +d_addr +. +addr_by‹s +[2], + +698 +‘h_h +-> +d_addr +. +addr_by‹s +[3], + +699 +‘h_h +-> +d_addr +. +addr_by‹s +[4],ƒth_h->d_addr.addr_bytes[5]); + +701 + } +} + +704 + $´št_mbuf +(cÚ¡ * +rx_tx +, +ušt8_t + +pÜtid +,  +¹e_mbuf + * +mbuf +, + +705  +lše +) + +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): on…ort %d…kt-len=%u‚b-segs=%u\n", + +714 +rx_tx +, +lše +, +pÜtid +, +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 +, " unknown…acketype\n"); + +727 + `fæush +( +¡dout +); + +728 + } +} + +730  +¬p_’Œy_d©a + * + $»Œ›ve_¬p_’Œy +( +¬p_key_v4 + +¬p_key +) + +732  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +733 +¬p_key +. +fžËr1 + = 0; + +734 +¬p_key +. +fžËr2 + = 0; + +735 +¬p_key +. +fžËr3 + = 0; + +737  +»t + = + `¹e_hash_lookup_d©a +( +¬p_hash_hªdË +, & +¬p_key +, + +738 (**)& +»t_¬p_d©a +); + +739 ià( +»t + < 0) { + +743 ià( +»t_¬p_d©a +-> +mode + =ð +DYNAMIC_ARP +) { + +744  +¬p_tim”_key + +ÿÎback_key +; + +745 +ÿÎback_key +. +pÜt_id + = +»t_¬p_d©a +-> +pÜt +; + +746 +ÿÎback_key +. + + = +»t_¬p_d©a +->ip; + +748 ià( + `¹e_tim”_»£t +( +»t_¬p_d©a +-> +tim” +, + +749 ( +¬p_timeout + * + `¹e_g‘_tsc_hz +()), + +750 +SINGLE +, +tim”_lcÜe +, + +751 +¬p_tim”_ÿÎback +, + +752 & +ÿÎback_key +) < 0) + +753 ià( +ARPICMP_DEBUG +) + +754 + `RTE_LOG +( +INFO +, +LIBARP +, + +758  +»t_¬p_d©a +; + +761  +NULL +; + +762 + } +} + +764  +nd_’Œy_d©a + * + $»Œ›ve_nd_’Œy +( +nd_key_v6 + +nd_key +) + +766  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +767 +nd_key +. +fžËr1 + = 0; + +768 +nd_key +. +fžËr2 + = 0; + +769 +nd_key +. +fžËr3 + = 0; + +770  +i + = 0; + +773  +»t + = + `¹e_hash_lookup_d©a +( +nd_hash_hªdË +, & +nd_key +, + +774 (**)& +»t_nd_d©a +); + +775 ià( +»t + < 0) { + +779 ià( +»t_nd_d©a +-> +mode + =ð +DYNAMIC_ND +) { + +780  +nd_tim”_key + +ÿÎback_key +; + +781 +ÿÎback_key +. +pÜt_id + = +»t_nd_d©a +-> +pÜt +; + +783  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +784 +ÿÎback_key +. +v6 +[ +i +] = +»t_nd_d©a +->ipv6[i]; + +788 ià( +¹e_tim”_»£t + + +789 ( +»t_nd_d©a +-> +tim” +, + +790 ( +¬p_timeout + * + `¹e_g‘_tsc_hz +()), +SINGLE +, + +791 +tim”_lcÜe +, +nd_tim”_ÿÎback +, & +ÿÎback_key +) < 0) + +792 ià( +ARPICMP_DEBUG +) + +793 + `RTE_LOG +( +INFO +, +LIBARP +, + +796  +»t_nd_d©a +; + +799  +NULL +; + +800 + } +} + +802  + $´št_¬p_bË +() + +804 cÚ¡ * +Ãxt_key +; + +805 * +Ãxt_d©a +; + +806 +ušt32_t + +™” + = 0; + +808 +´štf + + +810 +´štf + + +812 + `´štf +("\tport hw‡ddr status ip‡ddr\n"); + +813 +´štf + + +816  + `¹e_hash_™”©e +( +¬p_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) + +819  +¬p_’Œy_d©a + * +tmp_¬p_d©a + = + +820 ( +¬p_’Œy_d©a + *) +Ãxt_d©a +; + +821  +¬p_key_v4 + +tmp_¬p_key +; + +822 + `memýy +(& +tmp_¬p_key +, +Ãxt_key +, ( +¬p_key_v4 +)); + +823 +´štf + + +825 +tmp_¬p_d©a +-> +pÜt +,mp_¬p_d©a-> +‘h_addr +. +addr_by‹s +[0], + +826 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +827 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +828 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +829 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +830 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +831 +tmp_¬p_d©a +-> +¡©us + == + +832 +COMPLETE + ? "COMPLETE" : "INCOMPLETE", + +833 ( +tmp_¬p_d©a +-> + + >> 24), + +834 (( +tmp_¬p_d©a +-> + + & 0x00ff0000) >> 16), + +835 (( +tmp_¬p_d©a +-> + + & 0x0000ff00) >> 8), + +836 (( +tmp_¬p_d©a +-> + + & 0x000000ff))); + +839 +ušt32_t + +i + = 0; + +840 + `´štf +("\nARP„outšgabË ha %dƒÁr›s\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 +]. +pÜt +,†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_pÝuϋ_ÿÎed +, +lib_¬p_d–‘e_ÿÎed +, + +854 +lib_¬p_du¶iÿ‹_found +); + +856 + `´štf +("ARPabË key†’ i %lu\n", ( +¬p_key_v4 +)); + +857 + } +} + +860  + $´št_nd_bË +() + +862 cÚ¡ * +Ãxt_key +; + +863 * +Ãxt_d©a +; + +864 +ušt32_t + +™” + = 0; + +865 +ušt8_t + +ii + = 0, +j + = 0, +k + = 0; + +866 +´štf + + +868 + `´štf +("\tport hw‡ddr status ip‡ddr\n"); + +870 +´štf + + +872  + `¹e_hash_™”©e +( +nd_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= + +875  +nd_’Œy_d©a + * +tmp_nd_d©a + = + +876 ( +nd_’Œy_d©a + *) +Ãxt_d©a +; + +877  +nd_key_v6 + +tmp_nd_key +; + +878 + `memýy +(& +tmp_nd_key +, +Ãxt_key +, ( +nd_key_v6 +)); + +879 + `´štf +("\t%4d %02X:%02X:%02X:%02X:%02X:%02X %10s\n", + +880 +tmp_nd_d©a +-> +pÜt +, + +881 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +882 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +883 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +884 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +885 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +886 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +887 +tmp_nd_d©a +-> +¡©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_d©a +-> +v6 +[ +ii +], + +892 +tmp_nd_d©a +-> +v6 +[ +ii + + 1]); + +894 + `´štf +("\n"); + +897 +ušt32_t + +i + = 0; + +898 + `´štf +("\n\nND IPV6„outingable has %dƒntries\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 +]. +d•th +,†ib_nd_rou‹_bË[i]. +pÜt +); + +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 +]. +nhv6 +[ +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_pÝuϋ_ÿÎed +, +lib_nd_d–‘e_ÿÎed +, + +925 +lib_nd_du¶iÿ‹_found +); + +926 + `´štf +("NDabË key†’ i %lu\n\n", ( +nd_key_v6 +)); + +927 + } +} + +929  + $»move_¬p_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +, * +¬g +) + +932  +¬p_key_v4 + +¬p_key +; + +933 +¬p_key +. +pÜt_id + = +pÜtid +; + +934 +¬p_key +. + + = +addr +; + +935 +¬p_key +. +fžËr1 + = 0; + +936 +¬p_key +. +fžËr2 + = 0; + +937 +¬p_key +. +fžËr3 + = 0; + +939 +lib_¬p_d–‘e_ÿÎed +++; + +941  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +943  +»t + = + `¹e_hash_lookup_d©a +( +¬p_hash_hªdË +, & +¬p_key +, + +944 (**)& +»t_¬p_d©a +); + +945 ià( +»t + < 0) { + +949 ià( +»t_¬p_d©a +-> +mode + =ð +DYNAMIC_ARP +) { + +950 ià( +»t_¬p_d©a +-> +»Œy_couÁ + == 3) { + +951 + `¹e_tim”_¡Ý +( +»t_¬p_d©a +-> +tim” +); + +952 + `¹e_ä“ +( +»t_¬p_d©a +-> +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 +. +pÜt_id +); + +964 + `¹e_hash_d–_key +( +¬p_hash_hªdË +, & +¬p_key +); + +967 +»t_¬p_d©a +-> +»Œy_couÁ +++; + +968 ià( +ARPICMP_DEBUG +) + +969 + `RTE_LOG +( +INFO +, +LIBARP +, + +971 +»t_¬p_d©a +-> +»Œy_couÁ +); + +973 ià( +ARPICMP_DEBUG +) + +974 + `RTE_LOG +( +INFO +, +LIBARP +, + +976 +ARP_TIMER_EXPIRY +); + +977 ià( +ifm_chk_pÜt_v4_’abËd + + +978 ( +»t_¬p_d©a +-> +pÜt +)) { + +979 + `»que¡_¬p +( +»t_¬p_d©a +-> +pÜt +, + +980 +»t_¬p_d©a +-> + +); + +982 ià( +ARPICMP_DEBUG +) + +983 + `RTE_LOG +( +INFO +, +LIBARP +, + +985 +__FUNCTION__ +, + +986 +»t_¬p_d©a +-> +pÜt +); + +988 ià( + `¹e_tim”_»£t +( +»t_¬p_d©a +-> +tim” +, + +989 ( +¬p_timeout + * + +990 + `¹e_g‘_tsc_hz +()), +SINGLE +, + +991 +tim”_lcÜe +, + +992 +¬p_tim”_ÿÎback +, + +993 +¬g +) < 0) + +994 ià( +ARPICMP_DEBUG +) + +995 + `RTE_LOG +( +INFO +, +LIBARP +, + +1000 + `¹e_hash_d–_key +( +¬p_hash_hªdË +, & +¬p_key +); + +1003 + } +} + +1006  + $»move_nd_’Œy_v6 +( +ušt8_t + +v6addr +[], ušt8_ˆ +pÜtid +) + +1008  +i + = 0; + +1009  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +1010  +nd_key_v6 + +nd_key +; + +1011 +nd_key +. +pÜt_id + = +pÜtid +; + +1013  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1014 +nd_key +. +v6 +[ +i +] = +v6addr +[i]; + +1017 +nd_key +. +fžËr1 + = 0; + +1018 +nd_key +. +fžËr2 + = 0; + +1019 +nd_key +. +fžËr3 + = 0; + +1021 +lib_nd_d–‘e_ÿÎed +++; + +1023 ià( +NDIPV6_DEBUG +) { + +1024 + `RTE_LOG +( +INFO +, +LIBARP +, + +1026 +nd_key +. +pÜt_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 +. +pÜt_id + = +pÜtid +; + +1035  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1036 +ÿÎback_key +. +v6 +[ +i +] = +v6addr +[i]; + +1039  +»t + = + `¹e_hash_lookup_d©a +( +¬p_hash_hªdË +, & +ÿÎback_key +, + +1040 (**)& +»t_nd_d©a +); + +1041 ià( +»t + < 0) { + +1044 ià( +»t_nd_d©a +-> +mode + =ð +DYNAMIC_ND +) { + +1045 + `¹e_tim”_¡Ý +( +»t_nd_d©a +-> +tim” +); + +1046 + `¹e_ä“ +( +»t_nd_d©a +-> +tim” +); + +1049 + `¹e_hash_d–_key +( +nd_hash_hªdË +, & +nd_key +); + +1050 + } +} + +1053 + $pÝuϋ_¬p_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt32_t + +addr +, + +1054 +ušt8_t + +pÜtid +, ušt8_ˆ +mode +) + +1056  +¬p_key_v4 + +¬p_key +; + +1057 +¬p_key +. +pÜt_id + = +pÜtid +; + +1058 +¬p_key +. + + = +addr +; + +1059 +¬p_key +. +fžËr1 + = 0; + +1060 +¬p_key +. +fžËr2 + = 0; + +1061 +¬p_key +. +fžËr3 + = 0; + +1063 +lib_¬p_pÝuϋ_ÿÎed +++; + +1065 ià( +ARPICMP_DEBUG +) + +1066 + `RTE_LOG +( +INFO +, +LIBARP +, "populate_arp_entry ip %x,…ort %d\n", + +1067 +¬p_key +. + +,‡½_key. +pÜt_id +); + +1069  +¬p_’Œy_d©a + * +Ãw_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +¬p_key +); + +1070 ià( +Ãw_¬p_d©a + && (Òew_¬p_d©a-> +mode + =ð +STATIC_ARP + + +1071 && +mode + =ð +DYNAMIC_ARP +è|| ( +Ãw_¬p_d©a +->mode == DYNAMIC_ARP + +1072 && +mode + =ð +STATIC_ARP +))) { + +1073 ià( +ARPICMP_DEBUG +) + +1074 + `RTE_LOG +( +INFO +, +LIBARP +,"populate_arp_entry: ARPƒntry‡lreadyƒxists(%d %d)\n", + +1075 +Ãw_¬p_d©a +-> +mode +, mode); + +1080 ià( +mode + =ð +DYNAMIC_ARP +) { + +1081 ià( +Ãw_¬p_d©a + + +1082 && + `is_§me_‘h”_addr +(& +Ãw_¬p_d©a +-> +‘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 +. +pÜt_id +); + +1092 +lib_¬p_du¶iÿ‹_found +++; + +1093 +Ãw_¬p_d©a +-> +»Œy_couÁ + = 0; + +1094 ià( + `¹e_tim”_»£t +( +Ãw_¬p_d©a +-> +tim” +, + +1095 ( +¬p_timeout + * + `¹e_g‘_tsc_hz +()), + +1096 +SINGLE +, +tim”_lcÜe +, + +1097 +¬p_tim”_ÿÎback +, + +1098 +Ãw_¬p_d©a +-> +tim”_key +) < 0) + +1099 ià( +ARPICMP_DEBUG +) + +1100 + `RTE_LOG +( +INFO +, +LIBARP +, + +1105 +ušt32_t + +size + = + +1106 + `RTE_CACHE_LINE_ROUNDUP +(( +¬p_’Œy_d©a +)); + +1107 +Ãw_¬p_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1108 +Ãw_¬p_d©a +-> +‘h_addr + = * +hw_addr +; + +1109 +Ãw_¬p_d©a +-> +¡©us + = +COMPLETE +; + +1110 +Ãw_¬p_d©a +-> +pÜt + = +pÜtid +; + +1111 +Ãw_¬p_d©a +-> + + = +addr +; + +1112 +Ãw_¬p_d©a +-> +mode + = mode; + +1113 ià( +¹e_mempoÞ_g‘ + + +1114 ( +tim”_mempoÞ_¬p +, (**)&( +Ãw_¬p_d©a +-> +tim” +)) < 0) { + +1115 + `RTE_LOG +( +INFO +, +LIBARP +, + +1120 + `¹e_hash_add_key_d©a +( +¬p_hash_hªdË +, & +¬p_key +, +Ãw_¬p_d©a +); + +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. +pÜt_id +); + +1130 + `»sÞve_l2_adj +( +addr +, +pÜtid +, +hw_addr +); + +1132 + `¹e_tim”_š™ +( +Ãw_¬p_d©a +-> +tim” +); + +1133  +¬p_tim”_key + * +ÿÎback_key + = + +1134 ( +¬p_tim”_key + *) + `¹e_m®loc +( +NULL +, + +1136 +¬p_tim”_key + *), + +1137 +RTE_CACHE_LINE_SIZE +); + +1138 +ÿÎback_key +-> +pÜt_id + = +pÜtid +; + +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_d©a +-> +tim” +, ( +¬p_timeout + * + `¹e_g‘_tsc_hz +()), + +1146 +SINGLE +, +tim”_lcÜe +, +¬p_tim”_ÿÎback +, +ÿÎback_key +) < 0) + +1147 ià( +ARPICMP_DEBUG +) + +1148 + `RTE_LOG +( +INFO +, +LIBARP +, + +1151 +Ãw_¬p_d©a +-> +tim”_key + = +ÿÎback_key +; + +1153 ià( +Ãw_¬p_d©a + + +1154 && + `is_§me_‘h”_addr +(& +Ãw_¬p_d©a +-> +‘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 +. +pÜt_id +); + +1164 +lib_¬p_du¶iÿ‹_found +++; + +1166 +ušt32_t + +size + = + +1167 + `RTE_CACHE_LINE_ROUNDUP +( + +1168 ( +¬p_’Œy_d©a +)); + +1169 +Ãw_¬p_d©a + = + +1170 + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1171 +Ãw_¬p_d©a +-> +‘h_addr + = * +hw_addr +; + +1172 +Ãw_¬p_d©a +-> +¡©us + = +COMPLETE +; + +1173 +Ãw_¬p_d©a +-> +pÜt + = +pÜtid +; + +1174 +Ãw_¬p_d©a +-> + + = +addr +; + +1175 +Ãw_¬p_d©a +-> +mode + = mode; + +1177 + `¹e_hash_add_key_d©a +( +¬p_hash_hªdË +, & +¬p_key +, + +1178 +Ãw_¬p_d©a +); + +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 +. +pÜt_id +); + +1189 + `»sÞve_l2_adj +( +addr +, +pÜtid +, +hw_addr +); + +1192 ià( +ARPICMP_DEBUG +) { + +1194 + `RTE_LOG +( +INFO +, +LIBARP +, + +1196 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +1197 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1198 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1199 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1200 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1201 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +1202 ( +¬p_key +. + + >> 24), ((arp_key.ip & 0x00ff0000) >> 16), + +1203 (( +¬p_key +. + + & 0x0000ff00) >> 8), + +1204 (( +¬p_key +. + + & 0x000000ff)), +pÜtid +); + +1205 + `puts +(""); + +1207 + } +} + +1216  + $pÝuϋ_nd_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt8_t + +v6 +[], + +1217 +ušt8_t + +pÜtid +, ušt8_ˆ +mode +) + +1222 +ušt8_t + +i +; + +1223  +nd_key_v6 + +nd_key +; + +1224 +nd_key +. +pÜt_id + = +pÜtid +; + +1226  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +1227 +nd_key +. +v6 +[ +i +] = ipv6[i]; + +1230 +nd_key +. +fžËr1 + = 0; + +1231 +nd_key +. +fžËr2 + = 0; + +1232 +nd_key +. +fžËr3 + = 0; + +1234 +lib_nd_pÝuϋ_ÿÎed +++; + +1237  +nd_’Œy_d©a + * +Ãw_nd_d©a + = + `»Œ›ve_nd_’Œy +( +nd_key +); + +1239 ià( +mode + =ð +DYNAMIC_ND +) { + +1240 ià( +Ãw_nd_d©a + + +1241 && + `is_§me_‘h”_addr +(& +Ãw_nd_d©a +-> +‘h_addr +, +hw_addr +)) { + +1243 ià( +NDIPV6_DEBUG +) { + +1244 + `RTE_LOG +( +INFO +, +LIBARP +, + +1246 +nd_key +. +pÜt_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_du¶iÿ‹_found +++; + +1256 + `RTE_LOG +( +INFO +, +LIBARP +, "nd_entryƒxists\n"); + +1259 +ušt32_t + +size + = + +1260 + `RTE_CACHE_LINE_ROUNDUP +(( +nd_’Œy_d©a +)); + +1261 +Ãw_nd_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1264 +Ãw_nd_d©a +-> +‘h_addr + = * +hw_addr +; + +1265 +Ãw_nd_d©a +-> +¡©us + = +COMPLETE +; + +1266 +Ãw_nd_d©a +-> +pÜt + = +pÜtid +; + +1267 +Ãw_nd_d©a +-> +mode + = mode; + +1268 ià( +¹e_mempoÞ_g‘ + + +1269 ( +tim”_mempoÞ_¬p +, (**)&( +Ãw_nd_d©a +-> +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_d©a +-> +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_d©a +-> +v6 +[ +i +], + +1287 +Ãw_nd_d©a +-> +v6 +[ +i + + 1]); + +1292 + `¹e_hash_add_key_d©a +( +nd_hash_hªdË +, & +nd_key +, +Ãw_nd_d©a +); + +1296 + `¹e_tim”_š™ +( +Ãw_nd_d©a +-> +tim” +); + +1297  +nd_tim”_key + * +ÿÎback_key + = + +1298 ( +nd_tim”_key + *) + `¹e_m®loc +( +NULL +, + +1299 ( +nd_tim”_key + + +1301 +RTE_CACHE_LINE_SIZE +); + +1302 +ÿÎback_key +-> +pÜt_id + = +pÜtid +; + +1304  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1305 +ÿÎback_key +-> +v6 +[ +i +] = ipv6[i]; + +1307 ià( +¹e_tim”_»£t + + +1308 ( +Ãw_nd_d©a +-> +tim” +, ( +¬p_timeout + * + `¹e_g‘_tsc_hz +()), + +1309 +SINGLE +, +tim”_lcÜe +, +nd_tim”_ÿÎback +, +ÿÎback_key +) < 0) + +1310 + `RTE_LOG +( +INFO +, +LIBARP +, "Err : Timer‡lready„unning\n"); + +1312 ià( +Ãw_nd_d©a + + +1313 && + `is_§me_‘h”_addr +(& +Ãw_nd_d©a +-> +‘h_addr +, +hw_addr +)) { + +1314 ià( +NDIPV6_DEBUG +) { + +1315 + `RTE_LOG +( +INFO +, +LIBARP +, + +1317 +nd_key +. +pÜt_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_du¶iÿ‹_found +++; + +1328 +ušt32_t + +size + = + +1329 + `RTE_CACHE_LINE_ROUNDUP +( + +1330 ( +nd_’Œy_d©a +)); + +1331 +Ãw_nd_d©a + = + +1332 + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1335 +Ãw_nd_d©a +-> +‘h_addr + = * +hw_addr +; + +1336 +Ãw_nd_d©a +-> +¡©us + = +COMPLETE +; + +1337 +Ãw_nd_d©a +-> +pÜt + = +pÜtid +; + +1338 +Ãw_nd_d©a +-> +mode + = mode; + +1339  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +1340 +Ãw_nd_d©a +-> +v6 +[ +i +] = ipv6[i]; + +1344 + `¹e_hash_add_key_d©a +( +nd_hash_hªdË +, & +nd_key +, + +1345 +Ãw_nd_d©a +); + +1349 ià( +NDIPV6_DEBUG +) + +1350 +´štf + + +1355 +´štf + + +1357 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +1358 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1359 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1360 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1361 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1362 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[5], +pÜtid +); + +1363 + `RTE_LOG +( +INFO +, +LIBARP +, "\tipv6="); + +1364  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1365 +Ãw_nd_d©a +-> +v6 +[ +i +] = ipv6[i]; + +1366 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", +Ãw_nd_d©a +-> +v6 +[ +i +], + +1367 +Ãw_nd_d©a +-> +v6 +[ +i + + 1]); + +1370 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +1372 + `puts +(""); + +1374 + } +} + +1376  + $´št_pkt1 +( +¹e_mbuf + * +pkt +) + +1378 +ušt8_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 + + gbrßdÿ¡_‘h”_addr + = { + +1389 . +addr_by‹s +[0] = 0xFF, + +1390 . + gaddr_by‹s +[1] = 0xFF, + +1391 . + gaddr_by‹s +[2] = 0xFF, + +1392 . + gaddr_by‹s +[3] = 0xFF, + +1393 . + gaddr_by‹s +[4] = 0xFF, + +1394 . + gaddr_by‹s +[5] = 0xFF, + +1397 cÚ¡  +‘h”_addr + + gnuÎ_‘h”_addr + = { + +1398 . +addr_by‹s +[0] = 0x00, + +1399 . + gaddr_by‹s +[1] = 0x00, + +1400 . + gaddr_by‹s +[2] = 0x00, + +1401 . + gaddr_by‹s +[3] = 0x00, + +1402 . + gaddr_by‹s +[4] = 0x00, + +1403 . + gaddr_by‹s +[5] = 0x00, + +1406  + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1407  +‘h”_addr + + glšk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1408 {. +addr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1409 {. + gaddr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1410 {. + gaddr_by‹s + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1411 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1412 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1413 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1414 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1415 {. + gaddr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1416 {. + gaddr_by‹s + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1417 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1418 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1419 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1420 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1421 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1422 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1423 {. + gaddr_by‹s + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1426  +‘h”_addr + * + $g‘_lšk_hw_addr +( +ušt8_t + +out_pÜt +) + +1428  & +lšk_hw_addr +[ +out_pÜt +]; + +1429 + } +} + +1431  + $»que¡_¬p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +) + +1434  +‘h”_hdr + * +‘h_h +; + +1435  +¬p_hdr + * +¬p_h +; + +1437 +l2_phy_š‹rçû_t + * +lšk +; + +1438 +lšk + = + `ifm_g‘_pÜt +( +pÜt_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_cÝy +(& +brßdÿ¡_‘h”_addr +, & +‘h_h +-> +d_addr +); + +1451 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1452 & +lšk +-> +maÿddr +[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 + = ( +ušt32_t +); + +1460 +¬p_h +-> +¬p_Ý + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +1462 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1463 & +lšk +-> +maÿddr +[0], & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +1464 ià( +lšk + &&†šk-> +v4_li¡ +) { + +1465 +¬p_h +-> +¬p_d©a +. +¬p_s + = + +1466 ((( +v4li¡_t + *è( +lšk +-> +v4_li¡ +))-> +addr +); + +1468 + `‘h”_addr_cÝy +(& +nuÎ_‘h”_addr +, & +¬p_h +-> +¬p_d©a +. +¬p_tha +); + +1469 +¬p_h +-> +¬p_d©a +. +¬p_t + = + `¹e_ýu_to_be_32 +( + +); + +1470 ià( +ARPICMP_DEBUG +) + +1471 + `RTE_LOG +( +INFO +, +LIBARP +, "arpip:%x‡rp sip :%x\n", + +1472 +¬p_h +-> +¬p_d©a +. +¬p_t +,‡½_h->¬p_d©a. +¬p_s +); + +1474 +¬p_pkt +-> +pkt_Ën + = 42; + +1475 +¬p_pkt +-> +d©a_Ën + = 42; + +1477 ià( +ARPICMP_DEBUG +) { + +1478 + `RTE_LOG +( +INFO +, +LIBARP +, "Sending‡rp„equest\n"); + +1479 + `´št_mbuf +("TX", +pÜt_id +, +¬p_pkt +, +__LINE__ +); + +1481 ià( +lšk +) + +1482 +lšk +-> + `Œªsm™_sšgË_pkt +֚k, +¬p_pkt +); + +1483 + } +} + +1485  +¹e_mbuf + * + $»que¡_echo +( +ušt32_t + +pÜt_id +, ušt32_ˆ + +) + +1487  +‘h”_hdr + * +‘h_h +; + +1488  +v4_hdr + * +_h +; + +1489  +icmp_hdr + * +icmp_h +; + +1490 +l2_phy_š‹rçû_t + * +pÜt + = + `ifm_g‘_pÜt +( +pÜt_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 +-> +v”siÚ_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 +-> +äagm’t_off£t + = 0x0000; + +1511 +_h +-> +time_to_live + = 64; + +1512 +_h +-> +Ãxt_´Ùo_id + = +IPPROTO_ICMP +; + +1513 ià( +pÜt + &&…Üt-> +v4_li¡ +) + +1514 +_h +-> +¤c_addr + = + +1515 + `¹e_ýu_to_be_32 +((( +v4li¡_t + *è +pÜt +-> +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_id’t + = 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 +-> +d©a_Ë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 +( +ušt32_t + +¤c_ +, + +1544 +ušt32_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 +-> +v”siÚ_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 +-> +äagm’t_off£t + = 0x0000; + +1568 +_h +-> +time_to_live + = 64; + +1569 +_h +-> +Ãxt_´Ùo_id + = 1; + +1571 +_h +-> +d¡_addr + = + `¹e_bsw­32 +( +de¡_ +); + +1572 +_h +-> +¤c_addr + = + `¹e_bsw­32 +( +¤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 +-> +d©a_Ën + = icmp_pkt-> +pkt_Ën +; + +1586  +icmp_pkt +; + +1587 + } +} + +1590 + $´oûss_¬picmp_pkt_·r£ +( +¹e_mbuf + ** +pkt +, +ušt16_t + +pkt_num +, + +1591 +ušt64_t + +pkt_mask +, +l2_phy_š‹rçû_t + * +pÜt +) + +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 +ušt64_t + +pkts_fÜ_´oûss + = +pkt_mask +; + +1604 ; +pkts_fÜ_´oûss +;) { + +1606 +ušt8_t + +pos + = (ušt8_tè + `__bužtš_ùzÎ +( +pkts_fÜ_´oûss +); + +1607 +ušt64_t + +pkts_mask + = 1LLU << +pos +; + +1608 +pkts_fÜ_´oûss + &ð~ +pkts_mask +; + +1609 + `´oûss_¬picmp_pkt +( +pkt +[ +pos +], +pÜt +); + +1612 + } +} + +1614  + $´oûss_¬picmp_pkt +( +¹e_mbuf + * +pkt +, +l2_phy_š‹rçû_t + * +pÜt +) + +1616 +ušt8_t + +š_pÜt_id + = +pkt +-> +pÜt +; + +1617  +‘h”_hdr + * +‘h_h +; + +1618  +¬p_hdr + * +¬p_h +; + +1619  +v4_hdr + * +_h +; + +1620  +icmp_hdr + * +icmp_h +; + +1622 +ušt32_t + +cksum +; + +1623 +ušt32_t + +_addr +; + +1625 +ušt32_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__ +, +pÜt +-> +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à( +pÜt +-> +v4_li¡ + =ð +NULL +) { + +1650 + `RTE_LOG +( +INFO +, +LIBARP +, + +1655 ià( +¬p_h +-> +¬p_d©a +. +¬p_t + != + +1656 (( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> +addr +) { + +1657 ià( +¬p_h +-> +¬p_d©a +. +¬p_t + =ð¬p_h->¬p_d©a. +¬p_s +) { + +1658 + `pÝuϋ_¬p_’Œy +( + +1659 ( +‘h”_addr + *)& +¬p_h +-> +¬p_d©a +. +¬p_sha +, + +1660 + `¹e_ýu_to_be_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +), + +1661 +š_pÜt_id +, + +1662 +DYNAMIC_ARP +); + +1665 + `RTE_LOG +( +INFO +, +LIBARP +,"ARP„equested IP‡ddress 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__ +, +pÜt +-> +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", +š_pÜt_id +, +pkt +, + +1684 +__LINE__ +); + +1687 + `pÝuϋ_¬p_’Œy +(( +‘h”_addr + *) + +1688 & +¬p_h +-> +¬p_d©a +. +¬p_sha +, + +1689 +¹e_ýu_to_be_32 + + +1690 ( +¬p_h +-> +¬p_d©a +. +¬p_s +), + +1691 +š_pÜt_id +, +DYNAMIC_ARP +); + +1694 +»q_t + = +¬p_h +-> +¬p_d©a +. +¬p_t +; + +1695 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, &‘h_h-> +d_addr +); + +1696 + `‘h”_addr_cÝy +(( +‘h”_addr + *)& +pÜt +-> +maÿddr +[0], & +‘h_h +-> +s_addr +); + +1697 +¬p_h +-> +¬p_Ý + = + `¹e_ýu_to_be_16 +( +ARP_OP_REPLY +); + +1698 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +1699 & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +1700 +¬p_h +-> +¬p_d©a +. +¬p_t + = + +1701 +¬p_h +-> +¬p_d©a +. +¬p_s +; + +1702 +¬p_h +-> +¬p_d©a +. +¬p_s + = +»q_t +; + +1703 + `‘h”_addr_cÝy +(& +‘h_h +-> +d_addr +, + +1704 & +¬p_h +-> +¬p_d©a +. +¬p_tha +); + +1706 ià( +ARPICMP_DEBUG +) + +1707 + `´št_mbuf +("TX ARP REPLY PKT", + +1708 +pÜt +-> +pmdid +, +pkt +, +__LINE__ +); + +1709 +pÜt +-> + `Œªsm™_bulk_pkts +ÕÜt, & +pkt +, 1); + +1710 ià( +ARPICMP_DEBUG +) + +1711 + `´št_mbuf +("TX", +pÜt +-> +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", +pÜt +-> +pmdid +, +pkt +, + +1721 +__LINE__ +); + +1723 + `pÝuϋ_¬p_’Œy +(( +‘h”_addr + *) + +1724 & +¬p_h +-> +¬p_d©a +. +¬p_sha +, + +1725 + `¹e_bsw­32 +( +¬p_h +-> + +1726 +¬p_d©a +. +¬p_s +), + +1727 +š_pÜt_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 +-> +v”siÚ_ihl + & 0xf0è!ð +IP_VERSION_4 +) { + +1754 ià( +ARPICMP_DEBUG +) { + +1755 + `RTE_LOG +( +INFO +, +LIBARP +, + +1758 } ià(( +_h +-> +v”siÚ_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", +š_pÜt_id +, + +1768 +pkt +, +__LINE__ +); + +1770 +_addr + = +_h +-> +¤c_addr +; + +1771 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +1772 & +‘h_h +-> +d_addr +); + +1773 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1774 & +pÜt +-> +maÿddr +[0], + +1775 & +‘h_h +-> +s_addr +); + +1776 ià( +ARPICMP_DEBUG +) + +1777 + `RTE_LOG +( +INFO +, +LIBARP +, + +1779 +__FUNCTION__ +, + +1780 +pÜt +-> +pmdid +, +__LINE__ +); + +1782 ià( +is_muÉiÿ¡_v4_addr + + +1783 ( +_h +-> +d¡_addr +)) { + +1784 +ušt32_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 +pÜt +-> +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 ~ + `htÚs +( +IP_ICMP_ECHO_REQUEST + << 8) & + +1823 +cksum + +ð + `htÚs +( +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 +š_pÜt_id +, +pkt +, +__LINE__ +); + +1834 +pÜt +-> + `Œªsm™_bulk_pkts +ÕÜt, & +pkt +, 1); + +1835 ià( +ARPICMP_DEBUG +) + +1836 + `´št_mbuf +("TX", +pÜt +-> +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", +š_pÜt_id +, + +1845 +pkt +, +__LINE__ +); + +1847  +¬p_key_v4 + +¬p_key +; + +1848 +¬p_key +. +pÜt_id + = +š_pÜt_id +; + +1849 +¬p_key +. + + = + +1850 + `¹e_bsw­32 +( +_h +-> +¤c_addr +); + +1851 +¬p_key +. +fžËr1 + = 0; + +1852 +¬p_key +. +fžËr2 + = 0; + +1853 +¬p_key +. +fžËr3 + = 0; + +1855  +¬p_’Œy_d©a + * +¬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 +. +pÜt_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Ú¡  +dig™s +[] = "0123456789"; + +1912  +§w_dig™ +, +où‘s +, +ch +; + +1913  +tmp +[ +INADDRSZ +], * + +; + +1915 +§w_dig™ + = 0; + +1916 +où‘s + = 0; + +1917 *( + + = +tmp +) = 0; + +1918 ( +ch + = * +¤c +++) != '\0') { + +1919 cÚ¡ * +pch +; + +1921 +pch + = + `¡rchr +( +dig™s +, +ch +); + +1922 ià( +pch + !ð +NULL +) { + +1923  +Ãw + = * + + * 10 + ( +pch + - +dig™s +); + +1925 ià( +Ãw + > 255) + +1927 ià(! +§w_dig™ +) { + +1928 ià(++ +où‘s + > 4) + +1930 +§w_dig™ + = 1; + +1932 * + + = () +Ãw +; + +1933 } ià( +ch + =ð'.' && +§w_dig™ +) { + +1934 ià( +où‘s + == 4) + +1936 *++ + + = 0; + +1937 +§w_dig™ + = 0; + +1941 ià( +où‘s + < 4) + +1944 + `memýy +( +d¡ +, +tmp +, +INADDRSZ +); + +1946 + } +} + +1961  + $š‘_±Ú_v6 +(cÚ¡ * +¤c +, * +d¡ +) + +1963 cÚ¡  +xdig™s_l +[] = "0123456789abcdef", + +1964 +xdig™s_u +[] = "0123456789ABCDEF"; + +1965  +tmp +[ +IN6ADDRSZ +], * + + = 0, * +’dp + = 0, * +cÞÚp + = 0; + +1966 cÚ¡ * +xdig™s + = 0, * +cu¹ok + = 0; + +1967  +ch + = 0, +§w_xdig™ + = 0, +couÁ_xdig™ + = 0; + +1968  +v® + = 0; + +1969  +dbloù_couÁ + = 0; + +1971 + `mem£t +(( + + = +tmp +), '\0', +IN6ADDRSZ +); + +1972 +’dp + = + + + +IN6ADDRSZ +; + +1973 +cÞÚp + = +NULL +; + +1975 ià(* +¤c + == ':') + +1976 ià(*++ +¤c + != ':') + +1978 +cu¹ok + = +¤c +; + +1979 +§w_xdig™ + = +couÁ_xdig™ + = 0; + +1980 +v® + = 0; + +1982 ( +ch + = * +¤c +++) != '\0') { + +1983 cÚ¡ * +pch +; + +1985 +pch + = + `¡rchr +(( +xdig™s + = +xdig™s_l +), +ch +); + +1986 ià( +pch + =ð +NULL +) + +1987 +pch + = + `¡rchr +(( +xdig™s + = +xdig™s_u +), +ch +); + +1988 ià( +pch + !ð +NULL +) { + +1989 ià( +couÁ_xdig™ + >= 4) + +1991 +v® + <<= 4; + +1992 +v® + |ð( +pch + - +xdig™s +); + +1993 ià( +v® + > 0xffff) + +1995 +§w_xdig™ + = 1; + +1996 +couÁ_xdig™ +++; + +1999 ià( +ch + == ':') { + +2000 +cu¹ok + = +¤c +; + +2001 ià(! +§w_xdig™ +) { + +2002 ià( +cÞÚp +) + +2004 +cÞÚp + = + +; + +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 +( +cu¹ok +, + +) > 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à( +cÞÚp + !ð +NULL +) { + +2037 ià( +dbloù_couÁ + == 8) + +2044 cÚ¡  +n + = + + - +cÞÚp +; + +2045  +i +; + +2047  +i + = 1; i <ð +n +; i++) { + +2048 +’dp +[- +i +] = +cÞÚp +[ +n + - i]; + +2049 +cÞÚp +[ +n + - +i +] = 0; + +2051 + + = +’dp +; + +2053 ià( + + !ð +’dp +) + +2055 + `memýy +( +d¡ +, +tmp +, +IN6ADDRSZ +); + +2057 + } +} + +2059  + $¬p_·r£_¬gs +( +p–še_·¿ms + * +·¿ms +) + +2061 +ušt32_t + +¬p_rou‹_tbl_´e£Á + = 0; + +2062 +ušt32_t + +nd_rou‹_tbl_´e£Á + = 0; + +2063 +ušt32_t + +pÜts_mac_li¡_´e£Á + = 0; + +2064 +ušt32_t + +numArg +; + +2065 +ušt32_t + +n_vnf_th»ads_´e£Á + = 0; + +2067 +ušt32_t + +pktq_š_´v_´e£Á + = 0; + +2068 +ušt32_t + +´v_to_pub_m­_´e£Á + = 0; + +2070 +ušt8_t + +n_´v_š_pÜt + = 0; + +2071  +i +; + +2072  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +2073 +š_pÜt_dœ_a +[ +i +] = 0; + +2074 +´v_to_pub_m­ +[ +i +] = 0xff; + +2075 +pub_to_´v_m­ +[ +i +] = 0xff; + +2078 + `RTE_SET_USED +( +pÜts_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_v®ue + = +·¿ms +-> +¬gs_v®ue +[ +numArg +]; + +2086 ià( + `¡rcmp +( +¬g_Çme +, "arp_timer_expiry") == 0) { + +2087 +¬p_timeout + = + `©oi +( +¬g_v®ue +); + +2091 ià( + `¡rcmp +( +¬g_Çme +, "pktq_in_prv") == 0) { + +2092 ià( +pktq_š_´v_´e£Á +) { + +2093 +´štf + + +2097 +pktq_š_´v_´e£Á + = 1; + +2099  +rxpÜt + = 0, +j + = 0; + +2100  +phy_pÜt_num +[5]; + +2101 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "RXQ"); + +2102  +tok’ +) { + +2103 +j + = 0; + +2104 ( +j + < 4è&& ( +tok’ +[j] != '.')) { + +2105 +phy_pÜt_num +[ +j +] = +tok’ +[j]; + +2106 +j +++; + +2108 +phy_pÜt_num +[ +j +] = '\0'; + +2109 +rxpÜt + = + `©oi +( +phy_pÜt_num +); + +2110 +´v_š_pÜt_a +[ +n_´v_š_pÜt +++] = +rxpÜt +; + +2111 ià( +rxpÜt + < 0) + +2112 +rxpÜt + = 0; + +2113 +´štf + + +2115 +tok’ +, +phy_pÜt_num +, +rxpÜt +); + +2116 +´v_š_pÜt_a +[ +n_´v_š_pÜt +++] = +rxpÜt +; + +2117 if( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +2118 +š_pÜt_dœ_a +[ +rxpÜt +] = 1; + +2119 +tok’ + = + `¡¹ok +( +NULL +, "RXQ"); + +2122 ià( +n_´v_š_pÜt + == 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  +rxpÜt + = 0, +txpÜt + = 0, +j + = 0, +k + = 0; + +2140  +rx_phy_pÜt_num +[5]; + +2141  +tx_phy_pÜt_num +[5]; + +2142 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +2143  +tok’ +) { + +2144 +j + = 0; + +2145 ( +j + < 4è&& ( +tok’ +[j] != ',')) { + +2146 +rx_phy_pÜt_num +[ +j +] = +tok’ +[j]; + +2147 +j +++; + +2149 +rx_phy_pÜt_num +[ +j +] = '\0'; + +2150 +rxpÜt + = + `©oi +( +rx_phy_pÜt_num +); + +2151 ià( +rxpÜt + < 0) + +2152 +rxpÜt + = 0; + +2154 +j +++; + +2155 +k + = 0; + +2156 ( +k + < 4è&& ( +tok’ +[ +j + + k] != ')')) { + +2157 +tx_phy_pÜt_num +[ +k +] = +tok’ +[ +j + + k]; + +2158 +k +++; + +2160 +tx_phy_pÜt_num +[ +k +] = '\0'; + +2161 +txpÜt + = + `©oi +( +tx_phy_pÜt_num +); + +2162 ià( +txpÜt + < 0) + +2163 +txpÜt + = 0; + +2165 + `RTE_LOG +( +INFO +, +LIBARP +, "token: %s," + +2168 +tok’ +, +rx_phy_pÜt_num +, +rxpÜt +, + +2169 +tx_phy_pÜt_num +, +txpÜt +); + +2171 ià(( +rxpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +2172 ( +txpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +2173 ( +š_pÜt_dœ_a +[ +rxpÜt +] != 1)) { + +2174 +´štf + + +2176 +rxpÜt +, +txpÜt +, + +2177 +š_pÜt_dœ_a +[ +rxpÜt +]); + +2181 +´v_to_pub_m­ +[ +rxpÜt +] = +txpÜt +; + +2182 +pub_to_´v_m­ +[ +txpÜt +] = +rxpÜt +; + +2183 +tok’ + = + `¡¹ok +( +NULL +, "("); + +2189 ià( + `¡rcmp +( +¬g_Çme +, "n_vnf_threads") == 0) { + +2190 ià( +n_vnf_th»ads_´e£Á +) + +2192 +n_vnf_th»ads_´e£Á + = 1; + +2193 + `Œim +( +¬g_v®ue +); + +2194 +num_vnf_th»ads + = + `©oi +( +¬g_v®ue +); + +2195 ià( +num_vnf_th»ads + <= 0) { + +2196 + `RTE_LOG +( +INFO +, +LIBARP +, + +2200 + `RTE_LOG +( +INFO +, +LIBARP +, "n_vnf_threads: 0x%x\n", + +2201 +num_vnf_th»ads +); + +2205 ià( + `¡rcmp +( +¬g_Çme +, "lib_arp_debug") == 0) { + +2206 +ARPICMP_DEBUG + = + `©oi +( +¬g_v®ue +); + +2212 ià( + `¡rcmp +( +¬g_Çme +, "ports_mac_list") == 0) { + +2213 +pÜts_mac_li¡_´e£Á + = 1; + +2215 +ušt32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2217  +by‹SŒ +[ +MAC_NUM_BYTES +][3]; + +2218 +ušt32_t + +by‹ +[ +MAC_NUM_BYTES +]; + +2220 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, " "); + +2221  +tok’ +) { + +2222 +k + = 0; + +2223  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2224  +j + = 0; j < 2; j++) { + +2225 +by‹SŒ +[ +i +][ +j +] = +tok’ +[ +k +++]; + +2227 +by‹SŒ +[ +i +][ +j +] = '\0'; + +2228 +k +++; + +2231  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2232 +by‹ +[ +i +] = + `¡¹oul +( +by‹SŒ +[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 +lšk_hw_addr + + +2247 [ +lšk_hw_addr_¬¿y_idx +]. +addr_by‹s + + +2248 [ +i +] = +by‹ +[i]; + +2250 +lšk_hw_addr_¬¿y_idx +++; + +2251 +tok’ + = + `¡¹ok +( +NULL +, " "); + +2258 ià( + `¡rcmp +( +¬g_Çme +, "arp_route_tbl") == 0) { + +2259 +¬p_rou‹_tbl_´e£Á + = 1; + +2261 +ušt32_t + +de¡_ + = 0, +mask + = 0, +tx_pÜt + = 0, +nh_ + = + +2262 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2263 +ušt32_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_pÜt_¡r +[ +¬p_rou‹_tbl_¡r_max_Ën +]; + +2267  +nh__¡r +[ +¬p_rou‹_tbl_¡r_max_Ën +]; + +2268 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +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_pÜt_¡r +[ +k +] = +tok’ +[ +i + + +j + + k]; + +2294 +k +++; + +2296 +tx_pÜt_¡r +[ +k +] = '\0'; + +2297 +tx_pÜt + = + `¡¹oul +( +tx_pÜt_¡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_pÜt_¡r +, + +2317 +tx_pÜt +, +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 +]. +pÜt + = + +2333 +tx_pÜt +; + +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 +ušt8_t + +de¡_v6 +[16], +d•th + = 0, +tx_pÜt + = + +2348 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2349 +ušt8_t + +nd_rou‹_tbl_¡r_max_Ën + = 128; + +2350  +de¡_v6_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2351  +d•th_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2352  +tx_pÜt_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2353  +nh_v6_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2354 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +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 +d•th_¡r +[ +j +] = +tok’ +[ +i + + j]; + +2371 +j +++; + +2373 +d•th_¡r +[ +j +] = '\0'; + +2375  +s +; + +2376  +s + = 0; +d•th_¡r +[s] != '\0'; ++s) + +2377 +d•th + = d•th * 10 + +d•th_¡r +[ +s +] - '0'; + +2379 +j +++; + +2380 +k + = 0; + +2381 ( +k + < ( +nd_rou‹_tbl_¡r_max_Ën + - 1)) + +2382 && ( +tok’ +[ +i + + +j + + +k +] != ',')) { + +2383 +tx_pÜt_¡r +[ +k +] = +tok’ +[ +i + + +j + + k]; + +2384 +k +++; + +2386 +tx_pÜt_¡r +[ +k +] = '\0'; + +2387 +tx_pÜt + = + `¡¹oul +( +tx_pÜt_¡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 +]. +nhv6 +[ +i +] = + +2407 +nh_v6 +[ +i +]; + +2409 +lib_nd_rou‹_bË +[ +nd_rou‹_tbl_šdex +]. +d•th + = + +2410 +d•th +; + +2411 +lib_nd_rou‹_bË +[ +nd_rou‹_tbl_šdex +]. +pÜt + = + +2412 +tx_pÜt +; + +2414 +nd_rou‹_tbl_šdex +++; + +2415 +tok’ + = + `¡¹ok +( +NULL +, "("); + +2434 + } +} + +2436  + $lib_¬p_š™ +( +p–še_·¿ms + * +·¿ms +, + +2437 +__¹e_unu£d +  +­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 mbuf…ool 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 +, "ARP†ib_arp_pkt‡lloc 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_hªdË + = + `¹e_hash_ü—‹ +(& +¬p_hash_·¿ms +); + +2470 ià( +¬p_hash_hªdË + =ð +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_hªdË +); + +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 createƒrror\n"); + +2490 + `¹e_tim”_subsy¡em_š™ +(); + +2491 + `li¡_add_ty³ +( +ETHER_TYPE_ARP +, +´oûss_¬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_hªdË + = + `¹e_hash_ü—‹ +(& +nd_hash_·¿ms +); + +2498 ià( +nd_hash_hªdË + =ð +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_hªdË +); + +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” +-> +expœe +); + +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-> +pÜt_id +); + +2523 + `»move_¬p_’Œy +(( +ušt32_t +è +»move_key +-> + +, + +2524 ( +ušt8_t +è +»move_key +-> +pÜt_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 +, "ndime callback :ƒxpire :%d\n", + +2533 () +tim” +-> +expœe +); + +2534 + `»move_nd_’Œy_v6 +( +»move_key +-> +v6 +,„emove_key-> +pÜt_id +); + +2536 + } +} + +2538  + $ü—‹_¬p_bË +() + +2541  +i +; + +2542  +i + = 0; i < +MAX_ARP_DATA_ENTRY_TABLE +; i++) { + +2543 + `pÝuϋ_¬p_’Œy +((cÚ¡  +‘h”_addr + *) + +2544 & +¬p_’Œy_d©a_bË +[ +i +]. +‘h_addr +, + +2545 +¬p_’Œy_d©a_bË +[ +i +]. + +, + +2546 ( +ušt8_t +è +¬p_’Œy_d©a_bË +[ +i +]. +pÜt +, + +2547 +STATIC_ARP +); + +2549 + `´št_¬p_bË +(); + +2551 + } +} + +2553  + $ü—‹_nd_bË +() + +2556  +i +; + +2557  +i + = 0; i < +MAX_ND_DATA_ENTRY_TABLE +; i++) { + +2558 + `pÝuϋ_nd_’Œy +((cÚ¡  +‘h”_addr + *) + +2559 +nd_’Œy_d©a_bË +[ +i +]. +‘h_addr +, + +2560 +nd_’Œy_d©a_bË +[ +i +]. +v6 +, + +2561 ( +ušt8_t +è +nd_’Œy_d©a_bË +[ +i +]. +pÜt +, + +2562 +STATIC_ND +); + +2564 + `´št_nd_bË +(); + +2566 + } +} + +2568  + $£nd_g¿tu™ous_¬p +( +l2_phy_š‹rçû_t + * +pÜt +) + +2570  +‘h”_hdr + * +‘h_h +; + +2571  +¬p_hdr + * +¬p_h +; + +2573  +¹e_mbuf + * +¬p_pkt + = +lib_¬p_pkt +; + +2575 ià( +pÜt + =ð +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_cÝy +(& +brßdÿ¡_‘h”_addr +, & +‘h_h +-> +d_addr +); + +2591 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +2592 & +pÜt +-> +maÿddr +[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 + = ( +ušt32_t +); + +2600 +¬p_h +-> +¬p_Ý + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +2602 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +2603 & +pÜt +-> +maÿddr +[0], & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +2604 ià( +pÜt +-> +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_d©a +. +¬p_s + = ((( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> +addr +); + +2611 + `‘h”_addr_cÝy +(& +nuÎ_‘h”_addr +, & +¬p_h +-> +¬p_d©a +. +¬p_tha +); + +2613 +¬p_h +-> +¬p_d©a +. +¬p_t + = 0; + +2617 +¬p_pkt +-> +pkt_Ën + = 42; + +2618 +¬p_pkt +-> +d©a_Ën + = 42; + +2620 ià( +ARPICMP_DEBUG +) { + +2621 + `RTE_LOG +( +INFO +, +LIBARP +, "SENDING GRATUITOUS ARP REQUEST\n"); + +2622 + `´št_mbuf +("TX", +pÜt +-> +pmdid +, +¬p_pkt +, +__LINE__ +); + +2624 +pÜt +-> + `Œªsm™_sšgË_pkt +ÕÜt, +¬p_pkt +); + +2625 + } +} + +2627  + $£t_¬pdebug +( +æag +) + +2629 ià( +æag +) { + +2630 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned on\n\r"); + +2631 +ARPICMP_DEBUG + = 1; + +2632 +NDIPV6_DEBUG + = 1; + +2635 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned off\n\r"); + +2636 +ARPICMP_DEBUG + = 0; + +2637 +NDIPV6_DEBUG + = 0; + +2639 + } +} + +2641  + $£t_¬±imeout +( +ušt32_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 #iâdeà +__INCLUDE_LIB_ARP_H__ + + +18  + #__INCLUDE_LIB_ARP_H__ + + + ) + +20  + ~<¹e_p–še.h +> + +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 +ušt32_t + + m +; + +39 +ušt32_t + + mmask +; + +40 +ušt32_t + + mpÜt +; + +41 +ušt32_t + + mnh +; + +48  + slib_nd_rou‹_bË_’Œy + { + +49 +ušt8_t + + mv6 +[16]; + +50 +ušt8_t + + md•th +; + +51 +ušt32_t + + mpÜt +; + +52 +ušt8_t + + mnhv6 +[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 + e¬p_key_ty³ + { + +65 + mARP_IPV4 +, + +66 + mND_IPV6 +, + +69  + s¬p_key_v4 + { + +70 +ušt32_t + + m +; + +71 +ušt8_t + + mpÜt_id +; + +72 +ušt8_t + + mfžËr1 +; + +73 +ušt8_t + + mfžËr2 +; + +74 +ušt8_t + + mfžËr3 +; + +80  + snd_key_v6 + { + +81 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +82 +ušt8_t + + mpÜt_id +; + +83 +ušt8_t + + mfžËr1 +; + +84 +ušt8_t + + mfžËr2 +; + +85 +ušt8_t + + mfžËr3 +; + +91  + s¬p_key + { + +92 +¬p_key_ty³ + + mty³ +; + +94  +¬p_key_v4 + + mv4 +; + +95 } + mkey +; + +103  + snd_tim”_key + { + +104 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +105 +ušt8_t + + mpÜt_id +; + +106 } + g__¹e_ÿche_®igÃd +; + +112  + s¬p_tim”_key + { + +113 +ušt32_t + + m +; + +114 +ušt8_t + + mpÜt_id +; + +115 } + g__¹e_ÿche_®igÃd +; + +117 +ušt32_t + +ARPICMP_DEBUG +; + +119  + #COMPLETE + 1 + + ) + +120  + #INCOMPLETE + 0 + + ) + +122 +ušt32_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  + s¬p_’Œy_d©a + { + +137  +‘h”_addr + + m‘h_addr +; + +138 +ušt32_t + + m +; + +139 +ušt8_t + + mpÜt +; + +140 +ušt8_t + + m¡©us +; + +141 +ušt8_t + + mmode +; + +142 +ušt8_t + + m»Œy_couÁ +; + +143  +¹e_tim” + * + mtim” +; + +144  +¬p_tim”_key + * + mtim”_key +; + +145 } +__©Œibu‹__ + (( +·cked +)); + +152  + sbË_¬p_’Œy_d©a + { + +153 +ušt8_t + + m‘h_addr +[6]; + +154 +ušt8_t + + mpÜt +; + +155 +ušt8_t + + m¡©us +; + +156 +ušt32_t + + m +; + +157 } +__©Œibu‹__ + (( +·cked +)); + +164  + snd_’Œy_d©a + { + +165  +‘h”_addr + + m‘h_addr +; + +166 +ušt8_t + + mpÜt +; + +167 +ušt8_t + + m¡©us +; + +168 +ušt8_t + + mmode +; + +169 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +170  +¹e_tim” + * + mtim” +; + +171 } +__©Œibu‹__ + (( +·cked +)); + +179  + sbË_nd_’Œy_d©a + { + +180 +ušt8_t + + m‘h_addr +[6]; + +181 +ušt8_t + + mpÜt +; + +182 +ušt8_t + + m¡©us +; + +183 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +184  +¹e_tim” + * + mtim” +; + +185 } +__©Œibu‹__ + (( +·cked +)); + +201  +g‘_de¡_mac_add»ss +(cÚ¡ +ušt32_t + +addr +, ušt32_ˆ* +phy_pÜt +, + +202  +‘h”_addr + * +hw_addr +, +ušt32_t + * +nh +); + +216  +g‘_de¡_mac_addr_pÜt +(cÚ¡ +ušt32_t + +addr +, + +217 +ušt32_t + * +phy_pÜt +,  +‘h”_addr + * +hw_addr +); + +230  +g‘_de¡_mac_addr +(cÚ¡ +ušt32_t + +addr +, ušt32_ˆ* +phy_pÜt +, + +231  +‘h”_addr + * +hw_addr +); + +246  +g‘_de¡_mac_add»ss_v6 +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +247  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]); + +262  +g‘_de¡_mac_add»ss_v6_pÜt +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +263  +‘h”_addr + * +hw_addr +, + +264 +ušt8_t + +nhv6 +[]); + +272  +‘h”_addr + * +g‘_lšk_hw_addr +( +ušt8_t + +out_pÜt +); + +279  +´št_¬p_bË +(); + +286  +´št_nd_bË +(); + +295  +»move_¬p_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +, * +¬g +); + +305  +»move_nd_’Œy_v6 +( +ušt8_t + +v6addr +[], ušt8_ˆ +pÜtid +); + +318  +pÝuϋ_¬p_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt32_t + +addr +, + +319 +ušt8_t + +pÜtid +, ušt8_ˆ +mode +); + +333  +pÝuϋ_nd_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt8_t + + +[], + +334 +ušt8_t + +pÜtid +, ušt8_ˆ +mode +); + +344  +»que¡_¬p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +); + +353  +¹e_mbuf + * +»que¡_echo +( +ušt32_t + +pÜt_id +, ušt32_ˆ + +); + +362  +¹e_mbuf + * +»que¡_icmpv6_echo +( +ušt8_t + +v6 +[], +l2_phy_š‹rçû_t + * +pÜt +); + +371  +¹e_mbuf + * +»que¡_nd +( +ušt8_t + +v6 +[], +l2_phy_š‹rçû_t + * +pÜt +); + +382  +´oûss_¬picmp_pkt +( +¹e_mbuf + * +pkt +, +l2_phy_š‹rçû_t + * +pÜt +); + +390  +¬p_’Œy_d©a + * +»Œ›ve_¬p_’Œy +(cÚ¡  +¬p_key_v4 + +¬p_key +); + +399  +nd_’Œy_d©a + * +»Œ›ve_nd_’Œy +( +nd_key_v6 + +nd_key +); + +405  +lib_¬p_š™ +( +p–še_·¿ms + * +·¿ms +,  +­p_·¿ms + * +­p +); + +407  +£t_pÜt_to_lßdb_m­ +( +ušt8_t + +p–še_num +); + +412 +ušt8_t + +g‘_pÜt_to_lßdb_m­ +(ušt8_ˆ +phy_pÜt_id +); + +414  +£t_phy_špÜt_m­ +( +ušt8_t + +p–še_num +, ušt8_ˆ* +m­ +); + +415  +£t_phy_ouÜt_m­ +( +ušt8_t + +p–še_num +, ušt8_ˆ* +m­ +); + +421 +ušt8_t + +g‘_lßdb_ouÜt_id +(ušt8_ˆ +aùu®_phy_pÜt +); + +422 +ušt8_t + +g‘_vnf_£t_num +(ušt8_ˆ +p–še_num +); + +424  +p–šes_pÜt_šfo +(); + +425  +p–šes_m­_šfo +(); + +434  +¬p_tim”_ÿÎback +( +¹e_tim” + *, * +¬g +); + +443  +nd_tim”_ÿÎback +( +¹e_tim” + * +tim” +, * +¬g +); + +449  +ü—‹_¬p_bË +(); + +454  +ü—‹_nd_bË +(); + +467  +´oûss_¬picmp_pkt_·r£ +( +¹e_mbuf + ** +pkt +, +ušt16_t + +pkt_num +, + +468 +ušt64_t + +pkt_mask +, +l2_phy_š‹rçû_t + * +pÜt +); + +475  +£nd_g¿tu™ous_¬p +( +l2_phy_š‹rçû_t + * +pÜt +); + +481  +£t_¬pdebug +( +æag +); + +487  +£t_¬±imeout +( +ušt32_t + +timeout_v® +); + +495 +ušt32_t + +g‘_nh +(uint32_t, uint32_t *); + +505  +g‘_nh_v6 +( +ušt8_t + +v6 +[], +ušt32_t + * +pÜt +, ušt8_ˆ +nhv6 +[]); + + @VIL/l2l3_stack/lib_icmpv6.c + +18  + ~"lib_icmpv6.h +" + +20  + $´št_pkt +( +ušt8_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  +ušt16_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¶’ +, +off£t +; + +41 +ušt8_t + * +tmµack‘ +, * +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 +ušt32_t + +·ylßdËn + = 0x20; + +49 +·ylßdËn + = + `¹e_bsw­32 +(payloadlen); + +51 +tm¶’ + = 40 + ( +icmpv6_hdr +è+ ( +icmpv6_nd_hdr +); + +52 +tm¶’ + = + `RTE_CACHE_LINE_ROUNDUP +(tmplen); + +53 +tmµack‘ + = + `¹e_zm®loc +( +NULL +, +tm¶’ +, +RTE_CACHE_LINE_SIZE +); + +54 +ack‘ + = +tmµack‘ +; + +56 +off£t + = 16; + +57 + `memýy +( +ack‘ +, & +v6_h +-> +¤c_addr +[0], +off£t +); + +58 +ack‘ + +ð +off£t +; + +59 + `memýy +( +ack‘ +, & +v6_h +-> +d¡_addr +[0], +off£t +); + +60 +ack‘ + +ð +off£t +; + +61 * +ack‘ + = 0; + +62 +ack‘ +++; + +63 * +ack‘ + = 0; + +64 +ack‘ +++; + +65 * +ack‘ + = 0; + +66 +ack‘ +++; + +67 + `memýy +( +ack‘ +, & +v6_h +-> +´Ùo +, 1); + +68 +ack‘ +++; + +69 + `memýy +( +ack‘ +, & +·ylßdËn +, 4); + +70 +ack‘ + += 4; + +71 + `memýy +( +ack‘ +, +icmpv6_h +, + +72 ( +icmpv6_hdr +è+ ( +icmpv6_nd_hdr +)); + +74 ià( +ARPICMP_DEBUG +) + +75 + `´št_pkt +( +tmµack‘ +); + +77  + `¹e_¿w_cksum +( +tmµack‘ +, +tm¶’ +); + +78 + } +} + +80  +ušt16_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¶’ +, +off£t +; + +87 +ušt8_t + * +tmµack‘ +, * +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 +ušt32_t + +·ylßdËn + = + `¹e_bsw­16 +( +v6_h +-> +·ylßd_Ën +); + +95 +ušt32_t + +·ylßdËn_sw­ + = + `¹e_bsw­32 +( +·ylßdËn +); + +97 ià( +ARPICMP_DEBUG +) + +98 + `´štf +("%s:…aylßdËn: %u\n", +__FUNCTION__ +, +·ylßdËn +); + +100 +tm¶’ + = 40 + +·ylßdËn +; + +101 +tm¶’ + = + `RTE_CACHE_LINE_ROUNDUP +(tmplen); + +102 +tmµack‘ + = + `¹e_zm®loc +( +NULL +, +tm¶’ +, +RTE_CACHE_LINE_SIZE +); + +103 +ack‘ + = +tmµack‘ +; + +105 +off£t + = 16; + +106 + `memýy +( +ack‘ +, & +v6_h +-> +¤c_addr +[0], +off£t +); + +107 +ack‘ + +ð +off£t +; + +108 + `memýy +( +ack‘ +, & +v6_h +-> +d¡_addr +[0], +off£t +); + +109 +ack‘ + +ð +off£t +; + +110 * +ack‘ + = 0; + +111 +ack‘ +++; + +112 * +ack‘ + = 0; + +113 +ack‘ +++; + +114 * +ack‘ + = 0; + +115 +ack‘ +++; + +116 + `memýy +( +ack‘ +, & +v6_h +-> +´Ùo +, 1); + +117 +ack‘ +++; + +118 + `memýy +( +ack‘ +, & +·ylßdËn_sw­ +, 4); + +119 +ack‘ + += 4; + +120 + `memýy +( +ack‘ +, +icmpv6_h +, +·ylßdËn +); + +122 ià( +ARPICMP_DEBUG +) + +123 + `´št_pkt +( +tmµack‘ +); + +125  + `¹e_¿w_cksum +( +tmµack‘ +, +tm¶’ +); + +126 + } +} + +128  + $´oûss_icmpv6_pkt +( +¹e_mbuf + * +pkt +, +l2_phy_š‹rçû_t + * +pÜt +) + +131  +‘h”_hdr + * +‘h_h +; + +132  +v6_hdr + * +v6_h +; + +133  +icmpv6_hdr + * +icmpv6_h +; + +134  +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +135 +ušt8_t + +v6_addr +[16]; + +136 +ušt8_t + +i + = 0; + +137 +ušt8_t + +»q_tv6 +[16]; + +140 ià( +pÜt + =ð +NULL +) { + +141 + `´štf +("port is NULL"); + +143 } ià( +pÜt +-> +v6_li¡ + =ð +NULL +) { + +144 + `´štf +("IPV6‡ddress‚ot configured on†ink\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_cÝy +(& +‘h_h +-> +s_addr +, &‘h_h-> +d_addr +); + +160 + `‘h”_addr_cÝy +(( +‘h”_addr + *)& +pÜt +-> +maÿddr +[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 +pÜt +-> + `Œª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 +. +pÜt_id + = +pÜt +-> +pmdid +; + +178  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +179 +nd_key +. +v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +182 +nd_key +. +fžËr1 + = 0; + +183 +nd_key +. +fžËr2 + = 0; + +184 +nd_key +. +fžËr3 + = 0; + +187  +nd_’Œy_d©a + * +Ãw_nd_d©a + = + `»Œ›ve_nd_’Œy +( +nd_key +); + +188 ià( +Ãw_nd_d©a + =ð +NULL +) { + +189 +´štf + + +191 +nd_key +. +pÜt_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_d©a +-> +¡©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 +ušt8_t + +¤c_v6 +[16], +d¡_v6 +[16]; + +208 +ušt16_t + +muÉi_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 +muÉi_addr + = +d¡_v6 +[0]; + +218 ià(( +IPV6_MULTICAST + & (( +muÉi_addr + << 8è| +d¡_v6 +[1])) + +219 || ! + `memcmp +(& +pÜt +-> +maÿddr +[0], & +‘h_h +-> +d_addr +, 6)) { + +220 + `pÝuϋ_nd_’Œy +( +¤c_hw_addr +, +¤c_v6 +, +pÜt +-> +pmdid +, + +221 +DYNAMIC_ND +); + +224  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +225 +»q_tv6 +[ +i +] = +icmpv6_nd_h +-> +rg‘_v6 +[i]; + +227 ià(! +memcmp + + +228 (& +»q_tv6 +[0], + +229 &(( +v6li¡_t + *è +pÜt +-> +v6_li¡ +)-> +addr +[0], + +232 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, &‘h_h-> +d_addr +); + +233 + `‘h”_addr_cÝy +(( +‘h”_addr + *)& +pÜt +-> + +234 +maÿddr +[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_tv6 +[i]; + +242 +icmpv6_h +-> +icmpv6_ty³ + = + +243 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +244 +icmpv6_nd_h +-> +ty³ + = +e_T¬g‘_Lšk_Lay”_Add»ss +; + +245 +icmpv6_nd_h +-> +Ëngth + = 1; + +246 + `memýy +(& +icmpv6_nd_h +-> +lšk_Ïy”_addr +[0], + +247 & +pÜt +-> +maÿddr +[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 +pÜt +-> + `Œª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 +ušt8_t + +v6 +[16]; + +276  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) { + +277 +v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +280 + `pÝuϋ_nd_’Œy +( +¤c_hw_addr +, +v6 +, +pÜt +-> +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 +( +ušt8_t + +v6 +[], +l2_phy_š‹rçû_t + * +pÜt +) + +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 +ušt8_t + * +icmp_d©a +; + +300  +¹e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +301 ià( +icmpv6_pkt + =ð +NULL +) { + +302 ià( +ARPICMP_DEBUG +) + +303 + `´štf +("Error‡llocating icmpv6_pkt„te_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_cÝy +(( +‘h”_addr + *)& +pÜt +-> +maÿddr +[0], & +‘h_h +-> +s_addr +); + +317 +‘h_h +-> +‘h”_ty³ + = + `¹e_bsw­16 +(0x86dd); + +318  +i + = 0; i < 6; i++) { + +319 +‘h_h +-> +d_addr +. +addr_by‹s +[ +i +] = 0; + +322 +v6_h +-> +vtc_æow + = + `¹e_bsw­32 +(0x60000000); + +323 +v6_h +-> +·ylßd_Ën + = + `¹e_bsw­16 +(64); + +324 +v6_h +-> +´Ùo + = 58; + +325 +v6_h +-> +hÝ_lim™s + = 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_id’t + = + `¹e_bsw­16 +(0x5151); + +335 +icmpv6_šfo_h +-> +icmpv6_£q_nb + = + `¹e_bsw­16 +(0x1); + +337 +icmp_d©a + = ( +ušt8_t + *è +icmpv6_h + + 8; + +338  +i + = 0; i < 56; i++) { + +339 * +icmp_d©a + = +i + + 1; + +340 +icmp_d©a +++; + +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 +-> +d©a_Ën + = icmpv6_pkt-> +pkt_Ën +; + +349  +icmpv6_pkt +; + +350 + } +} + +352  +¹e_mbuf + * + $»que¡_nd +( +ušt8_t + +v6 +[], +l2_phy_š‹rçû_t + * +pÜt +) + +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 +("Error‡llocating icmpv6_pkt„te_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_cÝy +(( +‘h”_addr + *)& +pÜt +-> +maÿddr +[0], & +‘h_h +-> +s_addr +); + +377 +‘h_h +-> +‘h”_ty³ + = + `¹e_bsw­16 +(0x86dd); + +378  +i + = 0; i < 6; i++) { + +379 +‘h_h +-> +d_addr +. +addr_by‹s +[ +i +] = 0; + +382 +v6_h +-> +vtc_æow + = 0x60000000; + +383 +v6_h +-> +·ylßd_Ën + = + `¹e_bsw­16 +(32); + +384 +v6_h +-> +´Ùo + = 58; + +385 +v6_h +-> +hÝ_lim™s + = 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û_Lšk_Lay”_Add»ss +; + +399 +icmpv6_nd_h +-> +Ëngth + = 1; + +400 + `memýy +(& +icmpv6_nd_h +-> +lšk_Ïy”_addr +[0], & +pÜt +-> +maÿddr +[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 +-> +d©a_Ën + = icmpv6_pkt-> +pkt_Ën +; + +409  +icmpv6_pkt +; + +410 + } +} + + @VIL/l2l3_stack/lib_icmpv6.h + +17  + ~<¡dio.h +> + +18  + ~<¡dlib.h +> + +19  + ~<¡dšt.h +> + +20  + ~<¡ršg.h +> + +21  + ~ + +22  + ~<¹e_commÚ.h +> + +23  + ~<¹e_m®loc.h +> + +24  + ~<¹e_.h +> + +25  + ~<¹e_by‹Üd”.h +> + +26  + ~<¹e_bË_Ím.h +> + +27  + ~<¹e_bË_hash.h +> + +28  + ~<¹e_p–še.h +> + +29  + ~<¹e_¬p.h +> + +30  + ~<¹e_icmp.h +> + +31  + ~<¹e_hash.h +> + +32  + ~<¹e_jhash.h +> + +33  + ~<¹e_cyþes.h +> + +34  + ~"lib_¬p.h +" + +35  + ~<¹e_p–še.h +> + +36  + ~"¹e_‘h”.h +" + +42  + sicmpv6_hdr + { + +43 +ušt8_t + + micmpv6_ty³ +; + +44 +ušt8_t + + micmpv6_code +; + +45 +ušt16_t + + micmpv6_cksum +; + +46 } +__©Œibu‹__ + (( +__·cked__ +)); + +51  + sicmpv6_šfo_hdr + { + +52 +ušt16_t + + micmpv6_id’t +; + +53 +ušt16_t + + micmpv6_£q_nb +; + +54 } +__©Œibu‹__ + (( +__·cked__ +)); + +59  + sicmpv6_nd_hdr + { + +61 +ušt32_t + + micmpv6_»£rved +; + +63 +ušt8_t + + mrg‘_v6 +[16]; + +64 +ušt8_t + + mty³ +; + +65 +ušt8_t + + mËngth +; + +66 +ušt8_t + + mlšk_Ï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_lšk_Ïy”_Add»ss_ty³ + { + +80 + me_Sourû_Lšk_Lay”_Add»ss + = 1, + +81 + me_T¬g‘_Lšk_Lay”_Add»ss +, + +82 + me_Lšk_Lay”_Add»ss + + +88 +ušt8_t + +is_muÉiÿ¡_v6_addr +(ušt8_ˆ +v6 +[]); + +93  + sicmpv6_pÜt_add»ss + { + +94 +ušt32_t + + mv6 +[16]; + +95 +ušt64_t + + mmac_addr +; + +101  +icmpv6_pÜt_add»ss + + gicmpv6_pÜt_add»s£s +[ +RTE_MAX_ETHPORTS +]; + +103  + #MAX_NUM_ICMPv6_ENTRIES + 64 + + ) + +104  +¹e_mbuf + * + glib_icmpv6_pkt +; + +113  +´oûss_icmpv6_pkt +( +¹e_mbuf + * +pkt +, +l2_phy_š‹rçû_t + * +pÜt +); + + @VIL/l2l3_stack/main_l2l3.c + +17 #iâdeà +__INCLUDE_MAIN__ + + +18  + #__INCLUDE_MAIN_H__ + + + ) + +20  + ~<¡dio.h +> + +21  + ~<¡dlib.h +> + +22  + ~<¡dšt.h +> + +23  + ~<š‰y³s.h +> + +24  + ~ + +25  + ~<¡ršg.h +> + +26  + ~ + +27  + ~<¡d¬g.h +> + +28  + ~<”ºo.h +> + +29  + ~ + +30  + ~ + +31  + ~<¡dboÞ.h +> + +33  + ~<¹e_commÚ.h +> + +34  + ~<¹e_veù.h +> + +35  + ~<¹e_by‹Üd”.h +> + +36  + ~<¹e_log.h +> + +37  + ~<¹e_memÜy.h +> + +38  + ~<¹e_memýy.h +> + +39  + ~<¹e_memzÚe.h +> + +40  + ~<¹e_—l.h +> + +41  + ~<¹e_³r_lcÜe.h +> + +42  + ~<¹e_Ïunch.h +> + +43  + ~<¹e_©omic.h +> + +44  + ~<¹e_cyþes.h +> + +45  + ~<¹e_´eãtch.h +> + +46  + ~<¹e_lcÜe.h +> + +47  + ~<¹e_³r_lcÜe.h +> + +48  + ~<¹e_b¿nch_´ediùiÚ.h +> + +49  + ~<¹e_š‹¼u±s.h +> + +50  + ~<¹e_pci.h +> + +51  + ~<¹e_¿ndom.h +> + +52  + ~<¹e_debug.h +> + +53  + ~<¹e_‘h”.h +> + +54  + ~<¹e_‘hdev.h +> + +55  + ~<¹e_ršg.h +> + +56  + ~<¹e_mempoÞ.h +> + +57  + ~<¹e_mbuf.h +> + +58  + ~<¹e_.h +> + +59  + ~<¹e_tý.h +> + +60  + ~<¹e_udp.h +> + +61  + ~<¹e_¡ršg_âs.h +> + +62  + ~<¹e_ýuæags.h +> + +63  + ~<¹e_tim”.h +> + +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  + glcÜe_id + = 1; + +72  +cÚv”t_¡r_to_num”ic +(); + +73  +sockaddr_š + + gaddr1 +, + gaddr2 +, + gaddr3 +, + gaddr4 +; + +74 +ušt8_t + + gv6_addr0 +[16] = { + +78 +ušt8_t + + gv6_addr1 +[16] = { + +83 +pÜt_cÚfig_t + + gpÜtcÚf +[5] = { + +85 . +pÜt_id + = 0, + +86 . + gÄx_queue + = 1, + +87 . + gÁx_queue + = 1, + +88 . + g¡©e + = 1, + +89 . + g´omisc + = 1, + +90 . + gmempoÞ + = { + +91 . +bufãr_size + = 2048 + ( +¹e_mbuf +) + + +92 +RTE_PKTMBUF_HEADROOM +, + +93 . + gpoÞ_size + = 32 * 1024, + +94 . + gÿche_size + = 256, + +95 . + gýu_sock‘_id + = 0, + +97 . + gpÜt_cÚf + = { + +98 . +lšk_¥“ds + = 0, + +99 . + grxmode + = { + +100 . +mq_mode + = +ETH_MQ_RX_NONE +, + +101 . + gh—d”_¥l™ + = 0, + +102 . + ghw__checksum + = 0, + +103 . + ghw_vÏn_fž‹r + = 0, + +104 . + ghw_vÏn_¡r + = 0, + +105 . + ghw_vÏn_ex‹nd + = 0, + +106 . + gjumbo_äame + = 0, + +107 . + ghw_¡r_üc + = 0, + +108 . + g’abË_sÿ‰” + = 0, + +109 . + gmax_rx_pkt_Ën + = 9000, + +110 . + g¥l™_hdr_size + = 0, + +112 + g_adv_cÚf + = { + +113 . +rss_cÚf + = { + +114 . +rss_key + = +NULL +, + +115 . + grss_key_Ën + = 40, + +116 . + grss_hf + = 0, + +119 . + gtxmode + = { + +120 . +mq_mode + = +ETH_MQ_TX_NONE +,}, + +121 . + gÍbk_mode + = 0, + +122 . + gšŒ_cÚf + = { + +123 . +lsc + = 1, + +127 . + grx_cÚf + = { + +128 . +rx_th»sh + = { + +129 . +±h»sh + = 8, + +130 . + ghth»sh + = 8, + +131 . + gwth»sh + = 4, + +133 . + grx_ä“_th»sh + = 64, + +134 . + grx_drÝ_’ + = 0, + +135 . + grx_deã¼ed_¡¬t + = 0, + +137 . + gtx_cÚf + = { + +138 . +tx_th»sh + = { + +139 . +±h»sh + = 36, + +140 . + ghth»sh + = 0, + +141 . + gwth»sh + = 0, = + +143 . + gtx_rs_th»sh + = 0, + +144 . + gtx_ä“_th»sh + = 0, + +145 . + gtxq_æags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | +ETH_TXQ_FLAGS_NOOFFLOADS +, + +146 . + gtx_deã¼ed_¡¬t + = 0, + +150 . + gpÜt_id + = 1, + +151 . + gÄx_queue + = 1, + +152 . + gÁx_queue + = 1, + +153 . + g¡©e + = 1, + +154 . + g´omisc + = 1, + +155 . + gmempoÞ + = { + +156 . +bufãr_size + = 2048 + ( +¹e_mbuf +) + + +157 +RTE_PKTMBUF_HEADROOM +, + +158 . + gpoÞ_size + = 32 * 1024, + +159 . + gÿche_size + = 256, + +160 . + gýu_sock‘_id + = 0, + +162 . + gpÜt_cÚf + = { + +163 . +lšk_¥“ds + = 0, + +164 . + grxmode + = { + +165 . +mq_mode + = +ETH_MQ_RX_NONE +, + +166 . + gh—d”_¥l™ + = 0, + +167 . + ghw__checksum + = 0, + +168 . + ghw_vÏn_fž‹r + = 0, + +169 . + ghw_vÏn_¡r + = 0, + +170 . + ghw_vÏn_ex‹nd + = 0, + +171 . + gjumbo_äame + = 0, + +172 . + ghw_¡r_üc + = 0, + +173 . + g’abË_sÿ‰” + = 0, + +174 . + gmax_rx_pkt_Ën + = 9000, + +175 . + g¥l™_hdr_size + = 0, + +177 + g_adv_cÚf + = { + +178 . +rss_cÚf + = { + +179 . +rss_key + = +NULL +, + +180 . + grss_key_Ën + = 40, + +181 . + grss_hf + = 0, + +184 . + gtxmode + = { + +185 . +mq_mode + = +ETH_MQ_TX_NONE +,}, + +186 . + gÍbk_mode + = 0, + +187 . + gšŒ_cÚf + = { + +188 . +lsc + = 1, + +192 . + grx_cÚf + = { + +193 . +rx_th»sh + = { + +194 . +±h»sh + = 8, + +195 . + ghth»sh + = 8, + +196 . + gwth»sh + = 4, + +198 . + grx_ä“_th»sh + = 64, + +199 . + grx_drÝ_’ + = 0, + +200 . + grx_deã¼ed_¡¬t + = 0, + +202 . + gtx_cÚf + = { + +203 . +tx_th»sh + = { + +204 . +±h»sh + = 36, + +205 . + ghth»sh + = 0, + +206 . + gwth»sh + = 0, = + +208 . + gtx_rs_th»sh + = 0, + +209 . + gtx_ä“_th»sh + = 0, + +210 . + gtxq_æags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | +ETH_TXQ_FLAGS_NOOFFLOADS +, + +211 . + gtx_deã¼ed_¡¬t + = 0, + +216  +__©Œibu‹__ + (( +nܑuº +)) + +217  +lcÜe_mašloÝ + ( +__©Œibu‹__ + (( +unu£d +)) + +218 * +¬g +) + +220 +l2_phy_š‹rçû_t + * + gpÜt +; + +221 +št8_t + + gpÜtid +; + +222  +¹e_mbuf + * + gpkts_bur¡ +[ +IFM_BURST_SIZE +]; + +223 +ušt32_t + + gnb_tx +, + gnb_rx +; + +224 cÚ¡ +ušt64_t + + gd¿š_tsc + = + +225 ( +¹e_g‘_tsc_hz +(è+ +US_PER_S + - 1è/ US_PER_S * +BURST_TX_DRAIN_US +; + +226 +ušt64_t + + g´ev_tsc + = 0, + gcur_tsc +, + gdiff_tsc +; + +228 + gpÜt + = +ifm_g‘_fœ¡_pÜt +(); + +229  + gpÜt + !ð +NULL +) { + +230 +¹e_tim”_mªage +(); + +231 + gpÜtid + = +pÜt +-> +pmdid +; + +232 + gcur_tsc + = +¹e_rdtsc +(); + +233 + gdiff_tsc + = +cur_tsc + - +´ev_tsc +; + +236 ià( +uÆik–y +( +diff_tsc + > +d¿š_tsc +)) { + +237 ià( + gpÜt +-> + gtx_buf_Ën + > 0) { + +238 +RTE_SET_USED +( +nb_tx +); + +241 + gpÜt +-> + gtx_buf_Ën + = 0; + +243 + g´ev_tsc + = +cur_tsc +; + +245 + gnb_rx + = +pÜt +-> +»Œ›ve_bulk_pkts +( +pÜtid +, 0, +pkts_bur¡ +); + +246 + gpÜt +-> + gn_rxpkts + +ð +nb_rx +; + +247 +´ÙocÞ_hªdËr_»cv +( +pkts_bur¡ +, +nb_rx +, +pÜt +); + +248 + gpÜt + = +ifm_g‘_Ãxt_pÜt +( +pÜtid +); + +249 ià( + gpÜt + !ð +NULL +) + +250 +´ev_tsc + = +cur_tsc +; + +255  + $cÚv”t_¡r_to_num”ic +() + +257 + `mem£t +(& +addr1 +, '\0', ( +sockaddr_š +)); + +258 +addr1 +. +sš_addr +. +s_addr + = + `š‘_addr +("30.0.0.10"); + +259 + `mem£t +(& +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 EAL…arameters\n"); + +272 + `ifm_š™ +(); + +273 + `ifm_cÚfigu»_pÜts +( +pÜtcÚf +); + +278 + `ifm_add_v6_pÜt +(0, +v6_addr0 +, 96); + +279 + `ifm_add_v6_pÜt +(1, +v6_addr1 +, 96); + +280 + `´št_š‹rçû_d‘ažs +(); + +283 + `l3fwd_š™ +(); + +284 + `ü—‹_¬p_bË +(); + +285 + `ü—‹_nd_bË +(); + +286 + `pÝuϋ_Ím_rou‹s +(); + +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_»mÙe_Ïunch +( +lcÜe_mašloÝ +, +NULL +, +lcÜe_id +); + +299 + `´štf +("REMOTE LAUNCH DONE.......\n"); + +300 ià( + `¹e_—l_wa™_lcÜe +( +lcÜe_id +) < 0) { + +303 + } +} + + @VIL/l2l3_stack/tsx.c + +17  + ~ + +18  + ~<¡dlib.h +> + +19  + ~<¡dio.h +> + +20  + ~ + +21  + ~<¡dšt.h +> + +22  + ~"¹e_©omic.h +" + +23  + ~"tsx.h +" + +24  + gmax_»Œ›s + = 3; + +27 + $run_ýuid + ( +ušt32_t + +—x +, ušt32_ˆ +ecx +, ušt32_ˆ* +abcd +) + +29 +ušt32_t + +ebx + = 0, +edx + = 0; + +31 #ià + `defšed +( +__i386__ +è&& defšed ( +__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_xü0_ymm + () + +47 +ušt32_t + +xü0 +; + +48 + `__asm__ + ("xg‘bv" : "÷" ( +xü0 +) : "c" (0) : "%edx"); + +49  (( +xü0 + & 6) == 6); + +50 + } +} + +53 + $check_4th_g’_š‹l_cÜe_ã©u»s + () + +55 +ušt32_t + +abcd +[4]; + +56 +ušt32_t + +fma_movbe_osx§ve_mask + = ((1 << 12) | (1 << 22) | (1 << 27)); + +57 +ušt32_t + +avx2_bmi12_mask + = (1 << 5) | (1 << 3) | (1 << 8); + +62 + `run_ýuid + (1, 0, +abcd +); + +63 ià(( +abcd +[2] & +fma_movbe_osx§ve_mask +) != fma_movbe_osxsave_mask) { + +64 + `´štf + ("Failing in if cond-1\n"); + +67 ià(! + `check_xü0_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_cÜe_4th_g’_ã©u»s + () + +104  +the_4th_g’_ã©u»s_avažabË + = -1; + +106 ià( +the_4th_g’_ã©u»s_avažabË + < 0) + +107 +the_4th_g’_ã©u»s_avažabË + = + `check_4th_g’_š‹l_cÜe_ã©u»s + (); + +108  +the_4th_g’_ã©u»s_avažabË +; + +109 + } +} + +112 + $¹m_š™ + () + +114 +Çb܋d + = ( +¹e_©omic64_t +è + `RTE_ATOMIC64_INIT + (0); + +117 + } +}  + +119 + $¹m_lock + () + +121  +đr›s + = 0; + +123 ++ +đr›s +; + +124  +¡©us + = + `_xbegš + (); + +125 ià( +¡©us + =ð +_XBEGIN_STARTED +) { + +126 ià(! + `is_hË_locked + ()) + +130 + `_xabÜt + (0xff); + +133 + `¹e_©omic64_šc + (& +Çb܋d +); + +134 +´štf + + +136 +đr›s +, +¡©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à( +đr›s + >ð +max_»Œ›s +) + +148 + `hË_lock + (); + +150 + } +} + +153 + $¹m_uÆock + () + +155 ià( + `is_hË_locked + ()) + +156 + `hË_»Ëa£ + (); + +159 + `_x’d + (); + +161 + } +} + +164 + $is_¹m_locked + () + +166  ((è + `_x‹¡ + ()); + +167 + } +} + + @VIL/l2l3_stack/tsx.h + +16 #iâdeà +_TSX_H_ + + +17  + #_RSX_H_ + + + ) + +18  + ~<¹e_©omic.h +> + +19  + #TRUE + 1 + + ) + +20  + #FALSE + 0 + + ) + +22 vÞ©ž + gmu‹x_v® +; + +24 +¹e_©omic64_t + + gÇb܋d +; + +26  +hË_š™ +(); + +27  +hË_lock +(); + +28  +hË_»Ëa£ +(); + +29  +is_hË_locked +(); + +31  +¹m_š™ +(); + +32  +¹m_lock +(); + +33  +¹m_uÆock +(); + +34  +is_¹m_locked +(); + +36  +ÿn_u£_š‹l_cÜe_4th_g’_ã©u»s +(); + + @VIL/pipeline_arpicmp/pipeline_arpicmp.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"­p.h +" + +24  + ~"p–še_commÚ_ã.h +" + +25  + ~"p–še_¬picmp_be.h +" + +26  + ~"p–še_¬picmp.h +" + +27  + ~"vnf_commÚ.h +" + +29  + ~"­p.h +" + +30  + ~"vnf_commÚ.h +" + +31 #iâdeà +VNF_ACL + + +32  + ~"lib_¬p.h +" + +35  + ~<¹e_.h +> + +36  + ~<¹e_udp.h +> + +37  + ~<¹e_¡ršg_âs.h +> + +39 +ušt16_t + + gv”bo£_Ëv– + = 1; + +40 +ušt16_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 (( +ušt16_t +è(((( +be_16_v +è& 0xFFè<< 8è| ((be_16_vè>> 8))) + + ) + +56  + #RTE_CPU_TO_BE_16 +( +ýu_16_v +) \ + +57 (( +ušt16_t +è(((( +ýu_16_v +è& 0xFFè<< 8è| ((ýu_16_vè>> 8))) + + ) + +65  + scmd_¬p_add_»suÉ + { + +66 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +67 +ušt32_t + + mp +; + +68 +cmdlše_fixed_¡ršg_t + + m¬·dd_¡ršg +; + +69 +ušt32_t + + mpÜt_id +; + +70 +cmdlše_addr_t + + m +; + +71  +‘h”_addr + + mmaÿddr +; + +76 + $cmd_¬p_add_·r£d +(* +·r£d_»suÉ +, + +77 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +79  +cmd_¬p_add_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +80 +ušt8_t + +v6 +[16]; + +83  +p–še_¬p_icmp_¬p_key + +key +; + +84 +key +. +ty³ + = +PIPELINE_ARP_ICMP_ARP_IPV4 +; + +85 +key +.key. +v4 +. +pÜt_id + = +·¿ms +->port_id; + +86 +key +.key. +v4 +. + + = + `¹e_ýu_to_be_32 +( +·¿ms +->. +addr +.v4. +s_addr +); + +87 + `pÝuϋ_¬p_’Œy +(& +»q +-> +maÿddr +, + `¹e_bsw­32 +Ôeq-> +key +.key. +v4 +. + +), + +88 +»q +-> +key +.key. +v4 +. +pÜt_id +); + +90 ià( +·¿ms +-> + +. +çmžy + =ð +AF_INET +) { + +91 + `pÝuϋ_¬p_’Œy +(& +·¿ms +-> +maÿddr +, + +92 + `¹e_ýu_to_be_32 +( +·¿ms +-> + +. +addr +. + +93 +v4 +. +s_addr +), + +94 +·¿ms +-> +pÜt_id + + +95 #iâdeà +VNF_ACL + + +96 , +STATIC_ARP + + +100 + `memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +101 + `pÝuϋ_nd_’Œy +(& +·¿ms +-> +maÿddr +, +v6 +,…¬ams-> +pÜt_id + + +102 #iâdeà +VNF_ACL + + +103 , +STATIC_ND + + +107 + } +} + +109  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_add_p_¡ršg + = + +110 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p_¡ršg +, + +113  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_add_p + = + +114 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p +, +UINT32 +); + +116  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_add_¬p_¡ršg + = + +117 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +¬·dd_¡ršg +, "arpadd"); + +119  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_add_pÜt_id + = + +120 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +pÜt_id +, +UINT32 +); + +122  +cmdlše_·r£_tok’_addr_t + + gcmd_¬p_add_ + = + +123 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, + +); + +125  +cmdlše_·r£_tok’_‘h”addr_t + + gcmd_¬p_add_maÿddr + = + +126 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, +maÿddr +); + +128  +cmdlše_·r£_š¡_t + + gcmd_¬p_add + = { + +129 . +f + = +cmd_¬p_add_·r£d +, + +130 . + gd©a + = +NULL +, + +131 . + gh–p_¡r + = "ARP‡dd", + +132 . + gtok’s + = { + +133 (*)& +cmd_¬p_add_p_¡ršg +, + +134 (*)& +cmd_¬p_add_p +, + +135 (*)& +cmd_¬p_add_¬p_¡ršg +, + +136 (*)& +cmd_¬p_add_pÜt_id +, + +137 (*)& +cmd_¬p_add_ +, + +138 (*)& +cmd_¬p_add_maÿddr +, + +139 +NULL +, + +147  + scmd_¬p_d–_»suÉ + { + +148 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +149 +ušt32_t + + mp +; + +150 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +151 +ušt32_t + + mpÜt_id +; + +152 +cmdlše_addr_t + + m +; + +156 + $cmd_¬p_d–_·r£d +(* +·r£d_»suÉ +, + +157 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +159  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +160 +ušt8_t + +v6 +[16]; + +163  +p–še_¬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 +. +pÜt_id + = +·¿ms +->port_id; + +167 + `»move_¬p_’Œy +( + `¹e_bsw­32 +( +»q +-> +key +.key. +v4 +. + +), + +168 +»q +-> +key +.key. +v4 +. +pÜt_id +); + +170 ià( +·¿ms +-> + +. +çmžy + =ð +AF_INET +) { + +171 + `»move_¬p_’Œy +( + `¹e_ýu_to_be_32 +( +·¿ms +-> + +. +addr +. +v4 +. +s_addr +), + +172 +·¿ms +-> +pÜt_id + + +173 #iâdeà +VNF_ACL + + +174 , +NULL + + +178 + `memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +179 + `»move_nd_’Œy_v6 +( +v6 +, +·¿ms +-> +pÜt_id +); + +181 + } +} + +183  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_d–_p_¡ršg + = + +184 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +p_¡ršg +, + +187  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_d–_p + = + +188 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +p +, +UINT32 +); + +190  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_d–_¬p_¡ršg + = + +191 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "arpdel"); + +193  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_d–_pÜt_id + = + +194 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +pÜt_id +, +UINT32 +); + +196  +cmdlše_·r£_tok’_addr_t + + gcmd_¬p_d–_ + = + +197 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_d–_»suÉ +, + +); + +199  +cmdlše_·r£_š¡_t + + gcmd_¬p_d– + = { + +200 . +f + = +cmd_¬p_d–_·r£d +, + +201 . + gd©a + = +NULL +, + +202 . + gh–p_¡r + = "ARP delete", + +203 . + gtok’s + = { + +204 (*)& +cmd_¬p_d–_p_¡ršg +, + +205 (*)& +cmd_¬p_d–_p +, + +206 (*)& +cmd_¬p_d–_¬p_¡ršg +, + +207 (*)& +cmd_¬p_d–_pÜt_id +, + +208 (*)& +cmd_¬p_d–_ +, + +209 +NULL +, + +220 + $cmd_¬p_»q_·r£d +(* +·r£d_»suÉ +, + +221 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +223  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +226  +¬p_key_v4 + +key +; + +232 +key +. + + = + `¹e_ýu_to_be_32 +( +·¿ms +->. +addr +. +v4 +. +s_addr +); + +233 +key +. +pÜt_id + = +·¿ms +->port_id; + +234 +key +. +fžËr1 + = 0; + +235 +key +. +fžËr2 + = 0; + +236 +key +. +fžËr3 + = 0; + +238  +¬p_’Œy_d©a + * +¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +key +); + +240 ià( +¬p_d©a +) { + +241 ià( +ARPICMP_DEBUG +) + +242 + `´štf +("ARPƒntryƒxists for ip 0x%x,…ort %d\n", + +243 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +247 ià( +ARPICMP_DEBUG +) + +248 + `´štf +("ARP -„equesting‡rp for ip 0x%x,…ort %d\n", + +249 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +251 #ifdeà +VNF_ACL + + +252 + `»que¡_¬p_w¿p +( +·¿ms +-> +pÜt_id +,…¬ams-> + +. +addr +. +v4 +. +s_addr +); + +254 + `»que¡_¬p +( +·¿ms +-> +pÜt_id +,…¬ams-> + +. +addr +. +v4 +. +s_addr +); + +257 + } +} + +259  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_»q_¡ršg + = + +260 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "arpreq"); + +262  +cmdlše_·r£_š¡_t + + gcmd_¬p_»q + = { + +263 . +f + = +cmd_¬p_»q_·r£d +, + +264 . + gd©a + = +NULL +, + +265 . + gh–p_¡r + = "ARP„equest", + +266 . + gtok’s + = { + +267 (*)& +cmd_¬p_d–_p_¡ršg +, + +268 (*)& +cmd_¬p_d–_p +, + +269 (*)& +cmd_¬p_»q_¡ršg +, + +270 (*)& +cmd_¬p_d–_pÜt_id +, + +271 (*)& +cmd_¬p_d–_ +, + +272 +NULL +, + +283 + $cmd_icmp_echo_»q_·r£d +(* +·r£d_»suÉ +, + +284 +__¹e_unu£d +  +cmdlše + * +þ +, + +285 +__¹e_unu£d + * +d©a +) + +287  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +289 ià( +ARPICMP_DEBUG +) + +290 + `´štf +("Echo Req Handler ip %x,…ort %d\n", + +291 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +293 + `»que¡_echo +( +·¿ms +-> +pÜt_id +,…¬ams-> + +. +addr +. +v4 +. +s_addr +); + +294 + } +} + +296  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_icmp_echo_»q_¡ršg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "icmpecho"); + +299  +cmdlše_·r£_š¡_t + + gcmd_icmp_echo_»q + = { + +300 . +f + = +cmd_icmp_echo_»q_·r£d +, + +301 . + gd©a + = +NULL +, + +302 . + gh–p_¡r + = "ICMPƒcho„equest", + +303 . + gtok’s + = { + +304 (*)& +cmd_¬p_d–_p_¡ršg +, + +305 (*)& +cmd_¬p_d–_p +, + +306 (*)& +cmd_icmp_echo_»q_¡ršg +, + +307 (*)& +cmd_¬p_d–_pÜt_id +, + +308 (*)& +cmd_¬p_d–_ +, + +309 +NULL +, + +317  + scmd_¬p_ls_»suÉ + { + +318 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +319 +ušt32_t + + mp +; + +320 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +324 + $cmd_¬p_ls_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +325 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +327 + `´štf +("\nARPable ...\n"); + +328 + `´štf +("-------------\n"); + +329 + `´št_¬p_bË +(); + +331 +´štf + + +334 + `´štf +("\nND IPv6able:\n"); + +335 + `´štf +("--------------\n"); + +336 + `´št_nd_bË +(); + +337 + } +} + +339  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_ls_p_¡ršg + = + +340 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p_¡ršg +, + +343  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_ls_p + = + +344 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p +, +UINT32 +); + +346  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_ls_¬p_¡ršg + = + +347 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡ršg +, + +350  +cmdlše_·r£_š¡_t + + gcmd_¬p_ls + = { + +351 . +f + = +cmd_¬p_ls_·r£d +, + +352 . + gd©a + = +NULL +, + +353 . + gh–p_¡r + = "ARP†ist", + +354 . + gtok’s + = { + +355 (*)& +cmd_¬p_ls_p_¡ršg +, + +356 (*)& +cmd_¬p_ls_p +, + +357 (*)& +cmd_¬p_ls_¬p_¡ršg +, + +358 +NULL +, + +366  + scmd_show_pÜts_šfo_»suÉ + { + +367 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +368 +ušt32_t + + mp +; + +369 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +373 + $cmd_show_pÜts_šfo_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +374 +__¹e_unu£d +  +cmdlše + * +þ +, + +375 +__¹e_unu£d + * +d©a +) + +377 + `show_pÜts_šfo +(); + +378 + } +} + +380  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_show_pÜts_šfo_¡ršg + = + +381 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡ršg +, + +384  +cmdlše_·r£_š¡_t + + gcmd_show_pÜts_šfo + = { + +385 . +f + = +cmd_show_pÜts_šfo_·r£d +, + +386 . + gd©a + = +NULL +, + +387 . + gh–p_¡r + = "show…orts info", + +388 . + gtok’s + = { + +389 (*)& +cmd_¬p_ls_p_¡ršg +, + +390 (*)& +cmd_¬p_ls_p +, + +391 (*)& +cmd_show_pÜts_šfo_¡ršg +, + +392 +NULL +, + +396 #iâdeà +VNF_ACL + + +397  + scmd_¬p_dbg_»suÉ + { + +398 +cmdlše_fixed_¡ršg_t + + m¬pdbg_¡r +; + +399 +ušt32_t + + mæag +; + +402 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_dbg_¡ršg + = + +403 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_dbg_»suÉ +, +¬pdbg_¡r +, + +405 +cmdlše_·r£_tok’_num_t + + gcmd_¬p_dbg_æag + = + +406 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_dbg_»suÉ +, +æag +, +UINT32 +); + +409 +cmd_¬p_dbg_·r£ +( + +410 * +·r£d_»suÉ +, + +411 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +412 +__¹e_unu£d + * +d©a +) + +414  +cmd_¬p_dbg_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +415 if( + g·¿ms +) + +417 +£t_¬pdebug +( +·¿ms +-> +æag +); + +421 +´štf +("%s: P¬am i NULL", +__FUNCTION__ +); + +425 +cmdlše_·r£_š¡_t + + gcmd_¬p_dbg + = { + +426 . +f + = +cmd_¬p_dbg_·r£ +, + +427 . + gd©a + = +NULL +, + +428 . + gh–p_¡r + = "Turn on/off(1/0)‡rp debug", + +429 . + gtok’s + = { + +430 (*)& +cmd_¬p_dbg_¡ršg +, + +431 (*)& +cmd_¬p_dbg_æag +, + +432 +NULL +, + +436  + scmd_¬p_tim”_»suÉ + { + +437 +cmdlše_fixed_¡ršg_t + + m¬±im”_¡r +; + +438 +ušt32_t + + m¬±im”_v® +; + +441 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_tim”_¡ršg + = + +442 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_tim”_»suÉ +, +¬±im”_¡r +, + +444 +cmdlše_·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 * +·r£d_»suÉ +, + +450 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +451 +__¹e_unu£d + * +d©a +) + +453  +cmd_¬p_tim”_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +454 if( + g·¿ms +) + +456 +£t_¬±imeout +( +·¿ms +-> +¬±im”_v® +); + +460 +´štf +("%s: P¬am i NULL", +__FUNCTION__ +); + +464 +cmdlše_·r£_š¡_t + + gcmd_¬p_tim” + = { + +465 . +f + = +cmd_¬p_tim”_·r£ +, + +466 . + gd©a + = +NULL +, + +467 . + gh–p_¡r + = "Timerƒxpiry val by def 10 sec", + +468 . + gtok’s + = { + +469 (*)& +cmd_¬p_tim”_¡ršg +, + +470 (*)& +cmd_¬p_tim”_v® +, + +471 +NULL +, + +483 + $pkt_bur¡_io_fÜw¬d +( +fwd_¡»am + * +fs +) + +485  +¹e_mbuf + * +pkts_bur¡ +[ +MAX_PKT_BURST +]; + +486 +ušt16_t + +nb_rx +; + +487 +ušt16_t + +nb_tx +; + +489 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +490 +ušt64_t + +¡¬t_tsc +; + +491 +ušt64_t + +’d_tsc +; + +492 +ušt64_t + +cÜe_cyþes +; + +495 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +496 +¡¬t_tsc + = + `¹e_rdtsc +(); + +502 +nb_rx + = + `¹e_‘h_rx_bur¡ +( +fs +-> +rx_pÜt +, fs-> +rx_queue +, +pkts_bur¡ +, + +503 +nb_pkt_³r_bur¡ +); + +504 ià( + `uÆik–y +( +nb_rx + == 0)) + +507 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +508 +fs +-> +rx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_rx +]++; + +511 +fs +-> +rx_·ck‘s + +ð +nb_rx +; + +512 +nb_tx + = + `¹e_‘h_tx_bur¡ +( +fs +-> +tx_pÜt +, fs-> +tx_queue +, +pkts_bur¡ +, +nb_rx +); + +513 +fs +-> +tx_·ck‘s + +ð +nb_tx +; + +515 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +516 +fs +-> +tx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_tx +]++; + +519 ià( + `uÆik–y +( +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 +cÜe_cyþes + = ( +’d_tsc + - +¡¬t_tsc +); + +529 +fs +-> +cÜe_cyþes + = ( +ušt64_t +) (fs->core_cycles + core_cycles); + +531 + } +} + +534  +fwd_’gše + + gio_fwd_’gše + = { + +535 . +fwd_mode_Çme + = "io", + +536 . + gpÜt_fwd_begš + = +NULL +, + +537 . + gpÜt_fwd_’d + = +NULL +, + +538 . + g·ck‘_fwd + = +pkt_bur¡_io_fÜw¬d +, + +541  +šlše +  + $´št_‘h”_addr +( + +542 cÚ¡ * +wh© +, + +543  +‘h”_addr + * +‘h_addr +) + +545  +buf +[ +ETHER_ADDR_FMT_SIZE +]; + +546 + `‘h”_fÜm©_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 +ušt16_t + +‘h_ty³ +; + +560 +ušt64_t + +Þ_æags +; + +561 +ušt16_t + +nb_rx +; + +562 +ušt16_t + +i +, +·ck‘_ty³ +; + +563 +ušt16_t + +is_’ÿpsuÏtiÚ +; + +565 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +566 +ušt64_t + +¡¬t_tsc +; + +567 +ušt64_t + +’d_tsc +; + +568 +ušt64_t + +cÜe_cyþes +; + +571 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +572 +¡¬t_tsc + = + `¹e_rdtsc +(); + +578 +nb_rx + = + `¹e_‘h_rx_bur¡ +( +fs +-> +rx_pÜt +, fs-> +rx_queue +, +pkts_bur¡ +, + +579 +nb_pkt_³r_bur¡ +); + +580 ià( + `uÆik–y +( +nb_rx + == 0)) + +583 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +584 +fs +-> +rx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_rx +]++; + +587 +fs +-> +rx_·ck‘s + +ð +nb_rx +; + +592 ià( +v”bo£_Ëv– + > 0) + +593 + `´štf +("port %u/queue %u:„eceived %u…ackets\n", + +594 (è +fs +-> +rx_pÜt +, + +595 (è +fs +-> +rx_queue +, + +596 (è +nb_rx +); + +597  +i + = 0; i < +nb_rx +; i++) { + +598 +mb + = +pkts_bur¡ +[ +i +]; + +599 ià( +v”bo£_Ë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_’ÿpsuÏtiÚ + = + `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 +(" - VLANci=0x%x", +mb +-> +vÏn_tci +); + +633 ià( +Þ_æags + & +PKT_RX_QINQ_PKT +) + +634 + `´štf +(" - QinQ VLANci=0x%x, VLANci outer=0x%x", + +635 +mb +-> +vÏn_tci +, mb-> +vÏn_tci_ou‹r +); + +636 ià( +mb +-> +·ck‘_ty³ +) { + +637 +ušt32_t + +±y³ +; + +640 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_L2_MASK +; + +641  +±y³ +) { + +642  +RTE_PTYPE_L2_ETHER +: + +643 + `´štf +(" - (outer) L2ype: ETHER"); + +645  +RTE_PTYPE_L2_ETHER_TIMESYNC +: + +646 + `´štf +(" - (outer) L2ype: ETHER_Timesync"); + +648  +RTE_PTYPE_L2_ETHER_ARP +: + +649 + `´štf +(" - (outer) L2ype: ETHER_ARP"); + +651  +RTE_PTYPE_L2_ETHER_LLDP +: + +652 + `´štf +(" - (outer) L2ype: ETHER_LLDP"); + +655 + `´štf +(" - (outer) L2ype: Unknown"); + +660 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_L3_MASK +; + +661  +±y³ +) { + +662  +RTE_PTYPE_L3_IPV4 +: + +663 + `´štf +(" - (outer) L3ype: IPV4"); + +665  +RTE_PTYPE_L3_IPV4_EXT +: + +666 + `´štf +(" - (outer) L3ype: IPV4_EXT"); + +668  +RTE_PTYPE_L3_IPV6 +: + +669 + `´štf +(" - (outer) L3ype: IPV6"); + +671  +RTE_PTYPE_L3_IPV4_EXT_UNKNOWN +: + +672 + `´štf +(" - (outer) L3ype: IPV4_EXT_UNKNOWN"); + +674  +RTE_PTYPE_L3_IPV6_EXT +: + +675 + `´štf +(" - (outer) L3ype: IPV6_EXT"); + +677  +RTE_PTYPE_L3_IPV6_EXT_UNKNOWN +: + +678 + `´štf +(" - (outer) L3ype: IPV6_EXT_UNKNOWN"); + +681 + `´štf +(" - (outer) L3ype: Unknown"); + +686 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_L4_MASK +; + +687  +±y³ +) { + +688  +RTE_PTYPE_L4_TCP +: + +689 + `´štf +(" - (outer) L4ype: TCP"); + +691  +RTE_PTYPE_L4_UDP +: + +692 + `´štf +(" - (outer) L4ype: UDP"); + +694  +RTE_PTYPE_L4_FRAG +: + +695 + `´štf +(" - (outer) L4ype: L4_FRAG"); + +697  +RTE_PTYPE_L4_SCTP +: + +698 + `´štf +(" - (outer) L4ype: SCTP"); + +700  +RTE_PTYPE_L4_ICMP +: + +701 + `´štf +(" - (outer) L4ype: ICMP"); + +703  +RTE_PTYPE_L4_NONFRAG +: + +704 + `´štf +(" - (outer) L4ype: L4_NONFRAG"); + +707 + `´štf +(" - (outer) L4ype: Unknown"); + +712 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_TUNNEL_MASK +; + +713  +±y³ +) { + +714  +RTE_PTYPE_TUNNEL_IP +: + +715 + `´štf +(" - Tunnelype: IP"); + +717  +RTE_PTYPE_TUNNEL_GRE +: + +718 + `´štf +(" - Tunnelype: GRE"); + +720  +RTE_PTYPE_TUNNEL_VXLAN +: + +721 + `´štf +(" - Tunnelype: VXLAN"); + +723  +RTE_PTYPE_TUNNEL_NVGRE +: + +724 + `´štf +(" - Tunnelype: NVGRE"); + +726  +RTE_PTYPE_TUNNEL_GENEVE +: + +727 + `´štf +(" - Tunnelype: GENEVE"); + +729  +RTE_PTYPE_TUNNEL_GRENAT +: + +730 + `´štf +(" - Tunnelype: GRENAT"); + +733 + `´štf +(" - Tunnelype: Unknown"); + +738 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_INNER_L2_MASK +; + +739  +±y³ +) { + +740  +RTE_PTYPE_INNER_L2_ETHER +: + +741 + `´štf +(" - Inner L2ype: ETHER"); + +743  +RTE_PTYPE_INNER_L2_ETHER_VLAN +: + +744 + `´štf +(" - Inner L2ype: ETHER_VLAN"); + +747 + `´štf +(" - Inner L2ype: Unknown"); + +751 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_INNER_L3_MASK +; + +752  +±y³ +) { + +753  +RTE_PTYPE_INNER_L3_IPV4 +: + +754 + `´štf +(" - Inner L3ype: IPV4"); + +756  +RTE_PTYPE_INNER_L3_IPV4_EXT +: + +757 + `´štf +(" - Inner L3ype: IPV4_EXT"); + +759  +RTE_PTYPE_INNER_L3_IPV6 +: + +760 + `´štf +(" - Inner L3ype: IPV6"); + +762  +RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN +: + +763 + `´štf +(" - Inner L3ype: " + +766  +RTE_PTYPE_INNER_L3_IPV6_EXT +: + +767 + `´štf +(" - Inner L3ype: IPV6_EXT"); + +769  +RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN +: + +770 + `´štf +(" - Inner L3ype: " + +774 + `´štf +(" - Inner L3ype: Unknown"); + +779 +±y³ + = +mb +-> +·ck‘_ty³ + & +RTE_PTYPE_INNER_L4_MASK +; + +780  +±y³ +) { + +781  +RTE_PTYPE_INNER_L4_TCP +: + +782 + `´štf +(" - Inner L4ype: TCP"); + +784  +RTE_PTYPE_INNER_L4_UDP +: + +785 + `´štf +(" - Inner L4ype: UDP"); + +787  +RTE_PTYPE_INNER_L4_FRAG +: + +788 + `´štf +(" - Inner L4ype: L4_FRAG"); + +790  +RTE_PTYPE_INNER_L4_SCTP +: + +791 + `´štf +(" - Inner L4ype: SCTP"); + +793  +RTE_PTYPE_INNER_L4_ICMP +: + +794 + `´štf +(" - Inner L4ype: ICMP"); + +796  +RTE_PTYPE_INNER_L4_NONFRAG +: + +797 + `´štf +(" - Inner L4ype: L4_NONFRAG"); + +800 + `´štf +(" - Inner L4ype: Unknown"); + +803 + `´štf +("\n"); + +805 + `´štf +("Unknown…acketype\n"); + +806 ià( +is_’ÿpsuÏtiÚ +) { + +807  +v4_hdr + *ipv4_hdr; + +808  +v6_hdr + *ipv6_hdr; + +809  +udp_hdr + *udp_hdr; + +810 +ušt8_t + +l2_Ën +; + +811 +ušt8_t + +l3_Ën +; + +812 +ušt8_t + +l4_Ën +; + +813 +ušt8_t + +l4_´Ùo +; + +814  +vxÏn_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_off£t +( +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_off£t +( +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_off£t +( +mb +, + +834  +udp_hdr + *, + +835 +l2_Ën + + +l3_Ën +); + +836 +l4_Ën + = ( +udp_hdr +); + +837 +vxÏn_hdr + = + `¹e_pktmbuf_mtod_off£t +( +mb +, + +838  +vxÏn_hdr + *, + +839 +l2_Ën + + +l3_Ën + + +l4_Ën +); + +841 + `´štf +(" - VXLAN…acket:…acketype =%d, " + +843 +·ck‘_ty³ +, + +844 + `RTE_BE_TO_CPU_16 +( +udp_hdr +-> +d¡_pÜt +), + +845 + `¹e_be_to_ýu_32 +( + +846 +vxÏn_hdr +-> +vx_vni +) >> 8); + +849 + `´štf +(" - Reûivqueue=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 +cÜe_cyþes + = ( +’d_tsc + - +¡¬t_tsc +); + +870 +fs +-> +cÜe_cyþes + = ( +ušt64_t +) (fs->core_cycles + core_cycles); + +872 + } +} + +874  +fwd_’gše + + grx_Úly_’gše + = { + +875 . +fwd_mode_Çme + = "rxonly", + +876 . + gpÜt_fwd_begš + = +NULL +, + +877 . + gpÜt_fwd_’d + = +NULL +, + +878 . + g·ck‘_fwd + = +pkt_bur¡_»ûive +, + +882  + scmd_£t_fwd_mode_»suÉ + { + +883 +cmdlše_fixed_¡ršg_t + + m£t +; + +884 +cmdlše_fixed_¡ršg_t + + mfwd +; + +885 +cmdlše_fixed_¡ršg_t + + mmode +; + +891  +fwd_’gše + * + gfwd_’gšes +[] = { + +892 & +io_fwd_’gše +, + +894 & +mac_fwd_’gše +, + +895 & +mac_»Œy_fwd_’gše +, + +896 & +mac_sw­_’gše +, + +897 & +æow_g’_’gše +, + +899 & +rx_Úly_’gše +, + +901 & +tx_Úly_’gše +, + +902 & +csum_fwd_’gše +, + +903 & +icmp_echo_’gše +, + +904 #ifdeà +RTE_LIBRTE_IEEE1588 + + +905 & +›“1588_fwd_’gše +, + +908 +NULL +, + +911  +fwd_’gše + * + gcur_fwd_’g + = & +io_fwd_’gše +; + +913  + $£t_pkt_fÜw¬dšg_mode +(cÚ¡ * +fwd_mode_Çme +) + +915  +fwd_’gše + * +fwd_’g +; + +916  +i +; + +918 +i + = 0; + +919 ( +fwd_’g + = +fwd_’gšes +[ +i +]è!ð +NULL +) { + +920 ià(! + `¡rcmp +( +fwd_’g +-> +fwd_mode_Çme +, fwd_mode_name)) { + +921 + `´štf +("Set %s…acket forwarding mode\n", + +922 +fwd_mode_Çme +); + +923 +cur_fwd_’g + = +fwd_’g +; + +926 +i +++; + +928 + `´štf +("Inv®id % ·ck‘ fÜw¬dšg mode\n", +fwd_mode_Çme +); + +929 + } +} + +931  +cmd_£t_fwd_mode_·r£d +(* +·r£d_»suÉ +, + +932 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +933 +__©Œibu‹__ +(( +unu£d +)è* +d©a +) + +935  +cmd_£t_fwd_mode_»suÉ + * + g»s + = +·r£d_»suÉ +; + +937 +£t_pkt_fÜw¬dšg_mode +( +»s +-> +mode +); + +940 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£tfwd_£t + = + +941 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +£t +, "set"); + +942 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£tfwd_fwd + = + +943 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +fwd +, "fwd"); + +944 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£tfwd_mode + = + +945 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +mode +, + +948 +cmdlše_·r£_š¡_t + + gcmd_£t_fwd_mode + = { + +949 . +f + = +cmd_£t_fwd_mode_·r£d +, + +950 . + gd©a + = +NULL +, + +951 . + gh–p_¡r + = +NULL +, + +952 . + gtok’s + = { + +953 (*)& +cmd_£tfwd_£t +, + +954 (*)& +cmd_£tfwd_fwd +, + +955 (*)& +cmd_£tfwd_mode +, + +956 +NULL +, + +962  +ušt16_t + + +963 + $¡r2æowty³ +(* +¡ršg +) + +965 +ušt8_t + +i + = 0; + +967  +¡r +[32]; + +968 +ušt16_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-sùp", +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-sùp", +RTE_ETH_FLOW_NONFRAG_IPV6_SCTP +}, + +982 {"v6-Ùh”", +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER +}, + +983 {"l2_·ylßd", +RTE_ETH_FLOW_L2_PAYLOAD +}, + +986  +i + = 0; i < + `RTE_DIM +( +æowty³_¡r +); i++) { + +987 ià(! + `¡rcmp +( +æowty³_¡r +[ +i +]. +¡r +, +¡ršg +)) + +988  +æowty³_¡r +[ +i +]. +ty³ +; + +990  +RTE_ETH_FLOW_UNKNOWN +; + +991 + } +} + +993  +šlše +  + +994 + $·r£_æexby‹s +(cÚ¡ * +q_¬g +, +ušt8_t + * +æexby‹s +, +ušt16_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_¡r¥l™ +( +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 +æexby‹s +[ +i +] = ( +ušt8_t +) +št_æd +; + +1028  +»t +; + +1029 + } +} + +1032  + scmd_æow_dœeùÜ_»suÉ + { + +1033 +cmdlše_fixed_¡ršg_t + + mæow_dœeùÜ_fž‹r +; + +1034 +ušt8_t + + mpÜt_id +; + +1035 +cmdlše_fixed_¡ršg_t + + mmode +; + +1036 +cmdlše_fixed_¡ršg_t + + mmode_v®ue +; + +1037 +cmdlše_fixed_¡ršg_t + + mÝs +; + +1038 +cmdlše_fixed_¡ršg_t + + mæow +; + +1039 +cmdlše_fixed_¡ršg_t + + mæow_ty³ +; + +1040 +cmdlše_fixed_¡ršg_t + + m‘h” +; + +1041 +ušt16_t + + m‘h”_ty³ +; + +1042 +cmdlše_fixed_¡ršg_t + + m¤c +; + +1043 +cmdlše_addr_t + + m_¤c +; + +1044 +ušt16_t + + mpÜt_¤c +; + +1045 +cmdlše_fixed_¡ršg_t + + md¡ +; + +1046 +cmdlše_addr_t + + m_d¡ +; + +1047 +ušt16_t + + mpÜt_d¡ +; + +1048 +cmdlše_fixed_¡ršg_t + + mv”ify_g +; + +1049 +ušt32_t + + mv”ify_g_v®ue +; + +1050 +cmdlše_addr_t + + mtos +; + +1051 +ušt8_t + + mtos_v®ue +; + +1052 +cmdlše_addr_t + + m´Ùo +; + +1053 +ušt8_t + + m´Ùo_v®ue +; + +1054 +cmdlše_addr_t + + m‰l +; + +1055 +ušt8_t + + m‰l_v®ue +; + +1056 +cmdlše_fixed_¡ršg_t + + mvÏn +; + +1057 +ušt16_t + + mvÏn_v®ue +; + +1058 +cmdlše_fixed_¡ršg_t + + mæexby‹s +; + +1059 +cmdlše_fixed_¡ršg_t + + mæexby‹s_v®ue +; + +1060 +cmdlše_fixed_¡ršg_t + + mpf_vf +; + +1061 +cmdlše_fixed_¡ršg_t + + mdrÝ +; + +1062 +cmdlše_fixed_¡ršg_t + + mqueue +; + +1063 +ušt16_t + + mqueue_id +; + +1064 +cmdlše_fixed_¡ršg_t + + mfd_id +; + +1065 +ušt32_t + + mfd_id_v®ue +; + +1066 +cmdlše_fixed_¡ršg_t + + mmac +; + +1067  +‘h”_addr + + mmac_addr +; + +1068 +cmdlše_fixed_¡ršg_t + + mtu– +; + +1069 +cmdlše_fixed_¡ršg_t + + mtu–_ty³ +; + +1070 +cmdlše_fixed_¡ršg_t + + mtu–_id +; + +1071 +ušt32_t + + mtu–_id_v®ue +; + +1075 +cmd_æow_dœeùÜ_fž‹r_·r£d +(* +·r£d_»suÉ +, + +1076 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +1077 +__©Œibu‹__ +(( +unu£d +)è* +d©a +) + +1079  +cmd_æow_dœeùÜ_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1080  +¹e_‘h_fdœ_fž‹r + + g’Œy +; + +1081 +ušt8_t + + gæexby‹s +[ +RTE_ETH_FDIR_MAX_FLEXLEN +]; + +1082 * + g’d +; + +1083  + gvf_id +; + +1084  + g»t + = 0; + +1086 ià( + g’abË_hwlb +) { + +1087 +´štf +("Hash Filter is‡lready Defined !\n"); + +1088 +´štf +("Please undefine HWLD flag‡nd define " + +1093 + g»t + = +¹e_‘h_dev_fž‹r_suµÜ‹d +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +); + +1094 ià( + g»t + < 0) { + +1095 +´štf +("flow director is‚ot supported on…ort %u.\n", + +1096 +»s +-> +pÜt_id +); + +1099 +mem£t +( +æexby‹s +, 0, (flexbytes)); + +1100 +mem£t +(& +’Œy +, 0, ( +¹e_‘h_fdœ_fž‹r +)); + +1102 ià( + gfdœ_cÚf +. + gmode + =ð +RTE_FDIR_MODE_PERFECT_MAC_VLAN +) { + +1103 ià( +¡rcmp +( +»s +-> +mode_v®ue +, "MAC-VLAN")) { + +1104 +´štf +("Please set modeo MAC-VLAN.\n"); + +1107 } ià( + gfdœ_cÚf +. + gmode + =ð +RTE_FDIR_MODE_PERFECT_TUNNEL +) { + +1108 ià( +¡rcmp +( +»s +-> +mode_v®ue +, "Tunnel")) { + +1109 +´štf +("Please set modeo Tunnel.\n"); + +1113 ià( +¡rcmp +( +»s +-> +mode_v®ue +, "IP")) { + +1114 +´štf +("Please set modeo IP.\n"); + +1119 + g’Œy +. + gšput +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1122 + g»t + = +·r£_æexby‹s +( +»s +-> +æexby‹s_v®ue +, + +1123 +æexby‹s +, + +1124 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1125 ià( + g»t + < 0) { + +1126 +´štf +("error: Cannot…arse flexbytes input.\n"); + +1130  + g’Œy +. + gšput +. + gæow_ty³ +) { + +1131  + gRTE_ETH_FLOW_FRAG_IPV4 +: + +1132  +RTE_ETH_FLOW_NONFRAG_IPV4_OTHER +: + +1133 +’Œy +. +šput +. +æow +. +4_æow +. +´Ùo + = +»s +-> +´Ùo_v®ue +; + +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 + g’Œy +. + gšput +. + gæow +. + g4_æow +. + gtos + = +»s +-> +tos_v®ue +; + +1141 + g’Œy +. + gšput +. + gæow +. + g4_æow +. + g‰l + = +»s +-> +‰l_v®ue +; + +1143 + g’Œy +. + gšput +. + gæow +. + gudp4_æow +. + gd¡_pÜt + = + +1144 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1145 + g’Œy +. + gšput +. + gæow +. + gudp4_æow +. + g¤c_pÜt + = + +1146 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1149  + gRTE_ETH_FLOW_NONFRAG_IPV4_SCTP +: + +1150 +IPV4_ADDR_TO_UINT +( +»s +-> +_d¡ +, + +1151 +’Œy +. +šput +. +æow +. +sùp4_æow +. + +. +d¡_ +); + +1152 +IPV4_ADDR_TO_UINT +( +»s +-> +_¤c +, + +1153 +’Œy +. +šput +. +æow +. +sùp4_æow +. + +. +¤c_ +); + +1154 + g’Œy +. + gšput +. + gæow +. + g4_æow +. + gtos + = +»s +-> +tos_v®ue +; + +1155 + g’Œy +. + gšput +. + gæow +. + g4_æow +. + g‰l + = +»s +-> +‰l_v®ue +; + +1157 + g’Œy +. + gšput +. + gæow +. + gsùp4_æow +. + gd¡_pÜt + = + +1158 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1159 + g’Œy +. + gšput +. + gæow +. + gsùp4_æow +. + g¤c_pÜt + = + +1160 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1161 + g’Œy +. + gšput +. + gæow +. + gsùp4_æow +. + gv”ify_g + = + +1162 +¹e_ýu_to_be_32 +( +»s +-> +v”ify_g_v®ue +); + +1165  + gRTE_ETH_FLOW_FRAG_IPV6 +: + +1166  +RTE_ETH_FLOW_NONFRAG_IPV6_OTHER +: + +1167 +’Œy +. +šput +. +æow +. +v6_æow +. +´Ùo + = +»s +-> +´Ùo_v®ue +; + +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 + g’Œy +. + gšput +. + gæow +. + gv6_æow +. + gtc + = +»s +-> +tos_v®ue +; + +1175 + g’Œy +. + gšput +. + gæow +. + gv6_æow +. + ghÝ_lim™s + = +»s +-> +‰l_v®ue +; + +1177 + g’Œy +. + gšput +. + gæow +. + gudp6_æow +. + gd¡_pÜt + = + +1178 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1179 + g’Œy +. + gšput +. + gæow +. + gudp6_æow +. + g¤c_pÜt + = + +1180 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1183  + gRTE_ETH_FLOW_NONFRAG_IPV6_SCTP +: + +1184 +IPV6_ADDR_TO_ARRAY +( +»s +-> +_d¡ +, + +1185 +’Œy +. +šput +. +æow +. +sùp6_æow +. + +. +d¡_ +); + +1186 +IPV6_ADDR_TO_ARRAY +( +»s +-> +_¤c +, + +1187 +’Œy +. +šput +. +æow +. +sùp6_æow +. + +. +¤c_ +); + +1188 + g’Œy +. + gšput +. + gæow +. + gv6_æow +. + gtc + = +»s +-> +tos_v®ue +; + +1189 + g’Œy +. + gšput +. + gæow +. + gv6_æow +. + ghÝ_lim™s + = +»s +-> +‰l_v®ue +; + +1191 + g’Œy +. + gšput +. + gæow +. + gsùp6_æow +. + gd¡_pÜt + = + +1192 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1193 + g’Œy +. + gšput +. + gæow +. + gsùp6_æow +. + g¤c_pÜt + = + +1194 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1195 + g’Œy +. + gšput +. + gæow +. + gsùp6_æow +. + gv”ify_g + = + +1196 +¹e_ýu_to_be_32 +( +»s +-> +v”ify_g_v®ue +); + +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œ_cÚf +. + gmode + =ð +RTE_FDIR_MODE_PERFECT_MAC_VLAN +) + +1207 () +¹e_memýy +(& +’Œy +. +šput +. +æow +. +mac_vÏn_æow +. +mac_addr +, + +1208 & +»s +-> +mac_addr +, + +1209 ( +‘h”_addr +)); + +1211 ià( + gfdœ_cÚf +. + gmode + =ð +RTE_FDIR_MODE_PERFECT_TUNNEL +) { + +1212 () +¹e_memýy +(& +’Œy +. +šput +. +æow +. +tu–_æow +. +mac_addr +, + +1213 & +»s +-> +mac_addr +, + +1214 ( +‘h”_addr +)); + +1215 + g’Œy +. + gšput +. + gæow +. + gtu–_æow +. + gtu–_ty³ + = + +1216 +¡r2fdœ_tu–ty³ +( +»s +-> +tu–_ty³ +); + +1217 + g’Œy +. + gšput +. + gæow +. + gtu–_æow +. + gtu–_id + = + +1218 +¹e_ýu_to_be_32 +( +»s +-> +tu–_id_v®ue +); + +1222 () +¹e_memýy +( +’Œy +. +šput +. +æow_ext +. +æexby‹s +, + +1223 +æexby‹s +, + +1224 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1226 + g’Œy +. + gšput +. + gæow_ext +. + gvÏn_tci + = +¹e_ýu_to_be_16 +( +»s +-> +vÏn_v®ue +); + +1228 + g’Œy +. + gaùiÚ +. + gæex_off + = 0; + +1229 ià(! +¡rcmp +( +»s +-> +drÝ +, "drop")) + +1230 + g’Œy +. + gaùiÚ +. + gbehaviÜ + = +RTE_ETH_FDIR_REJECT +; + +1232 + g’Œy +. + gaùiÚ +. + gbehaviÜ + = +RTE_ETH_FDIR_ACCEPT +; + +1234 ià(! +¡rcmp +( +»s +-> +pf_vf +, "pf")) + +1235 + g’Œy +. + gšput +. + gæow_ext +. + gis_vf + = 0; + +1236 ià(! +¡ºcmp +( +»s +-> +pf_vf +, "vf", 2)) { + +1237  +¹e_‘h_dev_šfo + + gdev_šfo +; + +1239 +mem£t +(& +dev_šfo +, 0, (dev_info)); + +1240 +¹e_‘h_dev_šfo_g‘ +( +»s +-> +pÜt_id +, & +dev_šfo +); + +1241 + g”ºo + = 0; + +1242 + gvf_id + = +¡¹oul +( +»s +-> +pf_vf + + 2, & +’d +, 10); + +1243 ià( + g”ºo + !ð0 || * +’d + !ð'\0' || +vf_id + >ð +dev_šfo +. +max_vfs +) { + +1244 +´štf +("šv®id…¬am‘” %s.\n", +»s +-> +pf_vf +); + +1247 + g’Œy +. + gšput +. + gæow_ext +. + gis_vf + = 1; + +1248 + g’Œy +. + gšput +. + gæow_ext +. + gd¡_id + = ( +ušt16_t +) +vf_id +; + +1250 +´štf +("šv®id…¬am‘” %s.\n", +»s +-> +pf_vf +); + +1254 + g’Œy +. + gaùiÚ +. + g»pÜt_¡©us + = +RTE_ETH_FDIR_REPORT_ID +; + +1255 + g’Œy +. + gaùiÚ +. + grx_queue + = +»s +-> +queue_id +; + +1256 + g’Œy +. + gsoá_id + = +»s +-> +fd_id_v®ue +; + +1257 ià(! +¡rcmp +( +»s +-> +Ýs +, "add")) + +1258 + g»t + = +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +, + +1259 +RTE_ETH_FILTER_ADD +, & +’Œy +); + +1260 ià(! +¡rcmp +( +»s +-> +Ýs +, "del")) + +1261 + g»t + = +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +, + +1262 +RTE_ETH_FILTER_DELETE +, & +’Œy +); + +1264 + g»t + = +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +, + +1265 +RTE_ETH_FILTER_UPDATE +, & +’Œy +); + +1266 ià( + g»t + < 0) + +1267 +´štf +("flow director…rogrammingƒrror: (%s)\n", + +1268 +¡»¼Ü +(- +»t +)); + +1274 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_fž‹r + = + +1275 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1276 +æow_dœeùÜ_fž‹r +, "flow_director_filter"); + +1278 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_pÜt_id + = + +1279 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1280 +pÜt_id +, +UINT8 +); + +1283 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_mode + = + +1284 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1285 +mode +, "mode"); + +1287 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_mode_ + = + +1288 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1289 +mode_v®ue +, "IP"); + +1291 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_Ýs + = + +1292 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1293 +Ýs +, "add#del#update"); + +1295 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_æow + = + +1296 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1297 +æow +, "flow"); + +1299 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_æow_ty³ + = + +1300 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1301 +æow_ty³ +, "ipv4-other#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#" + +1304 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_¤c + = + +1305 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1306 +¤c +, "src"); + +1307 +cmdlše_·r£_tok’_addr_t + + gcmd_æow_dœeùÜ__¤c + = + +1308 +TOKEN_IPADDR_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1309 +_¤c +); + +1310 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_pÜt_¤c + = + +1311 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1312 +pÜt_¤c +, +UINT16 +); + +1313 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_d¡ + = + +1314 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1315 +d¡ +, "dst"); + +1316 +cmdlše_·r£_tok’_addr_t + + gcmd_æow_dœeùÜ__d¡ + = + +1317 +TOKEN_IPADDR_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1318 +_d¡ +); + +1319 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_pÜt_d¡ + = + +1320 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1321 +pÜt_d¡ +, +UINT16 +); + +1323 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_tos + = + +1324 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1325 +tos +, "tos"); + +1326 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_tos_v®ue + = + +1327 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1328 +tos_v®ue +, +UINT8 +); + +1330 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_‰l + = + +1331 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1332 +‰l +, "ttl"); + +1333 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_‰l_v®ue + = + +1334 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1335 +‰l_v®ue +, +UINT8 +); + +1337 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_vÏn + = + +1338 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1339 +vÏn +, "vlan"); + +1340 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_vÏn_v®ue + = + +1341 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1342 +vÏn_v®ue +, +UINT16 +); + +1343 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_æexby‹s + = + +1344 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1345 +æexby‹s +, "flexbytes"); + +1346 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_æexby‹s_v®ue + = + +1347 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1348 +æexby‹s_v®ue +, +NULL +); + +1349 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_drÝ + = + +1350 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1351 +drÝ +, "drop#fwd"); + +1352 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_pf_vf + = + +1353 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1354 +pf_vf +, +NULL +); + +1355 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_queue + = + +1356 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1357 +queue +, "queue"); + +1358 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_queue_id + = + +1359 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1360 +queue_id +, +UINT16 +); + +1361 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_fd_id + = + +1362 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1363 +fd_id +, "fd_id"); + +1364 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_fd_id_v®ue + = + +1365 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1366 +fd_id_v®ue +, +UINT32 +); + +1369 +cmdlše_·r£_š¡_t + + gcmd_add_d–_udp_æow_dœeùÜ + = { + +1370 . +f + = +cmd_æow_dœeùÜ_fž‹r_·r£d +, + +1371 . + gd©a + = +NULL +, + +1372 . + gh–p_¡r + = "add or delete‡n udp/tcp flow directorƒntry on NIC", + +1373 . + gtok’s + = { + +1374 (*)& +cmd_æow_dœeùÜ_fž‹r +, + +1375 (*)& +cmd_æow_dœeùÜ_pÜt_id +, + +1376 (*)& +cmd_æow_dœeùÜ_mode +, + +1377 (*)& +cmd_æow_dœeùÜ_mode_ +, + +1378 (*)& +cmd_æow_dœeùÜ_Ýs +, + +1379 (*)& +cmd_æow_dœeùÜ_æow +, + +1380 (*)& +cmd_æow_dœeùÜ_æow_ty³ +, + +1381 (*)& +cmd_æow_dœeùÜ_¤c +, + +1382 (*)& +cmd_æow_dœeùÜ__¤c +, + +1383 (*)& +cmd_æow_dœeùÜ_pÜt_¤c +, + +1384 (*)& +cmd_æow_dœeùÜ_d¡ +, + +1385 (*)& +cmd_æow_dœeùÜ__d¡ +, + +1386 (*)& +cmd_æow_dœeùÜ_pÜt_d¡ +, + +1387 (*)& +cmd_æow_dœeùÜ_tos +, + +1388 (*)& +cmd_æow_dœeùÜ_tos_v®ue +, + +1389 (*)& +cmd_æow_dœeùÜ_‰l +, + +1390 (*)& +cmd_æow_dœeùÜ_‰l_v®ue +, + +1391 (*)& +cmd_æow_dœeùÜ_vÏn +, + +1392 (*)& +cmd_æow_dœeùÜ_vÏn_v®ue +, + +1393 (*)& +cmd_æow_dœeùÜ_æexby‹s +, + +1394 (*)& +cmd_æow_dœeùÜ_æexby‹s_v®ue +, + +1395 (*)& +cmd_æow_dœeùÜ_drÝ +, + +1396 (*)& +cmd_æow_dœeùÜ_pf_vf +, + +1397 (*)& +cmd_æow_dœeùÜ_queue +, + +1398 (*)& +cmd_æow_dœeùÜ_queue_id +, + +1399 (*)& +cmd_æow_dœeùÜ_fd_id +, + +1400 (*)& +cmd_æow_dœeùÜ_fd_id_v®ue +, + +1401 +NULL +, + +1405 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_æow_dœeùÜ_‘h” + = + +1406 +TOKEN_STRING_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1407 +‘h” +, "ether"); + +1408 +cmdlše_·r£_tok’_num_t + + gcmd_æow_dœeùÜ_‘h”_ty³ + = + +1409 +TOKEN_NUM_INITIALIZER +( +cmd_æow_dœeùÜ_»suÉ +, + +1410 +‘h”_ty³ +, +UINT16 +); + +1412 +cmdlše_·r£_š¡_t + + gcmd_add_d–_l2_æow_dœeùÜ + = { + +1413 . +f + = +cmd_æow_dœeùÜ_fž‹r_·r£d +, + +1414 . + gd©a + = +NULL +, + +1415 . + gh–p_¡r + = "add or delete‡ L2 flow directorƒntry on NIC", + +1416 . + gtok’s + = { + +1417 (*)& +cmd_æow_dœeùÜ_fž‹r +, + +1418 (*)& +cmd_æow_dœeùÜ_pÜt_id +, + +1419 (*)& +cmd_æow_dœeùÜ_mode +, + +1420 (*)& +cmd_æow_dœeùÜ_mode_ +, + +1421 (*)& +cmd_æow_dœeùÜ_Ýs +, + +1422 (*)& +cmd_æow_dœeùÜ_æow +, + +1423 (*)& +cmd_æow_dœeùÜ_æow_ty³ +, + +1424 (*)& +cmd_æow_dœeùÜ_‘h” +, + +1425 (*)& +cmd_æow_dœeùÜ_‘h”_ty³ +, + +1426 (*)& +cmd_æow_dœeùÜ_æexby‹s +, + +1427 (*)& +cmd_æow_dœeùÜ_æexby‹s_v®ue +, + +1428 (*)& +cmd_æow_dœeùÜ_drÝ +, + +1429 (*)& +cmd_æow_dœeùÜ_pf_vf +, + +1430 (*)& +cmd_æow_dœeùÜ_queue +, + +1431 (*)& +cmd_æow_dœeùÜ_queue_id +, + +1432 (*)& +cmd_æow_dœeùÜ_fd_id +, + +1433 (*)& +cmd_æow_dœeùÜ_fd_id_v®ue +, + +1434 +NULL +, + +1440  + scmd_£t_hash_šput_£t_»suÉ + { + +1441 +cmdlše_fixed_¡ršg_t + + g£t_hash_šput_£t +; + +1442 +ušt8_t + + gpÜt_id +; + +1443 +cmdlše_fixed_¡ršg_t + + gæow_ty³ +; + +1444 +cmdlše_fixed_¡ršg_t + + gš£t_f›ld0 +; + +1445 +cmdlše_fixed_¡ršg_t + + gš£t_f›ld1 +; + +1446 +cmdlše_fixed_¡ršg_t + + gš£t_f›ld2 +; + +1447 +cmdlše_fixed_¡ršg_t + + gš£t_f›ld3 +; + +1448 +cmdlše_fixed_¡ršg_t + + gš£t_f›ld4 +; + +1449 +cmdlše_fixed_¡ršg_t + + g£Ëù +; + +1452  +¹e_‘h_šput_£t_f›ld + + +1453 +¡r2š£t +(* +¡ršg +) + +1455 +ušt16_t + + gi +; + +1458  + g¡r +[32]; + +1459 +¹e_‘h_šput_£t_f›ld + + gš£t +; + +1460 } + gš£t_bË +[] = { + +1461 {"‘h”ty³", +RTE_ETH_INPUT_SET_L2_ETHERTYPE +}, + +1462 {"ovÏn", +RTE_ETH_INPUT_SET_L2_OUTER_VLAN +}, + +1463 {"ivÏn", +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-h—d”", +RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER +}, + +1473 {"v6-hÝ-lim™s", +RTE_ETH_INPUT_SET_L3_IP6_HOP_LIMITS +}, + +1474 {"udp-¤c-pÜt", +RTE_ETH_INPUT_SET_L4_UDP_SRC_PORT +}, + +1475 {"udp-d¡-pÜt", +RTE_ETH_INPUT_SET_L4_UDP_DST_PORT +}, + +1476 {"tý-¤c-pÜt", +RTE_ETH_INPUT_SET_L4_TCP_SRC_PORT +}, + +1477 {"tý-d¡-pÜt", +RTE_ETH_INPUT_SET_L4_TCP_DST_PORT +}, + +1478 {"sùp-¤c-pÜt", +RTE_ETH_INPUT_SET_L4_SCTP_SRC_PORT +}, + +1479 {"sùp-d¡-pÜt", +RTE_ETH_INPUT_SET_L4_SCTP_DST_PORT +}, + +1480 {"sùp-v”i-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 {"nÚe", +RTE_ETH_INPUT_SET_NONE +}, + +1493  + gi + = 0; i < +RTE_DIM +( +š£t_bË +); i++) { + +1494 ià(! +¡rcmp +( +¡ršg +, +š£t_bË +[ +i +]. +¡r +)) + +1495  + gš£t_bË +[ +i +]. + gš£t +; + +1498  + gRTE_ETH_INPUT_SET_UNKNOWN +; + +1502 +cmd_£t_hash_šput_£t_1_·r£d +(* +·r£d_»suÉ +, + +1503 +__¹e_unu£d +  +cmdlše + * +þ +, + +1504 +__¹e_unu£d + * +d©a +) + +1506  +cmd_£t_hash_šput_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1507  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1509 ià( + g’abË_æow_dœ +) { + +1510 +´štf +("FDIR Filter is Defined!\n"); + +1511 +´štf +("Please undefine FDIR_FILTER flag‡nd define " + +1516 +mem£t +(& +šfo +, 0, (info)); + +1517 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1518 + gšfo +.šfo. + gšput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1520 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[0] = +¡r2š£t +( +»s +-> +š£t_f›ld0 +); + +1521 + gšfo +.šfo. + gšput_£t_cÚf +. + gš£t_size + = 1; + +1523 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1524 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1525 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1526 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1528 +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1529 +RTE_ETH_FILTER_SET +, & +šfo +); + +1535 +cmd_£t_hash_šput_£t_2_·r£d +(* +·r£d_»suÉ +, + +1536 +__¹e_unu£d +  +cmdlše + * +þ +, + +1537 +__¹e_unu£d + * +d©a +) + +1539  +cmd_£t_hash_šput_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1540  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1542 ià( + g’abË_æow_dœ +) { + +1543 +´štf +("FDIR Filter is Defined!\n"); + +1544 +´štf +("Please undefine FDIR_FILTER flag‡nd define " + +1549 +mem£t +(& +šfo +, 0, (info)); + +1550 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1551 + gšfo +.šfo. + gšput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1553 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[0] = +¡r2š£t +( +»s +-> +š£t_f›ld0 +); + +1554 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[1] = +¡r2š£t +( +»s +-> +š£t_f›ld1 +); + +1556 + gšfo +.šfo. + gšput_£t_cÚf +. + gš£t_size + = 2; + +1558 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1559 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1560 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1561 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1563 +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1564 +RTE_ETH_FILTER_SET +, & +šfo +); + +1571 +cmd_£t_hash_šput_£t_3_·r£d +(* +·r£d_»suÉ +, + +1572 +__¹e_unu£d +  +cmdlše + * +þ +, + +1573 +__¹e_unu£d + * +d©a +) + +1575  +cmd_£t_hash_šput_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1576  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1578 +mem£t +(& +šfo +, 0, (info)); + +1579 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1580 + gšfo +.šfo. + gšput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1582 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[0] = +¡r2š£t +( +»s +-> +š£t_f›ld0 +); + +1583 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[1] = +¡r2š£t +( +»s +-> +š£t_f›ld1 +); + +1584 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[2] = +¡r2š£t +( +»s +-> +š£t_f›ld2 +); + +1585 + gšfo +.šfo. + gšput_£t_cÚf +. + gš£t_size + = 3; + +1587 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1588 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1589 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1590 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1592 +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1593 +RTE_ETH_FILTER_SET +, & +šfo +); + +1597 +cmd_£t_hash_šput_£t_4_·r£d +(* +·r£d_»suÉ +, + +1598 +__¹e_unu£d +  +cmdlše + * +þ +, + +1599 +__¹e_unu£d + * +d©a +) + +1601  +cmd_£t_hash_šput_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1602  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1604 ià( + g’abË_æow_dœ +) { + +1605 +´štf +("FDIR Filter is Defined!\n"); + +1606 +´štf +("Please undefine FDIR_FILTER flag‡nd define " + +1611 +mem£t +(& +šfo +, 0, (info)); + +1612 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1613 + gšfo +.šfo. + gšput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1615 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[0] = +¡r2š£t +( +»s +-> +š£t_f›ld0 +); + +1616 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[1] = +¡r2š£t +( +»s +-> +š£t_f›ld1 +); + +1617 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[2] = +¡r2š£t +( +»s +-> +š£t_f›ld2 +); + +1618 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[3] = +¡r2š£t +( +»s +-> +š£t_f›ld3 +); + +1620 + gšfo +.šfo. + gšput_£t_cÚf +. + gš£t_size + = 4; + +1621 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1622 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1623 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1624 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1626 +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1627 +RTE_ETH_FILTER_SET +, & +šfo +); + +1633 +cmd_£t_hash_šput_£t_5_·r£d +(* +·r£d_»suÉ +, + +1634 +__¹e_unu£d +  +cmdlše + * +þ +, + +1635 +__¹e_unu£d + * +d©a +) + +1637  +cmd_£t_hash_šput_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1638  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1640 +mem£t +(& +šfo +, 0, (info)); + +1641 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1642 + gšfo +.šfo. + gšput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1644 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[0] = +¡r2š£t +( +»s +-> +š£t_f›ld0 +); + +1645 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[1] = +¡r2š£t +( +»s +-> +š£t_f›ld1 +); + +1646 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[2] = +¡r2š£t +( +»s +-> +š£t_f›ld2 +); + +1647 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[3] = +¡r2š£t +( +»s +-> +š£t_f›ld3 +); + +1648 + gšfo +.šfo. + gšput_£t_cÚf +. + gf›ld +[4] = +¡r2š£t +( +»s +-> +š£t_f›ld4 +); + +1650 + gšfo +.šfo. + gšput_£t_cÚf +. + gš£t_size + = 5; + +1651 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1652 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1653 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1654 + gšfo +.šfo. + gšput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1655 +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1656 +RTE_ETH_FILTER_SET +, & +šfo +); + +1660 +cmdlše_·r£_tok’_¡ršg_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 +cmdlše_·r£_tok’_num_t + + gcmd_£t_hash_šput_£t_pÜt_id + = + +1664 +TOKEN_NUM_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1665 +pÜt_id +, +UINT8 +); + +1666 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_æow_ty³ + = + +1667 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1668 +æow_ty³ +, + +1672 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_f›ld0 + = + +1673 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1674 +š£t_f›ld0 +, + +1678 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_f›ld1 + = + +1679 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1680 +š£t_f›ld1 +, + +1684 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_f›ld2 + = + +1685 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1686 +š£t_f›ld2 +, + +1689 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_f›ld3 + = + +1690 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1691 +š£t_f›ld3 +, + +1694 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_f›ld4 + = + +1695 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1696 +š£t_f›ld4 +, "ipv4-proto#ipv6-next-header#none"); + +1699 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_šput_£t_£Ëù + = + +1700 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_šput_£t_»suÉ +, + +1701 +£Ëù +, "select#add"); + +1703 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_šput_£t_1 + = { + +1704 . +f + = +cmd_£t_hash_šput_£t_1_·r£d +, + +1705 . + gd©a + = +NULL +, + +1706 . + gh–p_¡r + = "set_hash_input_set_1 " + +1712 . + gtok’s + = { + +1713 (*)& +cmd_£t_hash_šput_£t_cmd +, + +1714 (*)& +cmd_£t_hash_šput_£t_pÜt_id +, + +1715 (*)& +cmd_£t_hash_šput_£t_æow_ty³ +, + +1716 (*)& +cmd_£t_hash_šput_£t_f›ld0 +, + +1717 (*)& +cmd_£t_hash_šput_£t_£Ëù +, + +1718 +NULL +, + +1722 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_šput_£t_2 + = { + +1723 . +f + = +cmd_£t_hash_šput_£t_2_·r£d +, + +1724 . + gd©a + = +NULL +, + +1725 . + gh–p_¡r + = "set_hash_input_set_2 " + +1732 . + gtok’s + = { + +1733 (*)& +cmd_£t_hash_šput_£t_cmd +, + +1734 (*)& +cmd_£t_hash_šput_£t_pÜt_id +, + +1735 (*)& +cmd_£t_hash_šput_£t_æow_ty³ +, + +1736 (*)& +cmd_£t_hash_šput_£t_f›ld0 +, + +1737 (*)& +cmd_£t_hash_šput_£t_f›ld1 +, + +1738 (*)& +cmd_£t_hash_šput_£t_£Ëù +, + +1739 +NULL +, + +1744 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_šput_£t_3 + = { + +1745 . +f + = +cmd_£t_hash_šput_£t_3_·r£d +, + +1746 . + gd©a + = +NULL +, + +1747 . + gh–p_¡r + = "set_hash_input_set_3 " + +1757 . + gtok’s + = { + +1758 (*)& +cmd_£t_hash_šput_£t_cmd +, + +1759 (*)& +cmd_£t_hash_šput_£t_pÜt_id +, + +1760 (*)& +cmd_£t_hash_šput_£t_æow_ty³ +, + +1761 (*)& +cmd_£t_hash_šput_£t_f›ld0 +, + +1762 (*)& +cmd_£t_hash_šput_£t_f›ld1 +, + +1763 (*)& +cmd_£t_hash_šput_£t_f›ld2 +, + +1764 (*)& +cmd_£t_hash_šput_£t_£Ëù +, + +1765 +NULL +, + +1770 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_šput_£t_4 + = { + +1771 . +f + = +cmd_£t_hash_šput_£t_4_·r£d +, + +1772 . + gd©a + = +NULL +, + +1773 . + gh–p_¡r + = "set_hash_input_set_4 " + +1782 . + gtok’s + = { + +1783 (*)& +cmd_£t_hash_šput_£t_cmd +, + +1784 (*)& +cmd_£t_hash_šput_£t_pÜt_id +, + +1785 (*)& +cmd_£t_hash_šput_£t_æow_ty³ +, + +1786 (*)& +cmd_£t_hash_šput_£t_f›ld0 +, + +1787 (*)& +cmd_£t_hash_šput_£t_f›ld1 +, + +1788 (*)& +cmd_£t_hash_šput_£t_f›ld2 +, + +1789 (*)& +cmd_£t_hash_šput_£t_f›ld3 +, + +1790 (*)& +cmd_£t_hash_šput_£t_£Ëù +, + +1791 +NULL +, + +1795 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_šput_£t_5 + = { + +1796 . +f + = +cmd_£t_hash_šput_£t_5_·r£d +, + +1797 . + gd©a + = +NULL +, + +1798 . + gh–p_¡r + = "set_hash_input_set_5 " + +1808 . + gtok’s + = { + +1809 (*)& +cmd_£t_hash_šput_£t_cmd +, + +1810 (*)& +cmd_£t_hash_šput_£t_pÜt_id +, + +1811 (*)& +cmd_£t_hash_šput_£t_æow_ty³ +, + +1812 (*)& +cmd_£t_hash_šput_£t_f›ld0 +, + +1813 (*)& +cmd_£t_hash_šput_£t_f›ld1 +, + +1814 (*)& +cmd_£t_hash_šput_£t_f›ld2 +, + +1815 (*)& +cmd_£t_hash_šput_£t_f›ld3 +, + +1816 (*)& +cmd_£t_hash_šput_£t_f›ld4 +, + +1817 (*)& +cmd_£t_hash_šput_£t_£Ëù +, + +1818 +NULL +, + +1824  + scmd_£t_hash_glob®_cÚfig_»suÉ + { + +1825 +cmdlše_fixed_¡ršg_t + + g£t_hash_glob®_cÚfig +; + +1826 +ušt8_t + + gpÜt_id +; + +1827 +cmdlše_fixed_¡ršg_t + + ghash_func +; + +1828 +cmdlše_fixed_¡ršg_t + + gæow_ty³ +; + +1829 +cmdlše_fixed_¡ršg_t + + g’abË +; + +1833 +cmd_£t_hash_glob®_cÚfig_·r£d +(* +·r£d_»suÉ +, + +1834 +__¹e_unu£d +  +cmdlše + * +þ +, + +1835 +__¹e_unu£d + * +d©a +) + +1837  +cmd_£t_hash_glob®_cÚfig_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1838  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1839 +ušt32_t + + gáy³ +, + gidx +, + goff£t +; + +1840  + g»t +; + +1842 ià( +¹e_‘h_dev_fž‹r_suµÜ‹d +( +»s +-> +pÜt_id +, + +1843 +RTE_ETH_FILTER_HASH +) < 0) { + +1844 +´štf +("RTE_ETH_FILTER_HASH‚ot supported on…ort %d\n", + +1845 +»s +-> +pÜt_id +); + +1848 +mem£t +(& +šfo +, 0, (info)); + +1849 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_GLOBAL_CONFIG +; + +1850 ià(! +¡rcmp +( +»s +-> +hash_func +, "toeplitz")) + +1851 + gšfo +.šfo. + gglob®_cÚf +. + ghash_func + = + +1852 +RTE_ETH_HASH_FUNCTION_TOEPLITZ +; + +1853 ià(! +¡rcmp +( +»s +-> +hash_func +, "simple_xor")) + +1854 + gšfo +.šfo. + gglob®_cÚf +. + ghash_func + = + +1855 +RTE_ETH_HASH_FUNCTION_SIMPLE_XOR +; + +1856 ià(! +¡rcmp +( +»s +-> +hash_func +, "default")) + +1857 + gšfo +.šfo. + gglob®_cÚf +. + ghash_func + = + +1858 +RTE_ETH_HASH_FUNCTION_DEFAULT +; + +1860 + gáy³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1861 + gidx + = +áy³ + / ( +CHAR_BIT + * ( +ušt32_t +)); + +1862 + goff£t + = +áy³ + % ( +CHAR_BIT + * ( +ušt32_t +)); + +1863 + gšfo +.šfo. + gglob®_cÚf +. + gv®id_b™_mask +[ +idx +] |ð(1UL << +off£t +); + +1864 ià(! +¡rcmp +( +»s +-> +’abË +, "enable")) + +1865 if( + gidx + < + gRTE_SYM_HASH_MASK_ARRAY_SIZE +) + +1866 + gšfo +.šfo. + gglob®_cÚf +. + gsym_hash_’abË_mask +[ +idx +] |= + +1867 (1UL << +off£t +); + +1868 + g»t + = +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1869 +RTE_ETH_FILTER_SET +, & +šfo +); + +1870 ià( + g»t + < 0) + +1871 +´štf +("Cannot set global hash configurations by…ort %d\n", + +1872 +»s +-> +pÜt_id +); + +1874 +´štf +("Global hash configurations have been set " + +1875 "succûssfuÎy by…܈%d\n", +»s +-> +pÜt_id +); + +1877 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_glob®_cÚfig_®l + = + +1878 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1879 +£t_hash_glob®_cÚfig +, "set_hash_global_config"); + +1880 +cmdlše_·r£_tok’_num_t + + gcmd_£t_hash_glob®_cÚfig_pÜt_id + = + +1881 +TOKEN_NUM_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1882 +pÜt_id +, +UINT8 +); + +1883 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_glob®_cÚfig_hash_func + = + +1884 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1885 +hash_func +, "toeplitz#simple_xor#default"); + +1886 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_glob®_cÚfig_æow_ty³ + = + +1887 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1888 +æow_ty³ +, + +1891 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_hash_glob®_cÚfig_’abË + = + +1892 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1893 +’abË +, "enable#disable"); + +1895 +cmdlše_·r£_š¡_t + + gcmd_£t_hash_glob®_cÚfig + = { + +1896 . +f + = +cmd_£t_hash_glob®_cÚfig_·r£d +, + +1897 . + gd©a + = +NULL +, + +1898 . + gh–p_¡r + = "set_hash_global_config…ort_id " + +1903 . + gtok’s + = { + +1904 (*)& +cmd_£t_hash_glob®_cÚfig_®l +, + +1905 (*)& +cmd_£t_hash_glob®_cÚfig_pÜt_id +, + +1906 (*)& +cmd_£t_hash_glob®_cÚfig_hash_func +, + +1907 (*)& +cmd_£t_hash_glob®_cÚfig_æow_ty³ +, + +1908 (*)& +cmd_£t_hash_glob®_cÚfig_’abË +, + +1909 +NULL +, + +1914  + scmd_£t_sym_hash_’a_³r_pÜt_»suÉ + { + +1915 +cmdlše_fixed_¡ršg_t + + g£t_sym_hash_’a_³r_pÜt +; + +1916 +cmdlše_fixed_¡ršg_t + + g’abË +; + +1917 +ušt8_t + + gpÜt_id +; + +1921 +cmd_£t_sym_hash_³r_pÜt_·r£d +(* +·r£d_»suÉ +, + +1922 +__¹e_unu£d +  +cmdlše + * +þ +, + +1923 +__¹e_unu£d + * +d©a +) + +1925  +cmd_£t_sym_hash_’a_³r_pÜt_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1926  +¹e_‘h_hash_fž‹r_šfo + + gšfo +; + +1927  + g»t +; + +1929 ià( +¹e_‘h_dev_fž‹r_suµÜ‹d +( +»s +-> +pÜt_id +, + +1930 +RTE_ETH_FILTER_HASH +) < 0) { + +1931 +´štf +("RTE_ETH_FILTER_HASH‚ot supported on…ort: %d\n", + +1932 +»s +-> +pÜt_id +); + +1936 +mem£t +(& +šfo +, 0, (info)); + +1937 + gšfo +. + gšfo_ty³ + = +RTE_ETH_HASH_FILTER_SYM_HASH_ENA_PER_PORT +; + +1939 ià(! +¡rcmp +( +»s +-> +’abË +, "enable")) + +1940 + gšfo +.šfo. + g’abË + = 1; + +1942 + g»t + = +¹e_‘h_dev_fž‹r_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1943 +RTE_ETH_FILTER_SET +, & +šfo +); + +1944 ià( + g»t + < 0) { + +1945 +´štf +("Cannot set symmetric hashƒnable…er…ort on " + +1946 "p܈%u\n", +»s +-> +pÜt_id +); + +1949 +´štf +("Symmetric hash has been seto %s on…ort %u\n", + +1950 +»s +-> +’abË +,„es-> +pÜt_id +); + +1953 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_sym_hash_’a_³r_pÜt_®l + = + +1954 +TOKEN_STRING_INITIALIZER +( +cmd_£t_sym_hash_’a_³r_pÜt_»suÉ +, + +1955 +£t_sym_hash_’a_³r_pÜt +, "set_sym_hash_ena_per_port"); + +1956 +cmdlše_·r£_tok’_num_t + + gcmd_£t_sym_hash_’a_³r_pÜt_pÜt_id + = + +1957 +TOKEN_NUM_INITIALIZER +( +cmd_£t_sym_hash_’a_³r_pÜt_»suÉ +, + +1958 +pÜt_id +, +UINT8 +); + +1959 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_£t_sym_hash_’a_³r_pÜt_’abË + = + +1960 +TOKEN_STRING_INITIALIZER +( +cmd_£t_sym_hash_’a_³r_pÜt_»suÉ +, + +1961 +’abË +, "enable#disable"); + +1963 +cmdlše_·r£_š¡_t + + gcmd_£t_sym_hash_’a_³r_pÜt + = { + +1964 . +f + = +cmd_£t_sym_hash_³r_pÜt_·r£d +, + +1965 . + gd©a + = +NULL +, + +1966 . + gh–p_¡r + = "set_sym_hash_ena_per_port…ort_idƒnable|disable", + +1967 . + gtok’s + = { + +1968 (*)& +cmd_£t_sym_hash_’a_³r_pÜt_®l +, + +1969 (*)& +cmd_£t_sym_hash_’a_³r_pÜt_pÜt_id +, + +1970 (*)& +cmd_£t_sym_hash_’a_³r_pÜt_’abË +, + +1971 +NULL +, + +1977 +­p_p–še_¬picmp_’Œy_dbg +( +­p_·¿ms + * +­p +, + +1978 +ušt32_t + +p–še_id +, +ušt8_t + * +msg +) + +1980  +p–še_¬picmp_’Œy_dbg_msg_»q + * + g»q +; + +1981  +p–še_¬picmp_’Œy_dbg_msg_r¥ + * + gr¥ +; + +1984 ià( + g­p + =ð +NULL +) + +1988 + g»q + = +­p_msg_®loc +( +­p +); + +1989 ià( + g»q + =ð +NULL +) + +1992 + g»q +-> + gty³ + = +PIPELINE_MSG_REQ_CUSTOM +; + +1993 + g»q +-> + gsubty³ + = +PIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +; + +1994 + g»q +-> + gd©a +[0] = +msg +[0]; + +1995 + g»q +-> + gd©a +[1] = +msg +[1]; + +1997 + gr¥ + = +­p_msg_£nd_»cv +( +­p +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +1998 ià( + gr¥ + =ð +NULL +) + +2002 ià( + gr¥ +-> + g¡©us +) { + +2003 +­p_msg_ä“ +( +­p +, +r¥ +); + +2004 +´štf +("E¼Ü„¥->¡©u %d\n", +r¥ +-> +¡©us +); + +2009 +­p_msg_ä“ +( +­p +, +r¥ +); + +2019  + scmd_’Œy_dbg_»suÉ + { + +2020 +cmdlše_fixed_¡ršg_t + + gp_¡ršg +; + +2021 +ušt32_t + + gp +; + +2022 +cmdlše_fixed_¡ršg_t + + g’Œy_¡ršg +; + +2023 +cmdlše_fixed_¡ršg_t + + gdbg_¡ršg +; + +2024 +ušt8_t + + gcmd +; + +2025 +ušt8_t + + gd1 +; + +2029 +cmd_’Œy_dbg_·r£d +(* +·r£d_»suÉ +, + +2030 +__¹e_unu£d +  +cmdlše + * +þ +, * +d©a +) + +2032  +cmd_’Œy_dbg_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +2033  +­p_·¿ms + * + g­p + = +d©a +; + +2034 +ušt8_t + + gmsg +[2]; + +2035  + g¡©us +; + +2037 + gmsg +[0] = +·¿ms +-> +cmd +; + +2038 + gmsg +[1] = +·¿ms +-> +d1 +; + +2039 + g¡©us + = +­p_p–še_¬picmp_’Œy_dbg +( +­p +, +·¿ms +-> +p +, +msg +); + +2041 ià( + g¡©us + != 0) { + +2042 +´štf +("Dbg Command failed\n"); + +2047  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_p_¡ršg + = + +2048 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p_¡ršg +, "p"); + +2050  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_p + = + +2051 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p +, +UINT32 +); + +2053  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_’Œy_¡ršg + = + +2054 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, + +2055 +’Œy_¡ršg +, "txrx"); + +2057  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_dbg_¡ršg + = + +2058 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +dbg_¡ršg +, + +2061  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_cmd + = + +2062 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +cmd +, +UINT8 +); + +2064  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_d1 + = + +2065 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +d1 +, +UINT8 +); + +2067  +cmdlše_·r£_š¡_t + + glb_cmd_’Œy_dbg + = { + +2068 . +f + = +cmd_’Œy_dbg_·r£d +, + +2069 . + gd©a + = +NULL +, + +2070 . + gh–p_¡r + = "ARPICMP dbg cmd", + +2071 . + gtok’s + = { + +2072 (*)& +lb_cmd_’Œy_dbg_p_¡ršg +, + +2073 (*)& +lb_cmd_’Œy_dbg_p +, + +2074 (*)& +lb_cmd_’Œy_dbg_’Œy_¡ršg +, + +2075 (*)& +lb_cmd_’Œy_dbg_dbg_¡ršg +, + +2076 (*)& +lb_cmd_’Œy_dbg_cmd +, + +2077 (*)& +lb_cmd_’Œy_dbg_d1 +, + +2078 +NULL +, + +2082  +cmdlše_·r£_ùx_t + + gp–še_cmds +[] = { + +2083 ( +cmdlše_·r£_š¡_t + *è& +lb_cmd_’Œy_dbg +, + +2084 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_add +, + +2085 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_d– +, + +2086 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_»q +, + +2087 ( +cmdlše_·r£_š¡_t + *è& +cmd_icmp_echo_»q +, + +2088 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_ls +, + +2089 ( +cmdlše_·r£_š¡_t + *è& +cmd_show_pÜts_šfo +, + +2091 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_fwd_mode +, + +2092 ( +cmdlše_·r£_š¡_t + *è& +cmd_add_d–_udp_æow_dœeùÜ +, + +2093 ( +cmdlše_·r£_š¡_t + *è& +cmd_add_d–_l2_æow_dœeùÜ +, + +2094 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_hash_šput_£t_1 +, + +2095 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_hash_šput_£t_2 +, + +2097 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_hash_šput_£t_4 +, + +2099 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_hash_glob®_cÚfig +, + +2100 ( +cmdlše_·r£_š¡_t + *è& +cmd_£t_sym_hash_’a_³r_pÜt +, + +2101 #iâdeà +VNF_ACL + + +2102 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_dbg +, + +2103 ( +cmdlše_·r£_š¡_t + *è& +cmd_¬p_tim” +, + +2105 +NULL +, + +2108  +p–še_ã_Ýs + + gp–še_¬picmp_ã_Ýs + = { + +2109 . +f_š™ + = +NULL +, + +2110 . + gf_ä“ + = +NULL +, + +2111 . + gcmds + = +p–še_cmds +, + +2114  +p–še_ty³ + + gp–še_¬picmp + = { + +2115 . +Çme + = "ARPICMP", + +2116 . + gbe_Ýs + = & +p–še_¬picmp_be_Ýs +, + +2117 . + gã_Ýs + = & +p–še_¬picmp_ã_Ýs +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp.h + +17 #iâdeà +__INCLUDE_PIPELINE_ARPICMP_H__ + + +18  + #__INCLUDE_PIPELINE_ARPICMP_H__ + + + ) + +20  + ~"p–še.h +" + +21  + ~"p–še_¬picmp_be.h +" + +26  +p–še_ty³ + +p–še_¬picmp +; + +28  + #MAX_PKT_BURST + 512 + + ) + +29  + #DEF_PKT_BURST + 32 + + ) + +32  +ušt8_t + + tpÜtid_t +; + +33  +ušt16_t + + tqueueid_t +; + +34  +ušt16_t + + t¡»amid_t +; + +39  + sfwd_¡»am + { + +42 +pÜtid_t + + mrx_pÜt +; + +44 +queueid_t + + mrx_queue +; + +46 +pÜtid_t + + mtx_pÜt +; + +48 +queueid_t + + mtx_queue +; + +50 +¡»amid_t + + m³”_addr +; + +54  + mrx_·ck‘s +; + +56  + mtx_·ck‘s +; + +58  + mfwd_drݳd +; + +60  + mrx_bad__csum +; + +62  + mrx_bad_l4_csum +; + +63 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +64 +ušt64_t + + mcÜe_cyþes +; + +66 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +67  +pkt_bur¡_¡©s + + mrx_bur¡_¡©s +; + +68  +pkt_bur¡_¡©s + + mtx_bur¡_¡©s +; + +86 (* + tpÜt_fwd_begš_t +)( + tpÜtid_t + + tpi +); + +87 (* + tpÜt_fwd_’d_t +)( + tpÜtid_t + + tpi +); + +88 (* + t·ck‘_fwd_t +)( + tfwd_¡»am + * + tfs +); + +89  + sfwd_’gše + { + +91 cÚ¡ * +fwd_mode_Çme +; + +93 +pÜt_fwd_begš_t + +pÜt_fwd_begš +; + +95 +pÜt_fwd_’d_t + +pÜt_fwd_’d +; + +97 +·ck‘_fwd_t + +·ck‘_fwd +; + +99  + #IPV4_ADDR_TO_UINT +( +_addr +, + +) \ + +101 ià(( +_addr +). +çmžy + =ð +AF_INET +) \ + +102 ( + +èð( +_addr +). +addr +. +v4 +. +s_addr +; \ + +104 + `´štf +("invalid…arameter.\n"); \ + +107 + } +} 0) + + ) + +109  + #IPV6_ADDR_TO_ARRAY +( +_addr +, + +) \ + +111 ià(( +_addr +). +çmžy + =ð +AF_INET6 +) \ + +112 () + `¹e_memýy +(&( + +), \ + +113 &(( +_addr +). +addr +. +v6 +), \ + +114 ( +š6_addr +)); \ + +116 + `´štf +("invalid…arameter.\n"); \ + +119 } 0) + + ) + +121  +£t_pkt_fÜw¬dšg_mode +(cÚ¡ * +fwd_mode_Çme +); + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.c + +17  + ~<¡ršg.h +> + +19  + ~<¡dio.h +> + +20  + ~<¡dlib.h +> + +21  + ~<¡dšt.h +> + +22  + ~<¡ršg.h +> + +23  + ~ + +25  + ~<­p.h +> + +26  + ~<¹e_commÚ.h +> + +27  + ~<¹e_m®loc.h +> + +28  + ~<¹e_.h +> + +29  + ~<¹e_by‹Üd”.h +> + +30  + ~<¹e_bË_¡ub.h +> + +31  + ~<¹e_bË_hash.h +> + +32  + ~<¹e_p–še.h +> + +33  + ~<¹e_¬p.h +> + +34  + ~<¹e_icmp.h +> + +35  + ~<¹e_hash.h +> + +36  + ~<¹e_jhash.h +> + +37  + ~<¹e_cyþes.h +> + +38  + ~<¹e_hexdump.h +> + +39  + ~"p–še_aùiÚs_commÚ.h +" + +40  + ~"hash_func.h +" + +41  + ~"vnf_commÚ.h +" + +42  + ~"p–še_commÚ_be.h +" + +43  + ~"p–še_¬picmp_be.h +" + +44  + ~"·r£r.h +" + +45  + ~"hash_func.h +" + +46  + ~"vnf_commÚ.h +" + +47  + ~"­p.h +" + +49  + ~"p–še_commÚ_ã.h +" + +50 #iâdeà +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_muÉiÿ¡_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 +ušt8_t + + gvnf_commÚ_¬p_lib_š™ +; + +77 +ušt8_t + + gvnf_commÚ_nd_lib_š™ +; + +78 +ušt8_t + + glßdb_p–še_couÁ +; + +80 +ušt32_t + + gARPICMP_DEBUG +; + +81 +ušt32_t + + gNDIPV6_DEBUG +; + +83 +ušt32_t + + g¬p_rou‹_tbl_šdex +; + +84 +ušt32_t + + gnd_rou‹_tbl_šdex +; + +85 +ušt32_t + + glšk_hw_addr_¬¿y_idx +; + +87 +ušt32_t + + glib_¬p_g‘_mac_»q +; + +88 +ušt32_t + + glib_¬p_nh_found +; + +89 +ušt32_t + + glib_¬p_no_nh_found +; + +90 +ušt32_t + + glib_¬p_¬p_’Œy_found +; + +91 +ušt32_t + + glib_¬p_no_¬p_’Œy_found +; + +92 +ušt32_t + + glib_¬p_pÝuϋ_ÿÎed +; + +93 +ušt32_t + + glib_¬p_d–‘e_ÿÎed +; + +94 +ušt32_t + + glib_¬p_du¶iÿ‹_found +; + +96 +ušt32_t + + glib_nd_g‘_mac_»q +; + +97 +ušt32_t + + glib_nd_nh_found +; + +98 +ušt32_t + + glib_nd_no_nh_found +; + +99 +ušt32_t + + glib_nd_nd_’Œy_found +; + +100 +ušt32_t + + glib_nd_no_¬p_’Œy_found +; + +101 +ušt32_t + + glib_nd_pÝuϋ_ÿÎed +; + +102 +ušt32_t + + glib_nd_d–‘e_ÿÎed +; + +103 +ušt32_t + + glib_nd_du¶iÿ‹_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_·¿m‘”s + + g¬p_hash_·¿ms + = { + +112 . +Çme + = "ARP", + +113 . + g’Œ›s + = 64, + +114 . + g»£rved + = 0, + +115 . + gkey_Ën + = ( +¬p_key_v4 +), + +116 . + ghash_func + = +¹e_jhash +, + +117 . + ghash_func_š™_v® + = 0, + +120  +¹e_hash_·¿m‘”s + + gnd_hash_·¿ms + = { + +121 . +Çme + = "ND", + +122 . + g’Œ›s + = 64, + +123 . + g»£rved + = 0, + +124 . + gkey_Ën + = ( +nd_key_v6 +), + +125 . + ghash_func + = +¹e_jhash +, + +126 . + ghash_func_š™_v® + = 0, + +129  +¹e_hash + * + g¬p_hash_hªdË +; + +130  +¹e_hash + * + gnd_hash_hªdË +; + +134  +­p_·¿ms + * + gmyAµ +; + +135  +¹e_p–še + * + gmyP +; + +136  +p–še_¬picmp + * + ggp_¬p +; + +137 +ušt8_t + + gnum_vnf_th»ads +; + +139 #ifdeà +VNF_ACL + + +141  + s¬p_pÜt_add»ss + { + +142 +ušt32_t + + m +; + +143 +ušt64_t + + mmac_addr +; + +146  +¬p_pÜt_add»ss + + g¬p_pÜt_add»s£s +[ +RTE_MAX_ETHPORTS +]; + +148 +ušt16_t + + g¬p_m‘a_off£t +; + +151  + sp–še_¬picmp + { + +152  +p–še + + mp +; + +153 +p–še_msg_»q_hªdËr + + +154 + mcu¡om_hªdËrs +[ +PIPELINE_ARPICMP_MSG_REQS +]; + +155 +ušt64_t + + m»ûivedPktCouÁ +; + +156 +ušt64_t + + mdrݳdPktCouÁ +; + +157 +ušt64_t + + m£ÁPktCouÁ +; + +158 +ušt8_t + + mlšks_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +159 +ušt8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +160 +ušt8_t + + mp–še_num +; + +161 } + g__¹e_ÿche_®igÃd +; + +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  + $p–šes_pÜt_šfo +() + +229  +­p_·¿ms + * +­p + = +myAµ +; + +230 +ušt8_t + +i +, +p–še +; + +231  +p–še + = 0;…–š< +­p +-> +n_p–šes +;…ipeline++) { + +232 + `´štf +("*** PIPELINE %d ***\n\n", +p–še +); + +234 + `´štf +("*** OUTPORTs ***\n"); + +235  +i + = 1; i < +­p +-> +p–še_·¿ms +[ +p–še +]. +n_pktq_out +; + +236 +i +++) { + +237  +­p +-> +p–še_·¿ms +[ +p–še +]. +pktq_out +[ +i +]. + +238 +ty³ +) { + +239  +APP_PKTQ_OUT_SWQ +: + +240 + `´štf +("pktq_out[%d]:%s\n", +i +, + +241 +­p +-> +swq_·¿ms +[­p-> +p–še_·¿ms + + +242 [ +p–še +]. + +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-> +p–še_·¿ms + + +248 [ +p–še +]. +pktq_out + + +249 [ +i +]. +id +]. +Çme +); + +252 + `´štf +("Not OUT SWQ or HWQ\n"); + +255 + `´štf +("*** INPORTs ***\n"); + +256  +i + = 0; i < +­p +-> +p–še_·¿ms +[ +p–še +]. +n_pktq_š +; i++) { + +257  +­p +-> +p–še_·¿ms +[ +p–še +]. +pktq_š +[ +i +] + +258 . +ty³ +) { + +259  +APP_PKTQ_IN_SWQ +: + +260 + `´štf +("pktq_š[%d]:%s\n", +i +, + +261 +­p +-> +swq_·¿ms +[­p-> +p–še_·¿ms + + +262 [ +p–še +]. + +263 +pktq_š +[ +i +]. +id +]. +Çme +); + +265  +APP_PKTQ_IN_HWQ +: + +266 + `´štf +("pktq_š[%d]:%s\n", +i +, + +267 +­p +-> +hwq_š_·¿ms +[­p-> +p–še_·¿ms + + +268 [ +p–še +]. + +269 +pktq_š +[ +i +]. +id +]. +Çme +); + +272 + `´štf +("Not IN SWQ or HWQ\n"); + +276 + } +} + +278  + $p–šes_m­_šfo +() + +280  +i + = 0; + +282 + `´štf +("PIPELINE_MAX_PORT_IN %d\n", +PIPELINE_MAX_PORT_IN +); + +283 + `´štf +("lb_ouÜt_id[%d", +lb_ouÜt_id +[0]); + +284  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +285 + `´štf +(",%d", +lb_ouÜt_id +[ +i +]); + +286 + `´štf +("]\n"); + +288 + `´štf +("vnf_to_lßdb_m­[%d", +vnf_to_lßdb_m­ +[0]); + +289  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +290 + `´štf +(",%d", +vnf_to_lßdb_m­ +[ +i +]); + +291 + `´štf +("]\n"); + +293 + `´štf +("pÜt_to_lßdb_m­[%d", +pÜt_to_lßdb_m­ +[0]); + +294  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +295 + `´štf +(",%d", +pÜt_to_lßdb_m­ +[ +i +]); + +296 + `´štf +("]\n"); + +298 + `´štf +("lßdb_p–še_nums[%d", +lßdb_p–še_nums +[0]); + +299  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +300 + `´štf +(",%d", +lßdb_p–še_nums +[ +i +]); + +301 + `´štf +("]\n"); + +303 + `´štf +("lßdb_p–še[%p", +lßdb_p–še +[0]); + +304  +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +305 + `´štf +(",%p", +lßdb_p–še +[ +i +]); + +306 + `´štf +("]\n"); + +307 + } +} + +309  + $»gi¡”_p–še_Qs +( +ušt8_t + +p–še_num +,  +p–še + * +p +) + +311  +¹e_pÜt_‘hdev_»ad” + * +hwq +; + +312  +¹e_pÜt_ršg_wr™” + * +out_swq +; + +313  +¹e_pÜt_ršg_»ad” + * +š_swq +; + +314  +¹e_p–še + * +¹e + = +p +->p; + +315 +ušt8_t + +pÜt_couÁ + = 0; + +316  +queue_out + = 0xff, +queue_š + = 0xff; + +318 + `´štf +("C®lšg„egi¡”_p–še_Q š PIPELINE%d\n", +p–še_num +); + +319  +pÜt_couÁ + = 0;…Üt_couÁ < +¹e +-> +num_pÜts_out +;…ort_count++) { + +321  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +322 +pktq_out +[ +pÜt_couÁ +]. +ty³ +){ + +324  +APP_PKTQ_OUT_SWQ +: + +326 ià( +pÜt_couÁ + >ð +¹e +-> +num_pÜts_š +) { + +329 ià( +¹e +-> +num_pÜts_out + %„‹-> +num_pÜts_š +) + +330 ià( +pÜt_couÁ + =ð +¹e +-> +num_pÜts_out + - 1) + +332  +‹mp +; + +333 +‹mp + = (( +pÜt_couÁ +è% +¹e +-> +num_pÜts_š +); + +335 +š_swq + = +¹e +-> +pÜts_š +[ +‹mp +]. +h_pÜt +; + +336 +out_swq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +337 + `´štf +("in_swq : %s\n", + +338 +š_swq +-> +ršg +-> +Çme +); + +339  +¡©us + = + +340 + `ssÿnf +( +š_swq +-> +ršg +-> +Çme +, "SWQ%d", + +341 & +queue_š +); + +342 ià( +¡©us + < 0) { + +343 + `´štf +("Unableo„ead SWQ‚umber\n"); + +346 + `´štf +("out_swq: %s\n", + +347 +out_swq +-> +ršg +-> +Çme +); + +348 +¡©us + = + +349 + `ssÿnf +( +out_swq +-> +ršg +-> +Çme +, "SWQ%d", + +350 & +queue_out +); + +351 ià( +¡©us + < 0) { + +352 + `´štf +("Unableo„ead SWQ‚umber\n"); + +355 ià( +queue_š + < 128 && +queue_out + < 128) { + +356 +SWQ_to_PÜt_m­ +[ +queue_out +] = + +357 +SWQ_to_PÜt_m­ +[ +queue_š +]; + +358 + `´štf +("SWQ_to_PÜt_m­[%d]%d\n", +queue_out +, + +359 +SWQ_to_PÜt_m­ +[ +queue_out +]); + +364  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +365 +pktq_š +[ +pÜt_couÁ +]. +ty³ +){ + +367  +APP_PKTQ_OUT_HWQ +: + +368 +hwq + = +¹e +-> +pÜts_š +[ +pÜt_couÁ +]. +h_pÜt +; + +369 +out_swq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +370 + `´štf +("out_swq: %s\n", + +371 +out_swq +-> +ršg +-> +Çme +); + +372  +¡©us + = + +373 + `ssÿnf +( +out_swq +-> +ršg +-> +Çme +, "SWQ%d", + +374 & +queue_out +); + +376 ià( +¡©us + < 0) { + +377 + `´štf +("Unableo„ead SWQ‚umber\n"); + +380 ià( +queue_out + < 128) { + +381 +SWQ_to_PÜt_m­ +[ +queue_out +] = +hwq +-> +pÜt_id +; + +382 + `´štf +("SWQ_to_PÜt_m­[%d]%d\n", +queue_out +, + +383 +SWQ_to_PÜt_m­ +[ +queue_out +]); + +387  +APP_PKTQ_OUT_SWQ +: + +388 +š_swq + = +¹e +-> +pÜts_š +[ +pÜt_couÁ +]. +h_pÜt +; + +389 +out_swq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +390 + `´štf +("in_swq : %s\n", + +391 +š_swq +-> +ršg +-> +Çme +); + +392 +¡©us + = + +393 + `ssÿnf +( +š_swq +-> +ršg +-> +Çme +, "SWQ%d", + +394 & +queue_š +); + +395 ià( +¡©us + < 0) { + +396 + `´štf +("Unableo„ead SWQ‚umber\n"); + +399 + `´štf +("out_swq: %s\n", + +400 +out_swq +-> +ršg +-> +Çme +); + +401 +¡©us + = + +402 + `ssÿnf +( +out_swq +-> +ršg +-> +Çme +, "SWQ%d", + +403 & +queue_out +); + +404 ià( +¡©us + < 0) { + +405 + `´štf +("Unableo„ead SWQ‚umber\n"); + +408 ià( +queue_š + < 128 && +queue_out + < 128){ + +409 +SWQ_to_PÜt_m­ +[ +queue_out +] = + +410 +SWQ_to_PÜt_m­ +[ +queue_š +]; + +411 + `´štf +("SWQ_to_PÜt_m­[%d]%d\n", +queue_out +, + +412 +SWQ_to_PÜt_m­ +[ +queue_out +]); + +417 + `´štf +("This‚ever hits\n"); + +422  +APP_PKTQ_OUT_HWQ +: + +423 + `´štf +("This is HWQ\n"); + +427 + `´štf +("set_phy_outport_map: This‚ever hits\n"); + +430 + } +} + +432  + $£t_lšk_m­ +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +) + +434  +¹e_pÜt_‘hdev_wr™” + * +hwq +; + +435  +¹e_pÜt_ršg_wr™” + * +out_swq +; + +436  +¹e_p–še + * +¹e + = +p +->p; + +438 +ušt8_t + +pÜt_couÁ + = 0; + +439  +šdex + = 0, +queue_out + = 0xff; + +441 + `´štf +("C®lšg s‘_lšk_m­ iÀPIPELINE%d\n", +p–še_num +); + +442  +pÜt_couÁ + = 0;…Üt_couÁ < +¹e +-> +num_pÜts_out +;…ort_count++) { + +444  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +445 +pktq_out +[ +pÜt_couÁ +]. +ty³ +){ + +447  +APP_PKTQ_OUT_HWQ +: + +448 +hwq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +449 +m­ +[ +šdex +++] = +hwq +-> +pÜt_id +; + +450 + `´štf +("lšks_m­[%d]:%d\n", +šdex + - 1, +m­ +[index - 1]); + +453  +APP_PKTQ_OUT_SWQ +: + +454 +out_swq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +455 + `´štf +("set_link_map out_swq: %s\n", + +456 +out_swq +-> +ršg +-> +Çme +); + +457  +¡©us + = + `ssÿnf +( +out_swq +-> +ršg +-> +Çme +, "SWQ%d", + +458 & +queue_out +); + +459 ià( +¡©us + < 0) { + +460 + `´štf +("Unableo„ead SWQ‚umber\n"); + +464 ià( +queue_out + < 128) { + +465 +m­ +[ +šdex +++] = +SWQ_to_PÜt_m­ +[ +queue_out +]; + +466 + `´štf +("lšks_m­[%s]:%d\n", +out_swq +-> +ršg +-> +Çme +, + +467 +m­ +[ +šdex + - 1]); + +472 + `´štf +("set_phy_outport_map: This‚ever hits\n"); + +475 + } +} + +477  + $£t_ouÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +) + +479 +ušt8_t + +pÜt_couÁ + = 0; + +480  +queue_out + = 0xff, +šdex + = 0; + +482  +¹e_pÜt_‘hdev_wr™” + * +hwq +; + +483  +¹e_pÜt_ršg_wr™” + * +out_swq +; + +484  +¹e_p–še + * +¹e + = +p +->p; + +486 + `´štf +("\n**** set_outport_id() with…ipeline_num:%d ****\n\n", + +487 +p–še_num +); + +488  +pÜt_couÁ + = 0; + +489 +pÜt_couÁ + < +¹e +-> +num_pÜts_out +; + +490 +pÜt_couÁ +++) { + +492  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +493 +pktq_out +[ +pÜt_couÁ +]. +ty³ +) { + +495  +APP_PKTQ_OUT_HWQ +: + +496 +hwq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +499 +m­ +[ +hwq +-> +pÜt_id +] = +šdex +; + +500 + `´štf +("hwq…ort_id:%d index:%d\n", + +501 +hwq +-> +pÜt_id +, +šdex +); + +502 +m­ +[ +hwq +-> +pÜt_id +] = +šdex +++; + +503 + `´štf +("hwq…ort_id:%d index:%d\n", + +504 +hwq +-> +pÜt_id +, +šdex +-1); + +505 + `´štf +("ouÜt_id[%d]:%d\n", +šdex + - 1, + +506 +m­ +[ +šdex + - 1]); + +510  +APP_PKTQ_OUT_SWQ +: + +513 ià( +pÜt_couÁ + >ð +¹e +-> +num_pÜts_š +) + +514 ià( +¹e +-> +num_pÜts_out + %„‹-> +num_pÜts_š +) + +515 ià( +pÜt_couÁ + =ð +¹e +-> +num_pÜts_out + - 1) + +517 +out_swq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +518 + `´štf +("set_outport_id out_swq: %s\n", + +519 +out_swq +-> +ršg +-> +Çme +); + +520  +‹mp + = + `ssÿnf +( +out_swq +-> +ršg +-> +Çme +, "SWQ%d", + +521 & +queue_out +); + +522 ià( +‹mp + < 0) { + +523 + `´štf +("Unableo„ead SWQ‚umber\n"); + +527 ià( +queue_out + < 128 && +šdex + >= 0) { + +528 +m­ +[ +SWQ_to_PÜt_m­ +[ +queue_out +]] = +šdex +++; + +529 + `´štf +("ouÜt_id[%s]:%d\n", +out_swq +-> +ršg +-> +Çme +, + +530 +m­ +[ +SWQ_to_PÜt_m­ +[ +queue_out +]]); + +535 + `´štf +(" "); + +539 + } +} + +541  + $£t_phy_ouÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +) + +543 +ušt8_t + +pÜt_couÁ + = 0; + +544  +šdex + = 0; + +546  +¹e_pÜt_‘hdev_wr™” + * +hwq +; + +547  +¹e_p–še + * +¹e + = +p +->p; + +549 + `´štf +("\n**** set_phy_outport_id() with…ipeline_num:%d ****\n\n", + +550 +p–še_num +); + +551  +pÜt_couÁ + = 0; + +552 +pÜt_couÁ + < +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. +n_pktq_out +; + +553 +pÜt_couÁ +++) { + +555  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +556 +pktq_out +[ +pÜt_couÁ +]. +ty³ +) { + +558  +APP_PKTQ_OUT_HWQ +: + +559 +hwq + = +¹e +-> +pÜts_out +[ +pÜt_couÁ +]. +h_pÜt +; + +560 +m­ +[ +hwq +-> +pÜt_id +] = +šdex +++; + +561 + `´štf +("ouÜt_id[%d]:%d\n", +šdex + - 1, + +562 +m­ +[ +šdex + - 1]); + +566 + `´štf +(" "); + +570 + } +} + +572  + $£t_phy_špÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +) + +574 +ušt8_t + +pÜt_couÁ + = 0; + +575  +šdex + = 0; + +577  +¹e_pÜt_‘hdev_»ad” + * +hwq +; + +578  +¹e_p–še + * +¹e + = +p +->p; + +580 + `´štf +("\n**** set_phy_inport_id() with…ipeline_num:%d ****\n\n", + +581 +p–še_num +); + +582  +pÜt_couÁ + = 0; + +583 +pÜt_couÁ + < +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. +n_pktq_š +; + +584 +pÜt_couÁ +++) { + +586  +myAµ +-> +p–še_·¿ms +[ +p–še_num +]. + +587 +pktq_š +[ +pÜt_couÁ +]. +ty³ +) { + +589  +APP_PKTQ_OUT_HWQ +: + +590 +hwq + = +¹e +-> +pÜts_š +[ +pÜt_couÁ +]. +h_pÜt +; + +591 +m­ +[ +hwq +-> +pÜt_id +] = +šdex +++; + +592 + `´štf +("ouÜt_id[%d]:%d\n", +šdex + - 1, + +593 +m­ +[ +šdex + - 1]); + +597 + `´štf +(" "); + +601 + } +} + +603 #ifdeà +VNF_ACL + + +605 +ušt32_t + + $g‘_nh +( +ušt32_t + + +, ušt32_ˆ* +pÜt +) + +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 * +pÜt + = +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 +("No‚h match ip 0x%x,…ort %u,_ip " + +620 + +, * +pÜt +, +lib_¬p_rou‹_bË +[ +i +].ip, + +621 +lib_¬p_rou‹_bË +[ +i +]. +pÜt +, + +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 +("NØNH - i°0x%x,…܈%u\n", + +, * +pÜt +); + +629 +lib_¬p_no_nh_found +++; + +631 + } +} + +634  + $g‘_nh_v6 +( +ušt8_t + +v6 +[], +ušt32_t + * +pÜt +, ušt8_ˆ +nhv6 +[]) + +636  +i + = 0; + +637 +ušt8_t + +Ãtmask_v6 +[16], +Ãt_nd +[16], +Ãt_š +[16]; + +638 +ušt8_t + +k + = 0, +l + = 0, +d•thæags + = 0, +d•thæags1 + = 0; + +639 + `mem£t +( +Ãtmask_v6 +, 0, (netmask_ipv6)); + +640 + `mem£t +( +Ãt_nd +, 0, (netip_nd)); + +641 + `mem£t +( +Ãt_š +, 0, (netip_in)); + +642 ià(! +v6 +) + +644  +i + = 0; i < +MAX_ARP_RT_ENTRY +; i++) { + +646 + `cÚv”t_´efixËn_to_Ãtmask_v6 +( + +647 +lib_nd_rou‹_bË +[ +i +]. +d•th +, + +648 +Ãtmask_v6 +); + +650  +k + = 0; k < 16; k++) { + +651 ià( +lib_nd_rou‹_bË +[ +i +]. +v6 +[ +k +] & +Ãtmask_v6 +[k]) { + +652 +d•thæags +++; + +653 +Ãt_nd +[ +k +] = +lib_nd_rou‹_bË +[ +i +]. +v6 +[k]; + +657  +l + = 0;† < 16;†++) { + +658 ià( +v6 +[ +l +] & +Ãtmask_v6 +[l]) { + +659 +d•thæags1 +++; + +660 +Ãt_š +[ +l +] = +v6 +[l]; + +663  +j + = 0; + +664 ià(( +d•thæags + =ð +d•thæags1 +) + +665 && ( + `memcmp +( +Ãt_nd +, +Ãt_š +, + +666 ( +Ãt_nd +)) == 0)) { + +668 * +pÜt + = +lib_nd_rou‹_bË +[ +i +].port; + +669 +lib_nd_nh_found +++; + +671  +j + = 0; j < 16; j++) + +672 +nhv6 +[ +j +] = +lib_nd_rou‹_bË +[ +i +].nhipv6[j]; + +677 ià( +NDIPV6_DEBUG + > 1) + +678 + `´štf +("No‚h match\n"); + +679 +d•thæags + = 0; + +680 +d•thæags1 + = 0; + +682 ià( +NDIPV6_DEBUG + && +v6 +) + +683 + `´štf +("NØNH - i°0x%x,…܈%u\n", +v6 +[0], * +pÜt +); + +684 +lib_nd_no_nh_found +++; + +685 + } +} + +688  + $g‘_de¡_mac_addr_pÜt +(cÚ¡ +ušt32_t + +addr +, + +689 +ušt32_t + * +phy_pÜt +,  +‘h”_addr + * +hw_addr +) + +691 +lib_¬p_g‘_mac_»q +++; + +692 +ušt32_t + +nh + = 0; + +694 +nh + = + `g‘_nh +( +addr +, +phy_pÜt +); + +695 ià( +nh + == 0) { + +696 ià( +ARPICMP_DEBUG + && +addr +) + +697 + `´štf +("ARPICMP‚o‚h found for ip %x,…ort %d\n", + +698 +addr +, * +phy_pÜt +); + +700  +NH_NOT_FOUND +; + +703  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +704  +¬p_key_v4 + +tmp_¬p_key +; + +705 +tmp_¬p_key +. +pÜt_id + = * +phy_pÜt +; + +706 +tmp_¬p_key +. + + = +nh +; + +708 +»t_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +tmp_¬p_key +); + +709 ià( +»t_¬p_d©a + =ð +NULL +) { + +710 ià( +ARPICMP_DEBUG + && +addr +) { + +711 +´štf + + +713 +addr +, * +phy_pÜt +); + +714 + `´št_¬p_bË +(); + +716 +lib_¬p_no_¬p_’Œy_found +++; + +717  +ARP_NOT_FOUND +; + +719 + `‘h”_addr_cÝy +(& +»t_¬p_d©a +-> +‘h_addr +, +hw_addr +); + +720 +lib_¬p_¬p_’Œy_found +++; + +721  +ARP_FOUND +; + +722 + } +} + +725  + $g‘_de¡_mac_add»ss_v6 +( +ušt8_t + +v6addr +[], +ušt32_t + +phy_pÜt +, + +726  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]) + +728  +i + = 0, +j + = 0, +æag + = 0; + +729 +lib_nd_g‘_mac_»q +++; + +731 ià( +v6addr +) + +732 + `g‘_nh_v6 +( +v6addr +, & +phy_pÜt +, +nhv6 +); + +733  +j + = 0; j < 16; j++) { + +734 ià( +nhv6 +[ +j +]) + +735 +æag +++; + +737 ià( +æag + == 0) { + +738 ià( +v6addr +) { + +739 ià( +NDIPV6_DEBUG + && +v6addr +) + +740 + `´štf +("NDIPV6‚o‚h 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_pÜt +); + +752  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +753  +nd_key_v6 + +tmp_nd_key +; + +754 +tmp_nd_key +. +pÜt_id + = +phy_pÜt +; + +756  +i + = 0; i < 16; i++) + +757 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +759 +»t_nd_d©a + = + `»Œ›ve_nd_’Œy +( +tmp_nd_key +); + +760 ià( +»t_nd_d©a + =ð +NULL +) { + +761 ià( +NDIPV6_DEBUG + && +v6addr +) { + +762 + `´štf +("NDIPV6‚o‚dƒntry found for ip %x,…ort %d\n", + +763 +v6addr +[0], +phy_pÜt +); + +765 +lib_nd_no_¬p_’Œy_found +++; + +768 + `‘h”_addr_cÝy +(& +»t_nd_d©a +-> +‘h_addr +, +hw_addr +); + +769 +lib_nd_nd_’Œy_found +++; + +772 + } +} + +775  + $g‘_de¡_mac_add»ss_v6_pÜt +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +776  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]) + +778  +i + = 0, +j + = 0, +æag + = 0; + +779 +lib_nd_g‘_mac_»q +++; + +781 + `g‘_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +782  +j + = 0; j < 16; j++) { + +783 ià( +nhv6 +[ +j +]) + +784 +æag +++; + +786 ià( +æag + == 0) { + +787 ià( +NDIPV6_DEBUG + && +v6addr +) + +788 + `´štf +("NDIPV6‚o‚h 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_pÜt +); + +799  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +800  +nd_key_v6 + +tmp_nd_key +; + +801 +tmp_nd_key +. +pÜt_id + = * +phy_pÜt +; + +803  +i + = 0; i < 16; i++) + +804 +tmp_nd_key +. +v6 +[ +i +] = +nhv6 +[i]; + +806 +»t_nd_d©a + = + `»Œ›ve_nd_’Œy +( +tmp_nd_key +); + +807 ià( +»t_nd_d©a + =ð +NULL +) { + +808 ià( +NDIPV6_DEBUG + && +v6addr +) { + +809 + `´štf +("NDIPV6‚o‚dƒntry found for ip %x,…ort %d\n", + +810 +v6addr +[0], * +phy_pÜt +); + +812 +lib_nd_no_¬p_’Œy_found +++; + +815 + `‘h”_addr_cÝy +(& +»t_nd_d©a +-> +‘h_addr +, +hw_addr +); + +816 +lib_nd_nd_’Œy_found +++; + +819 + } +} + +824  + slib_¬p_¬p_bË_’Œy + { + +825  +¹e_p–še_bË_’Œy + + mh—d +; + +826 +ušt64_t + + mmaÿddr +; + +829 cÚ¡ * + $¬p_Ý_Çme +( +ušt16_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_id’t +), + +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 +-> +v”siÚ_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=%d…roto=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 +("incorrect‡rp_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 +("incorrect‡rp_pro format for IPv4 ARP (%d)\n", + +886 ( +¬p_h +-> +¬p_´o +)); + +887 } ià( +¬p_h +-> +¬p_hÊ + != 6) { + +888 + `´štf +("incorrect‡rp_hln format for IPv4 ARP (%d)\n", + +889 +¬p_h +-> +¬p_hÊ +); + +890 } ià( +¬p_h +-> +¬p_¶n + != 4) { + +891 + `´štf +("incorrect‡rp_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_d©a +. +¬p_sha +. +addr_by‹s +[0], + +897 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[1], + +898 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[2], + +899 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[3], + +900 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[4], + +901 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_by‹s +[5]); + +902 + `´štf +(" sip=%d.%d.%d.%d\n", + +903 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 24) & 0xFF, + +904 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 16) & 0xFF, + +905 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) >> 8) & 0xFF, + +906 + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_s +) & 0xFF); + +907 + `´štf +("ha=%02X:%02X:%02X:%02X:%02X:%02X", + +908 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[0], + +909 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[1], + +910 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[2], + +911 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[3], + +912 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[4], + +913 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_by‹s +[5]); + +914 + `´štf +("ip=%d.%d.%d.%d\n", + +915 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 24) & 0xFF, + +916 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 16) & 0xFF, + +917 ( + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬p_t +) >> 8) & 0xFF, + +918 + `CHECK_ENDIAN_32 +( +¬p_h +-> +¬p_d©a +. +¬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_by‹s +[0], + +926 +‘h_h +-> +s_addr +. +addr_by‹s +[1], + +927 +‘h_h +-> +s_addr +. +addr_by‹s +[2], + +928 +‘h_h +-> +s_addr +. +addr_by‹s +[3], + +929 +‘h_h +-> +s_addr +. +addr_by‹s +[4],ƒth_h->s_addr.addr_bytes[5]); + +930 + `´štf +(" dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + +931 +‘h_h +-> +d_addr +. +addr_by‹s +[0], + +932 +‘h_h +-> +d_addr +. +addr_by‹s +[1], + +933 +‘h_h +-> +d_addr +. +addr_by‹s +[2], + +934 +‘h_h +-> +d_addr +. +addr_by‹s +[3], + +935 +‘h_h +-> +d_addr +. +addr_by‹s +[4],ƒth_h->d_addr.addr_bytes[5]); + +937 + } +} + +940 + $´št_mbuf +(cÚ¡ * +rx_tx +,  +pÜtid +,  +¹e_mbuf + * +mbuf +, + +941  +lše +) + +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): on…ort %d…kt-len=%u‚b-segs=%u\n", + +950 +rx_tx +, +lše +, +pÜtid +, +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 +(" unknown…acketype\n"); + +963 + `fæush +( +¡dout +); + +964 + } +} + +966  +¬p_’Œy_d©a + * + $»Œ›ve_¬p_’Œy +( +¬p_key_v4 + +¬p_key +) + +968  +¬p_’Œy_d©a + * +»t_¬p_d©a + = +NULL +; + +969 +¬p_key +. +fžËr1 + = 0; + +970 +¬p_key +. +fžËr2 + = 0; + +971 +¬p_key +. +fžËr3 + = 0; + +973  +»t + = + `¹e_hash_lookup_d©a +( +¬p_hash_hªdË +, & +¬p_key +, + +974 (**)& +»t_¬p_d©a +); + +975 ià( +»t + < 0) { + +976 ià( +ARPICMP_DEBUG +) + +977 + `´štf +("arp-hash†ookup failed„et %d, " + +979 +»t +, +EINVAL +, +ENOENT +); + +981  +»t_¬p_d©a +; + +984  +NULL +; + +985 + } +} + +993  +nd_’Œy_d©a + * + $»Œ›ve_nd_’Œy +( +nd_key_v6 + +nd_key +) + +995  +nd_’Œy_d©a + * +»t_nd_d©a + = +NULL +; + +996 +nd_key +. +fžËr1 + = 0; + +997 +nd_key +. +fžËr2 + = 0; + +998 +nd_key +. +fžËr3 + = 0; + +1001  +»t + = + `¹e_hash_lookup_d©a +( +nd_hash_hªdË +, & +nd_key +, + +1002 (**)& +»t_nd_d©a +); + +1003 ià( +»t + < 0) { + +1004 ià( +NDIPV6_DEBUG +) + +1005 + `´štf +("nd-hash:‚o†ookup Entry Found - " + +1007 +»t +, +EINVAL +, +ENOENT +); + +1009  +»t_nd_d©a +; + +1012  +NULL +; + +1013 + } +} + +1015  + $´št_¬p_bË +() + +1017 cÚ¡ * +Ãxt_key +; + +1018 * +Ãxt_d©a +; + +1019 +ušt32_t + +™” + = 0; + +1021 + `´štf +("\tport hw‡ddr status ip‡ddr\n"); + +1023  + `¹e_hash_™”©e +( +¬p_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) + +1026  +¬p_’Œy_d©a + * +tmp_¬p_d©a + = + +1027 ( +¬p_’Œy_d©a + *) +Ãxt_d©a +; + +1028  +¬p_key_v4 + +tmp_¬p_key +; + +1029 + `memýy +(& +tmp_¬p_key +, +Ãxt_key +, ( +¬p_key_v4 +)); + +1030 +´štf + + +1032 +tmp_¬p_d©a +-> +pÜt +,mp_¬p_d©a-> +‘h_addr +. +addr_by‹s +[0], + +1033 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1034 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1035 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1036 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1037 +tmp_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +1038 +tmp_¬p_d©a +-> +¡©us + == + +1039 +COMPLETE + ? "COMPLETE" : "INCOMPLETE", + +1040 ( +tmp_¬p_d©a +-> + + >> 24), + +1041 (( +tmp_¬p_d©a +-> + + & 0x00ff0000) >> 16), + +1042 (( +tmp_¬p_d©a +-> + + & 0x0000ff00) >> 8), + +1043 (( +tmp_¬p_d©a +-> + + & 0x000000ff))); + +1046 +ušt32_t + +i + = 0; + +1047 + `´štf +("\nARP„outšgabË ha %dƒÁr›s\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 +]. +pÜt +,†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_pÝuϋ_ÿÎed +, +lib_¬p_d–‘e_ÿÎed +, + +1061 +lib_¬p_du¶iÿ‹_found +); + +1063 + `´štf +("ARPabË key†’ i %lu\n", ( +¬p_key_v4 +)); + +1064 + } +} + +1067  + $´št_nd_bË +() + +1069 cÚ¡ * +Ãxt_key +; + +1070 * +Ãxt_d©a +; + +1071 +ušt32_t + +™” + = 0; + +1072 +ušt8_t + +ii + = 0, +j + = 0, +k + = 0; + +1074 + `´štf +("\tport hw‡ddr status ip‡ddr\n"); + +1076  + `¹e_hash_™”©e +( +nd_hash_hªdË +, & +Ãxt_key +, & +Ãxt_d©a +, & +™” +) >= + +1079  +nd_’Œy_d©a + * +tmp_nd_d©a + = + +1080 ( +nd_’Œy_d©a + *) +Ãxt_d©a +; + +1081  +nd_key_v6 + +tmp_nd_key +; + +1082 + `memýy +(& +tmp_nd_key +, +Ãxt_key +, ( +nd_key_v6 +)); + +1083 + `´štf +("\t%4d %02X:%02X:%02X:%02X:%02X:%02X %10s\n", + +1084 +tmp_nd_d©a +-> +pÜt +, + +1085 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +1086 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1087 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1088 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1089 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1090 +tmp_nd_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +1091 +tmp_nd_d©a +-> +¡©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_d©a +-> +v6 +[ +ii +], + +1096 +tmp_nd_d©a +-> +v6 +[ +ii + + 1]); + +1098 + `´štf +("\n"); + +1101 +ušt32_t + +i + = 0; + +1102 + `´štf +("\n\nND IPV6„outingable has %dƒntries\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 +]. +d•th +,†ib_nd_rou‹_bË[i]. +pÜt +); + +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 +]. +nhv6 +[ +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_pÝuϋ_ÿÎed +, +lib_nd_d–‘e_ÿÎed +, + +1127 +lib_nd_du¶iÿ‹_found +); + +1128 + `´štf +("NDabË key†’ i %lu\n\n", ( +nd_key_v6 +)); + +1129 + } +} + +1131  + $»move_¬p_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +) + +1136  +¬p_key_v4 + +¬p_key +; + +1137 +¬p_key +. +pÜt_id + = +pÜtid +; + +1138 +¬p_key +. + + = +addr +; + +1139 +¬p_key +. +fžËr1 + = 0; + +1140 +¬p_key +. +fžËr2 + = 0; + +1141 +¬p_key +. +fžËr3 + = 0; + +1143 +lib_¬p_d–‘e_ÿÎed +++; + +1145 ià( +ARPICMP_DEBUG +) + +1146 + `´štf +("»move_¬p_’Œy i°%x,…܈%d\n", +¬p_key +. + +, + +1147 +¬p_key +. +pÜt_id +); + +1148 + `¹e_hash_d–_key +( +¬p_hash_hªdË +, & +¬p_key +); + +1149 + } +} + +1152  + $»move_nd_’Œy_v6 +( +ušt8_t + +v6addr +[], ušt8_ˆ +pÜtid +) + +1156  +i + = 0; + +1157  +nd_key_v6 + +nd_key +; + +1158 +nd_key +. +pÜt_id + = +pÜtid +; + +1161  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +1162 +nd_key +. +v6 +[ +i +] = +v6addr +[i]; + +1164 +nd_key +. +fžËr1 + = 0; + +1165 +nd_key +. +fžËr2 + = 0; + +1166 +nd_key +. +fžËr3 + = 0; + +1168 +lib_nd_d–‘e_ÿÎed +++; + +1170 ià( +NDIPV6_DEBUG +) { + +1171 + `´štf +("Deletes„te hashable‚dƒntry for…ort %d ipv6=", + +1172 +nd_key +. +pÜt_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_hªdË +, & +nd_key +); + +1177 + } +} + +1180 + $pÝuϋ_¬p_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt32_t + +addr +, + +1181 +ušt8_t + +pÜtid +) + +1185  +¬p_key_v4 + +¬p_key +; + +1186 +¬p_key +. +pÜt_id + = +pÜtid +; + +1187 +¬p_key +. + + = +addr +; + +1188 +¬p_key +. +fžËr1 + = 0; + +1189 +¬p_key +. +fžËr2 + = 0; + +1190 +¬p_key +. +fžËr3 + = 0; + +1192 +lib_¬p_pÝuϋ_ÿÎed +++; + +1194 ià( +ARPICMP_DEBUG +) + +1195 + `´štf +("pÝuϋ_¬p_’Œy i°%x,…܈%d\n", +¬p_key +. + +, + +1196 +¬p_key +. +pÜt_id +); + +1197  +¬p_’Œy_d©a + * +Ãw_¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +¬p_key +); + +1198 ià( +Ãw_¬p_d©a + + +1199 && + `is_§me_‘h”_addr +(& +Ãw_¬p_d©a +-> +‘h_addr +, +hw_addr +)) { + +1200 ià( +ARPICMP_DEBUG +) + +1201 + `´štf +("¬p_’Œyƒxi¡ %x,…܈%d\n", +¬p_key +. + +, + +1202 +¬p_key +. +pÜt_id +); + +1203 +lib_¬p_du¶iÿ‹_found +++; + +1206 +Ãw_¬p_d©a + = ( +¬p_’Œy_d©a + *) + +1207 + `m®loc +(( +¬p_’Œy_d©a +)); + +1208 ià( +Ãw_¬p_d©a + =ð +NULL +) { + +1209 + `´štf +("populate_arp_entry:new_arp_data is NULL\n"); + +1212 +Ãw_¬p_d©a +-> +‘h_addr + = * +hw_addr +; + +1213 +Ãw_¬p_d©a +-> +¡©us + = +INCOMPLETE +; + +1214 +Ãw_¬p_d©a +-> +pÜt + = +pÜtid +; + +1215 +Ãw_¬p_d©a +-> + + = +addr +; + +1216 + `¹e_hash_add_key_d©a +( +¬p_hash_hªdË +, & +¬p_key +, +Ãw_¬p_d©a +); + +1218 ià( +ARPICMP_DEBUG +) { + +1220 + `´štf +("\tARP:able update - hwaddr= " + +1223 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +1224 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1225 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1226 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1227 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1228 +Ãw_¬p_d©a +-> +‘h_addr +. +addr_by‹s +[5], + +1229 ( +¬p_key +. + + >> 24), + +1230 (( +¬p_key +. + + & 0x00ff0000) >> 16), + +1231 (( +¬p_key +. + + & 0x0000ff00) >> 8), + +1232 (( +¬p_key +. + + & 0x000000ff)), +pÜtid +); + +1234 + `puts +(""); + +1236 + } +} + +1245 + $pÝuϋ_nd_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt8_t + +v6 +[], + +1246 +ušt8_t + +pÜtid +) + +1251 +ušt8_t + +i +; + +1252  +nd_key_v6 + +nd_key +; + +1253 +nd_key +. +pÜt_id + = +pÜtid +; + +1255  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++ ) + +1256 +nd_key +. +v6 +[ +i +] = ipv6[i]; + +1258 + `´štf +("\n"); + +1259 +nd_key +. +fžËr1 + = 0; + +1260 +nd_key +. +fžËr2 + = 0; + +1261 +nd_key +. +fžËr3 + = 0; + +1263 +lib_nd_pÝuϋ_ÿÎed +++; + +1268  +nd_’Œy_d©a + * +Ãw_nd_d©a + = + `»Œ›ve_nd_’Œy +( +nd_key +); + +1270 ià( +Ãw_nd_d©a + && + `is_§me_‘h”_addr +(&Ãw_nd_d©a-> +‘h_addr +, + +1271 +hw_addr +)) { + +1273 ià( +NDIPV6_DEBUG +) { + +1274 + `´štf +("nd_entryƒxists…ort %d ipv6 = ", + +1275 +nd_key +. +pÜt_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_du¶iÿ‹_found +++; + +1284 ià( +NDIPV6_DEBUG +) + +1285 + `´štf +("nd_entryƒxists\n"); + +1289 +Ãw_nd_d©a + = ( +nd_’Œy_d©a + *) + +1290 + `m®loc +(( +nd_’Œy_d©a +)); + +1291 ià( +Ãw_nd_d©a + =ð +NULL +) { + +1292 + `´štf +("populate_nd_entry:‚ew_nd_data is NULL\n"); + +1295 +Ãw_nd_d©a +-> +‘h_addr + = * +hw_addr +; + +1296 +Ãw_nd_d©a +-> +¡©us + = +COMPLETE +; + +1297 +Ãw_nd_d©a +-> +pÜt + = +pÜtid +; + +1299 ià( +NDIPV6_DEBUG +) + +1300 + `´štf +("populate_nd_entry ipv6="); + +1302  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++ ) + +1303 +Ãw_nd_d©a +-> +v6 +[ +i +] = ipv6[i]; + +1305 ià( +NDIPV6_DEBUG +) { + +1306  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1308 + `´štf +("%02X%02X ", +Ãw_nd_d©a +-> +v6 +[ +i +], + +1309 +Ãw_nd_d©a +-> +v6 +[ +i + + 1]); + +1314 + `¹e_hash_add_key_d©a +( +nd_hash_hªdË +, & +nd_key +, +Ãw_nd_d©a +); + +1316 ià( +NDIPV6_DEBUG +) + +1317 + `´štf +("\n....Added‡ key-data…air‡t„te hashable " + +1320 ià( +NDIPV6_DEBUG +) { + +1322 + `´štf +("\tND:able update - hwaddr= " + +1324 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[0], + +1325 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[1], + +1326 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[2], + +1327 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[3], + +1328 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[4], + +1329 +Ãw_nd_d©a +-> +‘h_addr +. +addr_by‹s +[5], +pÜtid +); + +1330 + `´štf +("\tipv6="); + +1331  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i += 2) { + +1332 +Ãw_nd_d©a +-> +v6 +[ +i +] = ipv6[i]; + +1333 + `´štf +("%02X%02X ", +Ãw_nd_d©a +-> +v6 +[ +i +], + +1334 +Ãw_nd_d©a +-> +v6 +[ +i + + 1]); + +1337 + `´štf +("\n"); + +1339 + `puts +(""); + +1342 + } +} + +1344  + $´št_pkt1 +( +¹e_mbuf + * +pkt +) + +1346 +ušt8_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 + + gbrßdÿ¡_‘h”_addr + = { + +1357 . +addr_by‹s +[0] = 0xFF, + +1358 . + gaddr_by‹s +[1] = 0xFF, + +1359 . + gaddr_by‹s +[2] = 0xFF, + +1360 . + gaddr_by‹s +[3] = 0xFF, + +1361 . + gaddr_by‹s +[4] = 0xFF, + +1362 . + gaddr_by‹s +[5] = 0xFF, + +1365 cÚ¡  +‘h”_addr + + gnuÎ_‘h”_addr + = { + +1366 . +addr_by‹s +[0] = 0x00, + +1367 . + gaddr_by‹s +[1] = 0x00, + +1368 . + gaddr_by‹s +[2] = 0x00, + +1369 . + gaddr_by‹s +[3] = 0x00, + +1370 . + gaddr_by‹s +[4] = 0x00, + +1371 . + gaddr_by‹s +[5] = 0x00, + +1374  + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1375  +‘h”_addr + + glšk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1376 {. +addr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1377 {. + gaddr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1378 {. + gaddr_by‹s + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1379 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1380 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1381 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1382 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1383 {. + gaddr_by‹s + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1384 {. + gaddr_by‹s + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1385 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1386 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1387 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1388 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1389 {. + gaddr_by‹s + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1390 {. + gaddr_by‹s + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1391 {. + gaddr_by‹s + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1394  +‘h”_addr + * + $g‘_lšk_hw_addr +( +ušt8_t + +out_pÜt +) + +1396  & +lšk_hw_addr +[ +out_pÜt +]; + +1397 + } +} + +1400 + $»que¡_icmp_echo +( +pÜt_id +, +ušt32_t + + +,  +‘h”_addr + * +gw_addr +) + +1402  +‘h”_hdr + * +‘h_h +; + +1403  +v4_hdr + * +_h +; + +1404  +icmp_hdr + * +icmp_h +; + +1406  +­p_lšk_·¿ms + * +lšk +; + +1407 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +pÜt_id +]; + +1408 +¬p_pÜt_add»s£s +[ +pÜt_id +]. + + = +lšk +->ip; + +1409 +¬p_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lšk +->mac_addr; + +1411  +¹e_mbuf + * +icmp_pkt + = +lib_¬p_pkt +; + +1412 ià( +icmp_pkt + =ð +NULL +) { + +1413 ià( +ARPICMP_DEBUG +) + +1414 + `´štf +("Error‡llocating icmp_pkt„te_mbuf\n"); + +1418 +‘h_h + = + `¹e_pktmbuf_mtod +( +icmp_pkt +,  +‘h”_hdr + *); + +1419 + `‘h”_addr_cÝy +( +gw_addr +, & +‘h_h +-> +d_addr +); + +1420 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1421 & +¬p_pÜt_add»s£s +[ +pÜt_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 +-> +v”siÚ_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 +-> +äagm’t_off£t + = 0x0000; + +1433 +_h +-> +time_to_live + = 64; + +1434 +_h +-> +Ãxt_´Ùo_id + = +IPPROTO_ICMP +; + +1435 +_h +-> +¤c_addr + = + `¹e_bsw­32 +( +¬p_pÜt_add»s£s +[ +pÜt_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_id’t + = 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 +-> +d©a_Ën + = icmp_pkt-> +pkt_Ën +; + +1453 ià( +ARPICMP_DEBUG +) { + +1454 + `´štf +("Sendingƒcho„equest\n"); + +1455 + `´št_mbuf +("TX", +pÜt_id +, +icmp_pkt +, +__LINE__ +); + +1458 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +gp_¬p +-> +p +.p, + +1459 +gp_¬p +-> +ouÜt_id +[ +pÜt_id +], +icmp_pkt +); + +1460 +gp_¬p +-> +£ÁPktCouÁ +++; + +1461 + } +} + +1463  + $»que¡_echo +( +pÜt_id +, +ušt32_t + + +) + +1465 () +pÜt_id +; + +1466 () + +; + +1468  +‘h”_addr + +gw_addr +; + +1469 +ušt32_t + +de¡_ + = + `¹e_bsw­32 +( + +); + +1470 +ušt32_t + +phy_pÜt +; + +1472 ià( + `g‘_de¡_mac_addr_pÜt +( +de¡_ +, & +phy_pÜt +, & +gw_addr +è=ð +ARP_FOUND +) { + +1473 + `»que¡_icmp_echo +( +phy_pÜt +, + +, & +gw_addr +); + +1477 ià( +ARPICMP_DEBUG +) + +1478 + `´štf +("Sendingƒcho„equest ... get mac failed.\n"); + +1479 + } +} + +1481  + $»que¡_¬p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +,  +¹e_p–še + * +¹e_p +) + +1483 () +pÜt_id +; + +1484 () + +; + +1486  +‘h”_hdr + * +‘h_h +; + +1487  +¬p_hdr + * +¬p_h +; + +1489  +­p_lšk_·¿ms + * +lšk +; + +1490 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +pÜt_id +]; + +1491 +¬p_pÜt_add»s£s +[ +pÜt_id +]. + + = +lšk +->ip; + +1492 +¬p_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lšk +->mac_addr; + +1494  +¹e_mbuf + * +¬p_pkt + = +lib_¬p_pkt +; + +1496 ià( +¬p_pkt + =ð +NULL +) { + +1497 ià( +ARPICMP_DEBUG +) + +1498 + `´štf +("Error‡llocating‡rp_pkt„te_mbuf\n"); + +1502 +‘h_h + = + `¹e_pktmbuf_mtod +( +¬p_pkt +,  +‘h”_hdr + *); + +1504 + `‘h”_addr_cÝy +(& +brßdÿ¡_‘h”_addr +, & +‘h_h +-> +d_addr +); + +1505 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1506 & +¬p_pÜt_add»s£s +[ +pÜt_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 + = ( +ušt32_t +); + +1514 +¬p_h +-> +¬p_Ý + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +1516 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1517 & +¬p_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr +, + +1518 & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +1519 +¬p_h +-> +¬p_d©a +. +¬p_s + = + +1520 + `¹e_ýu_to_be_32 +( +¬p_pÜt_add»s£s +[ +pÜt_id +]. + +); + +1521 + `‘h”_addr_cÝy +(& +nuÎ_‘h”_addr +, & +¬p_h +-> +¬p_d©a +. +¬p_tha +); + +1522 +¬p_h +-> +¬p_d©a +. +¬p_t + = + `¹e_ýu_to_be_32 +( + +); + +1523 + `´štf +("¬°t:%x‡½ s :%x\n", +¬p_h +-> +¬p_d©a +. +¬p_t +, + +1524 +¬p_h +-> +¬p_d©a +. +¬p_s +); + +1530 +¬p_pkt +-> +pkt_Ën + = 42; + +1531 +¬p_pkt +-> +d©a_Ën + = 42; + +1533 ià( +ARPICMP_DEBUG +) { + +1534 + `´štf +("Sending‡rp„equest\n"); + +1535 + `´št_mbuf +("TX", +pÜt_id +, +¬p_pkt +, +__LINE__ +); + +1538 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +¹e_p +, +pÜt_id +, +¬p_pkt +); + +1539 +gp_¬p +-> +£ÁPktCouÁ +++; + +1541 + } +} + +1543  + $»que¡_¬p_w¿p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +) + +1545 + `»que¡_¬p +( +pÜt_id +, + +, +gp_¬p +-> +p +.p); + +1546 + } +} + +1548  + $´oûss_¬picmp_pkt +( + +1549  +¹e_mbuf + * +pkt +, + +1550 +ušt32_t + +out_pÜt +, + +1551 +ušt32_t + +pkt_mask +) + +1553 +ušt8_t + +š_pÜt_id + = +pkt +-> +pÜt +; + +1554  +­p_lšk_·¿ms + * +lšk +; + +1555  +‘h”_hdr + * +‘h_h +; + +1556  +¬p_hdr + * +¬p_h +; + +1557  +v4_hdr + * +_h +; + +1558  +icmp_hdr + * +icmp_h +; + +1559 +ušt32_t + +cksum +; + +1560 +ušt32_t + +_addr +; + +1561 +ušt32_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 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_id +]; + +1588 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + + = +lšk +->ip; + +1589 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. +mac_addr + = + +1590 +lšk +-> +mac_addr +; + +1592 ià( +¬p_h +-> +¬p_d©a +. +¬p_t + != + +1593 + `¹e_bsw­32 +( +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + +)) { + +1594 +´štf + + +1597 + `´štf +("arp_tip = %x\n", + +1598 +¬p_h +-> +¬p_d©a +. +¬p_t +); + +1599 + `´štf +("arp_port_addresses = %x\n", + +1600 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + +); + +1601 + `´štf +("š_pÜt_id = %x\n", +š_pÜt_id +); + +1602 + `´štf +("arp_port_addresses[0] = %x\n", + +1603 +¬p_pÜt_add»s£s +[0]. + +); + +1605 + `¹e_p–še_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", +š_pÜt_id +, +pkt +, +__LINE__ +); + +1624 + `pÝuϋ_¬p_’Œy +(( +‘h”_addr + *) + +1625 & +¬p_h +-> +¬p_d©a +. +¬p_sha +, + +1626 +¹e_ýu_to_be_32 + + +1627 ( +¬p_h +-> +¬p_d©a +. +¬p_s +), + +1628 +š_pÜt_id +); + +1631 +»q_t + = +¬p_h +-> +¬p_d©a +. +¬p_t +; + +1632 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, &‘h_h-> +d_addr +); + +1635 + `‘h”_addr_cÝy +(( +‘h”_addr + *)& + +1636 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. +mac_addr +, + +1637 & +‘h_h +-> +s_addr +); + +1639 +¬p_h +-> +¬p_Ý + = + `¹e_ýu_to_be_16 +( +ARP_OP_REPLY +); + +1640 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +1641 & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +1642 +¬p_h +-> +¬p_d©a +. +¬p_t + = + +1643 +¬p_h +-> +¬p_d©a +. +¬p_s +; + +1644 +¬p_h +-> +¬p_d©a +. +¬p_s + = +»q_t +; + +1645 + `‘h”_addr_cÝy +(& +‘h_h +-> +d_addr +, + +1646 & +¬p_h +-> +¬p_d©a +. +¬p_tha +); + +1648 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +gp_¬p +-> +p +.p, + +1649 +out_pÜt +, +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_REPLY„eceived"); + +1658 + `´št_mbuf +("RX", +š_pÜt_id +, +pkt +, + +1659 +__LINE__ +); + +1661 + `pÝuϋ_¬p_’Œy +(( +‘h”_addr + *) + +1662 & +¬p_h +-> +¬p_d©a +. +¬p_sha +, + +1663 + `¹e_bsw­32 +( +¬p_h +-> + +1664 +¬p_d©a +. +¬p_s +), + +1665 +š_pÜt_id +); + +1668 + `¹e_p–še_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 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_id +]; + +1689 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + + = +lšk +->ip; + +1690 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. +mac_addr + = + +1691 +lšk +-> +mac_addr +; + +1693 ià(! + `is_§me_‘h”_addr +(( +‘h”_addr + *) + +1694 & +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + +1695 +mac_addr +, & +‘h_h +-> +d_addr +)) { + +1697 ià( +ARPICMP_DEBUG +) + +1698 + `´štf +("Ethernet frame‚ot destined " + +1702 } ià( +_h +-> +Ãxt_´Ùo_id + !ð +IPPROTO_ICMP +) { + +1703 ià( +ARPICMP_DEBUG +) + +1704 + `´štf +("IP…rotocol ID is‚ot seto " + +1707 } ià(( +_h +-> +v”siÚ_ihl + & 0xf0è!ð +IP_VERSION_4 +) { + +1708 ià( +ARPICMP_DEBUG +) + +1709 + `´štf +("IP version otherhan 4 - " + +1712 } ià(( +_h +-> +v”siÚ_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", +š_pÜt_id +, + +1721 +pkt +, +__LINE__ +); + +1723 +_addr + = +_h +-> +¤c_addr +; + +1724 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +1725 & +‘h_h +-> +d_addr +); + +1726 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +1727 & +¬p_pÜt_add»s£s + + +1728 [ +š_pÜt_id +]. +mac_addr +, + +1729 & +‘h_h +-> +s_addr +); + +1731 ià( +_h +-> +d¡_addr + != + +1732 + `¹e_bsw­32 +( +¬p_pÜt_add»s£s + + +1733 [ +š_pÜt_id +]. + +)) { + +1734 ià( +ARPICMP_DEBUG +) { + +1735 + `´štf +("IPv4…acket‚ot destined for " + +1738 + `´štf +("ip_h->dst_addr = %u, " + +1741 +_h +-> +d¡_addr +, +š_pÜt_id +, + +1742 +¬p_pÜt_add»s£s +[ +š_pÜt_id +]. + +); + +1746 ià( +is_muÉiÿ¡_v4_addr + + +1747 ( +_h +-> +d¡_addr +)) { + +1748 +ušt32_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 + +ð~ + `htÚs +( +IP_ICMP_ECHO_REQUEST + << 8) & 0xffff; + +1778 +cksum + +ð + `htÚs +( +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", +š_pÜt_id +, +pkt +, +__LINE__ +); + +1786 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +gp_¬p +-> +p +.p, + +1787 +out_pÜt +, +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", +š_pÜt_id +, + +1796 +pkt +, +__LINE__ +); + +1798  +¬p_key_v4 + +¬p_key +; + +1799 +¬p_key +. +pÜt_id + = +š_pÜt_id +; + +1800 +¬p_key +. + + = + +1801 + `¹e_bsw­32 +( +_h +-> +¤c_addr +); + +1802 +¬p_key +. +fžËr1 + = 0; + +1803 +¬p_key +. +fžËr2 + = 0; + +1804 +¬p_key +. +fžËr3 + = 0; + +1806  +¬p_’Œy_d©a + * +¬p_’Œy + = + +1807 + `»Œ›ve_¬p_’Œy +( +¬p_key +); + +1808 ià( +¬p_’Œy + =ð +NULL +) { + +1809 + `´štf +("Received unsolicited " + +1812 +¬p_key +. + +, + +1813 +¬p_key +. +pÜt_id +); + +1817 +¬p_’Œy +-> +¡©us + = +COMPLETE +; + +1819 + `¹e_p–še_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Ú¡  +dig™s +[] = "0123456789"; + +1868  +§w_dig™ +, +où‘s +, +ch +; + +1869  +tmp +[ +INADDRSZ +], * + +; + +1871 +§w_dig™ + = 0; + +1872 +où‘s + = 0; + +1873 *( + + = +tmp +) = 0; + +1874 ( +ch + = * +¤c +++) != '\0') { + +1875 cÚ¡ * +pch +; + +1877 +pch + = + `¡rchr +( +dig™s +, +ch +); + +1878 ià( +pch + !ð +NULL +) { + +1879  +Ãw + = * + + * 10 + ( +pch + - +dig™s +); + +1881 ià( +Ãw + > 255) + +1883 ià(! +§w_dig™ +) { + +1884 ià(++ +où‘s + > 4) + +1886 +§w_dig™ + = 1; + +1888 * + + = () +Ãw +; + +1889 } ià( +ch + =ð'.' && +§w_dig™ +) { + +1890 ià( +où‘s + == 4) + +1892 *++ + + = 0; + +1893 +§w_dig™ + = 0; + +1897 ià( +où‘s + < 4) + +1900 + `memýy +( +d¡ +, +tmp +, +INADDRSZ +); + +1902 + } +} + +1917  + $š‘_±Ú_v6 +(cÚ¡ * +¤c +, * +d¡ +) + +1919 cÚ¡  +xdig™s_l +[] = "0123456789abcdef", + +1920 +xdig™s_u +[] = "0123456789ABCDEF"; + +1921  +tmp +[ +IN6ADDRSZ +], * + + = 0, * +’dp + = 0, * +cÞÚp + = 0; + +1922 cÚ¡ * +xdig™s + = 0, * +cu¹ok + = 0; + +1923  +ch + = 0, +§w_xdig™ + = 0, +couÁ_xdig™ + = 0; + +1924  +v® + = 0; + +1925  +dbloù_couÁ + = 0; + +1927 + `mem£t +(( + + = +tmp +), '\0', +IN6ADDRSZ +); + +1928 +’dp + = + + + +IN6ADDRSZ +; + +1929 +cÞÚp + = +NULL +; + +1931 ià(* +¤c + == ':') + +1932 ià(*++ +¤c + != ':') + +1934 +cu¹ok + = +¤c +; + +1935 +§w_xdig™ + = +couÁ_xdig™ + = 0; + +1936 +v® + = 0; + +1938 ( +ch + = * +¤c +++) != '\0') { + +1939 cÚ¡ * +pch +; + +1941 +pch + = + `¡rchr +(( +xdig™s + = +xdig™s_l +), +ch +); + +1942 ià( +pch + =ð +NULL +) + +1943 +pch + = + `¡rchr +(( +xdig™s + = +xdig™s_u +), +ch +); + +1944 ià( +pch + !ð +NULL +) { + +1945 ià( +couÁ_xdig™ + >= 4) + +1947 +v® + <<= 4; + +1948 +v® + |ð( +pch + - +xdig™s +); + +1949 ià( +v® + > 0xffff) + +1951 +§w_xdig™ + = 1; + +1952 +couÁ_xdig™ +++; + +1955 ià( +ch + == ':') { + +1956 +cu¹ok + = +¤c +; + +1957 ià(! +§w_xdig™ +) { + +1958 ià( +cÞÚp +) + +1960 +cÞÚp + = + +; + +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 +( +cu¹ok +, + +) > 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à( +cÞÚp + !ð +NULL +) { + +1995 ià( +dbloù_couÁ + == 8) + +2002 cÚ¡  +n + = + + - +cÞÚp +; + +2003  +i +; + +2005  +i + = 1; i <ð +n +; i++) { + +2006 +’dp +[- +i +] = +cÞÚp +[ +n + - i]; + +2007 +cÞÚp +[ +n + - +i +] = 0; + +2009 + + = +’dp +; + +2011 ià( + + !ð +’dp +) + +2013 + `memýy +( +d¡ +, +tmp +, +IN6ADDRSZ +); + +2015 + } +} + +2034 + $´oûss_icmpv6_pkt +( + +2035  +¹e_mbuf + * +pkt +, + +2036 +ušt32_t + +out_pÜt +, + +2037 +__¹e_unu£d + +ušt32_t + +pkt_num +) + +2040 +ušt8_t + +š_pÜt_id + = +pkt +-> +pÜt +; + +2041  +­p_lšk_·¿ms + * +lšk +; + +2042  +‘h”_hdr + * +‘h_h +; + +2043  +v6_hdr + * +v6_h +; + +2044  +icmpv6_hdr + * +icmpv6_h +; + +2045  +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +2046 +ušt8_t + +v6_addr +[16]; + +2047 +ušt8_t + +i + = 0, +æag + = 1; + +2048 +ušt8_t + +»q_tv6 +[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 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_id +]; + +2057 +icmpv6_pÜt_add»s£s +[ +š_pÜt_id +]. +mac_addr + = +lšk +->mac_addr; + +2059 ià(! +is_§me_‘h”_addr + + +2060 (( +‘h”_addr + *)& +icmpv6_pÜt_add»s£s +[ +š_pÜt_id +]. +mac_addr +, + +2061 & +‘h_h +-> +d_addr +)) { + +2062 ià( +ARPICMP_DEBUG +) { + +2063 + `´štf +("Ethernet frame‚ot destined for MAC‡ddress " + +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_pÜt_add»s£s +[ +š_pÜt_id +]. +v6 +[ +i +]) { + +2075 +æag +++; + +2078 ià(! +æag +) { + +2079 + `´štf +("IPv6…acket‚ot destined for " + +2084 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +2085 & +‘h_h +-> +d_addr +); + +2086 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +2087 & +icmpv6_pÜt_add»s£s + + +2088 [ +š_pÜt_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_p–še_pÜt_out_·ck‘_š£¹ + + +2102 ( +gp_¬p +-> +p +.p, +out_pÜt +, +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 +. +pÜt_id + = +š_pÜt_id +; + +2112  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2113 +nd_key +. +v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +2115 +nd_key +. +fžËr1 + = 0; + +2116 +nd_key +. +fžËr2 + = 0; + +2117 +nd_key +. +fžËr3 + = 0; + +2122  +nd_’Œy_d©a + * +Ãw_nd_d©a + = + +2123 + `»Œ›ve_nd_’Œy +( +nd_key +); + +2125 ià( +Ãw_nd_d©a + =ð +NULL +) { + +2126 + `´štf +("Received unsolicited ICMPv6ƒcho " + +2128 +nd_key +. +pÜt_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_d©a +-> +¡©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 +ušt8_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à( +pÝuϋ_nd_’Œy + + +2157 ( +¤c_hw_addr +, +¤c_v6 +, +š_pÜt_id +)) { + +2160  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2161 +»q_tv6 +[ +i +] = + +2162 +icmpv6_nd_h +-> +rg‘_v6 +[ +i +]; + +2164 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +2165 & +‘h_h +-> +d_addr +); + +2166 + `‘h”_addr_cÝy +(( +‘h”_addr + *) + +2167 & +icmpv6_pÜt_add»s£s + + +2168 [ +š_pÜt_id +]. +mac_addr +, + +2169 & +‘h_h +-> +s_addr +); + +2172 + `‘h”_addr_cÝy +(& +‘h_h +-> +s_addr +, + +2173 & +icmpv6_nd_h +-> + +2174 +lšk_Ïy”_add»ss +); + +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_tv6 +[ +i +]; + +2181 +icmpv6_h +-> +icmpv6_ty³ + = + +2182 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +2183 +icmpv6_nd_h +-> +ty³ + = + +2184 +e_T¬g‘_Lšk_Lay”_Add»ss +; + +2185 +icmpv6_nd_h +-> +icmpv6_»£rved + |= + +2186 +¹e_ýu_to_be_32 + + +2187 ( +NEIGHBOR_SOLICITATION_SET +); + +2189 +¹e_p–še_pÜt_out_·ck‘_š£¹ + + +2190 ( +gp_¬p +-> +p +.p, +out_pÜt +, +icmpv6_pkt +); + +2191 +gp_¬p +-> +£ÁPktCouÁ +++; + +2194 ià( +ARPICMP_DEBUG +) { + +2195 + `´štf +("Non-Multicasted Neighbor " + +2198 + `´štf +("............Some oneƒlse " + +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 +ušt8_t + +v6 +[16]; + +2208  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2209 +v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +2211 ià( + `pÝuϋ_nd_’Œy +( +¤c_hw_addr +, +v6 +, +š_pÜt_id +)) + +2212 ià( +ARPICMP_DEBUG +) + +2213 + `´štf +("Now on, unicast IPv6raffic " + +2217 ià( +ARPICMP_DEBUG +) { + +2218 + `´štf +("ICMPv6 Type %d Not Supported yet !!!\n", + +2219 +icmpv6_h +-> +icmpv6_ty³ +); + +2225 + } +} + +2227  + $»que¡_icmpv6_echo +( +ušt32_t + +pÜt_id +, +ušt8_t + +v6 +[]) + +2229 () +pÜt_id +; + +2230 () +v6 +; + +2231  +i +; + +2233  +‘h”_addr + +gw_addr +; + +2234 +ušt8_t + +nhv6 +[16]; + +2235 +ušt8_t + +de¡_v6 +[16]; + +2236 +ušt32_t + +phy_pÜt +; + +2238  +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2239 +de¡_v6 +[ +i +] = +v6 +[i]; + +2241 ià( + `g‘_de¡_mac_add»ss_v6_pÜt +( +de¡_v6 +, & +phy_pÜt +, + +2242 & +gw_addr +, +nhv6 +)) { + +2243 + `»que¡_icmpv6_echo_mes§ge +( +phy_pÜt +, +v6 +, & +gw_addr +); + +2247 ià( +ARPICMP_DEBUG +) + +2248 + `´štf +("Sending icmpv6ƒcho„equest ... get mac failed.\n"); + +2249 + } +} + +2252 + $»que¡_icmpv6_echo_mes§ge +( +ušt16_t + +pÜt_id +, +ušt8_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_lšk_·¿ms + * +lšk +; + +2261 +lšk + = & +mylšk +[ +pÜt_id +]; + +2263  +i + = 0; i < 16; i++) + +2264 +icmpv6_pÜt_add»s£s +[ +pÜt_id +]. +v6 +[ +i +] = +lšk +->ipv6[i]; + +2266 +icmpv6_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lšk +->mac_addr; + +2268  +¹e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +2269 ià( +icmpv6_pkt + =ð +NULL +) { + +2270 ià( +ARPICMP_DEBUG +) + +2271 + `´štf +("Error‡llocating icmpv6_pkt„te_mbuf\n"); + +2275 +‘h_h + = + `¹e_pktmbuf_mtod +( +icmpv6_pkt +,  +‘h”_hdr + *); + +2276 + `‘h”_addr_cÝy +( +gw_addr +, & +‘h_h +-> +d_addr +); + +2277 + `‘h”_addr_cÝy +(( +‘h”_addr + *)& +icmpv6_pÜt_add»s£s +[ +pÜt_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 +-> +·ylßd_Ën + = 64; + +2290 +v6_h +-> +´Ùo + = 58; + +2291 +v6_h +-> +hÝ_lim™s + = 64; + +2293  +i + = 0; i < 16; i++) { + +2294 +v6_h +-> +¤c_addr +[ +i +] = +icmpv6_pÜt_add»s£s +[ +pÜt_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_id’t + = 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 +-> +d©a_Ën + = icmpv6_pkt-> +pkt_Ën +; + +2311 ià( +ARPICMP_DEBUG +) + +2312 + `´štf +("Sending icmpv6ƒcho„equest\n"); + +2314 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +gp_¬p +-> +p +.p, + +2315 +gp_¬p +-> +ouÜt_id +[ +pÜt_id +], + +2316 +icmpv6_pkt +); + +2318 +gp_¬p +-> +£ÁPktCouÁ +++; + +2319 + } +} + +2324 * +p–še_¬picmp_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, + +2325 * +msg +); + +2327  +p–še_msg_»q_hªdËr + + ghªdËrs +[] = { + +2328 [ +PIPELINE_MSG_REQ_PING +] = + +2329 +p–še_msg_»q_pšg_hªdËr +, + +2330 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +2331 +p–še_msg_»q_¡©s_pÜt_š_hªdËr +, + +2332 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +2333 +p–še_msg_»q_¡©s_pÜt_out_hªdËr +, + +2334 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +2335 +p–še_msg_»q_¡©s_bË_hªdËr +, + +2336 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +2337 +p–še_msg_»q_pÜt_š_’abË_hªdËr +, + +2338 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +2339 +p–še_msg_»q_pÜt_š_di§bË_hªdËr +, + +2340 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +2341 +p–še_¬picmp_msg_»q_cu¡om_hªdËr +, + +2345 * +p–še_¬picmp_msg_»q_’Œy_dbg_hªdËr +( +p–še + * +p +, + +2346 * +msg +); + +2347 * + $p–še_¬picmp_msg_»q_’Œy_dbg_hªdËr +( + +2348 +__¹e_unu£d +  +p–še + * +p +, + +2349 +__¹e_unu£d + * +msg +) + +2352  +NULL +; + +2353 + } +} + +2355  +__¹e_unu£d + +p–še_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +2356 [ +PIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +] = + +2357 +p–še_¬picmp_msg_»q_’Œy_dbg_hªdËr +, + +2371 * + $p–še_¬picmp_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, * +msg +) + +2373  +p–še_¬picmp + * +p_¬p + = (p–še_¬picm°*) +p +; + +2374  +p–še_cu¡om_msg_»q + * +»q + = +msg +; + +2375 +p–še_msg_»q_hªdËr + +f_hªdË +; + +2377 +f_hªdË + = ( +»q +-> +subty³ + < +PIPELINE_ARPICMP_MSG_REQS +) ? + +2378 +p_¬p +-> +cu¡om_hªdËrs +[ +»q +-> +subty³ +] : + +2379 +p–še_msg_»q_šv®id_hªdËr +; + +2381 ià( +f_hªdË + =ð +NULL +) + +2382 +f_hªdË + = +p–še_msg_»q_šv®id_hªdËr +; + +2384  + `f_hªdË +( +p +, +»q +); + +2385 + } +} + +2387 #ifdeà +VNF_ACL + + +2393 +p–še_¬picmp_·r£_¬gs +( +p–še_¬picmp + * +p +, + +2394  +p–še_·¿ms + * +·¿ms +); + +2396 + $p–še_¬picmp_·r£_¬gs +( + +2397 +__¹e_unu£d +  +p–še_¬picmp + * +p +, + +2398  +p–še_·¿ms + * +·¿ms +) + +2401 +ušt32_t + +i +; + +2402 +ušt32_t + +¬p_m‘a_off£t_´e£Á + = 0; + +2404 +ušt32_t + +¬p_rou‹_tbl_´e£Á + = 0; + +2405 +ušt32_t + +nd_rou‹_tbl_´e£Á + = 0; + +2406 +ušt32_t + +pÜts_mac_li¡_´e£Á + = 0; + +2407 +ušt32_t + +pktq_š_´v_´e£Á + = 0; + +2408 +ušt32_t + +´v_to_pub_m­_´e£Á + = 0; + +2410 +ušt8_t + +n_´v_š_pÜt + = 0; + +2411  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +2412 +š_pÜt_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_v®ue + = +·¿ms +-> +¬gs_v®ue +[ +i +]; + +2421 ià( +ARPICMP_DEBUG + > 2) { + +2422 + `´štf +("ARP‡rgs[%d]: % %d, %s\n", +i +, +¬g_Çme +, + +2423 + `©oi +( +¬g_v®ue +),‡rg_value); + +2425 ià( + `¡rcmp +( +¬g_Çme +, "arp_meta_offset") == 0) { + +2426 ià( +¬p_m‘a_off£t_´e£Á +) { + +2427 + `´štf +("arp_meta_offset " + +2431 +¬p_m‘a_off£t_´e£Á + = 1; + +2432 +¬p_m‘a_off£t + = + `©oi +( +¬g_v®ue +); + +2436 ià( + `¡rcmp +( +¬g_Çme +, "pktq_in_prv") == 0) { + +2437 ià( +pktq_š_´v_´e£Á +) { + +2438 + `´štf +("Duplicate…ktq_in_prv ... " + +2442 +pktq_š_´v_´e£Á + = 1; + +2444  +rxpÜt + = 0, +j + = 0; + +2445  +phy_pÜt_num +[5]; + +2446 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "RXQ"); + +2447  +tok’ +) { + +2448 +j + = 0; + +2449 ( +j + < 4è&& ( +tok’ +[j] != '.')) { + +2450 +phy_pÜt_num +[ +j +] = +tok’ +[j]; + +2451 +j +++; + +2453 +phy_pÜt_num +[ +j +] = '\0'; + +2454 +rxpÜt + = + `©oi +( +phy_pÜt_num +); + +2455 + `´štf +("token: %s,…hy_port_str: %s, " + +2457 +tok’ +, +phy_pÜt_num +, +rxpÜt +); + +2459 +´v_š_pÜt_a +[ +n_´v_š_pÜt +++] = +rxpÜt +; + +2461 if( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +2462 +š_pÜt_dœ_a +[ +rxpÜt +] = 1; + +2463 +tok’ + = + `¡¹ok +( +NULL +, "RXQ"); + +2466 ià( +n_´v_š_pÜt + == 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  +rxpÜt + = 0, +txpÜt + = 0, +j + = 0, +k + = 0; + +2486  +rx_phy_pÜt_num +[5]; + +2487  +tx_phy_pÜt_num +[5]; + +2488 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +2489  +tok’ +) { + +2490 +j + = 0; + +2491 ( +j + < 4è&& ( +tok’ +[j] != ',')) { + +2492 +rx_phy_pÜt_num +[ +j +] = +tok’ +[j]; + +2493 +j +++; + +2495 +rx_phy_pÜt_num +[ +j +] = '\0'; + +2496 +rxpÜt + = + `©oi +( +rx_phy_pÜt_num +); + +2498 +j +++; + +2499 +k + = 0; + +2500 ( +k + < 4è&& ( +tok’ +[ +j + + k] != ')')) { + +2501 +tx_phy_pÜt_num +[ +k +] = +tok’ +[ +j + + k]; + +2502 +k +++; + +2504 +tx_phy_pÜt_num +[ +k +] = '\0'; + +2505 +txpÜt + = + `©oi +( +tx_phy_pÜt_num +); + +2506 ià( +rxpÜt + < +PIPELINE_MAX_PORT_IN + && +txpÜt + < PIPELINE_MAX_PORT_IN){ + +2507 + `´štf +("token: %s," + +2510 +tok’ +, +rx_phy_pÜt_num +, +rxpÜt +, + +2511 +tx_phy_pÜt_num +, +txpÜt +); + +2515 ià(( +rxpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +2516 ( +txpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +2517 ( +š_pÜt_dœ_a +[ +rxpÜt +] != 1)) { + +2518 + `´štf +("CG-NAPT…arseƒrror - " + +2521 +rxpÜt +, +txpÜt +, +š_pÜt_dœ_a +[rxport]); + +2525 +´v_to_pub_m­ +[ +rxpÜt +] = +txpÜt +; + +2526 +pub_to_´v_m­ +[ +txpÜt +] = +rxpÜt +; + +2527 +tok’ + = + `¡¹ok +( +NULL +, "("); + +2534 ià( + `¡rcmp +( +¬g_Çme +, "lib_arp_debug") == 0) { + +2535 +ARPICMP_DEBUG + = + `©oi +( +¬g_v®ue +); + +2541 ià( + `¡rcmp +( +¬g_Çme +, "ports_mac_list") == 0) { + +2542 +pÜts_mac_li¡_´e£Á + = 1; + +2544 +ušt32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2546  +by‹SŒ +[ +MAC_NUM_BYTES +][3]; + +2547 +ušt32_t + +by‹ +[ +MAC_NUM_BYTES +]; + +2549 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, " "); + +2550  +tok’ +) { + +2551 +k + = 0; + +2552  +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2553  +j + = 0; j < 2; j++) + +2554 +by‹SŒ +[ +i +][ +j +] = +tok’ +[ +k +++]; + +2555 +by‹SŒ +[ +i +][ +j +] = '\0'; + +2556 +k +++; + +2559  +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2560 +by‹ +[ +i +] = + `¡¹oul +( +by‹SŒ +[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 +lšk_hw_addr + + +2572 [ +lšk_hw_addr_¬¿y_idx +]. +addr_by‹s + + +2573 [ +i +] = +by‹ +[i]; + +2575 +lšk_hw_addr_¬¿y_idx +++; + +2576 +tok’ + = + `¡¹ok +( +NULL +, " "); + +2583 ià( + `¡rcmp +( +¬g_Çme +, "arp_route_tbl") == 0) { + +2584 +¬p_rou‹_tbl_´e£Á + = 1; + +2586 +ušt32_t + +de¡_ + = 0, +mask + = 0, +tx_pÜt + = 0, +nh_ + = + +2587 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2588 +ušt32_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_pÜt_¡r +[ +¬p_rou‹_tbl_¡r_max_Ën +]; + +2592  +nh__¡r +[ +¬p_rou‹_tbl_¡r_max_Ën +]; + +2593 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +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_pÜt_¡r +[ +k +] = +tok’ +[ +i + + +j + + k]; + +2619 +k +++; + +2621 +tx_pÜt_¡r +[ +k +] = '\0'; + +2623 +tx_pÜt + = + `¡¹oul +( +tx_pÜt_¡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_pÜt_¡r +, + +2644 +tx_pÜt +, +nh__¡r +, +nh_ +); + +2647 ià( +tx_pÜt + >ð +·¿ms +-> +n_pÜts_out +) { + +2648 + `´štf +("ARP-ICMP…arseƒrror - " + +2650 +tx_pÜt +, +·¿ms +-> +n_pÜts_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 +]. +pÜt + = + +2661 +tx_pÜt +; + +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 +ušt8_t + +de¡_v6 +[16], +d•th + = 0, +tx_pÜt + = + +2676 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2677 +ušt8_t + +nd_rou‹_tbl_¡r_max_Ën + = 128; + +2678  +de¡_v6_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2679  +d•th_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2680  +tx_pÜt_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2681  +nh_v6_¡r +[ +nd_rou‹_tbl_¡r_max_Ën +]; + +2682 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +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 +d•th_¡r +[ +j +] = +tok’ +[ +i + + j]; + +2699 +j +++; + +2701 +d•th_¡r +[ +j +] = '\0'; + +2703  +s +; + +2704  +s + = 0; +d•th_¡r +[s] != '\0'; ++s) + +2705 +d•th + = d•th * 10 + +d•th_¡r +[ +s +] - '0'; + +2707 +j +++; + +2708 +k + = 0; + +2709 ( +k + < ( +nd_rou‹_tbl_¡r_max_Ën + - 1)) + +2710 && ( +tok’ +[ +i + + +j + + +k +] != ',')) { + +2711 +tx_pÜt_¡r +[ +k +] = +tok’ +[ +i + + +j + + k]; + +2712 +k +++; + +2714 +tx_pÜt_¡r +[ +k +] = '\0'; + +2716 +tx_pÜt + = + `¡¹oul +( +tx_pÜt_¡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 +]. +nhv6 +[ +i +] = + +2736 +nh_v6 +[ +i +]; + +2738 +lib_nd_rou‹_bË +[ +nd_rou‹_tbl_šdex +]. +d•th + = + +2739 +d•th +; + +2740 +lib_nd_rou‹_bË +[ +nd_rou‹_tbl_šdex +]. +pÜt + = + +2741 +tx_pÜt +; + +2743 +nd_rou‹_tbl_šdex +++; + +2744 +tok’ + = + `¡¹ok +( +NULL +, "("); + +2754 ià(! +¬p_m‘a_off£t_´e£Á +) { + +2755 + `´štf +("ARPICMP:‡rp_meta_offset‚ot initialized\n"); + +2760 ià(! +¬p_rou‹_tbl_´e£Á + && ! +nd_rou‹_tbl_´e£Á +) { + +2761 + `´štf +("Neither‡rp_route_tbl_present‚or " + +2766 ià(! +pktq_š_´v_´e£Á +) { + +2767 + `´štf +("pktq_in_prv‚ot declared\n"); + +2771 ià(! +pÜts_mac_li¡_´e£Á +) { + +2772 + `´štf +("ports_mac_list‚ot declared\n"); + +2777 + } +} + +2781 +ušt32_t + + g¬picmp_pkt_´št_couÁ +; + +2782  +šlše +  + +2783 + $pkt_key_¬picmp +( +¹e_mbuf + * +pkt +, +ušt32_t + +pkt_num +, * +¬g +) + +2786  +p–še_¬picmp_š_pÜt_h_¬g + * +­ + = +¬g +; + +2787  +p–še_¬picmp + * +p_¬p + = (p–še_¬picm°*) +­ +-> +p +; + +2789 +p_¬p +-> +»ûivedPktCouÁ +++; + +2791 +ušt8_t + +š_pÜt_id + = +pkt +-> +pÜt +; + +2792 #ifdeà +VNF_ACL + + +2793  +­p_lšk_·¿ms + * +lšk +; + +2795 +ušt8_t + * +´ÙocÞ +; + +2796 +ušt32_t + +pkt_mask + = 1 << +pkt_num +; + +2797 +ušt32_t + +‘h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +2799 +ušt32_t + +´Ù_off£t + = + +2800 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2802 #ifdeà +VNF_ACL + + +2803 +ušt32_t + +out_pÜt +; + +2806 +ušt16_t + * +‘h_´Ùo + = + +2807 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +‘h_´Ùo_off£t +); + +2810 #ifdeà +VNF_ACL + + +2811 +ušt32_t + +d¡_addr_off£t + = + +2812 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2813 +ušt32_t + * +d¡_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_off£t +); + +2816 #ifdeà +IPV6 + + +2817 +ušt32_t + +´Ù_off£t_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 +, +´Ù_off£t_v6 +); + +2823 +´ÙocÞ + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +´Ù_off£t +); + +2825 +´ÙocÞ + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +´Ù_off£t +); + +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 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_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 && ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr +)) + +2851 #ifdeà +VNF_ACL + + +2852 +out_pÜt + = +p_¬p +-> +ouÜt_id +[ +š_pÜt_id +]; + +2853 + `´oûss_¬picmp_pkt +( +pkt +, +out_pÜt +, +pkt_mask +); + +2855 + `´oûss_¬picmp_pkt +( +pkt +, + `ifm_g‘_pÜt +( +š_pÜt_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_pÜt + = +p_¬p +-> +ouÜt_id +[ +š_pÜt_id +]; + +2864 + `´oûss_icmpv6_pkt +( +pkt +, +out_pÜt +, +pkt_mask +); + +2866 + `´oûss_icmpv6_pkt +( +pkt +, + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +2874 + `¹e_p–še_ah_·ck‘_drÝ +( +p_¬p +-> +p +.p, +pkt_mask +); + +2875 +p_¬p +-> +drݳdPktCouÁ +++; + +2877 + } +} + +2879  +šlše +  + +2880 + $pkt4_key_¬picmp +( +¹e_mbuf + ** +pkt +, +ušt32_t + +pkt_num +, * +¬g +) + +2883  +p–še_¬picmp_š_pÜt_h_¬g + * +­ + = +¬g +; + +2884  +p–še_¬picmp + * +p_¬p + = (p–še_¬picm°*) +­ +-> +p +; + +2886 +p_¬p +-> +»ûivedPktCouÁ + += 4; + +2888 +ušt32_t + +‘h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +2889 +ušt8_t + +š_pÜt_id + = +pkt +[0]-> +pÜt +; + +2891 +ušt32_t + +´Ù_off£t + = + +2892 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2895 #ifdeà +VNF_ACL + + +2896 +ušt32_t + +d¡_addr_off£t + = + +2897 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2900 +ušt32_t + +pkt_mask0 + = 1 << +pkt_num +; + +2901 +ušt32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +2902 +ušt32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +2903 +ušt32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +2905 #ifdeà +VNF_ACL + + +2906 +ušt32_t + +out_pÜt0 +; + +2907 +ušt32_t + +out_pÜt1 +; + +2908 +ušt32_t + +out_pÜt2 +; + +2909 +ušt32_t + +out_pÜt3 +; + +2912 +ušt16_t + * +‘h_´Ùo0 + = + +2913 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +‘h_´Ùo_off£t +); + +2914 +ušt16_t + * +‘h_´Ùo1 + = + +2915 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +‘h_´Ùo_off£t +); + +2916 +ušt16_t + * +‘h_´Ùo2 + = + +2917 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +‘h_´Ùo_off£t +); + +2918 +ušt16_t + * +‘h_´Ùo3 + = + +2919 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +‘h_´Ùo_off£t +); + +2921 +ušt8_t + * +´ÙocÞ0 +; + +2922 +ušt8_t + * +´ÙocÞ1 +; + +2923 +ušt8_t + * +´ÙocÞ2 +; + +2924 +ušt8_t + * +´ÙocÞ3 +; + +2926 #ifdeà +VNF_ACL + + +2927 +ušt32_t + * +d¡_addr0 + = + +2928 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d¡_addr_off£t +); + +2929 +ušt32_t + * +d¡_addr1 + = + +2930 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d¡_addr_off£t +); + +2931 +ušt32_t + * +d¡_addr2 + = + +2932 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d¡_addr_off£t +); + +2933 +ušt32_t + * +d¡_addr3 + = + +2934 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], +d¡_addr_off£t +); + +2936  +­p_lšk_·¿ms + * +lšk0 +; + +2937  +­p_lšk_·¿ms + * +lšk1 +; + +2938  +­p_lšk_·¿ms + * +lšk2 +; + +2939  +­p_lšk_·¿ms + * +lšk3 +; + +2941 +lšk0 + = & +myAµ +-> +lšk_·¿ms +[ +pkt +[0]-> +pÜt +]; + +2942 +lšk1 + = & +myAµ +-> +lšk_·¿ms +[ +pkt +[1]-> +pÜt +]; + +2943 +lšk2 + = & +myAµ +-> +lšk_·¿ms +[ +pkt +[2]-> +pÜt +]; + +2944 +lšk3 + = & +myAµ +-> +lšk_·¿ms +[ +pkt +[3]-> +pÜt +]; + +2947 #ifdeà +IPV6 + + +2948 +ušt32_t + +´Ù_off£t_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 +´ÙocÞ0 + = + +2957 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t_v6 +); + +2959 +´ÙocÞ0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t +); + +2962 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo1 +è=ð +ETHER_TYPE_IPv6 +) + +2963 +´ÙocÞ1 + = + +2964 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t_v6 +); + +2966 +´ÙocÞ1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t +); + +2969 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo2 +è=ð +ETHER_TYPE_IPv6 +) + +2970 +´ÙocÞ2 + = + +2971 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t_v6 +); + +2973 +´ÙocÞ2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t +); + +2976 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo3 +è=ð +ETHER_TYPE_IPv6 +) + +2977 +´ÙocÞ3 + = + +2978 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t_v6 +); + +2980 +´ÙocÞ3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t +); + +2982 +´ÙocÞ0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t +); + +2983 +´ÙocÞ1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t +); + +2984 +´ÙocÞ2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t +); + +2985 +´ÙocÞ3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t +); + +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 +), * +´ÙocÞ0 +, +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 && (* +´ÙocÞ0 + =ð +IP_PROTOCOL_ICMP +) + +3001 #ifdeà +VNF_ACL + + +3002 && ( +lšk0 +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr0 +)) + +3006 #ifdeà +VNF_ACL + + +3007 +out_pÜt0 + = +p_¬p +-> +ouÜt_id +[ +pkt +[0]-> +pÜt +]; + +3008 + `´oûss_¬picmp_pkt +( +pkt +[0], +out_pÜt0 +, +pkt_mask0 +); + +3010 + `´oûss_¬picmp_pkt +( +pkt +[0], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3013  +PKT1 +; + +3015 #ifdeà +IPV6 + + +3016 ià(( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo0 +è=ð +ETH_TYPE_IPV6 +) + +3017 && (* +´ÙocÞ0 + =ð +ICMPV6_PROTOCOL_ID +)) { + +3019 #ifdeà +VNF_ACL + + +3020 +out_pÜt0 + = +p_¬p +-> +ouÜt_id +[ +pkt +[0]-> +pÜt +]; + +3021 + `´oûss_icmpv6_pkt +( +pkt +[0], +out_pÜt0 +, +pkt_mask0 +); + +3023 + `´oûss_icmpv6_pkt +( +pkt +[0], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3026  +PKT1 +; + +3031 + `¹e_p–še_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 +), * +´ÙocÞ1 +, +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 && (* +´ÙocÞ1 + =ð +IP_PROTOCOL_ICMP +) + +3047 #ifdeà +VNF_ACL + + +3048 && ( +lšk1 +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr1 +)) + +3052 #ifdeà +VNF_ACL + + +3053 +out_pÜt1 + = +p_¬p +-> +ouÜt_id +[ +pkt +[1]-> +pÜt +]; + +3054 + `´oûss_¬picmp_pkt +( +pkt +[1], +out_pÜt1 +, +pkt_mask1 +); + +3056 + `´oûss_¬picmp_pkt +( +pkt +[1], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3058  +PKT2 +; + +3060 #ifdeà +IPV6 + + +3061 ià(( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo1 +è=ð +ETH_TYPE_IPV6 +) + +3062 && (* +´ÙocÞ1 + =ð +ICMPV6_PROTOCOL_ID +)) { + +3064 #ifdeà +VNF_ACL + + +3065 +out_pÜt1 + = +p_¬p +-> +ouÜt_id +[ +pkt +[1]-> +pÜt +]; + +3066 + `´oûss_icmpv6_pkt +( +pkt +[1], +out_pÜt1 +, +pkt_mask1 +); + +3068 + `´oûss_icmpv6_pkt +( +pkt +[1], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3071  +PKT2 +; + +3076 + `¹e_p–še_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 +), * +´ÙocÞ2 +, +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 && (* +´ÙocÞ2 + =ð +IP_PROTOCOL_ICMP +) + +3092 #ifdeà +VNF_ACL + + +3093 && ( +lšk2 +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr2 +)) + +3097 #ifdeà +VNF_ACL + + +3098 +out_pÜt2 + = +p_¬p +-> +ouÜt_id +[ +pkt +[2]-> +pÜt +]; + +3099 + `´oûss_¬picmp_pkt +( +pkt +[2], +out_pÜt2 +, +pkt_mask2 +); + +3101 + `´oûss_¬picmp_pkt +( +pkt +[2], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3104  +PKT3 +; + +3106 #ifdeà +IPV6 + + +3107 ià(( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo2 +è=ð +ETH_TYPE_IPV6 +) + +3108 && (* +´ÙocÞ2 + =ð +ICMPV6_PROTOCOL_ID +)) { + +3110 #ifdeà +VNF_ACL + + +3111 +out_pÜt2 + = +p_¬p +-> +ouÜt_id +[ +pkt +[2]-> +pÜt +]; + +3112 + `´oûss_icmpv6_pkt +( +pkt +[2], +out_pÜt2 +, +pkt_mask2 +); + +3114 + `´oûss_icmpv6_pkt +( +pkt +[2], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3117  +PKT3 +; + +3122 + `¹e_p–še_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 +), * +´ÙocÞ3 +, +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 && (* +´ÙocÞ3 + =ð +IP_PROTOCOL_ICMP +) + +3139 #ifdeà +VNF_ACL + + +3140 && ( +lšk3 +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr3 +)) + +3144 #ifdeà +VNF_ACL + + +3145 +out_pÜt3 + = +p_¬p +-> +ouÜt_id +[ +pkt +[3]-> +pÜt +]; + +3146 + `´oûss_¬picmp_pkt +( +pkt +[3], +out_pÜt3 +, +pkt_mask3 +); + +3148 + `´oûss_¬picmp_pkt +( +pkt +[3], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3153 #ifdeà +IPV6 + + +3154 ià(( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo3 +è=ð +ETH_TYPE_IPV6 +) + +3155 && (* +´ÙocÞ3 + =ð +ICMPV6_PROTOCOL_ID +)) { + +3157 #ifdeà +VNF_ACL + + +3158 +out_pÜt3 + = +p_¬p +-> +ouÜt_id +[ +pkt +[3]-> +pÜt +]; + +3159 + `´oûss_icmpv6_pkt +( +pkt +[3], +out_pÜt3 +, +pkt_mask3 +); + +3161 + `´oûss_icmpv6_pkt +( +pkt +[3], + `ifm_g‘_pÜt +( +š_pÜt_id +)); + +3168 + `¹e_p–še_ah_·ck‘_drÝ +( +p_¬p +-> +p +.p, +pkt_mask3 +); + +3169 +p_¬p +-> +drݳdPktCouÁ +++; + +3172 + } +} + +3174 +PIPELINE_ARPICMP_KEY_PORT_IN_AH +( + +3175 +pÜt_š_ah_¬picmp +, + +3176 +pkt_key_¬picmp +, + +3177 +pkt4_key_¬picmp +); + +3179 * + $p–še_¬picmp_š™ +( +p–še_·¿ms + * +·¿ms +, + +3180 +__¹e_unu£d + * +¬g +) + +3182  +p–še + * +p +; + +3183  +p–še_¬picmp + * +p_¬p +; + +3184 +ušt32_t + +size +, +i +, +š_pÜts_¬g_size +; + +3186 + `´štf +("Start…ipeline_arpicmp_init\n"); + +3189 ià(( +·¿ms + =ð +NULL +) || + +3190 ( +·¿ms +-> +n_pÜts_š + == 0) || + +3191 ( +·¿ms +-> +n_pÜts_out + == 0)) + +3192  +NULL +; + +3195 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +p–še_¬picmp +)); + +3196 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +3197 +p_¬p + = ( +p–še_¬picmp + *) +p +; + +3198 ià( +p + =ð +NULL +) + +3199  +NULL +; + +3202  +­p_·¿ms + * +­p + = (­p_·¿m *) +¬g +; + +3203 +myAµ + = +¬g +; + +3205 + `PLOG +( +p +, +HIGH +, "ARPICMP"); + +3206 + `¡rýy +( +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 +-> +lšks_m­ +[ +i +] = 0xff; + +3216 +p_¬p +-> +p–še_num + = 0; + +3219 ià( + `p–še_¬picmp_·r£_¬gs +( +p_¬p +, +·¿ms +)) + +3220  +NULL +; + +3222 #iâdeà +VNF_ACL + + +3223 + `lib_¬p_š™ +( +·¿ms +, +­p +); + +3228  +¹e_p–še_·¿ms + +p–še_·¿ms + = { + +3229 . +Çme + = "ARPICMP", + +3230 . +sock‘_id + = +·¿ms +->socket_id, + +3231 . +off£t_pÜt_id + = 0, + +3235 +p +->°ð + `¹e_p–še_ü—‹ +(& +p–še_·¿ms +); + +3236 ià( +p +->°=ð +NULL +) { + +3237 + `¹e_ä“ +( +p +); + +3238  +NULL +; + +3242 +p +-> +n_pÜts_š + = +·¿ms +->n_ports_in; + +3243 +p +-> +n_pÜts_out + = +·¿ms +->n_ports_out; + +3244 +p +-> +n_bËs + = 1; + +3247 +š_pÜts_¬g_size + = + `RTE_CACHE_LINE_ROUNDUP +( + +3248 (( +p–še_¬picmp_š_pÜt_h_¬g +)) * + +3249 ( +·¿ms +-> +n_pÜts_š +)); + +3250  +p–še_¬picmp_š_pÜt_h_¬g + * +­ + = + +3251 ( +p–še_¬picmp_š_pÜt_h_¬g + *) + `¹e_zm®loc +( +NULL +, + +3252 +š_pÜts_¬g_size +, + +3253 +RTE_CACHE_LINE_SIZE +); + +3254 ià( +­ + =ð +NULL +) + +3255  +NULL +; + +3258  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +3260 ( +­ +[ +i +]). +p + = +p_¬p +; + +3261 ( +­ +[ +i +]). +š_pÜt_id + = i; + +3262  +¹e_p–še_pÜt_š_·¿ms + +pÜt_·¿ms + = { + +3263 . +Ýs + = + +3264 + `p–še_pÜt_š_·¿ms_g‘_Ýs +(& +·¿ms +-> + +3265 +pÜt_š +[ +i +]), + +3266 . +¬g_ü—‹ + = + +3267 + `p–še_pÜt_š_·¿ms_cÚv”t +(& +·¿ms +-> + +3268 +pÜt_š +[ +i +]), + +3269 . +f_aùiÚ + = +NULL +, + +3270 . +¬g_ah + = &( +­ +[ +i +]), + +3271 . +bur¡_size + = +·¿ms +-> +pÜt_š +[ +i +].burst_size, + +3274 +pÜt_·¿ms +. +f_aùiÚ + = +pÜt_š_ah_¬picmp +; + +3276  +¡©us + = + `¹e_p–še_pÜt_š_ü—‹ +( +p +->p, + +3277 & +pÜt_·¿ms +, + +3278 & +p +-> +pÜt_š_id +[ +i +]); + +3280 ià( +¡©us +) { + +3281 + `¹e_p–še_ä“ +( +p +->p); + +3282 + `¹e_ä“ +( +p +); + +3283  +NULL +; + +3288  +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +3289  +¹e_p–še_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +3290 . +Ýs + = + +3291 + `p–še_pÜt_out_·¿ms_g‘_Ýs +(& +·¿ms +-> + +3292 +pÜt_out +[ +i +]), + +3293 . +¬g_ü—‹ + = + +3294 + `p–še_pÜt_out_·¿ms_cÚv”t +(& +·¿ms +-> + +3295 +pÜt_out +[ +i +]), + +3296 . +f_aùiÚ + = +NULL +, + +3297 . +¬g_ah + = +NULL +, + +3300  +¡©us + = + `¹e_p–še_pÜt_out_ü—‹ +( +p +->p, + +3301 & +pÜt_·¿ms +, + +3302 & +p +-> +pÜt_out_id +[ +i +]); + +3304 ià( +¡©us +) { + +3305 + `¹e_p–še_ä“ +( +p +->p); + +3306 + `¹e_ä“ +( +p +); + +3307  +NULL +; + +3310  +p–še_num + = 0; + +3312  +¡©us + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +p–še_num +); + +3314 ià( +¡©us + < 0) { + +3315  +NULL +; + +3316 + `´štf +("Unableo„ead…ipeline‚umber\n"); + +3319 +p_¬p +-> +p–še_num + = ( +ušt8_t +)…ipeline_num; + +3321 + `»gi¡”_p–še_Qs +( +p_¬p +-> +p–še_num +, +p +); + +3322 + `£t_phy_ouÜt_id +( +p_¬p +-> +p–še_num +, +p +,…_¬p-> +ouÜt_id +); + +3326  +¹e_p–še_bË_·¿ms + +bË_·¿ms + = { + +3327 . +Ýs + = & +¹e_bË_¡ub_Ýs +, + +3328 . +¬g_ü—‹ + = +NULL +, + +3329 . +f_aùiÚ_h™ + = +NULL +, + +3330 . +f_aùiÚ_miss + = +NULL +, + +3331 . +¬g_ah + = +NULL +, + +3332 . +aùiÚ_d©a_size + = 0, + +3335  +¡©us + = + `¹e_p–še_bË_ü—‹ +( +p +->p, + +3336 & +bË_·¿ms +, + +3337 & +p +-> +bË_id +[0]); + +3339 ià( +¡©us +) { + +3340 + `¹e_p–še_ä“ +( +p +->p); + +3341 + `¹e_ä“ +( +p +); + +3342  +NULL +; + +3347  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +3349  +¡©us + = + `¹e_p–še_pÜt_š_cÚÃù_to_bË +( +p +->p, + +3350 +p +-> + +3351 +pÜt_š_id + + +3352 [ +i +], + +3353 +p +-> + +3354 +bË_id +[0]); + +3356 ià( +¡©us +) { + +3357 + `¹e_p–še_ä“ +( +p +->p); + +3358 + `¹e_ä“ +( +p +); + +3359  +NULL +; + +3365  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +3366  +¡©us + = + `¹e_p–še_pÜt_š_’abË +( +p +->p, + +3367 +p +-> +pÜt_š_id +[ +i +]); + +3369 ià( +¡©us +) { + +3370 + `¹e_p–še_ä“ +( +p +->p); + +3371 + `¹e_ä“ +( +p +); + +3372  +NULL +; + +3377 ià( + `¹e_p–še_check +( +p +->p) < 0) { + +3378 + `¹e_p–še_ä“ +( +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 + `memýy +( +p +-> +hªdËrs +, 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 mbuf…ool 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 +("ARP†ib_arp_pkt‡lloc 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_hªdË + = + `¹e_hash_ü—‹ +(& +¬p_hash_·¿ms +); + +3418 ià( +¬p_hash_hªdË + =ð +NULL +) { + +3419 + `´štf +("ARP„te_hash_create failed. socket %d ...\n", + +3420 +¬p_hash_·¿ms +. +sock‘_id +); + +3421  +NULL +; + +3423 + `´štf +("¬p_hash_hªdË %p\n\n", (*) +¬p_hash_hªdË +); + +3426 +nd_hash_·¿ms +. +sock‘_id + = + `¹e_sock‘_id +(); + +3427 +nd_hash_·¿ms +. +’Œ›s + = +MAX_NUM_ND_ENTRIES +; + +3428 +nd_hash_hªdË + = + `¹e_hash_ü—‹ +(& +nd_hash_·¿ms +); + +3430 ià( +nd_hash_hªdË + =ð +NULL +) { + +3431 + `´štf +("ND„te_hash_create failed. socket %d ...\n", + +3432 +nd_hash_·¿ms +. +sock‘_id +); + +3433  +NULL +; + +3436 + `´štf +("nd_hash_hªdË %p\n\n", (*) +nd_hash_hªdË +); + +3438  +p +; + +3439 + } +} + +3441  + $p–še_¬picmp_ä“ +(* +p–še +) + +3443  +p–še + * +p + = (pipeline *)pipeline; + +3446 ià( +p + =ð +NULL +) + +3450 + `¹e_p–še_ä“ +( +p +->p); + +3451 + `¹e_ä“ +( +p +); + +3453 + } +} + +3455  + $p–še_¬picmp_tim” +(* +p–še +) + +3457  +p–še + * +p + = (pipeline *)pipeline; + +3459 + `p–še_msg_»q_hªdË +( +p +); + +3460 + `¹e_p–še_æush +( +p +->p); + +3463 + } +} + +3466 + $p–še_¬picmp_Œack +(* +p–še +, +ušt32_t + +pÜt_š +, ušt32_ˆ* +pÜt_out +) + +3468  +p–še + * +p + = (pipeline *)pipeline; + +3471 ià(( +p + =ð +NULL +è|| ( +pÜt_š + >ðp-> +n_pÜts_š +è|| ( +pÜt_out + == NULL)) + +3474 * +pÜt_out + = +pÜt_š + / +p +-> +n_pÜts_š +; + +3476 + } +} + +3478  +p–še_be_Ýs + + gp–še_¬picmp_be_Ýs + = { + +3479 . +f_š™ + = +p–še_¬picmp_š™ +, + +3480 . + gf_ä“ + = +p–še_¬picmp_ä“ +, + +3481 . + gf_run + = +NULL +, + +3482 . + gf_tim” + = +p–še_¬picmp_tim” +, + +3483 . + gf_Œack + = +p–še_¬picmp_Œack +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + +18  + #__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + + ) + +20  + ~"p–še_commÚ_be.h +" + +21  + #PIPELINE_ARPICMP_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +23 + `f_ah +( \ + +24 +__¹e_unu£d +  +¹e_p–še + * +¹e_p +, \ + +25  +¹e_mbuf + ** +pkts +, \ + +26 +ušt32_t + +n_pkts +, \ + +27 * +¬g +) \ + +29 +ušt32_t + +i +, +j +; \ + +31  +j + = 0; j < +n_pkts +; j++) \ + +32 + `¹e_´eãtch0 +( +pkts +[ +j +]); \ + +34  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +35 + `f_pkt4_wÜk +(& +pkts +[ +i +], i, +¬g +); \ + +37  ; +i + < +n_pkts +; i++) \ + +38 + `f_pkt_wÜk +( +pkts +[ +i +], i, +¬g +); \ + +42 } + + ) + +44  +­p_·¿ms + * +myAµ +; + +45  +´št_pkt1 +( +¹e_mbuf + * +pkt +); + +46  +‘h”_addr + * +g‘_lšk_hw_addr +( +ušt8_t + +out_pÜt +); + +47 #ifdeà +VNF_ACL + + +49  + ~<¹e_p–še.h +> + +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 + e¬p_key_ty³ + { + +76 + mARP_IPV4 +, + +78 + mND_IPV6 +, + +81  + s¬p_key_v4 + { + +82 +ušt32_t + + m +; + +83 +ušt8_t + + mpÜt_id +; + +84 +ušt8_t + + mfžËr1 +; + +85 +ušt8_t + + mfžËr2 +; + +86 +ušt8_t + + mfžËr3 +; + +90  + snd_key_v6 + { + +93 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +94 +ušt8_t + + mpÜt_id +; + +95 +ušt8_t + + mfžËr1 +; + +96 +ušt8_t + + mfžËr2 +; + +97 +ušt8_t + + mfžËr3 +; + +100  + s¬p_key + { + +101 +¬p_key_ty³ + + mty³ +; + +103  +¬p_key_v4 + + mv4 +; + +104 } + mkey +; + +107  + slib_¬p_rou‹_bË_’Œy + { + +108 +ušt32_t + + m +; + +109 +ušt32_t + + mmask +; + +110 +ušt32_t + + mpÜt +; + +111 +ušt32_t + + mnh +; + +114  + slib_nd_rou‹_bË_’Œy + { + +115 +ušt8_t + + mv6 +[16]; + +116 +ušt8_t + + md•th +; + +117 +ušt32_t + + mpÜt +; + +118 +ušt8_t + + mnhv6 +[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 +ušt8_t + +´v_š_pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +124  +cÚv”t_´efixËn_to_Ãtmask_v6 +( +ušt32_t + +d•th +, + +125 +ušt8_t + +Ãtmask_v6 +[]); + +126 +ušt32_t + +g‘_nh +(uint32_t, uint32_t*); + +127  +g‘_nh_v6 +( +ušt8_t + +v6 +[], +ušt32_t + * +pÜt +, ušt8_ˆ +nhv6 +[]); + +129 +ušt32_t + +ARPICMP_DEBUG +; + +133  + #COMPLETE + 1 + + ) + +135  + #INCOMPLETE + 0 + + ) + +138 +ušt32_t + +NDIPV6_DEBUG +; + +141  + #ICMPv6_COMPLETE + 1 + + ) + +143  + #ICMPv6_INCOMPLETE + 0 + + ) + +145  + s¬p_’Œy_d©a + { + +146  +‘h”_addr + + m‘h_addr +; + +147 +ušt8_t + + mpÜt +; + +148 +ušt8_t + + m¡©us +; + +149 +ušt32_t + + m +; + +150 } +__©Œibu‹__ + (( +__·cked__ +)); + +153  + snd_’Œy_d©a + { + +154  +‘h”_addr + + m‘h_addr +; + +155 +ušt8_t + + mpÜt +; + +156 +ušt8_t + + m¡©us +; + +157 +ušt8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +158 } +__©Œibu‹__ + (( +__·cked__ +)); + +160  +g‘_de¡_mac_add»ss +(cÚ¡ +ušt32_t + +addr +, cÚ¡ ušt32_ˆ +phy_pÜt +, + +161  +‘h”_addr + * +hw_addr +, +ušt32_t + * +nh +); + +162  +g‘_de¡_mac_addr +(cÚ¡ +ušt32_t + +addr +, cÚ¡ ušt32_ˆ +phy_pÜt +, + +163  +‘h”_addr + * +hw_addr +); + +165  +g‘_de¡_mac_add»ss_v6 +( +ušt8_t + +v6addr +[], +ušt32_t + +phy_pÜt +, + +166  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]); + +168  +lib_¬p_»que¡_¬p +( + +169 cÚ¡ +ušt32_t + +addr +, + +170 cÚ¡ +ušt32_t + +phy_pÜt +, + +171  +¹e_p–še + * +¹e_p +); + +173  +´št_¬p_bË +(); + +174  +´št_nd_bË +(); + +175  +»move_¬p_’Œy +( +ušt32_t + +addr +, +ušt8_t + +pÜtid +); + +176  +»move_nd_’Œy_v6 +( +ušt8_t + +v6addr +[], ušt8_ˆ +pÜtid +); + +177  +pÝuϋ_¬p_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt32_t + +addr +, + +178 +ušt8_t + +pÜtid +); + +180  +pÝuϋ_nd_’Œy +(cÚ¡  +‘h”_addr + * +hw_addr +, +ušt8_t + + +[], + +181 +ušt8_t + +pÜtid +); + +182  +»que¡_¬p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +,  +¹e_p–še + * +¹e_p +); + +183  +»que¡_¬p_w¿p +( +ušt8_t + +pÜt_id +, +ušt32_t + + +); + +184  +»que¡_echo +( +pÜt_id +, +ušt32_t + + +); + +186  +´oûss_¬picmp_pkt +( +¹e_mbuf + * +pkt +, +ušt32_t + +out_pÜt +, + +187 +ušt32_t + +pkt_num +); + +189  +¬p_’Œy_d©a + * +»Œ›ve_¬p_’Œy +(cÚ¡  +¬p_key_v4 + +¬p_key +); + +190  +nd_’Œy_d©a + * +»Œ›ve_nd_’Œy +( +nd_key_v6 + +nd_key +); + +192  +nd_’Œy_d©a + * +»Œ›ve_nd_’Œy +( +nd_key_v6 + +nd_key +); + +194  +lib_nd_š™ +Ð +­p_·¿ms + * +­p +); + +195  +´št_pkt1 +( +¹e_mbuf + * +pkt +); + +199 +ušt8_t + + glb_ouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +200  +p–še + * + glßdb_p–še +[ +PIPELINE_MAX_PORT_IN +]; + +201  +p–še + * + g®l_p–še +[ +PIPELINE_MAX_PORT_IN +]; + +202 +ušt8_t + + gvnf_to_lßdb_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +203 +ušt8_t + + gpÜt_to_lßdb_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +204 +ušt8_t + + glßdb_p–še_nums +[ +PIPELINE_MAX_PORT_IN +]; + +207 +ušt8_t + + glb_ouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +208  +p–še + * + g¬p_p–še +[ +PIPELINE_MAX_PORT_IN +]; + +209 +ušt8_t + + gvnf_to_¬p_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +210 +ušt8_t + + gpÜt_to_¬p_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +211 +ušt8_t + + g¬p_p–še_nums +[ +PIPELINE_MAX_PORT_IN +]; + +214  +£t_pÜt_to_lßdb_m­ +( +ušt8_t + +p–še_num +); + +215 +ušt8_t + +g‘_pÜt_to_lßdb_m­ +(ušt8_ˆ +phy_pÜt_id +); + +218  +£t_phy_špÜt_m­ +( +ušt8_t + +p–še_num +, ušt8_ˆ* +m­ +); + +219  +£t_phy_ouÜt_m­ +( +ušt8_t + +p–še_num +, ušt8_ˆ* +m­ +); + +221  +£t_ouÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +); + +223 +ušt8_t + +g‘_lßdb_ouÜt_id +(ušt8_ˆ +aùu®_phy_pÜt +); + +225 +ušt8_t + +g‘_vnf_£t_num +(ušt8_ˆ +p–še_num +); + +227  +p–šes_pÜt_šfo +(); + +228  +p–šes_m­_šfo +(); + +229  +»gi¡”_lßdb_to_¬p +( +ušt8_t + +p–še_num +,  +p–še + * +p +, + +230 +__¹e_unu£d +  +­p_·¿ms + * +­p +); + +232 +ušt8_t + + gSWQ_to_PÜt_m­ +[128]; + +234  +p–še_be_Ýs + +p–še_¬picmp_be_Ýs +; + +235  +»gi¡”_p–še_Qs +( +ušt8_t + +p–še_num +,  +p–še + * +p +); + +236  +£t_lšk_m­ +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +); + +237  +£t_ouÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +); + +238  +£t_phy_ouÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +); + +239  +£t_phy_špÜt_id +( +ušt8_t + +p–še_num +,  +p–še + * +p +, ušt8_ˆ* +m­ +); + +244 + ep–še_¬picmp_msg_»q_ty³ + { + +245 + mPIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +, + +246 + mPIPELINE_ARPICMP_MSG_REQS + + +252  + sp–še_¬picmp_’Œy_dbg_msg_»q + { + +253 +p–še_msg_»q_ty³ + + mty³ +; + +254 +p–še_¬picmp_msg_»q_ty³ + + msubty³ +; + +257 +ušt8_t + + md©a +[2]; + +264  + sp–še_¬picmp_š_pÜt_h_¬g + { + +265  +p–še_¬picmp + * + mp +; + +266 +ušt8_t + + mš_pÜt_id +; + +269  + sp–še_¬picmp_’Œy_dbg_msg_r¥ + { + +270  + m¡©us +; + +273 #ifdeà +VNF_ACL + + +276  + sicmpv6_hdr + { + +277 +ušt8_t + + micmpv6_ty³ +; + +278 +ušt8_t + + micmpv6_code +; + +279 +ušt16_t + + micmpv6_cksum +; + +280 } +__©Œibu‹__ + (( +__·cked__ +)); + +285  + sicmpv6_šfo_hdr + { + +286 +ušt16_t + + micmpv6_id’t +; + +287 +ušt16_t + + micmpv6_£q_nb +; + +288 } +__©Œibu‹__ + (( +__·cked__ +)); + +293  + sicmpv6_nd_hdr + { + +295 +ušt32_t + + micmpv6_»£rved +; + +298 +ušt8_t + + mrg‘_v6 +[16]; + +300 +ušt8_t + + mty³ +; + +301 +ušt8_t + + mËngth +; + +302  +‘h”_addr + + mlšk_Ïy”_add»ss +; + +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_lšk_Ïy”_Add»ss_ty³ + { + +315 + me_Sourû_Lšk_Lay”_Add»ss + = 1, + +316 + me_T¬g‘_Lšk_Lay”_Add»ss +, + +317 + me_Lšk_Lay”_Add»ss + + +320 +ušt8_t + +is_muÉiÿ¡_v6_addr +(ušt8_ˆ +v6 +[]); + +321  + sicmpv6_pÜt_add»ss + { + +322 +ušt32_t + + mv6 +[16]; + +323 +ušt64_t + + mmac_addr +; + +326  +icmpv6_pÜt_add»ss + + gicmpv6_pÜt_add»s£s +[ +RTE_MAX_ETHPORTS +]; + +328  + #MAX_NUM_ICMPv6_ENTRIES + 64 + + ) + +330  +¹e_mbuf + * + glib_icmpv6_pkt +; + +331  +»que¡_icmpv6_echo +( +ušt32_t + +pÜt_id +, +ušt8_t + +v6 +[]); + +332  +»que¡_icmpv6_echo_mes§ge +( +ušt16_t + +pÜt_id +, +ušt8_t + +v6 +[], + +333  +‘h”_addr + * +gw_addr +); + +335 +´oûss_icmpv6_pkt +( +¹e_mbuf + * +pkt +, +ušt32_t + +out_pÜt +, ušt32_ˆ +pkt_num +); + +337  +g‘_de¡_mac_addr_pÜt +(cÚ¡ +ušt32_t + +addr +, + +338 +ušt32_t + * +phy_pÜt +,  +‘h”_addr + * +hw_addr +); + +340  +g‘_de¡_mac_add»ss_v6_pÜt +( +ušt8_t + +v6addr +[], +ušt32_t + * +phy_pÜt +, + +341  +‘h”_addr + * +hw_addr +, +ušt8_t + +nhv6 +[]); + + @VIL/pipeline_common/pipeline_common_be.c + +17  + ~<¹e_commÚ.h +> + +18  + ~<¹e_ršg.h +> + +19  + ~<¹e_m®loc.h +> + +21  + ~"p–še_commÚ_be.h +" + +24 + $p–še_msg_»q_pšg_hªdËr +( +__¹e_unu£d +  +p–še + * +p +, + +25 * +msg +) + +27  +p–še_msg_r¥ + * +r¥ + = +msg +; + +29 +r¥ +-> +¡©us + = 0; + +31  +r¥ +; + +32 + } +} + +35 + $p–še_msg_»q_¡©s_pÜt_š_hªdËr +( +p–še + * +p +, + +36 * +msg +) + +38  +p–še_¡©s_msg_»q + * +»q + = +msg +; + +39  +p–še_¡©s_pÜt_š_msg_r¥ + * +r¥ + = +msg +; + +40 +ušt32_t + +pÜt_id +; + +43 ià( +»q +-> +id + >ð +p +-> +n_pÜts_š +) { + +44 +r¥ +-> +¡©us + = -1; + +45  +r¥ +; + +47 +pÜt_id + = +p +-> +pÜt_š_id +[ +»q +-> +id +]; + +50 +r¥ +-> +¡©us + = + `¹e_p–še_pÜt_š_¡©s_»ad +( +p +->p, + +51 +pÜt_id +, + +52 & +r¥ +-> +¡©s +, + +55  +r¥ +; + +56 + } +} + +59 + $p–še_msg_»q_¡©s_pÜt_out_hªdËr +( +p–še + * +p +, + +60 * +msg +) + +62  +p–še_¡©s_msg_»q + * +»q + = +msg +; + +63  +p–še_¡©s_pÜt_out_msg_r¥ + * +r¥ + = +msg +; + +64 +ušt32_t + +pÜt_id +; + +67 ià( +»q +-> +id + >ð +p +-> +n_pÜts_out +) { + +68 +r¥ +-> +¡©us + = -1; + +69  +r¥ +; + +71 +pÜt_id + = +p +-> +pÜt_out_id +[ +»q +-> +id +]; + +74 +r¥ +-> +¡©us + = + `¹e_p–še_pÜt_out_¡©s_»ad +( +p +->p, + +75 +pÜt_id +, + +76 & +r¥ +-> +¡©s +, + +79  +r¥ +; + +80 + } +} + +83 + $p–še_msg_»q_¡©s_bË_hªdËr +( +p–še + * +p +, + +84 * +msg +) + +86  +p–še_¡©s_msg_»q + * +»q + = +msg +; + +87  +p–še_¡©s_bË_msg_r¥ + * +r¥ + = +msg +; + +88 +ušt32_t + +bË_id +; + +91 ià( +»q +-> +id + >ð +p +-> +n_bËs +) { + +92 +r¥ +-> +¡©us + = -1; + +93  +r¥ +; + +95 +bË_id + = +p +->bË_id[ +»q +-> +id +]; + +98 +r¥ +-> +¡©us + = + `¹e_p–še_bË_¡©s_»ad +( +p +->p, + +99 +bË_id +, + +100 & +r¥ +-> +¡©s +, + +103  +r¥ +; + +104 + } +} + +107 + $p–še_msg_»q_pÜt_š_’abË_hªdËr +( +p–še + * +p +, + +108 * +msg +) + +110  +p–še_pÜt_š_msg_»q + * +»q + = +msg +; + +111  +p–še_msg_r¥ + * +r¥ + = +msg +; + +112 +ušt32_t + +pÜt_id +; + +115 ià( +»q +-> +pÜt_id + >ð +p +-> +n_pÜts_š +) { + +116 +r¥ +-> +¡©us + = -1; + +117  +r¥ +; + +119 +pÜt_id + = +p +-> +pÜt_š_id +[ +»q +->port_id]; + +122 +r¥ +-> +¡©us + = + `¹e_p–še_pÜt_š_’abË +( +p +->p, + +123 +pÜt_id +); + +125  +r¥ +; + +126 + } +} + +129 + $p–še_msg_»q_pÜt_š_di§bË_hªdËr +( +p–še + * +p +, + +130 * +msg +) + +132  +p–še_pÜt_š_msg_»q + * +»q + = +msg +; + +133  +p–še_msg_r¥ + * +r¥ + = +msg +; + +134 +ušt32_t + +pÜt_id +; + +137 ià( +»q +-> +pÜt_id + >ð +p +-> +n_pÜts_š +) { + +138 +r¥ +-> +¡©us + = -1; + +139  +r¥ +; + +141 +pÜt_id + = +p +-> +pÜt_š_id +[ +»q +->port_id]; + +144 +r¥ +-> +¡©us + = + `¹e_p–še_pÜt_š_di§bË +( +p +->p, + +145 +pÜt_id +); + +147  +r¥ +; + +148 + } +} + +151 + $p–še_msg_»q_šv®id_hªdËr +( +__¹e_unu£d +  +p–še + * +p +, + +152 * +msg +) + +154  +p–še_msg_r¥ + * +r¥ + = +msg +; + +156 +r¥ +-> +¡©us + = -1; + +158  +r¥ +; + +159 + } +} + +162 + $p–še_msg_»q_hªdË +( +p–še + * +p +) + +164 +ušt32_t + +msgq_id +; + +166  +msgq_id + = 0; msgq_id < +p +-> +n_msgq +; msgq_id++) { + +168  +p–še_msg_»q + * +»q +; + +169 +p–še_msg_»q_hªdËr + +f_hªdË +; + +171 +»q + = + `p–še_msg_»cv +( +p +, +msgq_id +); + +172 ià( +»q + =ð +NULL +) + +175 +f_hªdË + = ( +»q +-> +ty³ + < +PIPELINE_MSG_REQS +) ? + +176 +p +-> +hªdËrs +[ +»q +-> +ty³ +] : + +177 +p–še_msg_»q_šv®id_hªdËr +; + +179 ià( +f_hªdË + =ð +NULL +) + +180 +f_hªdË + = +p–še_msg_»q_šv®id_hªdËr +; + +182 + `p–še_msg_£nd +( +p +, + +183 +msgq_id +, + +184 + `f_hªdË +( +p +, (*è +»q +)); + +189 + } +} + + @VIL/pipeline_common/pipeline_common_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_COMMON_BE_H__ + + +18  + #__INCLUDE_PIPELINE_COMMON_BE_H__ + + + ) + +20  + ~<¹e_commÚ.h +> + +21  + ~<¹e_ršg.h +> + +22  + ~<¹e_p–še.h +> + +24  + ~"p–še_be.h +" + +26  + gp–še +; + +28 + ep–še_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 *(* + tp–še_msg_»q_hªdËr +)( + tp–še + * + tp +, * + tmsg +); + +41  + sp–še + { + +42  +¹e_p–še + * + mp +; + +43 +ušt32_t + + mpÜt_š_id +[ +PIPELINE_MAX_PORT_IN +]; + +44 +ušt32_t + + mpÜt_out_id +[ +PIPELINE_MAX_PORT_OUT +]; + +45 +ušt32_t + + mbË_id +[ +PIPELINE_MAX_TABLES +]; + +46  +¹e_ršg + * + mmsgq_š +[ +PIPELINE_MAX_MSGQ_IN +]; + +47  +¹e_ršg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +49 +ušt32_t + + mn_pÜts_š +; + +50 +ušt32_t + + mn_pÜts_out +; + +51 +ušt32_t + + mn_bËs +; + +52 +ušt32_t + + mn_msgq +; + +54 +p–še_msg_»q_hªdËr + + mhªdËrs +[ +PIPELINE_MSG_REQS +]; + +55  + mÇme +[ +PIPELINE_NAME_SIZE +]; + +56 +ušt32_t + + mlog_Ëv– +; + +59 + ep–še_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 + `årštf +( +¡dout +, "[%s] " +fmt + "\n", +p +-> +Çme +, ## +__VA_ARGS__ +);\ + +69 } 0) + + ) + +71  +šlše + * + +72 + $p–še_msg_»cv +( +p–še + * +p +, + +73 +ušt32_t + +msgq_id +) + +75  +¹e_ršg + * +r + = +p +-> +msgq_š +[ +msgq_id +]; + +76 * +msg +; + +77  +¡©us + = + `¹e_ršg_sc_dequeue +( +r +, & +msg +); + +79 ià( +¡©us + != 0) + +80  +NULL +; + +82  +msg +; + +83 + } +} + +85  +šlše +  + +86 + $p–še_msg_£nd +( +p–še + * +p +, + +87 +ušt32_t + +msgq_id +, + +88 * +msg +) + +90  +¹e_ršg + * +r + = +p +-> +msgq_out +[ +msgq_id +]; + +91  +¡©us +; + +94 +¡©us + = + `¹e_ršg_¥_’queue +( +r +, +msg +); + +95 }  +¡©us + =ð- +ENOBUFS +); + +96 + } +} + +98  + sp–še_msg_»q + { + +99 +p–še_msg_»q_ty³ + + mty³ +; + +102  + sp–še_¡©s_msg_»q + { + +103 +p–še_msg_»q_ty³ + + mty³ +; + +104 +ušt32_t + + mid +; + +107  + sp–še_pÜt_š_msg_»q + { + +108 +p–še_msg_»q_ty³ + + mty³ +; + +109 +ušt32_t + + mpÜt_id +; + +112  + sp–še_cu¡om_msg_»q + { + +113 +p–še_msg_»q_ty³ + + mty³ +; + +114 +ušt32_t + + msubty³ +; + +117  + sp–še_msg_r¥ + { + +118  + m¡©us +; + +121  + sp–še_¡©s_pÜt_š_msg_r¥ + { + +122  + m¡©us +; + +123  +¹e_p–še_pÜt_š_¡©s + + m¡©s +; + +126  + sp–še_¡©s_pÜt_out_msg_r¥ + { + +127  + m¡©us +; + +128  +¹e_p–še_pÜt_out_¡©s + + m¡©s +; + +131  + sp–še_¡©s_bË_msg_r¥ + { + +132  + m¡©us +; + +133  +¹e_p–še_bË_¡©s + + m¡©s +; + +136 * +p–še_msg_»q_pšg_hªdËr +( +p–še + * +p +, * +msg +); + +137 * +p–še_msg_»q_¡©s_pÜt_š_hªdËr +( +p–še + * +p +, * +msg +); + +138 * +p–še_msg_»q_¡©s_pÜt_out_hªdËr +( +p–še + * +p +, * +msg +); + +139 * +p–še_msg_»q_¡©s_bË_hªdËr +( +p–še + * +p +, * +msg +); + +140 * +p–še_msg_»q_pÜt_š_’abË_hªdËr +( +p–še + * +p +, * +msg +); + +141 * +p–še_msg_»q_pÜt_š_di§bË_hªdËr +( +p–še + * +p +, * +msg +); + +142 * +p–še_msg_»q_šv®id_hªdËr +( +p–še + * +p +, * +msg +); + +144  +p–še_msg_»q_hªdË +( +p–še + * +p +); + + @VIL/pipeline_common/pipeline_common_fe.c + +17  + ~<¡dio.h +> + +18  + ~ + +19  + ~ + +21  + ~<¹e_commÚ.h +> + +22  + ~<¹e_ršg.h +> + +23  + ~<¹e_m®loc.h +> + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~"p–še_commÚ_ã.h +" + +34 #iâdeà +VNF_ACL + + +35  + ~"š‹rçû.h +" + +39 + $­p_p–še_pšg +( +­p_·¿ms + * +­p +, + +40 +ušt32_t + +p–še_id +) + +42  +­p_p–še_·¿ms + * +p +; + +43  +p–še_msg_»q + * +»q +; + +44  +p–še_msg_r¥ + * +r¥ +; + +45  +¡©us + = 0; + +48 ià( +­p + =ð +NULL +) + +51 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_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 +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +65 ià( +r¥ + =ð +NULL +) + +69 +¡©us + = +r¥ +->status; + +72 + `­p_msg_ä“ +( +­p +, +r¥ +); + +74  +¡©us +; + +75 + } +} + +78 + $­p_p–še_¡©s_pÜt_š +( +­p_·¿ms + * +­p +, + +79 +ušt32_t + +p–še_id +, + +80 +ušt32_t + +pÜt_id +, + +81  +¹e_p–še_pÜt_š_¡©s + * +¡©s +) + +83  +­p_p–še_·¿ms + * +p +; + +84  +p–še_¡©s_msg_»q + * +»q +; + +85  +p–še_¡©s_pÜt_š_msg_r¥ + * +r¥ +; + +86  +¡©us + = 0; + +89 ià(( +­p + =ð +NULL +) || + +90 ( +¡©s + =ð +NULL +)) + +93 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_id +, +p +); + +94 ià(( +p + =ð +NULL +) || + +95 ( +pÜt_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 + = +pÜt_id +; + +108 +r¥ + = ( +p–še_¡©s_pÜt_š_msg_r¥ + *) + +109 + `­p_msg_£nd_»cv +( +­p +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +110 ià( +r¥ + =ð +NULL +) + +114 +¡©us + = +r¥ +->status; + +115 ià( +¡©us + == 0) + +116 + `memýy +( +¡©s +, & +r¥ +->stats, (rsp->stats)); + +119 + `­p_msg_ä“ +( +­p +, +r¥ +); + +121  +¡©us +; + +122 + } +} + +125 + $­p_p–še_¡©s_pÜt_out +( +­p_·¿ms + * +­p +, + +126 +ušt32_t + +p–še_id +, + +127 +ušt32_t + +pÜt_id +, + +128  +¹e_p–še_pÜt_out_¡©s + * +¡©s +) + +130  +­p_p–še_·¿ms + * +p +; + +131  +p–še_¡©s_msg_»q + * +»q +; + +132  +p–še_¡©s_pÜt_out_msg_r¥ + * +r¥ +; + +133  +¡©us + = 0; + +136 ià(( +­p + =ð +NULL +) || + +137 ( +p–še_id + >ð +­p +-> +n_p–šes +) || + +138 ( +¡©s + =ð +NULL +)) + +141 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_id +, +p +); + +142 ià(( +p + =ð +NULL +) || + +143 ( +pÜt_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 + = +pÜt_id +; + +156 +r¥ + = + `­p_msg_£nd_»cv +( +­p +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +157 ià( +r¥ + =ð +NULL +) + +161 +¡©us + = +r¥ +->status; + +162 ià( +¡©us + == 0) + +163 + `memýy +( +¡©s +, & +r¥ +->stats, (rsp->stats)); + +166 + `­p_msg_ä“ +( +­p +, +r¥ +); + +168  +¡©us +; + +169 + } +} + +172 + $­p_p–še_¡©s_bË +( +­p_·¿ms + * +­p +, + +173 +ušt32_t + +p–še_id +, + +174 +ušt32_t + +bË_id +, + +175  +¹e_p–še_bË_¡©s + * +¡©s +) + +177  +­p_p–še_·¿ms + * +p +; + +178  +p–še_¡©s_msg_»q + * +»q +; + +179  +p–še_¡©s_bË_msg_r¥ + * +r¥ +; + +180  +¡©us + = 0; + +183 ià(( +­p + =ð +NULL +) || + +184 ( +¡©s + =ð +NULL +)) + +187 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_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 +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +202 ià( +r¥ + =ð +NULL +) + +206 +¡©us + = +r¥ +->status; + +207 ià( +¡©us + == 0) + +208 + `memýy +( +¡©s +, & +r¥ +->stats, (rsp->stats)); + +211 + `­p_msg_ä“ +( +­p +, +r¥ +); + +213  +¡©us +; + +214 + } +} + +217 + $­p_p–še_pÜt_š_’abË +( +­p_·¿ms + * +­p +, + +218 +ušt32_t + +p–še_id +, + +219 +ušt32_t + +pÜt_id +) + +221  +­p_p–še_·¿ms + * +p +; + +222  +p–še_pÜt_š_msg_»q + * +»q +; + +223  +p–še_msg_r¥ + * +r¥ +; + +224  +¡©us + = 0; + +227 ià( +­p + =ð +NULL +) + +230 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_id +, +p +); + +231 ià(( +p + =ð +NULL +) || + +232 ( +pÜt_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 +-> +pÜt_id + =…ort_id; + +245 +r¥ + = + `­p_msg_£nd_»cv +( +­p +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +246 ià( +r¥ + =ð +NULL +) + +250 +¡©us + = +r¥ +->status; + +253 + `­p_msg_ä“ +( +­p +, +r¥ +); + +255  +¡©us +; + +256 + } +} + +259 + $­p_p–še_pÜt_š_di§bË +( +­p_·¿ms + * +­p +, + +260 +ušt32_t + +p–še_id +, + +261 +ušt32_t + +pÜt_id +) + +263  +­p_p–še_·¿ms + * +p +; + +264  +p–še_pÜt_š_msg_»q + * +»q +; + +265  +p–še_msg_r¥ + * +r¥ +; + +266  +¡©us + = 0; + +269 ià( +­p + =ð +NULL +) + +272 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +p–še_id +, +p +); + +273 ià(( +p + =ð +NULL +) || + +274 ( +pÜt_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 +-> +pÜt_id + =…ort_id; + +287 +r¥ + = + `­p_msg_£nd_»cv +( +­p +, +p–še_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +288 ià( +r¥ + =ð +NULL +) + +292 +¡©us + = +r¥ +->status; + +295 + `­p_msg_ä“ +( +­p +, +r¥ +); + +297  +¡©us +; + +298 + } +} + +301 + $­p_lšk_cÚfig +( +­p_·¿ms + * +­p +, + +302 +ušt32_t + +lšk_id +, + +303 +ušt32_t + + +, + +304 +ušt32_t + +d•th +) + +306  +­p_lšk_·¿ms + * +p +; + +307 +ušt32_t + +i +, +Ãtmask +, +ho¡ +, +bÿ¡ +; + +310 ià( +­p + =ð +NULL +) + +313 + `APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +314 ià( +p + =ð +NULL +) { + +315 + `APP_LOG +( +­p +, +HIGH +, "LINK%" +PRIu32 + " is‚ot‡ valid†ink", + +316 +lšk_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 - +d•th +); + +327 +ho¡ + = + + & +Ãtmask +; + +328 +bÿ¡ + = +ho¡ + | (~ +Ãtmask +); + +330 ià(( + + == 0) || + +331 ( + + =ð +UINT32_MAX +) || + +332 ( + + =ð +ho¡ +) || + +333 ( + + =ð +bÿ¡ +)) { + +334 + `APP_LOG +( +­p +, +HIGH +, "Illegal IP‡ddress"); + +338  +i + = 0; i < +­p +-> +n_lšks +; i++) { + +339  +­p_lšk_·¿ms + * +lšk + = & +­p +-> +lšk_·¿ms +[ +i +]; + +340 +mylšk +[ +i +] = * +lšk +; + +341 ià( + `¡rcmp +( +p +-> +Çme +, +lšk +->name) == 0) + +344 ià( +lšk +-> + + == ip) { + +345 + `APP_LOG +( +­p +, +HIGH +, + +347 +lšk +-> +Çme +); + +352 ià(( +d•th + == 0) || (depth > 32)) { + +353 + `APP_LOG +( +­p +, +HIGH +, "Illegal value for depth…arameter " + +354 "(%" +PRIu32 + ")", + +355 +d•th +); + +360 +p +-> + + = ip; + +361 +p +-> +d•th + = depth; + +362 #iâdeà +VNF_ACL + + +363 ià( + `ifm_add_v4_pÜt +( +lšk_id +, + `¹e_bsw­32 +( + +), +d•th +è=ð +IFM_FAILURE +) + +368 + } +} + +371  + $cÚv”t_´efixËn_to_Ãtmask_v6 +( +ušt32_t + +d•th +, +ušt8_t + +Ãtmask_v6 +[]) + +373  +mod +, +div +, +i +; + +375 + `mem£t +( +Ãtmask_v6 +, 0, 16); + +377 +mod + = +d•th + % 8; + +378 +div + = +d•th + / 8; + +380  +i + = 0; i < +div +; i++) + +381 +Ãtmask_v6 +[ +i +] = 0xff; + +383 +Ãtmask_v6 +[ +i +] = (~0 << (8 - +mod +)); + +386 + } +} + +389 + $g‘_ho¡_pÜtiÚ_v6 +( +ušt8_t + +v6 +[], ušt8_ˆ +Ãtmask +[], ušt8_ˆ +ho¡_v6 +[]) + +391  +i +; + +393  +i + = 0; i < 16; i++) { + +394 +ho¡_v6 +[ +i +] = +v6 +[i] & +Ãtmask +[i]; + +398 + } +} + +401 + $g‘_bÿ¡_pÜtiÚ_v6 +( +ušt8_t + +ho¡ +[], ušt8_ˆ +Ãtmask +[], ušt8_ˆ +bÿ¡_v6 +[]) + +403  +i +; + +405  +i + = 0; i < 16; i++) { + +406 +bÿ¡_v6 +[ +i +] = +ho¡ +[i] | ~ +Ãtmask +[i]; + +410 + } +} + +413 + $­p_lšk_cÚfig_v6 +( +­p_·¿ms + * +­p +, + +414 +ušt32_t + +lšk_id +, +ušt8_t + +v6 +[], ušt32_ˆ +d•th +) + +416  +­p_lšk_·¿ms + * +p +; + +417 +ušt32_t + +i +; + +418 +ušt8_t + +Ãtmask_v6 +[16], +ho¡ +[16], +bÿ¡ +[16]; + +421 ià( +­p + =ð +NULL +) + +424 + `APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +425 ià( +p + =ð +NULL +) { + +426 + `APP_LOG +( +­p +, +HIGH +, "LINK%" +PRIu32 + " is‚ot‡ valid†ink", + +427 +lšk_id +); + +431 ià( +p +-> +¡©e +) { + +432 + `APP_LOG +( +­p +, +HIGH +, "%s is UP,…lease bring it DOWN first", + +433 +p +-> +Çme +); + +437 + `cÚv”t_´efixËn_to_Ãtmask_v6 +( +d•th +, +Ãtmask_v6 +); + +438 + `g‘_ho¡_pÜtiÚ_v6 +( +v6 +, +Ãtmask_v6 +, +ho¡ +); + +439 + `g‘_bÿ¡_pÜtiÚ_v6 +( +ho¡ +, +Ãtmask_v6 +, +bÿ¡ +); + +441  +i + = 0; i < +­p +-> +n_lšks +; i++) { + +442  +­p_lšk_·¿ms + * +lšk + = & +­p +-> +lšk_·¿ms +[ +i +]; + +444 ià( + `¡rcmp +( +p +-> +Çme +, +lšk +->name) == 0) + +447 ià(! + `memcmp +( +lšk +-> +v6 +, ipv6, 16)) { + +448 + `APP_LOG +( +­p +, +HIGH +, + +450 +lšk +-> +Çme +); + +455 ià(( +d•th + == 0) || (depth > 128)) { + +456 + `APP_LOG +( +­p +, +HIGH +, "Illegal value for depth…arameter " + +457 "(%" +PRIu32 + ")", +d•th +); + +462 + `memýy +( +p +-> +v6 +, ipv6, 16); + +464 +p +-> +d•th_v6 + = +d•th +; + +471 #iâdeà +VNF_ACL + + +472 ià( + `ifm_add_v6_pÜt +( +lšk_id +, +v6 +, +d•th +è=ð +IFM_FAILURE +) + +476 + } +} + +479 + $­p_lšk_up +( +­p_·¿ms + * +­p +, + +480 +ušt32_t + +lšk_id +) + +482  +­p_lšk_·¿ms + * +p +; + +485 ià( +­p + =ð +NULL +) + +488 + `APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +489 ià( +p + =ð +NULL +) { + +490 + `APP_LOG +( +­p +, +HIGH +, "LINK%" +PRIu32 + " is‚ot‡ valid†ink", + +491 +lšk_id +); + +496 ià( +p +-> +¡©e +) { + +497 + `APP_LOG +( +­p +, +HIGH +, "% i ®»ady UP", +p +-> +Çme +); + +502 +ušt8_t + +‹mp +[16]; + +504 + `mem£t +( +‹mp +, 0, 16); + +506 ià(( +p +-> + + || + `memcmp +Õ-> +v6 +, +‹mp +, 16)) == 0) { + +507 + `APP_LOG +( +­p +, +HIGH +, "% IP‡dd»s i nÙ s‘", +p +-> +Çme +); + +511 + `­p_lšk_up_š‹º® +( +­p +, +p +); + +514 + } +} + +517 + $­p_lšk_down +( +­p_·¿ms + * +­p +, + +518 +ušt32_t + +lšk_id +) + +520  +­p_lšk_·¿ms + * +p +; + +523 ià( +­p + =ð +NULL +) + +526 + `APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +527 ià( +p + =ð +NULL +) { + +528 + `APP_LOG +( +­p +, +HIGH +, "LINK%" +PRIu32 + " is‚ot‡ valid†ink", + +529 +lšk_id +); + +534 ià( +p +-> +¡©e + == 0) { + +535 + `APP_LOG +( +­p +, +HIGH +, "% i ®»ady DOWN", +p +-> +Çme +); + +539 + `­p_lšk_down_š‹º® +( +­p +, +p +); + +542 + } +} + +548  + scmd_pšg_»suÉ + { + +549 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +550 +ušt32_t + + mp–še_id +; + +551 +cmdlše_fixed_¡ršg_t + + mpšg_¡ršg +; + +555 + $cmd_pšg_·r£d +( + +556 * +·r£d_»suÉ +, + +557 +__¹e_unu£d +  +cmdlše + * +þ +, + +558 * +d©a +) + +560  +cmd_pšg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +561  +­p_·¿ms + * +­p + = +d©a +; + +562  +¡©us +; + +564 +¡©us + = + `­p_p–še_pšg +( +­p +, +·¿ms +-> +p–še_id +); + +565 ià( +¡©us + != 0) + +566 + `´štf +("Command failed\n"); + +567 + } +} + +569 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pšg_p_¡ršg + = + +570 +TOKEN_STRING_INITIALIZER +( +cmd_pšg_»suÉ +, +p_¡ršg +, "p"); + +572 +cmdlše_·r£_tok’_num_t + + gcmd_pšg_p–še_id + = + +573 +TOKEN_NUM_INITIALIZER +( +cmd_pšg_»suÉ +, +p–še_id +, +UINT32 +); + +575 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pšg_pšg_¡ršg + = + +576 +TOKEN_STRING_INITIALIZER +( +cmd_pšg_»suÉ +, +pšg_¡ršg +, "ping"); + +578 +cmdlše_·r£_š¡_t + + gcmd_pšg + = { + +579 . +f + = +cmd_pšg_·r£d +, + +580 . + gd©a + = +NULL +, + +581 . + gh–p_¡r + = "Pipeline…ing", + +582 . + gtok’s + = { + +583 (*è& +cmd_pšg_p_¡ršg +, + +584 (*è& +cmd_pšg_p–še_id +, + +585 (*è& +cmd_pšg_pšg_¡ršg +, + +586 +NULL +, + +594  + scmd_¡©s_pÜt_š_»suÉ + { + +595 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +596 +ušt32_t + + mp–še_id +; + +597 +cmdlše_fixed_¡ršg_t + + m¡©s_¡ršg +; + +598 +cmdlše_fixed_¡ršg_t + + mpÜt_¡ršg +; + +599 +cmdlše_fixed_¡ršg_t + + mš_¡ršg +; + +600 +ušt32_t + + mpÜt_š_id +; + +604 + $cmd_¡©s_pÜt_š_·r£d +( + +605 * +·r£d_»suÉ +, + +606 +__¹e_unu£d +  +cmdlše + * +þ +, + +607 * +d©a +) + +609  +cmd_¡©s_pÜt_š_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +610  +­p_·¿ms + * +­p + = +d©a +; + +611  +¹e_p–še_pÜt_š_¡©s + +¡©s +; + +612  +¡©us +; + +614 +¡©us + = + `­p_p–še_¡©s_pÜt_š +( +­p +, + +615 +·¿ms +-> +p–še_id +, + +616 +·¿ms +-> +pÜt_š_id +, + +617 & +¡©s +); + +619 ià( +¡©us + != 0) { + +620 + `´štf +("Command failed\n"); + +625 + `´štf +("P–š%" +PRIu32 + " - stats for input…ort %" PRIu32 ":\n" + +626 "\tPkt š: %" +PRIu64 + "\n" + +627 "\tPkt drݳd by AH: %" +PRIu64 + "\n" + +628 "\tPkt drݳd by oth”: %" +PRIu64 + "\n", + +629 +·¿ms +-> +p–še_id +, + +630 +·¿ms +-> +pÜt_š_id +, + +631 +¡©s +.¡©s. +n_pkts_š +, + +632 +¡©s +. +n_pkts_drݳd_by_ah +, + +633 +¡©s +.¡©s. +n_pkts_drÝ +); + +634 + } +} + +636 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_š_p_¡ršg + = + +637 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +p_¡ršg +, + +640 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_pÜt_š_p–še_id + = + +641 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +p–še_id +, + +642 +UINT32 +); + +644 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_š_¡©s_¡ršg + = + +645 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +¡©s_¡ršg +, + +648 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_š_pÜt_¡ršg + = + +649 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +pÜt_¡ršg +, + +652 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_š_š_¡ršg + = + +653 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +š_¡ršg +, + +656 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_pÜt_š_pÜt_š_id + = + +657 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt_š_»suÉ +, +pÜt_š_id +, + +658 +UINT32 +); + +660 +cmdlše_·r£_š¡_t + + gcmd_¡©s_pÜt_š + = { + +661 . +f + = +cmd_¡©s_pÜt_š_·r£d +, + +662 . + gd©a + = +NULL +, + +663 . + gh–p_¡r + = "Pipeline input…ort stats", + +664 . + gtok’s + = { + +665 (*è& +cmd_¡©s_pÜt_š_p_¡ršg +, + +666 (*è& +cmd_¡©s_pÜt_š_p–še_id +, + +667 (*è& +cmd_¡©s_pÜt_š_¡©s_¡ršg +, + +668 (*è& +cmd_¡©s_pÜt_š_pÜt_¡ršg +, + +669 (*è& +cmd_¡©s_pÜt_š_š_¡ršg +, + +670 (*è& +cmd_¡©s_pÜt_š_pÜt_š_id +, + +671 +NULL +, + +679  + scmd_¡©s_pÜt_out_»suÉ + { + +680 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +681 +ušt32_t + + mp–še_id +; + +682 +cmdlše_fixed_¡ršg_t + + m¡©s_¡ršg +; + +683 +cmdlše_fixed_¡ršg_t + + mpÜt_¡ršg +; + +684 +cmdlše_fixed_¡ršg_t + + mout_¡ršg +; + +685 +ušt32_t + + mpÜt_out_id +; + +689 + $cmd_¡©s_pÜt_out_·r£d +( + +690 * +·r£d_»suÉ +, + +691 +__¹e_unu£d +  +cmdlše + * +þ +, + +692 * +d©a +) + +695  +cmd_¡©s_pÜt_out_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +696  +­p_·¿ms + * +­p + = +d©a +; + +697  +¹e_p–še_pÜt_out_¡©s + +¡©s +; + +698  +¡©us +; + +700 +¡©us + = + `­p_p–še_¡©s_pÜt_out +( +­p +, + +701 +·¿ms +-> +p–še_id +, + +702 +·¿ms +-> +pÜt_out_id +, + +703 & +¡©s +); + +705 ià( +¡©us + != 0) { + +706 + `´štf +("Command failed\n"); + +711 + `´štf +("P–š%" +PRIu32 + " - stats for output…ort %" PRIu32 ":\n" + +712 "\tPkt š: %" +PRIu64 + "\n" + +713 "\tPkt drݳd by AH: %" +PRIu64 + "\n" + +714 "\tPkt drݳd by oth”: %" +PRIu64 + "\n", + +715 +·¿ms +-> +p–še_id +, + +716 +·¿ms +-> +pÜt_out_id +, + +717 +¡©s +.¡©s. +n_pkts_š +, + +718 +¡©s +. +n_pkts_drݳd_by_ah +, + +719 +¡©s +.¡©s. +n_pkts_drÝ +); + +720 + } +} + +722 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_out_p_¡ršg + = + +723 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +p_¡ršg +, + +726 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_pÜt_out_p–še_id + = + +727 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +p–še_id +, + +728 +UINT32 +); + +730 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_out_¡©s_¡ršg + = + +731 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +¡©s_¡ršg +, + +734 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_out_pÜt_¡ršg + = + +735 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +pÜt_¡ršg +, + +738 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_pÜt_out_out_¡ršg + = + +739 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +out_¡ršg +, + +742 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_pÜt_out_pÜt_out_id + = + +743 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +pÜt_out_id +, + +744 +UINT32 +); + +746 +cmdlše_·r£_š¡_t + + gcmd_¡©s_pÜt_out + = { + +747 . +f + = +cmd_¡©s_pÜt_out_·r£d +, + +748 . + gd©a + = +NULL +, + +749 . + gh–p_¡r + = "Pipeline output…ort stats", + +750 . + gtok’s + = { + +751 (*è& +cmd_¡©s_pÜt_out_p_¡ršg +, + +752 (*è& +cmd_¡©s_pÜt_out_p–še_id +, + +753 (*è& +cmd_¡©s_pÜt_out_¡©s_¡ršg +, + +754 (*è& +cmd_¡©s_pÜt_out_pÜt_¡ršg +, + +755 (*è& +cmd_¡©s_pÜt_out_out_¡ršg +, + +756 (*è& +cmd_¡©s_pÜt_out_pÜt_out_id +, + +757 +NULL +, + +765  + scmd_¡©s_bË_»suÉ + { + +766 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +767 +ušt32_t + + mp–še_id +; + +768 +cmdlše_fixed_¡ršg_t + + m¡©s_¡ršg +; + +769 +cmdlše_fixed_¡ršg_t + + mbË_¡ršg +; + +770 +ušt32_t + + mbË_id +; + +774 + $cmd_¡©s_bË_·r£d +( + +775 * +·r£d_»suÉ +, + +776 +__¹e_unu£d +  +cmdlše + * +þ +, + +777 * +d©a +) + +779  +cmd_¡©s_bË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +780  +­p_·¿ms + * +­p + = +d©a +; + +781  +¹e_p–še_bË_¡©s + +¡©s +; + +782  +¡©us +; + +784 +¡©us + = + `­p_p–še_¡©s_bË +( +­p +, + +785 +·¿ms +-> +p–še_id +, + +786 +·¿ms +-> +bË_id +, + +787 & +¡©s +); + +789 ià( +¡©us + != 0) { + +790 + `´štf +("Command failed\n"); + +795 + `´štf +("P–š%" +PRIu32 + " - stats forable %" PRIu32 ":\n" + +796 "\tPkt š: %" +PRIu64 + "\n" + +797 "\tPkt š w™h†ooku°miss: %" +PRIu64 + "\n" + +798 "\tPkt š w™h†ooku°h™ drݳd by AH: %" +PRIu64 + "\n" + +799 "\tPkt š w™h†ooku°h™ drݳd by oth”s: %" +PRIu64 + "\n" + +800 "\tPkt š w™h†ooku°mis drݳd by AH: %" +PRIu64 + "\n" + +801 "\tPkt š w™h†ooku°mis drݳd by oth”s: %" +PRIu64 + "\n", + +802 +·¿ms +-> +p–še_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 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_bË_p_¡ršg + = + +813 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +p_¡ršg +, + +816 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_bË_p–še_id + = + +817 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +p–še_id +, + +818 +UINT32 +); + +820 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_bË_¡©s_¡ršg + = + +821 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +¡©s_¡ršg +, + +824 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¡©s_bË_bË_¡ršg + = + +825 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +bË_¡ršg +, + +828 +cmdlše_·r£_tok’_num_t + + gcmd_¡©s_bË_bË_id + = + +829 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +bË_id +, +UINT32 +); + +831 +cmdlše_·r£_š¡_t + + gcmd_¡©s_bË + = { + +832 . +f + = +cmd_¡©s_bË_·r£d +, + +833 . + gd©a + = +NULL +, + +834 . + gh–p_¡r + = "Pipelineable stats", + +835 . + gtok’s + = { + +836 (*è& +cmd_¡©s_bË_p_¡ršg +, + +837 (*è& +cmd_¡©s_bË_p–še_id +, + +838 (*è& +cmd_¡©s_bË_¡©s_¡ršg +, + +839 (*è& +cmd_¡©s_bË_bË_¡ršg +, + +840 (*è& +cmd_¡©s_bË_bË_id +, + +841 +NULL +, + +849  + scmd_pÜt_š_’abË_»suÉ + { + +850 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +851 +ušt32_t + + mp–še_id +; + +852 +cmdlše_fixed_¡ršg_t + + mpÜt_¡ršg +; + +853 +cmdlše_fixed_¡ršg_t + + mš_¡ršg +; + +854 +ušt32_t + + mpÜt_š_id +; + +855 +cmdlše_fixed_¡ršg_t + + m’abË_¡ršg +; + +859 + $cmd_pÜt_š_’abË_·r£d +( + +860 * +·r£d_»suÉ +, + +861 +__¹e_unu£d +  +cmdlše + * +þ +, + +862 * +d©a +) + +864  +cmd_pÜt_š_’abË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +865  +­p_·¿ms + * +­p + = +d©a +; + +866  +¡©us +; + +868 +¡©us + = + `­p_p–še_pÜt_š_’abË +( +­p +, + +869 +·¿ms +-> +p–še_id +, + +870 +·¿ms +-> +pÜt_š_id +); + +872 ià( +¡©us + != 0) + +873 + `´štf +("Command failed\n"); + +874 + } +} + +876 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_’abË_p_¡ršg + = + +877 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, +p_¡ršg +, + +880 +cmdlše_·r£_tok’_num_t + + gcmd_pÜt_š_’abË_p–še_id + = + +881 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, +p–še_id +, + +882 +UINT32 +); + +884 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_’abË_pÜt_¡ršg + = + +885 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, +pÜt_¡ršg +, + +888 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_’abË_š_¡ršg + = + +889 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, +š_¡ršg +, + +892 +cmdlše_·r£_tok’_num_t + + gcmd_pÜt_š_’abË_pÜt_š_id + = + +893 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, +pÜt_š_id +, + +894 +UINT32 +); + +896 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_’abË_’abË_¡ršg + = + +897 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_’abË_»suÉ +, + +898 +’abË_¡ršg +, "enable"); + +900 +cmdlše_·r£_š¡_t + + gcmd_pÜt_š_’abË + = { + +901 . +f + = +cmd_pÜt_š_’abË_·r£d +, + +902 . + gd©a + = +NULL +, + +903 . + gh–p_¡r + = "Pipeline input…ortƒnable", + +904 . + gtok’s + = { + +905 (*è& +cmd_pÜt_š_’abË_p_¡ršg +, + +906 (*è& +cmd_pÜt_š_’abË_p–še_id +, + +907 (*è& +cmd_pÜt_š_’abË_pÜt_¡ršg +, + +908 (*è& +cmd_pÜt_š_’abË_š_¡ršg +, + +909 (*è& +cmd_pÜt_š_’abË_pÜt_š_id +, + +910 (*è& +cmd_pÜt_š_’abË_’abË_¡ršg +, + +911 +NULL +, + +919  + scmd_pÜt_š_di§bË_»suÉ + { + +920 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +921 +ušt32_t + + mp–še_id +; + +922 +cmdlše_fixed_¡ršg_t + + mpÜt_¡ršg +; + +923 +cmdlše_fixed_¡ršg_t + + mš_¡ršg +; + +924 +ušt32_t + + mpÜt_š_id +; + +925 +cmdlše_fixed_¡ršg_t + + mdi§bË_¡ršg +; + +929 + $cmd_pÜt_š_di§bË_·r£d +( + +930 * +·r£d_»suÉ +, + +931 +__¹e_unu£d +  +cmdlše + * +þ +, + +932 * +d©a +) + +934  +cmd_pÜt_š_di§bË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +935  +­p_·¿ms + * +­p + = +d©a +; + +936  +¡©us +; + +938 +¡©us + = + `­p_p–še_pÜt_š_di§bË +( +­p +, + +939 +·¿ms +-> +p–še_id +, + +940 +·¿ms +-> +pÜt_š_id +); + +942 ià( +¡©us + != 0) + +943 + `´štf +("Command failed\n"); + +944 + } +} + +946 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_di§bË_p_¡ršg + = + +947 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, +p_¡ršg +, + +950 +cmdlše_·r£_tok’_num_t + + gcmd_pÜt_š_di§bË_p–še_id + = + +951 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, +p–še_id +, + +952 +UINT32 +); + +954 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_di§bË_pÜt_¡ršg + = + +955 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, +pÜt_¡ršg +, + +958 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_di§bË_š_¡ršg + = + +959 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, +š_¡ršg +, + +962 +cmdlše_·r£_tok’_num_t + + gcmd_pÜt_š_di§bË_pÜt_š_id + = + +963 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, +pÜt_š_id +, + +964 +UINT32 +); + +966 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_pÜt_š_di§bË_di§bË_¡ršg + = + +967 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt_š_di§bË_»suÉ +, + +968 +di§bË_¡ršg +, "disable"); + +970 +cmdlše_·r£_š¡_t + + gcmd_pÜt_š_di§bË + = { + +971 . +f + = +cmd_pÜt_š_di§bË_·r£d +, + +972 . + gd©a + = +NULL +, + +973 . + gh–p_¡r + = "Pipeline input…ort disable", + +974 . + gtok’s + = { + +975 (*è& +cmd_pÜt_š_di§bË_p_¡ršg +, + +976 (*è& +cmd_pÜt_š_di§bË_p–še_id +, + +977 (*è& +cmd_pÜt_š_di§bË_pÜt_¡ršg +, + +978 (*è& +cmd_pÜt_š_di§bË_š_¡ršg +, + +979 (*è& +cmd_pÜt_š_di§bË_pÜt_š_id +, + +980 (*è& +cmd_pÜt_š_di§bË_di§bË_¡ršg +, + +981 +NULL +, + +990 + $´št_lšk_šfo +( +­p_lšk_·¿ms + * +p +) + +992  +¹e_‘h_¡©s + +¡©s +; + +993  +‘h”_addr + * +mac_addr +; + +994 +ušt32_t + +Ãtmask + = (~0Uè<< (32 - +p +-> +d•th +); + +995 +ušt32_t + +ho¡ + = +p +-> + + & +Ãtmask +; + +996 +ušt32_t + +bÿ¡ + = +ho¡ + | (~ +Ãtmask +); + +998 + `mem£t +(& +¡©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 "brßdÿ¡ %" +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_by‹s +[0], + +1036 +mac_addr +-> +addr_by‹s +[1], + +1037 +mac_addr +-> +addr_by‹s +[2], + +1038 +mac_addr +-> +addr_by‹s +[3], + +1039 +mac_addr +-> +addr_by‹s +[4], + +1040 +mac_addr +-> +addr_by‹s +[5]); + +1042 + `´štf +("\tRX…ack‘ %" +PRIu64 + + +1043 " by‹ %" +PRIu64 + + +1045 +¡©s +. +ack‘s +, + +1046 +¡©s +. +iby‹s +); + +1048 + `´štf +("\tRXƒ¼Ü %" +PRIu64 + + +1049 " mis£d %" +PRIu64 + + +1050 "‚o-mbuà%" +PRIu64 + + +1052 +¡©s +. +›¼Üs +, + +1053 +¡©s +. +imis£d +, + +1054 +¡©s +. +rx_nombuf +); + +1056 + `´štf +("\tTX…ack‘ %" +PRIu64 + + +1057 " by‹ %" +PRIu64 + "\n", + +1058 +¡©s +. +Ýack‘s +, + +1059 +¡©s +. +oby‹s +); + +1061 + `´štf +("\tTXƒ¼Ü %" +PRIu64 + + +1063 +¡©s +. +Û¼Üs +); + +1065 + `´štf +("\n"); + +1066 + } +} + +1068  + scmd_lšk_cÚfig_»suÉ + { + +1069 +cmdlše_fixed_¡ršg_t + + mlšk_¡ršg +; + +1070 +ušt32_t + + mlšk_id +; + +1071 +cmdlše_fixed_¡ršg_t + + mcÚfig_¡ršg +; + +1072 +cmdlše_addr_t + + m +; + +1073 +ušt32_t + + md•th +; + +1077 +cmd_lšk_cÚfig_·r£d +( + +1078 * +·r£d_»suÉ +, + +1079 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +1080 * +d©a +) + +1082  +cmd_lšk_cÚfig_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1083  +­p_·¿ms + * + g­p + = +d©a +; + +1084  + g¡©us +; + +1086 +ušt32_t + + glšk_id + = +·¿ms +-> +lšk_id +; + +1087 +ušt32_t + + g +; + +1088 +ušt8_t + + gv6 +[16]; + +1089 ià( + g·¿ms +-> + g +. + gçmžy + =ð +AF_INET +) + +1090 + + = +¹e_bsw­32 +(( +ušt32_t +è +·¿ms +->. +addr +. +v4 +. +s_addr +); + +1092 +memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +1094 +ušt32_t + + gd•th + = +·¿ms +-> +d•th +; + +1096 ià( + g·¿ms +-> + g +. + gçmžy + =ð +AF_INET +) + +1097 +¡©us + = +­p_lšk_cÚfig +( +­p +, +lšk_id +, + +, +d•th +); + +1099 + g¡©us + = +­p_lšk_cÚfig_v6 +( +­p +, +lšk_id +, +v6 +, +d•th +); + +1101 ià( + g¡©us +) + +1102 +´štf +("Command failed\n"); + +1104  +­p_lšk_·¿ms + * + gp +; + +1106 +APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +1107 ià( + gp +) + +1108 +´št_lšk_šfo +( +p +); + +1112 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_cÚfig_lšk_¡ršg + = + +1113 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_cÚfig_»suÉ +, +lšk_¡ršg +, + +1116 +cmdlše_·r£_tok’_num_t + + gcmd_lšk_cÚfig_lšk_id + = + +1117 +TOKEN_NUM_INITIALIZER +( +cmd_lšk_cÚfig_»suÉ +, +lšk_id +, +UINT32 +); + +1119 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_cÚfig_cÚfig_¡ršg + = + +1120 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_cÚfig_»suÉ +, +cÚfig_¡ršg +, + +1123 +cmdlše_·r£_tok’_addr_t + + gcmd_lšk_cÚfig_ + = + +1124 +TOKEN_IPADDR_INITIALIZER +( +cmd_lšk_cÚfig_»suÉ +, + +); + +1126 +cmdlše_·r£_tok’_num_t + + gcmd_lšk_cÚfig_d•th + = + +1127 +TOKEN_NUM_INITIALIZER +( +cmd_lšk_cÚfig_»suÉ +, +d•th +, +UINT32 +); + +1129 +cmdlše_·r£_š¡_t + + gcmd_lšk_cÚfig + = { + +1130 . +f + = +cmd_lšk_cÚfig_·r£d +, + +1131 . + gd©a + = +NULL +, + +1132 . + gh–p_¡r + = "Link configuration", + +1133 . + gtok’s + = { + +1134 (*)& +cmd_lšk_cÚfig_lšk_¡ršg +, + +1135 (*)& +cmd_lšk_cÚfig_lšk_id +, + +1136 (*)& +cmd_lšk_cÚfig_cÚfig_¡ršg +, + +1137 (*)& +cmd_lšk_cÚfig_ +, + +1138 (*)& +cmd_lšk_cÚfig_d•th +, + +1139 +NULL +, + +1147  + scmd_lšk_up_»suÉ + { + +1148 +cmdlše_fixed_¡ršg_t + + mlšk_¡ršg +; + +1149 +ušt32_t + + mlšk_id +; + +1150 +cmdlše_fixed_¡ršg_t + + mup_¡ršg +; + +1154 +cmd_lšk_up_·r£d +( + +1155 * +·r£d_»suÉ +, + +1156 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +1157 * +d©a +) + +1159  +cmd_lšk_up_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1160  +­p_·¿ms + * + g­p + = +d©a +; + +1161  + g¡©us +; + +1163 + g¡©us + = +­p_lšk_up +( +­p +, +·¿ms +-> +lšk_id +); + +1164 ià( + g¡©us + != 0) + +1165 +´štf +("Command failed\n"); + +1167  +­p_lšk_·¿ms + * + gp +; + +1169 +APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +·¿ms +-> +lšk_id +, + +1170 +p +); + +1171 ià( + gp +) + +1172 +´št_lšk_šfo +( +p +); + +1176 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_up_lšk_¡ršg + = + +1177 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_up_»suÉ +, +lšk_¡ršg +, + +1180 +cmdlše_·r£_tok’_num_t + + gcmd_lšk_up_lšk_id + = + +1181 +TOKEN_NUM_INITIALIZER +( +cmd_lšk_up_»suÉ +, +lšk_id +, +UINT32 +); + +1183 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_up_up_¡ršg + = + +1184 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_up_»suÉ +, +up_¡ršg +, "up"); + +1186 +cmdlše_·r£_š¡_t + + gcmd_lšk_up + = { + +1187 . +f + = +cmd_lšk_up_·r£d +, + +1188 . + gd©a + = +NULL +, + +1189 . + gh–p_¡r + = "Link UP", + +1190 . + gtok’s + = { + +1191 (*)& +cmd_lšk_up_lšk_¡ršg +, + +1192 (*)& +cmd_lšk_up_lšk_id +, + +1193 (*)& +cmd_lšk_up_up_¡ršg +, + +1194 +NULL +, + +1202  + scmd_lšk_down_»suÉ + { + +1203 +cmdlše_fixed_¡ršg_t + + mlšk_¡ršg +; + +1204 +ušt32_t + + mlšk_id +; + +1205 +cmdlše_fixed_¡ršg_t + + mdown_¡ršg +; + +1209 +cmd_lšk_down_·r£d +( + +1210 * +·r£d_»suÉ +, + +1211 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +1212 * +d©a +) + +1214  +cmd_lšk_down_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1215  +­p_·¿ms + * + g­p + = +d©a +; + +1216  + g¡©us +; + +1218 + g¡©us + = +­p_lšk_down +( +­p +, +·¿ms +-> +lšk_id +); + +1219 ià( + g¡©us + != 0) + +1220 +´štf +("Command failed\n"); + +1222  +­p_lšk_·¿ms + * + gp +; + +1224 +APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +·¿ms +-> +lšk_id +, + +1225 +p +); + +1226 ià( + gp +) + +1227 +´št_lšk_šfo +( +p +); + +1231 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_down_lšk_¡ršg + = + +1232 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_down_»suÉ +, +lšk_¡ršg +, + +1235 +cmdlše_·r£_tok’_num_t + + gcmd_lšk_down_lšk_id + = + +1236 +TOKEN_NUM_INITIALIZER +( +cmd_lšk_down_»suÉ +, +lšk_id +, +UINT32 +); + +1238 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_down_down_¡ršg + = + +1239 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_down_»suÉ +, +down_¡ršg +, + +1242 +cmdlše_·r£_š¡_t + + gcmd_lšk_down + = { + +1243 . +f + = +cmd_lšk_down_·r£d +, + +1244 . + gd©a + = +NULL +, + +1245 . + gh–p_¡r + = "Link DOWN", + +1246 . + gtok’s + = { + +1247 (*è& +cmd_lšk_down_lšk_¡ršg +, + +1248 (*è& +cmd_lšk_down_lšk_id +, + +1249 (*è& +cmd_lšk_down_down_¡ršg +, + +1250 +NULL +, + +1258  + scmd_lšk_ls_»suÉ + { + +1259 +cmdlše_fixed_¡ršg_t + + mlšk_¡ršg +; + +1260 +cmdlše_fixed_¡ršg_t + + mls_¡ršg +; + +1264 +cmd_lšk_ls_·r£d +( + +1265 +__©Œibu‹__ +(( +unu£d +)è* +·r£d_»suÉ +, + +1266 +__©Œibu‹__ +(( +unu£d +)è +cmdlše + * +þ +, + +1267 * +d©a +) + +1269  +­p_·¿ms + * + g­p + = +d©a +; + +1270 +ušt32_t + + glšk_id +; + +1272  + glšk_id + = 0;†šk_id < + g­p +-> + gn_lšks +;†ink_id++) { + +1273  +­p_lšk_·¿ms + * + gp +; + +1275 +APP_PARAM_FIND_BY_ID +( +­p +-> +lšk_·¿ms +, "LINK", +lšk_id +, +p +); + +1276 ià( + gp +) + +1277 +´št_lšk_šfo +( +p +); + +1279 #iâdeà +VNF_ACL + + +1280 +´št_š‹rçû_d‘ažs +(); + +1284 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_ls_lšk_¡ršg + = + +1285 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_ls_»suÉ +, +lšk_¡ršg +, + +1288 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_lšk_ls_ls_¡ršg + = + +1289 +TOKEN_STRING_INITIALIZER +( +cmd_lšk_ls_»suÉ +, +ls_¡ršg +, "ls"); + +1291 +cmdlše_·r£_š¡_t + + gcmd_lšk_ls + = { + +1292 . +f + = +cmd_lšk_ls_·r£d +, + +1293 . + gd©a + = +NULL +, + +1294 . + gh–p_¡r + = "Link†ist", + +1295 . + gtok’s + = { + +1296 (*)& +cmd_lšk_ls_lšk_¡ršg +, + +1297 (*)& +cmd_lšk_ls_ls_¡ršg +, + +1298 +NULL +, + +1306  + scmd_qu™_»suÉ + { + +1307 +cmdlše_fixed_¡ršg_t + + mqu™ +; + +1311 + $cmd_qu™_·r£d +( + +1312 +__¹e_unu£d + * +·r£d_»suÉ +, + +1313  +cmdlše + * +þ +, + +1314 +__¹e_unu£d + * +d©a +) + +1316 + `cmdlše_qu™ +( +þ +); + +1317 + } +} + +1319  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_qu™_qu™ + = + +1320 +TOKEN_STRING_INITIALIZER +( +cmd_qu™_»suÉ +, +qu™ +, "quit"); + +1322  +cmdlše_·r£_š¡_t + + gcmd_qu™ + = { + +1323 . +f + = +cmd_qu™_·r£d +, + +1324 . + gd©a + = +NULL +, + +1325 . + gh–p_¡r + = "Quit", + +1326 . + gtok’s + = { + +1327 (*è& +cmd_qu™_qu™ +, + +1328 +NULL +, + +1337 + $­p_run_fže +( + +1338 +cmdlše_·r£_ùx_t + * +ùx +, + +1339 cÚ¡ * +fže_Çme +) + +1341  +cmdlše + * +fže_þ +; + +1342  +fd +; + +1344 +fd + = + `ݒ +( +fže_Çme +, +O_RDONLY +); + +1345 ià( +fd + < 0) { + +1346 + `´štf +("CªnÙ o³Àfž\"%s\"\n", +fže_Çme +); + +1350 +fže_þ + = + `cmdlše_Ãw +( +ùx +, "", +fd +, 1); + +1351 + `cmdlše_š‹¿ù +( +fže_þ +); + +1352 + `þo£ +( +fd +); + +1353 + } +} + +1355  + scmd_run_fže_»suÉ + { + +1356 +cmdlše_fixed_¡ršg_t + + mrun_¡ršg +; + +1357  + mfže_Çme +[ +APP_FILE_NAME_SIZE +]; + +1361 +cmd_run_·r£d +( + +1362 * +·r£d_»suÉ +, + +1363  +cmdlše + * +þ +, + +1364 +__©Œibu‹__ +(( +unu£d +)è* +d©a +) + +1366  +cmd_run_fže_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1368 +­p_run_fže +( +þ +-> +ùx +, +·¿ms +-> +fže_Çme +); + +1371 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_run_run_¡ršg + = + +1372 +TOKEN_STRING_INITIALIZER +( +cmd_run_fže_»suÉ +, +run_¡ršg +, + +1375 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_run_fže_Çme + = + +1376 +TOKEN_STRING_INITIALIZER +( +cmd_run_fže_»suÉ +, +fže_Çme +, +NULL +); + +1378 +cmdlše_·r£_š¡_t + + gcmd_run + = { + +1379 . +f + = +cmd_run_·r£d +, + +1380 . + gd©a + = +NULL +, + +1381 . + gh–p_¡r + = "Run CLI script file", + +1382 . + gtok’s + = { + +1383 (*è& +cmd_run_run_¡ršg +, + +1384 (*è& +cmd_run_fže_Çme +, + +1385 +NULL +, + +1389  +cmdlše_·r£_ùx_t + + gp–še_commÚ_cmds +[] = { + +1390 ( +cmdlše_·r£_š¡_t + *è& +cmd_qu™ +, + +1391 ( +cmdlše_·r£_š¡_t + *è& +cmd_run +, + +1393 ( +cmdlše_·r£_š¡_t + *è& +cmd_lšk_cÚfig +, + +1394 ( +cmdlše_·r£_š¡_t + *è& +cmd_lšk_up +, + +1395 ( +cmdlše_·r£_š¡_t + *è& +cmd_lšk_down +, + +1396 ( +cmdlše_·r£_š¡_t + *è& +cmd_lšk_ls +, + +1398 ( +cmdlše_·r£_š¡_t + *è& +cmd_pšg +, + +1399 ( +cmdlše_·r£_š¡_t + *è& +cmd_¡©s_pÜt_š +, + +1400 ( +cmdlše_·r£_š¡_t + *è& +cmd_¡©s_pÜt_out +, + +1401 ( +cmdlše_·r£_š¡_t + *è& +cmd_¡©s_bË +, + +1402 ( +cmdlše_·r£_š¡_t + *è& +cmd_pÜt_š_’abË +, + +1403 ( +cmdlše_·r£_š¡_t + *è& +cmd_pÜt_š_di§bË +, + +1404 +NULL +, + +1408 + $­p_p–še_commÚ_cmd_push +( +­p_·¿ms + * +­p +) + +1410 +ušt32_t + +n_cmds +, +i +; + +1413 +n_cmds + = + `RTE_DIM +( +p–še_commÚ_cmds +) - 1; + +1414 ià( +n_cmds + > +APP_MAX_CMDS + - +­p +->n_cmds) + +1415  - +ENOMEM +; + +1418 + `memýy +(& +­p +-> +cmds +[­p-> +n_cmds +], + +1419 +p–še_commÚ_cmds +, + +1420 +n_cmds + * ( +cmdlše_·r£_ùx_t +)); + +1422  +i + = 0; i < +n_cmds +; i++) + +1423 +­p +-> +cmds +[­p-> +n_cmds + + +i +]-> +d©a + =‡pp; + +1425 +­p +-> +n_cmds + +=‚_cmds; + +1426 +­p +-> +cmds +[­p-> +n_cmds +] = +NULL +; + +1429 + } +} + + @VIL/pipeline_common/pipeline_common_fe.h + +17 #iâdeà +__INCLUDE_PIPELINE_COMMON_FE_H__ + + +18  + #__INCLUDE_PIPELINE_COMMON_FE_H__ + + + ) + +20  + ~<¹e_commÚ.h +> + +21  + ~<¹e_cyþes.h +> + +22  + ~<¹e_m®loc.h +> + +23  + ~ + +25  + ~"p–še_commÚ_be.h +" + +26  + ~"p–še.h +" + +27  + ~"­p.h +" + +29 #iâdeà +MSG_TIMEOUT_DEFAULT + + +30  + #MSG_TIMEOUT_DEFAULT + 1000 + + ) + +32  +­p_lšk_·¿ms + + gmylšk +[ +APP_MAX_LINKS +]; + +33  +šlše +  +­p_p–še_d©a + * + +34 + $­p_p–še_d©a +( +­p_·¿ms + * +­p +, +ušt32_t + +id +) + +36  +­p_p–še_·¿ms + * +·¿ms +; + +38 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, "PIPELINE", +id +, +·¿ms +); + +39 ià( +·¿ms + =ð +NULL +) + +40  +NULL +; + +42  & +­p +-> +p–še_d©a +[ +·¿ms + -‡µ-> +p–še_·¿ms +]; + +43 + } +} + +45  +šlše + * + +46 + $­p_p–še_d©a_ã +( +­p_·¿ms + * +­p +, +ušt32_t + +id +,  +p–še_ty³ + * +±y³ +) + +48  +­p_p–še_d©a + * +p–še_d©a +; + +50 +p–še_d©a + = + `­p_p–še_d©a +( +­p +, +id +); + +51 ià( +p–še_d©a + =ð +NULL +) + +52  +NULL +; + +54 ià( + `¡rcmp +( +p–še_d©a +-> +±y³ +-> +Çme +,…type->name) != 0) + +55  +NULL +; + +57 ià( +p–še_d©a +-> +’abËd + == 0) + +58  +NULL +; + +60  +p–še_d©a +-> +ã +; + +61 + } +} + +63  +šlše +  +¹e_ršg + * + +64 + $­p_p–še_msgq_š_g‘ +( +­p_·¿ms + * +­p +, + +65 +ušt32_t + +p–še_id +) + +67  +­p_msgq_·¿ms + * +p +; + +69 + `APP_PARAM_FIND_BY_ID +( +­p +-> +msgq_·¿ms +, + +71 +p–še_id +, + +72 +p +); + +73 ià( +p + =ð +NULL +) + +74  +NULL +; + +76  +­p +-> +msgq +[ +p + -‡µ-> +msgq_·¿ms +]; + +77 + } +} + +79  +šlše +  +¹e_ršg + * + +80 + $­p_p–še_msgq_out_g‘ +( +­p_·¿ms + * +­p +, + +81 +ušt32_t + +p–še_id +) + +83  +­p_msgq_·¿ms + * +p +; + +85 + `APP_PARAM_FIND_BY_ID +( +­p +-> +msgq_·¿ms +, + +87 +p–še_id +, + +88 +p +); + +89 ià( +p + =ð +NULL +) + +90  +NULL +; + +92  +­p +-> +msgq +[ +p + -‡µ-> +msgq_·¿ms +]; + +93 + } +} + +95  +šlše + * + +96 + $­p_msg_®loc +( +__¹e_unu£d +  +­p_·¿ms + * +­p +) + +98  + `¹e_m®loc +( +NULL +, 2048, +RTE_CACHE_LINE_SIZE +); + +99 + } +} + +101  +šlše +  + +102 + $­p_msg_ä“ +( +__¹e_unu£d +  +­p_·¿ms + * +­p +, + +103 * +msg +) + +105 + `¹e_ä“ +( +msg +); + +106 + } +} + +108  +šlše +  + +109 + $­p_msg_£nd +( +­p_·¿ms + * +­p +, + +110 +ušt32_t + +p–še_id +, + +111 * +msg +) + +113  +¹e_ršg + * +r + = + `­p_p–še_msgq_š_g‘ +( +­p +, +p–še_id +); + +114  +¡©us +; + +117 +¡©us + = + `¹e_ršg_¥_’queue +( +r +, +msg +); + +118 }  +¡©us + =ð- +ENOBUFS +); + +119 + } +} + +121  +šlše + * + +122 + $­p_msg_»cv +( +­p_·¿ms + * +­p +, + +123 +ušt32_t + +p–še_id +) + +125  +¹e_ršg + * +r + = + `­p_p–še_msgq_out_g‘ +( +­p +, +p–še_id +); + +126 * +msg +; + +127  +¡©us + = + `¹e_ršg_sc_dequeue +( +r +, & +msg +); + +129 ià( +¡©us + != 0) + +130  +NULL +; + +132  +msg +; + +133 + } +} + +135  +šlše + * + +136 + $­p_msg_£nd_»cv +( +­p_·¿ms + * +­p +, + +137 +ušt32_t + +p–še_id +, + +138 * +msg +, + +139 +ušt32_t + +timeout_ms +) + +141  +¹e_ršg + * +r_»q + = + `­p_p–še_msgq_š_g‘ +( +­p +, +p–še_id +); + +142  +¹e_ršg + * +r_r¥ + = + `­p_p–še_msgq_out_g‘ +( +­p +, +p–še_id +); + +143 +ušt64_t + +hz + = + `¹e_g‘_tsc_hz +(); + +144 * +msg_»cv + = +NULL +; + +145 +ušt64_t + +d—dlše +; + +146  +¡©us + = 0; + +150 if( +r_»q +) + +151 +¡©us + = + `¹e_ršg_¥_’queue +( +r_»q +, (*è +msg +); + +152 }  +¡©us + =ð- +ENOBUFS +); + +155 +d—dlše + = ( +timeout_ms +) ? + +156 ( + `¹e_rdtsc +(è+ (( +hz + * +timeout_ms +) / 1000)) : + +157 +UINT64_MAX +; + +160 ià( + `¹e_rdtsc +(è> +d—dlše +) + +161  +NULL +; + +162 ià( +r_r¥ +) + +163 +¡©us + = + `¹e_ršg_sc_dequeue +( +r_r¥ +, & +msg_»cv +); + +164 }  +¡©us + != 0); + +166  +msg_»cv +; + +167 + } +} + +170 +­p_p–še_pšg +( +­p_·¿ms + * +­p +, + +171 +ušt32_t + +p–še_id +); + +174 +­p_p–še_¡©s_pÜt_š +( +­p_·¿ms + * +­p +, + +175 +ušt32_t + +p–še_id +, + +176 +ušt32_t + +pÜt_id +, + +177  +¹e_p–še_pÜt_š_¡©s + * +¡©s +); + +180 +­p_p–še_¡©s_pÜt_out +( +­p_·¿ms + * +­p +, + +181 +ušt32_t + +p–še_id +, + +182 +ušt32_t + +pÜt_id +, + +183  +¹e_p–še_pÜt_out_¡©s + * +¡©s +); + +186 +­p_p–še_¡©s_bË +( +­p_·¿ms + * +­p +, + +187 +ušt32_t + +p–še_id +, + +188 +ušt32_t + +bË_id +, + +189  +¹e_p–še_bË_¡©s + * +¡©s +); + +192 +­p_p–še_pÜt_š_’abË +( +­p_·¿ms + * +­p +, + +193 +ušt32_t + +p–še_id +, + +194 +ušt32_t + +pÜt_id +); + +197 +­p_p–še_pÜt_š_di§bË +( +­p_·¿ms + * +­p +, + +198 +ušt32_t + +p–še_id +, + +199 +ušt32_t + +pÜt_id +); + +202 +­p_lšk_cÚfig +( +­p_·¿ms + * +­p +, + +203 +ušt32_t + +lšk_id +, + +204 +ušt32_t + + +, + +205 +ušt32_t + +d•th +); + +208 +­p_lšk_up +( +­p_·¿ms + * +­p +, + +209 +ušt32_t + +lšk_id +); + +212 +­p_lšk_down +( +­p_·¿ms + * +­p +, + +213 +ušt32_t + +lšk_id +); + +216 +­p_p–še_commÚ_cmd_push +( +­p_·¿ms + * +­p +); + +219  +cÚv”t_´efixËn_to_Ãtmask_v6 +( +ušt32_t + +d•th +, +ušt8_t + +Ãtmask_v6 +[]); + +222 +g‘_ho¡_pÜtiÚ_v6 +( +ušt8_t + +v6 +[], ušt8_ˆ +Ãtmask +[], ušt8_ˆ +ho¡_v6 +[]); + +225 +g‘_bÿ¡_pÜtiÚ_v6 +( +ušt8_t + +ho¡ +[], ušt8_ˆ +Ãtmask +[], ušt8_ˆ +bÿ¡_v6 +[]); + +228 +­p_lšk_cÚfig_v6 +( +­p_·¿ms + * +­p +, + +229 +ušt32_t + +lšk_id +, +ušt8_t + +v6 +[], ušt32_ˆ +d•th +); + + @VIL/pipeline_loadb/pipeline_loadb.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"­p.h +" + +24  + ~"p–še_commÚ_ã.h +" + +25  + ~"p–še_lßdb.h +" + +26  + ~"vnf_commÚ.h +" + +28  + ~"p–še_¬picmp_be.h +" + +32 + $­p_p–še_lßdb_’Œy_dbg +( +­p_·¿ms + * +­p +, + +33 +ušt32_t + +p–še_id +, +ušt8_t + * +msg +) + +35  +p–še_lßdb_’Œy_dbg_msg_»q + * +»q +; + +36  +p–še_lßdb_’Œ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 +-> +d©a +[0] = +msg +[0]; + +50 +»q +-> +d©a +[1] = +msg +[1]; + +52 +r¥ + = + `­p_msg_£nd_»cv +( +­p +, +p–še_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 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +75 +ušt32_t + + mp +; + +76 +cmdlše_fixed_¡ršg_t + + m’Œy_¡ršg +; + +77 +cmdlše_fixed_¡ršg_t + + mdbg_¡ršg +; + +78 +ušt8_t + + mcmd +; + +79 +ušt8_t + + md1 +; + +83 + $cmd_’Œy_dbg_·r£d +(* +·r£d_»suÉ +, + +84 +__¹e_unu£d +  +cmdlše + * +þ +, * +d©a +) + +86  +cmd_’Œy_dbg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +87  +­p_·¿ms + * +­p + = +d©a +; + +88 +ušt8_t + +msg +[2]; + +89  +¡©us +; + +91 +msg +[0] = +·¿ms +-> +cmd +; + +92 +msg +[1] = +·¿ms +-> +d1 +; + +93 +¡©us + = + `­p_p–še_lßdb_’Œy_dbg +( +­p +, +·¿ms +-> +p +, +msg +); + +95 ià( +¡©us + != 0) { + +96 + `´štf +("Dbg Command failed\n"); + +99 + } +} + +101  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_p_¡ršg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p_¡ršg +, "p"); + +104  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p +, +UINT32 +); + +107  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_’Œy_¡ršg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, + +109 +’Œy_¡ršg +, "lbentry"); + +111  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_dbg_¡ršg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +dbg_¡ršg +, + +115  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +cmd +, +UINT8 +); + +118  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +d1 +, +UINT8 +); + +121  +cmdlše_·r£_š¡_t + + glb_cmd_’Œy_dbg + = { + +122 . +f + = +cmd_’Œy_dbg_·r£d +, + +123 . + gd©a + = +NULL +, + +124 . + gh–p_¡r + = "LOADB dbg cmd", + +125 . + gtok’s + = { + +126 (*)& +lb_cmd_’Œy_dbg_p_¡ršg +, + +127 (*)& +lb_cmd_’Œy_dbg_p +, + +128 (*)& +lb_cmd_’Œy_dbg_’Œy_¡ršg +, + +129 (*)& +lb_cmd_’Œy_dbg_dbg_¡ršg +, + +130 (*)& +lb_cmd_’Œy_dbg_cmd +, + +131 (*)& +lb_cmd_’Œy_dbg_d1 +, + +132 +NULL +, + +162  + scmd_¬p_add_»suÉ + { + +163 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +164 +ušt32_t + + mp +; + +165 +cmdlše_fixed_¡ršg_t + + m¬·dd_¡ršg +; + +166 +ušt32_t + + mpÜt_id +; + +167 +cmdlše_addr_t + + m +; + +168  +‘h”_addr + + mmaÿddr +; + +173 + $cmd_¬p_add_·r£d +(* +·r£d_»suÉ +, + +174 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +176  +cmd_¬p_add_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +177 +ušt8_t + +v6 +[16]; + +186 ià( +·¿ms +-> + +. +çmžy + =ð +AF_INET +) { + +187 + `pÝuϋ_¬p_’Œy +(& +·¿ms +-> +maÿddr +, + +188 + `¹e_ýu_to_be_32 +( +·¿ms +-> + +. +addr +. + +189 +v4 +. +s_addr +), + +190 +·¿ms +-> +pÜt_id +, +STATIC_ARP +); + +192 + `memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +193 + `pÝuϋ_nd_’Œy +(& +·¿ms +-> +maÿddr +, +v6 +,…¬ams-> +pÜt_id +, +STATIC_ND +); + +195 + } +} + +197  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_add_p_¡ršg + = + +198 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p_¡ršg +, + +201  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_add_p + = + +202 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p +, +UINT32 +); + +204  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_add_¬p_¡ršg + = + +205 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +¬·dd_¡ršg +, "arpadd"); + +207  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_add_pÜt_id + = + +208 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +pÜt_id +, +UINT32 +); + +210  +cmdlše_·r£_tok’_addr_t + + gcmd_¬p_add_ + = + +211 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, + +); + +213  +cmdlše_·r£_tok’_‘h”addr_t + + gcmd_¬p_add_maÿddr + = + +214 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, +maÿddr +); + +216  +cmdlše_·r£_š¡_t + + gcmd_¬p_add + = { + +217 . +f + = +cmd_¬p_add_·r£d +, + +218 . + gd©a + = +NULL +, + +219 . + gh–p_¡r + = "ARP‡dd", + +220 . + gtok’s + = { + +221 (*)& +cmd_¬p_add_p_¡ršg +, + +222 (*)& +cmd_¬p_add_p +, + +223 (*)& +cmd_¬p_add_¬p_¡ršg +, + +224 (*)& +cmd_¬p_add_pÜt_id +, + +225 (*)& +cmd_¬p_add_ +, + +226 (*)& +cmd_¬p_add_maÿddr +, + +227 +NULL +, + +235  + scmd_¬p_d–_»suÉ + { + +236 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +237 +ušt32_t + + mp +; + +238 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +239 +ušt32_t + + mpÜt_id +; + +240 +cmdlše_addr_t + + m +; + +244 + $cmd_¬p_d–_·r£d +(* +·r£d_»suÉ +, + +245 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +247  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +248 +ušt8_t + +v6 +[16]; + +257 ià( +·¿ms +-> + +. +çmžy + =ð +AF_INET +) { + +258 + `»move_¬p_’Œy +( + `¹e_ýu_to_be_32 +( +·¿ms +-> + +. +addr +. +v4 +. +s_addr +), + +259 +·¿ms +-> +pÜt_id +, +NULL +); + +261 + `memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +262 + `»move_nd_’Œy_v6 +( +v6 +, +·¿ms +-> +pÜt_id +); + +264 + } +} + +266  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_d–_p_¡ršg + = + +267 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +p_¡ršg +, + +270  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_d–_p + = + +271 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +p +, +UINT32 +); + +273  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_d–_¬p_¡ršg + = + +274 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "arpdel"); + +276  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_d–_pÜt_id + = + +277 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +pÜt_id +, +UINT32 +); + +279  +cmdlše_·r£_tok’_addr_t + + gcmd_¬p_d–_ + = + +280 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_d–_»suÉ +, + +); + +282  +cmdlše_·r£_š¡_t + + gcmd_¬p_d– + = { + +283 . +f + = +cmd_¬p_d–_·r£d +, + +284 . + gd©a + = +NULL +, + +285 . + gh–p_¡r + = "ARP delete", + +286 . + gtok’s + = { + +287 (*)& +cmd_¬p_d–_p_¡ršg +, + +288 (*)& +cmd_¬p_d–_p +, + +289 (*)& +cmd_¬p_d–_¬p_¡ršg +, + +290 (*)& +cmd_¬p_d–_pÜt_id +, + +291 (*)& +cmd_¬p_d–_ +, + +292 +NULL +, + +303 + $cmd_¬p_»q_·r£d +(* +·r£d_»suÉ +, + +304 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +306  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +309  +¬p_key_v4 + +key +; + +315 +key +. + + = + `¹e_ýu_to_be_32 +( +·¿ms +->. +addr +. +v4 +. +s_addr +); + +316 +key +. +pÜt_id + = +·¿ms +->port_id; + +317 +key +. +fžËr1 + = 0; + +318 +key +. +fžËr2 + = 0; + +319 +key +. +fžËr3 + = 0; + +321  +¬p_’Œy_d©a + * +¬p_d©a + = + `»Œ›ve_¬p_’Œy +( +key +); + +323 ià( +¬p_d©a +) { + +324 ià( +ARPICMP_DEBUG +) + +325 + `´štf +("ARPƒntryƒxists for ip 0x%x,…ort %d\n", + +326 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +330 ià( +ARPICMP_DEBUG +) + +331 + `´štf +("ARP -„equesting‡rp for ip 0x%x,…ort %d\n", + +332 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +333 + `»que¡_¬p +( +·¿ms +-> +pÜt_id +,…¬ams-> + +. +addr +. +v4 +. +s_addr +); + +335 + } +} + +337  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_»q_¡ršg + = + +338 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "arpreq"); + +340  +cmdlše_·r£_š¡_t + + gcmd_¬p_»q + = { + +341 . +f + = +cmd_¬p_»q_·r£d +, + +342 . + gd©a + = +NULL +, + +343 . + gh–p_¡r + = "ARP„equest", + +344 . + gtok’s + = { + +345 (*)& +cmd_¬p_d–_p_¡ršg +, + +346 (*)& +cmd_¬p_d–_p +, + +347 (*)& +cmd_¬p_»q_¡ršg +, + +348 (*)& +cmd_¬p_d–_pÜt_id +, + +349 (*)& +cmd_¬p_d–_ +, + +350 +NULL +, + +361 + $cmd_icmp_echo_»q_·r£d +(* +·r£d_»suÉ +, + +362 +__¹e_unu£d +  +cmdlše + * +þ +, + +363 +__¹e_unu£d + * +d©a +) + +365  +cmd_¬p_d–_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +366  +¹e_mbuf + * +pkt +; + +367 +l2_phy_š‹rçû_t + * +pÜt + = (l2_phy_š‹rçû_ˆ*è + `ifm_g‘_pÜt +(( +ušt8_t +) +·¿ms +-> +pÜt_id +); + +369 ià( +ARPICMP_DEBUG +) + +370 + `´štf +("Echo Req Handler ip %x,…ort %d\n", + +371 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +,…¬ams-> +pÜt_id +); + +373 +pkt + = + `»que¡_echo +( +·¿ms +-> +pÜt_id +,…¬ams-> + +. +addr +. +v4 +. +s_addr +); + +374 +pÜt +-> + `Œªsm™_sšgË_pkt +ÕÜt, +pkt +); + +375 + } +} + +377  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_icmp_echo_»q_¡ršg + = + +378 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d–_»suÉ +, +¬p_¡ršg +, "icmpecho"); + +380  +cmdlše_·r£_š¡_t + + gcmd_icmp_echo_»q + = { + +381 . +f + = +cmd_icmp_echo_»q_·r£d +, + +382 . + gd©a + = +NULL +, + +383 . + gh–p_¡r + = "ICMPƒcho„equest", + +384 . + gtok’s + = { + +385 (*)& +cmd_¬p_d–_p_¡ršg +, + +386 (*)& +cmd_¬p_d–_p +, + +387 (*)& +cmd_icmp_echo_»q_¡ršg +, + +388 (*)& +cmd_¬p_d–_pÜt_id +, + +389 (*)& +cmd_¬p_d–_ +, + +390 +NULL +, + +398  + scmd_¬p_ls_»suÉ + { + +399 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +400 +ušt32_t + + mp +; + +401 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +405 + $cmd_¬p_ls_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +406 +__¹e_unu£d +  +cmdlše + * +þ +, __¹e_unu£d * +d©a +) + +408 + `´štf +("\nARPable ...\n"); + +409 + `´štf +("-------------\n"); + +410 + `´št_¬p_bË +(); + +412 +´štf + + +415 + `´štf +("\nND IPv6able:\n"); + +416 + `´štf +("--------------\n"); + +417 + `´št_nd_bË +(); + +418 + } +} + +420  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_ls_p_¡ršg + = + +421 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p_¡ršg +, + +424  +cmdlše_·r£_tok’_num_t + + gcmd_¬p_ls_p + = + +425 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p +, +UINT32 +); + +427  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_¬p_ls_¬p_¡ršg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡ršg +, + +431  +cmdlše_·r£_š¡_t + + gcmd_¬p_ls + = { + +432 . +f + = +cmd_¬p_ls_·r£d +, + +433 . + gd©a + = +NULL +, + +434 . + gh–p_¡r + = "ARP†ist", + +435 . + gtok’s + = { + +436 (*)& +cmd_¬p_ls_p_¡ršg +, + +437 (*)& +cmd_¬p_ls_p +, + +438 (*)& +cmd_¬p_ls_¬p_¡ršg +, + +439 +NULL +, + +447  + scmd_show_pÜts_šfo_»suÉ + { + +448 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +449 +ušt32_t + + mp +; + +450 +cmdlše_fixed_¡ršg_t + + m¬p_¡ršg +; + +454 + $cmd_show_pÜts_šfo_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +455 +__¹e_unu£d +  +cmdlše + * +þ +, + +456 +__¹e_unu£d + * +d©a +) + +458 + `show_pÜts_šfo +(); + +459 + } +} + +461  +cmdlše_·r£_tok’_¡ršg_t + + gcmd_show_pÜts_šfo_¡ršg + = + +462 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡ršg +, + +465  +cmdlše_·r£_š¡_t + + gcmd_show_pÜts_šfo + = { + +466 . +f + = +cmd_show_pÜts_šfo_·r£d +, + +467 . + gd©a + = +NULL +, + +468 . + gh–p_¡r + = "show…orts info", + +469 . + gtok’s + = { + +470 (*)& +cmd_¬p_ls_p_¡ršg +, + +471 (*)& +cmd_¬p_ls_p +, + +472 (*)& +cmd_show_pÜts_šfo_¡ršg +, + +473 +NULL +, + +478  +cmdlše_·r£_ùx_t + + gp–še_cmds +[] = { + +479 ( +cmdlše_·r£_š¡_t + *è& +lb_cmd_’Œy_dbg +, + +480 +NULL +, + +483  +p–še_ã_Ýs + + gp–še_lßdb_ã_Ýs + = { + +484 . +f_š™ + = +NULL +, + +485 . + gf_ä“ + = +NULL +, + +486 . + gcmds + = +p–še_cmds +, + +489  +p–še_ty³ + + gp–še_lßdb + = { + +490 . +Çme + = "LOADB", + +491 . + gbe_Ýs + = & +p–še_lßdb_be_Ýs +, + +492 . + gã_Ýs + = & +p–še_lßdb_ã_Ýs +, + + @VIL/pipeline_loadb/pipeline_loadb.h + +17 #iâdeà +__INCLUDE_PIPELINE_LOADB_H__ + + +18  + #__INCLUDE_PIPELINE_LOADB_H__ + + + ) + +20  + ~"p–še.h +" + +21  + ~"p–še_lßdb_be.h +" + +27  +p–še_ty³ + +p–še_lßdb +; + + @VIL/pipeline_loadb/pipeline_loadb_be.c + +17  + ~<¡dio.h +> + +18  + ~<¡dlib.h +> + +19  + ~<¡dšt.h +> + +20  + ~<¡ršg.h +> + +21  + ~ + +23  + ~<¹e_commÚ.h +> + +24  + ~<¹e_m®loc.h +> + +25  + ~<¹e_.h +> + +26  + ~<¹e_hash.h +> + +27  + ~<¹e_by‹Üd”.h +> + +28  + ~<¹e_bË_Ím.h +> + +29  + ~<¹e_bË_hash.h +> + +30  + ~<¹e_jhash.h +> + +31  + ~<¹e_thash.h +> + +32  + ~<¹e_cyþes.h +> + +33  + ~<¹e_‘hdev.h +> + +34  + ~<¹e_´eãtch.h +> + +35  + ~<¹e_bË_¬¿y.h +> + +36  + ~"p–še_lßdb_be.h +" + +37  + ~"p–še_aùiÚs_commÚ.h +" + +38  + ~"hash_func.h +" + +39  + ~"p–še_¬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 +ušt8_t + + gLOADB_DEBUG +; + +51 +ušt8_t + + gtÙ®_vnf_th»ads +; + +52 +ušt32_t + + gphypÜt_off£t +; + +54  + sp–še_lßdb + { + +55  +p–še + + mp +; + +56 +p–še_msg_»q_hªdËr + + mcu¡om_hªdËrs +[ +PIPELINE_LOADB_MSG_REQS +]; + +58 +ušt8_t + + mn_vnf_th»ads +; + +59 +ušt8_t + + mn_lb_tu¶es +; + +60 +ušt32_t + + mouÜt_off£t +; + +61 +ušt64_t + + m»ûivedLBPktCouÁ +; + +62 +ušt64_t + + mdrݳdLBPktCouÁ +; + +63 +ušt8_t + + mlšks_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +64 +ušt8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +65 +ušt8_t + + mn_´v_Q +; + +66 +ušt8_t + + mn_pub_Q +; + +67 +ušt8_t + + mp–še_num +; + +68 } + g__¹e_ÿche_®igÃd +; + +70 +ušt8_t + + gdeçuÉ_rss_key +[] = { + +78 * +p–še_lßdb_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, + +79 * +msg +); + +81  +p–še_msg_»q_hªdËr + + ghªdËrs +[] = { + +82 [ +PIPELINE_MSG_REQ_PING +] = + +83 +p–še_msg_»q_pšg_hªdËr +, + +84 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +85 +p–še_msg_»q_¡©s_pÜt_š_hªdËr +, + +86 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +87 +p–še_msg_»q_¡©s_pÜt_out_hªdËr +, + +88 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +89 +p–še_msg_»q_¡©s_bË_hªdËr +, + +90 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +91 +p–še_msg_»q_pÜt_š_’abË_hªdËr +, + +92 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +93 +p–še_msg_»q_pÜt_š_di§bË_hªdËr +, + +94 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +95 +p–še_lßdb_msg_»q_cu¡om_hªdËr +, + +99 * +p–še_lßdb_msg_»q_’Œy_dbg_hªdËr +( +p–še + *, + +100 * +msg +); + +102  +p–še_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +103 [ +PIPELINE_LOADB_MSG_REQ_ENTRY_DBG +] = + +104 +p–še_lßdb_msg_»q_’Œy_dbg_hªdËr +, + +110  + slßdb_bË_’Œy + { + +111  +¹e_p–še_bË_’Œy + + mh—d +; + +112 } + g__¹e_ÿche_®igÃd +; + +114 * + $p–še_lßdb_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, * +msg +) + +116  +p–še_lßdb + * +p_lb + = (p–še_lßdb *) +p +; + +117  +p–še_cu¡om_msg_»q + * +»q + = +msg +; + +118 +p–še_msg_»q_hªdËr + +f_hªdË +; + +120 +f_hªdË + = ( +»q +-> +subty³ + < +PIPELINE_LOADB_MSG_REQS +) ? + +121 +p_lb +-> +cu¡om_hªdËrs +[ +»q +-> +subty³ +] : + +122 +p–še_msg_»q_šv®id_hªdËr +; + +124 ià( +f_hªdË + =ð +NULL +) + +125 +f_hªdË + = +p–še_msg_»q_šv®id_hªdËr +; + +127  + `f_hªdË +( +p +, +»q +); + +128 + } +} + +130 +ušt32_t + + glb_pkt_´št_couÁ +; + +132 +ušt8_t + + $ÿlcuϋ_lb_th»ad_´v +( +¹e_mbuf + * +pkt +, * +¬g +) + +134 +ušt32_t + +hash_key +[2], +hash_v4 +; + +135 +ušt32_t + +‹mp1 +, +‹mp2 +, +‹mp3 +; + +136 +ušt8_t + +th»ad +; + +137  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +138  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *è +­ +-> +p +; + +139 +ušt8_t + +Áh»ads + = +p_lßdb +-> +n_vnf_th»ads +; + +140  +¹e_thash_tu¶e + +tu¶e +; + +142 +ušt32_t + * +¤c_addr +; + +143 +ušt32_t + * +d¡_addr +; + +144 +ušt16_t + * +¤c_pÜt +; + +145 +ušt16_t + * +d¡_pÜt +; + +146 +ušt8_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 + = ( +ušt32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.src_addr; + +152 +d¡_addr + = ( +ušt32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.dst_addr; + +153 +¤c_pÜt + = & +lb_pkt +-> +v6_pÜt +.src_port; + +154 +d¡_pÜt + = & +lb_pkt +-> +v6_pÜt +.dst_port; + +155 +´ÙocÞ + = & +lb_pkt +-> +v6_pÜt +. +v6 +. +´Ùo +; + +157 +¤c_addr + = & +lb_pkt +-> +v4_pÜt +. +v4 +.src_addr; + +158 +d¡_addr + = & +lb_pkt +-> +v4_pÜt +. +v4 +.dst_addr; + +159 +¤c_pÜt + = & +lb_pkt +-> +v4_pÜt +.src_port; + +160 +d¡_pÜt + = & +lb_pkt +-> +v4_pÜt +.dst_port; + +161 +´ÙocÞ + = & +lb_pkt +-> +v4_pÜt +. +v4 +. +Ãxt_´Ùo_id +; + +164  +p_lßdb +-> +n_lb_tu¶es +) { + +169 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +‘h +. +‘h”_ty³ +è=ð +ETHER_TYPE_IPv6 +) + +170 +‹mp1 + = + `¹e_bsw­32 +( +d¡_addr +[3]è^ * +d¡_pÜt +; + +172 +‹mp1 + = * +d¡_addr + ^ * +d¡_pÜt +; + +174 +‹mp2 + = ( +‹mp1 + >> 24) ^ (temp1 >> 16) ^ + +175 ( +‹mp1 + >> 8) ^emp1; + +177 +‹mp3 + = ( +‹mp2 + >> 4) ^ (temp2 & 0xf); + +180 +th»ad + = +‹mp3 + % +Áh»ads +; + +182 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +183 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +184  +th»ad +; + +189 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +‘h +. +‘h”_ty³ +è=ð +ETHER_TYPE_IPv6 +) + +190 +hash_key +[0] = + `¹e_bsw­32 +( +d¡_addr +[3]); + +192 +hash_key +[0] = + `¹e_bsw­32 +(* +d¡_addr +); + +195 +hash_v4 + = + `¹e_jhash +(& +hash_key +[0], 4, 0); + +198 +th»ad + = ( +hash_v4 + % +Áh»ads +); + +201 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +202 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +204 ià( +LOADB_DEBUG + > 3) + +205 + `´štf +("thread: %u hash: %x hash_key: %x\n", + +206 +th»ad +, +hash_v4 +, +hash_key +[0]); + +207  +th»ad +; + +212 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +‘h +. +‘h”_ty³ +) == + +213 +ETHER_TYPE_IPv6 +) { + +214 +hash_key +[0] = + `¹e_bsw­32 +( +d¡_addr +[3]); + +215 +hash_key +[1] = * +d¡_pÜt + << 16; + +217 +hash_key +[0] = + `¹e_bsw­32 +(* +d¡_addr +); + +218 +hash_key +[1] = * +d¡_pÜt + << 16; + +221 +hash_v4 + = + `¹e_jhash +(& +hash_key +[0], 6, 0); + +224 +th»ad + = ( +hash_v4 + % +Áh»ads +); + +227 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +228 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +230 ià( +LOADB_DEBUG + > 3) { + +231 + `´štf +("public_addr: %x…ublic_port: %x\n", + +232 +hash_key +[0], * +d¡_pÜt +); + +233 + `´štf +("thread: %u hash: %x hash_key0: %x " + +234 "hash_key1: %x\n", +th»ad +, +hash_v4 +, + +235 +hash_key +[0], hash_key[1]); + +237  +th»ad +; + +240 + `´štf +("Inv®id‚_lb_tu¶es: %d\n", +p_lßdb +-> +n_lb_tu¶es +); + +245 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +‘h +. +‘h”_ty³ +) == + +246 +ETHER_TYPE_IPv6 +) { + +247 +tu¶e +. +v4 +. +¤c_addr + = + `¹e_bsw­32 +(src_addr[3]); + +248 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw­32 +(dst_addr[3]); + +249 +tu¶e +. +v4 +. +¥Üt + = * +¤c_pÜt +; + +250 +tu¶e +. +v4 +. +dpÜt + = * +d¡_pÜt +; + +252 +tu¶e +. +v4 +. +¤c_addr + = + `¹e_bsw­32 +(*src_addr); + +253 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw­32 +(*dst_addr); + +254 +tu¶e +. +v4 +. +¥Üt + = * +¤c_pÜt +; + +255 +tu¶e +. +v4 +. +dpÜt + = * +d¡_pÜt +; + +258 +hash_v4 + = + `¹e_soárss +(( +ušt32_t + *)& +tu¶e +, + +259 +RTE_THASH_V4_L4_LEN +, + +260 +deçuÉ_rss_key +); + +264 +th»ad + = ( +hash_v4 + % +Áh»ads +); + +267 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +268 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +270 ià( +LOADB_DEBUG + > 3) { + +271 + `´štf +("src_addr: %x dst_addr: %x src_port: %x " + +272 "d¡_pÜt: %x\n", +tu¶e +. +v4 +. +¤c_addr +,u¶e.v4. +d¡_addr +, + +273 +tu¶e +. +v4 +. +¥Üt +,u¶e.v4. +dpÜt +); + +274 + `´štf +("th»ad: %u hash: %x\n", +th»ad +, +hash_v4 +); + +277  +th»ad +; + +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_pÜt + ^ + +290 * +d¡_pÜt + ^ * +´ÙocÞ +; + +292 +‹mp2 + = ( +‹mp1 + >> 24) ^ (temp1 >> 16) ^ (temp1 >> 8) ^emp1; + +293 +‹mp3 + = ( +‹mp2 + >> 4) ^ (temp2 & 0xf); + +298 +th»ad + = ( +‹mp3 + % +Áh»ads +); + +301 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +302 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +304 ià( +LOADB_DEBUG + > 3) { + +305 + `´štf +("thread: %uemp1: %xemp2: %xemp3: %x\n", + +306 +th»ad +, +‹mp1 +, +‹mp2 +, +‹mp3 +); + +307 + `´štf +("src_addr: %x dst_addr: %x src_port: %x " + +308 "d¡_pÜt: %x…rÙocÞ: %x\n", * +¤c_addr +, * +d¡_addr +, + +309 * +¤c_pÜt +, * +d¡_pÜt +, * +´ÙocÞ +); + +311  +th»ad +; + +314 + `´štf +("Inv®id‚_lb_tu¶es: %d\n", +p_lßdb +-> +n_lb_tu¶es +); + +318 + } +} + +320 +ušt8_t + + $ÿlcuϋ_lb_th»ad_pub +( +¹e_mbuf + * +pkt +, * +¬g +) + +322 +ušt32_t + +hash_key +[2], +hash_v4 +; + +323 +ušt32_t + +‹mp1 +, +‹mp2 +, +‹mp3 +; + +324 +ušt8_t + +th»ad +; + +325  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +326  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *è +­ +-> +p +; + +327 +ušt8_t + +Áh»ads + = +p_lßdb +-> +n_vnf_th»ads +; + +328  +¹e_thash_tu¶e + +tu¶e +; + +330 +ušt32_t + * +¤c_addr +; + +331 +ušt32_t + * +d¡_addr +; + +332 +ušt16_t + * +¤c_pÜt +; + +333 +ušt16_t + * +d¡_pÜt +; + +334 +ušt8_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 + = ( +ušt32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.src_addr; + +341 +d¡_addr + = ( +ušt32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.dst_addr; + +342 +¤c_pÜt + = & +lb_pkt +-> +v6_pÜt +.src_port; + +343 +d¡_pÜt + = & +lb_pkt +-> +v6_pÜt +.dst_port; + +344 +´ÙocÞ + = & +lb_pkt +-> +v6_pÜt +. +v6 +. +´Ùo +; + +346 +¤c_addr + = & +lb_pkt +-> +v4_pÜt +. +v4 +.src_addr; + +347 +d¡_addr + = & +lb_pkt +-> +v4_pÜt +. +v4 +.dst_addr; + +348 +¤c_pÜt + = & +lb_pkt +-> +v4_pÜt +.src_port; + +349 +d¡_pÜt + = & +lb_pkt +-> +v4_pÜt +.dst_port; + +350 +´ÙocÞ + = & +lb_pkt +-> +v4_pÜt +. +v4 +. +Ãxt_´Ùo_id +; + +353  +p_lßdb +-> +n_lb_tu¶es +) { + +358 +‹mp1 + = * +¤c_addr + ^ * +¤c_pÜt +; + +359 +‹mp2 + = ( +‹mp1 + >> 24) ^ (temp1 >> 16) ^ + +360 ( +‹mp1 + >> 8) ^emp1; + +361 +‹mp3 + = ( +‹mp2 + >> 4) ^ (temp2 & 0xf); + +364 +th»ad + = +‹mp3 + % +Áh»ads +; + +366 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +367 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +369  +th»ad +; + +374 +hash_key +[0] = + `¹e_bsw­32 +(* +¤c_addr +); + +377 +hash_v4 + = + `¹e_jhash +(& +hash_key +[0], 4, 0); + +380 +th»ad + = +hash_v4 + % +Áh»ads +; + +382 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +383 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +385 ià( +LOADB_DEBUG + > 3) + +386 + `´štf +("thread: %u hash: %x hash_key: %x\n", + +387 +th»ad +, +hash_v4 +, +hash_key +[0]); + +388  +th»ad +; + +393 +hash_key +[0] = + `¹e_bsw­32 +(* +¤c_addr +); + +394 +hash_key +[1] = * +¤c_pÜt + << 16; + +397 +hash_v4 + = + `¹e_jhash +(& +hash_key +[0], 6, 0); + +400 +th»ad + = +hash_v4 + % +Áh»ads +; + +402 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +403 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +405 ià( +LOADB_DEBUG + > 3) { + +406 + `´štf +("thread: %u hash: %x hash_key0: %x " + +407 "hash_key1: %x\n", +th»ad +, +hash_v4 +, + +408 +hash_key +[0], hash_key[1]); + +409 + `´štf +("public_addr: %x…ublic_port: %x\n", + +410 +hash_key +[0], * +¤c_pÜt +); + +412  +th»ad +; + +415 + `´štf +("Inv®id‚_lb_tu¶es: %d\n", +p_lßdb +-> +n_lb_tu¶es +); + +420 +tu¶e +. +v4 +. +¤c_addr + = + `¹e_bsw­32 +(*src_addr); + +421 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw­32 +(*dst_addr); + +422 +tu¶e +. +v4 +. +¥Üt + = * +¤c_pÜt +; + +423 +tu¶e +. +v4 +. +dpÜt + = * +d¡_pÜt +; + +426 +hash_v4 + = + `¹e_soárss +(( +ušt32_t + *)& +tu¶e +, + +427 +RTE_THASH_V4_L4_LEN +, +deçuÉ_rss_key +); + +431 +th»ad + = +hash_v4 + % +Áh»ads +; + +433 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +434 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +436 ià( +LOADB_DEBUG + > 3) { + +437 + `´štf +("src_addr: %x dst_addr: %x src_port: %x " + +438 "d¡_pÜt: %x\n", +tu¶e +. +v4 +. +¤c_addr +, + +439 +tu¶e +. +v4 +. +d¡_addr +,u¶e.v4. +¥Üt +,u¶e.v4. +dpÜt +); + +441 + `´štf +("th»ad: %u hash: %x\n", +th»ad +, +hash_v4 +); + +443  +th»ad +; + +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_pÜt + ^ + +456 * +d¡_pÜt + ^ * +´ÙocÞ +; + +457 +‹mp2 + = ( +‹mp1 + >> 24) ^ (temp1 >> 16) ^ + +458 ( +‹mp1 + >> 8) ^emp1; + +459 +‹mp3 + = ( +‹mp2 + >> 4) ^ (temp2 & 0xf); + +462 +th»ad + = +‹mp3 + % +Áh»ads +; + +464 +th»ad + = +­ +-> +š_pÜt_id + + ( +p_lßdb +-> +p +. +n_pÜts_š + * + +465 ( +th»ad + + 1è- +p_lßdb +-> +p +. +n_pÜts_š +); + +467 ià( +LOADB_DEBUG + > 3) { + +468 + `´štf +("src_addr: %x dst_addr: %x src_port: %x " + +469 "d¡_pÜt: %x…rÙocÞ: %x\n", * +¤c_addr +, * +d¡_addr +, + +470 * +¤c_pÜt +, * +d¡_pÜt +, * +´ÙocÞ +); + +472 + `´štf +("thread: %uemp1: %xemp2: %xemp3: %x\n", + +473 +th»ad +, +‹mp1 +, +‹mp2 +, +‹mp3 +); + +476  +th»ad +; + +479 + `´štf +("Inv®id‚_lb_tu¶es: %d\n", +p_lßdb +-> +n_lb_tu¶es +); + +483 + } +} + +485  +šlše +  + +486 + $pkt_wÜk_lßdb_key_´v +( + +487  +¹e_mbuf + * +pkt +, + +488 +__¹e_unu£d + +ušt32_t + +pkt_num +, + +489 * +¬g +) + +491  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +492  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *) +­ +-> +p +; + +493 +ušt32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +495  +lb_pkt + *lb_pkt = (lb_pkt *) + +496 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +497 +MBUF_HDR_ROOM +); + +498 +ušt32_t + * +out_pÜt + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +499 +ouÜt_off£t +); + +501 #ifdeà +MY_LOADB_DBG_PRINT + + +502 ià( +LOADB_DEBUG + == 3) + +503 + `´štf +("Start…kt_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_pÜt +. +v4 +. +Ãxt_´Ùo_id +, +ETH_TYPE_ARP +, + +513 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +517 * +out_pÜt + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +, +¬g +); + +519 +p_lßdb +-> +»ûivedLBPktCouÁ +++; + +521 #ifdeà +MY_LOADB_DBG_PRINT + + +522 ià( +LOADB_DEBUG + == 3) + +523 + `´štf +("End…kt_work_loadb_key\n"); + +525 + } +} + +527  +šlše +  + +528 + $pkt_wÜk_lßdb_key_pub +( + +529  +¹e_mbuf + * +pkt +, + +530 +__¹e_unu£d + +ušt32_t + +pkt_num +, + +531 * +¬g +) + +533  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +534  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *) +­ +-> +p +; + +535 +ušt32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +537  +lb_pkt + *lb_pkt = (lb_pkt *) + +538 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +539 +MBUF_HDR_ROOM +); + +540 +ušt32_t + * +out_pÜt + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +541 +ouÜt_off£t +); + +543 #ifdeà +MY_LOADB_DBG_PRINT + + +544 ià( +LOADB_DEBUG + == 3) + +545 + `´štf +("Start…kt_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_pÜt +. +v4 +. +Ãxt_´Ùo_id +, +ETH_TYPE_ARP +, + +555 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +559 * +out_pÜt + = + `ÿlcuϋ_lb_th»ad_pub +( +pkt +, +¬g +); + +561 +p_lßdb +-> +»ûivedLBPktCouÁ +++; + +562 #ifdeà +MY_LOADB_DBG_PRINT + + +563 ià( +LOADB_DEBUG + == 3) + +564 + `´štf +("End…kt_work_loadb_key\n"); + +566 + } +} + +568  +šlše +  + +569 + $pkt4_wÜk_lßdb_key_´v +( + +570  +¹e_mbuf + ** +pkt +, + +571 +__¹e_unu£d + +ušt32_t + +pkt_num +, + +572 * +¬g +) + +574  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +575  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *) +­ +-> +p +; + +576 +ušt32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +578 +ušt32_t + * +out_pÜt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +579 +ouÜt_off£t +); + +580 +ušt32_t + * +out_pÜt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +581 +ouÜt_off£t +); + +582 +ušt32_t + * +out_pÜt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +583 +ouÜt_off£t +); + +584 +ušt32_t + * +out_pÜt3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], + +585 +ouÜt_off£t +); + +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 +("Start…kt4_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_pÜt +. +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_pÜt +. +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_pÜt +. +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_pÜt +. +v4 +. +Ãxt_´Ùo_id +); + +634 * +out_pÜt0 + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +[0], +¬g +); + +635 * +out_pÜt1 + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +[1], +¬g +); + +636 * +out_pÜt2 + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +[2], +¬g +); + +637 * +out_pÜt3 + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +[3], +¬g +); + +639 +p_lßdb +-> +»ûivedLBPktCouÁ + += 4; + +641 #ifdeà +MY_LOADB_DBG_PRINT + + +642 ià( +LOADB_DEBUG + == 3) + +643 + `´štf +("End…kt4_work_loadb_key\n"); + +646 + } +} + +648  +šlše +  + +649 + $pkt4_wÜk_lßdb_key_pub +( + +650  +¹e_mbuf + ** +pkt +, + +651 +__¹e_unu£d + +ušt32_t + +pkt_num +, + +652 * +¬g +) + +654  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = +¬g +; + +655  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *) +­ +-> +p +; + +656 +ušt32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +658 +ušt32_t + * +out_pÜt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +659 +ouÜt_off£t +); + +660 +ušt32_t + * +out_pÜt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +661 +ouÜt_off£t +); + +662 +ušt32_t + * +out_pÜt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +663 +ouÜt_off£t +); + +664 +ušt32_t + * +out_pÜt3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], + +665 +ouÜt_off£t +); + +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 +("Start…kt4_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_pÜt +. +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_pÜt +. +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_pÜt +. +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_pÜt +. +v4 +. +Ãxt_´Ùo_id +); + +714 * +out_pÜt0 + = + `ÿlcuϋ_lb_th»ad_´v +( +pkt +[0], +¬g +); + +715 * +out_pÜt1 + = + `ÿlcuϋ_lb_th»ad_pub +( +pkt +[1], +¬g +); + +716 * +out_pÜt2 + = + `ÿlcuϋ_lb_th»ad_pub +( +pkt +[2], +¬g +); + +717 * +out_pÜt3 + = + `ÿlcuϋ_lb_th»ad_pub +( +pkt +[3], +¬g +); + +719 +p_lßdb +-> +»ûivedLBPktCouÁ + += 4; + +720 #ifdeà +MY_LOADB_DBG_PRINT + + +721 ià( +LOADB_DEBUG + == 3) + +722 + `´štf +("End…kt4_work_loadb_key\n"); + +725 + } +} + +727 +PIPELINE_LOADB_KEY_PORT_IN_AH +( +pÜt_š_ah_lßdb_key_´v +, + +728 +pkt_wÜk_lßdb_key_´v +, + +729 +pkt4_wÜk_lßdb_key_´v +); + +731 +PIPELINE_LOADB_KEY_PORT_IN_AH +( +pÜt_š_ah_lßdb_key_pub +, + +732 +pkt_wÜk_lßdb_key_pub +, + +733 +pkt4_wÜk_lßdb_key_pub +); + +736 + $p–še_lßdb_·r£_¬gs +( +p–še_lßdb + * +p +, + +737  +p–še_·¿ms + * +·¿ms +) + +739 +ušt32_t + +ouÜt_off£t_´e£Á + = 0; + +740 +ušt32_t + +n_vnf_th»ads_´e£Á + = 0; + +741 +ušt32_t + +pktq_š_´v_´e£Á + = 0; + +742 +ušt32_t + +´v_que_hªdËr_´e£Á + = 0; + +743 +ušt32_t + +´v_to_pub_m­_´e£Á + = 0; + +744 +ušt8_t + +n_´v_š_pÜt + = 0; + +745 +ušt32_t + +i +; + +748 +p +-> +n_lb_tu¶es + = 0; + +750 ià( +LOADB_DEBUG + > 2) + +751 + `´štf +("LOADB…ipeline_loadb_parse_args…arams->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_v®ue + = +·¿ms +-> +¬gs_v®ue +[ +i +]; + +758 ià( +LOADB_DEBUG + > 2) + +759 + `´štf +("LOADB‡rgs[%d]: % %d, %s\n", +i +, +¬g_Çme +, + +760 + `©oi +( +¬g_v®ue +),‡rg_value); + +763 ià( + `¡rcmp +( +¬g_Çme +, "outport_offset") == 0) { + +764 ià( +ouÜt_off£t_´e£Á +) + +766 +ouÜt_off£t_´e£Á + = 1; + +768 +p +-> +ouÜt_off£t + = + `©oi +( +¬g_v®ue +); + +769 ià( +p +-> +ouÜt_off£t + <= 0) { + +770 + `´štf +("Outport_offset is invalid\n"); + +773 + `´štf +("ouÜt_off£t: 0x%x\n", +p +-> +ouÜt_off£t +); + +777 ià( + `¡rcmp +( +¬g_Çme +, "n_vnf_threads") == 0) { + +778 ià( +n_vnf_th»ads_´e£Á +) + +780 +n_vnf_th»ads_´e£Á + = 1; + +782 +p +-> +n_vnf_th»ads + = + `©oi +( +¬g_v®ue +); + +784 +tÙ®_vnf_th»ads + +ð +p +-> +n_vnf_th»ads +; + +786 ià(( +p +-> +n_vnf_th»ads + <= 0) + +787 || ( +tÙ®_vnf_th»ads + > +MAX_VNF_THREADS +)) { + +788 + `´štf +("n_vnf_threads : MIN->0 MAX->16\n"); + +791 + `´štf +("n_vnf_th»ad  : 0x%x\n", +p +-> +n_vnf_th»ads +); + +792 + `´štf +("tÙ®_vnf_th»ads: 0x%x\n", +tÙ®_vnf_th»ads +); + +797 ià( + `¡rcmp +( +¬g_Çme +, "pktq_in_prv") == 0) { + +798 ià( +pktq_š_´v_´e£Á +) { + +799 + `´štf +("Duplicate…ktq_in_prv ... " + +803 +pktq_š_´v_´e£Á + = 1; + +805  +rxpÜt + = 0, +j + = 0; + +806  +phy_pÜt_num +[8]; + +807 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "RXQ"); + +808  +tok’ +) { + +809 +j + = 0; + +810 ( +j + < 7è&& ( +tok’ +[j] != '.')) { + +811 +phy_pÜt_num +[ +j +] = +tok’ +[j]; + +812 +j +++; + +814 +phy_pÜt_num +[ +j +] = '\0'; + +815 +rxpÜt + = + `©oi +( +phy_pÜt_num +); + +816 + `´štf +("token: %s,…hy_port_str: %s, " + +818 +tok’ +, +phy_pÜt_num +, +rxpÜt +); + +819 +´v_š_pÜt_a +[ +n_´v_š_pÜt +++] = +rxpÜt +; + +821 ià( +rxpÜt + < 0xff){ + +822 if( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +823 +š_pÜt_dœ_a +[ +rxpÜt +] = 1; + +825 +tok’ + = + `¡¹ok +( +NULL +, "RXQ"); + +828 ià( +n_´v_š_pÜt + == 0) { + +829 + `´štf +("VNF common…arseƒrror - " + +838 ià( + `¡rcmp +( +¬g_Çme +, "prv_que_handler") == 0) { + +840 ià( +´v_que_hªdËr_´e£Á +) { + +841 + `´štf +("Duplicate…ktq_in_prv ..\n\n"); + +844 +´v_que_hªdËr_´e£Á + = 1; + +845 +n_´v_š_pÜt + = 0; + +847 * +tok’ +; + +848  +rxpÜt + = 0; + +850 +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +851 +tok’ + = + `¡¹ok +(token, ")"); + +852 +tok’ + = + `¡¹ok +(token, ","); + +853 + `´štf +("*****…rv_que_handler *****\n"); + +854 ià( +tok’ +) + +855 + `´štf +("¡ršg i :%s\n", +tok’ +); + +857 ià( +tok’ +) + +859 + `´štf +("¡ršg i :%s\n", +tok’ +); + +862  +tok’ + !ð +NULL +) { + +863 + `´štf +(" %s\n", +tok’ +); + +864 +rxpÜt + = + `©oi +( +tok’ +); + +865 +´v_que_pÜt_šdex +[ +n_´v_š_pÜt +++] = +rxpÜt +; + +866 ià( +rxpÜt + < 0xff){ + +867 if( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +868 +š_pÜt_eg»ss_´v +[ +rxpÜt +] = 1; + +870 +p +-> +n_´v_Q +++; + +871 +tok’ + = + `¡¹ok +( +NULL +, ","); + +874 ià( +n_´v_š_pÜt + == 0) { + +875 + `´štf +("VNF common…arseƒrr -‚o…rv RX…hy…ort\n"); + +882 ià( + `¡rcmp +( +¬g_Çme +, "prv_to_pub_map") == 0) { + +883 ià( +´v_to_pub_m­_´e£Á +) { + +884 + `´štf +("Duplicated…rv_to_pub_map ... " + +888 +´v_to_pub_m­_´e£Á + = 1; + +890  +rxpÜt + = 0, +txpÜt + = 0, +j + = 0, +k + = 0; + +891  +rx_phy_pÜt_num +[5]; + +892  +tx_phy_pÜt_num +[5]; + +893 * +tok’ + = + `¡¹ok +( +¬g_v®ue +, "("); + +894  +tok’ +) { + +895 +j + = 0; + +896 ( +j + < 4è&& ( +tok’ +[j] != ',')) { + +897 +rx_phy_pÜt_num +[ +j +] = +tok’ +[j]; + +898 +j +++; + +900 +rx_phy_pÜt_num +[ +j +] = '\0'; + +901 +rxpÜt + = + `©oi +( +rx_phy_pÜt_num +); + +903 +j +++; + +904 +k + = 0; + +905 ( +k + < 4è&& ( +tok’ +[ +j ++k] != ')')) { + +906 +tx_phy_pÜt_num +[ +k +] = +tok’ +[ +j ++k]; + +907 +k +++; + +909 +tx_phy_pÜt_num +[ +k +] = '\0'; + +910 +txpÜt + = + `©oi +( +tx_phy_pÜt_num +); + +912 + `´štf +("token: %s,rx_phy_port_str: %s,…hy_port_num " + +914 +tok’ +, +rx_phy_pÜt_num +, +rxpÜt +, + +915 +tx_phy_pÜt_num +, +txpÜt +); + +916 if( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +917 ià(( +rxpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +918 ( +txpÜt + >ð +PIPELINE_MAX_PORT_IN +) || + +919 ( +š_pÜt_dœ_a +[ +rxpÜt +] != 1)) { + +920 + `´štf +("CG-NAPT…arseƒrror - " + +922 "Tx %d, Rx Dœ %d\n", +rxpÜt +, +txpÜt +, + +923 +š_pÜt_dœ_a +[ +rxpÜt +]); + +927 ià( +rxpÜt + < 0xff){ + +928 ià( +rxpÜt + < +PIPELINE_MAX_PORT_IN +) + +929 +´v_to_pub_m­ +[ +rxpÜt +] = +txpÜt +; + +931 ià( +txpÜt + < 0xff) + +932 if( +txpÜt + < +PIPELINE_MAX_PORT_IN +) + +933 +pub_to_´v_m­ +[ +txpÜt +] = +rxpÜt +; + +934 +tok’ + = + `¡¹ok +( +NULL +, "("); + +940 ià( + `¡rcmp +( +¬g_Çme +, "n_lb_tuples") == 0) { + +941 +p +-> +n_lb_tu¶es + = + `©oi +( +¬g_v®ue +); + +942 + `´štf +("n_lb_tu¶es: 0x%x\n", +p +-> +n_lb_tu¶es +); + +946 ià( + `¡rcmp +( +¬g_Çme +, "loadb_debug") == 0) { + +947 +LOADB_DEBUG + = + `©oi +( +¬g_v®ue +); + +955 ià(( +n_vnf_th»ads_´e£Á + =ð0è|| ( +ouÜt_off£t_´e£Á + == 0)) + +960 + } +} + +962  + $check_lßdb_th»ad +( + +963  +­p_·¿ms + * +­p +, + +964  +p–še_·¿ms + * +·¿ms +, + +965 +št32_t + +n_vnf_th»ads +) + +967 +ušt32_t + +i +; + +968  +p–še_num + = 0; + +969  +couÁ + = 0; + +970  +dÚt_ÿ» + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +p–še_num +); + +971 ià( +dÚt_ÿ» + != 1) + +974  +i + = +p–še_num + + 2; i < +­p +-> +n_p–šes +; i++) { + +975  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +976 ià(! + `¡ºcmp +( +p +-> +ty³ +, "LOADB", + `¡¾’ +(p->type))) + +978 +couÁ +++; + +980 ià( +n_vnf_th»ads + !ð +couÁ +) + +984 + } +} + +986 * + $p–še_lßdb_š™ +( + +987  +p–še_·¿ms + * +·¿ms +, + +988 +__¹e_unu£d + * +¬g +) + +992  +p–še + * +p +; + +993  +p–še_lßdb + * +p_lßdb +; + +994 +ušt32_t + +size +, +i +, +š_pÜts_¬g_size +; + +997 ià(( +·¿ms + =ð +NULL +) || + +998 ( +·¿ms +-> +n_pÜts_š + =ð0è|| (·¿ms-> +n_pÜts_out + == 0)) + +999  +NULL +; + +1002 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +p–še_lßdb +)); + +1003 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1004 +p_lßdb + = ( +p–še_lßdb + *) +p +; + +1005 ià( +p + =ð +NULL +) + +1006  +NULL +; + +1008 + `¡rýy +( +p +-> +Çme +, +·¿ms +->name); + +1009 +p +-> +log_Ëv– + = +·¿ms +->log_level; + +1011 + `PLOG +( +p +, +HIGH +, "LOADB"); + +1013 +p_lßdb +-> +n_vnf_th»ads + = 0; + +1014 +p_lßdb +-> +ouÜt_off£t + = 0; + +1015 +p_lßdb +-> +»ûivedLBPktCouÁ + = 0; + +1016 +p_lßdb +-> +drݳdLBPktCouÁ + = 0; + +1017  +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +1018 +p_lßdb +-> +lšks_m­ +[ +i +] = 0xff; + +1020 +p_lßdb +-> +p–še_num + = 0xff; + +1021 +p_lßdb +-> +n_´v_Q + = 0; + +1022 +p_lßdb +-> +n_pub_Q + = 0; + +1026 ià( + `p–še_lßdb_·r£_¬gs +( +p_lßdb +, +·¿ms +)) + +1027  +NULL +; + +1031  +¹e_p–še_·¿ms + +p–še_·¿ms + = { + +1032 . +Çme + = "LOADB", + +1033 . +sock‘_id + = +·¿ms +->socket_id, + +1034 . +off£t_pÜt_id + = 0, + +1037 +p +->°ð + `¹e_p–še_ü—‹ +(& +p–še_·¿ms +); + +1038 ià( +p +->°=ð +NULL +) { + +1039 + `¹e_ä“ +( +p +); + +1040  +NULL +; + +1043 + `´štf +("Lßdb…->°%p, sock‘ %d\n", +p +->p, + +1044 +p–še_·¿ms +. +sock‘_id +); + +1048 +š_pÜts_¬g_size + = + +1049 + `RTE_CACHE_LINE_ROUNDUP +((( +p–še_lßdb_š_pÜt_h_¬g +)) + +1050 * ( +·¿ms +-> +n_pÜts_š +)); + +1051  +p–še_lßdb_š_pÜt_h_¬g + * +­ + = + +1052 ( +p–še_lßdb_š_pÜt_h_¬g + *) + +1053 + `¹e_zm®loc +( +NULL +, + +1054 +š_pÜts_¬g_size +, + +1055 +RTE_CACHE_LINE_SIZE +); + +1056 ià( +­ + =ð +NULL +) + +1057  +NULL +; + +1059 + `´štf +("­…oš‹¸%p\n", +­ +); + +1062 +p +-> +n_pÜts_š + = +·¿ms +->n_ports_in; + +1063  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +1065 ( +­ +[ +i +]). +p + = +p_lßdb +; + +1066 ( +­ +[ +i +]). +š_pÜt_id + = i; + +1068  +¹e_p–še_pÜt_š_·¿ms + +pÜt_·¿ms + = { + +1069 . +Ýs + = + +1070 + `p–še_pÜt_š_·¿ms_g‘_Ýs +(& +·¿ms +-> +pÜt_š + + +1071 [ +i +]), + +1072 . +¬g_ü—‹ + = + +1073 + `p–še_pÜt_š_·¿ms_cÚv”t +(& +·¿ms +-> +pÜt_š + + +1074 [ +i +]), + +1076 . +f_aùiÚ + = +NULL +, + +1077 . +¬g_ah + = &( +­ +[ +i +]), + +1078 . +bur¡_size + = +·¿ms +-> +pÜt_š +[ +i +].burst_size, + +1082 ià( + `is_pÜt_šdex_´iv‹ +( +i +)) { + +1083 + `´štf +("LOADB %d…܈i Prv\n", +i +); + +1084 +pÜt_·¿ms +. +f_aùiÚ + = +pÜt_š_ah_lßdb_key_´v +; + +1086 + `´štf +("LOADB %d…܈i Pub\n", +i +); + +1087 +pÜt_·¿ms +. +f_aùiÚ + = +pÜt_š_ah_lßdb_key_pub +; + +1090  +¡©us + = + `¹e_p–še_pÜt_š_ü—‹ +( +p +->p, + +1091 & +pÜt_·¿ms +, + +1092 & +p +-> +pÜt_š_id +[ +i +]); + +1094 ià( +¡©us +) { + +1095 + `¹e_p–še_ä“ +( +p +->p); + +1096 + `¹e_ä“ +( +p +); + +1097  +NULL +; + +1102 +p_lßdb +-> +n_pub_Q + =…_lßdb-> +p +. +n_pÜts_š + -…_lßdb-> +n_´v_Q +; + +1103 + `´štf +("LOADB :‚_prv_Q - %d‚_pub_Q - %d\n", + +1104 +p_lßdb +-> +n_´v_Q +,…_lßdb-> +n_pub_Q +); + +1106  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +1107 + `´štf +("is_pÜt_šdex_´iv‹(%d): %d\n", +i +, + +1108 + `is_pÜt_šdex_´iv‹ +( +i +)); + +1109 + `´štf +("is_phy_pÜt_´iv‹(%d): %d\n", +i +, + +1110 + `is_phy_pÜt_´iv‹ +( +i +)); + +1111 + `´štf +("aùiÚ hªd˸oà%d:%p\n", +i +, + +1112 +p_lßdb +-> +p +.p-> +pÜts_š +[ +i +]. +f_aùiÚ +); + +1116 +p +-> +n_pÜts_out + = +·¿ms +->n_ports_out; + +1117  +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +1118  +¹e_p–še_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +1119 . +Ýs + = + +1120 + `p–še_pÜt_out_·¿ms_g‘_Ýs +(& +·¿ms +-> +pÜt_out + + +1121 [ +i +]), + +1122 . +¬g_ü—‹ + = + +1123 + `p–še_pÜt_out_·¿ms_cÚv”t +(& +·¿ms +-> +pÜt_out + + +1124 [ +i +]), + +1125 . +f_aùiÚ + = +NULL +, + +1126 . +¬g_ah + = +NULL +, + +1129  +¡©us + = + `¹e_p–še_pÜt_out_ü—‹ +( +p +->p, + +1130 & +pÜt_·¿ms +, + +1131 & +p +-> +pÜt_out_id +[ +i +]); + +1133 ià( +¡©us +) { + +1134 + `¹e_p–še_ä“ +( +p +->p); + +1135 + `¹e_ä“ +( +p +); + +1136  +NULL +; + +1139 + `´štf +("OuÜˆp->pÜt_out_id[%d] %p\n", +i +, + +1140 & +p +-> +pÜt_out_id +[ +i +]); + +1143  +p–še_num + = 0; + +1144  +dÚt_ÿ» + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +p–še_num +); + +1145 ià( +dÚt_ÿ» + != 1) { + +1146 + `´štf +("Unableo„ead…ipeline‚umber\n"); + +1147  +NULL +; + +1149 +p_lßdb +-> +p–še_num + =…ipeline_num; + +1151 + `£t_ouÜt_id +( +p–še_num +, +p +, +lb_ouÜt_id +); + +1152 + `£t_phy_ouÜt_m­ +( +p–še_num +, +p_lßdb +-> +lšks_m­ +); + +1154 + `£t_pÜt_to_lßdb_m­ +( +p–še_num +); + +1156 + `»gi¡”_lßdb_to_¬p +( +p–še_num +, +p +, +­p +); + +1158 + `»gi¡”_p–še_Qs +( +p_lßdb +-> +p–še_num +, +p +); + +1159 + `£t_lšk_m­ +( +p_lßdb +-> +p–še_num +, +p +,…_lßdb-> +lšks_m­ +); + +1163 +p +-> +n_bËs + = 1; + +1166  +¹e_bË_¬¿y_·¿ms + +bË_¬¿y_·¿ms + = { + +1167 . +n_’Œ›s + = +MAX_VNF_THREADS +, + +1168 . +off£t + = +p_lßdb +-> +ouÜt_off£t +, + +1170  +¹e_p–še_bË_·¿ms + +bË_·¿ms + = { + +1171 . +Ýs + = & +¹e_bË_¬¿y_Ýs +, + +1172 . +¬g_ü—‹ + = & +bË_¬¿y_·¿ms +, + +1173 . +f_aùiÚ_h™ + = +NULL +, + +1174 . +f_aùiÚ_miss + = +NULL +, + +1175 . +¬g_ah + = +p_lßdb +, + +1176 . +aùiÚ_d©a_size + = 0, + +1179  +¡©us +; + +1181 +¡©us + = + `¹e_p–še_bË_ü—‹ +( +p +->p, + +1182 & +bË_·¿ms +, + +1183 & +p +-> +bË_id +[0]); + +1185 ià( +¡©us +) { + +1186 + `¹e_p–še_ä“ +( +p +->p); + +1187 + `¹e_ä“ +( +p +); + +1188  +NULL +; + +1193  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +1194  +¡©us + = + `¹e_p–še_pÜt_š_cÚÃù_to_bË +( + +1195 +p +->p, + +1196 +p +-> +pÜt_š_id +[ +i +], + +1197 +p +-> +bË_id +[0]); + +1199 ià( +¡©us +) { + +1200 + `¹e_p–še_ä“ +( +p +->p); + +1201 + `¹e_ä“ +( +p +); + +1202  +NULL +; + +1207  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +1208  +¡©us + = + `¹e_p–še_pÜt_š_’abË +( +p +->p, + +1209 +p +-> +pÜt_š_id +[ +i +]); + +1211 ià( +¡©us +) { + +1212 + `¹e_p–še_ä“ +( +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  +lßdb_bË_’Œy + +’Œy +; + +1225 +’Œy +. +h—d +. +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +; + +1227 ià( +i + < +p +-> +n_pÜts_out +) { + +1228 +’Œy +. +h—d +. +pÜt_id + = +p +-> +pÜt_out_id +[ +i +]; + +1229 + `´štf +("\n˜%d,…->pÜt_out_id[%d] %d", +i +, i, + +1230 +p +-> +pÜt_out_id +[ +i +]); + +1233 +’Œy +. +h—d +. +pÜt_id + = +p +-> +pÜt_out_id +[0]; + +1234 +’Œy +. +h—d +. +aùiÚ + = +RTE_PIPELINE_ACTION_DROP +; + +1237  +¹e_p–še_bË_’Œy + * +’Œy_±r +; + +1238  +key_found +, +¡©us +; + +1239 +¡©us + = + `¹e_p–še_bË_’Œy_add +( + +1240 +p +->p, + +1241 +p +-> +bË_id +[0], + +1242 & +key +, + +1243 ( +¹e_p–še_bË_’Œy + *) + +1244 & +’Œy +, + +1245 & +key_found +, + +1246 & +’Œy_±r +); + +1247 ià( +¡©us +) { + +1248 + `¹e_p–še_ä“ +( +p +->p); + +1249 + `¹e_ä“ +( +p +); + +1250  +NULL +; + +1256  +¹e_p–še_bË_’Œy + +deçuÉ_’Œy + = { + +1257 . +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +, + +1259 . +pÜt_id + = +p +-> +pÜt_out_id +[0], + +1262  +¹e_p–še_bË_’Œy + * +deçuÉ_’Œy_±r +; + +1264  +¡©us + = + `¹e_p–še_bË_deçuÉ_’Œy_add +( + +1265 +p +->p, + +1266 +p +-> +bË_id +[0], + +1267 & +deçuÉ_’Œy +, + +1268 & +deçuÉ_’Œy_±r +); + +1270 ià( +¡©us +) { + +1271 + `¹e_p–še_ä“ +( +p +->p); + +1272 + `¹e_ä“ +( +p +); + +1273  +NULL +; + +1279 ià( + `¹e_p–še_check +( +p +->p) < 0) { + +1280 + `¹e_p–še_ä“ +( +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 + `memýy +( +p +-> +hªdËrs +, handlers, (p->handlers)); + +1294 + `memýy +( +p_lßdb +-> +cu¡om_hªdËrs +, + +1295 +cu¡om_hªdËrs +, ( +p_lßdb +->custom_handlers)); + +1297  +p +; + +1298 + } +} + +1300  + $p–še_lßdb_ä“ +(* +p–še +) + +1302  +p–še + * +p + = (pipeline *)pipeline; + +1305 ià( +p + =ð +NULL +) + +1309 + `¹e_p–še_ä“ +( +p +->p); + +1310 + `¹e_ä“ +( +p +); + +1312 + } +} + +1315 + $p–še_lßdb_Œack +(* +p–še +, + +1316 +__¹e_unu£d + +ušt32_t + +pÜt_š +, ušt32_ˆ* +pÜt_out +) + +1318  +p–še + * +p + = (pipeline *)pipeline; + +1321 ià(( +p + =ð +NULL +è|| ( +pÜt_š + >ðp-> +n_pÜts_š +è|| ( +pÜt_out + == NULL)) + +1324 ià( +p +-> +n_pÜts_š + == 1) { + +1325 * +pÜt_out + = 0; + +1330 + } +} + +1332  + $p–še_lßdb_tim” +(* +p–še +) + +1334  +p–še + * +p + = (pipeline *)pipeline; + +1336 + `p–še_msg_»q_hªdË +( +p +); + +1337 + `¹e_p–še_æush +( +p +->p); + +1340 + } +} + +1342 * + $p–še_lßdb_msg_»q_’Œy_dbg_hªdËr +( +p–še + * +p +, * +msg +) + +1344  +p–še_lßdb_’Œy_dbg_msg_r¥ + * +r¥ + = +msg +; + +1345 +ušt8_t + * +Msg + = +msg +; + +1346  +p–še_lßdb + * +p_lßdb + = (p–še_lßdb *) +p +; + +1348 +r¥ +-> +¡©us + = 0; + +1350 + `´štf +("LoadB debug handler called with‡rgs %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 +("\nLßdB Pack‘ Sts: Reûived %" +PRIu64 + "\n", + +1356 +p_lßdb +-> +»ûivedLBPktCouÁ +); + +1357  +r¥ +; + +1359 ià( +Msg +[ +LOADB_DBG_CMD_OFST +] =ð +LOADB_DBG_CMD_STATS_CLEAR +) { + +1360 + `´štf +("\nLßdB Pack‘ Sts: Reûived %" +PRIu64 + "\n", + +1361 +p_lßdb +-> +»ûivedLBPktCouÁ +); + +1362 +p_lßdb +-> +»û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 Debug†ev– 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 +("\nLßdB DBG Lev–: %u\n", +LOADB_DEBUG +); + +1374  +r¥ +; + +1376 ià( +Msg +[ +LOADB_DBG_CMD_OFST +] =ð +LOADB_DBG_CMD_IF_STATS +) { + +1377 + `´štf +("\n"); + +1378 +ušt8_t + +i +, +j +; + +1380  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +1381  +¹e_‘h_¡©s + +¡©s +; + +1382 + `¹e_‘h_¡©s_g‘ +( +p_lßdb +-> +lšks_m­ +[ +i +], & +¡©s +); + +1383 ià( + `is_phy_pÜt_´iv‹ +( +i +)) + +1384 + `´štf +("Priv©P܈St %d\n", +i +); + +1386 + `´štf +("PubliøP܈St  %d\n", +i +); + +1387 + `´štf +("\n\tack‘ : %" +PRIu64 + "\n\topackets : %" + +1388 +PRIu64 + "\n\tierrors : %" PRIu64 + +1389 "\n\tۼܠ : %" +PRIu64 + "\n\trx_nombuf: %" + +1390 +PRIu64 + "\n", +¡©s +. +ack‘s +, sts. +Ýack‘s +, + +1391 +¡©s +. +›¼Üs +, sts. +Û¼Üs +, sts. +rx_nombuf +); + +1392 ià( + `is_phy_pÜt_´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_ack‘s +[ +j +], + +1399 +¡©s +. +q_Ýack‘s +[ +j +]); + +1401 + `´štf +("\n\n"); + +1404  +r¥ +; + +1407  +r¥ +; + +1409 + } +} + +1411  +p–še_be_Ýs + + gp–še_lßdb_be_Ýs + = { + +1412 . +f_š™ + = +p–še_lßdb_š™ +, + +1413 . + gf_ä“ + = +p–še_lßdb_ä“ +, + +1414 . + gf_run + = +NULL +, + +1415 . + gf_tim” + = +p–še_lßdb_tim” +, + +1416 . + gf_Œack + = +p–še_lßdb_Œack +, + + @VIL/pipeline_loadb/pipeline_loadb_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_LOADB_BE_H__ + + +18  + #__INCLUDE_PIPELINE_LOADB_BE_H__ + + + ) + +20  + ~<¹e_.h +> + +21  + ~"p–še_commÚ_be.h +" + +22  + ~<­p.h +> + +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_wÜk +, +f_pkt4_wÜk +) \ + +51 + `f_ah +( \ + +52 +__¹e_unu£d +  +¹e_p–še + * +¹e_p +, \ + +53  +¹e_mbuf + ** +pkts +, \ + +54 +ušt32_t + +n_pkts +, \ + +55 * +¬g +) \ + +57 +ušt32_t + +i +, +j +; \ + +59  +j + = 0; j < +n_pkts +; j++) \ + +60 + `¹e_´eãtch0 +( +pkts +[ +j +]); \ + +61 +pkt_bur¡_út + = 0; \ + +62  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +63 + `f_pkt4_wÜk +(& +pkts +[ +i +], i, +¬g +); \ + +65  ; +i + < +n_pkts +; i++) \ + +66 + `f_pkt_wÜk +( +pkts +[ +i +], i, +¬g +); \ + +70 } + + ) + +72 +ušt8_t + +LOADB_DEBUG +; + +73 +ušt8_t + +š_pÜt_eg»ss_´v +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ušt8_t + +´v_que_pÜt_šdex +[ +PIPELINE_MAX_PORT_IN +]; + +75 +ušt8_t + +š_pÜt_dœ_a +[ +PIPELINE_MAX_PORT_IN +]; + +77 +ušt8_t + +g‘_š_pÜt_dœ +(uint8_t); + +78 +ušt8_t + +is_pÜt_šdex_´iv‹ +( +ušt16_t +); + +79 +ušt8_t + +is_phy_pÜt_´iv‹ +( +ušt16_t +); + +80 +ušt32_t + +g‘_´v_to_pub_pÜt +(ušt32_ˆ* +_addr +, +ušt8_t + +ty³ +); + +81 +ušt32_t + +g‘_pub_to_´v_pÜt +(ušt32_ˆ* +_addr +, +ušt8_t + +ty³ +); + +82 +ušt8_t + +´v_to_pub_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +90  + sp–še_lßdb_š_pÜt_h_¬g + { + +91  +p–še_lßdb + * + mp +; + +92 +ušt8_t + + mš_pÜt_id +; + +98 + ep–še_lßdb_msg_»q_ty³ + { + +100 + mPIPELINE_LOADB_MSG_REQ_ENTRY_DBG +, + +101 + mPIPELINE_LOADB_MSG_REQS + + +107  + sp–še_lßdb_’Œy_dbg_msg_»q + { + +108 +p–še_msg_»q_ty³ + + mty³ +; + +109 +p–še_lßdb_msg_»q_ty³ + + msubty³ +; + +112 +ušt8_t + + md©a +[5]; + +115  + sp–še_lßdb_’Œy_dbg_msg_r¥ + { + +116  + m¡©us +; + +117 * + m’Œy_±r +; + +120  +p–še_be_Ýs + +p–še_lßdb_be_Ýs +; + +121  + sv4_hdr_pÜt + { + +122  +v4_hdr + + mv4 +; + +123 +ušt16_t + + m¤c_pÜt +; + +124 +ušt16_t + + md¡_pÜt +; + +126 } +__©Œibu‹__ +(( +__·cked__ +)); + +127  + sv6_hdr_pÜt + { + +128  +v6_hdr + + mv6 +; + +129 +ušt16_t + + m¤c_pÜt +; + +130 +ušt16_t + + md¡_pÜt +; + +132 } +__©Œibu‹__ +(( +__·cked__ +)); + +134  + slb_pkt + { + +135  +‘h”_hdr + + m‘h +; + +137  +v4_hdr_pÜt + + mv4_pÜt +; + +138  +v6_hdr_pÜt + + mv6_pÜt +; + +140 } +__©Œibu‹__ +(( +__·cked__ +)); + +142 +ušt8_t + +ÿlcuϋ_lb_th»ad_´v +( +¹e_mbuf + * +pkt +, * +¬g +); + +143 +ušt8_t + +ÿlcuϋ_lb_th»ad_pub +( +¹e_mbuf + * +pkt +, * +¬g +); + +144  +check_lßdb_th»ad +( + +145  +­p_·¿ms + * +­p +, + +146  +p–še_·¿ms + * +·¿ms +, + +147 +št32_t + +n_vnf_th»ads +); + + @VIL/pipeline_master/pipeline_master.c + +17  + ~"p–še_ma¡”.h +" + +18  + ~"p–še_ma¡”_be.h +" + +20  +p–še_ã_Ýs + + gp–še_ma¡”_ã_Ýs + = { + +21 . +f_š™ + = +NULL +, + +22 . + gf_ä“ + = +NULL +, + +23 . + gcmds + = +NULL +, + +26  +p–še_ty³ + + gp–še_ma¡” + = { + +27 . +Çme + = "MASTER", + +28 . + gbe_Ýs + = & +p–še_ma¡”_be_Ýs +, + +29 . + gã_Ýs + = & +p–še_ma¡”_ã_Ýs +, + + @VIL/pipeline_master/pipeline_master.h + +17 #iâdeà +__INCLUDE_PIPELINE_MASTER_H__ + + +18  + #__INCLUDE_PIPELINE_MASTER_H__ + + + ) + +20  + ~"p–še.h +" + +22  +p–še_ty³ + +p–še_ma¡” +; + + @VIL/pipeline_master/pipeline_master_be.c + +17  + ~ + +18  + ~ + +20  + ~<¹e_commÚ.h +> + +21  + ~<¹e_m®loc.h +> + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28  + ~"­p.h +" + +29  + ~"p–še_ma¡”_be.h +" + +31  + sp–še_ma¡” + { + +32  +­p_·¿ms + * + m­p +; + +33  +cmdlše + * + mþ +; + +34  + msüt_fže_dÚe +; + +35 } + g__¹e_ÿche_®igÃd +; + +38 + $p–še_š™ +( +__¹e_unu£d +  +p–še_·¿ms + * +·¿ms +, * +¬g +) + +40  +­p_·¿ms + * +­p + = (­p_·¿m *è +¬g +; + +41  +p–še_ma¡” + * +p +; + +42 +ušt32_t + +size +; + +45 ià( +­p + =ð +NULL +) + +46  +NULL +; + +49 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +p–še_ma¡” +)); + +50 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +51 ià( +p + =ð +NULL +) + +52  +NULL +; + +55 +p +-> +­p + =‡pp; + +57 +p +-> +þ + = + `cmdlše_¡dš_Ãw +( +­p +-> +cmds +, "pipeline> "); + +58 ià( +p +-> +þ + =ð +NULL +) { + +59 + `¹e_ä“ +( +p +); + +60  +NULL +; + +63 +p +-> +süt_fže_dÚe + = 0; + +64 ià( +­p +-> +süt_fže + =ð +NULL +) + +65 +p +-> +süt_fže_dÚe + = 1; + +67  (*è +p +; + +68 + } +} + +71 + $p–še_ä“ +(* +p–še +) + +73  +p–še_ma¡” + * +p + = (p–še_ma¡” *è +p–še +; + +75 ià( +p + =ð +NULL +) + +76  - +EINVAL +; + +78 + `cmdlše_¡dš_ex™ +( +p +-> +þ +); + +79 + `¹e_ä“ +( +p +); + +82 + } +} + +85 + $p–še_run +(* +p–še +) + +87  +p–še_ma¡” + * +p + = (p–še_ma¡” *è +p–še +; + +88  +¡©us +; + +90 ià( +p +-> +süt_fže_dÚe + == 0) { + +91  +­p_·¿ms + * +­p + = +p +->app; + +92  +fd + = + `ݒ +( +­p +-> +süt_fže +, +O_RDONLY +); + +94 ià( +fd + < 0) + +95 + `´štf +("Cannot open CLI script file \"%s\"\n", + +96 +­p +-> +süt_fže +); + +98  +cmdlše + * +fže_þ +; + +100 + `´štf +("Running CLI script file \"%s\" ...\n", + +101 +­p +-> +süt_fže +); + +102 +fže_þ + = + `cmdlše_Ãw +( +p +-> +þ +-> +ùx +, "", +fd +, 1); + +103 + `cmdlše_š‹¿ù +( +fže_þ +); + +104 + `þo£ +( +fd +); + +107 +p +-> +süt_fže_dÚe + = 1; + +110 +¡©us + = + `cmdlše_pÞl +( +p +-> +þ +); + +111 ià( +¡©us + < 0) + +112 + `¹e_·nic +("CLI…ÞȔrÜ (%" +PRId32 + ")\n", +¡©us +); + +113 ià( +¡©us + =ð +RDLINE_EXITED +) { + +114 + `cmdlše_¡dš_ex™ +( +p +-> +þ +); + +115 + `¹e_ex™ +(0, "Bye!\n"); + +119 + } +} + +122 + $p–še_tim” +( +__¹e_unu£d + * +p–še +) + +124 + `¹e_tim”_mªage +(); + +126 + } +} + +128  +p–še_be_Ýs + + gp–še_ma¡”_be_Ýs + = { + +129 . +f_š™ + = +p–še_š™ +, + +130 . + gf_ä“ + = +p–še_ä“ +, + +131 . + gf_run + = +p–še_run +, + +132 . + gf_tim” + = +p–še_tim” +, + +133 . + gf_Œack + = +NULL +, + + @VIL/pipeline_master/pipeline_master_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_MASTER_BE_H__ + + +18  + #__INCLUDE_PIPELINE_MASTER_BE_H__ + + + ) + +20  + ~"p–še_commÚ_be.h +" + +22  +p–še_be_Ýs + +p–še_ma¡”_be_Ýs +; + + @VIL/pipeline_passthrough/pipeline_passthrough.c + +17  + ~"p–še_·s¡hrough.h +" + +18  + ~"p–še_·s¡hrough_be.h +" + +20  +p–še_ã_Ýs + + gp–še_·s¡hrough_ã_Ýs + = { + +21 . +f_š™ + = +NULL +, + +22 . + gf_ä“ + = +NULL +, + +23 . + gcmds + = +NULL +, + +26  +p–še_ty³ + + gp–še_·s¡hrough + = { + +27 . +Çme + = "PASS-THROUGH", + +28 . + gbe_Ýs + = & +p–še_·s¡hrough_be_Ýs +, + +29 . + gã_Ýs + = & +p–še_·s¡hrough_ã_Ýs +, + + @VIL/pipeline_passthrough/pipeline_passthrough.h + +17 #iâdeà +__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + +18  + #__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + + ) + +20  + ~"p–še.h +" + +22  +p–še_ty³ + +p–še_·s¡hrough +; + + @VIL/pipeline_passthrough/pipeline_passthrough_be.c + +17  + ~<¡ršg.h +> + +19  + ~<¹e_commÚ.h +> + +20  + ~<¹e_m®loc.h +> + +21  + ~<¹e_by‹Üd”.h +> + +22  + ~<¹e_bË_¡ub.h +> + +23  + ~<¹e_bË_hash.h +> + +24  + ~<¹e_p–še.h +> + +26  + ~"p–še_·s¡hrough_be.h +" + +27  + ~"p–še_aùiÚs_commÚ.h +" + +28  + ~"·r£r.h +" + +29  + ~"hash_func.h +" + +31  + sp–še_·s¡hrough + { + +32  +p–še + + mp +; + +33  +p–še_·s¡hrough_·¿ms + + m·¿ms +; + +34 +¹e_bË_hash_Ý_hash + + mf_hash +; + +35 } + g__¹e_ÿche_®igÃd +; + +37  +p–še_msg_»q_hªdËr + + ghªdËrs +[] = { + +38 [ +PIPELINE_MSG_REQ_PING +] = + +39 +p–še_msg_»q_pšg_hªdËr +, + +40 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +41 +p–še_msg_»q_¡©s_pÜt_š_hªdËr +, + +42 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +43 +p–še_msg_»q_¡©s_pÜt_out_hªdËr +, + +44 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +45 +p–še_msg_»q_¡©s_bË_hªdËr +, + +46 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +47 +p–še_msg_»q_pÜt_š_’abË_hªdËr +, + +48 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +49 +p–še_msg_»q_pÜt_š_di§bË_hªdËr +, + +50 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +51 +p–še_msg_»q_šv®id_hªdËr +, + +54  +šlše + +__©Œibu‹__ +(( +®ways_šlše +))  + +55 + $pkt_wÜk +( + +56  +¹e_mbuf + * +pkt +, + +57 * +¬g +, + +58 +ušt32_t + +dma_size +, + +59 +ušt32_t + +hash_’abËd +, + +60 +ušt32_t + +lb_hash +, + +61 +ušt32_t + +pÜt_out_pow2 +) + +63  +p–še_·s¡hrough + * +p + = +¬g +; + +65 +ušt64_t + * +dma_d¡ + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +66 +p +-> +·¿ms +. +dma_d¡_off£t +); + +67 +ušt64_t + * +dma_¤c + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +68 +p +-> +·¿ms +. +dma_¤c_off£t +); + +69 +ušt64_t + * +dma_mask + = (ušt64_ˆ*è +p +-> +·¿ms +. +dma_¤c_mask +; + +70 +ušt32_t + * +dma_hash + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +71 +p +-> +·¿ms +. +dma_hash_off£t +); + +72 +ušt32_t + +i +; + +75  +i + = 0; i < ( +dma_size + / 8); i++) + +76 +dma_d¡ +[ +i +] = +dma_¤c +[i] & +dma_mask +[i]; + +79 ià( +hash_’abËd +) { + +80 +ušt32_t + +hash + = +p +-> + `f_hash +( +dma_d¡ +, +dma_size +, 0); + +81 * +dma_hash + = +hash +; + +83 ià( +lb_hash +) { + +84 +ušt32_t + +pÜt_out +; + +86 ià( +pÜt_out_pow2 +) + +87 +pÜt_out + + +88 ð +hash + & ( +p +->p. +n_pÜts_out + - 1); + +90 +pÜt_out + + +91 ð +hash + % +p +->p. +n_pÜts_out +; + +93 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p +->p.p, + +94 +pÜt_out +, +pkt +); + +97 + } +} + +99  +šlše + +__©Œibu‹__ +(( +®ways_šlše +))  + +100 + $pkt4_wÜk +( + +101  +¹e_mbuf + ** +pkts +, + +102 * +¬g +, + +103 +ušt32_t + +dma_size +, + +104 +ušt32_t + +hash_’abËd +, + +105 +ušt32_t + +lb_hash +, + +106 +ušt32_t + +pÜt_out_pow2 +) + +108  +p–še_·s¡hrough + * +p + = +¬g +; + +110 +ušt64_t + * +dma_d¡0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +111 +p +-> +·¿ms +. +dma_d¡_off£t +); + +112 +ušt64_t + * +dma_d¡1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +113 +p +-> +·¿ms +. +dma_d¡_off£t +); + +114 +ušt64_t + * +dma_d¡2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +115 +p +-> +·¿ms +. +dma_d¡_off£t +); + +116 +ušt64_t + * +dma_d¡3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +117 +p +-> +·¿ms +. +dma_d¡_off£t +); + +119 +ušt64_t + * +dma_¤c0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +120 +p +-> +·¿ms +. +dma_¤c_off£t +); + +121 +ušt64_t + * +dma_¤c1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +122 +p +-> +·¿ms +. +dma_¤c_off£t +); + +123 +ušt64_t + * +dma_¤c2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +124 +p +-> +·¿ms +. +dma_¤c_off£t +); + +125 +ušt64_t + * +dma_¤c3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +126 +p +-> +·¿ms +. +dma_¤c_off£t +); + +128 +ušt64_t + * +dma_mask + = (ušt64_ˆ*è +p +-> +·¿ms +. +dma_¤c_mask +; + +130 +ušt32_t + * +dma_hash0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[0], + +131 +p +-> +·¿ms +. +dma_hash_off£t +); + +132 +ušt32_t + * +dma_hash1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[1], + +133 +p +-> +·¿ms +. +dma_hash_off£t +); + +134 +ušt32_t + * +dma_hash2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[2], + +135 +p +-> +·¿ms +. +dma_hash_off£t +); + +136 +ušt32_t + * +dma_hash3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[3], + +137 +p +-> +·¿ms +. +dma_hash_off£t +); + +139 +ušt32_t + +i +; + +142  +i + = 0; i < ( +dma_size + / 8); i++) { + +143 +dma_d¡0 +[ +i +] = +dma_¤c0 +[i] & +dma_mask +[i]; + +144 +dma_d¡1 +[ +i +] = +dma_¤c1 +[i] & +dma_mask +[i]; + +145 +dma_d¡2 +[ +i +] = +dma_¤c2 +[i] & +dma_mask +[i]; + +146 +dma_d¡3 +[ +i +] = +dma_¤c3 +[i] & +dma_mask +[i]; + +150 ià( +hash_’abËd +) { + +151 +ušt32_t + +hash0 + = +p +-> + `f_hash +( +dma_d¡0 +, +dma_size +, 0); + +152 +ušt32_t + +hash1 + = +p +-> + `f_hash +( +dma_d¡1 +, +dma_size +, 0); + +153 +ušt32_t + +hash2 + = +p +-> + `f_hash +( +dma_d¡2 +, +dma_size +, 0); + +154 +ušt32_t + +hash3 + = +p +-> + `f_hash +( +dma_d¡3 +, +dma_size +, 0); + +156 * +dma_hash0 + = +hash0 +; + +157 * +dma_hash1 + = +hash1 +; + +158 * +dma_hash2 + = +hash2 +; + +159 * +dma_hash3 + = +hash3 +; + +161 ià( +lb_hash +) { + +162 +ušt32_t + +pÜt_out0 +, +pÜt_out1 +, +pÜt_out2 +, +pÜt_out3 +; + +164 ià( +pÜt_out_pow2 +) { + +165 +pÜt_out0 + + +166 ð +hash0 + & ( +p +->p. +n_pÜts_out + - 1); + +167 +pÜt_out1 + + +168 ð +hash1 + & ( +p +->p. +n_pÜts_out + - 1); + +169 +pÜt_out2 + + +170 ð +hash2 + & ( +p +->p. +n_pÜts_out + - 1); + +171 +pÜt_out3 + + +172 ð +hash3 + & ( +p +->p. +n_pÜts_out + - 1); + +174 +pÜt_out0 + + +175 ð +hash0 + % +p +->p. +n_pÜts_out +; + +176 +pÜt_out1 + + +177 ð +hash1 + % +p +->p. +n_pÜts_out +; + +178 +pÜt_out2 + + +179 ð +hash2 + % +p +->p. +n_pÜts_out +; + +180 +pÜt_out3 + + +181 ð +hash3 + % +p +->p. +n_pÜts_out +; + +183 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p +->p.p, + +184 +pÜt_out0 +, +pkts +[0]); + +185 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p +->p.p, + +186 +pÜt_out1 +, +pkts +[1]); + +187 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p +->p.p, + +188 +pÜt_out2 +, +pkts +[2]); + +189 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p +->p.p, + +190 +pÜt_out3 +, +pkts +[3]); + +193 + } +} + +195  + #PKT_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +196  +šlše + \ + +197 +pkt_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +198 ## +_lb +## +lb_hash +## +_pw +## + `pÜt_pow2 +( \ + +199  +¹e_mbuf + * +pkt +, \ + +200 * +¬g +) \ + +202 + `pkt_wÜk +( +pkt +, +¬g +, +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +); \ + +203 } + + ) + +205  + #PKT4_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +206  +šlše + \ + +207 +pkt4_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +208 ## +_lb +## +lb_hash +## +_pw +## + `pÜt_pow2 +( \ + +209  +¹e_mbuf + ** +pkts +, \ + +210 * +¬g +) \ + +212 + `pkt4_wÜk +( +pkts +, +¬g +, +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +); \ + +213 } + + ) + +215  + #pÜt_š_ah +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +216 + `PKT_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +217 + `PKT4_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +218 + `PIPELINE_PORT_IN_AH +( +pÜt_š_ah_size +## +dma_size +## +_hash + \ + +219 ## +hash_’abËd +## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +, \ + +220 +pkt_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +221 ## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +, \ + +222 +pkt4_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +223 ## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +) + + ) + +226  + #pÜt_š_ah_lb +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +227 + `PKT_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +228 + `PKT4_WORK +( +dma_size +, +hash_’abËd +, +lb_hash +, +pÜt_pow2 +) \ + +229 + `PIPELINE_PORT_IN_AH_HIJACK_ALL +( \ + +230 +pÜt_š_ah_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +231 ## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +, \ + +232 +pkt_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +233 ## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +, \ + +234 +pkt4_wÜk_size +## +dma_size +## +_hash +## +hash_’abËd + \ + +235 ## +_lb +## +lb_hash +## +_pw +## +pÜt_pow2 +) + + ) + +239 + $pÜt_š_ah +(8, 0, 0, 0) + +240 + $pÜt_š_ah +(8, 1, 0, 0) + +241 + $pÜt_š_ah_lb +(8, 1, 1, 0) + +242 + $pÜt_š_ah_lb +(8, 1, 1, 1) + +244 + $pÜt_š_ah +(16, 0, 0, 0) + +245 + $pÜt_š_ah +(16, 1, 0, 0) + +246 + $pÜt_š_ah_lb +(16, 1, 1, 0) + +247 + $pÜt_š_ah_lb +(16, 1, 1, 1) + +249 + $pÜt_š_ah +(24, 0, 0, 0) + +250 + $pÜt_š_ah +(24, 1, 0, 0) + +251 + $pÜt_š_ah_lb +(24, 1, 1, 0) + +252 + $pÜt_š_ah_lb +(24, 1, 1, 1) + +254 + $pÜt_š_ah +(32, 0, 0, 0) + +255 + $pÜt_š_ah +(32, 1, 0, 0) + +256 + $pÜt_š_ah_lb +(32, 1, 1, 0) + +257 + $pÜt_š_ah_lb +(32, 1, 1, 1) + +259 + $pÜt_š_ah +(40, 0, 0, 0) + +260 + $pÜt_š_ah +(40, 1, 0, 0) + +261 + $pÜt_š_ah_lb +(40, 1, 1, 0) + +262 + $pÜt_š_ah_lb +(40, 1, 1, 1) + +264 + $pÜt_š_ah +(48, 0, 0, 0) + +265 + $pÜt_š_ah +(48, 1, 0, 0) + +266 + $pÜt_š_ah_lb +(48, 1, 1, 0) + +267 + $pÜt_š_ah_lb +(48, 1, 1, 1) + +269 + $pÜt_š_ah +(56, 0, 0, 0) + +270 + $pÜt_š_ah +(56, 1, 0, 0) + +271 + $pÜt_š_ah_lb +(56, 1, 1, 0) + +272 + $pÜt_š_ah_lb +(56, 1, 1, 1) + +274 + $pÜt_š_ah +(64, 0, 0, 0) + +275 + $pÜt_š_ah +(64, 1, 0, 0) + +276 + $pÜt_š_ah_lb +(64, 1, 1, 0) + +277 + $pÜt_š_ah_lb +(64, 1, 1, 1) + +279  +¹e_p–še_pÜt_š_aùiÚ_hªdËr + + +280 + $g‘_pÜt_š_ah +( +p–še_·s¡hrough + * +p +) + +282 ià( +p +-> +·¿ms +. +dma_’abËd + == 0) + +283  +NULL +; + +285 ià( +p +-> +·¿ms +. +dma_hash_’abËd +) { + +286 ià( +p +-> +·¿ms +. +lb_hash_’abËd +) { + +287 ià( + `¹e_is_pow”_of_2 +( +p +->p. +n_pÜts_out +)) + +288  +p +-> +·¿ms +. +dma_size +) { + +290 8:  +pÜt_š_ah_size8_hash1_lb1_pw1 +; + +291 16:  +pÜt_š_ah_size16_hash1_lb1_pw1 +; + +292 24:  +pÜt_š_ah_size24_hash1_lb1_pw1 +; + +293 32:  +pÜt_š_ah_size32_hash1_lb1_pw1 +; + +294 40:  +pÜt_š_ah_size40_hash1_lb1_pw1 +; + +295 48:  +pÜt_š_ah_size48_hash1_lb1_pw1 +; + +296 56:  +pÜt_š_ah_size56_hash1_lb1_pw1 +; + +297 64:  +pÜt_š_ah_size64_hash1_lb1_pw1 +; + +298 :  +NULL +; + +301  +p +-> +·¿ms +. +dma_size +) { + +303 8:  +pÜt_š_ah_size8_hash1_lb1_pw0 +; + +304 16:  +pÜt_š_ah_size16_hash1_lb1_pw0 +; + +305 24:  +pÜt_š_ah_size24_hash1_lb1_pw0 +; + +306 32:  +pÜt_š_ah_size32_hash1_lb1_pw0 +; + +307 40:  +pÜt_š_ah_size40_hash1_lb1_pw0 +; + +308 48:  +pÜt_š_ah_size48_hash1_lb1_pw0 +; + +309 56:  +pÜt_š_ah_size56_hash1_lb1_pw0 +; + +310 64:  +pÜt_š_ah_size64_hash1_lb1_pw0 +; + +311 :  +NULL +; + +314  +p +-> +·¿ms +. +dma_size +) { + +316 8:  +pÜt_š_ah_size8_hash1_lb0_pw0 +; + +317 16:  +pÜt_š_ah_size16_hash1_lb0_pw0 +; + +318 24:  +pÜt_š_ah_size24_hash1_lb0_pw0 +; + +319 32:  +pÜt_š_ah_size32_hash1_lb0_pw0 +; + +320 40:  +pÜt_š_ah_size40_hash1_lb0_pw0 +; + +321 48:  +pÜt_š_ah_size48_hash1_lb0_pw0 +; + +322 56:  +pÜt_š_ah_size56_hash1_lb0_pw0 +; + +323 64:  +pÜt_š_ah_size64_hash1_lb0_pw0 +; + +324 :  +NULL +; + +327  +p +-> +·¿ms +. +dma_size +) { + +329 8:  +pÜt_š_ah_size8_hash0_lb0_pw0 +; + +330 16:  +pÜt_š_ah_size16_hash0_lb0_pw0 +; + +331 24:  +pÜt_š_ah_size24_hash0_lb0_pw0 +; + +332 32:  +pÜt_š_ah_size32_hash0_lb0_pw0 +; + +333 40:  +pÜt_š_ah_size40_hash0_lb0_pw0 +; + +334 48:  +pÜt_š_ah_size48_hash0_lb0_pw0 +; + +335 56:  +pÜt_š_ah_size56_hash0_lb0_pw0 +; + +336 64:  +pÜt_š_ah_size64_hash0_lb0_pw0 +; + +337 :  +NULL +; + +339 + } +} + +342 + $p–še_·s¡hrough_·r£_¬gs +( +p–še_·s¡hrough_·¿ms + * +p +, + +343  +p–še_·¿ms + * +·¿ms +) + +345 +ušt32_t + +dma_d¡_off£t_´e£Á + = 0; + +346 +ušt32_t + +dma_¤c_off£t_´e£Á + = 0; + +347 +ušt32_t + +dma_¤c_mask_´e£Á + = 0; + +348 +ušt32_t + +dma_size_´e£Á + = 0; + +349 +ušt32_t + +dma_hash_off£t_´e£Á + = 0; + +350 +ušt32_t + +lb_´e£Á + = 0; + +351 +ušt32_t + +i +; + +352  +dma_mask_¡r +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + * 2]; + +355 +p +-> +dma_’abËd + = 0; + +356 +p +-> +dma_hash_’abËd + = 0; + +357 +p +-> +lb_hash_’abËd + = 0; + +358 + `mem£t +( +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_v®ue + = +·¿ms +-> +¬gs_v®ue +[ +i +]; + +365 ià( + `¡rcmp +( +¬g_Çme +, "dma_dst_offset") == 0) { + +366  +¡©us +; + +368 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +369 +dma_d¡_off£t_´e£Á + =ð0, +·¿ms +-> +Çme +, + +370 +¬g_Çme +); + +371 +dma_d¡_off£t_´e£Á + = 1; + +373 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +dma_d¡_off£t +, + +374 +¬g_v®ue +); + +375 + `PIPELINE_PARSE_ERR_INV_VAL +(( +¡©us + !ð- +EINVAL +), + +376 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +377 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +¡©us + !ð- +ERANGE +), + +378 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +380 +p +-> +dma_’abËd + = 1; + +386 ià( + `¡rcmp +( +¬g_Çme +, "dma_src_offset") == 0) { + +387  +¡©us +; + +389 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +390 +dma_¤c_off£t_´e£Á + =ð0, +·¿ms +-> +Çme +, + +391 +¬g_Çme +); + +392 +dma_¤c_off£t_´e£Á + = 1; + +394 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +dma_¤c_off£t +, + +395 +¬g_v®ue +); + +396 + `PIPELINE_PARSE_ERR_INV_VAL +(( +¡©us + !ð- +EINVAL +), + +397 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +398 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +¡©us + !ð- +ERANGE +), + +399 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +401 +p +-> +dma_’abËd + = 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 + = + `·r£r_»ad_ušt32 +(& +p +-> +dma_size +, + +416 +¬g_v®ue +); + +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_v®ue +); + +421 + `PIPELINE_PARSE_ERR_OUT_RNG +((( +¡©us + !ð- +ERANGE +) && + +422 ( +p +-> +dma_size + <= + +423 +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX +)), + +424 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +426 +p +-> +dma_’abËd + = 1; + +432 ià( + `¡rcmp +( +¬g_Çme +, "dma_src_mask") == 0) { + +433  +mask_¡r_Ën + = + `¡¾’ +( +¬g_v®ue +); + +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\"oØlÚg", +·¿ms +-> +Çme +, + +444 +¬g_Çme +); + +446 + `¢´štf +( +dma_mask_¡r +, +mask_¡r_Ën + + 1, + +447 "%s", +¬g_v®ue +); + +449 +p +-> +dma_’abËd + = 1; + +455 ià( + `¡rcmp +( +¬g_Çme +, "dma_hash_offset") == 0) { + +456  +¡©us +; + +458 + `PIPELINE_PARSE_ERR_DUPLICATE +( + +459 +dma_hash_off£t_´e£Á + == 0, + +460 +·¿ms +-> +Çme +, +¬g_Çme +); + +461 +dma_hash_off£t_´e£Á + = 1; + +463 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +dma_hash_off£t +, + +464 +¬g_v®ue +); + +465 + `PIPELINE_PARSE_ERR_INV_VAL +(( +¡©us + !ð- +EINVAL +), + +466 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +467 + `PIPELINE_PARSE_ERR_OUT_RNG +(( +¡©us + !ð- +ERANGE +), + +468 +·¿ms +-> +Çme +, +¬g_Çme +, +¬g_v®ue +); + +470 +p +-> +dma_hash_’abËd + = 1; + +471 +p +-> +dma_’abËd + = 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_v®ue +, "hash") == 0) || + +484 ( + `¡rcmp +( +¬g_v®ue +, "HASH") == 0)) + +485 +p +-> +lb_hash_’abËd + = 1; + +487 + `PIPELINE_PARSE_ERR_INV_VAL +(0, + +488 +·¿ms +-> +Çme +, + +489 +¬g_Çme +, + +490 +¬g_v®ue +); + +496 + `PIPELINE_PARSE_ERR_INV_ENT +(0, +·¿ms +-> +Çme +, +¬g_Çme +); + +500 + `PIPELINE_ARG_CHECK +(( +dma_d¡_off£t_´e£Á + =ð +p +-> +dma_’abËd +), + +502 "\"dma_d¡_off£t\"", +·¿ms +-> +Çme +); + +503 + `PIPELINE_ARG_CHECK +(( +dma_¤c_off£t_´e£Á + =ð +p +-> +dma_’abËd +), + +505 "\"dma_¤c_off£t\"", +·¿ms +-> +Çme +); + +506 + `PIPELINE_ARG_CHECK +(( +dma_size_´e£Á + =ð +p +-> +dma_’abËd +), + +508 "\"dma_size\"", +·¿ms +-> +Çme +); + +509 + `PIPELINE_ARG_CHECK +(( +dma_hash_off£t_´e£Á + =ð +p +-> +dma_’abËd +), + +511 "\"dma_hash_off£t\"", +·¿ms +-> +Çme +); + +512 + `PIPELINE_ARG_CHECK +(( +p +-> +lb_hash_’abËd + <ðp-> +dma_hash_’abËd +), + +514 "\"dma_hash_off£t\"", +·¿ms +-> +Çme +); + +516 ià( +dma_¤c_mask_´e£Á +) { + +517 +ušt32_t + +dma_size + = +p +->dma_size; + +518  +¡©us +; + +520 + `PIPELINE_ARG_CHECK +(( + `¡¾’ +( +dma_mask_¡r +) == + +521 ( +dma_size + * 2)), "Parseƒrror in section " + +523 "dig™s", +·¿ms +-> +Çme +, ( +dma_size + * 2)); + +525 +¡©us + = + `·r£_hex_¡ršg +( +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_funùiÚ +( +p–še_·s¡hrough + * +p +) + +540  +p +-> +·¿ms +. +dma_size +) { + +542 8:  +hash_deçuÉ_key8 +; + +543 16:  +hash_deçuÉ_key16 +; + +544 24:  +hash_deçuÉ_key24 +; + +545 32:  +hash_deçuÉ_key32 +; + +546 40:  +hash_deçuÉ_key40 +; + +547 48:  +hash_deçuÉ_key48 +; + +548 56:  +hash_deçuÉ_key56 +; + +549 64:  +hash_deçuÉ_key64 +; + +550 :  +NULL +; + +552 + } +} + +555 + $p–še_·s¡hrough_š™ +( +p–še_·¿ms + * +·¿ms +, + +556 +__¹e_unu£d + * +¬g +) + +558  +p–še + * +p +; + +559  +p–še_·s¡hrough + * +p_± +; + +560 +ušt32_t + +size +, +i +; + +563 ià(( +·¿ms + =ð +NULL +) || + +564 ( +·¿ms +-> +n_pÜts_š + == 0) || + +565 ( +·¿ms +-> +n_pÜts_out + == 0) || + +566 ( +·¿ms +-> +n_pÜts_š + <…¬ams-> +n_pÜts_out +) || + +567 ( +·¿ms +-> +n_pÜts_š + %…¬ams-> +n_pÜts_out +)) + +568  +NULL +; + +571 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +p–še_·s¡hrough +)); + +572 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +573 +p_± + = ( +p–še_·s¡hrough + *è +p +; + +574 ià( +p + =ð +NULL +) + +575  +NULL +; + +577 + `¡rýy +( +p +-> +Çme +, +·¿ms +->name); + +578 +p +-> +log_Ëv– + = +·¿ms +->log_level; + +580 + `PLOG +( +p +, +HIGH +, "Pass-through"); + +583 ià( + `p–še_·s¡hrough_·r£_¬gs +(& +p_± +-> +·¿ms +,…arams)) + +584  +NULL +; + +585 +p_± +-> +f_hash + = + `g‘_hash_funùiÚ +(p_pt); + +589  +¹e_p–še_·¿ms + +p–še_·¿ms + = { + +590 . +Çme + = "PASS-THROUGH", + +591 . +sock‘_id + = +·¿ms +->socket_id, + +592 . +off£t_pÜt_id + = 0, + +595 +p +->°ð + `¹e_p–še_ü—‹ +(& +p–še_·¿ms +); + +596 ià( +p +->°=ð +NULL +) { + +597 + `¹e_ä“ +( +p +); + +598  +NULL +; + +602 +p +-> +n_pÜts_š + = +·¿ms +->n_ports_in; + +603 +p +-> +n_pÜts_out + = +·¿ms +->n_ports_out; + +604 +p +-> +n_bËs + =…-> +n_pÜts_š +; + +607  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +608  +¹e_p–še_pÜt_š_·¿ms + +pÜt_·¿ms + = { + +609 . +Ýs + = + `p–še_pÜt_š_·¿ms_g‘_Ýs +( + +610 & +·¿ms +-> +pÜt_š +[ +i +]), + +611 . +¬g_ü—‹ + = + `p–še_pÜt_š_·¿ms_cÚv”t +( + +612 & +·¿ms +-> +pÜt_š +[ +i +]), + +613 . +f_aùiÚ + = + `g‘_pÜt_š_ah +( +p_± +), + +614 . +¬g_ah + = +p_± +, + +615 . +bur¡_size + = +·¿ms +-> +pÜt_š +[ +i +].burst_size, + +618  +¡©us + = + `¹e_p–še_pÜt_š_ü—‹ +( +p +->p, + +619 & +pÜt_·¿ms +, + +620 & +p +-> +pÜt_š_id +[ +i +]); + +622 ià( +¡©us +) { + +623 + `¹e_p–še_ä“ +( +p +->p); + +624 + `¹e_ä“ +( +p +); + +625  +NULL +; + +630  +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +631  +¹e_p–še_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +632 . +Ýs + = + `p–še_pÜt_out_·¿ms_g‘_Ýs +( + +633 & +·¿ms +-> +pÜt_out +[ +i +]), + +634 . +¬g_ü—‹ + = + `p–še_pÜt_out_·¿ms_cÚv”t +( + +635 & +·¿ms +-> +pÜt_out +[ +i +]), + +636 . +f_aùiÚ + = +NULL +, + +637 . +¬g_ah + = +NULL +, + +640  +¡©us + = + `¹e_p–še_pÜt_out_ü—‹ +( +p +->p, + +641 & +pÜt_·¿ms +, + +642 & +p +-> +pÜt_out_id +[ +i +]); + +644 ià( +¡©us +) { + +645 + `¹e_p–še_ä“ +( +p +->p); + +646 + `¹e_ä“ +( +p +); + +647  +NULL +; + +652  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +653  +¹e_p–še_bË_·¿ms + +bË_·¿ms + = { + +654 . +Ýs + = & +¹e_bË_¡ub_Ýs +, + +655 . +¬g_ü—‹ + = +NULL +, + +656 . +f_aùiÚ_h™ + = +NULL +, + +657 . +f_aùiÚ_miss + = +NULL +, + +658 . +¬g_ah + = +NULL +, + +659 . +aùiÚ_d©a_size + = 0, + +662  +¡©us + = + `¹e_p–še_bË_ü—‹ +( +p +->p, + +663 & +bË_·¿ms +, + +664 & +p +-> +bË_id +[ +i +]); + +666 ià( +¡©us +) { + +667 + `¹e_p–še_ä“ +( +p +->p); + +668 + `¹e_ä“ +( +p +); + +669  +NULL +; + +674  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +675  +¡©us + = + `¹e_p–še_pÜt_š_cÚÃù_to_bË +( +p +->p, + +676 +p +-> +pÜt_š_id +[ +i +], + +677 +p +-> +bË_id +[ +i +]); + +679 ià( +¡©us +) { + +680 + `¹e_p–še_ä“ +( +p +->p); + +681 + `¹e_ä“ +( +p +); + +682  +NULL +; + +687  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +688  +¹e_p–še_bË_’Œy + +deçuÉ_’Œy + = { + +689 . +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +, + +690 {. +pÜt_id + = +p +-> +pÜt_out_id +[ + +691 +i + / ( +p +-> +n_pÜts_š + /…-> +n_pÜts_out +)]}, + +694  +¹e_p–še_bË_’Œy + * +deçuÉ_’Œy_±r +; + +696  +¡©us + = + `¹e_p–še_bË_deçuÉ_’Œy_add +( +p +->p, + +697 +p +-> +bË_id +[ +i +], + +698 & +deçuÉ_’Œy +, + +699 & +deçuÉ_’Œy_±r +); + +701 ià( +¡©us +) { + +702 + `¹e_p–še_ä“ +( +p +->p); + +703 + `¹e_ä“ +( +p +); + +704  +NULL +; + +709  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +710  +¡©us + = + `¹e_p–še_pÜt_š_’abË +( +p +->p, + +711 +p +-> +pÜt_š_id +[ +i +]); + +713 ià( +¡©us +) { + +714 + `¹e_p–še_ä“ +( +p +->p); + +715 + `¹e_ä“ +( +p +); + +716  +NULL +; + +721 ià( + `¹e_p–še_check +( +p +->p) < 0) { + +722 + `¹e_p–še_ä“ +( +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 + `memýy +( +p +-> +hªdËrs +, handlers, (p->handlers)); + +737  +p +; + +738 + } +} + +741 + $p–še_·s¡hrough_ä“ +(* +p–še +) + +743  +p–še + * +p + = (pipeline *)…ipeline; + +746 ià( +p + =ð +NULL +) + +750 + `¹e_p–še_ä“ +( +p +->p); + +751 + `¹e_ä“ +( +p +); + +753 + } +} + +756 + $p–še_·s¡hrough_tim” +(* +p–še +) + +758  +p–še + * +p + = (pipeline *)…ipeline; + +760 + `p–še_msg_»q_hªdË +( +p +); + +761 + `¹e_p–še_æush +( +p +->p); + +764 + } +} + +767 + $p–še_·s¡hrough_Œack +(* +p–še +, +ušt32_t + +pÜt_š +, ušt32_ˆ* +pÜt_out +) + +769  +p–še + * +p + = (pipeline *)…ipeline; + +772 ià(( +p + =ð +NULL +) || + +773 ( +pÜt_š + >ð +p +-> +n_pÜts_š +) || + +774 ( +pÜt_out + =ð +NULL +)) + +777 * +pÜt_out + = +pÜt_š + / +p +-> +n_pÜts_š +; + +779 + } +} + +781  +p–še_be_Ýs + + gp–še_·s¡hrough_be_Ýs + = { + +782 . +f_š™ + = +p–še_·s¡hrough_š™ +, + +783 . + gf_ä“ + = +p–še_·s¡hrough_ä“ +, + +784 . + gf_run + = +NULL +, + +785 . + gf_tim” + = +p–še_·s¡hrough_tim” +, + +786 . + gf_Œack + = +p–še_·s¡hrough_Œack +, + + @VIL/pipeline_passthrough/pipeline_passthrough_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_PASSTHROUGH_BE_H__ + + +18  + #__INCLUDE_PIPELINE_PASSTHROUGH_BE_H__ + + + ) + +20  + ~"p–še_commÚ_be.h +" + +22  + #PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + 64 + + ) + +24  + sp–še_·s¡hrough_·¿ms + { + +25 +ušt32_t + + mdma_’abËd +; + +26 +ušt32_t + + mdma_d¡_off£t +; + +27 +ušt32_t + + mdma_¤c_off£t +; + +28 +ušt8_t + + mdma_¤c_mask +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX +]; + +29 +ušt32_t + + mdma_size +; + +31 +ušt32_t + + mdma_hash_’abËd +; + +32 +ušt32_t + + mdma_hash_off£t +; + +33 +ušt32_t + + mlb_hash_’abËd +; + +37 +p–še_·s¡hrough_·r£_¬gs +( +p–še_·s¡hrough_·¿ms + * +p +, + +38  +p–še_·¿ms + * +·¿ms +); + +40  +p–še_be_Ýs + +p–še_·s¡hrough_be_Ýs +; + + @VIL/pipeline_txrx/pipeline_txrx.c + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +23  + ~"­p.h +" + +24  + ~"p–še_commÚ_ã.h +" + +25  + ~"p–še_txrx.h +" + +26  + ~"vnf_commÚ.h +" + +28  + ~"p–še_¬picmp_be.h +" + +31 + $­p_p–še_txrx_’Œy_dbg +( +­p_·¿ms + * +­p +, + +32 +ušt32_t + +p–še_id +, +ušt8_t + * +msg +) + +34  +p–še_txrx_’Œy_dbg_msg_»q + * +»q +; + +35  +p–še_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 +-> +d©a +[0] = +msg +[0]; + +49 +»q +-> +d©a +[1] = +msg +[1]; + +51 +r¥ + = + `­p_msg_£nd_»cv +( +­p +, +p–še_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 +cmdlše_fixed_¡ršg_t + + mp_¡ršg +; + +75 +ušt32_t + + mp +; + +76 +cmdlše_fixed_¡ršg_t + + m’Œy_¡ršg +; + +77 +cmdlše_fixed_¡ršg_t + + mdbg_¡ršg +; + +78 +ušt8_t + + mcmd +; + +79 +ušt8_t + + md1 +; + +83 + $cmd_’Œy_dbg_·r£d +(* +·r£d_»suÉ +, + +84 +__¹e_unu£d +  +cmdlše + * +þ +, * +d©a +) + +86  +cmd_’Œy_dbg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +87  +­p_·¿ms + * +­p + = +d©a +; + +88 +ušt8_t + +msg +[2]; + +89  +¡©us +; + +91 +msg +[0] = +·¿ms +-> +cmd +; + +92 +msg +[1] = +·¿ms +-> +d1 +; + +93 +¡©us + = + `­p_p–še_txrx_’Œy_dbg +( +­p +, +·¿ms +-> +p +, +msg +); + +95 ià( +¡©us + != 0) { + +96 + `´štf +("Dbg Command failed\n"); + +99 + } +} + +101  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_p_¡ršg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p_¡ršg +, "p"); + +104  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +p +, +UINT32 +); + +107  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_’Œy_¡ršg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, + +109 +’Œy_¡ršg +, "txrx"); + +111  +cmdlše_·r£_tok’_¡ršg_t + + glb_cmd_’Œy_dbg_dbg_¡ršg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +dbg_¡ršg +, + +115  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +cmd +, +UINT8 +); + +118  +cmdlše_·r£_tok’_num_t + + glb_cmd_’Œy_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_’Œy_dbg_»suÉ +, +d1 +, +UINT8 +); + +121  +cmdlše_·r£_š¡_t + + glb_cmd_’Œy_dbg + = { + +122 . +f + = +cmd_’Œy_dbg_·r£d +, + +123 . + gd©a + = +NULL +, + +124 . + gh–p_¡r + = "TXRX dbg cmd", + +125 . + gtok’s + = { + +126 (*)& +lb_cmd_’Œy_dbg_p_¡ršg +, + +127 (*)& +lb_cmd_’Œy_dbg_p +, + +128 (*)& +lb_cmd_’Œy_dbg_’Œy_¡ršg +, + +129 (*)& +lb_cmd_’Œy_dbg_dbg_¡ršg +, + +130 (*)& +lb_cmd_’Œy_dbg_cmd +, + +131 (*)& +lb_cmd_’Œy_dbg_d1 +, + +132 +NULL +, + +136  +cmdlše_·r£_ùx_t + + gp–še_cmds +[] = { + +137 ( +cmdlše_·r£_š¡_t + *è& +lb_cmd_’Œy_dbg +, + +138 +NULL +, + +141  +p–še_ã_Ýs + + gp–še_txrx_ã_Ýs + = { + +142 . +f_š™ + = +NULL +, + +143 . + gf_ä“ + = +NULL +, + +144 . + gcmds + = +p–še_cmds +, + +147  +p–še_ty³ + + gp–še_txrx + = { + +148 . +Çme + = "TXRX", + +149 . + gbe_Ýs + = & +p–še_txrx_be_Ýs +, + +150 . + gã_Ýs + = & +p–še_txrx_ã_Ýs +, + + @VIL/pipeline_txrx/pipeline_txrx.h + +17 #iâdeà +__INCLUDE_PIPELINE_TXRX_H__ + + +18  + #__INCLUDE_PIPELINE_TXRX_H__ + + + ) + +20  + ~"p–še.h +" + +21  + ~"p–še_txrx_be.h +" + +26  +p–še_ty³ + +p–še_txrx +; + + @VIL/pipeline_txrx/pipeline_txrx_be.c + +17  + ~<¡ršg.h +> + +19  + ~<¹e_commÚ.h +> + +20  + ~<¹e_m®loc.h +> + +21  + ~<¹e_by‹Üd”.h +> + +22  + ~<¹e_bË_¡ub.h +> + +23  + ~<¹e_bË_hash.h +> + +24  + ~<¹e_p–še.h +> + +26  + ~"p–še_txrx_be.h +" + +27  + ~"p–še_aùiÚs_commÚ.h +" + +28  + ~"·r£r.h +" + +29  + ~"hash_func.h +" + +30  + ~"p–še_¬picmp_be.h +" + +31  + ~"vnf_commÚ.h +" + +32  + ~"­p.h +" + +33 #iâdeà +VNF_ACL + + +34  + ~"lib_icmpv6.h +" + +37 +ušt8_t + + gTXRX_DEBUG +; + +38  + gpkt_bur¡_út +; + +40  + sp–še_txrx + { + +41  +p–še + + mp +; + +42 +p–še_msg_»q_hªdËr + + +43 + mcu¡om_hªdËrs +[ +PIPELINE_TXRX_MSG_REQS +]; + +44 +ušt64_t + + m»ûivedPktCouÁ +; + +45 +ušt64_t + + mdrݳdPktCouÁ +; + +46 +ušt8_t + + mlšks_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +47 +ušt8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +48 +ušt8_t + + mp–še_num +; + +49 +ušt8_t + + mtxrx_ty³ +; + +50 } + g__¹e_ÿche_®igÃd +; + +53 + mTYPE_TXTX +, + +54 + mTYPE_RXRX +, + +56 * +p–še_txrx_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, + +57 * +msg +); + +59  +p–še_msg_»q_hªdËr + + ghªdËrs +[] = { + +60 [ +PIPELINE_MSG_REQ_PING +] = + +61 +p–še_msg_»q_pšg_hªdËr +, + +62 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +63 +p–še_msg_»q_¡©s_pÜt_š_hªdËr +, + +64 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +65 +p–še_msg_»q_¡©s_pÜt_out_hªdËr +, + +66 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +67 +p–še_msg_»q_¡©s_bË_hªdËr +, + +68 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +69 +p–še_msg_»q_pÜt_š_’abË_hªdËr +, + +70 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +71 +p–še_msg_»q_pÜt_š_di§bË_hªdËr +, + +72 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +73 +p–še_txrx_msg_»q_cu¡om_hªdËr +, + +77 * +p–še_txrx_msg_»q_’Œy_dbg_hªdËr +( +p–še + * +p +, + +78 * +msg +); + +79 * + $p–še_txrx_msg_»q_’Œy_dbg_hªdËr +( + +80 +__¹e_unu£d +  +p–še + * +p +, + +81 +__¹e_unu£d + * +msg +) + +84  +NULL +; + +85 + } +} + +87  +__¹e_unu£d + +p–še_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +88 [ +PIPELINE_TXRX_MSG_REQ_ENTRY_DBG +] = + +89 +p–še_txrx_msg_»q_’Œy_dbg_hªdËr +, + +103 * + $p–še_txrx_msg_»q_cu¡om_hªdËr +( +p–še + * +p +, * +msg +) + +105  +p–še_txrx + * +p_txrx + = (p–še_txrx *) +p +; + +106  +p–še_cu¡om_msg_»q + * +»q + = +msg +; + +107 +p–še_msg_»q_hªdËr + +f_hªdË +; + +109 +f_hªdË + = ( +»q +-> +subty³ + < +PIPELINE_TXRX_MSG_REQS +) ? + +110 +p_txrx +-> +cu¡om_hªdËrs +[ +»q +-> +subty³ +] : + +111 +p–še_msg_»q_šv®id_hªdËr +; + +113 ià( +f_hªdË + =ð +NULL +) + +114 +f_hªdË + = +p–še_msg_»q_šv®id_hªdËr +; + +116  + `f_hªdË +( +p +, +»q +); + +117 + } +} + +123 +p–še_txrx_·r£_¬gs +( +p–še_txrx + * +p +, + +124  +p–še_·¿ms + * +·¿ms +); + +126 + $p–še_txrx_·r£_¬gs +( +p–še_txrx + * +p +, + +127  +p–še_·¿ms + * +·¿ms +) + +129 +ušt32_t + +i +; + +130 +ušt8_t + +txrx_ty³_´e£Á + = 0; + +132 ià( +TXRX_DEBUG + > 2) + +133 + `´štf +("TXRX…ipeline_txrx_parse_args…arams->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_v®ue + = +·¿ms +-> +¬gs_v®ue +[ +i +]; + +140 ià( +TXRX_DEBUG + > 2) + +141 + `´štf +("TXRX‡rgs[%d]: % %d, %s\n", +i +, +¬g_Çme +, + +142 + `©oi +( +¬g_v®ue +),‡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_v®ue +, "TXTX") == 0) { + +152 +p +-> +txrx_ty³ + = +TYPE_TXTX +; + +153 + `´štf +("pipeline_txrx_type is TXTX\n"); + +155 ià( + `¡rcmp +( +¬g_v®ue +, "RXRX") == 0) { + +156 +p +-> +txrx_ty³ + = +TYPE_RXRX +; + +157 + `´štf +("pipeline_txrx_type is RXRX\n"); + +163 ià(! +txrx_ty³_´e£Á +) { + +164 + `´štf +("TXRXype‚ot specified\n"); + +170 + } +} + +172 +ušt32_t + + gtxrx_pkt_´št_couÁ +; + +173  +šlše +  + +174 + $pkt_wÜk_txrx +( +¹e_mbuf + * +pkt +, +ušt32_t + +pkt_num +, * +¬g +) + +177  +p–še_txrx_š_pÜt_h_¬g + * +­ + = +¬g +; + +178  +p–še_txrx + * +p_txrx + = (p–še_txrx *) +­ +-> +p +; + +179 +ušt8_t + +sÞic™ed_node_muÉiÿ¡_addr +[16] = + +182 +p_txrx +-> +»ûivedPktCouÁ +++; + +184 ià( +p_txrx +-> +txrx_ty³ + =ð +TYPE_TXTX +) + +187 +ušt8_t + +š_pÜt_id + = +pkt +-> +pÜt +; + +188 +ušt32_t + +‘h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +190 +ušt32_t + +pkt_mask + = 1 << +pkt_num +; + +192 +ušt32_t + +out_pÜt + = +p_txrx +-> +p +. +n_pÜts_out + - 1; + +194 +ušt16_t + * +‘h_´Ùo + = + +195 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +‘h_´Ùo_off£t +); + +197 +ušt8_t + * +´ÙocÞ +; + +198 +ušt32_t + +´Ù_off£t + = + +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_off£t + ( +pkt +,  +v6_hdr + *, ( +‘h”_hdr +)); + +204 +ušt32_t + +´Ù_off£t_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 +, +´Ù_off£t_v6 +); + +210 +´ÙocÞ + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +´Ù_off£t +); + +212 +´ÙocÞ + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +´Ù_off£t +); + +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_lšk_·¿ms + * +lšk +; + +227 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_id +]; + +230 +ušt32_t + +d¡_addr_off£t + = + +231 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +232 +ušt32_t + * +d¡_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_off£t +); + +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__ +, +lšk +-> + +, * +d¡_addr +); + +239  + `¹e_be_to_ýu_16 +(* +‘h_´Ùo +)) { + +240  +ETH_TYPE_ARP +: + +241 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +242 +out_pÜt +, +pkt +); + +243 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +246  +ETH_TYPE_IPV4 +: + +247 ià((* +´ÙocÞ + =ð +IP_PROTOCOL_ICMP +) && + +248 ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr +))) { + +249 ià( + `is_phy_pÜt_´iv‹ +( +pkt +-> +pÜt +)) { + +250 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( + +251 +p_txrx +-> +p +.p, + +252 +out_pÜt +, +pkt +); + +253 + `¹e_p–še_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 #iâdeà +VNF_ACL + + +265 ià(! + `memcmp +( +v6_h +-> +d¡_addr +, +lšk +-> +v6 +, 16) + +266 || ! + `memcmp +( +v6_h +-> +d¡_addr +, +sÞic™ed_node_muÉiÿ¡_addr +, 13)) { + +268 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +269 +out_pÜt +, +pkt +); + +270 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +271 #iâdeà +VNF_ACL + + +273 + `´štf +("Droppinghe IPv6…kt\n"); + +274 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +282 + `´štf +("Droppinghe…kt\n"); + +283 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +288 + } +} + +290  +šlše +  + +291 + $pkt4_wÜk_txrx +( +¹e_mbuf + ** +pkt +, +ušt32_t + +pkt_num +, * +¬g +) + +293  +p–še_txrx_š_pÜt_h_¬g + * +­ + = +¬g +; + +294  +p–še_txrx + * +p_txrx + = (p–še_txrx *) +­ +-> +p +; + +295 +ušt8_t + +sÞic™ed_node_muÉiÿ¡_addr +[16] = + +299 ià( +p_txrx +-> +txrx_ty³ + =ð +TYPE_TXTX +) + +302 +ušt16_t + +š_pÜt_id + = (* +pkt +)-> +pÜt +; + +303 +ušt32_t + +‘h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +306 +ušt32_t + +pkt_mask0 + = 1 << +pkt_num +; + +307 +ušt32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +308 +ušt32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +309 +ušt32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +312 +ušt32_t + +out_pÜt + = +p_txrx +-> +p +. +n_pÜts_out + - 1; + +314 +ušt16_t + * +‘h_´Ùo0 + = + +315 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +‘h_´Ùo_off£t +); + +316 +ušt16_t + * +‘h_´Ùo1 + = + +317 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +‘h_´Ùo_off£t +); + +318 +ušt16_t + * +‘h_´Ùo2 + = + +319 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +‘h_´Ùo_off£t +); + +320 +ušt16_t + * +‘h_´Ùo3 + = + +321 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +‘h_´Ùo_off£t +); + +323 +ušt8_t + * +´ÙocÞ0 +, * +´ÙocÞ1 +, * +´ÙocÞ2 +, * +´ÙocÞ3 +; + +324 +ušt32_t + +´Ù_off£t + = + +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_off£t + ( +pkt +[0],  +v6_hdr + *, ( +‘h”_hdr +)); + +330 +ušt32_t + +´Ù_off£t_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 +´ÙocÞ0 + = + +336 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t_v6 +); + +338 +´ÙocÞ0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t +); + +341 +v6_h1 + = + `¹e_pktmbuf_mtod_off£t + ( +pkt +[1],  +v6_hdr + *, ( +‘h”_hdr +)); + +342 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo1 +è=ð +ETHER_TYPE_IPv6 +) + +343 +´ÙocÞ1 + = + +344 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t_v6 +); + +346 +´ÙocÞ1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t +); + +349 +v6_h2 + = + `¹e_pktmbuf_mtod_off£t + ( +pkt +[2],  +v6_hdr + *, ( +‘h”_hdr +)); + +350 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo2 +è=ð +ETHER_TYPE_IPv6 +) + +351 +´ÙocÞ2 + = + +352 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t_v6 +); + +354 +´ÙocÞ2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t +); + +357 +v6_h3 + = + `¹e_pktmbuf_mtod_off£t + ( +pkt +[3],  +v6_hdr + *, ( +‘h”_hdr +)); + +358 ià( + `¹e_be_to_ýu_16 +(* +‘h_´Ùo3 +è=ð +ETHER_TYPE_IPv6 +) + +359 +´ÙocÞ3 + = + +360 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t_v6 +); + +362 +´ÙocÞ3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t +); + +364 +´ÙocÞ0 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[0], +´Ù_off£t +); + +365 +´ÙocÞ1 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[1], +´Ù_off£t +); + +366 +´ÙocÞ2 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[2], +´Ù_off£t +); + +367 +´ÙocÞ3 + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +[3], +´Ù_off£t +); + +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 +), * +´ÙocÞ0 +, +ETH_TYPE_ARP +, + +376 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +379  +­p_lšk_·¿ms + * +lšk +; + +381 +lšk + = & +myAµ +-> +lšk_·¿ms +[ +š_pÜt_id +]; + +384 +ušt32_t + +d¡_addr_off£t0 + = + +385 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +386 +ušt32_t + * +d¡_addr0 + = + +387 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d¡_addr_off£t0 +); + +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__ +, +lšk +-> + +, * +d¡_addr0 +); + +394  + `¹e_be_to_ýu_16 +(* +‘h_´Ùo0 +)) { + +395  +ETH_TYPE_ARP +: + +396 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +397 +out_pÜt +, +pkt +[0]); + +398 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +401  +ETH_TYPE_IPV4 +: + +402 ià((* +´ÙocÞ0 + =ð +IP_PROTOCOL_ICMP +) && + +403 ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr0 +))) { + +404 ià( + `is_phy_pÜt_´iv‹ +( +pkt +[0]-> +pÜt +)) { + +405 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( + +406 +p_txrx +-> +p +.p, +out_pÜt +, +pkt +[0]); + +407 + `¹e_p–še_ah_·ck‘_drÝ +( + +408 +p_txrx +-> +p +.p, +pkt_mask0 +); + +414 #ifdeà +IPV6 + + +415  +ETH_TYPE_IPV6 +: + +416 ià(* +´ÙocÞ0 + =ð +ICMPV6_PROTOCOL_ID +) { + +417 #iâdeà +VNF_ACL + + +418 ià(! + `memcmp +( +v6_h0 +-> +d¡_addr +, +lšk +-> +v6 +, 16) + +419 || ! + `memcmp +( +v6_h0 +-> +d¡_addr +, +sÞic™ed_node_muÉiÿ¡_addr +, 13)) { + +421 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +422 +out_pÜt +, +pkt +[0]); + +423 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +425 #iâdeà +VNF_ACL + + +427 + `´štf +("Droppinghe IPv6…kt\n"); + +428 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +436 + `¹e_p–še_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 +), * +´ÙocÞ1 +, +ETH_TYPE_ARP +, + +447 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +451 +ušt32_t + +d¡_addr_off£t1 + = + +452 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +453 +ušt32_t + * +d¡_addr1 + = + +454 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d¡_addr_off£t1 +); + +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__ +, +lšk +-> + +, * +d¡_addr1 +); + +460  + `¹e_be_to_ýu_16 +(* +‘h_´Ùo1 +)) { + +461  +ETH_TYPE_ARP +: + +462 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +463 +out_pÜt +, +pkt +[1]); + +464 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +467  +ETH_TYPE_IPV4 +: + +468 ià((* +´ÙocÞ1 + =ð +IP_PROTOCOL_ICMP +) && + +469 ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr1 +))) { + +470 ià( + `is_phy_pÜt_´iv‹ +( +pkt +[1]-> +pÜt +)) { + +471 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( + +472 +p_txrx +-> +p +.p, + +473 +out_pÜt +, +pkt +[1]); + +474 + `¹e_p–še_ah_·ck‘_drÝ +( + +475 +p_txrx +-> +p +.p, + +476 +pkt_mask1 +); + +482 #ifdeà +IPV6 + + +483  +ETH_TYPE_IPV6 +: + +484 ià(* +´ÙocÞ1 + =ð +ICMPV6_PROTOCOL_ID +) { + +485 #iâdeà +VNF_ACL + + +486 ià(! + `memcmp +( +v6_h1 +-> +d¡_addr +, +lšk +-> +v6 +, 16) + +487 || ! + `memcmp +( +v6_h1 +-> +d¡_addr +, +sÞic™ed_node_muÉiÿ¡_addr +, 13)) { + +489 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +490 +out_pÜt +, +pkt +[1]); + +491 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +492 #iâdeà +VNF_ACL + + +494 + `´štf +("Droppinghe IPv6…kt\n"); + +495 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +503 + `¹e_p–še_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 +), * +´ÙocÞ2 +, +ETH_TYPE_ARP +, + +513 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +517 +ušt32_t + +d¡_addr_off£t2 + = + +518 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +519 +ušt32_t + * +d¡_addr2 + = + +520 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d¡_addr_off£t2 +); + +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__ +, +lšk +-> + +, * +d¡_addr2 +); + +526  + `¹e_be_to_ýu_16 +(* +‘h_´Ùo2 +)) { + +527  +ETH_TYPE_ARP +: + +528 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +529 +out_pÜt +, +pkt +[2]); + +530 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +533  +ETH_TYPE_IPV4 +: + +534 ià((* +´ÙocÞ2 + =ð +IP_PROTOCOL_ICMP +) && + +535 ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr2 +))) { + +536 ià( + `is_phy_pÜt_´iv‹ +( +pkt +[2]-> +pÜt +)) { + +537 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( + +538 +p_txrx +-> +p +.p, + +539 +out_pÜt +, +pkt +[2]); + +540 + `¹e_p–še_ah_·ck‘_drÝ +( + +541 +p_txrx +-> +p +.p, + +542 +pkt_mask2 +); + +548 #ifdeà +IPV6 + + +549  +ETH_TYPE_IPV6 +: + +550 ià(* +´ÙocÞ2 + =ð +ICMPV6_PROTOCOL_ID +) { + +551 #iâdeà +VNF_ACL + + +552 ià(! + `memcmp +( +v6_h2 +-> +d¡_addr +, +lšk +-> +v6 +, 16) + +553 || ! + `memcmp +( +v6_h2 +-> +d¡_addr +, +sÞic™ed_node_muÉiÿ¡_addr +, 13)) { + +555 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +556 +out_pÜt +, +pkt +[2]); + +557 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +558 #iâdeà +VNF_ACL + + +560 + `´štf +("Droppinghe IPv6…kt\n"); + +561 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +569 + `¹e_p–še_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 +), * +´ÙocÞ3 +, +ETH_TYPE_ARP +, + +579 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +583 +ušt32_t + +d¡_addr_off£t3 + = + +584 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +585 +ušt32_t + * +d¡_addr3 + = + +586 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_off£t3 +); + +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__ +, +lšk +-> + +, * +d¡_addr3 +); + +592  + `¹e_be_to_ýu_16 +(* +‘h_´Ùo3 +)) { + +593  +ETH_TYPE_ARP +: + +594 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +595 +out_pÜt +, +pkt +[3]); + +596 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +599  +ETH_TYPE_IPV4 +: + +600 ià((* +´ÙocÞ3 + =ð +IP_PROTOCOL_ICMP +) && + +601 ( +lšk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr3 +))) { + +602 ià( + `is_phy_pÜt_´iv‹ +( +pkt +[3]-> +pÜt +)) { + +603 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( + +604 +p_txrx +-> +p +.p, + +605 +out_pÜt +, +pkt +[3]); + +606 + `¹e_p–še_ah_·ck‘_drÝ +( + +607 +p_txrx +-> +p +.p, + +608 +pkt_mask3 +); + +614 #ifdeà +IPV6 + + +615  +ETH_TYPE_IPV6 +: + +616 ià(* +´ÙocÞ3 + =ð +ICMPV6_PROTOCOL_ID +) { + +617 #iâdeà +VNF_ACL + + +618 ià(! + `memcmp +( +v6_h3 +-> +d¡_addr +, +lšk +-> +v6 +, 16) + +619 || ! + `memcmp +( +v6_h3 +-> +d¡_addr +, +sÞic™ed_node_muÉiÿ¡_addr +, 13)) { + +621 + `¹e_p–še_pÜt_out_·ck‘_š£¹ +( +p_txrx +-> +p +.p, + +622 +out_pÜt +, +pkt +[3]); + +623 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +624 #iâdeà +VNF_ACL + + +626 + `´štf +("Droppinghe IPv6…kt\n"); + +627 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +635 + `¹e_p–še_ah_·ck‘_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +639 +p_txrx +-> +»ûivedPktCouÁ + += 4; + +641 + } +} + +643 +PIPELINE_TXRX_KEY_PORT_IN_AH +( +pÜt_š_ah_txrx +, +pkt_wÜk_txrx +, +pkt4_wÜk_txrx +); + +645 * + $p–še_txrx_š™ +( +p–še_·¿ms + * +·¿ms +, + +646 +__¹e_unu£d + * +¬g +) + +648  +p–še + * +p +; + +649  +p–še_txrx + * +p_± +; + +650 +ušt32_t + +size +, +i +, +š_pÜts_¬g_size +; + +652 + `´štf +("Start…ipeline_txrx_init\n"); + +655 ià(( +·¿ms + =ð +NULL +) || + +656 ( +·¿ms +-> +n_pÜts_š + == 0) || + +657 ( +·¿ms +-> +n_pÜts_out + == 0)) + +658  +NULL +; + +661 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +p–še_txrx +)); + +662 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +663 +p_± + = ( +p–še_txrx + *) +p +; + +664 ià( +p + =ð +NULL +) + +665  +NULL +; + +667 + `PLOG +( +p +, +HIGH +, "TXRX"); + +668 + `¡rýy +( +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_± +-> +lšks_m­ +[ +i +] = 0xff; + +676 +p_± +-> +p–še_num + = 0; + +677 + `´štf +("txrx initialization of variables done\n"); + +680 ià( + `p–še_txrx_·r£_¬gs +( +p_± +, +·¿ms +)) + +681  +NULL +; + +685  +¹e_p–še_·¿ms + +p–še_·¿ms + = { + +686 . +Çme + = "TXRX", + +687 . +sock‘_id + = +·¿ms +->socket_id, + +688 . +off£t_pÜt_id + = 0, + +691 +p +->°ð + `¹e_p–še_ü—‹ +(& +p–še_·¿ms +); + +692 ià( +p +->°=ð +NULL +) { + +693 + `¹e_ä“ +( +p +); + +694  +NULL +; + +698 +p +-> +n_pÜts_š + = +·¿ms +->n_ports_in; + +699 +p +-> +n_pÜts_out + = +·¿ms +->n_ports_out; + +700 +p +-> +n_bËs + =…-> +n_pÜts_š +; + +703 +š_pÜts_¬g_size + = + +704 + `RTE_CACHE_LINE_ROUNDUP +(( + +705 ( +p–še_txrx_š_pÜt_h_¬g +)) * + +706 ( +·¿ms +-> +n_pÜts_š +)); + +707  +p–še_txrx_š_pÜt_h_¬g + * +­ + = + +708 ( +p–še_txrx_š_pÜt_h_¬g + *) + `¹e_zm®loc +( +NULL +, + +709 +š_pÜts_¬g_size +, + +710 +RTE_CACHE_LINE_SIZE +); + +711 ià( +­ + =ð +NULL +) + +712  +NULL +; + +714  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +716 ( +­ +[ +i +]). +p + = +p_± +; + +717 ( +­ +[ +i +]). +š_pÜt_id + = i; + +718  +¹e_p–še_pÜt_š_·¿ms + +pÜt_·¿ms + = { + +719 . +Ýs + = + +720 + `p–še_pÜt_š_·¿ms_g‘_Ýs +(& +·¿ms +-> + +721 +pÜt_š +[ +i +]), + +722 . +¬g_ü—‹ + = + +723 + `p–še_pÜt_š_·¿ms_cÚv”t +(& +·¿ms +-> + +724 +pÜt_š +[ +i +]), + +725 . +f_aùiÚ + = +NULL +, + +726 . +¬g_ah + = &( +­ +[ +i +]), + +727 . +bur¡_size + = +·¿ms +-> +pÜt_š +[ +i +].burst_size, + +730 +pÜt_·¿ms +. +f_aùiÚ + = +pÜt_š_ah_txrx +; + +732  +¡©us + = + `¹e_p–še_pÜt_š_ü—‹ +( +p +->p, + +733 & +pÜt_·¿ms +, + +734 & +p +-> +pÜt_š_id +[ +i +]); + +736 ià( +¡©us +) { + +737 + `¹e_p–še_ä“ +( +p +->p); + +738 + `¹e_ä“ +( +p +); + +739  +NULL +; + +744  +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +745  +¹e_p–še_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +746 . +Ýs + = + +747 + `p–še_pÜt_out_·¿ms_g‘_Ýs +(& +·¿ms +-> + +748 +pÜt_out +[ +i +]), + +749 . +¬g_ü—‹ + = + +750 + `p–še_pÜt_out_·¿ms_cÚv”t +(& +·¿ms +-> + +751 +pÜt_out +[ +i +]), + +752 . +f_aùiÚ + = +NULL +, + +753 . +¬g_ah + = +NULL +, + +756  +¡©us + = + `¹e_p–še_pÜt_out_ü—‹ +( +p +->p, + +757 & +pÜt_·¿ms +, + +758 & +p +-> +pÜt_out_id +[ +i +]); + +760 ià( +¡©us +) { + +761 + `¹e_p–še_ä“ +( +p +->p); + +762 + `¹e_ä“ +( +p +); + +763  +NULL +; + +767  +p–še_num + = 0; + +768  +¡©us + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +p–še_num +); + +769 ià( +¡©us + < 0) { + +770 + `´štf +("Unableo„ead…ipeline‚umber\n"); + +771  +NULL +; + +773 +p_± +-> +p–še_num + = ( +ušt8_t +)…ipeline_num; + +775 + `»gi¡”_p–še_Qs +( +p_± +-> +p–še_num +, +p +); + +776 + `£t_lšk_m­ +( +p_± +-> +p–še_num +, +p +,…_±-> +lšks_m­ +); + +777 + `£t_ouÜt_id +( +p_± +-> +p–še_num +, +p +,…_±-> +ouÜt_id +); + +780  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +781  +¹e_p–še_bË_·¿ms + +bË_·¿ms + = { + +782 . +Ýs + = & +¹e_bË_¡ub_Ýs +, + +783 . +¬g_ü—‹ + = +NULL +, + +784 . +f_aùiÚ_h™ + = +NULL +, + +785 . +f_aùiÚ_miss + = +NULL +, + +786 . +¬g_ah + = +NULL +, + +787 . +aùiÚ_d©a_size + = 0, + +790  +¡©us + = + `¹e_p–še_bË_ü—‹ +( +p +->p, + +791 & +bË_·¿ms +, + +792 & +p +-> +bË_id +[ +i +]); + +794 ià( +¡©us +) { + +795 + `¹e_p–še_ä“ +( +p +->p); + +796 + `¹e_ä“ +( +p +); + +797  +NULL +; + +802  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +803  +¡©us + = + `¹e_p–še_pÜt_š_cÚÃù_to_bË +( +p +->p, + +804 +p +-> + +805 +pÜt_š_id + + +806 [ +i +], + +807 +p +-> + +808 +bË_id +[ +i +]); + +810 ià( +¡©us +) { + +811 + `¹e_p–še_ä“ +( +p +->p); + +812 + `¹e_ä“ +( +p +); + +813  +NULL +; + +818  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +819  +¹e_p–še_bË_’Œy + +deçuÉ_’Œy + = { + +820 . +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +, + +821 . +pÜt_id + = +p +-> +pÜt_out_id +[ +i +], + +824  +¹e_p–še_bË_’Œy + * +deçuÉ_’Œy_±r +; + +826  +¡©us + = + `¹e_p–še_bË_deçuÉ_’Œy_add +( + +827 +p +->p, + +828 +p +-> + +829 +bË_id +[ +i +], + +830 & +deçuÉ_’Œy +, + +831 & +deçuÉ_’Œy_±r +); + +833 ià( +¡©us +) { + +834 + `¹e_p–še_ä“ +( +p +->p); + +835 + `¹e_ä“ +( +p +); + +836  +NULL +; + +841  +i + = 0; i < +p +-> +n_pÜts_š +; i++) { + +842  +¡©us + = + `¹e_p–še_pÜt_š_’abË +( +p +->p, + +843 +p +-> +pÜt_š_id +[ +i +]); + +845 ià( +¡©us +) { + +846 + `¹e_p–še_ä“ +( +p +->p); + +847 + `¹e_ä“ +( +p +); + +848  +NULL +; + +853 ià( + `¹e_p–še_check +( +p +->p) < 0) { + +854 + `¹e_p–še_ä“ +( +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 + `memýy +( +p +-> +hªdËrs +, handlers, (p->handlers)); + +869  +p +; + +870 + } +} + +872  + $p–še_txrx_ä“ +(* +p–še +) + +874  +p–še + * +p + = (pipeline *)pipeline; + +877 ià( +p + =ð +NULL +) + +881 + `¹e_p–še_ä“ +( +p +->p); + +882 + `¹e_ä“ +( +p +); + +884 + } +} + +886  + $p–še_txrx_tim” +(* +p–še +) + +888  +p–še + * +p + = (pipeline *)pipeline; + +890 + `p–še_msg_»q_hªdË +( +p +); + +891 + `¹e_p–še_æush +( +p +->p); + +894 + } +} + +897 + $p–še_txrx_Œack +(* +p–še +, +ušt32_t + +pÜt_š +, ušt32_ˆ* +pÜt_out +) + +899  +p–še + * +p + = (pipeline *)pipeline; + +902 ià(( +p + =ð +NULL +è|| ( +pÜt_š + >ðp-> +n_pÜts_š +è|| ( +pÜt_out + == NULL)) + +905 * +pÜt_out + = +pÜt_š + / +p +-> +n_pÜts_š +; + +907 + } +} + +909  +p–še_be_Ýs + + gp–še_txrx_be_Ýs + = { + +910 . +f_š™ + = +p–še_txrx_š™ +, + +911 . + gf_ä“ + = +p–še_txrx_ä“ +, + +912 . + gf_run + = +NULL +, + +913 . + gf_tim” + = +p–še_txrx_tim” +, + +914 . + gf_Œack + = +p–še_txrx_Œack +, + + @VIL/pipeline_txrx/pipeline_txrx_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_TXRX_BE_H__ + + +18  + #__INCLUDE_PIPELINE_TXRX_BE_H__ + + + ) + +20  + ~"p–še_commÚ_be.h +" + +21  + #PIPELINE_TXRX_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +23 + `f_ah +( \ + +24 +__¹e_unu£d +  +¹e_p–še + * +¹e_p +, \ + +25  +¹e_mbuf + ** +pkts +, \ + +26 +ušt32_t + +n_pkts +, \ + +27 * +¬g +) \ + +29 +ušt32_t + +i +, +j +; \ + +31  +j + = 0; j < +n_pkts +; j++) \ + +32 + `¹e_´eãtch0 +( +pkts +[ +j +]); \ + +34 +pkt_bur¡_út + = 0; \ + +35  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +36 + `f_pkt4_wÜk +(& +pkts +[ +i +], i, +¬g +); \ + +38  ; +i + < +n_pkts +; i++) \ + +39 + `f_pkt_wÜk +( +pkts +[ +i +], i, +¬g +); \ + +43 } + + ) + +45  +p–še_be_Ýs + +p–še_txrx_be_Ýs +; + +49 + ep–še_txrx_msg_»q_ty³ + { + +50 + mPIPELINE_TXRX_MSG_REQ_ENTRY_DBG +, + +51 + mPIPELINE_TXRX_MSG_REQS + + +56  + sp–še_txrx_’Œy_dbg_msg_»q + { + +57 +p–še_msg_»q_ty³ + + mty³ +; + +58 +p–še_txrx_msg_»q_ty³ + + msubty³ +; + +61 +ušt8_t + + md©a +[5]; + +67  + sp–še_txrx_š_pÜt_h_¬g + { + +68  +p–še_txrx + * + mp +; + +69 +ušt8_t + + mš_pÜt_id +; + +72  + sp–še_txrx_’Œy_dbg_msg_r¥ + { + +73  + m¡©us +; + + @vnf_common/app.h + +17 #iâdeà +__INCLUDE_APP_H__ + + +18  + #__INCLUDE_APP_H__ + + + ) + +20  + ~<¡dšt.h +> + +21  + ~<¡ršg.h +> + +23  + ~<¹e_commÚ.h +> + +24  + ~<¹e_mempoÞ.h +> + +25  + ~<¹e_ršg.h +> + +26  + ~<¹e_sched.h +> + +27  + ~<¹e_tim”.h +> + +28  + ~ + +30  + ~<¹e_‘hdev.h +> + +32  + ~"ýu_cÜe_m­.h +" + +33  + ~"p–še.h +" + +35  + #APP_PARAM_NAME_SIZE + +PIPELINE_NAME_SIZE + + + ) + +36  + #APP_LINK_PCI_BDF_SIZE + 32 + + ) + +37  +­p_lšk_·¿ms + * + gfdœ_p_lšk +; + +38  + s­p_mempoÞ_·¿ms + { + +39 * + mÇme +; + +40 +ušt32_t + + m·r£d +; + +41 +ušt32_t + + mbufãr_size +; + +42 +ušt32_t + + mpoÞ_size +; + +43 +ušt32_t + + mÿche_size +; + +44 +ušt32_t + + mýu_sock‘_id +; + +47  + s­p_lšk_·¿ms + { + +48 * + mÇme +; + +49 +ušt32_t + + m·r£d +; + +50 +ušt32_t + + mpmd_id +; + +51 +ušt32_t + + m¬p_q +; + +52 +ušt32_t + + mtý_syn_q +; + +53 +ušt32_t + + m_loÿl_q +; + +54 +ušt32_t + + mtý_loÿl_q +; + +55 +ušt32_t + + mudp_loÿl_q +; + +56 +ušt32_t + + msùp_loÿl_q +; + +57 +ušt32_t + + m¡©e +; + +58 +ušt32_t + + m +; + +59 +ušt8_t + + mv6 +[16]; + +60 +ušt32_t + + md•th +; + +61 +ušt32_t + + md•th_v6 +; + +62 +ušt64_t + + mmac_addr +; + +63  + mpci_bdf +[ +APP_LINK_PCI_BDF_SIZE +]; + +65  +¹e_‘h_cÚf + + mcÚf +; + +66 +ušt8_t + + m´omisc +; + +69  + s­p_pktq_hwq_š_·¿ms + { + +70 * + mÇme +; + +71 +ušt32_t + + m·r£d +; + +72 +ušt32_t + + mmempoÞ_id +; + +73 +ušt32_t + + msize +; + +74 +ušt32_t + + mbur¡ +; + +76  +¹e_‘h_rxcÚf + + mcÚf +; + +79  + s­p_pktq_hwq_out_·¿ms + { + +80 * + mÇme +; + +81 +ušt32_t + + m·r£d +; + +82 +ušt32_t + + msize +; + +83 +ušt32_t + + mbur¡ +; + +84 +ušt32_t + + mdrÝËss +; + +85 +ušt64_t + + mn_»Œ›s +; + +86  +¹e_‘h_txcÚf + + mcÚf +; + +89  + s­p_pktq_swq_·¿ms + { + +90 * + mÇme +; + +91 +ušt32_t + + m·r£d +; + +92 +ušt32_t + + msize +; + +93 +ušt32_t + + mbur¡_»ad +; + +94 +ušt32_t + + mbur¡_wr™e +; + +95 +ušt32_t + + mdrÝËss +; + +96 +ušt64_t + + mn_»Œ›s +; + +97 +ušt32_t + + mýu_sock‘_id +; + +98 +ušt32_t + + mv4_äag +; + +99 +ušt32_t + + mv6_äag +; + +100 +ušt32_t + + mv4_¿s +; + +101 +ušt32_t + + mv6_¿s +; + +102 +ušt32_t + + mmtu +; + +103 +ušt32_t + + mm‘ad©a_size +; + +104 +ušt32_t + + mmempoÞ_dœeù_id +; + +105 +ušt32_t + + mmempoÞ_šdœeù_id +; + +108 #iâdeà +APP_FILE_NAME_SIZE + + +109  + #APP_FILE_NAME_SIZE + 256 + + ) + +112 #iâdeà +APP_MAX_SCHED_SUBPORTS + + +113  + #APP_MAX_SCHED_SUBPORTS + 8 + + ) + +116 #iâdeà +APP_MAX_SCHED_PIPES + + +117  + #APP_MAX_SCHED_PIPES + 4096 + + ) + +120  + s­p_pktq_tm_·¿ms + { + +121 * + mÇme +; + +122 +ušt32_t + + m·r£d +; + +123 cÚ¡ * + mfže_Çme +; + +124  +¹e_sched_pÜt_·¿ms + + msched_pÜt_·¿ms +; + +125  +¹e_sched_subpÜt_·¿ms + + +126 + msched_subpÜt_·¿ms +[ +APP_MAX_SCHED_SUBPORTS +]; + +127  +¹e_sched_pe_·¿ms + + +128 + msched_pe_´ofžes +[ +RTE_SCHED_PIPE_PROFILES_PER_PORT +]; + +129  + msched_pe_to_´ofže +[ +APP_MAX_SCHED_SUBPORTS + * +APP_MAX_SCHED_PIPES +]; + +130 +ušt32_t + + mbur¡_»ad +; + +131 +ušt32_t + + mbur¡_wr™e +; + +134  + s­p_pktq_sourû_·¿ms + { + +135 * + mÇme +; + +136 +ušt32_t + + m·r£d +; + +137 +ušt32_t + + mmempoÞ_id +; + +138 +ušt32_t + + mbur¡ +; + +139 * + mfže_Çme +; + +140 +ušt32_t + + mn_by‹s_³r_pkt +; + +143  + s­p_pktq_sšk_·¿ms + { + +144 * + mÇme +; + +145 +ušt8_t + + m·r£d +; + +146 * + mfže_Çme +; + +147 +ušt32_t + + mn_pkts_to_dump +; + +150  + s­p_msgq_·¿ms + { + +151 * + mÇme +; + +152 +ušt32_t + + m·r£d +; + +153 +ušt32_t + + msize +; + +154 +ušt32_t + + mýu_sock‘_id +; + +157 + e­p_pktq_š_ty³ + { + +158 + mAPP_PKTQ_IN_HWQ +, + +159 + mAPP_PKTQ_IN_SWQ +, + +160 + mAPP_PKTQ_IN_TM +, + +161 + mAPP_PKTQ_IN_SOURCE +, + +164  + s­p_pktq_š_·¿ms + { + +165 +­p_pktq_š_ty³ + + mty³ +; + +166 +ušt32_t + + mid +; + +169 + e­p_pktq_out_ty³ + { + +170 + mAPP_PKTQ_OUT_HWQ +, + +171 + mAPP_PKTQ_OUT_SWQ +, + +172 + mAPP_PKTQ_OUT_TM +, + +173 + mAPP_PKTQ_OUT_SINK +, + +176  + s­p_pktq_out_·¿ms + { + +177 +­p_pktq_out_ty³ + + mty³ +; + +178 +ušt32_t + + mid +; + +181 #iâdeà +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  + s­p_p–še_·¿ms + { + +193 * + mÇme +; + +194 +ušt8_t + + m·r£d +; + +196  + mty³ +[ +APP_PIPELINE_TYPE_SIZE +]; + +198 +ušt32_t + + msock‘_id +; + +199 +ušt32_t + + mcÜe_id +; + +200 +ušt32_t + + mhy³r_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 +ušt32_t + + mmsgq_š +[ +APP_MAX_PIPELINE_MSGQ_IN +]; + +205 +ušt32_t + + mmsgq_out +[ +APP_MAX_PIPELINE_MSGQ_OUT +]; + +207 +ušt32_t + + mn_pktq_š +; + +208 +ušt32_t + + mn_pktq_out +; + +209 +ušt32_t + + mn_msgq_š +; + +210 +ušt32_t + + mn_msgq_out +; + +212 +ušt32_t + + mtim”_³riod +; + +214 * + m¬gs_Çme +[ +APP_MAX_PIPELINE_ARGS +]; + +215 * + m¬gs_v®ue +[ +APP_MAX_PIPELINE_ARGS +]; + +216 +ušt32_t + + mn_¬gs +; + +219  + s­p_p–še_d©a + { + +220 * + mbe +; + +221 * + mã +; + +222  +p–še_ty³ + * + m±y³ +; + +223 +ušt64_t + + mtim”_³riod +; + +224 +ušt32_t + + m’abËd +; + +227  + s­p_th»ad_p–še_d©a + { + +228 +ušt32_t + + mp–še_id +; + +229 * + mbe +; + +230 +p–še_be_Ý_run + + mf_run +; + +231 +p–še_be_Ý_tim” + + mf_tim” +; + +232 +ušt64_t + + mtim”_³riod +; + +233 +ušt64_t + + md—dlše +; + +236 #iâdeà +APP_MAX_THREAD_PIPELINES + + +237  + #APP_MAX_THREAD_PIPELINES + 32 + + ) + +240 #iâdeà +APP_THREAD_TIMER_PERIOD + + +241  + #APP_THREAD_TIMER_PERIOD + 1 + + ) + +244  + s­p_th»ad_d©a + { + +245  +­p_th»ad_p–še_d©a + + m»guÏr +[ +APP_MAX_THREAD_PIPELINES +]; + +246  +­p_th»ad_p–še_d©a + + mcu¡om +[ +APP_MAX_THREAD_PIPELINES +]; + +248 +ušt32_t + + mn_»guÏr +; + +249 +ušt32_t + + mn_cu¡om +; + +251 +ušt64_t + + mtim”_³riod +; + +252 +ušt64_t + + mth»ad_»q_d—dlše +; + +254 +ušt64_t + + md—dlše +; + +256  +¹e_ršg + * + mmsgq_š +; + +257  +¹e_ršg + * + mmsgq_out +; + +259 +ušt64_t + + mh—droom_time +; + +260 +ušt64_t + + mh—droom_cyþes +; + +261  + mh—droom_¿tio +; + +264 #iâdeà +APP_MAX_LINKS + + +265  + #APP_MAX_LINKS + 32 + + ) + +268  + s­p_—l_·¿ms + { + +270 * + mcÜem­ +; + +273 +ušt32_t + + mma¡”_lcÜe_´e£Á +; + +274 +ušt32_t + + mma¡”_lcÜe +; + +277 +ušt32_t + + mchªÃls_´e£Á +; + +278 +ušt32_t + + mchªÃls +; + +281 +ušt32_t + + mmemÜy_´e£Á +; + +282 +ušt32_t + + mmemÜy +; + +285 +ušt32_t + + m¿nks_´e£Á +; + +286 +ušt32_t + + m¿nks +; + +289 * + mpci_bÏckli¡ +[ +APP_MAX_LINKS +]; + +292 * + mpci_wh™–i¡ +[ +APP_MAX_LINKS +]; + +295 * + mvdev +[ +APP_MAX_LINKS +]; + +298 +ušt32_t + + mvmw¬e_tsc_m­_´e£Á +; + +299  + mvmw¬e_tsc_m­ +; + +302 * + m´oc_ty³ +; + +305 * + msy¦og +; + +308 +ušt32_t + + mlog_Ëv–_´e£Á +; + +309 +ušt32_t + + mlog_Ëv– +; + +312 +ušt32_t + + mv”siÚ_´e£Á +; + +313  + mv”siÚ +; + +316 +ušt32_t + + mh–p_´e£Á +; + +317  + mh–p +; + +320 +ušt32_t + + mno_huge_´e£Á +; + +321  + mno_huge +; + +324 +ušt32_t + + mno_pci_´e£Á +; + +325  + mno_pci +; + +328 +ušt32_t + + mno_h³t_´e£Á +; + +329  + mno_h³t +; + +332 +ušt32_t + + mno_shcÚf_´e£Á +; + +333  + mno_shcÚf +; + +336 * + madd_driv” +; + +339 * + msock‘_mem +; + +342 * + mhuge_dœ +; + +345 * + mfže_´efix +; + +348 * + mba£_vœddr +; + +351 +ušt32_t + + mü—‹_uio_dev_´e£Á +; + +352  + mü—‹_uio_dev +; + +355 * + mvfio_šŒ +; + +358 +ušt32_t + + mx’_dom0_´e£Á +; + +359  + mx’_dom0 +; + +362 #iâdeà +APP_APPNAME_SIZE + + +363  + #APP_APPNAME_SIZE + 256 + + ) + +366 #iâdeà +APP_MAX_MEMPOOLS + + +367  + #APP_MAX_MEMPOOLS + 8 + + ) + +370 #iâdeà +APP_LINK_MAX_HWQ_IN + + +371  + #APP_LINK_MAX_HWQ_IN + 64 + + ) + +374 #iâdeà +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 #iâdeà +APP_MAX_PKTQ_SWQ + + +383  + #APP_MAX_PKTQ_SWQ + 256 + + ) + +386  + #APP_MAX_PKTQ_TM + +APP_MAX_LINKS + + + ) + +388 #iâdeà +APP_MAX_PKTQ_SOURCE + + +389  + #APP_MAX_PKTQ_SOURCE + 32 + + ) + +392 #iâdeà +APP_MAX_PKTQ_SINK + + +393  + #APP_MAX_PKTQ_SINK + 32 + + ) + +396 #iâdeà +APP_MAX_MSGQ + + +397  + #APP_MAX_MSGQ + 128 + + ) + +400 #iâdeà +APP_MAX_PIPELINES + + +401  + #APP_MAX_PIPELINES + 64 + + ) + +404 #iâdeà +APP_EAL_ARGC + + +405  + #APP_EAL_ARGC + 32 + + ) + +408 #iâdeà +APP_MAX_PIPELINE_TYPES + + +409  + #APP_MAX_PIPELINE_TYPES + 64 + + ) + +412 #iâdeà +APP_MAX_THREADS + + +413  + #APP_MAX_THREADS + +RTE_MAX_LCORE + + + ) + +416 #iâdeà +APP_MAX_CMDS + + +417  + #APP_MAX_CMDS + 128 + + ) + +420 #iâdeà +APP_THREAD_HEADROOM_STATS_COLLECT + + +421  + #APP_THREAD_HEADROOM_STATS_COLLECT + 1 + + ) + +424 +ušt8_t + + g’abË_hwlb +; + +425 +ušt8_t + + g’abË_æow_dœ +; + +427  + #APP_CORE_MASK_SIZE + \ + +428 ( +RTE_MAX_LCORE + / 64 + ((RTE_MAX_LCORE % 64è? 1 : 0)) + + ) + +430  + s­p_·¿ms + { + +432  + m­p_Çme +[ +APP_APPNAME_SIZE +]; + +433 cÚ¡ * + mcÚfig_fže +; + +434 cÚ¡ * + msüt_fže +; + +435 cÚ¡ * + m·r£r_fže +; + +436 cÚ¡ * + mouut_fže +; + +437 cÚ¡ * + m´•roc +; + +438 cÚ¡ * + m´•roc_¬gs +; + +439 +ušt64_t + + mpÜt_mask +; + +440 +ušt32_t + + mlog_Ëv– +; + +442  +­p_—l_·¿ms + + m—l_·¿ms +; + +443  +­p_mempoÞ_·¿ms + + mmempoÞ_·¿ms +[ +APP_MAX_MEMPOOLS +]; + +444  +­p_lšk_·¿ms + + mlšk_·¿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_sšk_·¿ms + + msšk_·¿ms +[ +APP_MAX_PKTQ_SINK +]; + +451  +­p_msgq_·¿ms + + mmsgq_·¿ms +[ +APP_MAX_MSGQ +]; + +452  +­p_p–še_·¿ms + + mp–še_·¿ms +[ +APP_MAX_PIPELINES +]; + +454 +ušt32_t + + mn_mempoÞs +; + +455 +ušt32_t + + mn_lšks +; + +456 +ušt32_t + + mn_pktq_hwq_š +; + +457 +ušt32_t + + mn_pktq_hwq_out +; + +458 +ušt32_t + + mn_pktq_swq +; + +459 +ušt32_t + + mn_pktq_tm +; + +460 +ušt32_t + + mn_pktq_sourû +; + +461 +ušt32_t + + mn_pktq_sšk +; + +462 +ušt32_t + + mn_msgq +; + +463 +ušt32_t + + mn_p–šes +; + +465 +ušt32_t + + mh—d”_csum_»q +; + +466 +ušt32_t + + mn_hwlb_q +; + +468 * + m—l_¬gv +[1 + +APP_EAL_ARGC +]; + +469  +ýu_cÜe_m­ + * + mcÜe_m­ +; + +470 +ušt64_t + + mcÜe_mask +[ +APP_CORE_MASK_SIZE +]; + +471  +¹e_mempoÞ + * + mmempoÞ +[ +APP_MAX_MEMPOOLS +]; + +472  +¹e_ršg + * + mswq +[ +APP_MAX_PKTQ_SWQ +]; + +473  +¹e_sched_pÜt + * + mtm +[ +APP_MAX_PKTQ_TM +]; + +474  +¹e_ršg + * + mmsgq +[ +APP_MAX_MSGQ +]; + +475  +p–še_ty³ + + mp–še_ty³ +[ +APP_MAX_PIPELINE_TYPES +]; + +476  +­p_p–še_d©a + + mp–še_d©a +[ +APP_MAX_PIPELINES +]; + +477  +­p_th»ad_d©a + + mth»ad_d©a +[ +APP_MAX_THREADS +]; + +478 +cmdlše_·r£_ùx_t + + mcmds +[ +APP_MAX_CMDS + + 1]; + +480  + m—l_¬gc +; + +481 +ušt32_t + + mn_p–še_ty³s +; + +482 +ušt32_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 + `¥rštf +( +Ç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 + `ssÿnf +( +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 + `årštf +( +¡d”r +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +553 + `abÜt +(); \ + +555 } 0) + + ) + +557 + e­p_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 + `årštf +( +¡dout +, "[APP] " +fmt + "\n", ## +__VA_ARGS__ +); \ + +567 } 0) + + ) + +569  +šlše + +ušt32_t + + +570 + $­p_lšk_g‘_n_rxq +( +­p_·¿ms + * +­p +,  +­p_lšk_·¿ms + * +lšk +) + +572 +ušt32_t + +n_rxq + = 0, +lšk_id +, +i +; + +573 +ušt32_t + +n_pktq_hwq_š + = + `RTE_MIN +( +­p +->n_pktq_hwq_in, + +574 + `RTE_DIM +( +­p +-> +hwq_š_·¿ms +)); + +576 + `APP_PARAM_GET_ID +( +lšk +, "LINK", +lšk_id +); + +578  +i + = 0; i < +n_pktq_hwq_š +; i++) { + +579  +­p_pktq_hwq_š_·¿ms + * +p + = & +­p +-> +hwq_š_·¿ms +[ +i +]; + +580 +ušt32_t + +rxq_lšk_id +, +rxq_queue_id +; + +582 + `ssÿnf +( +p +-> +Çme +, "RXQ%" +SCNu32 + ".%" SCNu32, + +583 & +rxq_lšk_id +, & +rxq_queue_id +); + +584 ià( +rxq_lšk_id + =ð +lšk_id +) + +585 +n_rxq +++; + +588  +n_rxq +; + +589 + } +} + +591  +šlše + +ušt32_t + + +592 + $­p_lšk_g‘_n_txq +( +­p_·¿ms + * +­p +,  +­p_lšk_·¿ms + * +lšk +) + +594 +ušt32_t + +n_txq + = 0, +lšk_id +, +i +; + +595 +ušt32_t + +n_pktq_hwq_out + = + `RTE_MIN +( +­p +->n_pktq_hwq_out, + +596 + `RTE_DIM +( +­p +-> +hwq_out_·¿ms +)); + +598 + `APP_PARAM_GET_ID +( +lšk +, "LINK", +lšk_id +); + +600  +i + = 0; i < +n_pktq_hwq_out +; i++) { + +601  +­p_pktq_hwq_out_·¿ms + * +p + = & +­p +-> +hwq_out_·¿ms +[ +i +]; + +602 +ušt32_t + +txq_lšk_id +, +txq_queue_id +; + +604 + `ssÿnf +( +p +-> +Çme +, "TXQ%" +SCNu32 + ".%" SCNu32, + +605 & +txq_lšk_id +, & +txq_queue_id +); + +606 ià( +txq_lšk_id + =ð +lšk_id +) + +607 +n_txq +++; + +610  +n_txq +; + +611 + } +} + +613  +šlše + +ušt32_t + + +614 + $­p_rxq_g‘_»ad”s +( +­p_·¿ms + * +­p +,  +­p_pktq_hwq_š_·¿ms + * +rxq +) + +616 +ušt32_t + +pos + = +rxq + - +­p +-> +hwq_š_·¿ms +; + +617 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +618 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +619 +ušt32_t + +n_»ad”s + = 0, +i +; + +621  +i + = 0; i < +n_p–šes +; i++) { + +622  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +623 +ušt32_t + +n_pktq_š + = + `RTE_MIN +( +p +->n_pktq_š, + `RTE_DIM +Õ-> +pktq_š +)); + +624 +ušt32_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_»ad”s +++; + +635  +n_»ad”s +; + +636 + } +} + +638  +šlše + +ušt32_t + + +639 + $­p_swq_g‘_»ad”s +( +­p_·¿ms + * +­p +,  +­p_pktq_swq_·¿ms + * +swq +) + +641 +ušt32_t + +pos + = +swq + - +­p +-> +swq_·¿ms +; + +642 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +643 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +644 +ušt32_t + +n_»ad”s + = 0, +i +; + +646  +i + = 0; i < +n_p–šes +; i++) { + +647  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +648 +ušt32_t + +n_pktq_š + = + `RTE_MIN +( +p +->n_pktq_š, + `RTE_DIM +Õ-> +pktq_š +)); + +649 +ušt32_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_»ad”s +++; + +660  +n_»ad”s +; + +661 + } +} + +663  +šlše + +ušt32_t + + +664 + $­p_tm_g‘_»ad”s +( +­p_·¿ms + * +­p +,  +­p_pktq_tm_·¿ms + * +tm +) + +666 +ušt32_t + +pos + = +tm + - +­p +-> +tm_·¿ms +; + +667 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +668 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +669 +ušt32_t + +n_»ad”s + = 0, +i +; + +671  +i + = 0; i < +n_p–šes +; i++) { + +672  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +673 +ušt32_t + +n_pktq_š + = + `RTE_MIN +( +p +->n_pktq_š, + `RTE_DIM +Õ-> +pktq_š +)); + +674 +ušt32_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_»ad”s +++; + +685  +n_»ad”s +; + +686 + } +} + +688  +šlše + +ušt32_t + + +689 + $­p_sourû_g‘_»ad”s +( +­p_·¿ms + * +­p +, + +690  +­p_pktq_sourû_·¿ms + * +sourû +) + +692 +ušt32_t + +pos + = +sourû + - +­p +-> +sourû_·¿ms +; + +693 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +694 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +695 +ušt32_t + +n_»ad”s + = 0, +i +; + +697  +i + = 0; i < +n_p–šes +; i++) { + +698  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +699 +ušt32_t + +n_pktq_š + = + `RTE_MIN +( +p +->n_pktq_š, + `RTE_DIM +Õ-> +pktq_š +)); + +700 +ušt32_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_»ad”s +++; + +711  +n_»ad”s +; + +712 + } +} + +714  +šlše + +ušt32_t + + +715 + $­p_msgq_g‘_»ad”s +( +­p_·¿ms + * +­p +,  +­p_msgq_·¿ms + * +msgq +) + +717 +ušt32_t + +pos + = +msgq + - +­p +-> +msgq_·¿ms +; + +718 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +719 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +720 +ušt32_t + +n_»ad”s + = 0, +i +; + +722  +i + = 0; i < +n_p–šes +; i++) { + +723  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +724 +ušt32_t + +n_msgq_š + = + `RTE_MIN +( +p +->n_msgq_š, + `RTE_DIM +Õ-> +msgq_š +)); + +725 +ušt32_t + +j +; + +727  +j + = 0; j < +n_msgq_š +; j++) + +728 ià( +p +-> +msgq_š +[ +j +] =ð +pos +) + +729 +n_»ad”s +++; + +732  +n_»ad”s +; + +733 + } +} + +735  +šlše + +ušt32_t + + +736 + $­p_txq_g‘_wr™”s +( +­p_·¿ms + * +­p +,  +­p_pktq_hwq_out_·¿ms + * +txq +) + +738 +ušt32_t + +pos + = +txq + - +­p +-> +hwq_out_·¿ms +; + +739 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +740 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +741 +ušt32_t + +n_wr™”s + = 0, +i +; + +743  +i + = 0; i < +n_p–šes +; i++) { + +744  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +745 +ušt32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +746 + `RTE_DIM +( +p +-> +pktq_out +)); + +747 +ušt32_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_wr™”s +++; + +758  +n_wr™”s +; + +759 + } +} + +761  +šlše + +ušt32_t + + +762 + $­p_swq_g‘_wr™”s +( +­p_·¿ms + * +­p +,  +­p_pktq_swq_·¿ms + * +swq +) + +764 +ušt32_t + +pos + = +swq + - +­p +-> +swq_·¿ms +; + +765 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +766 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +767 +ušt32_t + +n_wr™”s + = 0, +i +; + +769  +i + = 0; i < +n_p–šes +; i++) { + +770  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +771 +ušt32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +772 + `RTE_DIM +( +p +-> +pktq_out +)); + +773 +ušt32_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_wr™”s +++; + +784  +n_wr™”s +; + +785 + } +} + +787  +šlše + +ušt32_t + + +788 + $­p_tm_g‘_wr™”s +( +­p_·¿ms + * +­p +,  +­p_pktq_tm_·¿ms + * +tm +) + +790 +ušt32_t + +pos + = +tm + - +­p +-> +tm_·¿ms +; + +791 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +792 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +793 +ušt32_t + +n_wr™”s + = 0, +i +; + +795  +i + = 0; i < +n_p–šes +; i++) { + +796  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +797 +ušt32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +798 + `RTE_DIM +( +p +-> +pktq_out +)); + +799 +ušt32_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_wr™”s +++; + +810  +n_wr™”s +; + +811 + } +} + +813  +šlše + +ušt32_t + + +814 + $­p_sšk_g‘_wr™”s +( +­p_·¿ms + * +­p +,  +­p_pktq_sšk_·¿ms + * +sšk +) + +816 +ušt32_t + +pos + = +sšk + - +­p +-> +sšk_·¿ms +; + +817 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +818 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +819 +ušt32_t + +n_wr™”s + = 0, +i +; + +821  +i + = 0; i < +n_p–šes +; i++) { + +822  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +823 +ušt32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +824 + `RTE_DIM +( +p +-> +pktq_out +)); + +825 +ušt32_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_wr™”s +++; + +836  +n_wr™”s +; + +837 + } +} + +839  +šlše + +ušt32_t + + +840 + $­p_cÜe_is_’abËd +( +­p_·¿ms + * +­p +, +ušt32_t + +lcÜe_id +) { + +841 ( +­p +-> +cÜe_mask +[ +lcÜe_id + / 64] & + +842 (1LLU << ( +lcÜe_id + % 64))); + +843 + } +} + +845  +šlše +  + +846 + $­p_cÜe_’abË_š_cÜe_mask +( +­p_·¿ms + * +­p +,  +lcÜe_id +) { + +847 +­p +-> +cÜe_mask +[ +lcÜe_id + / 64] |= 1LLU << (lcore_id % 64); + +849 + } +} + +851  +šlše +  + +852 + $­p_cÜe_bužd_cÜe_mask_¡ršg +( +­p_·¿ms + * +­p +,  + +853 * +mask_bufãr +) { + +854  +i +; + +856 +mask_bufãr +[0] = '\0'; + +857  +i + = () + `RTE_DIM +( +­p +-> +cÜe_mask +); i > 0; i--) { + +859  +bufãr +[(64 / 8) * 2 + 1]; + +860 + `mem£t +( +bufãr +, 0, (buffer)); + +861 + `¢´štf +( +bufãr +, (bufãr), "%016" +PRIx64 +, + +862 +­p +-> +cÜe_mask +[ +i +-1]); + +863 + `¡rÿt +( +mask_bufãr +, +bufãr +); + +865 + } +} + +867  +šlše + +ušt32_t + + +868 + $­p_msgq_g‘_wr™”s +( +­p_·¿ms + * +­p +,  +­p_msgq_·¿ms + * +msgq +) + +870 +ušt32_t + +pos + = +msgq + - +­p +-> +msgq_·¿ms +; + +871 +ušt32_t + +n_p–šes + = + `RTE_MIN +( +­p +->n_pipelines, + +872 + `RTE_DIM +( +­p +-> +p–še_·¿ms +)); + +873 +ušt32_t + +n_wr™”s + = 0, +i +; + +875  +i + = 0; i < +n_p–šes +; i++) { + +876  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +877 +ušt32_t + +n_msgq_out + = + `RTE_MIN +( +p +->n_msgq_out, + +878 + `RTE_DIM +( +p +-> +msgq_out +)); + +879 +ušt32_t + +j +; + +881  +j + = 0; j < +n_msgq_out +; j++) + +882 ià( +p +-> +msgq_out +[ +j +] =ð +pos +) + +883 +n_wr™”s +++; + +886  +n_wr™”s +; + +887 + } +} + +889  +šlše +  +­p_lšk_·¿ms + * + +890 + $­p_g‘_lšk_fÜ_rxq +( +­p_·¿ms + * +­p +,  +­p_pktq_hwq_š_·¿ms + * +p +) + +892  +lšk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +893 +ssize_t + +lšk_·¿m_idx +; + +894 +ušt32_t + +rxq_lšk_id +, +rxq_queue_id +; + +896 + `ssÿnf +( +p +-> +Çme +, "RXQ%" +SCNu32 + ".%" SCNu32, + +897 & +rxq_lšk_id +, & +rxq_queue_id +); + +898 + `¥rštf +( +lšk_Çme +, "LINK%" +PRIu32 +, +rxq_lšk_id +); + +899 +lšk_·¿m_idx + = + `APP_PARAM_FIND +( +­p +-> +lšk_·¿ms +, +lšk_Çme +); + +900 + `APP_CHECK +(( +lšk_·¿m_idx + >= 0), + +901 "CªnÙ fšd % fÜ %s", +lšk_Çme +, +p +-> +Çme +); + +903  & +­p +-> +lšk_·¿ms +[ +lšk_·¿m_idx +]; + +904 + } +} + +906  +šlše +  +­p_lšk_·¿ms + * + +907 + $­p_g‘_lšk_fÜ_txq +( +­p_·¿ms + * +­p +,  +­p_pktq_hwq_out_·¿ms + * +p +) + +909  +lšk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +910 +ssize_t + +lšk_·¿m_idx +; + +911 +ušt32_t + +txq_lšk_id +, +txq_queue_id +; + +913 + `ssÿnf +( +p +-> +Çme +, "TXQ%" +SCNu32 + ".%" SCNu32, + +914 & +txq_lšk_id +, & +txq_queue_id +); + +915 + `¥rštf +( +lšk_Çme +, "LINK%" +PRIu32 +, +txq_lšk_id +); + +916 +lšk_·¿m_idx + = + `APP_PARAM_FIND +( +­p +-> +lšk_·¿ms +, +lšk_Çme +); + +917 + `APP_CHECK +(( +lšk_·¿m_idx + >= 0), + +918 "CªnÙ fšd % fÜ %s", +lšk_Çme +, +p +-> +Çme +); + +920  & +­p +-> +lšk_·¿ms +[ +lšk_·¿m_idx +]; + +921 + } +} + +923  +šlše +  +­p_lšk_·¿ms + * + +924 + $­p_g‘_lšk_fÜ_tm +( +­p_·¿ms + * +­p +,  +­p_pktq_tm_·¿ms + * +p_tm +) + +926  +lšk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +927 +ušt32_t + +lšk_id +; + +928 +ssize_t + +lšk_·¿m_idx +; + +930 + `ssÿnf +( +p_tm +-> +Çme +, "TM%" +PRIu32 +, & +lšk_id +); + +931 + `¥rštf +( +lšk_Çme +, "LINK%" +PRIu32 +, +lšk_id +); + +932 +lšk_·¿m_idx + = + `APP_PARAM_FIND +( +­p +-> +lšk_·¿ms +, +lšk_Çme +); + +933 + `APP_CHECK +(( +lšk_·¿m_idx + >= 0), + +934 "CªnÙ fšd % fÜ %s", +lšk_Çme +, +p_tm +-> +Çme +); + +936  & +­p +-> +lšk_·¿ms +[ +lšk_·¿m_idx +]; + +937 + } +} + +939  +­p_cÚfig_š™ +( +­p_·¿ms + * +­p +); + +941  +­p_cÚfig_¬gs +( +­p_·¿ms + * +­p +, + +942  +¬gc +, ** +¬gv +); + +944  +­p_cÚfig_´•roc +( +­p_·¿ms + * +­p +); + +946  +­p_cÚfig_·r£ +( +­p_·¿ms + * +­p +, + +947 cÚ¡ * +fže_Çme +); + +949  +­p_cÚfig_·r£_tm +( +­p_·¿ms + * +­p +); + +951  +­p_cÚfig_§ve +( +­p_·¿ms + * +­p +, + +952 cÚ¡ * +fže_Çme +); + +954  +­p_cÚfig_check +( +­p_·¿ms + * +­p +); + +956  +­p_š™ +( +­p_·¿ms + * +­p +); + +958  +­p_th»ad +(* +¬g +); + +960  +­p_p–še_ty³_»gi¡” +( +­p_·¿ms + * +­p +, + +961  +p–še_ty³ + * +±y³ +); + +963  +p–še_ty³ + * +­p_p–še_ty³_fšd +( +­p_·¿ms + * +­p +, + +964 * +Çme +); + +966  +­p_lšk_up_š‹º® +( +­p_·¿ms + * +­p +, + +967  +­p_lšk_·¿ms + * +ý +); + +969  +­p_lšk_down_š‹º® +( +­p_·¿ms + * +­p +, + +970  +­p_lšk_·¿ms + * +ý +); + + @vnf_common/config_check.c + +17  + ~<¡dio.h +> + +19  + ~<¹e_.h +> + +21  + ~"­p.h +" + +23 +ušt8_t + + gg_n_hwq_š +; + +25 + $check_mempoÞs +( +­p_·¿ms + * +­p +) + +27 +ušt32_t + +i +; + +29  +i + = 0; i < +­p +-> +n_mempoÞs +; i++) { + +30  +­p_mempoÞ_·¿ms + * +p + = & +­p +-> +mempoÞ_·¿ms +[ +i +]; + +32 + `APP_CHECK +(( +p +-> +poÞ_size + > 0), + +33 "MempoÞ % sizi 0\n", +p +-> +Çme +); + +35 + `APP_CHECK +(( +p +-> +ÿche_size + > 0), + +36 "MempoÞ % ÿchsizi 0\n", +p +-> +Çme +); + +38 + `APP_CHECK +( + `¹e_is_pow”_of_2 +( +p +-> +ÿche_size +), + +39 "MempoÞ % ÿchsiznه…ow” oà2\n", +p +-> +Çme +); + +41 + } +} + +44 + $check_lšks +( +­p_·¿ms + * +­p +) + +46 +ušt32_t + +i +; + +49 ià( +­p +-> +pÜt_mask +) { + +50 +ušt32_t + +n_lšks_pÜt_mask + = + +51 + `__bužtš_pÝcouÁÎ +( +­p +-> +pÜt_mask +); + +53 + `APP_CHECK +(( +­p +-> +n_lšks + =ð +n_lšks_pÜt_mask +), + +57  +i + = 0; i < +­p +-> +n_lšks +; i++) { + +58  +­p_lšk_·¿ms + * +lšk + = & +­p +-> +lšk_·¿ms +[ +i +]; + +59 +ušt32_t + +rxq_max +, +n_rxq +, +n_txq +, +lšk_id +, +i +; + +61 + `APP_PARAM_GET_ID +( +lšk +, "LINK", +lšk_id +); + +64 +rxq_max + = 0; + +65 ià( +lšk +-> +¬p_q + > +rxq_max +) + +66 +rxq_max + = +lšk +-> +¬p_q +; + +67 ià( +lšk +-> +tý_syn_q + > +rxq_max +) + +68 +rxq_max + = +lšk +-> +tý_syn_q +; + +69 ià( +lšk +-> +_loÿl_q + > +rxq_max +) + +70 +rxq_max + = +lšk +-> +_loÿl_q +; + +71 ià( +lšk +-> +tý_loÿl_q + > +rxq_max +) + +72 +rxq_max + = +lšk +-> +tý_loÿl_q +; + +73 ià( +lšk +-> +udp_loÿl_q + > +rxq_max +) + +74 +rxq_max + = +lšk +-> +udp_loÿl_q +; + +75 ià( +lšk +-> +sùp_loÿl_q + > +rxq_max +) + +76 +rxq_max + = +lšk +-> +sùp_loÿl_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 +((( +lšk +-> +¬p_q + =ð +i +) || + +83 ( +lšk +-> +tý_syn_q + =ð +i +) || + +84 ( +lšk +-> +_loÿl_q + =ð +i +) || + +85 ( +lšk +-> +tý_loÿl_q + =ð +i +) || + +86 ( +lšk +-> +udp_loÿl_q + =ð +i +) || + +87 ( +lšk +-> +sùp_loÿl_q + =ð +i +)), + +88 "% RXQ ¬nÙ cÚtiguou (A)\n", +lšk +-> +Çme +); + +92  +i + = 1; i <ð +rxq_max +; i++) + +93 + `APP_CHECK +((( +lšk +-> +¬p_q + =ð +i +) || + +94 ( +lšk +-> +tý_syn_q + =ð +i +) || + +95 ( +lšk +-> +_loÿl_q + =ð +i +) || + +96 ( +lšk +-> +tý_loÿl_q + =ð +i +) || + +97 ( +lšk +-> +udp_loÿl_q + =ð +i +) || + +98 ( +lšk +-> +sùp_loÿl_q + =ð +i +)), + +99 "% RXQ ¬nÙ cÚtiguou (A)\n", +lšk +-> +Çme +); + +101 +n_rxq + = + `­p_lšk_g‘_n_rxq +( +­p +, +lšk +); + +103 + `APP_CHECK +(( +n_rxq +), "% dÛ nÙ havªy RXQ\n", +lšk +-> +Ç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 + `¥rštf +( +Çme +, "RXQ%" +PRIu32 + ".%" PRIu32, + +114 +lšk_id +, +i +); + +115 +pos + = + `APP_PARAM_FIND +( +­p +-> +hwq_š_·¿ms +, +Çme +); + +116 + `APP_CHECK +(( +pos + >= 0), + +117 "% RXQ ¬nÙ cÚtiguou (C)\n", +lšk +-> +Çme +); + +121 +n_txq + = + `­p_lšk_g‘_n_txq +( +­p +, +lšk +); + +123 + `APP_CHECK +(( +n_txq +), "% dÛ nÙ havªy TXQ\n", +lšk +-> +Çme +); + +125  +i + = 0; i < +n_txq +; i++) { + +126  +Çme +[ +APP_PARAM_NAME_SIZE +]; + +127  +pos +; + +129 + `¥rštf +( +Çme +, "TXQ%" +PRIu32 + ".%" PRIu32, + +130 +lšk_id +, +i +); + +131 +pos + = + `APP_PARAM_FIND +( +­p +-> +hwq_out_·¿ms +, +Çme +); + +132 + `APP_CHECK +(( +pos + >= 0), + +133 "% TXQ ¬nÙ cÚtiguous\n", +lšk +-> +Çme +); + +136 + } +} + +139 + $check_rxqs +( +­p_·¿ms + * +­p +) + +141 +ušt32_t + +i +; + +143  +i + = 0; i < +­p +-> +n_pktq_hwq_š +; i++) { + +144  +­p_pktq_hwq_š_·¿ms + * +p + = & +­p +-> +hwq_š_·¿ms +[ +i +]; + +145 +ušt32_t + +n_»ad”s + = + `­p_rxq_g‘_»ad”s +( +­p +, +p +); + +147 + `APP_CHECK +(( +p +-> +size + > 0), + +148 "% sizi 0\n", +p +-> +Çme +); + +150 + `APP_CHECK +(( + `¹e_is_pow”_of_2 +( +p +-> +size +)), + +151 "% sizi nه…ow” oà2\n", +p +-> +Çme +); + +153 + `APP_CHECK +(( +p +-> +bur¡ + > 0), + +154 "% bur¡ sizi 0\n", +p +-> +Çme +); + +156 + `APP_CHECK +(( +p +-> +bur¡ + <ðp-> +size +), + +157 "% bur¡ sizi bigg”hª it size\n", +p +-> +Çme +); + +159 + `APP_CHECK +(( +n_»ad”s + != 0), + +160 "% ha nØ»ad”\n", +p +-> +Çme +); + +162 + `APP_CHECK +(( +n_»ad”s + == 1), + +163 "% ha mܐthª oėd”\n", +p +-> +Çme +); + +165 + } +} + +168 + $check_txqs +( +­p_·¿ms + * +­p +) + +170 +ušt32_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 +ušt32_t + +n_wr™”s + = + `­p_txq_g‘_wr™”s +( +­p +, +p +); + +176 + `APP_CHECK +(( +p +-> +size + > 0), + +177 "% sizi 0\n", +p +-> +Çme +); + +179 + `APP_CHECK +(( + `¹e_is_pow”_of_2 +( +p +-> +size +)), + +180 "% sizi nه…ow” oà2\n", +p +-> +Çme +); + +182 + `APP_CHECK +(( +p +-> +bur¡ + > 0), + +183 "% bur¡ sizi 0\n", +p +-> +Çme +); + +185 + `APP_CHECK +(( +p +-> +bur¡ + <ðp-> +size +), + +186 "% bur¡ sizi bigg”hª it size\n", +p +-> +Çme +); + +188 + `APP_CHECK +(( +n_wr™”s + != 0), + +189 "% ha nØwr™”\n", +p +-> +Çme +); + +191 + `APP_CHECK +(( +n_wr™”s + == 1), + +192 "% ha mܐthª oà wr™”\n", +p +-> +Çme +); + +194 + } +} + +197 + $check_swqs +( +­p_·¿ms + * +­p +) + +199 +ušt32_t + +i +; + +201  +i + = 0; i < +­p +-> +n_pktq_swq +; i++) { + +202  +­p_pktq_swq_·¿ms + * +p + = & +­p +-> +swq_·¿ms +[ +i +]; + +203 +ušt32_t + +n_»ad”s + = + `­p_swq_g‘_»ad”s +( +­p +, +p +); + +204 +ušt32_t + +n_wr™”s + = + `­p_swq_g‘_wr™”s +( +­p +, +p +); + +205 +ušt32_t + +n_æags +; + +207 + `APP_CHECK +(( +p +-> +size + > 0), + +208 "% sizi 0\n", +p +-> +Çme +); + +210 + `APP_CHECK +(( + `¹e_is_pow”_of_2 +( +p +-> +size +)), + +211 "% sizi nه…ow” oà2\n", +p +-> +Çme +); + +213 + `APP_CHECK +(( +p +-> +bur¡_»ad + > 0), + +214 "% »ad bur¡ sizi 0\n", +p +-> +Çme +); + +216 + `APP_CHECK +(( +p +-> +bur¡_»ad + <ðp-> +size +), + +218 +p +-> +Çme +); + +220 + `APP_CHECK +(( +p +-> +bur¡_wr™e + > 0), + +221 "% wr™bur¡ sizi 0\n", +p +-> +Çme +); + +223 + `APP_CHECK +(( +p +-> +bur¡_wr™e + <ðp-> +size +), + +225 +p +-> +Çme +); + +227 + `APP_CHECK +(( +n_»ad”s + != 0), + +228 "% ha nØ»ad”\n", +p +-> +Çme +); + +230 ià( +n_»ad”s + > 1) + +231 + `APP_LOG +( +­p +, +LOW +, "% ha mܐthª oėd”", +p +-> +Çme +); + +233 + `APP_CHECK +(( +n_wr™”s + != 0), + +234 "% ha nØwr™”\n", +p +-> +Çme +); + +236 ià( +n_wr™”s + > 1) + +237 + `APP_LOG +( +­p +, +LOW +, "% ha mܐ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_»ad”s + > 1è&& ( +n_æags + == 1))), + +248 +p +-> +Çme +); + +250 + `APP_CHECK +((!(( +n_wr™”s + > 1è&& ( +n_æags + == 1))), + +253 +p +-> +Çme +); + +255 +n_æags + = +p +-> +v4_¿s + +…-> +v6_¿s +; + +257 + `APP_CHECK +((!(( +p +-> +drÝËss + =ð1è&& ( +n_æags + == 1))), + +258 "% ha drÝËs wh’„—s£mbly mod’abËd\n", +p +-> +Çme +); + +260 +n_æags + = +p +-> +v4_äag + +…-> +v6_äag +; + +262 ià( +n_æags + == 1) { + +263 +ušt16_t + +_hdr_size + = ( +p +-> +v4_äag +è? ( +v4_hdr +) : + +264 ( +v6_hdr +); + +266 + `APP_CHECK +(( +p +-> +mtu + > +_hdr_size +), + +267 "% mtu sizi sm®Ë¸thª i°h—d”\n", +p +-> +Çme +); + +269 + `APP_CHECK +((!(( +p +-> +mtu + - +_hdr_size +) % 8)), + +270 "% mtu sizi šcÜ»ù\n", +p +-> +Çme +); + +273 + } +} + +276 + $check_tms +( +­p_·¿ms + * +­p +) + +278 +ušt32_t + +i +; + +280  +i + = 0; i < +­p +-> +n_pktq_tm +; i++) { + +281  +­p_pktq_tm_·¿ms + * +p + = & +­p +-> +tm_·¿ms +[ +i +]; + +282 +ušt32_t + +n_»ad”s + = + `­p_tm_g‘_»ad”s +( +­p +, +p +); + +283 +ušt32_t + +n_wr™”s + = + `­p_tm_g‘_wr™”s +( +­p +, +p +); + +285 + `APP_CHECK +(( +n_»ad”s + != 0), + +286 "% ha nØ»ad”\n", +p +-> +Çme +); + +288 + `APP_CHECK +(( +n_»ad”s + == 1), + +289 "% ha mܐthª oėd”\n", +p +-> +Çme +); + +291 + `APP_CHECK +(( +n_wr™”s + != 0), + +292 "% ha nØwr™”\n", +p +-> +Çme +); + +294 + `APP_CHECK +(( +n_wr™”s + == 1), + +295 "% ha mܐthª oà wr™”\n", +p +-> +Çme +); + +297 + } +} + +300 + $check_sourûs +( +­p_·¿ms + * +­p +) + +302 +ušt32_t + +i +; + +304  +i + = 0; i < +­p +-> +n_pktq_sourû +; i++) { + +305  +­p_pktq_sourû_·¿ms + * +p + = & +­p +-> +sourû_·¿ms +[ +i +]; + +306 +ušt32_t + +n_»ad”s + = + `­p_sourû_g‘_»ad”s +( +­p +, +p +); + +308 + `APP_CHECK +(( +n_»ad”s + != 0), + +309 "% ha nØ»ad”\n", +p +-> +Çme +); + +311 + `APP_CHECK +(( +n_»ad”s + == 1), + +312 "% ha mܐthª oėd”\n", +p +-> +Çme +); + +314 + } +} + +317 + $check_sšks +( +­p_·¿ms + * +­p +) + +319 +ušt32_t + +i +; + +321  +i + = 0; i < +­p +-> +n_pktq_sšk +; i++) { + +322  +­p_pktq_sšk_·¿ms + * +p + = & +­p +-> +sšk_·¿ms +[ +i +]; + +323 +ušt32_t + +n_wr™”s + = + `­p_sšk_g‘_wr™”s +( +­p +, +p +); + +325 + `APP_CHECK +(( +n_wr™”s + != 0), + +326 "% ha nØwr™”\n", +p +-> +Çme +); + +328 + `APP_CHECK +(( +n_wr™”s + == 1), + +329 "% ha mܐthª oà wr™”\n", +p +-> +Çme +); + +331 + } +} + +334 + $check_msgqs +( +­p_·¿ms + * +­p +) + +336 +ušt32_t + +i +; + +338  +i + = 0; i < +­p +-> +n_msgq +; i++) { + +339  +­p_msgq_·¿ms + * +p + = & +­p +-> +msgq_·¿ms +[ +i +]; + +340 +ušt32_t + +n_»ad”s + = + `­p_msgq_g‘_»ad”s +( +­p +, +p +); + +341 +ušt32_t + +n_wr™”s + = + `­p_msgq_g‘_wr™”s +( +­p +, +p +); + +342 +ušt32_t + +msgq_»q_p–še +, +msgq_r¥_p–še +; + +343 +ušt32_t + +msgq_»q_cÜe +, +msgq_r¥_cÜe +; + +345 + `APP_CHECK +(( +p +-> +size + > 0), + +346 "% sizi 0\n", +p +-> +Çme +); + +348 + `APP_CHECK +(( + `¹e_is_pow”_of_2 +( +p +-> +size +)), + +349 "% sizi nه…ow” oà2\n", +p +-> +Çme +); + +351 +msgq_»q_p–še + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-REQ-PIPELINE", + +352 + `¡¾’ +("MSGQ-REQ-PIPELINE")) == 0); + +354 +msgq_r¥_p–še + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-RSP-PIPELINE", + +355 + `¡¾’ +("MSGQ-RSP-PIPELINE")) == 0); + +357 +msgq_»q_cÜe + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-REQ-CORE", + +358 + `¡¾’ +("MSGQ-REQ-CORE")) == 0); + +360 +msgq_r¥_cÜe + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-RSP-CORE", + +361 + `¡¾’ +("MSGQ-RSP-CORE")) == 0); + +363 ià(( +msgq_»q_p–še + == 0) && + +364 ( +msgq_r¥_p–še + == 0) && + +365 ( +msgq_»q_cÜe + == 0) && + +366 ( +msgq_r¥_cÜe + == 0)) { + +367 + `APP_CHECK +(( +n_»ad”s + != 0), + +368 "% ha nØ»ad”\n", +p +-> +Çme +); + +370 + `APP_CHECK +(( +n_»ad”s + == 1), + +371 "% ha mܐthª oėd”\n", +p +-> +Çme +); + +373 + `APP_CHECK +(( +n_wr™”s + != 0), + +374 "% ha nØwr™”\n", +p +-> +Çme +); + +376 + `APP_CHECK +(( +n_wr™”s + == 1), + +377 "% ha mܐthª oà wr™”\n", +p +-> +Çme +); + +380 ià( +msgq_»q_p–še +) { + +381  +­p_p–še_·¿ms + * +p–še +; + +382 +ušt32_t + +p–še_id +; + +384 + `APP_PARAM_GET_ID +( +p +, "MSGQ-REQ-PIPELINE", +p–še_id +); + +386 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, + +388 +p–še_id +, + +389 +p–še +); + +391 + `APP_CHECK +(( +p–še + !ð +NULL +), + +393 +p +-> +Çme +); + +396 ià( +msgq_r¥_p–še +) { + +397  +­p_p–še_·¿ms + * +p–še +; + +398 +ušt32_t + +p–še_id +; + +400 + `APP_PARAM_GET_ID +( +p +, "MSGQ-RSP-PIPELINE", +p–še_id +); + +402 + `APP_PARAM_FIND_BY_ID +( +­p +-> +p–še_·¿ms +, + +404 +p–še_id +, + +405 +p–še +); + +407 + `APP_CHECK +(( +p–še + !ð +NULL +), + +409 +p +-> +Çme +); + +412 + } +} + +415 + $check_p–šes +( +­p_·¿ms + * +­p +) + +417 +ušt32_t + +i +; + +419  +i + = 0; i < +­p +-> +n_p–šes +; i++) { + +420  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +422 + `APP_CHECK +(( +p +-> +n_msgq_š + =ðp-> +n_msgq_out +), + +424 "thnumb” oàouuˆMSGQs\n", +p +-> +Çme +); + +426 + } +} + +429 + $­p_cÚfig_check +( +­p_·¿ms + * +­p +) + +431 + `check_mempoÞs +( +­p +); + +432 + `check_lšks +( +­p +); + +433 + `check_rxqs +( +­p +); + +434 + `check_txqs +( +­p +); + +435 + `check_swqs +( +­p +); + +436 + `check_tms +( +­p +); + +437 + `check_sourûs +( +­p +); + +438 + `check_sšks +( +­p +); + +439 + `check_msgqs +( +­p +); + +440 + `check_p–šes +( +­p +); + +443 + } +} + + @vnf_common/config_parse.c + +16  + ~<¡dšt.h +> + +17  + ~<¡dlib.h +> + +18  + ~<¡dio.h +> + +19  + ~<ùy³.h +> + +20  + ~ + +21  + ~<”ºo.h +> + +22  + ~<¡d¬g.h +> + +23  + ~<¡ršg.h +> + +24  + ~ + +25  + ~ + +26  + ~ + +28  + ~<¹e_”ºo.h +> + +29  + ~<¹e_cfgfže.h +> + +30  + ~<¹e_¡ršg_âs.h +> + +32  + ~"­p.h +" + +33  + ~"·r£r.h +" + +39  +­p_·¿ms + + g­p_·¿ms_deçuÉ + = { + +40 . +cÚfig_fže + = "./config/ip_pipeline.cfg", + +41 . + glog_Ëv– + = +APP_LOG_LEVEL_HIGH +, + +42 . + gpÜt_mask + = 0, + +44 . + g—l_·¿ms + = { + +45 . +chªÃls + = 4, + +49 cÚ¡  +­p_mempoÞ_·¿ms + + gmempoÞ_·¿ms_deçuÉ + = { + +50 . +·r£d + = 0, + +51 . + gbufãr_size + = 2048 + ( +¹e_mbuf +è+ +RTE_PKTMBUF_HEADROOM +, + +52 . + gpoÞ_size + = 32 * 1024, + +53 . + gÿche_size + = 256, + +54 . + gýu_sock‘_id + = 0, + +57 cÚ¡  +­p_lšk_·¿ms + + glšk_·¿ms_deçuÉ + = { + +58 . +·r£d + = 0, + +59 . + gpmd_id + = 0, + +60 . + g¬p_q + = 0, + +61 . + gtý_syn_q + = 0, + +62 . + g_loÿl_q + = 0, + +63 . + gtý_loÿl_q + = 0, + +64 . + gudp_loÿl_q + = 0, + +65 . + gsùp_loÿl_q + = 0, + +66 . + g¡©e + = 0, + +67 . + g + = 0, + +68 . + gv6 + = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + +69 . + gd•th + = 0, + +70 . + gd•th_v6 + = 0, + +71 . + gmac_addr + = 0, + +72 . + gpci_bdf + = {0}, + +74 . + gcÚf + = { + +75 . +lšk_¥“ds + = 0, + +76 . + grxmode + = { + +77 . +mq_mode + = +ETH_MQ_RX_NONE +, + +79 . + gh—d”_¥l™ + = 0, + +80 . + ghw__checksum + = 0, + +81 . + ghw_vÏn_fž‹r + = 0, + +82 . + ghw_vÏn_¡r + = 0, + +83 . + ghw_vÏn_ex‹nd + = 0, + +84 . + gjumbo_äame + = 0, + +85 . + ghw_¡r_üc + = 0, + +86 . + g’abË_sÿ‰” + = 0, + +88 . + gmax_rx_pkt_Ën + = 9000, + +89 . + g¥l™_hdr_size + = 0, + +91 . + gtxmode + = { + +92 . +mq_mode + = +ETH_MQ_TX_NONE +, + +94 . + gÍbk_mode + = 0, + +95 #iâdeà +VNF_ACL + + +96 #ifdeà +LSC_GRARP + + +97 . + gšŒ_cÚf + = { + +98 . +lsc + = 1, + +104 . + g´omisc + = 1, + +107 cÚ¡  +­p_pktq_hwq_š_·¿ms + + gdeçuÉ_hwq_š_·¿ms + = { + +108 . +·r£d + = 0, + +109 . + gmempoÞ_id + = 0, + +110 . + gsize + = 128, + +111 . + gbur¡ + = 32, + +113 . + gcÚf + = { + +114 . +rx_th»sh + = { + +115 . +±h»sh + = 8, + +116 . + ghth»sh + = 8, + +117 . + gwth»sh + = 4, + +119 . + grx_ä“_th»sh + = 64, + +120 . + grx_drÝ_’ + = 0, + +121 . + grx_deã¼ed_¡¬t + = 0, + +125 cÚ¡  +­p_pktq_hwq_out_·¿ms + + gdeçuÉ_hwq_out_·¿ms + = { + +126 . +·r£d + = 0, + +127 . + gsize + = 512, + +128 . + gbur¡ + = 32, + +129 . + gdrÝËss + = 0, + +130 . + gn_»Œ›s + = 0, + +132 . + gcÚf + = { + +133 . +tx_th»sh + = { + +134 . +±h»sh + = 36, + +135 . + ghth»sh + = 0, + +136 . + gwth»sh + = 0, + +138 . + gtx_rs_th»sh + = 0, + +139 . + gtx_ä“_th»sh + = 0, + +140 . + gtxq_æags + = +ETH_TXQ_FLAGS_NOMULTSEGS + | + +141 +ETH_TXQ_FLAGS_NOOFFLOADS +, + +142 . + gtx_deã¼ed_¡¬t + = 0, + +146 cÚ¡  +­p_pktq_swq_·¿ms + + gdeçuÉ_swq_·¿ms + = { + +147 . +·r£d + = 0, + +148 . + gsize + = 256, + +149 . + gbur¡_»ad + = 32, + +150 . + gbur¡_wr™e + = 32, + +151 . + gdrÝËss + = 0, + +152 . + gn_»Œ›s + = 0, + +153 . + gýu_sock‘_id + = 0, + +154 . + gv4_äag + = 0, + +155 . + gv6_äag + = 0, + +156 . + gv4_¿s + = 0, + +157 . + gv6_¿s + = 0, + +158 . + gmtu + = 0, + +159 . + gm‘ad©a_size + = 0, + +160 . + gmempoÞ_dœeù_id + = 0, + +161 . + gmempoÞ_šdœeù_id + = 0, + +164  +­p_pktq_tm_·¿ms + + gdeçuÉ_tm_·¿ms + = { + +165 . +·r£d + = 0, + +166 . + gfže_Çme + = "./config/tm_profile.cfg", + +167 . + gbur¡_»ad + = 64, + +168 . + gbur¡_wr™e + = 32, + +171  +­p_pktq_sourû_·¿ms + + gdeçuÉ_sourû_·¿ms + = { + +172 . +·r£d + = 0, + +173 . + gmempoÞ_id + = 0, + +174 . + gbur¡ + = 32, + +175 . + gfže_Çme + = +NULL +, + +176 . + gn_by‹s_³r_pkt + = 0, + +179  +­p_pktq_sšk_·¿ms + + gdeçuÉ_sšk_·¿ms + = { + +180 . +·r£d + = 0, + +181 . + gfže_Çme + = +NULL +, + +182 . + gn_pkts_to_dump + = 0, + +185  +­p_msgq_·¿ms + + gdeçuÉ_msgq_·¿ms + = { + +186 . +·r£d + = 0, + +187 . + gsize + = 64, + +188 . + gýu_sock‘_id + = 0, + +191  +­p_p–še_·¿ms + + gdeçuÉ_p–še_·¿ms + = { + +192 . +·r£d + = 0, + +193 . + gsock‘_id + = 0, + +194 . + gcÜe_id + = 0, + +195 . + ghy³r_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Ú¡  + g­p_u§ge +[] = + +220 + $­p_´št_u§ge +(* +´gÇme +) + +222 + `¹e_ex™ +(0, +­p_u§ge +, +´gÇme +, +­p_·¿ms_deçuÉ +. +cÚfig_fže +); + +223 + } +} + +225  + #sk_wh™e_¥aûs +( +pos +) \ + +227 + `__ty³of__ +( +pos +è +_p + = (pos); \ + +228  ; + `is¥aû +(* +_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¬£ƒ¼Ü:oØmªy \"%s\" seùiÚs", +£ùiÚ_Çme +); \ + +238 + `APP_CHECK +((( +»suÉ + >ð0è&& ( +·¿ms_¬¿y +)[»suÉ]. +·r£d + == 0),\ + +239 "P¬£ƒ¼Ü: du¶iÿ‹ \"%s\" seùiÚ", +£ùiÚ_Çme +); \ + +240 + `APP_CHECK +(( +»suÉ + >= 0), \ + +241 "P¬£ƒ¼Ü iÀ£ùiÚ \"%s\"", +£ùiÚ_Çme +); \ + +242 } 0) + + ) + +245 + $·r£r_»ad_¬g_boÞ +(cÚ¡ * +p +) + +247 +p + = + `sk_wh™e_¥aûs +(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_wh™e_¥aûs +(p); + +276 ià( +p +[0] != '\0') + +277  - +EINVAL +; + +279  +»suÉ +; + +280 + } +} + +282  + #PARSE_ERROR +( +exp +, +£ùiÚ +, +’Œy +) \ + +283 + `APP_CHECK +( +exp +, "P¬£ƒ¼Ü iÀ£ùiÚ \"%s\":ƒÁry \"%s\"\n", +£ùiÚ +, +’Œy +) + + ) + +285  + #PARSE_ERROR_MESSAGE +( +exp +, +£ùiÚ +, +’Œy +, +mes§ge +) \ + +286 + `APP_CHECK +( +exp +, "Parseƒrror in section \"%s\",ƒntry \"%s\": %s\n", \ + +287 +£ùiÚ +, +’Œy +, +mes§ge +) + + ) + +290  + #PARSE_ERROR_MALLOC +( +exp +) \ + +291 + `APP_CHECK +( +exp +, "P¬£ƒ¼Ü:‚Øä“ memÜy\n") + + ) + +293  + #PARSE_ERROR_SECTION +( +exp +, +£ùiÚ +) \ + +294 + `APP_CHECK +( +exp +, "P¬£ƒ¼Ü iÀ£ùiÚ \"%s\"", +£ùiÚ +) + + ) + +296  + #PARSE_ERROR_SECTION_NO_ENTRIES +( +exp +, +£ùiÚ +) \ + +297 + `APP_CHECK +( +exp +, "P¬£ƒ¼Ü iÀ£ùiÚ \"%s\":‚Ø’Œ›s\n", +£ùiÚ +) + + ) + +299  + #PARSE_WARNING_IGNORED +( +exp +, +£ùiÚ +, +’Œy +) \ + +301 ià(!( +exp +)) \ + +302 + `årštf +( +¡d”r +, "Parse warning in section \"%s\": " \ + +303 "’Œy \"%s\" i ignÜed\n", +£ùiÚ +, +’Œy +); \ + +304 0) + + ) + +306  + #PARSE_ERROR_INVALID +( +exp +, +£ùiÚ +, +’Œy +) \ + +307 + `APP_CHECK +( +exp +, "Parseƒrror in section \"%s\": unrecognizedƒntry \"%s\"\n",\ + +308 +£ùiÚ +, +’Œy +) + + ) + +310  + #PARSE_ERROR_DUPLICATE +( +exp +, +£ùiÚ +, +’Œy +) \ + +311 + `APP_CHECK +( +exp +, "Parseƒrror in section \"%s\": duplicateƒntry \"%s\"\n",\ + +312 +£ùiÚ +, +’Œy +) + + ) + +315 + $·r£r_»ad_ušt64 +( +ušt64_t + * +v®ue +, cÚ¡ * +p +) + +317 * +Ãxt +; + +318 +ušt64_t + +v® +; + +320 +p + = + `sk_wh™e_¥aûs +(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_wh™e_¥aûs +(p); + +347 ià(* +p + != '\0') + +348  - +EINVAL +; + +350 * +v®ue + = +v® +; + +352 + } +} + +355 + $·r£r_»ad_ušt32 +( +ušt32_t + * +v®ue +, cÚ¡ * +p +) + +357 +ušt64_t + +v® + = 0; + +358  +»t + = + `·r£r_»ad_ušt64 +(& +v® +, +p +); + +360 ià( +»t + < 0) + +361  +»t +; + +363 ià( +v® + > +UINT32_MAX +) + +364  - +ERANGE +; + +366 * +v®ue + = +v® +; + +368 + } +} + +371 + $·r£_p–še_cÜe +( +ušt32_t + * +sock‘ +, + +372 +ušt32_t + * +cÜe +, + +373 +ušt32_t + * +ht +, + +374 cÚ¡ * +’Œy +) + +376 +size_t + +num_Ën +; + +377  +num +[8]; + +379 +ušt32_t + +s + = 0, +c + = 0, +h + = 0, +v® +; + +380 +ušt8_t + +s_·r£d + = 0, +c_·r£d + = 0, +h_·r£d + = 0; + +381 cÚ¡ * +Ãxt + = + `sk_wh™e_¥aûs +( +’Œy +); + +382  +ty³ +; + +385 * +Ãxt + != '\0') { + +387 ià( +s_·r£d + && +c_·r£d + && +h_·r£d +) + +388  - +EINVAL +; + +390 +ty³ + = * +Ãxt +; + +391  +ty³ +) { + +394 ià( +s_·r£d + || +c_·r£d + || +h_·r£d +) + +395  - +EINVAL +; + +396 +s_·r£d + = 1; + +397 +Ãxt +++; + +401 ià( +c_·r£d + || +h_·r£d +) + +402  - +EINVAL +; + +403 +c_·r£d + = 1; + +404 +Ãxt +++; + +408 ià( +h_·r£d +) + +409  - +EINVAL +; + +410 +h_·r£d + = 1; + +411 +Ãxt +++; + +415 ià(! + `isdig™ +(* +Ãxt +è|| +s_·r£d + || +c_·r£d + || +h_·r£d +) + +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 * +cÜe + = +c +; + +459 * +ht + = +h +; + +461 + } +} + +463  +ušt32_t + + +464 + $g‘_hex_v® +( +c +) + +466  +c +) { + +469  +c + - '0'; + +471  +c + - 'A' + 10; + +473  +c + - 'a' + 10; + +477 + } +} + +480 + $·r£_hex_¡ršg +(* +¤c +, +ušt8_t + * +d¡ +, +ušt32_t + * +size +) + +482 * +c +; + +483 +ušt32_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_dig™s +(cÚ¡ * +¤c +) + +518 +size_t + +i +; + +520  +i + = 0; + `isdig™ +( +¤c +[i]); i++); + +522  +i +; + +523 + } +} + +526 + $v®id©e_Ç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_dig™s +(& +Çme +[ +i +]); + +547 +i + +ð +j +; + +548 ià(( +j + =ð0è|| ( +Çme +[ +i +] != '.')) + +550 +i +++; + +553 ià( +num + == 1) { + +554 +j + = + `sk_dig™s +(& +Ç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_cfgfže + * +cfg +) + +568  +­p_—l_·¿ms + * +p + = & +­p +-> +—l_·¿ms +; + +569  +¹e_cfgfže_’Œy + * +’Œ›s +; + +570  +n_’Œ›s +, +i +; + +572 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +573 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +575 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +576 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +578 + `¹e_cfgfže_£ùiÚ_’Œ›s +( +cfg +, +£ùiÚ_Çme +, +’Œ›s +, +n_’Œ›s +); + +580  +i + = 0; i < +n_’Œ›s +; i++) { + +581  +¹e_cfgfže_’Œ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 +-> +cÜem­ + =ð +NULL +), + +598 +£ùiÚ_Çme +, + +599 +’Œy +-> +Çme +); + +600 +p +-> +cÜem­ + = + `¡rdup +( +’Œy +-> +v®ue +); + +605 ià( + `¡rcmp +( +’Œy +-> +Çme +, "master_lcore") == 0) { + +606  +¡©us +; + +608 + `PARSE_ERROR_DUPLICATE +(( +p +-> +ma¡”_lcÜe_´e£Á + == 0), + +609 +£ùiÚ_Çme +, + +610 +’Œy +-> +Çme +); + +611 +p +-> +ma¡”_lcÜe_´e£Á + = 1; + +613 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +ma¡”_lcÜe +, + +614 +’Œy +-> +v®ue +); + +615 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +620 ià( + `¡rcmp +( +’Œy +-> +Çme +, "n") == 0) { + +621  +¡©us +; + +623 + `PARSE_ERROR_DUPLICATE +(( +p +-> +chªÃls_´e£Á + == 0), + +624 +£ùiÚ_Çme +, + +625 +’Œy +-> +Çme +); + +626 +p +-> +chªÃls_´e£Á + = 1; + +628 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +chªÃls +, +’Œy +-> +v®ue +); + +629 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +634 ià( + `¡rcmp +( +’Œy +-> +Çme +, "m") == 0) { + +635  +¡©us +; + +637 + `PARSE_ERROR_DUPLICATE +(( +p +-> +memÜy_´e£Á + == 0), + +638 +£ùiÚ_Çme +, + +639 +’Œy +-> +Çme +); + +640 +p +-> +memÜy_´e£Á + = 1; + +642 +¡©us + = + `·r£r_»ad_ušt32 +(& +p +-> +memÜy +, +’Œy +-> +v®ue +); + +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 + = + `·r£r_»ad_ušt32 +(& +p +-> +¿nks +, +’Œy +-> +v®ue +); + +657 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +662 ià(( + `¡rcmp +( +’Œy +-> +Çme +, "pci_blacklist") == 0) || + +663 ( + `¡rcmp +( +’Œy +-> +Çme +, "b") == 0)) { + +664 +ušt32_t + +i +; + +666  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +667 ià( +p +-> +pci_bÏckli¡ +[ +i +]) + +670 +p +-> +pci_bÏckli¡ +[ +i +] = + +671 + `¡rdup +( +’Œy +-> +v®ue +); + +672 + `PARSE_ERROR_MALLOC +( +p +-> +pci_bÏckli¡ +[ +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 +ušt32_t + +i +; + +688 + `PARSE_ERROR_MESSAGE +(( +­p +-> +pÜt_mask + != 0), + +689 +£ùiÚ_Çme +, +’Œy +-> +Çme +, "entryo be " + +693  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +694 ià( +p +-> +pci_wh™–i¡ +[ +i +]) + +697 +p +-> +pci_wh™–i¡ +[ +i +] = + `¡rdup +( +’Œy +-> +v®ue +); + +698 + `PARSE_ERROR_MALLOC +( +p +-> +pci_wh™–i¡ +[ +i +]); + +703 + `PARSE_ERROR_MESSAGE +(( +i + < +APP_MAX_LINKS +), + +704 +£ùiÚ_Çme +, +’Œy +-> +Çme +, + +710 ià( + `¡rcmp +( +’Œy +-> +Çme +, "vdev") == 0) { + +711 +ušt32_t + +i +; + +713  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +714 ià( +p +-> +vdev +[ +i +]) + +717 +p +-> +vdev +[ +i +] = + `¡rdup +( +’Œy +-> +v®ue +); + +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 +-> +vmw¬e_tsc_m­_´e£Á + == 0), + +734 +£ùiÚ_Çme +, + +735 +’Œy +-> +Çme +); + +736 +p +-> +vmw¬e_tsc_m­_´e£Á + = 1; + +738 +v® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +739 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +740 +p +-> +vmw¬e_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 +-> +v®ue +); + +754 ià( + `¡rcmp +( +’Œy +-> +Çme +, "syslog") == 0) { + +755 + `PARSE_ERROR_DUPLICATE +(( +p +-> +sy¦og + =ð +NULL +), + +756 +£ùiÚ_Çme +, + +757 +’Œy +-> +Çme +); + +758 +p +-> +sy¦og + = + `¡rdup +( +’Œy +-> +v®ue +); + +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 + = + `·r£r_»ad_ušt32 +(& +p +-> +log_Ëv– +, + +772 +’Œy +-> +v®ue +); + +773 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +778 ià( + `¡rcmp +( +’Œy +-> +Çme +, "v") == 0) { + +779  +v® +; + +781 + `PARSE_ERROR_DUPLICATE +(( +p +-> +v”siÚ_´e£Á + == 0), + +782 +£ùiÚ_Çme +, + +783 +’Œy +-> +Çme +); + +784 +p +-> +v”siÚ_´e£Á + = 1; + +786 +v® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +787 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +788 +p +-> +v”siÚ + = +v® +; + +793 ià(( + `¡rcmp +( +’Œy +-> +Çme +, "help") == 0) || + +794 ( + `¡rcmp +( +’Œy +-> +Çme +, "h") == 0)) { + +795  +v® +; + +797 + `PARSE_ERROR_DUPLICATE +(( +p +-> +h–p_´e£Á + == 0), + +798 +£ùiÚ_Çme +, + +799 +’Œy +-> +Çme +); + +800 +p +-> +h–p_´e£Á + = 1; + +802 +v® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +803 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +804 +p +-> +h–p + = +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® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +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® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +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_h³t_´e£Á + == 0), + +843 +£ùiÚ_Çme +, + +844 +’Œy +-> +Çme +); + +845 +p +-> +no_h³t_´e£Á + = 1; + +847 +v® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +848 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +849 +p +-> +no_h³t + = +v® +; + +854 ià( + `¡rcmp +( +’Œy +-> +Çme +, "no_shconf") == 0) { + +855  +v® +; + +857 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_shcÚf_´e£Á + == 0), + +858 +£ùiÚ_Çme +, + +859 +’Œy +-> +Çme +); + +860 +p +-> +no_shcÚf_´e£Á + = 1; + +862 +v® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +863 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +’Œy +-> +Çme +); + +864 +p +-> +no_shcÚf + = +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 +-> +v®ue +); + +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 +-> +v®ue +); + +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 +-> +v®ue +); + +896 ià( + `¡rcmp +( +’Œy +-> +Çme +, "file_prefix") == 0) { + +897 + `PARSE_ERROR_DUPLICATE +(( +p +-> +fže_´efix + =ð +NULL +), + +898 +£ùiÚ_Çme +, + +899 +’Œy +-> +Çme +); + +900 +p +-> +fže_´efix + = + `¡rdup +( +’Œy +-> +v®ue +); + +905 ià( + `¡rcmp +( +’Œy +-> +Çme +, "base_virtaddr") == 0) { + +906 + `PARSE_ERROR_DUPLICATE +(( +p +-> +ba£_vœddr + =ð +NULL +), + +907 +£ùiÚ_Çme +, + +908 +’Œy +-> +Çme +); + +909 +p +-> +ba£_vœddr + = + `¡rdup +( +’Œy +-> +v®ue +); + +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® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +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 +-> +v®ue +); + +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® + = + `·r£r_»ad_¬g_boÞ +( +’Œy +-> +v®ue +); + +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£_p–še_pÿp_sourû +( +­p_·¿ms + * +­p +, + +961  +­p_p–še_·¿ms + * +p +, + +962 cÚ¡ * +fže_Çme +, cÚ¡ * +ý_size +) + +964 cÚ¡ * +Ãxt + = +NULL +; + +965 * +’d +; + +966 +ušt32_t + +i +; + +967  +·r£_fže + = 0; + +969 ià( +fže_Çme + && ! +ý_size +) { + +970 +Ãxt + = +fže_Çme +; + +971 +·r£_fže + = 1; + +972 } ià( +ý_size + && ! +fže_Çme +) { + +973 +Ãxt + = +ý_size +; + +974 +·r£_fže + = 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 +ušt32_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£_fže +) { + +1009 +­p +-> +sourû_·¿ms +[ +id +]. +fže_Çme + = + `¡rdup +( +Çme +); + +1010 ià( +­p +-> +sourû_·¿ms +[ +id +]. +fže_Çme + =ð +NULL +) + +1011  - +ENOMEM +; + +1013 ià( + `·r£r_»ad_ušt32 +( + +1014 & +­p +-> +sourû_·¿ms +[ +id +]. +n_by‹s_³r_pkt +, + +1015 +Çme +) != 0) { + +1016 ià( +­p +-> +sourû_·¿ms +[ +id +]. + +1017 +fže_Çme + !ð +NULL +) + +1018 + `ä“ +( +­p +-> +sourû_·¿ms +[ +id +]. + +1019 +fže_Çme +); + +1020  - +EINVAL +; + +1024 +i +++; + +1026 ià( +i + =ð +p +-> +n_pktq_š +) + +1030  - +EINVAL +; + +1031 + } +} + +1034 + $·r£_p–še_pÿp_sšk +( +­p_·¿ms + * +­p +, + +1035  +­p_p–še_·¿ms + * +p +, + +1036 cÚ¡ * +fže_Çme +, cÚ¡ * +n_pkts_to_dump +) + +1038 cÚ¡ * +Ãxt + = +NULL +; + +1039 * +’d +; + +1040 +ušt32_t + +i +; + +1041  +·r£_fže + = 0; + +1043 ià( +fže_Çme + && ! +n_pkts_to_dump +) { + +1044 +Ãxt + = +fže_Çme +; + +1045 +·r£_fže + = 1; + +1046 } ià( +n_pkts_to_dump + && ! +fže_Çme +) { + +1047 +Ãxt + = +n_pkts_to_dump +; + +1048 +·r£_fže + = 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 +ušt32_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£_fže +) { + +1083 +­p +-> +sšk_·¿ms +[ +id +]. +fže_Çme + = + `¡rdup +( +Çme +); + +1084 ià( +­p +-> +sšk_·¿ms +[ +id +]. +fže_Çme + =ð +NULL +) + +1085  - +ENOMEM +; + +1087 ià( + `·r£r_»ad_ušt32 +( + +1088 & +­p +-> +sšk_·¿ms +[ +id +]. +n_pkts_to_dump +, + +1089 +Çme +) != 0) { + +1090 ià( +­p +-> +sšk_·¿ms +[ +id +]. +fže_Çme + != + +1091 +NULL +) + +1092 + `ä“ +( +­p +-> +sšk_·¿ms +[ +id +]. + +1093 +fže_Çme +); + +1094  - +EINVAL +; + +1098 +i +++; + +1100 ià( +i + =ð +p +-> +n_pktq_out +) + +1104  - +EINVAL +; + +1105 + } +} + +1108 + $·r£_p–še_pktq_š +( +­p_·¿ms + * +­p +, + +1109  +­p_p–še_·¿ms + * +p +, + +1110 cÚ¡ * +v®ue +) + +1112 cÚ¡ * +Ãxt + = +v®ue +; + +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_wh™e_¥aûs +(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à( + `v®id©e_Çme +( +Çme +, "RXQ", 2) == 0) { + +1156 +ty³ + = +APP_PKTQ_IN_HWQ +; + +1157 +id + = + `APP_PARAM_ADD +( +­p +-> +hwq_š_·¿ms +, +Çme +); + +1158 } ià( + `v®id©e_Çme +( +Çme +, "SWQ", 1) == 0) { + +1159 +ty³ + = +APP_PKTQ_IN_SWQ +; + +1160 +id + = + `APP_PARAM_ADD +( +­p +-> +swq_·¿ms +, +Çme +); + +1161 } ià( + `v®id©e_Çme +( +Çme +, "TM", 1) == 0) { + +1162 +ty³ + = +APP_PKTQ_IN_TM +; + +1163 +id + = + `APP_PARAM_ADD +( +­p +-> +tm_·¿ms +, +Çme +); + +1164 } ià( + `v®id©e_Ç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 + = ( +ušt32_t +) id; + +1175 +p +-> +n_pktq_š +++; + +1179 + } +} + +1182 + $·r£_p–še_pktq_out +( +­p_·¿ms + * +­p +, + +1183  +­p_p–še_·¿ms + * +p +, + +1184 cÚ¡ * +v®ue +) + +1186 cÚ¡ * +Ãxt + = +v®ue +; + +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_wh™e_¥aûs +(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à( + `v®id©e_Çme +( +Çme +, "TXQ", 2) == 0) { + +1229 +ty³ + = +APP_PKTQ_OUT_HWQ +; + +1230 +id + = + `APP_PARAM_ADD +( +­p +-> +hwq_out_·¿ms +, +Çme +); + +1231 } ià( + `v®id©e_Çme +( +Çme +, "SWQ", 1) == 0) { + +1232 +ty³ + = +APP_PKTQ_OUT_SWQ +; + +1233 +id + = + `APP_PARAM_ADD +( +­p +-> +swq_·¿ms +, +Çme +); + +1234 } ià( + `v®id©e_Çme +( +Çme +, "TM", 1) == 0) { + +1235 +ty³ + = +APP_PKTQ_OUT_TM +; + +1236 +id + = + `APP_PARAM_ADD +( +­p +-> +tm_·¿ms +, +Çme +); + +1237 } ià( + `v®id©e_Çme +( +Çme +, "SINK", 1) == 0) { + +1238 +ty³ + = +APP_PKTQ_OUT_SINK +; + +1239 +id + = + `APP_PARAM_ADD +( +­p +-> +sšk_·¿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£_p–še_msgq_š +( +­p_·¿ms + * +­p +, + +1256  +­p_p–še_·¿ms + * +p +, + +1257 cÚ¡ * +v®ue +) + +1259 cÚ¡ * +Ãxt + = +v®ue +; + +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_wh™e_¥aûs +(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à( + `v®id©e_Ç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£_p–še_msgq_out +( +­p_·¿ms + * +­p +, + +1317  +­p_p–še_·¿ms + * +p +, + +1318 cÚ¡ * +v®ue +) + +1320 cÚ¡ * +Ãxt + = +v®ue +; + +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_wh™e_¥aûs +(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à( + `v®id©e_Ç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£_p–še +( +­p_·¿ms + * +­p +, + +1378 cÚ¡ * +£ùiÚ_Çme +, + +1379  +¹e_cfgfže + * +cfg +) + +1381  +Çme +[ +CFG_NAME_LEN +]; + +1382  +­p_p–še_·¿ms + * +·¿m +; + +1383  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1384 +ssize_t + +·¿m_idx +; + +1385  +n_’Œ›s +, +i +; + +1387 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1388 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1390 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1391 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1393 + `¹e_cfgfže_£ùiÚ_’Œ›s +( +cfg +, +£ùiÚ_Çme +, +’Œ›s +, +n_’Œ›s +); + +1395 +·¿m_idx + = + `APP_PARAM_ADD +( +­p +-> +p–še_·¿ms +, +£ùiÚ_Çme +); + +1396 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +­p +-> +p–še_·¿ms +, +£ùiÚ_Çme +); + +1398 +·¿m + = & +­p +-> +p–še_·¿ms +[ +·¿m_idx +]; + +1400  +i + = 0; i < +n_’Œ›s +; i++) { + +1401  +¹e_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1403 ià( + `¡rcmp +( +’t +-> +Çme +, "type") == 0) { + +1404  +w_size + = + `¢´štf +( +·¿m +-> +ty³ +, + `RTE_DIM +(param->type), + +1405 "%s", +’t +-> +v®ue +); + +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£_p–še_cÜe +( + +1416 & +·¿m +-> +sock‘_id +, &·¿m-> +cÜe_id +, + +1417 & +·¿m +-> +hy³r_th_id +, +’t +-> +v®ue +); + +1419 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1420 +’t +-> +Çme +); + +1424 ià( + `¡rcmp +( +’t +-> +Çme +, "pktq_in") == 0) { + +1425  +¡©us + = + `·r£_p–še_pktq_š +( +­p +, +·¿m +, + +1426 +’t +-> +v®ue +); + +1428 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1429 +’t +-> +Çme +); + +1433 ià( + `¡rcmp +( +’t +-> +Çme +, "pktq_out") == 0) { + +1434  +¡©us + = + `·r£_p–še_pktq_out +( +­p +, +·¿m +, + +1435 +’t +-> +v®ue +); + +1437 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1438 +’t +-> +Çme +); + +1442 ià( + `¡rcmp +( +’t +-> +Çme +, "msgq_in") == 0) { + +1443  +¡©us + = + `·r£_p–še_msgq_š +( +­p +, +·¿m +, + +1444 +’t +-> +v®ue +); + +1446 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1447 +’t +-> +Çme +); + +1451 ià( + `¡rcmp +( +’t +-> +Çme +, "msgq_out") == 0) { + +1452  +¡©us + = + `·r£_p–še_msgq_out +( +­p +, +·¿m +, + +1453 +’t +-> +v®ue +); + +1455 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1456 +’t +-> +Çme +); + +1460 ià( + `¡rcmp +( +’t +-> +Çme +, "timer_period") == 0) { + +1461  +¡©us + = + `·r£r_»ad_ušt32 +( + +1462 & +·¿m +-> +tim”_³riod +, + +1463 +’t +-> +v®ue +); + +1465 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1466 +’t +-> +Çme +); + +1470 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_file_rd") == 0) { + +1471  +¡©us +; + +1473 #iâdeà +RTE_PORT_PCAP + + +1474 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1477 +¡©us + = + `·r£_p–še_pÿp_sourû +( +­p +, + +1478 +·¿m +, +’t +-> +v®ue +, +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 #iâdeà +RTE_PORT_PCAP + + +1489 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1492 +¡©us + = + `·r£_p–še_pÿp_sourû +( +­p +, + +1493 +·¿m +, +NULL +, +’t +-> +v®ue +); + +1495 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1496 +’t +-> +Çme +); + +1500 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_file_wr") == 0) { + +1501  +¡©us +; + +1503 #iâdeà +RTE_PORT_PCAP + + +1504 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1507 +¡©us + = + `·r£_p–še_pÿp_sšk +( +­p +, +·¿m +, + +1508 +’t +-> +v®ue +, +NULL +); + +1510 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1511 +’t +-> +Çme +); + +1515 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_n_pkt_wr") == 0) { + +1516  +¡©us +; + +1518 #iâdeà +RTE_PORT_PCAP + + +1519 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1522 +¡©us + = + `·r£_p–še_pÿp_sšk +( +­p +, +·¿m +, + +1523 +NULL +, +’t +-> +v®ue +); + +1525 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1526 +’t +-> +Çme +); + +1531 + `APP_CHECK +(( +·¿m +-> +n_¬gs + < +APP_MAX_PIPELINE_ARGS +), + +1533 "p–š¥ecif›d…¬am‘”s", +£ùiÚ_Çme +); + +1535 +·¿m +-> +¬gs_Çme +[·¿m-> +n_¬gs +] = + `¡rdup +( +’t +-> +Çme +); + +1536 +·¿m +-> +¬gs_v®ue +[·¿m-> +n_¬gs +] = + `¡rdup +( +’t +-> +v®ue +); + +1538 + `APP_CHECK +(( +·¿m +-> +¬gs_Çme +[·¿m-> +n_¬gs +] !ð +NULL +) && + +1539 ( +·¿m +-> +¬gs_v®ue +[·¿m-> +n_¬gs +] !ð +NULL +), + +1542 +·¿m +-> +n_¬gs +++; + +1545 +·¿m +-> +·r£d + = 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 +-> +cÜe_id +, + +1562 ( +·¿m +-> +hy³r_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 +-> +cÜe_id +, + +1570 ( +·¿m +-> +hy³r_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_cfgfže + * +cfg +) + +1583  +­p_mempoÞ_·¿ms + * +·¿m +; + +1584  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1585 +ssize_t + +·¿m_idx +; + +1586  +n_’Œ›s +, +i +; + +1588 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1589 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1591 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1592 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1594 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1604 ià( + `¡rcmp +( +’t +-> +Çme +, "buffer_size") == 0) { + +1605  +¡©us + = + `·r£r_»ad_ušt32 +( + +1606 & +·¿m +-> +bufãr_size +, +’t +-> +v®ue +); + +1608 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1609 +’t +-> +Çme +); + +1613 ià( + `¡rcmp +( +’t +-> +Çme +, "pool_size") == 0) { + +1614  +¡©us + = + `·r£r_»ad_ušt32 +( + +1615 & +·¿m +-> +poÞ_size +, +’t +-> +v®ue +); + +1617 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1618 +’t +-> +Çme +); + +1622 ià( + `¡rcmp +( +’t +-> +Çme +, "cache_size") == 0) { + +1623  +¡©us + = + `·r£r_»ad_ušt32 +( + +1624 & +·¿m +-> +ÿche_size +, +’t +-> +v®ue +); + +1626 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1627 +’t +-> +Çme +); + +1631 ià( + `¡rcmp +( +’t +-> +Çme +, "cpu") == 0) { + +1632  +¡©us + = + `·r£r_»ad_ušt32 +( + +1633 & +·¿m +-> +ýu_sock‘_id +, +’t +-> +v®ue +); + +1635 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1636 +’t +-> +Çme +); + +1641 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1644 +·¿m +-> +·r£d + = 1; + +1646 + `ä“ +( +’Œ›s +); + +1647 + } +} + +1650 + $·r£_lšk +( +­p_·¿ms + * +­p +, + +1651 cÚ¡ * +£ùiÚ_Çme +, + +1652  +¹e_cfgfže + * +cfg +) + +1654  +­p_lšk_·¿ms + * +·¿m +; + +1655  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1656  +n_’Œ›s +, +i +; + +1657  +pci_bdf_´e£Á + = 0; + +1658 +ssize_t + +·¿m_idx +; + +1660 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1661 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1663 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1664 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1666 + `¹e_cfgfže_£ùiÚ_’Œ›s +( +cfg +, +£ùiÚ_Çme +, +’Œ›s +, +n_’Œ›s +); + +1668 +·¿m_idx + = + `APP_PARAM_ADD +( +­p +-> +lšk_·¿ms +, +£ùiÚ_Çme +); + +1669 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +­p +-> +lšk_·¿ms +, +£ùiÚ_Çme +); + +1671 +·¿m + = & +­p +-> +lšk_·¿ms +[ +·¿m_idx +]; + +1673  +i + = 0; i < +n_’Œ›s +; i++) { + +1674  +¹e_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1676 ià( + `¡rcmp +( +’t +-> +Çme +, "promisc") == 0) { + +1677  +¡©us + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +1679 + `PARSE_ERROR +(( +¡©us + !ð- +EINVAL +), +£ùiÚ_Çme +, + +1680 +’t +-> +Çme +); + +1681 +·¿m +-> +´omisc + = +¡©us +; + +1685 ià( + `¡rcmp +( +’t +-> +Çme +, "arp_q") == 0) { + +1686  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +¬p_q +, + +1687 +’t +-> +v®ue +); + +1689 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1690 +’t +-> +Çme +); + +1694 ià( + `¡rcmp +( +’t +-> +Çme +, "tcp_syn_q") == 0) { + +1695  +¡©us + = + `·r£r_»ad_ušt32 +( + +1696 & +·¿m +-> +tý_syn_q +, +’t +-> +v®ue +); + +1698 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’t +-> +Çme +); + +1702 ià( + `¡rcmp +( +’t +-> +Çme +, "ip_local_q") == 0) { + +1703  +¡©us + = + `·r£r_»ad_ušt32 +( + +1704 & +·¿m +-> +_loÿl_q +, +’t +-> +v®ue +); + +1706 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1707 +’t +-> +Çme +); + +1712 ià( + `¡rcmp +( +’t +-> +Çme +, "tcp_local_q") == 0) { + +1713  +¡©us + = + `·r£r_»ad_ušt32 +( + +1714 & +·¿m +-> +tý_loÿl_q +, +’t +-> +v®ue +); + +1716 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1717 +’t +-> +Çme +); + +1721 ià( + `¡rcmp +( +’t +-> +Çme +, "udp_local_q") == 0) { + +1722  +¡©us + = + `·r£r_»ad_ušt32 +( + +1723 & +·¿m +-> +udp_loÿl_q +, +’t +-> +v®ue +); + +1725 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1726 +’t +-> +Çme +); + +1730 ià( + `¡rcmp +( +’t +-> +Çme +, "sctp_local_q") == 0) { + +1731  +¡©us + = + `·r£r_»ad_ušt32 +( + +1732 & +·¿m +-> +sùp_loÿl_q +, +’t +-> +v®ue +); + +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 +-> +v®ue +); + +1745 +pci_bdf_´e£Á + = 1; + +1750 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1754 ià( +­p +-> +pÜt_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 +-> +·r£d + = 1; + +1766 + `ä“ +( +’Œ›s +); + +1767 + } +} + +1770 + $·r£_rxq +( +­p_·¿ms + * +­p +, + +1771 cÚ¡ * +£ùiÚ_Çme +, + +1772  +¹e_cfgfže + * +cfg +) + +1774  +­p_pktq_hwq_š_·¿ms + * +·¿m +; + +1775  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1776  +n_’Œ›s +, +i +; + +1777 +ssize_t + +·¿m_idx +; + +1779 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1780 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1782 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1783 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1785 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1795 ià( + `¡rcmp +( +’t +-> +Çme +, "mempool") == 0) { + +1796  +¡©us + = + `v®id©e_Çme +( +’t +-> +v®ue +, + +1798 +ssize_t + +idx +; + +1800 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1801 +’t +-> +Çme +); + +1802 +idx + = + `APP_PARAM_ADD +( +­p +-> +mempoÞ_·¿ms +, + +1803 +’t +-> +v®ue +); + +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 + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +1812 +’t +-> +v®ue +); + +1814 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1815 +’t +-> +Çme +); + +1819 ià( + `¡rcmp +( +’t +-> +Çme +, "burst") == 0) { + +1820  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +bur¡ +, + +1821 +’t +-> +v®ue +); + +1823 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1824 +’t +-> +Çme +); + +1829 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1832 +·¿m +-> +·r£d + = 1; + +1834 + `ä“ +( +’Œ›s +); + +1835 + } +} + +1838 + $·r£_txq +( +­p_·¿ms + * +­p +, + +1839 cÚ¡ * +£ùiÚ_Çme +, + +1840  +¹e_cfgfže + * +cfg +) + +1842  +­p_pktq_hwq_out_·¿ms + * +·¿m +; + +1843  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1844  +n_’Œ›s +, +i +; + +1845 +ssize_t + +·¿m_idx +; + +1847 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1848 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1850 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1851 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1853 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1863 ià( + `¡rcmp +( +’t +-> +Çme +, "size") == 0) { + +1864  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +1865 +’t +-> +v®ue +); + +1867 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1868 +’t +-> +Çme +); + +1872 ià( + `¡rcmp +( +’t +-> +Çme +, "burst") == 0) { + +1873  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +bur¡ +, + +1874 +’t +-> +v®ue +); + +1876 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1877 +’t +-> +Çme +); + +1881 ià( + `¡rcmp +( +’t +-> +Çme +, "dropless") == 0) { + +1882  +¡©us + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +1885 + `PARSE_ERROR +(( +¡©us + !ð- +EINVAL +), +£ùiÚ_Çme +, + +1886 +’t +-> +Çme +); + +1887 +·¿m +-> +drÝËss + = +¡©us +; + +1892 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +1895 +·¿m +-> +·r£d + = 1; + +1897 + `ä“ +( +’Œ›s +); + +1898 + } +} + +1901 + $·r£_swq +( +­p_·¿ms + * +­p +, + +1902 cÚ¡ * +£ùiÚ_Çme +, + +1903  +¹e_cfgfže + * +cfg +) + +1905  +­p_pktq_swq_·¿ms + * +·¿m +; + +1906  +¹e_cfgfže_’Œy + * +’Œ›s +; + +1907  +n_’Œ›s +, +i +; + +1908 +ušt32_t + +mtu_´e£Á + = 0; + +1909 +ušt32_t + +m‘ad©a_size_´e£Á + = 0; + +1910 +ušt32_t + +mempoÞ_dœeù_´e£Á + = 0; + +1911 +ušt32_t + +mempoÞ_šdœeù_´e£Á + = 0; + +1913 +ssize_t + +·¿m_idx +; + +1915 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +1916 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +1918 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +1919 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +1921 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +1931 ià( + `¡rcmp +( +’t +-> +Çme +, "size") == 0) { + +1932  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +1933 +’t +-> +v®ue +); + +1935 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1936 +’t +-> +Çme +); + +1940 ià( + `¡rcmp +( +’t +-> +Çme +, "burst_read") == 0) { + +1941  +¡©us + = + `·r£r_»ad_ušt32 +(& + +1942 +·¿m +-> +bur¡_»ad +, +’t +-> +v®ue +); + +1944 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1945 +’t +-> +Çme +); + +1949 ià( + `¡rcmp +( +’t +-> +Çme +, "burst_write") == 0) { + +1950  +¡©us + = + `·r£r_»ad_ušt32 +( + +1951 & +·¿m +-> +bur¡_wr™e +, +’t +-> +v®ue +); + +1953 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1954 +’t +-> +Çme +); + +1958 ià( + `¡rcmp +( +’t +-> +Çme +, "dropless") == 0) { + +1959  +¡©us + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +1961 + `PARSE_ERROR +(( +¡©us + !ð- +EINVAL +), +£ùiÚ_Çme +, + +1962 +’t +-> +Çme +); + +1963 +·¿m +-> +drÝËss + = +¡©us +; + +1967 ià( + `¡rcmp +( +’t +-> +Çme +, "n_retries") == 0) { + +1968  +¡©us + = + `·r£r_»ad_ušt64 +(& +·¿m +-> +n_»Œ›s +, + +1969 +’t +-> +v®ue +); + +1971 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +1972 +’t +-> +Çme +); + +1976 ià( + `¡rcmp +( +’t +-> +Çme +, "cpu") == 0) { + +1977  +¡©us + = + `·r£r_»ad_ušt32 +( + +1978 & +·¿m +-> +ýu_sock‘_id +, +’t +-> +v®ue +); + +1980 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, +’t +-> +Çme +); + +1984 ià( + `¡rcmp +( +’t +-> +Çme +, "ipv4_frag") == 0) { + +1985  +¡©us + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +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 + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +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 + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +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 + = + `·r£r_»ad_¬g_boÞ +( +’t +-> +v®ue +); + +2020 + `PARSE_ERROR +(( +¡©us + !ð- +EINVAL +), +£ùiÚ_Çme +, + +2021 +’t +-> +Çme +); + +2022 +·¿m +-> +v6_¿s + = +¡©us +; + +2026 ià( + `¡rcmp +( +’t +-> +Çme +, "mtu") == 0) { + +2027  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +mtu +, + +2028 +’t +-> +v®ue +); + +2030 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2031 +’t +-> +Çme +); + +2032 +mtu_´e£Á + = 1; + +2036 ià( + `¡rcmp +( +’t +-> +Çme +, "metadata_size") == 0) { + +2037  +¡©us + = + `·r£r_»ad_ušt32 +( + +2038 & +·¿m +-> +m‘ad©a_size +, +’t +-> +v®ue +); + +2040 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2041 +’t +-> +Çme +); + +2042 +m‘ad©a_size_´e£Á + = 1; + +2046 ià( + `¡rcmp +( +’t +-> +Çme +, "mempool_direct") == 0) { + +2047  +¡©us + = + `v®id©e_Çme +( +’t +-> +v®ue +, + +2049 +ssize_t + +idx +; + +2051 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2052 +’t +-> +Çme +); + +2054 +idx + = + `APP_PARAM_ADD +( +­p +-> +mempoÞ_·¿ms +, + +2055 +’t +-> +v®ue +); + +2056 + `PARSER_PARAM_ADD_CHECK +( +idx +, +­p +-> +mempoÞ_·¿ms +, + +2057 +£ùiÚ_Çme +); + +2058 +·¿m +-> +mempoÞ_dœeù_id + = +idx +; + +2059 +mempoÞ_dœeù_´e£Á + = 1; + +2063 ià( + `¡rcmp +( +’t +-> +Çme +, "mempool_indirect") == 0) { + +2064  +¡©us + = + `v®id©e_Çme +( +’t +-> +v®ue +, + +2066 +ssize_t + +idx +; + +2068 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2069 +’t +-> +Çme +); + +2070 +idx + = + `APP_PARAM_ADD +( +­p +-> +mempoÞ_·¿ms +, + +2071 +’t +-> +v®ue +); + +2072 + `PARSER_PARAM_ADD_CHECK +( +idx +, +­p +-> +mempoÞ_·¿ms +, + +2073 +£ùiÚ_Çme +); + +2074 +·¿m +-> +mempoÞ_šdœeù_id + = +idx +; + +2075 +mempoÞ_šdœeù_´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 +((( +m‘ad©a_size_´e£Á +) && + +2090 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2093 "nهÎowed", +£ùiÚ_Çme +); + +2095 + `APP_CHECK +((( +mempoÞ_dœeù_´e£Á +) && + +2096 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2099 "nهÎowed", +£ùiÚ_Çme +); + +2101 + `APP_CHECK +((( +mempoÞ_šdœeù_´e£Á +) && + +2102 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2105 "nهÎowed", +£ùiÚ_Çme +); + +2107 +·¿m +-> +·r£d + = 1; + +2109 + `ä“ +( +’Œ›s +); + +2110 + } +} + +2113 + $·r£_tm +( +­p_·¿ms + * +­p +, + +2114 cÚ¡ * +£ùiÚ_Çme +, + +2115  +¹e_cfgfže + * +cfg +) + +2117  +­p_pktq_tm_·¿ms + * +·¿m +; + +2118  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2119  +n_’Œ›s +, +i +; + +2120 +ssize_t + +·¿m_idx +; + +2122 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2123 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2125 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2126 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2128 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2138 ià( + `¡rcmp +( +’t +-> +Çme +, "cfg") == 0) { + +2139 +·¿m +-> +fže_Çme + = + `¡rdup +( +’t +-> +v®ue +); + +2140 + `PARSE_ERROR_MALLOC +( +·¿m +-> +fže_Çme + !ð +NULL +); + +2144 ià( + `¡rcmp +( +’t +-> +Çme +, "burst_read") == 0) { + +2145  +¡©us + = + `·r£r_»ad_ušt32 +( + +2146 & +·¿m +-> +bur¡_»ad +, +’t +-> +v®ue +); + +2148 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2149 +’t +-> +Çme +); + +2153 ià( + `¡rcmp +( +’t +-> +Çme +, "burst_write") == 0) { + +2154  +¡©us + = + `·r£r_»ad_ušt32 +( + +2155 & +·¿m +-> +bur¡_wr™e +, +’t +-> +v®ue +); + +2157 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2158 +’t +-> +Çme +); + +2163 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2166 +·¿m +-> +·r£d + = 1; + +2168 + `ä“ +( +’Œ›s +); + +2169 + } +} + +2172 + $·r£_sourû +( +­p_·¿ms + * +­p +, + +2173 cÚ¡ * +£ùiÚ_Çme +, + +2174  +¹e_cfgfže + * +cfg +) + +2176  +­p_pktq_sourû_·¿ms + * +·¿m +; + +2177  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2178  +n_’Œ›s +, +i +; + +2179 +ssize_t + +·¿m_idx +; + +2180 +ušt32_t + +pÿp_fže_´e£Á + = 0; + +2181 +ušt32_t + +pÿp_size_´e£Á + = 0; + +2183 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2184 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2186 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2187 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2189 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2199 ià( + `¡rcmp +( +’t +-> +Çme +, "mempool") == 0) { + +2200  +¡©us + = + `v®id©e_Çme +( +’t +-> +v®ue +, + +2202 +ssize_t + +idx +; + +2204 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2205 +’t +-> +Çme +); + +2206 +idx + = + `APP_PARAM_ADD +( +­p +-> +mempoÞ_·¿ms +, + +2207 +’t +-> +v®ue +); + +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 + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +bur¡ +, + +2216 +’t +-> +v®ue +); + +2218 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2219 +’t +-> +Çme +); + +2223 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_file_rd")) { + +2224 + `PARSE_ERROR_DUPLICATE +(( +pÿp_fže_´e£Á + == 0), + +2225 +£ùiÚ_Çme +, +’t +-> +Çme +); + +2227 +·¿m +-> +fže_Çme + = + `¡rdup +( +’t +-> +v®ue +); + +2229 + `PARSE_ERROR_MALLOC +( +·¿m +-> +fže_Çme + !ð +NULL +); + +2230 +pÿp_fže_´e£Á + = 1; + +2235 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_bytes_rd_per_pkt") == 0) { + +2236  +¡©us +; + +2238 + `PARSE_ERROR_DUPLICATE +(( +pÿp_size_´e£Á + == 0), + +2239 +£ùiÚ_Çme +, +’t +-> +Çme +); + +2241 +¡©us + = + `·r£r_»ad_ušt32 +( + +2242 & +·¿m +-> +n_by‹s_³r_pkt +, +’t +-> +v®ue +); + +2244 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2245 +’t +-> +Çme +); + +2246 +pÿp_size_´e£Á + = 1; + +2252 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2255 +·¿m +-> +·r£d + = 1; + +2257 + `ä“ +( +’Œ›s +); + +2258 + } +} + +2261 + $·r£_sšk +( +­p_·¿ms + * +­p +, + +2262 cÚ¡ * +£ùiÚ_Çme +, + +2263  +¹e_cfgfže + * +cfg +) + +2265  +­p_pktq_sšk_·¿ms + * +·¿m +; + +2266  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2267  +n_’Œ›s +, +i +; + +2268 +ssize_t + +·¿m_idx +; + +2269 +ušt32_t + +pÿp_fže_´e£Á + = 0; + +2270 +ušt32_t + +pÿp_n_pkt_´e£Á + = 0; + +2272 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2273 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2275 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2276 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2278 + `¹e_cfgfže_£ùiÚ_’Œ›s +( +cfg +, +£ùiÚ_Çme +, +’Œ›s +, +n_’Œ›s +); + +2280 +·¿m_idx + = + `APP_PARAM_ADD +( +­p +-> +sšk_·¿ms +, +£ùiÚ_Çme +); + +2281 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +­p +-> +sšk_·¿ms +, +£ùiÚ_Çme +); + +2283 +·¿m + = & +­p +-> +sšk_·¿ms +[ +·¿m_idx +]; + +2285  +i + = 0; i < +n_’Œ›s +; i++) { + +2286  +¹e_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2288 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_file_wr")) { + +2289 + `PARSE_ERROR_DUPLICATE +(( +pÿp_fže_´e£Á + == 0), + +2290 +£ùiÚ_Çme +, +’t +-> +Çme +); + +2292 +·¿m +-> +fže_Çme + = + `¡rdup +( +’t +-> +v®ue +); + +2294 + `PARSE_ERROR_MALLOC +(( +·¿m +-> +fže_Çme + !ð +NULL +)); + +2299 ià( + `¡rcmp +( +’t +-> +Çme +, "pcap_n_pkt_wr")) { + +2300  +¡©us +; + +2302 + `PARSE_ERROR_DUPLICATE +(( +pÿp_n_pkt_´e£Á + == 0), + +2303 +£ùiÚ_Çme +, +’t +-> +Çme +); + +2305 +¡©us + = + `·r£r_»ad_ušt32 +( + +2306 & +·¿m +-> +n_pkts_to_dump +, +’t +-> +v®ue +); + +2308 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2309 +’t +-> +Çme +); + +2315 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2318 +·¿m +-> +·r£d + = 1; + +2320 + `ä“ +( +’Œ›s +); + +2321 + } +} + +2324 + $·r£_msgq_»q_p–še +( +­p_·¿ms + * +­p +, + +2325 cÚ¡ * +£ùiÚ_Çme +, + +2326  +¹e_cfgfže + * +cfg +) + +2328  +­p_msgq_·¿ms + * +·¿m +; + +2329  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2330  +n_’Œ›s +, +i +; + +2331 +ssize_t + +·¿m_idx +; + +2333 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2334 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2336 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2337 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2339 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2349 ià( + `¡rcmp +( +’t +-> +Çme +, "size") == 0) { + +2350  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +2351 +’t +-> +v®ue +); + +2353 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2354 +’t +-> +Çme +); + +2359 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2362 +·¿m +-> +·r£d + = 1; + +2363 + `ä“ +( +’Œ›s +); + +2364 + } +} + +2367 + $·r£_msgq_r¥_p–še +( +­p_·¿ms + * +­p +, + +2368 cÚ¡ * +£ùiÚ_Çme +, + +2369  +¹e_cfgfže + * +cfg +) + +2371  +­p_msgq_·¿ms + * +·¿m +; + +2372  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2373  +n_’Œ›s +, +i +; + +2374 +ssize_t + +·¿m_idx +; + +2376 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2377 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2379 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2380 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2382 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2392 ià( + `¡rcmp +( +’t +-> +Çme +, "size") == 0) { + +2393  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +2394 +’t +-> +v®ue +); + +2396 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2397 +’t +-> +Çme +); + +2402 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2405 +·¿m +-> +·r£d + = 1; + +2407 + `ä“ +( +’Œ›s +); + +2408 + } +} + +2411 + $·r£_msgq +( +­p_·¿ms + * +­p +, + +2412 cÚ¡ * +£ùiÚ_Çme +, + +2413  +¹e_cfgfže + * +cfg +) + +2415  +­p_msgq_·¿ms + * +·¿m +; + +2416  +¹e_cfgfže_’Œy + * +’Œ›s +; + +2417  +n_’Œ›s +, +i +; + +2418 +ssize_t + +·¿m_idx +; + +2420 +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +cfg +, +£ùiÚ_Çme +); + +2421 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_’Œ›s + > 0), +£ùiÚ_Çme +); + +2423 +’Œ›s + = + `m®loc +( +n_’Œ›s + * ( +¹e_cfgfže_’Œy +)); + +2424 + `PARSE_ERROR_MALLOC +( +’Œ›s + !ð +NULL +); + +2426 + `¹e_cfgfže_£ù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_cfgfže_’Œy + * +’t + = & +’Œ›s +[ +i +]; + +2436 ià( + `¡rcmp +( +’t +-> +Çme +, "size") == 0) { + +2437  +¡©us + = + `·r£r_»ad_ušt32 +(& +·¿m +-> +size +, + +2438 +’t +-> +v®ue +); + +2440 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2441 +’t +-> +Çme +); + +2445 ià( + `¡rcmp +( +’t +-> +Çme +, "cpu") == 0) { + +2446  +¡©us + = + `·r£r_»ad_ušt32 +( + +2447 & +·¿m +-> +ýu_sock‘_id +, +’t +-> +v®ue +); + +2449 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2450 +’t +-> +Çme +); + +2455 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +’t +-> +Çme +); + +2458 +·¿m +-> +·r£d + = 1; + +2460 + `ä“ +( +’Œ›s +); + +2461 + } +} + +2463 (* + tcÚfig_£ùiÚ_lßd +)( + t­p_·¿ms + * + tp +, + +2464 cÚ¡ * + t£ùiÚ_Çme +, + +2465  + t¹e_cfgfže + * + tcfg +); + +2467  + scÚfig_£ùiÚ + { + +2468 cÚ¡  +´efix +[ +CFG_NAME_LEN +]; + +2469  +numb”s +; + +2470 +cÚfig_£ùiÚ_lßd + +lßd +; + +2473 cÚ¡  +cÚfig_£ùiÚ + +cfg_fže_scheme +[] = { + +2474 {"EAL", 0, +·r£_—l +}, + +2475 {"PIPELINE", 1, +·r£_p–še +}, + +2476 {"MEMPOOL", 1, +·r£_mempoÞ +}, + +2477 {"LINK", 1, +·r£_lšk +}, + +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£_sšk +}, + +2484 {"MSGQ-REQ-PIPELINE", 1, +·r£_msgq_»q_p–še +}, + +2485 {"MSGQ-RSP-PIPELINE", 1, +·r£_msgq_r¥_p–še +}, + +2486 {"MSGQ", 1, +·r£_msgq +}, + +2487 + } +}; + +2490 + $ü—‹_im¶ic™_mempoÞs +( +­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 + $ü—‹_im¶ic™_lšks_äom_pÜt_mask +( +­p_·¿ms + * +­p +, + +2500 +ušt64_t + +pÜt_mask +) + +2502 +ušt32_t + +pmd_id +, +lšk_id +; + +2504 +lšk_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à(( +pÜt_mask + & (1LLU << +pmd_id +)) == 0) + +2512 + `¢´štf +( +Çme +, Òame), "LINK%" +PRIu32 +, +lšk_id +); + +2513 +idx + = + `APP_PARAM_ADD +( +­p +-> +lšk_·¿ms +, +Çme +); + +2514 + `PARSER_PARAM_ADD_CHECK +( +idx +, +­p +-> +lšk_·¿ms +, +Çme +); + +2516 +­p +-> +lšk_·¿ms +[ +idx +]. +pmd_id + =…md_id; + +2517 +lšk_id +++; + +2519 + } +} + +2522 + $assign_lšk_pmd_id_äom_pci_bdf +( +­p_·¿ms + * +­p +) + +2524 +ušt32_t + +i +; + +2526  +i + = 0; i < +­p +-> +n_lšks +; i++) { + +2527  +­p_lšk_·¿ms + * +lšk + = & +­p +-> +lšk_·¿ms +[ +i +]; + +2529 +lšk +-> +pmd_id + = +i +; + +2531 + } +} + +2534 + $­p_cÚfig_·r£ +( +­p_·¿ms + * +­p +, cÚ¡ * +fže_Çme +) + +2536  +¹e_cfgfže + * +cfg +; + +2537 ** +£ùiÚ_Çmes +; + +2538  +i +, +j +, +£ù_couÁ +; + +2541 + `ü—‹_im¶ic™_mempoÞs +( +­p +); + +2544 ià( +­p +-> +pÜt_mask +) + +2545 + `ü—‹_im¶ic™_lšks_äom_pÜt_mask +( +­p +,‡µ-> +pÜt_mask +); + +2548 +cfg + = + `¹e_cfgfže_lßd +( +fže_Çme +, 0); + +2549 + `APP_CHECK +(( +cfg + !ð +NULL +), "Parseƒrror: Unableo†oad config " + +2550 "fž%s", +fže_Çme +); + +2552 +£ù_couÁ + = + `¹e_cfgfže_num_£ùiÚs +( +cfg +, +NULL +, 0); + +2553 + `APP_CHECK +(( +£ù_couÁ + > 0), "Parseƒrror:‚umber of sections " + +2554 "š fž\"%s\"„‘uº %d", +fže_Çme +, + +2555 +£ù_couÁ +); + +2557 +£ùiÚ_Çmes + = + `m®loc +( +£ù_couÁ + * (*)); + +2558 + `PARSE_ERROR_MALLOC +( +£ùiÚ_Çmes + !ð +NULL +); + +2560  +i + = 0; i < +£ù_couÁ +; i++) + +2561 +£ùiÚ_Çmes +[ +i +] = + `m®loc +( +CFG_NAME_LEN +); + +2563 + `¹e_cfgfže_£ùiÚs +( +cfg +, +£ùiÚ_Çmes +, +£ù_couÁ +); + +2565  +i + = 0; i < +£ù_couÁ +; i++) { + +2566 cÚ¡  +cÚfig_£ùiÚ + * +sch_s +; + +2567  +Ën +, +cfg_Çme_Ën +; + +2569 +cfg_Çme_Ën + = + `¡¾’ +( +£ùiÚ_Çmes +[ +i +]); + +2572  +j + = 0; j < () + `RTE_DIM +( +cfg_fže_scheme +); j++) { + +2573 +sch_s + = & +cfg_fže_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_fže_scheme +), + +2595 +£ùiÚ_Çmes +[ +i +]); + +2597 + `APP_CHECK +( + `v®id©e_Çme +( +£ùiÚ_Çmes +[ +i +], + +2598 +sch_s +-> +´efix +, + +2599 +sch_s +-> +numb”s +) == 0, + +2601 +£ùiÚ_Çmes +[ +i +]); + +2603 +sch_s +-> + `lßd +( +­p +, +£ùiÚ_Çmes +[ +i +], +cfg +); + +2606  +i + = 0; i < +£ù_couÁ +; i++) + +2607 + `ä“ +( +£ùiÚ_Çmes +[ +i +]); + +2609 + `ä“ +( +£ùiÚ_Çmes +); + +2611 + `¹e_cfgfže_þo£ +( +cfg +); + +2613 + `APP_PARAM_COUNT +( +­p +-> +mempoÞ_·¿ms +,‡µ-> +n_mempoÞs +); + +2614 + `APP_PARAM_COUNT +( +­p +-> +lšk_·¿ms +,‡µ-> +n_lšks +); + +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 +-> +sšk_·¿ms +,‡µ-> +n_pktq_sšk +); + +2621 + `APP_PARAM_COUNT +( +­p +-> +msgq_·¿ms +,‡µ-> +n_msgq +); + +2622 + `APP_PARAM_COUNT +( +­p +-> +p–še_·¿ms +,‡µ-> +n_p–šes +); + +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 +-> +fže_Çme +), "Parseƒrror: 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 +-> +fže_Çme +), "Parseƒrror: invalid field " + +2637 "\"pÿp_fže_rd\" fÜ \"%s\"", +p +-> +Çme +); + +2641 ià( +­p +-> +pÜt_mask + == 0) + +2642 + `assign_lšk_pmd_id_äom_pci_bdf +( +­p +); + +2645 + `­p_cÚfig_§ve +( +­p +,‡µ-> +ouut_fže +); + +2648 + `­p_cÚfig_·r£_tm +( +­p +); + +2651 + } +} + +2654 + $§ve_—l_·¿ms +( +­p_·¿ms + * +­p +, +FILE + * +f +) + +2656  +­p_—l_·¿ms + * +p + = & +­p +-> +—l_·¿ms +; + +2657 +ušt32_t + +i +; + +2659 + `årštf +( +f +, "[EAL]\n"); + +2661 ià( +p +-> +cÜem­ +) + +2662 + `årštf +( +f +, "% ð%s\n", "lcÜes", +p +-> +cÜem­ +); + +2664 ià( +p +-> +ma¡”_lcÜe_´e£Á +) + +2665 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", + +2666 "ma¡”_lcÜe", +p +-> +ma¡”_lcÜe +); + +2668 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "n", +p +-> +chªÃls +); + +2670 ià( +p +-> +memÜy_´e£Á +) + +2671 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "m", +p +-> +memÜy +); + +2673 ià( +p +-> +¿nks_´e£Á +) + +2674 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "r", +p +-> +¿nks +); + +2676  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2677 ià( +p +-> +pci_bÏckli¡ +[ +i +] =ð +NULL +) + +2680 + `årštf +( +f +, "%s = %s\n", "pci_blacklist", + +2681 +p +-> +pci_bÏckli¡ +[ +i +]); + +2684  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2685 ià( +p +-> +pci_wh™–i¡ +[ +i +] =ð +NULL +) + +2688 + `årštf +( +f +, "%s = %s\n", "pci_whitelist", + +2689 +p +-> +pci_wh™–i¡ +[ +i +]); + +2692  +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2693 ià( +p +-> +vdev +[ +i +] =ð +NULL +) + +2696 + `årštf +( +f +, "%s = %s\n", "vdev", + +2697 +p +-> +vdev +[ +i +]); + +2700 ià( +p +-> +vmw¬e_tsc_m­_´e£Á +) + +2701 + `årštf +( +f +, "%s = %s\n", "vmware_tsc_map", + +2702 ( +p +-> +vmw¬e_tsc_m­ +) ? "yes" : "no"); + +2704 ià( +p +-> +´oc_ty³ +) + +2705 + `årštf +( +f +, "% ð%s\n", "´oc_ty³", +p +-> +´oc_ty³ +); + +2707 ià( +p +-> +sy¦og +) + +2708 + `årštf +( +f +, "% ð%s\n", "sy¦og", +p +-> +sy¦og +); + +2710 ià( +p +-> +log_Ëv–_´e£Á +) + +2711 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "log_Ëv–", +p +-> +log_Ëv– +); + +2713 ià( +p +-> +v”siÚ_´e£Á +) + +2714 + `årštf +( +f +, "% ð%s\n", "v", ( +p +-> +v”siÚ +) ? "yes" : "no"); + +2716 ià( +p +-> +h–p_´e£Á +) + +2717 + `årštf +( +f +, "% ð%s\n", "h–p", ( +p +-> +h–p +) ? "yes" : "no"); + +2719 ià( +p +-> +no_huge_´e£Á +) + +2720 + `årštf +( +f +, "% ð%s\n", "no_huge", ( +p +-> +no_huge +) ? "yes" : "no"); + +2722 ià( +p +-> +no_pci_´e£Á +) + +2723 + `årštf +( +f +, "% ð%s\n", "no_pci", ( +p +-> +no_pci +) ? "yes" : "no"); + +2725 ià( +p +-> +no_h³t_´e£Á +) + +2726 + `årštf +( +f +, "% ð%s\n", "no_h³t", ( +p +-> +no_h³t +) ? "yes" : "no"); + +2728 ià( +p +-> +no_shcÚf_´e£Á +) + +2729 + `årštf +( +f +, "%s = %s\n", "no_shconf", + +2730 ( +p +-> +no_shcÚf +) ? "yes" : "no"); + +2732 ià( +p +-> +add_driv” +) + +2733 + `årštf +( +f +, "% ð%s\n", "d", +p +-> +add_driv” +); + +2735 ià( +p +-> +sock‘_mem +) + +2736 + `årštf +( +f +, "% ð%s\n", "sock‘_mem", +p +-> +sock‘_mem +); + +2738 ià( +p +-> +huge_dœ +) + +2739 + `årštf +( +f +, "% ð%s\n", "huge_dœ", +p +-> +huge_dœ +); + +2741 ià( +p +-> +fže_´efix +) + +2742 + `årštf +( +f +, "% ð%s\n", "fže_´efix", +p +-> +fže_´efix +); + +2744 ià( +p +-> +ba£_vœddr +) + +2745 + `årštf +( +f +, "% ð%s\n", "ba£_vœddr", +p +-> +ba£_vœddr +); + +2747 ià( +p +-> +ü—‹_uio_dev_´e£Á +) + +2748 + `årštf +( +f +, "%s = %s\n", "create_uio_dev", + +2749 ( +p +-> +ü—‹_uio_dev +) ? "yes" : "no"); + +2751 ià( +p +-> +vfio_šŒ +) + +2752 + `årštf +( +f +, "% ð%s\n", "vfio_šŒ", +p +-> +vfio_šŒ +); + +2754 ià( +p +-> +x’_dom0_´e£Á +) + +2755 + `årštf +( +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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2774 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bufãr_size", +p +-> +bufãr_size +); + +2775 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "poÞ_size", +p +-> +poÞ_size +); + +2776 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "ÿche_size", +p +-> +ÿche_size +); + +2777 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock‘_id +); + +2779 + `åutc +('\n', +f +); + +2781 + } +} + +2784 + $§ve_lšks_·¿ms +( +­p_·¿ms + * +­p +, +FILE + * +f +) + +2786  +­p_lšk_·¿ms + * +p +; + +2787 +size_t + +i +, +couÁ +; + +2789 +couÁ + = + `RTE_DIM +( +­p +-> +lšk_·¿ms +); + +2790  +i + = 0; i < +couÁ +; i++) { + +2791 +p + = & +­p +-> +lšk_·¿ms +[ +i +]; + +2792 ià(! + `APP_PARAM_VALID +( +p +)) + +2795 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2796 + `årštf +( +f +, "; % ð%" +PRIu32 + "\n", "pmd_id", +p +-> +pmd_id +); + +2797 + `årštf +( +f +, "% ð%s\n", "´omisc", +p +-> +´omisc + ? "yes" : "no"); + +2798 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "¬p_q", +p +-> +¬p_q +); + +2799 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "tcp_syn_q", + +2800 +p +-> +tý_syn_q +); + +2801 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "_loÿl_q", +p +-> +_loÿl_q +); + +2802 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "tý_loÿl_q", +p +-> +tý_loÿl_q +); + +2803 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "udp_loÿl_q", +p +-> +udp_loÿl_q +); + +2804 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "sctp_local_q", + +2805 +p +-> +sùp_loÿl_q +); + +2807 ià( + `¡¾’ +( +p +-> +pci_bdf +)) + +2808 + `årštf +( +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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2827 + `årštf +( +f +, "%s = %s\n", + +2829 +­p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_id +]. +Çme +); + +2830 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2831 + `årštf +( +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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2850 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2851 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡", +p +-> +bur¡ +); + +2852 + `årštf +( +f +, "%s = %s\n", + +2854 +p +-> +drÝËss + ? "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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2873 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2874 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_»ad", +p +-> +bur¡_»ad +); + +2875 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_wr™e", +p +-> +bur¡_wr™e +); + +2876 + `årštf +( +f +, "% ð%s\n", "drÝËss", +p +-> +drÝËss + ? "yes" : "no"); + +2877 + `årštf +( +f +, "% ð%" +PRIu64 + "\n", "n_»Œ›s", +p +-> +n_»Œ›s +); + +2878 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock‘_id +); + +2879 + `årštf +( +f +, "% ð%s\n", "v4_äag", +p +-> +v4_äag + ? "yes" : "no"); + +2880 + `årštf +( +f +, "% ð%s\n", "v6_äag", +p +-> +v6_äag + ? "yes" : "no"); + +2881 + `årštf +( +f +, "% ð%s\n", "v4_¿s", +p +-> +v4_¿s + ? "yes" : "no"); + +2882 + `årštf +( +f +, "% ð%s\n", "v6_¿s", +p +-> +v6_¿s + ? "yes" : "no"); + +2883 ià(( +p +-> +v4_äag + =ð1è|| (p-> +v6_äag + == 1)) { + +2884 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "mtu", +p +-> +mtu +); + +2885 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "m‘ad©a_size", +p +-> +m‘ad©a_size +); + +2886 + `årštf +( +f +, "%s = %s\n", + +2888 +­p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_dœeù_id +]. +Çme +); + +2889 + `årštf +( +f +, "%s = %s\n", + +2891 +­p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_šdœeù_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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2911 + `årštf +( +f +, "% ð%s\n", "cfg", +p +-> +fže_Çme +); + +2912 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_»ad", +p +-> +bur¡_»ad +); + +2913 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_wr™e", +p +-> +bur¡_wr™e +); + +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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2932 + `årštf +( +f +, "%s = %s\n", + +2934 +­p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_id +]. +Çme +); + +2935 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡", +p +-> +bur¡ +); + +2936 + `årštf +( +f +, "% ð%s\n", "pÿp_fže_rd", +p +-> +fže_Çme +); + +2937 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "pcap_bytes_rd_per_pkt", + +2938 +p +-> +n_by‹s_³r_pkt +); + +2939 + `åutc +('\n', +f +); + +2941 + } +} + +2944 + $§ve_sšk_·¿ms +( +­p_·¿ms + * +­p +, +FILE + * +f +) + +2946  +­p_pktq_sšk_·¿ms + * +p +; + +2947 +size_t + +i +, +couÁ +; + +2949 +couÁ + = + `RTE_DIM +( +­p +-> +sšk_·¿ms +); + +2950  +i + = 0; i < +couÁ +; i++) { + +2951 +p + = & +­p +-> +sšk_·¿ms +[ +i +]; + +2952 ià(! + `APP_PARAM_VALID +( +p +)) + +2955 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2956 + `årštf +( +f +, "% ð%s\n", "pÿp_fže_wr", +p +-> +fže_Çme +); + +2957 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", + +2958 "pÿp_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 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2976 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2977 + `årštf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock‘_id +); + +2979 + `åutc +('\n', +f +); + +2981 + } +} + +2984 + $§ve_p–še_·¿ms +( +­p_·¿ms + * +­p +, +FILE + * +f +) + +2986 +size_t + +i +, +couÁ +; + +2988 +couÁ + = + `RTE_DIM +( +­p +-> +p–še_·¿ms +); + +2989  +i + = 0; i < +couÁ +; i++) { + +2990  +­p_p–še_·¿ms + * +p + = & +­p +-> +p–še_·¿ms +[ +i +]; + +2992 ià(! + `APP_PARAM_VALID +( +p +)) + +2996 + `årštf +( +f +, "[%s]\n", +p +-> +Çme +); + +2999 + `årštf +( +f +, "ty³ = %s\n", +p +-> +ty³ +); + +3002 + `årštf +( +f +, "cܐðs%" +PRIu32 + "c%" PRIu32 "%s\n", + +3003 +p +-> +sock‘_id +, + +3004 +p +-> +cÜe_id +, + +3005 ( +p +-> +hy³r_th_id +) ? "h" : ""); + +3008 ià( +p +-> +n_pktq_š +) { + +3009 +ušt32_t + +j +; + +3011 + `årštf +( +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, "Systemƒrror " + +3035 + `årštf +( +f +, " %s", +Çme +); + +3037 + `årštf +( +f +, "\n"); + +3041 ià( +p +-> +n_pktq_out +) { + +3042 +ušt32_t + +j +; + +3044 + `årštf +( +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 +-> +sšk_·¿ms +[ +µ +-> +id +].name; + +3064 + `APP_CHECK +(0, "Systemƒrror " + +3069 + `årštf +( +f +, " %s", +Çme +); + +3071 + `årštf +( +f +, "\n"); + +3075 ià( +p +-> +n_msgq_š +) { + +3076 +ušt32_t + +j +; + +3078 + `årštf +( +f +, "msgq_in ="); + +3079  +j + = 0; j < +p +-> +n_msgq_š +; j++) { + +3080 +ušt32_t + +id + = +p +-> +msgq_š +[ +j +]; + +3081 * +Çme + = +­p +-> +msgq_·¿ms +[ +id +].name; + +3083 + `årštf +( +f +, " %s", +Çme +); + +3085 + `årštf +( +f +, "\n"); + +3089 ià( +p +-> +n_msgq_out +) { + +3090 +ušt32_t + +j +; + +3092 + `årštf +( +f +, "msgq_out ="); + +3093  +j + = 0; j < +p +-> +n_msgq_out +; j++) { + +3094 +ušt32_t + +id + = +p +-> +msgq_out +[ +j +]; + +3095 * +Çme + = +­p +-> +msgq_·¿ms +[ +id +].name; + +3097 + `årštf +( +f +, " %s", +Çme +); + +3099 + `årštf +( +f +, "\n"); + +3103 + `årštf +( +f +, "tim”_³riod = %" +PRIu32 + "\n", +p +-> +tim”_³riod +); + +3106 ià( +p +-> +n_¬gs +) { + +3107 +ušt32_t + +j +; + +3109  +j + = 0; j < +p +-> +n_¬gs +; j++) + +3110 + `årštf +( +f +, "% ð%s\n", +p +-> +¬gs_Çme +[ +j +], + +3111 +p +-> +¬gs_v®ue +[ +j +]); + +3114 + `årštf +( +f +, "\n"); + +3116 + } +} + +3119 + $­p_cÚfig_§ve +( +­p_·¿ms + * +­p +, cÚ¡ * +fže_Çme +) + +3121 +FILE + * +fže +; + +3122 * +Çme +, * +dœ_Çme +; + +3123  +¡©us +; + +3125 +Çme + = + `¡rdup +( +fže_Çme +); + +3126 +dœ_Çme + = + `dœÇme +( +Çme +); + +3127 +¡©us + = + `acûss +( +dœ_Çme +, +W_OK +); + +3128 + `APP_CHECK +(( +¡©us + == 0), + +3130 "\"%s\"Ø§vcÚfigu¿tiÚ\n", +dœ_Çme +); + +3132 +fže + = + `fݒ +( +fže_Çme +, "w"); + +3133 + `APP_CHECK +(( +fže + !ð +NULL +), + +3135 +fže_Çme +); + +3137 + `§ve_—l_·¿ms +( +­p +, +fže +); + +3138 + `§ve_p–še_·¿ms +( +­p +, +fže +); + +3139 + `§ve_mempoÞ_·¿ms +( +­p +, +fže +); + +3140 + `§ve_lšks_·¿ms +( +­p +, +fže +); + +3141 + `§ve_rxq_·¿ms +( +­p +, +fže +); + +3142 + `§ve_txq_·¿ms +( +­p +, +fže +); + +3143 + `§ve_swq_·¿ms +( +­p +, +fže +); + +3144 + `§ve_tm_·¿ms +( +­p +, +fže +); + +3145 + `§ve_sourû_·¿ms +( +­p +, +fže +); + +3146 + `§ve_sšk_·¿ms +( +­p +, +fže +); + +3147 + `§ve_msgq_·¿ms +( +­p +, +fže +); + +3149 + `fþo£ +( +fže +); + +3150 + `ä“ +( +Çme +); + +3151 + } +} + +3154 + $­p_cÚfig_š™ +( +­p_·¿ms + * +­p +) + +3156 +size_t + +i +; + +3158 + `memýy +( +­p +, & +­p_·¿ms_deçuÉ +, ( +­p_·¿ms +)); + +3160  +i + = 0; i < + `RTE_DIM +( +­p +-> +mempoÞ_·¿ms +); i++) + +3161 + `memýy +(& +­p +-> +mempoÞ_·¿ms +[ +i +], + +3162 & +mempoÞ_·¿ms_deçuÉ +, + +3163 ( +­p_mempoÞ_·¿ms +)); + +3165  +i + = 0; i < + `RTE_DIM +( +­p +-> +lšk_·¿ms +); i++) + +3166 + `memýy +(& +­p +-> +lšk_·¿ms +[ +i +], + +3167 & +lšk_·¿ms_deçuÉ +, + +3168 ( +­p_lšk_·¿ms +)); + +3170  +i + = 0; i < + `RTE_DIM +( +­p +-> +hwq_š_·¿ms +); i++) + +3171 + `memýy +(& +­p +-> +hwq_š_·¿ms +[ +i +], + +3172 & +deçuÉ_hwq_š_·¿ms +, + +3173 ( +deçuÉ_hwq_š_·¿ms +)); + +3175  +i + = 0; i < + `RTE_DIM +( +­p +-> +hwq_out_·¿ms +); i++) + +3176 + `memýy +(& +­p +-> +hwq_out_·¿ms +[ +i +], + +3177 & +deçuÉ_hwq_out_·¿ms +, + +3178 ( +deçuÉ_hwq_out_·¿ms +)); + +3180  +i + = 0; i < + `RTE_DIM +( +­p +-> +swq_·¿ms +); i++) + +3181 + `memýy +(& +­p +-> +swq_·¿ms +[ +i +], + +3182 & +deçuÉ_swq_·¿ms +, + +3183 ( +deçuÉ_swq_·¿ms +)); + +3185  +i + = 0; i < + `RTE_DIM +( +­p +-> +tm_·¿ms +); i++) + +3186 + `memýy +(& +­p +-> +tm_·¿ms +[ +i +], + +3187 & +deçuÉ_tm_·¿ms +, + +3188 ( +deçuÉ_tm_·¿ms +)); + +3190  +i + = 0; i < + `RTE_DIM +( +­p +-> +sourû_·¿ms +); i++) + +3191 + `memýy +(& +­p +-> +sourû_·¿ms +[ +i +], + +3192 & +deçuÉ_sourû_·¿ms +, + +3193 ( +deçuÉ_sourû_·¿ms +)); + +3195  +i + = 0; i < + `RTE_DIM +( +­p +-> +sšk_·¿ms +); i++) + +3196 + `memýy +(& +­p +-> +sšk_·¿ms +[ +i +], + +3197 & +deçuÉ_sšk_·¿ms +, + +3198 ( +deçuÉ_sšk_·¿ms +)); + +3200  +i + = 0; i < + `RTE_DIM +( +­p +-> +msgq_·¿ms +); i++) + +3201 + `memýy +(& +­p +-> +msgq_·¿ms +[ +i +], + +3202 & +deçuÉ_msgq_·¿ms +, + +3203 ( +deçuÉ_msgq_·¿ms +)); + +3205  +i + = 0; i < + `RTE_DIM +( +­p +-> +p–še_·¿ms +); i++) + +3206 + `memýy +(& +­p +-> +p–še_·¿ms +[ +i +], + +3207 & +deçuÉ_p–še_·¿ms +, + +3208 ( +deçuÉ_p–še_·¿ms +)); + +3211 + } +} + +3214 + $fž’amedup +(cÚ¡ * +fž’ame +, cÚ¡ * +suffix +) + +3216 * +s + = + `m®loc +( + `¡¾’ +( +fž’ame +è+ sŒËn( +suffix +) + 1); + +3218 ià(! +s +) + +3219  +NULL +; + +3221 + `¥rštf +( +s +, "%s%s", +fž’ame +, +suffix +); + +3222  +s +; + +3223 + } +} + +3226 + $­p_cÚfig_¬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£Á +, +di§bË_csum_´e£Á +; + +3232  +hwlb_´e£Á +; + +3233  +æow_dœ_´e£Á +; + +3234  +sÿÃd + = 0; + +3236  +ÝtiÚ + +lgÝts +[] = { + +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 +di§bË_csum_´e£Á + = 0; + +3253 +´•roc_´e£Á + = 0; + +3254 +´•roc_·¿ms_´e£Á + = 0; + +3255 +­p +-> +h—d”_csum_»q + =1; + +3256 +hwlb_´e£Á + = 0; + +3257 +æow_dœ_´e£Á + = 0; + +3260 ( +Ýt + = + `g‘Ýt_lÚg +( +¬gc +, +¬gv +, "f:s:p:l:", +lgÝts +, + +3261 & +ÝtiÚ_šdex +)è!ð +EOF +) + +3262  +Ýt +) { + +3264 ià( +f_´e£Á +) + +3265 + `¹e_·nic +("Error: Config file is…rovided " + +3267 +f_´e£Á + = 1; + +3269 ià(! + `¡¾’ +( +ݏrg +)) + +3270 + `¹e_·nic +("Error: Config file‚ame is‚ull\n"); + +3272 +­p +-> +cÚfig_fže + = + `¡rdup +( +ݏrg +); + +3273 ià( +­p +-> +cÚfig_fže + =ð +NULL +) + +3274 + `¹e_·nic +("Error: Memory‡llocation failure\n"); + +3279 ià( +s_´e£Á +) + +3280 + `¹e_·nic +("Error: Script file is…rovided " + +3282 +s_´e£Á + = 1; + +3284 ià(! + `¡¾’ +( +ݏrg +)) + +3285 + `¹e_·nic +("Error: Script file‚ame is‚ull\n"); + +3287 +­p +-> +süt_fže + = + `¡rdup +( +ݏrg +); + +3288 ià( +­p +-> +süt_fže + =ð +NULL +) + +3289 + `¹e_·nic +("Error: Memory‡llocation failure\n"); + +3294 ià( +p_´e£Á +) + +3295 + `¹e_·nic +("Error: PORT_MASK is…rovided " + +3297 +p_´e£Á + = 1; + +3299 ià(( + `ssÿnf +( +ݏrg +, "%" +SCNx64 + "%n", & +­p +-> +pÜt_mask +, + +3300 & +sÿÃd +) != 1) || + +3301 (( +size_t +è +sÿÃd + !ð + `¡¾’ +( +ݏrg +))) + +3302 + `¹e_·nic +("Error: PORT_MASK is‚ot " + +3305 ià( +­p +-> +pÜt_mask + == 0) + +3306 + `¹e_·nic +("Error: PORT_MASK is‚ull\n"); + +3311 ià( +l_´e£Á +) + +3312 + `¹e_·nic +("Error: LOG_LEVEL is…rovided " + +3314 +l_´e£Á + = 1; + +3316 ià(( + `ssÿnf +( +ݏrg +, "%" +SCNu32 + "%n", & +­p +-> +log_Ëv– +, + +3317 & +sÿÃd +) != 1) || + +3318 (( +size_t +è +sÿÃd + !ð + `¡¾’ +( +ݏrg +)) || + +3319 ( +­p +-> +log_Ëv– + >ð +APP_LOG_LEVELS +)) + +3320 + `¹e_·nic +("Error: LOG_LEVEL invalid value\n"); + +3325 +݊ame + = +lgÝts +[ +ÝtiÚ_šdex +]. +Çme +; + +3327 ià( + `¡rcmp +( +݊ame +, "hwlb") == 0) { + +3328 ià( +hwlb_´e£Á +) + +3329 + `¹e_·nic +("Error: hwlb‡rgument " + +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 be‡tleast 1\n"); + +3339 + `´štf +("NØoàHWQ fÜ 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_dir‡rgument " + +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à( +di§bË_csum_´e£Á +) + +3358 + `¹e_·nic +("Error: disable-hw-csum‡rgument " + +3361 + `´štf +("Disable TCP/UDP HW checksumi\n"); + +3362 +­p +-> +h—d”_csum_»q + = 0; + +3363 +di§bË_csum_´e£Á + = 1; + +3367 ià( + `¡rcmp +( +݊ame +, "preproc") == 0) { + +3368 ià( +´•roc_´e£Á +) + +3369 + `¹e_·nic +("Error: Preprocessor‡rgument " + +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: Preprocessor‡rgs " + +3381 +´•roc_·¿ms_´e£Á + = 1; + +3383 +­p +-> +´•roc_¬gs + = + `¡rdup +( +ݏrg +); + +3387 + `­p_´št_u§ge +( +¬gv +[0]); + +3391 + `­p_´št_u§ge +( +¬gv +[0]); + +3394 +Ýtšd + = 0; + +3397 ià( +´•roc_·¿ms_´e£Á + && ( +´•roc_´e£Á + == 0)) + +3398 + `¹e_·nic +("Error: Preprocessor‡rgs specified while " + +3401 +­p +-> +·r£r_fže + = +´•roc_´e£Á + ? + +3402 + `fž’amedup +( +­p +-> +cÚfig_fže +, ".preproc") : + +3403 + `¡rdup +( +­p +-> +cÚfig_fže +); + +3404 +­p +-> +ouut_fže + = + `fž’amedup +×µ-> +cÚfig_fže +, ".out"); + +3407 + } +} + +3410 + $­p_cÚfig_´•roc +( +­p_·¿ms + * +­p +) + +3412  +bufãr +[256]; + +3413  +¡©us +; + +3415 ià( +­p +-> +´•roc + =ð +NULL +) + +3418 +¡©us + = + `acûss +( +­p +-> +cÚfig_fže +, +F_OK + | +R_OK +); + +3419 + `APP_CHECK +(( +¡©us + == 0), "Error: Unableo open file %s", + +3420 +­p +-> +cÚfig_fže +); + +3422 + `¢´štf +( +bufãr +, (buffer), "%s %s %s > %s", + +3423 +­p +-> +´•roc +, + +3424 +­p +-> +´•roc_¬gs + ?‡pp->preproc_args : "", + +3425 +­p +-> +cÚfig_fže +, + +3426 +­p +-> +·r£r_fže +); + +3428 +¡©us + = + `sy¡em +( +bufãr +); + +3429 + `APP_CHECK +(( + `WIFEXITED +( +¡©us +è&& ( + `WEXITSTATUS +(status) == 0)), + +3431 +­p +-> +cÚfig_fže +); + +3433  +¡©us +; + +3434 + } +} + + @vnf_common/config_parse_tm.c + +16  + ~<¡dšt.h +> + +17  + ~<¡dlib.h +> + +18  + ~<¡dio.h +> + +19  + ~<ùy³.h +> + +20  + ~ + +21  + ~<”ºo.h +> + +22  + ~<¡d¬g.h +> + +23  + ~<¡ršg.h +> + +24  + ~ + +25  + ~ + +27  + ~<¹e_”ºo.h +> + +28  + ~<¹e_cfgfže.h +> + +29  + ~<¹e_¡ršg_âs.h +> + +31  + ~"­p.h +" + +34 + $tm_cfgfže_lßd_sched_pÜt +( + +35  +¹e_cfgfže + * +fže +, + +36  +¹e_sched_pÜt_·¿ms + * +pÜt_·¿ms +) + +38 cÚ¡ * +’Œy +; + +39  +j +; + +41 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "port", "frame overhead"); + +42 ià( +’Œy +) + +43 +pÜt_·¿ms +-> +äame_ov”h—d + = ( +ušt32_t +) + `©oi +( +’Œy +); + +45 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "port", "mtu"); + +46 ià( +’Œy +) + +47 +pÜt_·¿ms +-> +mtu + = ( +ušt32_t +) + `©oi +( +’Œy +); + +49 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +52 ià( +’Œy +) + +53 +pÜt_·¿ms +-> +n_subpÜts_³r_pÜt + = ( +ušt32_t +è + `©oi +( +’Œy +); + +55 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +58 ià( +’Œy +) + +59 +pÜt_·¿ms +-> +n_pes_³r_subpÜt + = ( +ušt32_t +è + `©oi +( +’Œy +); + +61 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "port", "queue sizes"); + +62 ià( +’Œy +) { + +63 * +Ãxt +; + +65  +j + = 0; j < +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +; j++) { + +66 +pÜt_·¿ms +-> +qsize +[ +j +] = ( +ušt16_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 + " w»d mš", +j +); + +80 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "»d", +¡r +); + +81 ià( +’Œy +) { + +82 * +Ãxt +; + +83  +k +; + +86  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +87 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +mš_th + + +88 ð( +ušt16_t +) + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +89 ià( +Ãxt + =ð +NULL +) + +91 +’Œy + = +Ãxt +; + +96 + `¢´štf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d max", +j +); + +97 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "»d", +¡r +); + +98 ià( +’Œy +) { + +99 * +Ãxt +; + +100  +k +; + +103  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +104 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +max_th + + +105 ð( +ušt16_t +) + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +106 ià( +Ãxt + =ð +NULL +) + +108 +’Œy + = +Ãxt +; + +113 + `¢´štf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d inv…rob", +j +); + +114 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "»d", +¡r +); + +115 ià( +’Œy +) { + +116 * +Ãxt +; + +117  +k +; + +120  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +121 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +maxp_šv + + +122 ð( +ušt8_t +) + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +124 ià( +Ãxt + =ð +NULL +) + +126 +’Œy + = +Ãxt +; + +131 + `¢´štf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d weight", +j +); + +132 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, "»d", +¡r +); + +133 ià( +’Œy +) { + +134 * +Ãxt +; + +135  +k +; + +138  +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +139 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +wq_log2 + + +140 ð( +ušt8_t +) + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +141 ià( +Ãxt + =ð +NULL +) + +143 +’Œy + = +Ãxt +; + +150 + } +} + +153 + $tm_cfgfže_lßd_sched_pe +( + +154  +¹e_cfgfže + * +fže +, + +155  +¹e_sched_pÜt_·¿ms + * +pÜt_·¿ms +, + +156  +¹e_sched_pe_·¿ms + * +pe_·¿ms +) + +158  +i +, +j +; + +159 * +Ãxt +; + +160 cÚ¡ * +’Œy +; + +161  +´ofžes +; + +163 +´ofžes + = + `¹e_cfgfže_num_£ùiÚs +( +fže +, + +165 +pÜt_·¿ms +-> +n_pe_´ofžes + = +´ofžes +; + +167  +j + = 0; j < +´ofžes +; j++) { + +168  +pe_Çme +[32]; + +170 + `¢´štf +( +pe_Çme +, (pipe_name), + +171 "p´ofž%" +PRId32 +, +j +); + +173 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tb„ate"); + +174 ià( +’Œy +) + +175 +pe_·¿ms +[ +j +]. +tb_¿‹ + = ( +ušt32_t +è + `©oi +( +’Œy +); + +177 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tb size"); + +178 ià( +’Œy +) + +179 +pe_·¿ms +[ +j +]. +tb_size + = ( +ušt32_t +è + `©oi +( +’Œy +); + +181 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc…eriod"); + +182 ià( +’Œy +) + +183 +pe_·¿ms +[ +j +]. +tc_³riod + = ( +ušt32_t +è + `©oi +( +’Œy +); + +185 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 0„ate"); + +186 ià( +’Œy +) + +187 +pe_·¿ms +[ +j +]. +tc_¿‹ +[0] = ( +ušt32_t +è + `©oi +( +’Œy +); + +189 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 1„ate"); + +190 ià( +’Œy +) + +191 +pe_·¿ms +[ +j +]. +tc_¿‹ +[1] = ( +ušt32_t +è + `©oi +( +’Œy +); + +193 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 2„ate"); + +194 ià( +’Œy +) + +195 +pe_·¿ms +[ +j +]. +tc_¿‹ +[2] = ( +ušt32_t +è + `©oi +( +’Œy +); + +197 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 3„ate"); + +198 ià( +’Œy +) + +199 +pe_·¿ms +[ +j +]. +tc_¿‹ +[3] = ( +ušt32_t +è + `©oi +( +’Œy +); + +201 #ifdeà +RTE_SCHED_SUBPORT_TC_OV + + +202 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, + +204 ià( +’Œy +) + +205 +pe_·¿ms +[ +j +]. +tc_ov_weight + = ( +ušt8_t +) + `©oi +( +’Œy +); + +208 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +209 +pe_Çme +, + +211 ià( +’Œy +) + +212  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +213 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*0 + +i +] = + +214 ( +ušt8_t +è + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +215 ià( +Ãxt + =ð +NULL +) + +217 +’Œy + = +Ãxt +; + +220 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 1 wrr weights"); + +221 ià( +’Œy +) + +222  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +223 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*1 + +i +] = + +224 ( +ušt8_t +è + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +225 ià( +Ãxt + =ð +NULL +) + +227 +’Œy + = +Ãxt +; + +230 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 2 wrr weights"); + +231 ià( +’Œy +) + +232  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +233 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*2 + +i +] = + +234 ( +ušt8_t +è + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +235 ià( +Ãxt + =ð +NULL +) + +237 +’Œy + = +Ãxt +; + +240 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, +pe_Çme +, "tc 3 wrr weights"); + +241 ià( +’Œy +) + +242  +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +243 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*3 + +i +] = + +244 ( +ušt8_t +è + `¡¹Þ +( +’Œy +, & +Ãxt +, 10); + +245 ià( +Ãxt + =ð +NULL +) + +247 +’Œy + = +Ãxt +; + +251 + } +} + +254 + $tm_cfgfže_lßd_sched_subpÜt +( + +255  +¹e_cfgfže + * +fže +, + +256  +¹e_sched_subpÜt_·¿ms + * +subpÜt_·¿ms +, + +257 * +pe_to_´ofže +) + +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_cfgfže_has_£ùiÚ +( +fže +, +£c_Çme +)) { + +269 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +270 +£c_Çme +, + +272 ià( +’Œy +) + +273 +subpÜt_·¿ms +[ +i +]. +tb_¿‹ + = + +274 ( +ušt32_t +è + `©oi +( +’Œy +); + +276 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +277 +£c_Çme +, + +279 ià( +’Œy +) + +280 +subpÜt_·¿ms +[ +i +]. +tb_size + = + +281 ( +ušt32_t +è + `©oi +( +’Œy +); + +283 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +284 +£c_Çme +, + +286 ià( +’Œy +) + +287 +subpÜt_·¿ms +[ +i +]. +tc_³riod + = + +288 ( +ušt32_t +è + `©oi +( +’Œy +); + +290 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +291 +£c_Çme +, + +293 ià( +’Œy +) + +294 +subpÜt_·¿ms +[ +i +]. +tc_¿‹ +[0] = + +295 ( +ušt32_t +è + `©oi +( +’Œy +); + +297 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +298 +£c_Çme +, + +300 ià( +’Œy +) + +301 +subpÜt_·¿ms +[ +i +]. +tc_¿‹ +[1] = + +302 ( +ušt32_t +è + `©oi +( +’Œy +); + +304 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +305 +£c_Çme +, + +307 ià( +’Œy +) + +308 +subpÜt_·¿ms +[ +i +]. +tc_¿‹ +[2] = + +309 ( +ušt32_t +è + `©oi +( +’Œy +); + +311 +’Œy + = + `¹e_cfgfže_g‘_’Œy +( +fže +, + +312 +£c_Çme +, + +314 ià( +’Œy +) + +315 +subpÜt_·¿ms +[ +i +]. +tc_¿‹ +[3] = + +316 ( +ušt32_t +è + `©oi +( +’Œy +); + +318  +n_’Œ›s + = + `¹e_cfgfže_£ùiÚ_num_’Œ›s +( +fže +, + +319 +£c_Çme +); + +320  +¹e_cfgfže_’Œy + +’Œ›s +[ +n_’Œ›s +]; + +322 + `¹e_cfgfže_£ùiÚ_’Œ›s +( +fže +, + +323 +£c_Çme +, + +324 +’Œ›s +, + +325 +n_’Œ›s +); + +327  +j + = 0; j < +n_’Œ›s +; j++) + +328 ià( + `¡ºcmp +("pipe", + +329 +’Œ›s +[ +j +]. +Çme +, + +331  +´ofže +; + +332 * +tok’s +[2] = { +NULL +, NULL}; + +333  +n_tok’s +; + +334  +begš +, +’d +; + +335  +Çme +[ +CFG_NAME_LEN + + 1]; + +337 +´ofže + = + `©oi +( +’Œ›s +[ +j +]. +v®ue +); + +338 + `¡ºýy +( +Çme +, + +339 +’Œ›s +[ +j +]. +Çme +, + +340 ( +Çme +)); + +341 +n_tok’s + = + `¹e_¡r¥l™ +( + +342 & +Çme +[("pipe")], + +343 + `¡ºËn +( +Çme +, +CFG_NAME_LEN +), + +344 +tok’s +, 2, '-'); + +346 +begš + = + `©oi +( +tok’s +[0]); + +347 ià( +n_tok’s + == 2) + +348 +’d + = + `©oi +( +tok’s +[1]); + +350 +’d + = +begš +; + +352 ià(( +’d + >ð +APP_MAX_SCHED_PIPES +) || + +353 ( +begš + > +’d +)) + +356  +k + = +begš +; k <ð +’d +; k++) { + +357  +´ofže_Çme +[ +CFG_NAME_LEN +]; + +359 + `¢´štf +( +´ofže_Çme +, + +360 ( +´ofže_Çme +), + +361 "p´ofž%" +PRId32 +, + +362 +´ofže +); + +363 ià( + `¹e_cfgfže_has_£ùiÚ +( +fže +, +´ofže_Çme +)) + +364 +pe_to_´ofže +[ +i + * +APP_MAX_SCHED_PIPES + + +k +] = +´ofže +; + +366 + `¹e_ex™ +( +EXIT_FAILURE +, + +368 +’Œ›s +[ +j +]. +v®ue +); + +375 + } +} + +378 + $tm_cfgfže_lßd +( +­p_pktq_tm_·¿ms + * +tm +) + +380  +¹e_cfgfže + * +fže +; + +381 +ušt32_t + +i +; + +383 + `mem£t +( +tm +-> +sched_subpÜt_·¿ms +, 0, (tm->sched_subport_params)); + +384 + `mem£t +( +tm +-> +sched_pe_´ofžes +, 0, (tm->sched_pipe_profiles)); + +385 + `mem£t +(& +tm +-> +sched_pÜt_·¿ms +, 0, (tm->sched_port_params)); + +386  +i + = 0; i < +APP_MAX_SCHED_SUBPORTS + * +APP_MAX_SCHED_PIPES +; i++) + +387 +tm +-> +sched_pe_to_´ofže +[ +i +] = -1; + +389 +tm +-> +sched_pÜt_·¿ms +. +pe_´ofžes + = &tm-> +sched_pe_´ofžes +[0]; + +391 ià( +tm +-> +fže_Çme +[0] == '\0') + +394 +fže + = + `¹e_cfgfže_lßd +( +tm +-> +fže_Çme +, 0); + +395 ià( +fže + =ð +NULL +) + +398 + `tm_cfgfže_lßd_sched_pÜt +( +fže +, + +399 & +tm +-> +sched_pÜt_·¿ms +); + +400 + `tm_cfgfže_lßd_sched_subpÜt +( +fže +, + +401 +tm +-> +sched_subpÜt_·¿ms +, + +402 +tm +-> +sched_pe_to_´ofže +); + +403 + `tm_cfgfže_lßd_sched_pe +( +fže +, + +404 & +tm +-> +sched_pÜt_·¿ms +, + +405 +tm +-> +sched_pe_´ofžes +); + +407 + `¹e_cfgfže_þo£ +( +fže +); + +409 + } +} + +412 + $­p_cÚfig_·r£_tm +( +­p_·¿ms + * +­p +) + +414 +ušt32_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_cfgfže_lßd +( +p +); + +424 + `APP_CHECK +( +¡©us + == 0, + +426 +p +-> +Çme +, + +427 +p +-> +fže_Çme +); + +431 + } +} + + @vnf_common/cpu_core_map.c + +17  + ~<š‰y³s.h +> + +18  + ~<¡dlib.h +> + +19  + ~<¡dio.h +> + +20  + ~<¡ršg.h +> + +22  + ~<¹e_lcÜe.h +> + +24  + ~"ýu_cÜe_m­.h +" + +26  + sýu_cÜe_m­ + { + +27 +ušt32_t + + mn_max_sock‘s +; + +28 +ušt32_t + + mn_max_cÜes_³r_sock‘ +; + +29 +ušt32_t + + mn_max_ht_³r_cÜe +; + +30 +ušt32_t + + mn_sock‘s +; + +31 +ušt32_t + + mn_cÜes_³r_sock‘ +; + +32 +ušt32_t + + mn_ht_³r_cÜe +; + +33  + mm­ +[0]; + +36  +šlše + +ušt32_t + + +37 + $ýu_cÜe_m­_pos +( +ýu_cÜe_m­ + * +m­ +, + +38 +ušt32_t + +sock‘_id +, + +39 +ušt32_t + +cÜe_id +, + +40 +ušt32_t + +ht_id +) + +42  ( +sock‘_id + * +m­ +-> +n_max_cÜes_³r_sock‘ + + +cÜe_id +) * + +43 +m­ +-> +n_max_ht_³r_cÜe + + +ht_id +; + +44 + } +} + +47 +ýu_cÜe_m­_compu‹_—l +( +ýu_cÜe_m­ + * +m­ +); + +50 +ýu_cÜe_m­_compu‹_lšux +( +ýu_cÜe_m­ + * +m­ +); + +53 +ýu_cÜe_m­_compu‹_ªd_check +( +ýu_cÜe_m­ + * +m­ +); + +55  +ýu_cÜe_m­ + * + +56 + $ýu_cÜe_m­_š™ +( +ušt32_t + +n_max_sock‘s +, + +57 +ušt32_t + +n_max_cÜes_³r_sock‘ +, + +58 +ušt32_t + +n_max_ht_³r_cÜe +, + +59 +ušt32_t + +—l_š™Ÿlized +) + +61 +ušt32_t + +m­_size +, +m­_mem_size +, +i +; + +62  +ýu_cÜe_m­ + * +m­ +; + +63  +¡©us +; + +66 ià(( +n_max_sock‘s + == 0) || + +67 ( +n_max_cÜes_³r_sock‘ + == 0) || + +68 ( +n_max_ht_³r_cÜe + == 0)) + +69  +NULL +; + +72 +m­_size + = +n_max_sock‘s + * +n_max_cÜes_³r_sock‘ + * +n_max_ht_³r_cÜe +; + +73 +m­_mem_size + = ( +ýu_cÜe_m­ +è+ +m­_size + * (); + +74 +m­ + = ( +ýu_cÜe_m­ + *è + `m®loc +( +m­_mem_size +); + +75 ià( +m­ + =ð +NULL +) + +76  +NULL +; + +79 +m­ +-> +n_max_sock‘s + =‚_max_sockets; + +80 +m­ +-> +n_max_cÜes_³r_sock‘ + =‚_max_cores_per_socket; + +81 +m­ +-> +n_max_ht_³r_cÜe + =‚_max_ht_per_core; + +82 +m­ +-> +n_sock‘s + = 0; + +83 +m­ +-> +n_cÜes_³r_sock‘ + = 0; + +84 +m­ +-> +n_ht_³r_cÜe + = 0; + +86  +i + = 0; i < +m­_size +; i++) + +87 +m­ +->m­[ +i +] = -1; + +89 +¡©us + = ( +—l_š™Ÿlized +) ? + +90 + `ýu_cÜe_m­_compu‹_—l +( +m­ +) : + +91 + `ýu_cÜe_m­_compu‹_lšux +( +m­ +); + +93 ià( +¡©us +) { + +94 + `ä“ +( +m­ +); + +95  +NULL +; + +98 +¡©us + = + `ýu_cÜe_m­_compu‹_ªd_check +( +m­ +); + +99 ià( +¡©us +) { + +100 + `ä“ +( +m­ +); + +101  +NULL +; + +104  +m­ +; + +105 + } +} + +108 + $ýu_cÜe_m­_compu‹_—l +( +ýu_cÜe_m­ + * +m­ +) + +110 +ušt32_t + +sock‘_id +, +cÜe_id +, +ht_id +; + +113  +sock‘_id + = 0; sock‘_id < +m­ +-> +n_max_sock‘s +; socket_id++) { + +114 +ušt32_t + +n_d‘eùed +, +cÜe_id_cÚtig +; + +115  +lcÜe_id +; + +117 +n_d‘eùed + = 0; + +118  +lcÜe_id + = 0;†cÜe_id < +RTE_MAX_LCORE +;†core_id++) { + +119  +lcÜe_cÚfig + * +p + = &lcÜe_cÚfig[ +lcÜe_id +]; + +121 ià(( +p +-> +d‘eùed +è&& (p-> +sock‘_id + == socket_id)) + +122 +n_d‘eùed +++; + +125 +cÜe_id_cÚtig + = 0; + +127  +cÜe_id + = 0; +n_d‘eùed + ; core_id++) { + +128 +ht_id + = 0; + +130  +lcÜe_id + = 0; + +131 +lcÜe_id + < +RTE_MAX_LCORE +; + +132 +lcÜe_id +++) { + +133  +lcÜe_cÚfig + * +p + = + +134 & +lcÜe_cÚfig +[ +lcÜe_id +]; + +136 ià(( +p +-> +d‘eùed +) && + +137 ( +p +-> +sock‘_id + == socket_id) && + +138 ( +p +-> +cÜe_id + == core_id)) { + +139 +ušt32_t + +pos + = + `ýu_cÜe_m­_pos +( +m­ +, + +140 +sock‘_id +, + +141 +cÜe_id_cÚtig +, + +142 +ht_id +); + +144 +m­ +->m­[ +pos +] = +lcÜe_id +; + +145 +ht_id +++; + +146 +n_d‘eùed +--; + +150 ià( +ht_id +) { + +151 +cÜe_id_cÚtig +++; + +152 ià( +cÜe_id_cÚtig + == + +153 +m­ +-> +n_max_cÜes_³r_sock‘ +) + +160 + } +} + +163 + $ýu_cÜe_m­_compu‹_ªd_check +( +ýu_cÜe_m­ + * +m­ +) + +165 +ušt32_t + +sock‘_id +, +cÜe_id +, +ht_id +; + +168  +ht_id + = 0; ht_id < +m­ +-> +n_max_ht_³r_cÜe +; ht_id++) { + +169 ià( +m­ +->m­[ +ht_id +] == -1) + +172 +m­ +-> +n_ht_³r_cÜe +++; + +175 ià( +m­ +-> +n_ht_³r_cÜe + == 0) + +178  +cÜe_id + = 0; cÜe_id < +m­ +-> +n_max_cÜes_³r_sock‘ +; core_id++) { + +179 +ušt32_t + +pos + = +cÜe_id + * +m­ +-> +n_max_ht_³r_cÜe +; + +181 ià( +m­ +->m­[ +pos +] == -1) + +184 +m­ +-> +n_cÜes_³r_sock‘ +++; + +187 ià( +m­ +-> +n_cÜes_³r_sock‘ + == 0) + +190  +sock‘_id + = 0; sock‘_id < +m­ +-> +n_max_sock‘s +; socket_id++) { + +191 +ušt32_t + +pos + = +sock‘_id + * +m­ +-> +n_max_cÜes_³r_sock‘ + * + +192 +m­ +-> +n_max_ht_³r_cÜe +; + +194 ià( +m­ +->m­[ +pos +] == -1) + +197 +m­ +-> +n_sock‘s +++; + +200 ià( +m­ +-> +n_sock‘s + == 0) + +205  +sock‘_id + = 0; sock‘_id < +m­ +-> +n_sock‘s +; socket_id++) { + +206  +cÜe_id + = 0; cÜe_id < +m­ +-> +n_cÜes_³r_sock‘ +; core_id++) + +207  +ht_id + = 0; + +208 +ht_id + < +m­ +-> +n_max_ht_³r_cÜe +; + +209 +ht_id +++) { + +210 +ušt32_t + +pos + = ( +sock‘_id + * + +211 +m­ +-> +n_max_cÜes_³r_sock‘ + + +cÜe_id +) * + +212 +m­ +-> +n_max_ht_³r_cÜe + + +ht_id +; + +214 ià((( +ht_id + < +m­ +-> +n_ht_³r_cÜe +) && + +215 ( +m­ +->m­[ +pos +] == -1)) || + +216 (( +ht_id + >ð +m­ +-> +n_ht_³r_cÜe +) && + +217 ( +m­ +->m­[ +pos +] != -1))) + +221  ; +cÜe_id + < +m­ +-> +n_max_cÜes_³r_sock‘ +; core_id++) + +222  +ht_id + = 0; + +223 +ht_id + < +m­ +-> +n_max_ht_³r_cÜe +; + +224 +ht_id +++) { + +225 +ušt32_t + +pos + = + `ýu_cÜe_m­_pos +( +m­ +, + +226 +sock‘_id +, + +227 +cÜe_id +, + +228 +ht_id +); + +230 ià( +m­ +->m­[ +pos +] != -1) + +236 + } +} + +238  + #FILE_LINUX_CPU_N_LCORES + \ + +239 "/sys/deviûs/sy¡em/ýu/´e£Á" + + ) + +242 + $ýu_cÜe_m­_g‘_n_lcÜes_lšux +() + +244  +bufãr +[64], * +¡ršg +; + +245 +FILE + * +fd +; + +247 +fd + = + `fݒ +( +FILE_LINUX_CPU_N_LCORES +, "r"); + +248 ià( +fd + =ð +NULL +) + +251 ià( + `fg‘s +( +bufãr +, (bufãr), +fd +è=ð +NULL +) { + +252 + `fþo£ +( +fd +); + +256 + `fþo£ +( +fd +); + +258 +¡ršg + = + `šdex +( +bufãr +, '-'); + +259 ià( +¡ršg + =ð +NULL +) + +262  + `©oi +(++ +¡ršg +) + 1; + +263 + } +} + +265  + #FILE_LINUX_CPU_CORE_ID + \ + +266 "/sys/deviûs/sy¡em/ýu/ýu%" +PRIu32 + "/tÝÞogy/cÜe_id" + + ) + +269 + $ýu_cÜe_m­_g‘_cÜe_id_lšux +( +lcÜe_id +) + +271  +bufãr +[64]; + +272 +FILE + * +fd +; + +273  +cÜe_id +; + +275 + `¢´štf +( +bufãr +, (bufãr), +FILE_LINUX_CPU_CORE_ID +, +lcÜe_id +); + +276 +fd + = + `fݒ +( +bufãr +, "r"); + +277 ià( +fd + =ð +NULL +) + +280 ià( + `fg‘s +( +bufãr +, (bufãr), +fd +è=ð +NULL +) { + +281 + `fþo£ +( +fd +); + +285 + `fþo£ +( +fd +); + +287 +cÜe_id + = + `©oi +( +bufãr +); + +288  +cÜe_id +; + +289 + } +} + +291  + #FILE_LINUX_CPU_SOCKET_ID + \ + +292 "/sys/deviûs/sy¡em/ýu/ýu%" +PRIu32 + "/tÝÞogy/physiÿl_·ckage_id" + + ) + +295 + $ýu_cÜe_m­_g‘_sock‘_id_lšux +( +lcÜe_id +) + +297  +bufãr +[64]; + +298 +FILE + * +fd +; + +299  +sock‘_id +; + +301 + `¢´štf +( +bufãr +, (bufãr), +FILE_LINUX_CPU_SOCKET_ID +, +lcÜe_id +); + +302 +fd + = + `fݒ +( +bufãr +, "r"); + +303 ià( +fd + =ð +NULL +) + +306 ià( + `fg‘s +( +bufãr +, (bufãr), +fd +è=ð +NULL +) { + +307 + `fþo£ +( +fd +); + +311 + `fþo£ +( +fd +); + +313 +sock‘_id + = + `©oi +( +bufãr +); + +314  +sock‘_id +; + +315 + } +} + +318 + $ýu_cÜe_m­_compu‹_lšux +( +ýu_cÜe_m­ + * +m­ +) + +320 +ušt32_t + +sock‘_id +, +cÜe_id +, +ht_id +; + +321  +n_lcÜes +; + +323 +n_lcÜes + = + `ýu_cÜe_m­_g‘_n_lcÜes_lšux +(); + +324 ià( +n_lcÜes + <= 0) + +328  +sock‘_id + = 0; sock‘_id < +m­ +-> +n_max_sock‘s +; socket_id++) { + +329 +ušt32_t + +n_d‘eùed +, +cÜe_id_cÚtig +; + +330  +lcÜe_id +; + +332 +n_d‘eùed + = 0; + +333  +lcÜe_id + = 0;†cÜe_id < +n_lcÜes +;†core_id++) { + +334  +lcÜe_sock‘_id + = + +335 + `ýu_cÜe_m­_g‘_sock‘_id_lšux +( +lcÜe_id +); + +337 ià( +lcÜe_sock‘_id + < 0) + +340 ià((( +ušt32_t +è +lcÜe_sock‘_id +è=ð +sock‘_id +) + +341 +n_d‘eùed +++; + +344 +cÜe_id_cÚtig + = 0; + +346  +cÜe_id + = 0; +n_d‘eùed + ; core_id++) { + +347 +ht_id + = 0; + +349  +lcÜe_id + = 0;†cÜe_id < +n_lcÜes +;†core_id++) { + +350  +lcÜe_sock‘_id + = + +351 + `ýu_cÜe_m­_g‘_sock‘_id_lšux +( + +352 +lcÜe_id +); + +354 ià( +lcÜe_sock‘_id + < 0) + +357  +lcÜe_cÜe_id + = + +358 + `ýu_cÜe_m­_g‘_cÜe_id_lšux +( + +359 +lcÜe_id +); + +361 ià( +lcÜe_cÜe_id + < 0) + +364 ià((( +ušt32_t +è +lcÜe_sock‘_id + =ð +sock‘_id +) && + +365 (( +ušt32_t +è +lcÜe_cÜe_id + =ð +cÜe_id +)) { + +366 +ušt32_t + +pos + = + `ýu_cÜe_m­_pos +( +m­ +, + +367 +sock‘_id +, + +368 +cÜe_id_cÚtig +, + +369 +ht_id +); + +371 +m­ +->m­[ +pos +] = +lcÜe_id +; + +372 +ht_id +++; + +373 +n_d‘eùed +--; + +377 ià( +ht_id +) { + +378 +cÜe_id_cÚtig +++; + +379 ià( +cÜe_id_cÚtig + == + +380 +m­ +-> +n_max_cÜes_³r_sock‘ +) + +387 + } +} + +390 + $ýu_cÜe_m­_´št +( +ýu_cÜe_m­ + * +m­ +) + +392 +ušt32_t + +sock‘_id +, +cÜe_id +, +ht_id +; + +394 ià( +m­ + =ð +NULL +) + +397  +sock‘_id + = 0; sock‘_id < +m­ +-> +n_sock‘s +; socket_id++) { + +398 + `´štf +("Sock‘ %" +PRIu32 + ":\n", +sock‘_id +); + +400  +cÜe_id + = 0; + +401 +cÜe_id + < +m­ +-> +n_cÜes_³r_sock‘ +; + +402 +cÜe_id +++) { + +403 + `´štf +("[%" +PRIu32 + "] = [", +cÜe_id +); + +405  +ht_id + = 0; ht_id < +m­ +-> +n_ht_³r_cÜe +; ht_id++) { + +406  +lcÜe_id + = + `ýu_cÜe_m­_g‘_lcÜe_id +( +m­ +, + +407 +sock‘_id +, + +408 +cÜe_id +, + +409 +ht_id +); + +411 +ušt32_t + +cÜe_id_nÚcÚtig + = + +412 + `ýu_cÜe_m­_g‘_cÜe_id_lšux +( + +413 +lcÜe_id +); + +415 + `´štf +(" %" +PRId32 + " (%" +PRIu32 + ") ", + +416 +lcÜe_id +, + +417 +cÜe_id_nÚcÚtig +); + +420 + `´štf +("]\n"); + +423 + } +} + +425 +ušt32_t + + +426 + $ýu_cÜe_m­_g‘_n_sock‘s +( +ýu_cÜe_m­ + * +m­ +) + +428 ià( +m­ + =ð +NULL +) + +431  +m­ +-> +n_sock‘s +; + +432 + } +} + +434 +ušt32_t + + +435 + $ýu_cÜe_m­_g‘_n_cÜes_³r_sock‘ +( +ýu_cÜe_m­ + * +m­ +) + +437 ià( +m­ + =ð +NULL +) + +440  +m­ +-> +n_cÜes_³r_sock‘ +; + +441 + } +} + +443 +ušt32_t + + +444 + $ýu_cÜe_m­_g‘_n_ht_³r_cÜe +( +ýu_cÜe_m­ + * +m­ +) + +446 ià( +m­ + =ð +NULL +) + +449  +m­ +-> +n_ht_³r_cÜe +; + +450 + } +} + +453 + $ýu_cÜe_m­_g‘_lcÜe_id +( +ýu_cÜe_m­ + * +m­ +, + +454 +ušt32_t + +sock‘_id +, + +455 +ušt32_t + +cÜe_id +, + +456 +ušt32_t + +ht_id +) + +458 +ušt32_t + +pos +; + +460 ià(( +m­ + =ð +NULL +) || + +461 ( +sock‘_id + >ð +m­ +-> +n_sock‘s +) || + +462 ( +cÜe_id + >ð +m­ +-> +n_cÜes_³r_sock‘ +) || + +463 ( +ht_id + >ð +m­ +-> +n_ht_³r_cÜe +)) + +466 +pos + = + `ýu_cÜe_m­_pos +( +m­ +, +sock‘_id +, +cÜe_id +, +ht_id +); + +468  +m­ +->m­[ +pos +]; + +469 + } +} + +472 + $ýu_cÜe_m­_ä“ +( +ýu_cÜe_m­ + * +m­ +) + +474 + `ä“ +( +m­ +); + +475 + } +} + + @vnf_common/cpu_core_map.h + +17 #iâdeà +__INCLUDE_CPU_CORE_MAP_H__ + + +18  + #__INCLUDE_CPU_CORE_MAP_H__ + + + ) + +20  + ~<¡dio.h +> + +22  + ~<¹e_lcÜe.h +> + +24  + gýu_cÜe_m­ +; + +26  +ýu_cÜe_m­ + * + +27 +ýu_cÜe_m­_š™ +( +ušt32_t + +n_max_sock‘s +, + +28 +ušt32_t + +n_max_cÜes_³r_sock‘ +, + +29 +ušt32_t + +n_max_ht_³r_cÜe +, + +30 +ušt32_t + +—l_š™Ÿlized +); + +32 +ušt32_t + + +33 +ýu_cÜe_m­_g‘_n_sock‘s +( +ýu_cÜe_m­ + * +m­ +); + +35 +ušt32_t + + +36 +ýu_cÜe_m­_g‘_n_cÜes_³r_sock‘ +( +ýu_cÜe_m­ + * +m­ +); + +38 +ušt32_t + + +39 +ýu_cÜe_m­_g‘_n_ht_³r_cÜe +( +ýu_cÜe_m­ + * +m­ +); + +42 +ýu_cÜe_m­_g‘_lcÜe_id +( +ýu_cÜe_m­ + * +m­ +, + +43 +ušt32_t + +sock‘_id +, + +44 +ušt32_t + +cÜe_id +, + +45 +ušt32_t + +ht_id +); + +47  +ýu_cÜe_m­_´št +( +ýu_cÜe_m­ + * +m­ +); + +50 +ýu_cÜe_m­_ä“ +( +ýu_cÜe_m­ + * +m­ +); + + @vnf_common/hash_func.h + +16 #iâdeà +__INCLUDE_HASH_FUNC_H__ + + +17  + #__INCLUDE_HASH_FUNC_H__ + + + ) + +19  +šlše + +ušt64_t + + +20 + $hash_xÜ_key8 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +22 +ušt64_t + * +k + = +key +; + +23 +ušt64_t + +xÜ0 +; + +25 +xÜ0 + = +£ed + ^ +k +[0]; + +27  ( +xÜ0 + >> 32) ^ xor0; + +28 + } +} + +30  +šlše + +ušt64_t + + +31 + $hash_xÜ_key16 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +33 +ušt64_t + * +k + = +key +; + +34 +ušt64_t + +xÜ0 +; + +36 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +38  ( +xÜ0 + >> 32) ^ xor0; + +39 + } +} + +41  +šlše + +ušt64_t + + +42 + $hash_xÜ_key24 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +44 +ušt64_t + * +k + = +key +; + +45 +ušt64_t + +xÜ0 +; + +47 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +49 +xÜ0 + ^ð +k +[2]; + +51  ( +xÜ0 + >> 32) ^ xor0; + +52 + } +} + +54  +šlše + +ušt64_t + + +55 + $hash_xÜ_key32 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +57 +ušt64_t + * +k + = +key +; + +58 +ušt64_t + +xÜ0 +, +xÜ1 +; + +60 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +61 +xÜ1 + = +k +[2] ^ k[3]; + +63 +xÜ0 + ^ð +xÜ1 +; + +65  ( +xÜ0 + >> 32) ^ xor0; + +66 + } +} + +68  +šlše + +ušt64_t + + +69 + $hash_xÜ_key40 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +71 +ušt64_t + * +k + = +key +; + +72 +ušt64_t + +xÜ0 +, +xÜ1 +; + +74 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +75 +xÜ1 + = +k +[2] ^ k[3]; + +77 +xÜ0 + ^ð +xÜ1 +; + +79 +xÜ0 + ^ð +k +[4]; + +81  ( +xÜ0 + >> 32) ^ xor0; + +82 + } +} + +84  +šlše + +ušt64_t + + +85 + $hash_xÜ_key48 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +87 +ušt64_t + * +k + = +key +; + +88 +ušt64_t + +xÜ0 +, +xÜ1 +, +xÜ2 +; + +90 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +91 +xÜ1 + = +k +[2] ^ k[3]; + +92 +xÜ2 + = +k +[4] ^ k[5]; + +94 +xÜ0 + ^ð +xÜ1 +; + +96 +xÜ0 + ^ð +xÜ2 +; + +98  ( +xÜ0 + >> 32) ^ xor0; + +99 + } +} + +101  +šlše + +ušt64_t + + +102 + $hash_xÜ_key56 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +104 +ušt64_t + * +k + = +key +; + +105 +ušt64_t + +xÜ0 +, +xÜ1 +, +xÜ2 +; + +107 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +108 +xÜ1 + = +k +[2] ^ k[3]; + +109 +xÜ2 + = +k +[4] ^ k[5]; + +111 +xÜ0 + ^ð +xÜ1 +; + +112 +xÜ2 + ^ð +k +[6]; + +114 +xÜ0 + ^ð +xÜ2 +; + +116  ( +xÜ0 + >> 32) ^ xor0; + +117 + } +} + +119  +šlše + +ušt64_t + + +120 + $hash_xÜ_key64 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +122 +ušt64_t + * +k + = +key +; + +123 +ušt64_t + +xÜ0 +, +xÜ1 +, +xÜ2 +, +xÜ3 +; + +125 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +126 +xÜ1 + = +k +[2] ^ k[3]; + +127 +xÜ2 + = +k +[4] ^ k[5]; + +128 +xÜ3 + = +k +[6] ^ k[7]; + +130 +xÜ0 + ^ð +xÜ1 +; + +131 +xÜ2 + ^ð +xÜ3 +; + +133 +xÜ0 + ^ð +xÜ2 +; + +135  ( +xÜ0 + >> 32) ^ xor0; + +136 + } +} + +138 #ià +defšed +( +RTE_ARCH_X86_64 +è&& defšed( +RTE_MACHINE_CPUFLAG_SSE4_2 +) + +140  + ~ + +142  +šlše + +ušt64_t + + +143 + $hash_üc_key8 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +145 +ušt64_t + * +k + = +key +; + +146 +ušt64_t + +üc0 +; + +148 +üc0 + = + `_mm_üc32_u64 +( +£ed +, +k +[0]); + +150  +üc0 +; + +151 + } +} + +153  +šlše + +ušt64_t + + +154 + $hash_üc_key16 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +156 +ušt64_t + * +k + = +key +; + +157 +ušt64_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  +šlše + +ušt64_t + + +170 + $hash_üc_key24 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +172 +ušt64_t + * +k + = +key +; + +173 +ušt64_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  +šlše + +ušt64_t + + +189 + $hash_üc_key32 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +191 +ušt64_t + * +k + = +key +; + +192 +ušt64_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  +šlše + +ušt64_t + + +212 + $hash_üc_key40 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +214 +ušt64_t + * +k + = +key +; + +215 +ušt64_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  +šlše + +ušt64_t + + +235 + $hash_üc_key48 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +237 +ušt64_t + * +k + = +key +; + +238 +ušt64_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  +šlše + +ušt64_t + + +259 + $hash_üc_key56 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +261 +ušt64_t + * +k + = +key +; + +262 +ušt64_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  +šlše + +ušt64_t + + +286 + $hash_üc_key64 +(* +key +, +__¹e_unu£d + +ušt32_t + +key_size +, +ušt64_t + +£ed +) + +288 +ušt64_t + * +k + = +key +; + +289 +ušt64_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_deçuÉ_key8 + +hash_üc_key8 + + + ) + +313  + #hash_deçuÉ_key16 + +hash_üc_key16 + + + ) + +314  + #hash_deçuÉ_key24 + +hash_üc_key24 + + + ) + +315  + #hash_deçuÉ_key32 + +hash_üc_key32 + + + ) + +316  + #hash_deçuÉ_key40 + +hash_üc_key40 + + + ) + +317  + #hash_deçuÉ_key48 + +hash_üc_key48 + + + ) + +318  + #hash_deçuÉ_key56 + +hash_üc_key56 + + + ) + +319  + #hash_deçuÉ_key64 + +hash_üc_key64 + + + ) + +323  + #hash_deçuÉ_key8 + +hash_xÜ_key8 + + + ) + +324  + #hash_deçuÉ_key16 + +hash_xÜ_key16 + + + ) + +325  + #hash_deçuÉ_key24 + +hash_xÜ_key24 + + + ) + +326  + #hash_deçuÉ_key32 + +hash_xÜ_key32 + + + ) + +327  + #hash_deçuÉ_key40 + +hash_xÜ_key40 + + + ) + +328  + #hash_deçuÉ_key48 + +hash_xÜ_key48 + + + ) + +329  + #hash_deçuÉ_key56 + +hash_xÜ_key56 + + + ) + +330  + #hash_deçuÉ_key64 + +hash_xÜ_key64 + + + ) + + @vnf_common/parser.h + +17 #iâdeà +__INCLUDE_PARSER_H__ + + +18  + #__INCLUDE_PARSER_H__ + + + ) + +21 +·r£r_»ad_¬g_boÞ +(cÚ¡ * +p +); + +24 +·r£r_»ad_ušt64 +( +ušt64_t + * +v®ue +, cÚ¡ * +p +); + +27 +·r£r_»ad_ušt32 +( +ušt32_t + * +v®ue +, cÚ¡ * +p +); + +30 +·r£_hex_¡ršg +(* +¤c +, +ušt8_t + * +d¡ +, +ušt32_t + * +size +); + + @vnf_common/pipeline.h + +17 #iâdeà +__INCLUDE_PIPELINE_H__ + + +18  + #__INCLUDE_PIPELINE_H__ + + + ) + +20  + ~ + +22  + ~"p–še_be.h +" + +28 * (* + tp–še_ã_Ý_š™ +)( + tp–še_·¿ms + * + t·¿ms +, * + t¬g +); + +30 (* + tp–še_ã_Ý_ä“ +)(* + tp–še +); + +32  + sp–še_ã_Ýs + { + +33 +p–še_ã_Ý_š™ + +f_š™ +; + +34 +p–še_ã_Ý_ä“ + +f_ä“ +; + +35 +cmdlše_·r£_ùx_t + * +cmds +; + +42  + sp–še_ty³ + { + +43 cÚ¡ * +Çme +; + +46  +p–še_be_Ýs + * +be_Ýs +; + +49  +p–še_ã_Ýs + * +ã_Ýs +; + +52  +šlše + +ušt32_t + + +53 + $p–še_ty³_cmds_couÁ +( +p–še_ty³ + * +±y³ +) + +55 +cmdlše_·r£_ùx_t + * +cmds +; + +56 +ušt32_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£_p–še_cÜe +( +ušt32_t + * +sock‘ +, + +72 +ušt32_t + * +cÜe +, + +73 +ušt32_t + * +ht +, + +74 cÚ¡ * +’Œy +); + + @vnf_common/pipeline_actions_common.h + +16 #iâdeà +__INCLUDE_PIPELINE_ACTIONS_COMMON_H__ + + +17  + #__INCLUDE_PIPELINE_ACTIONS_COMMON_H__ + + + ) + +19  + ~<¡dšt.h +> + +21  + ~<¹e_commÚ.h +> + +22  + ~<¹e_cyþes.h +> + +23  + ~<¹e_mbuf.h +> + +24  + ~<¹e_p–še.h +> + +26  + #PIPELINE_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +28 + `f_ah +( \ + +29 +__¹e_unu£d +  +¹e_p–še + * +p +, \ + +30  +¹e_mbuf + ** +pkts +, \ + +31 +ušt32_t + +n_pkts +, \ + +32 * +¬g +) \ + +34 +ušt32_t + +i +; \ + +36  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +37 + `f_pkt4_wÜk +(& +pkts +[ +i +], +¬g +); \ + +39  ; +i + < +n_pkts +; i++) \ + +40 + `f_pkt_wÜk +( +pkts +[ +i +], +¬g +); \ + +43 } + + ) + +45  + #PIPELINE_PORT_IN_AH_HIJACK_ALL +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +47 + `f_ah +( \ + +48  +¹e_p–še + * +p +, \ + +49  +¹e_mbuf + ** +pkts +, \ + +50 +ušt32_t + +n_pkts +, \ + +51 * +¬g +) \ + +53 +ušt64_t + +pkt_mask + = + `RTE_LEN2MASK +( +n_pkts +, uint64_t); \ + +54 +ušt32_t + +i +; \ + +56 + `¹e_p–še_ah_·ck‘_hijack +( +p +, +pkt_mask +); \ + +58  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +59 + `f_pkt4_wÜk +(& +pkts +[ +i +], +¬g +); \ + +61  ; +i + < +n_pkts +; i++) \ + +62 + `f_pkt_wÜk +( +pkts +[ +i +], +¬g +); \ + +65 } + + ) + +67  + #PIPELINE_TABLE_AH_HIT +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +69 + `f_ah +( \ + +70 +__¹e_unu£d +  +¹e_p–še + * +p +, \ + +71  +¹e_mbuf + ** +pkts +, \ + +72 +ušt64_t + +pkts_š_mask +, \ + +73  +¹e_p–še_bË_’Œy + ** +’Œ›s +, \ + +74 * +¬g +) \ + +76 ià(( +pkts_š_mask + & (pkts_in_mask + 1)) == 0) { \ + +77 +ušt64_t + +n_pkts + = + `__bužtš_pÝcouÁÎ +( +pkts_š_mask +); \ + +78 +ušt32_t + +i +; \ + +80  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +81 + `f_pkt4_wÜk +(& +pkts +[ +i +], & +’Œ›s +[i], +¬g +); \ + +83  ; +i + < +n_pkts +; i++) \ + +84 + `f_pkt_wÜk +( +pkts +[ +i +], +’Œ›s +[i], +¬g +); \ + +86  ; +pkts_š_mask +; ) { \ + +87 +ušt32_t + +pos + = + `__bužtš_ùzÎ +( +pkts_š_mask +); \ + +88 +ušt64_t + +pkt_mask + = 1LLU << +pos +; \ + +90 +pkts_š_mask + &ð~ +pkt_mask +; \ + +91 + `f_pkt_wÜk +( +pkts +[ +pos +], +’Œ›s +[pos], +¬g +); \ + +95 } + + ) + +97  + #PIPELINE_TABLE_AH_MISS +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +99 + `f_ah +( \ + +100 +__¹e_unu£d +  +¹e_p–še + * +p +, \ + +101  +¹e_mbuf + ** +pkts +, \ + +102 +ušt64_t + +pkts_š_mask +, \ + +103  +¹e_p–še_bË_’Œy + * +’Œy +, \ + +104 * +¬g +) \ + +106 ià(( +pkts_š_mask + & (pkts_in_mask + 1)) == 0) { \ + +107 +ušt64_t + +n_pkts + = + `__bužtš_pÝcouÁÎ +( +pkts_š_mask +); \ + +108 +ušt32_t + +i +; \ + +110  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +111 + `f_pkt4_wÜk +(& +pkts +[ +i +], +’Œy +, +¬g +); \ + +113  ; +i + < +n_pkts +; i++) \ + +114 + `f_pkt_wÜk +( +pkts +[ +i +], +’Œy +, +¬g +); \ + +116  ; +pkts_š_mask +; ) { \ + +117 +ušt32_t + +pos + = + `__bužtš_ùzÎ +( +pkts_š_mask +); \ + +118 +ušt64_t + +pkt_mask + = 1LLU << +pos +; \ + +120 +pkts_š_mask + &ð~ +pkt_mask +; \ + +121 + `f_pkt_wÜk +( +pkts +[ +pos +], +’Œy +, +¬g +); \ + +125 } + + ) + +127  + #PIPELINE_TABLE_AH_HIT_DROP_TIME +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +129 + `f_ah +( \ + +130  +¹e_p–še + * +p +, \ + +131  +¹e_mbuf + ** +pkts +, \ + +132 +ušt64_t + +pkts_mask +, \ + +133  +¹e_p–še_bË_’Œy + ** +’Œ›s +, \ + +134 * +¬g +) \ + +136 +ušt64_t + +pkts_š_mask + = +pkts_mask +; \ + +137 +ušt64_t + +pkts_out_mask + = +pkts_mask +; \ + +138 +ušt64_t + +time + = + `¹e_rdtsc +(); \ + +140 ià(( +pkts_š_mask + & (pkts_in_mask + 1)) == 0) { \ + +141 +ušt64_t + +n_pkts + = + `__bužtš_pÝcouÁÎ +( +pkts_š_mask +); \ + +142 +ušt32_t + +i +; \ + +144  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +145 +ušt64_t + +mask + = + `f_pkt4_wÜk +(& +pkts +[ +i +], \ + +146 & +’Œ›s +[ +i +], +¬g +, +time +); \ + +147 +pkts_out_mask + ^ð +mask + << +i +; \ + +150  ; +i + < +n_pkts +; i++) { \ + +151 +ušt64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +i +], \ + +152 +’Œ›s +[ +i +], +¬g +, +time +); \ + +153 +pkts_out_mask + ^ð +mask + << +i +; \ + +156  ; +pkts_š_mask +; ) { \ + +157 +ušt32_t + +pos + = + `__bužtš_ùzÎ +( +pkts_š_mask +); \ + +158 +ušt64_t + +pkt_mask + = 1LLU << +pos +; \ + +159 +ušt64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +pos +], \ + +160 +’Œ›s +[ +pos +], +¬g +, +time +); \ + +162 +pkts_š_mask + &ð~ +pkt_mask +; \ + +163 +pkts_out_mask + ^ð +mask + << +pos +; \ + +166 + `¹e_p–še_ah_·ck‘_drÝ +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +169 } + + ) + +171  + #PIPELINE_TABLE_AH_MISS_DROP_TIME +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +173 + `f_ah +( \ + +174  +¹e_p–še + * +p +, \ + +175  +¹e_mbuf + ** +pkts +, \ + +176 +ušt64_t + +pkts_mask +, \ + +177  +¹e_p–še_bË_’Œy + * +’Œy +, \ + +178 * +¬g +) \ + +180 +ušt64_t + +pkts_š_mask + = +pkts_mask +; \ + +181 +ušt64_t + +pkts_out_mask + = +pkts_mask +; \ + +182 +ušt64_t + +time + = + `¹e_rdtsc +(); \ + +184 ià(( +pkts_š_mask + & (pkts_in_mask + 1)) == 0) { \ + +185 +ušt64_t + +n_pkts + = + `__bužtš_pÝcouÁÎ +( +pkts_š_mask +); \ + +186 +ušt32_t + +i +; \ + +188  +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +189 +ušt64_t + +mask + = + `f_pkt4_wÜk +(& +pkts +[ +i +], \ + +190 +’Œy +, +¬g +, +time +); \ + +191 +pkts_out_mask + ^ð +mask + << +i +; \ + +194  ; +i + < +n_pkts +; i++) { \ + +195 +ušt64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +i +], +’Œy +, +¬g +, +time +);\ + +196 +pkts_out_mask + ^ð +mask + << +i +; \ + +199  ; +pkts_š_mask +; ) { \ + +200 +ušt32_t + +pos + = + `__bužtš_ùzÎ +( +pkts_š_mask +); \ + +201 +ušt64_t + +pkt_mask + = 1LLU << +pos +; \ + +202 +ušt64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +pos +], \ + +203 +’Œy +, +¬g +, +time +); \ + +205 +pkts_š_mask + &ð~ +pkt_mask +; \ + +206 +pkts_out_mask + ^ð +mask + << +pos +; \ + +209 + `¹e_p–še_ah_·ck‘_drÝ +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +212 } + + ) + + @vnf_common/pipeline_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_BE_H__ + + +18  + #__INCLUDE_PIPELINE_BE_H__ + + + ) + +20  + ~<¹e_pÜt_‘hdev.h +> + +21  + ~<¹e_pÜt_ršg.h +> + +22  + ~<¹e_pÜt_äag.h +> + +23  + ~<¹e_pÜt_¿s.h +> + +24  + ~<¹e_pÜt_sched.h +> + +25  + ~<¹e_pÜt_sourû_sšk.h +> + +26  + ~<¹e_p–še.h +> + +28 + ep–še_pÜt_š_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  + sp–še_pÜt_š_·¿ms + { + +39 +p–še_pÜt_š_ty³ + + mty³ +; + +41  +¹e_pÜt_‘hdev_»ad”_·¿ms + + m‘hdev +; + +42  +¹e_pÜt_ršg_»ad”_·¿ms + + mršg +; + +43  +¹e_pÜt_ršg_muÉi_»ad”_·¿ms + + mršg_muÉi +; + +44  +¹e_pÜt_ršg_»ad”_v4_äag_·¿ms + + mršg_v4_äag +; + +45  +¹e_pÜt_ršg_»ad”_v6_äag_·¿ms + + mršg_v6_äag +; + +46  +¹e_pÜt_sched_»ad”_·¿ms + + msched +; + +47  +¹e_pÜt_sourû_·¿ms + + msourû +; + +48 } + m·¿ms +; + +49 +ušt32_t + + mbur¡_size +; + +52  +šlše + * + +53 + $p–še_pÜt_š_·¿ms_cÚv”t +( +p–še_pÜt_š_·¿ms + * +p +) + +55  +p +-> +ty³ +) { + +56  +PIPELINE_PORT_IN_ETHDEV_READER +: + +57  (*è& +p +-> +·¿ms +. +‘hdev +; + +58  +PIPELINE_PORT_IN_RING_READER +: + +59  (*è& +p +-> +·¿ms +. +ršg +; + +60  +PIPELINE_PORT_IN_RING_MULTI_READER +: + +61  (*è& +p +-> +·¿ms +. +ršg_muÉi +; + +62  +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +63  (*è& +p +-> +·¿ms +. +ršg_v4_äag +; + +64  +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +65  (*è& +p +-> +·¿ms +. +ršg_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  +šlše +  +¹e_pÜt_š_Ýs + * + +76 + $p–še_pÜt_š_·¿ms_g‘_Ýs +( +p–še_pÜt_š_·¿ms + * +p +) + +78  +p +-> +ty³ +) { + +79  +PIPELINE_PORT_IN_ETHDEV_READER +: + +80  & +¹e_pÜt_‘hdev_»ad”_Ýs +; + +81  +PIPELINE_PORT_IN_RING_READER +: + +82  & +¹e_pÜt_ršg_»ad”_Ýs +; + +83  +PIPELINE_PORT_IN_RING_MULTI_READER +: + +84  & +¹e_pÜt_ršg_muÉi_»ad”_Ýs +; + +85  +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +86  & +¹e_pÜt_ršg_»ad”_v4_äag_Ýs +; + +87  +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +88  & +¹e_pÜt_ršg_»ad”_v6_äag_Ýs +; + +89  +PIPELINE_PORT_IN_SCHED_READER +: + +90  & +¹e_pÜt_sched_»ad”_Ýs +; + +91  +PIPELINE_PORT_IN_SOURCE +: + +92  & +¹e_pÜt_sourû_Ýs +; + +94  +NULL +; + +96 + } +} + +98 + ep–še_pÜt_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  + sp–še_pÜt_out_·¿ms + { + +112 +p–še_pÜt_out_ty³ + + mty³ +; + +114  +¹e_pÜt_‘hdev_wr™”_·¿ms + + m‘hdev +; + +115  +¹e_pÜt_‘hdev_wr™”_nodrÝ_·¿ms + + m‘hdev_nodrÝ +; + +116  +¹e_pÜt_ršg_wr™”_·¿ms + + mršg +; + +117  +¹e_pÜt_ršg_muÉi_wr™”_·¿ms + + mršg_muÉi +; + +118  +¹e_pÜt_ršg_wr™”_nodrÝ_·¿ms + + mršg_nodrÝ +; + +119  +¹e_pÜt_ršg_muÉi_wr™”_nodrÝ_·¿ms + + mršg_muÉi_nodrÝ +; + +120  +¹e_pÜt_ršg_wr™”_v4_¿s_·¿ms + + mršg_v4_¿s +; + +121  +¹e_pÜt_ršg_wr™”_v6_¿s_·¿ms + + mršg_v6_¿s +; + +122  +¹e_pÜt_sched_wr™”_·¿ms + + msched +; + +123  +¹e_pÜt_sšk_·¿ms + + msšk +; + +124 } + m·¿ms +; + +127  +šlše + * + +128 + $p–še_pÜt_out_·¿ms_cÚv”t +( +p–še_pÜt_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 +. +ršg +; + +137  +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +138  (*è& +p +-> +·¿ms +. +ršg_muÉi +; + +139  +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +140  (*è& +p +-> +·¿ms +. +ršg_nodrÝ +; + +141  +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +142  (*è& +p +-> +·¿ms +. +ršg_muÉi_nodrÝ +; + +143  +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +144  (*è& +p +-> +·¿ms +. +ršg_v4_¿s +; + +145  +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +146  (*è& +p +-> +·¿ms +. +ršg_v6_¿s +; + +147  +PIPELINE_PORT_OUT_SCHED_WRITER +: + +148  (*è& +p +-> +·¿ms +. +sched +; + +149  +PIPELINE_PORT_OUT_SINK +: + +150  (*è& +p +-> +·¿ms +. +sšk +; + +152  +NULL +; + +154 + } +} + +156  +šlše + * + +157 + $p–še_pÜt_out_·¿ms_g‘_Ýs +( +p–še_pÜt_out_·¿ms + * +p +) + +159  +p +-> +ty³ +) { + +160  +PIPELINE_PORT_OUT_ETHDEV_WRITER +: + +161  & +¹e_pÜt_‘hdev_wr™”_Ýs +; + +162  +PIPELINE_PORT_OUT_ETHDEV_WRITER_NODROP +: + +163  & +¹e_pÜt_‘hdev_wr™”_nodrÝ_Ýs +; + +164  +PIPELINE_PORT_OUT_RING_WRITER +: + +165  & +¹e_pÜt_ršg_wr™”_Ýs +; + +166  +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +167  & +¹e_pÜt_ršg_muÉi_wr™”_Ýs +; + +168  +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +169  & +¹e_pÜt_ršg_wr™”_nodrÝ_Ýs +; + +170  +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +171  & +¹e_pÜt_ršg_muÉi_wr™”_nodrÝ_Ýs +; + +172  +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +173  & +¹e_pÜt_ršg_wr™”_v4_¿s_Ýs +; + +174  +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +175  & +¹e_pÜt_ršg_wr™”_v6_¿s_Ýs +; + +176  +PIPELINE_PORT_OUT_SCHED_WRITER +: + +177  & +¹e_pÜt_sched_wr™”_Ýs +; + +178  +PIPELINE_PORT_OUT_SINK +: + +179  & +¹e_pÜt_sšk_Ýs +; + +181  +NULL +; + +183 + } +} + +185 #iâdeà +PIPELINE_NAME_SIZE + + +186  + #PIPELINE_NAME_SIZE + 64 + + ) + +189 #iâdeà +PIPELINE_MAX_PORT_IN + + +190  + #PIPELINE_MAX_PORT_IN + 64 + + ) + +193 #iâdeà +PIPELINE_MAX_PORT_OUT + + +194  + #PIPELINE_MAX_PORT_OUT + 64 + + ) + +197 #iâdeà +PIPELINE_MAX_TABLES + + +198  + #PIPELINE_MAX_TABLES + 64 + + ) + +201 #iâdeà +PIPELINE_MAX_MSGQ_IN + + +202  + #PIPELINE_MAX_MSGQ_IN + 64 + + ) + +205 #iâdeà +PIPELINE_MAX_MSGQ_OUT + + +206  + #PIPELINE_MAX_MSGQ_OUT + 64 + + ) + +209 #iâdeà +PIPELINE_MAX_ARGS + + +210  + #PIPELINE_MAX_ARGS + 64 + + ) + +213  + sp–še_·¿ms + { + +214  + mÇme +[ +PIPELINE_NAME_SIZE +]; + +216  +p–še_pÜt_š_·¿ms + + mpÜt_š +[ +PIPELINE_MAX_PORT_IN +]; + +217  +p–še_pÜt_out_·¿ms + + mpÜt_out +[ +PIPELINE_MAX_PORT_OUT +]; + +218  +¹e_ršg + * + mmsgq_š +[ +PIPELINE_MAX_MSGQ_IN +]; + +219  +¹e_ršg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +221 +ušt32_t + + mn_pÜts_š +; + +222 +ušt32_t + + mn_pÜts_out +; + +223 +ušt32_t + + mn_msgq +; + +225  + msock‘_id +; + +227 * + m¬gs_Çme +[ +PIPELINE_MAX_ARGS +]; + +228 * + m¬gs_v®ue +[ +PIPELINE_MAX_ARGS +]; + +229 +ušt32_t + + mn_¬gs +; + +231 +ušt32_t + + mlog_Ëv– +; + +238 * (* + tp–še_be_Ý_š™ +)( + tp–še_·¿ms + * + t·¿ms +, + +239 * + t¬g +); + +241 (* + tp–še_be_Ý_ä“ +)(* + tp–še +); + +243 (* + tp–še_be_Ý_run +)(* + tp–še +); + +245 (* + tp–še_be_Ý_tim” +)(* + tp–še +); + +247 (* + tp–še_be_Ý_Œack +)(* + tp–še +, + +248 + tušt32_t + + tpÜt_š +, + +249 + tušt32_t + * + tpÜt_out +); + +251  + sp–še_be_Ýs + { + +252 +p–še_be_Ý_š™ + +f_š™ +; + +253 +p–še_be_Ý_ä“ + +f_ä“ +; + +254 +p–še_be_Ý_run + +f_run +; + +255 +p–še_be_Ý_tim” + +f_tim” +; + +256 +p–še_be_Ý_Œack + +f_Œack +; + +260  + #PIPELINE_ARG_CHECK +( +exp +, +fmt +, ...) \ + +262 ià(!( +exp +)) { \ + +263 + `årštf +( +¡d”r +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +266 + } +} 0) + + ) + +268  + #PIPELINE_PARSE_ERR_INV_VAL +( +exp +, +£ùiÚ +, +’Œy +, +v® +) \ + +269 + `PIPELINE_ARG_CHECK +( +exp +, "Parseƒrror in section \"%s\":ƒntry \"%s\" " \ + +270 "ha šv®id v®u(\"%s\")", +£ùiÚ +, +’Œy +, +v® +) + + ) + +272  + #PIPELINE_PARSE_ERR_OUT_RNG +( +exp +, +£ùiÚ +, +’Œy +, +v® +) \ + +273 + `PIPELINE_ARG_CHECK +( +exp +, "Parseƒrror in section \"%s\":ƒntry \"%s\" " \ + +274 "v®ui ouˆoà¿ng(\"%s\")", +£ùiÚ +, +’Œy +, +v® +) + + ) + +276  + #PIPELINE_PARSE_ERR_DUPLICATE +( +exp +, +£ùiÚ +, +’Œy +) \ + +277 + `PIPELINE_ARG_CHECK +( +exp +, "Parseƒrror in section \"%s\": duplicated " \ + +278 "’Œy \"%s\"", +£ùiÚ +, +’Œy +) + + ) + +280  + #PIPELINE_PARSE_ERR_INV_ENT +( +exp +, +£ùiÚ +, +’Œy +) \ + +281 + `PIPELINE_ARG_CHECK +( +exp +, "Parseƒrror in section \"%s\": invalidƒntry " \ + +282 "\"%s\"", +£ùiÚ +, +’Œy +) + + ) + +284  + #PIPELINE_PARSE_ERR_MANDATORY +( +exp +, +£ùiÚ +, +’Œy +) \ + +285 + `PIPELINE_ARG_CHECK +( +exp +, "Parseƒrror in section \"%s\": mandatory " \ + +286 "’Œy \"%s\" i missšg", +£ùiÚ +, +’Œy +) + + ) + + @vnf_common/thread.c + +17  + ~<¹e_commÚ.h +> + +18  + ~<¹e_cyþes.h +> + +19  + ~<¹e_p–še.h +> + +21  + ~"p–še_commÚ_be.h +" + +22  + ~"­p.h +" + +23  + ~"th»ad.h +" + +25 #ià +APP_THREAD_HEADROOM_STATS_COLLECT + + +27  + #PIPELINE_RUN_REGULAR +( +th»ad +, +p–še +) \ + +29 +ušt64_t + +t0 + = + `¹e_rdtsc_´eci£ +(); \ + +30  +n_pkts + = + `¹e_p–še_run +( +p–še +-> +p +); \ + +32 ià( +n_pkts + == 0) { \ + +33 +ušt64_t + +t1 + = + `¹e_rdtsc_´eci£ +(); \ + +35 +th»ad +-> +h—droom_cyþes + +ð +t1 + - +t0 +; \ + +37 } 0) + + ) + +40  + #PIPELINE_RUN_CUSTOM +( +th»ad +, +d©a +) \ + +42 +ušt64_t + +t0 + = + `¹e_rdtsc_´eci£ +(); \ + +43  +n_pkts + = +d©a +-> + `f_run +(d©a-> +be +); \ + +45 ià( +n_pkts + == 0) { \ + +46 +ušt64_t + +t1 + = + `¹e_rdtsc_´eci£ +(); \ + +48 +th»ad +-> +h—droom_cyþes + +ð +t1 + - +t0 +; \ + +50 } 0) + + ) + +54  + #PIPELINE_RUN_REGULAR +( +th»ad +, +p–še +) \ + +55 + `¹e_p–še_run +( +p–še +-> +p +) + + ) + +57  + #PIPELINE_RUN_CUSTOM +( +th»ad +, +d©a +) \ + +58 +d©a +-> + `f_run +(d©a-> +be +) + + ) + +62  +šlše + * + +63 + $th»ad_msg_»cv +( +¹e_ršg + * +r +) + +65 * +msg +; + +66  +¡©us + = + `¹e_ršg_sc_dequeue +( +r +, & +msg +); + +68 ià( +¡©us + != 0) + +69  +NULL +; + +71  +msg +; + +72 + } +} + +74  +šlše +  + +75 + $th»ad_msg_£nd +( +¹e_ršg + * +r +, + +76 * +msg +) + +78  +¡©us +; + +81 +¡©us + = + `¹e_ršg_¥_’queue +( +r +, +msg +); + +82 }  +¡©us + =ð- +ENOBUFS +); + +83 + } +} + +86 + $th»ad_p–še_’abË +( +­p_th»ad_d©a + * +t +, + +87  +th»ad_p–še_’abË_msg_»q + * +»q +) + +89  +­p_th»ad_p–še_d©a + * +p +; + +91 ià( +»q +-> +f_run + =ð +NULL +) { + +92 ià( +t +-> +n_»guÏr + >ð +APP_MAX_THREAD_PIPELINES +) + +95 ià( +t +-> +n_cu¡om + >ð +APP_MAX_THREAD_PIPELINES +) + +99 +p + = ( +»q +-> +f_run + =ð +NULL +) ? + +100 & +t +-> +»guÏr +[t-> +n_»guÏr +] : + +101 & +t +-> +cu¡om +[t-> +n_cu¡om +]; + +103 +p +-> +p–še_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 +-> +d—dlše + = 0; + +110 ià( +»q +-> +f_run + =ð +NULL +) + +111 +t +-> +n_»guÏr +++; + +113 +t +-> +n_cu¡om +++; + +116 + } +} + +119 + $th»ad_p–še_di§bË +( +­p_th»ad_d©a + * +t +, + +120  +th»ad_p–še_di§bË_msg_»q + * +»q +) + +122 +ušt32_t + +n_»guÏr + = + `RTE_MIN +( +t +->n_»guÏr, + `RTE_DIM +Ñ-> +»guÏr +)); + +123 +ušt32_t + +n_cu¡om + = + `RTE_MIN +( +t +->n_cu¡om, + `RTE_DIM +Ñ-> +cu¡om +)); + +124 +ušt32_t + +i +; + +127  +i + = 0; i < +n_»guÏr +; i++) { + +128 ià( +t +-> +»guÏr +[ +i +]. +p–še_id + !ð +»q +->pipeline_id) + +131 ià( +i + < +n_»guÏr + - 1) + +132 + `memýy +(& +t +-> +»guÏr +[ +i +], + +133 & +t +-> +»guÏr +[ +i ++1], + +134 ( +n_»guÏr + - 1 - +i +è* ( +­p_th»ad_p–še_d©a +)); + +136 +n_»guÏr +--; + +137 +t +-> +n_»guÏr + =‚_regular; + +143  +i + = 0; i < +n_cu¡om +; i++) { + +144 ià( +t +-> +cu¡om +[ +i +]. +p–še_id + !ð +»q +->pipeline_id) + +147 ià( +i + < +n_cu¡om + - 1) + +148 + `memýy +(& +t +-> +cu¡om +[ +i +], + +149 & +t +-> +cu¡om +[ +i ++1], + +150 ( +n_cu¡om + - 1 - +i +è* ( +­p_th»ad_p–še_d©a +)); + +152 +n_cu¡om +--; + +153 +t +-> +n_cu¡om + =‚_custom; + +160 + } +} + +163 + $th»ad_msg_»q_hªdË +( +­p_th»ad_d©a + * +t +) + +165 * +msg_±r +; + +166  +th»ad_msg_»q + * +»q +; + +167  +th»ad_msg_r¥ + * +r¥ +; + +169 +msg_±r + = + `th»ad_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 + = + `th»ad_p–še_’abË +( +t +, + +177 ( +th»ad_p–še_’abË_msg_»q + *è +»q +); + +178 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +182  +THREAD_MSG_REQ_PIPELINE_DISABLE +: { + +183 +r¥ +-> +¡©us + = + `th»ad_p–še_di§bË +( +t +, + +184 ( +th»ad_p–še_di§bË_msg_»q + *è +»q +); + +185 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +189  +THREAD_MSG_REQ_HEADROOM_READ +: { + +190  +th»ad_h—droom_»ad_msg_r¥ + * +r¥ + = + +191 ( +th»ad_h—droom_»ad_msg_r¥ + *) + +192 +»q +; + +194 +r¥ +-> +h—droom_¿tio + = +t +->headroom_ratio; + +195 +r¥ +-> +¡©us + = 0; + +196 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +204 + } +} + +207 + $th»ad_h—droom_upd©e +( +­p_th»ad_d©a + * +t +, +ušt64_t + +time +) + +209 +ušt64_t + +time_diff + = +time + - +t +-> +h—droom_time +; + +211 +t +-> +h—droom_¿tio + = + +212 ((è +t +-> +h—droom_cyþes +è/ ((è +time_diff +); + +214 +t +-> +h—droom_cyþes + = 0; + +215 +t +-> +h—droom_time + = + `¹e_rdtsc_´eci£ +(); + +216 + } +} + +219 + $­p_th»ad +(* +¬g +) + +221  +­p_·¿ms + * +­p + = (­p_·¿m *è +¬g +; + +222 +ušt32_t + +cÜe_id + = + `¹e_lcÜe_id +(), +i +, +j +; + +223  +­p_th»ad_d©a + * +t + = & +­p +-> +th»ad_d©a +[ +cÜe_id +]; + +225  +i + = 0; ; i++) { + +226 +ušt32_t + +n_»guÏr + = + `RTE_MIN +( +t +->n_»guÏr, + `RTE_DIM +Ñ-> +»guÏr +)); + +227 +ušt32_t + +n_cu¡om + = + `RTE_MIN +( +t +->n_cu¡om, + `RTE_DIM +Ñ-> +cu¡om +)); + +230  +j + = 0; j < +n_»guÏr +; j++) { + +231  +­p_th»ad_p–še_d©a + * +d©a + = & +t +-> +»guÏr +[ +j +]; + +232  +p–še + * +p + = +d©a +-> +be +; + +234 + `PIPELINE_RUN_REGULAR +( +t +, +p +); + +238  +j + = 0; j < +n_cu¡om +; j++) { + +239  +­p_th»ad_p–še_d©a + * +d©a + = & +t +-> +cu¡om +[ +j +]; + +241 + `PIPELINE_RUN_CUSTOM +( +t +, +d©a +); + +245 ià(( +i + & 0xF) == 0) { + +246 +ušt64_t + +time + = + `¹e_g‘_tsc_cyþes +(); + +247 +ušt64_t + +t_d—dlše + = +UINT64_MAX +; + +249 ià( +time + < +t +-> +d—dlše +) + +253  +j + = 0; j < +n_»guÏr +; j++) { + +254  +­p_th»ad_p–še_d©a + * +d©a + = + +255 & +t +-> +»guÏr +[ +j +]; + +256 +ušt64_t + +p_d—dlše + = +d©a +-> +d—dlše +; + +258 ià( +p_d—dlše + <ð +time +) { + +259 +d©a +-> + `f_tim” +(d©a-> +be +); + +260 +p_d—dlše + = +time + + +d©a +-> +tim”_³riod +; + +261 +d©a +-> +d—dlše + = +p_d—dlše +; + +264 ià( +p_d—dlše + < +t_d—dlše +) + +265 +t_d—dlše + = +p_d—dlše +; + +269  +j + = 0; j < +n_cu¡om +; j++) { + +270  +­p_th»ad_p–še_d©a + * +d©a + = + +271 & +t +-> +cu¡om +[ +j +]; + +272 +ušt64_t + +p_d—dlše + = +d©a +-> +d—dlše +; + +274 ià( +p_d—dlše + <ð +time +) { + +275 +d©a +-> + `f_tim” +(d©a-> +be +); + +276 +p_d—dlše + = +time + + +d©a +-> +tim”_³riod +; + +277 +d©a +-> +d—dlše + = +p_d—dlše +; + +280 ià( +p_d—dlše + < +t_d—dlše +) + +281 +t_d—dlše + = +p_d—dlše +; + +286 +ušt64_t + +d—dlše + = +t +-> +th»ad_»q_d—dlše +; + +288 ià( +d—dlše + <ð +time +) { + +289 + `th»ad_msg_»q_hªdË +( +t +); + +290 + `th»ad_h—droom_upd©e +( +t +, +time +); + +291 +d—dlše + = +time + + +t +-> +tim”_³riod +; + +292 +t +-> +th»ad_»q_d—dlše + = +d—dlše +; + +295 ià( +d—dlše + < +t_d—dlše +) + +296 +t_d—dlše + = +d—dlše +; + +300 +t +-> +d—dlše + = +t_d—dlše +; + +305 + } +} + + @vnf_common/thread.h + +17 #iâdeà +THREAD_H_ + + +18  + #THREAD_H_ + + + ) + +20  + ~"­p.h +" + +21  + ~"p–še_be.h +" + +23 + eth»ad_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  + sth»ad_msg_»q + { + +31 +th»ad_msg_»q_ty³ + + mty³ +; + +34  + sth»ad_msg_r¥ + { + +35  + m¡©us +; + +41  + sth»ad_p–še_’abË_msg_»q + { + +42 +th»ad_msg_»q_ty³ + + mty³ +; + +44 +ušt32_t + + mp–še_id +; + +45 * + mbe +; + +46 +p–še_be_Ý_run + + mf_run +; + +47 +p–še_be_Ý_tim” + + mf_tim” +; + +48 +ušt64_t + + mtim”_³riod +; + +51  + sth»ad_p–še_’abË_msg_r¥ + { + +52  + m¡©us +; + +58  + sth»ad_p–še_di§bË_msg_»q + { + +59 +th»ad_msg_»q_ty³ + + mty³ +; + +61 +ušt32_t + + mp–še_id +; + +64  + sth»ad_p–še_di§bË_msg_r¥ + { + +65  + m¡©us +; + +71  + sth»ad_h—droom_»ad_msg_»q + { + +72 +th»ad_msg_»q_ty³ + + mty³ +; + +75  + sth»ad_h—droom_»ad_msg_r¥ + { + +76  + m¡©us +; + +78  + mh—droom_¿tio +; + + @vnf_common/thread_fe.c + +17  + ~<¹e_commÚ.h +> + +18  + ~<¹e_ršg.h +> + +19  + ~<¹e_m®loc.h +> + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +29  + ~"th»ad.h +" + +30  + ~"th»ad_ã.h +" + +31  + ~"p–še.h +" + +32  + ~"p–še_commÚ_ã.h +" + +33  + ~"­p.h +" + +35  +šlše + * + +36 + $th»ad_msg_£nd_»cv +( +­p_·¿ms + * +­p +, + +37 +ušt32_t + +sock‘_id +, ušt32_ˆ +cÜe_id +, ušt32_ˆ +ht_id +, + +38 * +msg +, + +39 +ušt32_t + +timeout_ms +) + +41  +¹e_ršg + * +r_»q + = + `­p_th»ad_msgq_š_g‘ +( +­p +, + +42 +sock‘_id +, +cÜe_id +, +ht_id +); + +43 if( +r_»q + =ð +NULL +) + +44  +NULL +; + +45  +¹e_ršg + * +r_r¥ + = + `­p_th»ad_msgq_out_g‘ +( +­p +, + +46 +sock‘_id +, +cÜe_id +, +ht_id +); + +47 if( +r_r¥ + =ð +NULL +) + +48  +NULL +; + +49 +ušt64_t + +hz + = + `¹e_g‘_tsc_hz +(); + +50 * +msg_»cv +; + +51 +ušt64_t + +d—dlše +; + +52  +¡©us +; + +56 +¡©us + = + `¹e_ršg_¥_’queue +( +r_»q +, (*è +msg +); + +57 }  +¡©us + =ð- +ENOBUFS +); + +60 +d—dlše + = ( +timeout_ms +) ? + +61 ( + `¹e_rdtsc +(è+ (( +hz + * +timeout_ms +) / 1000)) : + +62 +UINT64_MAX +; + +65 ià( + `¹e_rdtsc +(è> +d—dlše +) + +66  +NULL +; + +68 +¡©us + = + `¹e_ršg_sc_dequeue +( +r_r¥ +, & +msg_»cv +); + +69 }  +¡©us + != 0); + +71  +msg_»cv +; + +72 + } +} + +75 + $­p_p–še_’abË +( +­p_·¿ms + * +­p +, + +76 +ušt32_t + +sock‘_id +, + +77 +ušt32_t + +cÜe_id +, + +78 +ušt32_t + +hy³r_th_id +, + +79 +ušt32_t + +p–še_id +) + +81  +th»ad_p–še_’abË_msg_»q + * +»q +; + +82  +th»ad_p–še_’abË_msg_r¥ + * +r¥ +; + +83  +th»ad_id +; + +84  +­p_p–še_d©a + * +p +; + +85  +­p_p–še_·¿ms + * +p_·¿ms +; + +86  +p–še_ty³ + * +p_ty³ +; + +87  +¡©us +; + +89 ià( +­p + =ð +NULL +) + +92 +th»ad_id + = + `ýu_cÜe_m­_g‘_lcÜe_id +( +­p +-> +cÜe_m­ +, + +93 +sock‘_id +, + +94 +cÜe_id +, + +95 +hy³r_th_id +); + +97 ià(( +th»ad_id + < 0è|| ! + `­p_cÜe_is_’abËd +( +­p +,hread_id)) + +100 ià( + `­p_p–še_d©a +( +­p +, +p–še_id +è=ð +NULL +) + +103 +p + = & +­p +-> +p–še_d©a +[ +p–še_id +]; + +104 +p_·¿ms + = & +­p +-> +p–še_·¿ms +[ +p–še_id +]; + +105 +p_ty³ + = + `­p_p–še_ty³_fšd +( +­p +, +p_·¿ms +-> +ty³ +); + +106 ià( +p_ty³ + =ð +NULL +) + +109 ià( +p +-> +’abËd + == 1) + +112 +»q + = + `­p_msg_®loc +( +­p +); + +113 ià( +»q + =ð +NULL +) + +116 +»q +-> +ty³ + = +THREAD_MSG_REQ_PIPELINE_ENABLE +; + +117 +»q +-> +p–še_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¥ + = + `th»ad_msg_£nd_»cv +( +­p +, + +124 +sock‘_id +, +cÜe_id +, +hy³r_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 +-> +’abËd + = 1; + +136 + } +} + +139 + $­p_p–še_di§bË +( +­p_·¿ms + * +­p +, + +140 +ušt32_t + +sock‘_id +, + +141 +ušt32_t + +cÜe_id +, + +142 +ušt32_t + +hy³r_th_id +, + +143 +ušt32_t + +p–še_id +) + +145  +th»ad_p–še_di§bË_msg_»q + * +»q +; + +146  +th»ad_p–še_di§bË_msg_r¥ + * +r¥ +; + +147  +th»ad_id +; + +148  +­p_p–še_d©a + * +p +; + +149  +¡©us +; + +151 ià( +­p + =ð +NULL +) + +154 +th»ad_id + = + `ýu_cÜe_m­_g‘_lcÜe_id +( +­p +-> +cÜe_m­ +, + +155 +sock‘_id +, + +156 +cÜe_id +, + +157 +hy³r_th_id +); + +159 ià(( +th»ad_id + < 0è|| ! + `­p_cÜe_is_’abËd +( +­p +,hread_id)) + +162 ià( + `­p_p–še_d©a +( +­p +, +p–še_id +è=ð +NULL +) + +165 +p + = & +­p +-> +p–še_d©a +[ +p–še_id +]; + +167 ià( +p +-> +’abËd + == 0) + +170 +»q + = + `­p_msg_®loc +( +­p +); + +171 ià( +»q + =ð +NULL +) + +174 +»q +-> +ty³ + = +THREAD_MSG_REQ_PIPELINE_DISABLE +; + +175 +»q +-> +p–še_id + =…ipeline_id; + +177 +r¥ + = + `th»ad_msg_£nd_»cv +( +­p +, + +178 +sock‘_id +, +cÜe_id +, +hy³r_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 +-> +’abËd + = 0; + +191 + } +} + +194 + $­p_th»ad_h—droom +( +­p_·¿ms + * +­p +, + +195 +ušt32_t + +sock‘_id +, + +196 +ušt32_t + +cÜe_id +, + +197 +ušt32_t + +hy³r_th_id +) + +199  +th»ad_h—droom_»ad_msg_»q + * +»q +; + +200  +th»ad_h—droom_»ad_msg_r¥ + * +r¥ +; + +201  +th»ad_id +; + +202  +¡©us +; + +204 ià( +­p + =ð +NULL +) + +207 +th»ad_id + = + `ýu_cÜe_m­_g‘_lcÜe_id +( +­p +-> +cÜe_m­ +, + +208 +sock‘_id +, + +209 +cÜe_id +, + +210 +hy³r_th_id +); + +212 ià(( +th»ad_id + < 0è|| ! + `­p_cÜe_is_’abËd +( +­p +,hread_id)) + +215 +»q + = + `­p_msg_®loc +( +­p +); + +216 ià( +»q + =ð +NULL +) + +219 +»q +-> +ty³ + = +THREAD_MSG_REQ_HEADROOM_READ +; + +221 +r¥ + = + `th»ad_msg_£nd_»cv +( +­p +, + +222 +sock‘_id +, +cÜe_id +, +hy³r_th_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +224 ià( +r¥ + =ð +NULL +) + +227 +¡©us + = +r¥ +->status; + +229 ià( +¡©us + != 0) + +232 + `´štf +("%.3f%%\n", +r¥ +-> +h—droom_¿tio + * 100); + +235 + `­p_msg_ä“ +( +­p +, +r¥ +); + +238 + } +} + +244  + scmd_p–še_’abË_»suÉ + { + +245 +cmdlše_fixed_¡ršg_t + + mt_¡ršg +; + +246 +cmdlše_fixed_¡ršg_t + + mt_id_¡ršg +; + +247 +cmdlše_fixed_¡ršg_t + + mp–še_¡ršg +; + +248 +ušt32_t + + mp–še_id +; + +249 +cmdlše_fixed_¡ršg_t + + m’abË_¡ršg +; + +253 + $cmd_p–še_’abË_·r£d +( + +254 * +·r£d_»suÉ +, + +255 +__¹e_unu£d +  +cmdlše + * +þ +, + +256 * +d©a +) + +258  +cmd_p–še_’abË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +259  +­p_·¿ms + * +­p + = +d©a +; + +260  +¡©us +; + +261 +ušt32_t + +cÜe_id +, +sock‘_id +, +hy³r_th_id +; + +263 ià( + `·r£_p–še_cÜe +(& +sock‘_id +, + +264 & +cÜe_id +, + +265 & +hy³r_th_id +, + +266 +·¿ms +-> +t_id_¡ršg +) != 0) { + +267 + `´štf +("Command failed\n"); + +271 +¡©us + = + `­p_p–še_’abË +( +­p +, + +272 +sock‘_id +, + +273 +cÜe_id +, + +274 +hy³r_th_id +, + +275 +·¿ms +-> +p–še_id +); + +277 ià( +¡©us + != 0) + +278 + `´štf +("Command failed\n"); + +279 + } +} + +281 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_’abË_t_¡ršg + = + +282 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_’abË_»suÉ +, +t_¡ršg +, "t"); + +284 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_’abË_t_id_¡ršg + = + +285 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_’abË_»suÉ +, +t_id_¡ršg +, + +286 +NULL +); + +288 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_’abË_p–še_¡ršg + = + +289 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_’abË_»suÉ +, +p–še_¡ršg +, + +292 +cmdlše_·r£_tok’_num_t + + gcmd_p–še_’abË_p–še_id + = + +293 +TOKEN_NUM_INITIALIZER +( +cmd_p–še_’abË_»suÉ +, +p–še_id +, + +294 +UINT32 +); + +296 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_’abË_’abË_¡ršg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_’abË_»suÉ +, +’abË_¡ršg +, + +300 +cmdlše_·r£_š¡_t + + gcmd_p–še_’abË + = { + +301 . +f + = +cmd_p–še_’abË_·r£d +, + +302 . + gd©a + = +NULL +, + +303 . + gh–p_¡r + = "Enable…ipeline on specified core", + +304 . + gtok’s + = { + +305 (*)& +cmd_p–še_’abË_t_¡ršg +, + +306 (*)& +cmd_p–še_’abË_t_id_¡ršg +, + +307 (*)& +cmd_p–še_’abË_p–še_¡ršg +, + +308 (*)& +cmd_p–še_’abË_p–še_id +, + +309 (*)& +cmd_p–še_’abË_’abË_¡ršg +, + +310 +NULL +, + +318  + scmd_p–še_di§bË_»suÉ + { + +319 +cmdlše_fixed_¡ršg_t + + mt_¡ršg +; + +320 +cmdlše_fixed_¡ršg_t + + mt_id_¡ršg +; + +321 +cmdlše_fixed_¡ršg_t + + mp–še_¡ršg +; + +322 +ušt32_t + + mp–še_id +; + +323 +cmdlše_fixed_¡ršg_t + + mdi§bË_¡ršg +; + +327 + $cmd_p–še_di§bË_·r£d +( + +328 * +·r£d_»suÉ +, + +329 +__¹e_unu£d +  +cmdlše + * +þ +, + +330 * +d©a +) + +332  +cmd_p–še_di§bË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +333  +­p_·¿ms + * +­p + = +d©a +; + +334  +¡©us +; + +335 +ušt32_t + +cÜe_id +, +sock‘_id +, +hy³r_th_id +; + +337 ià( + `·r£_p–še_cÜe +(& +sock‘_id +, + +338 & +cÜe_id +, + +339 & +hy³r_th_id +, + +340 +·¿ms +-> +t_id_¡ršg +) != 0) { + +341 + `´štf +("Command failed\n"); + +345 +¡©us + = + `­p_p–še_di§bË +( +­p +, + +346 +sock‘_id +, + +347 +cÜe_id +, + +348 +hy³r_th_id +, + +349 +·¿ms +-> +p–še_id +); + +351 ià( +¡©us + != 0) + +352 + `´štf +("Command failed\n"); + +353 + } +} + +355 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_di§bË_t_¡ršg + = + +356 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_di§bË_»suÉ +, +t_¡ršg +, "t"); + +358 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_di§bË_t_id_¡ršg + = + +359 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_di§bË_»suÉ +, +t_id_¡ršg +, + +360 +NULL +); + +362 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_di§bË_p–še_¡ršg + = + +363 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_di§bË_»suÉ +, + +364 +p–še_¡ršg +, "pipeline"); + +366 +cmdlše_·r£_tok’_num_t + + gcmd_p–še_di§bË_p–še_id + = + +367 +TOKEN_NUM_INITIALIZER +( +cmd_p–še_di§bË_»suÉ +, +p–še_id +, + +368 +UINT32 +); + +370 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_p–še_di§bË_di§bË_¡ršg + = + +371 +TOKEN_STRING_INITIALIZER +( +cmd_p–še_di§bË_»suÉ +, +di§bË_¡ršg +, + +374 +cmdlše_·r£_š¡_t + + gcmd_p–še_di§bË + = { + +375 . +f + = +cmd_p–še_di§bË_·r£d +, + +376 . + gd©a + = +NULL +, + +377 . + gh–p_¡r + = "Disable…ipeline on specified core", + +378 . + gtok’s + = { + +379 (*)& +cmd_p–še_di§bË_t_¡ršg +, + +380 (*)& +cmd_p–še_di§bË_t_id_¡ršg +, + +381 (*)& +cmd_p–še_di§bË_p–še_¡ršg +, + +382 (*)& +cmd_p–še_di§bË_p–še_id +, + +383 (*)& +cmd_p–še_di§bË_di§bË_¡ršg +, + +384 +NULL +, + +393  + scmd_th»ad_h—droom_»suÉ + { + +394 +cmdlše_fixed_¡ršg_t + + mt_¡ršg +; + +395 +cmdlše_fixed_¡ršg_t + + mt_id_¡ršg +; + +396 +cmdlše_fixed_¡ršg_t + + mh—droom_¡ršg +; + +400 + $cmd_th»ad_h—droom_·r£d +( + +401 * +·r£d_»suÉ +, + +402 +__¹e_unu£d +  +cmdlše + * +þ +, + +403 * +d©a +) + +405  +cmd_th»ad_h—droom_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +406  +­p_·¿ms + * +­p + = +d©a +; + +407  +¡©us +; + +408 +ušt32_t + +cÜe_id +, +sock‘_id +, +hy³r_th_id +; + +410 ià( + `·r£_p–še_cÜe +(& +sock‘_id +, + +411 & +cÜe_id +, + +412 & +hy³r_th_id +, + +413 +·¿ms +-> +t_id_¡ršg +) != 0) { + +414 + `´štf +("Command failed\n"); + +418 +¡©us + = + `­p_th»ad_h—droom +( +­p +, + +419 +sock‘_id +, + +420 +cÜe_id +, + +421 +hy³r_th_id +); + +423 ià( +¡©us + != 0) + +424 + `´štf +("Command failed\n"); + +425 + } +} + +427 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_th»ad_h—droom_t_¡ršg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_h—droom_»suÉ +, + +429 +t_¡ršg +, "t"); + +431 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_th»ad_h—droom_t_id_¡ršg + = + +432 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_h—droom_»suÉ +, + +433 +t_id_¡ršg +, +NULL +); + +435 +cmdlše_·r£_tok’_¡ršg_t + + gcmd_th»ad_h—droom_h—droom_¡ršg + = + +436 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_h—droom_»suÉ +, + +437 +h—droom_¡ršg +, "headroom"); + +439 +cmdlše_·r£_š¡_t + + gcmd_th»ad_h—droom + = { + +440 . +f + = +cmd_th»ad_h—droom_·r£d +, + +441 . + gd©a + = +NULL +, + +442 . + gh–p_¡r + = "Displayhread headroom", + +443 . + gtok’s + = { + +444 (*)& +cmd_th»ad_h—droom_t_¡ršg +, + +445 (*)& +cmd_th»ad_h—droom_t_id_¡ršg +, + +446 (*)& +cmd_th»ad_h—droom_h—droom_¡ršg +, + +447 +NULL +, + +452  +cmdlše_·r£_ùx_t + + gth»ad_cmds +[] = { + +453 ( +cmdlše_·r£_š¡_t + *è& +cmd_p–še_’abË +, + +454 ( +cmdlše_·r£_š¡_t + *è& +cmd_p–še_di§bË +, + +455 ( +cmdlše_·r£_š¡_t + *è& +cmd_th»ad_h—droom +, + +456 +NULL +, + +460 + $­p_p–še_th»ad_cmd_push +( +­p_·¿ms + * +­p +) + +462 +ušt32_t + +n_cmds +, +i +; + +465 +n_cmds + = + `RTE_DIM +( +th»ad_cmds +) - 1; + +466 ià( +n_cmds + > +APP_MAX_CMDS + - +­p +->n_cmds) + +467  - +ENOMEM +; + +470 + `memýy +(& +­p +-> +cmds +[­p-> +n_cmds +], +th»ad_cmds +, + +471 +n_cmds + * ( +cmdlše_·r£_ùx_t +)); + +473  +i + = 0; i < +n_cmds +; i++) + +474 +­p +-> +cmds +[­p-> +n_cmds + + +i +]-> +d©a + =‡pp; + +476 +­p +-> +n_cmds + +=‚_cmds; + +477 +­p +-> +cmds +[­p-> +n_cmds +] = +NULL +; + +480 + } +} + + @vnf_common/thread_fe.h + +17 #iâdeà +THREAD_FE_H_ + + +18  + #THREAD_FE_H_ + + + ) + +20  +šlše +  +¹e_ršg + * + +21 + $­p_th»ad_msgq_š_g‘ +( +­p_·¿ms + * +­p +, + +22 +ušt32_t + +sock‘_id +, ušt32_ˆ +cÜe_id +, ušt32_ˆ +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 +cÜe_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  +šlše +  +¹e_ršg + * + +41 + $­p_th»ad_msgq_out_g‘ +( +­p_·¿ms + * +­p +, + +42 +ušt32_t + +sock‘_id +, ušt32_ˆ +cÜe_id +, ušt32_ˆ +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 +cÜe_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_p–še_th»ad_cmd_push +( +­p_·¿ms + * +­p +); + +65 +­p_p–še_’abË +( +­p_·¿ms + * +­p +, + +66 +ušt32_t + +cÜe_id +, + +67 +ušt32_t + +sock‘_id +, + +68 +ušt32_t + +hy³r_th_id +, + +69 +ušt32_t + +p–še_id +); + +72 +­p_p–še_di§bË +( +­p_·¿ms + * +­p +, + +73 +ušt32_t + +cÜe_id +, + +74 +ušt32_t + +sock‘_id +, + +75 +ušt32_t + +hy³r_th_id +, + +76 +ušt32_t + +p–še_id +); + +79 +­p_th»ad_h—droom +( +­p_·¿ms + * +­p +, + +80 +ušt32_t + +cÜe_id +, + +81 +ušt32_t + +sock‘_id +, + +82 +ušt32_t + +hy³r_th_id +); + + @vnf_common/vnf_common.c + +17  + ~<¡dšt.h +> + +18  + ~<¡dio.h +> + +19  + ~"vnf_commÚ.h +" + +20  + ~"p–še_¬picmp_be.h +" + +21 #iâdeà +VNF_ACL + + +22  + ~"lib_¬p.h +" + +25 +ušt8_t + + gš_pÜt_dœ_a +[ +PIPELINE_MAX_PORT_IN +]; + +26 +ušt8_t + + g´v_to_pub_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +27 +ušt8_t + + gpub_to_´v_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +28 +ušt8_t + + g´v_š_pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +29 +ušt8_t + + g´v_que_pÜt_šdex +[ +PIPELINE_MAX_PORT_IN +]; + +30 +ušt8_t + + gš_pÜt_eg»ss_´v +[ +PIPELINE_MAX_PORT_IN +]; + +32 +ušt8_t + + $g‘_š_pÜt_dœ +( +ušt8_t + +š_pÜt_id +) + +34  +š_pÜt_dœ_a +[ +š_pÜt_id +]; + +35 + } +} + +37 +ušt8_t + + $is_phy_pÜt_´iv‹ +( +ušt16_t + +phy_pÜt +) + +39  +š_pÜt_dœ_a +[ +phy_pÜt +]; + +40 + } +} + +42 +ušt8_t + + $is_pÜt_šdex_´iv‹ +( +ušt16_t + +phy_pÜt +) + +44  +š_pÜt_eg»ss_´v +[ +phy_pÜt +]; + +45 + } +} + +47 +ušt32_t + + $g‘_´v_to_pub_pÜt +( +ušt32_t + * +_addr +, +ušt8_t + +ty³ +) + +49 +ušt32_t + +de¡_if + = 0xff; + +51  +ty³ +) { + +54 +ušt32_t + +nh +; + +55 +nh + = + `g‘_nh +( +_addr +[0], & +de¡_if +); + +57 ià( +nh +) + +58  +de¡_if +; + +64 +ušt8_t + +nhv6 +[16]; + +65 + `g‘_nh_v6 +(( +ušt8_t + *) +_addr +, & +de¡_if +, & +nhv6 +[0]); + +66 ià( +de¡_if + != 0xff) + +67  +de¡_if +; + +73 + } +} + +75 +ušt32_t + + $g‘_pub_to_´v_pÜt +( +ušt32_t + * +_addr +, +ušt8_t + +ty³ +) + +77 +ušt32_t + +de¡_if + = 0xff; + +79  +ty³ +) { + +82 +ušt32_t + +nh +; + +83 +nh + = + `g‘_nh +( +_addr +[0], & +de¡_if +); + +85 ià( +nh +) + +86  +de¡_if +; + +92 +ušt8_t + +nhv6 +[16]; + +93 + `g‘_nh_v6 +(( +ušt8_t + *) +_addr +, & +de¡_if +, & +nhv6 +[0]); + +94 ià( +de¡_if + != 0xff) + +95  +de¡_if +; + +101 + } +} + +103  + $show_pÜts_šfo +() + +105 + `´štf +("\nš_pÜt_dœ_a: %d %d %d %d %d", +š_pÜt_dœ_a +[0], + +106 +š_pÜt_dœ_a +[1], in_port_dir_a[2], in_port_dir_a[3], + +107 +š_pÜt_dœ_a +[4]); + +109 +ušt8_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%dƒÁr› š PÜt MAC Li¡\n", +lšk_hw_addr_¬¿y_idx +); + +124  +j + = 0; j < +lšk_hw_addr_¬¿y_idx +; j++) { + +125  +‘h”_addr + * +lšk_hw_addr + = + `g‘_lšk_hw_addr +( +j +); + +127  +i + = 0; i < 6; i++) + +128 + `´štf +(" %02x ", (( +‘h”_addr + *) +lšk_hw_addr +)-> +addr_by‹s +[ +i +]); + +129 + `´štf +("\n"); + +131 + } +} + +133  + $Œim +(* +šput +) + +135  +i +, +j + = 0; + +136  +Ën + = + `¡¾’ +( +šput +); + +137  +»suÉ +[ +Ën + + 1]; + +139 + `mem£t +( +»suÉ +, 0, (result)); + +140  +i + = 0; +šput +[i] != '\0'; i++) { + +141 ià(! + `is¥aû +( +šput +[ +i +])) + +142 +»suÉ +[ +j +++] = +šput +[ +i +]; + +145 + `¡ºýy +( +šput +, +»suÉ +, +Ën +); + +146 + } +} + + @vnf_common/vnf_common.h + +17 #iâdeà +__INCLUDE_VNF_COMMON_H__ + + +18  + #__INCLUDE_VNF_COMMON_H__ + + + ) + +20  + ~<¹e_p–še.h +> + +21  + ~<¹e_‘h”.h +> + +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 #iâdeà +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_pÜts_šfo +(); + +60  +Œim +(* +šput +); + +61 +ušt8_t + +g‘_š_pÜt_dœ +(ušt8_ˆ +š_pÜt_id +); + +62 +ušt8_t + +is_phy_pÜt_´iv‹ +( +ušt16_t + +phy_pÜt +); + +63 +ušt32_t + +g‘_´v_to_pub_pÜt +(ušt32_ˆ* +_addr +, +ušt8_t + +ty³ +); + +64 +ušt32_t + +g‘_pub_to_´v_pÜt +(ušt32_ˆ* +_addr +, +ušt8_t + +ty³ +); + +66  +šlše +  + $drÝ_pkt +( +ušt32_t + +pkt_num +, +ušt64_t + * +mask +) + +68 * +mask + ^ð1LLU << +pkt_num +; + +69 + } +} + +71 +ušt8_t + +š_pÜt_dœ_a +[ +PIPELINE_MAX_PORT_IN +]; + +72 +ušt8_t + +´v_to_pub_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +73 +ušt8_t + +pub_to_´v_m­ +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ušt8_t + +´v_š_pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +76 +ušt32_t + +lšk_hw_addr_¬¿y_idx +; + +78  + s¹e_pÜt_š + { + +80  +¹e_pÜt_š_Ýs + + mÝs +; + +81 +¹e_p–še_pÜt_š_aùiÚ_hªdËr + + mf_aùiÚ +; + +82 * + m¬g_ah +; + +83 +ušt32_t + + mbur¡_size +; + +86 +ušt32_t + + mbË_id +; + +89 * + mh_pÜt +; + +92  +¹e_pÜt_š + * + mÃxt +; + +95 +ušt64_t + + mn_pkts_drݳd_by_ah +; + +98  + s¹e_pÜt_out + { + +100  +¹e_pÜt_out_Ýs + + mÝs +; + +101 +¹e_p–še_pÜt_out_aùiÚ_hªdËr + + mf_aùiÚ +; + +102 * + m¬g_ah +; + +105 * + mh_pÜt +; + +108 +ušt64_t + + mn_pkts_drݳd_by_ah +; + +111  + s¹e_bË + { + +113  +¹e_bË_Ýs + + mÝs +; + +114 +¹e_p–še_bË_aùiÚ_hªdËr_h™ + + mf_aùiÚ_h™ +; + +115 +¹e_p–še_bË_aùiÚ_hªdËr_miss + + mf_aùiÚ_miss +; + +116 * + m¬g_ah +; + +117  +¹e_p–še_bË_’Œy + * + mdeçuÉ_’Œy +; + +118 +ušt32_t + + m’Œy_size +; + +120 +ušt32_t + + mbË_Ãxt_id +; + +121 +ušt32_t + + mbË_Ãxt_id_v®id +; + +124 * + mh_bË +; + +127 +ušt64_t + + mn_pkts_drݳd_by_lkp_h™_ah +; + +128 +ušt64_t + + mn_pkts_drݳd_by_lkp_miss_ah +; + +129 +ušt64_t + + mn_pkts_drݳd_lkp_h™ +; + +130 +ušt64_t + + mn_pkts_drݳd_lkp_miss +; + +134  + s¹e_p–še + { + +136  + mÇme +[ +RTE_PIPELINE_MAX_NAME_SZ +]; + +137  + msock‘_id +; + +138 +ušt32_t + + moff£t_pÜt_id +; + +141  +¹e_pÜt_š + + mpÜts_š +[ +RTE_PIPELINE_PORT_IN_MAX +]; + +142  +¹e_pÜt_out + + mpÜts_out +[ +RTE_PIPELINE_PORT_OUT_MAX +]; + +143  +¹e_bË + + mbËs +[ +RTE_PIPELINE_TABLE_MAX +]; + +146 +ušt32_t + + mnum_pÜts_š +; + +147 +ušt32_t + + mnum_pÜts_out +; + +148 +ušt32_t + + mnum_bËs +; + +151 +ušt64_t + + m’abËd_pÜt_š_mask +; + +152  +¹e_pÜt_š + * + mpÜt_š_Ãxt +; + +155  +¹e_mbuf + * + mpkts +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +156  +¹e_p–še_bË_’Œy + * + m’Œ›s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +157 +ušt64_t + + maùiÚ_mask0 +[ +RTE_PIPELINE_ACTIONS +]; + +158 +ušt64_t + + maùiÚ_mask1 +[ +RTE_PIPELINE_ACTIONS +]; + +159 +ušt64_t + + mpkts_mask +; + +160 +ušt64_t + + mn_pkts_ah_drÝ +; + +161 +ušt64_t + + mpkts_drÝ_mask +; + +162 } + g__¹e_ÿche_®igÃd +; + +165  + s¹e_pÜt_‘hdev_wr™” + { + +166  +¹e_pÜt_out_¡©s + + m¡©s +; + +168  +¹e_mbuf + * + mtx_buf +[2 * +RTE_PORT_IN_BURST_SIZE_MAX +]; + +169 +ušt32_t + + mtx_bur¡_sz +; + +170 +ušt16_t + + mtx_buf_couÁ +; + +171 +ušt64_t + + mbsz_mask +; + +172 +ušt16_t + + mqueue_id +; + +173 +ušt8_t + + mpÜt_id +; + +175  + s¹e_pÜt_‘hdev_»ad” + { + +176  +¹e_pÜt_š_¡©s + + m¡©s +; + +178 +ušt16_t + + mqueue_id +; + +179 +ušt8_t + + mpÜt_id +; + +181  + s¹e_pÜt_ršg_wr™” + { + +182  +¹e_pÜt_out_¡©s + + m¡©s +; + +184  +¹e_mbuf + * + mtx_buf +[2 * +RTE_PORT_IN_BURST_SIZE_MAX +]; + +185  +¹e_ršg + * + mršg +; + +186 +ušt32_t + + mtx_bur¡_sz +; + +187 +ušt32_t + + mtx_buf_couÁ +; + +188 +ušt64_t + + mbsz_mask +; + +189 +ušt32_t + + mis_muÉi +; + +191  + s¹e_pÜt_ršg_»ad” + { + +192  +¹e_pÜt_š_¡©s + + m¡©s +; + +194  +¹e_ršg + * + mršg +; + +197 +ušt8_t + +g‘_š_pÜt_dœ +(ušt8_ˆ +š_pÜt_id +); + +198 +ušt8_t + +is_phy_pÜt_´iv‹ +( +ušt16_t + +phy_pÜt +); + +199 +ušt8_t + +is_pÜt_šdex_´iv‹ +( +ušt16_t + +phy_pÜt +); + + @vnf_common/vnf_define.h + +17 #iâdeà +__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 #iâdeà +_ARPA_INET_H + + +19  + #_ARPA_INET_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +22  + ~<Ãtš‘/š.h +> + +25 #iâdeà +__sockËn_t_defšed + + +26  +__sockËn_t + + tsockËn_t +; + +27  + #__sockËn_t_defšed + + + ) + +30 +__BEGIN_DECLS + + +34 +š_addr_t + + $š‘_addr + (cÚ¡ * +__ý +è +__THROW +; + +37 +š_addr_t + + $š‘_Êaof + ( +š_addr + +__š +è +__THROW +; + +41  +š_addr + + $š‘_mak—ddr + ( +š_addr_t + +__Ãt +, in_addr_ˆ +__ho¡ +) + +42 +__THROW +; + +45 +š_addr_t + + $š‘_Ãtof + ( +š_addr + +__š +è +__THROW +; + +49 +š_addr_t + + $š‘_ÃtwÜk + (cÚ¡ * +__ý +è +__THROW +; + +53 * + $š‘_Áß + ( +š_addr + +__š +è +__THROW +; + +58  + $š‘_±Ú + ( +__af +, cÚ¡ * +__»¡riù + +__ý +, + +59 * +__»¡riù + +__buf +è +__THROW +; + +64 cÚ¡ * + $š‘_ÁÝ + ( +__af +, cÚ¡ * +__»¡riù + +__ý +, + +65 * +__»¡riù + +__buf +, +sockËn_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Ú¡ * +__ý +,  +__b™s +, + +83 * +__buf +, +size_t + +__Ën +è +__THROW +; + +88  + $š‘_Ãt_±Ú + ( +__af +, cÚ¡ * +__ý +, + +89 * +__buf +, +size_t + +__Ën +è +__THROW +; + +94  + $š‘_n§p_addr + (cÚ¡ * +__ý +, + +95 * +__buf +,  +__Ën +è +__THROW +; + +99 * + $š‘_n§p_Áß + ( +__Ën +, cÚ¡ * +__ý +, + +100 * +__buf +è +__THROW +; + +103 +__END_DECLS + + + @/usr/include/ctype.h + +22 #iâdef +_CTYPE_H + + +23  + #_CTYPE_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +26  + ~ + +28 + g__BEGIN_DECLS + + +30 #iâdeà +_ISb™ + + +39  + ~<’dŸn.h +> + +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_IS®pha + = +_ISb™ + (2), + +51 + m_ISdig™ + = +_ISb™ + (3), + +52 + m_ISxdig™ + = +_ISb™ + (4), + +53 + m_IS¥aû + = +_ISb™ + (5), + +54 + m_IS´št + = +_ISb™ + (6), + +55 + m_ISg¿ph + = +_ISb™ + (7), + +56 + m_ISbÏnk + = +_ISb™ + (8), + +57 + m_ISúŒl + = +_ISb™ + (9), + +58 + m_ISpunù + = +_ISb™ + (10), + +59 + m_IS®num + = +_ISb™ + (11) + +79 cÚ¡ ** + $__ùy³_b_loc + () + +80 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +81 cÚ¡ +__št32_t + ** + $__ùy³_tÞow”_loc + () + +82 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +83 cÚ¡ +__št32_t + ** + $__ùy³_touµ”_loc + () + +84 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +87 #iâdeà +__ýlu¥lus + + +88  + #__isùy³ +( +c +, +ty³ +) \ + +89 ((* + `__ùy³_b_loc + ())[(è( +c +)] & (è +ty³ +) + + ) + +90 #–ià +defšed + +__USE_EXTERN_INLINES + + +91  + #__isùy³_f +( +ty³ +) \ + +92 +__ex‹º_šlše + \ + +93 +is +## + `ty³ + ( +__c +è +__THROW + \ + +95  (* + `__ùy³_b_loc + ())[(è( +__c +)] & (è +_IS +## +ty³ +; \ + +96 + } + + ) +} + +99  + #__i§scii +( +c +è(((cè& ~0x7fè=ð0è + + ) + +100  + #__tßscii +( +c +è((cè& 0x7fè + + ) + +102  + #__exùy³ +( +Çme +è  + `Çme + (è +__THROW + + + ) + +104 +__BEGIN_NAMESPACE_STD + + +110 +__exùy³ + ( +i§Êum +); + +111 +__exùy³ + ( +i§Íha +); + +112 +__exùy³ + ( +isúŒl +); + +113 +__exùy³ + ( +isdig™ +); + +114 +__exùy³ + ( +i¦ow” +); + +115 +__exùy³ + ( +isg¿ph +); + +116 +__exùy³ + ( +i¥ršt +); + +117 +__exùy³ + ( +i¥unù +); + +118 +__exùy³ + ( +is¥aû +); + +119 +__exùy³ + ( +isuµ” +); + +120 +__exùy³ + ( +isxdig™ +); + +124  + $tÞow” + ( +__c +è +__THROW +; + +127  + $touµ” + ( +__c +è +__THROW +; + +129 +__END_NAMESPACE_STD + + +133 #ifdef +__USE_ISOC99 + + +134 +__BEGIN_NAMESPACE_C99 + + +136 + `__exùy³ + ( +isbÏnk +); + +138 +__END_NAMESPACE_C99 + + +141 #ifdeà +__USE_GNU + + +143  + $isùy³ + ( +__c +,  +__mask +è +__THROW +; + +146 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +150  + $i§scii + ( +__c +è +__THROW +; + +154  + $tßscii + ( +__c +è +__THROW +; + +158 + `__exùy³ + ( +_touµ” +); + +159 + `__exùy³ + ( +_tÞow” +); + +163  + #__tobody +( +c +, +f +, +a +, +¬gs +) \ + +164 ( +__ex‹nsiÚ__ + \ + +165 ({  +__»s +; \ + +166 ià( ( +c +) > 1) \ + +168 ià( + `__bužtš_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à! +defšed + +__NO_CTYPE + + +181 #ifdeà +__isùy³_f + + +182 + $__isùy³_f + ( +®num +) + +183 + $__isùy³_f + ( +®pha +) + +184 + $__isùy³_f + ( +úŒl +) + +185 + $__isùy³_f + ( +dig™ +) + +186 + $__isùy³_f + ( +low” +) + +187 + $__isùy³_f + ( +g¿ph +) + +188 + $__isùy³_f + ( +´št +) + +189 + $__isùy³_f + ( +punù +) + +190 + $__isùy³_f + ( +¥aû +) + +191 + $__isùy³_f + ( +uµ” +) + +192 + $__isùy³_f + ( +xdig™ +) + +193 #ifdeà +__USE_ISOC99 + + +194 + $__isùy³_f + ( +bÏnk +) + +196 #–ià +defšed + +__isùy³ + + +197  + #i§Êum +( +c +è + `__isùy³ +((c), +_IS®num +) + + ) + +198  + #i§Íha +( +c +è + `__isùy³ +((c), +_IS®pha +) + + ) + +199  + #isúŒl +( +c +è + `__isùy³ +((c), +_ISúŒl +) + + ) + +200  + #isdig™ +( +c +è + `__isùy³ +((c), +_ISdig™ +) + + ) + +201  + #i¦ow” +( +c +è + `__isùy³ +((c), +_ISlow” +) + + ) + +202  + #isg¿ph +( +c +è + `__isùy³ +((c), +_ISg¿ph +) + + ) + +203  + #i¥ršt +( +c +è + `__isùy³ +((c), +_IS´št +) + + ) + +204  + #i¥unù +( +c +è + `__isùy³ +((c), +_ISpunù +) + + ) + +205  + #is¥aû +( +c +è + `__isùy³ +((c), +_IS¥aû +) + + ) + +206  + #isuµ” +( +c +è + `__isùy³ +((c), +_ISuµ” +) + + ) + +207  + #isxdig™ +( +c +è + `__isùy³ +((c), +_ISxdig™ +) + + ) + +208 #ifdeà +__USE_ISOC99 + + +209  + #isbÏnk +( +c +è + `__isùy³ +((c), +_ISbÏnk +) + + ) + +213 #ifdeà +__USE_EXTERN_INLINES + + +214 +__ex‹º_šlše +  + +215 + `__NTH + ( + $tÞow” + ( +__c +)) + +217  +__c + >ð-128 && __ø< 256 ? (* + `__ùy³_tÞow”_loc + ())[__c] : __c; + +218 + } +} + +220 +__ex‹º_šlše +  + +221 +__NTH + ( + $touµ” + ( +__c +)) + +223  +__c + >ð-128 && __ø< 256 ? (* + `__ùy³_touµ”_loc + ())[__c] : __c; + +224 + } +} + +227 #ià +__GNUC__ + >ð2 && +defšed + +__OPTIMIZE__ + && !defšed +__ýlu¥lus + + +228  + #tÞow” +( +c +è + `__tobody + (c, +tÞow” +, * + `__ùy³_tÞow”_loc + (), (c)) + + ) + +229  + #touµ” +( +c +è + `__tobody + (c, +touµ” +, * + `__ùy³_touµ”_loc + (), (c)) + + ) + +232 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +233  + #i§scii +( +c +è + `__i§scii + (c) + + ) + +234  + #tßscii +( +c +è + `__tßscii + (c) + + ) + +236  + #_tÞow” +( +c +è((è(* + `__ùy³_tÞow”_loc + ())[(è(c)]) + + ) + +237  + #_touµ” +( +c +è((è(* + `__ùy³_touµ”_loc + ())[(è(c)]) + + ) + +243 #ifdeà +__USE_XOPEN2K8 + + +257  + ~ + +261  + #__isùy³_l +( +c +, +ty³ +, +loÿË +) \ + +262 (( +loÿË +)-> +__ùy³_b +[(è( +c +)] & (è +ty³ +) + + ) + +264  + #__exùy³_l +( +Çme +) \ + +265  + `Çme + (, +__loÿË_t +è +__THROW + + + ) + +271 +__exùy³_l + ( +i§Êum_l +); + +272 +__exùy³_l + ( +i§Íha_l +); + +273 +__exùy³_l + ( +isúŒl_l +); + +274 +__exùy³_l + ( +isdig™_l +); + +275 +__exùy³_l + ( +i¦ow”_l +); + +276 +__exùy³_l + ( +isg¿ph_l +); + +277 +__exùy³_l + ( +i¥ršt_l +); + +278 +__exùy³_l + ( +i¥unù_l +); + +279 +__exùy³_l + ( +is¥aû_l +); + +280 +__exùy³_l + ( +isuµ”_l +); + +281 +__exùy³_l + ( +isxdig™_l +); + +283 +__exùy³_l + ( +isbÏnk_l +); + +287  + $__tÞow”_l + ( +__c +, +__loÿË_t + +__l +è +__THROW +; + +288  + $tÞow”_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 && +defšed + +__OPTIMIZE__ + && !defšed +__ýlu¥lus + + +295  + #__tÞow”_l +( +c +, +loÿË +) \ + +296 + `__tobody + ( +c +, +__tÞow”_l +, ( +loÿË +)-> +__ùy³_tÞow” +, (c,†oÿË)) + + ) + +297  + #__touµ”_l +( +c +, +loÿË +) \ + +298 + `__tobody + ( +c +, +__touµ”_l +, ( +loÿË +)-> +__ùy³_touµ” +, (c,†oÿË)) + + ) + +299  + #tÞow”_l +( +c +, +loÿË +è + `__tÞow”_l + ((c), (loÿË)) + + ) + +300  + #touµ”_l +( +c +, +loÿË +è + `__touµ”_l + ((c), (loÿË)) + + ) + +304 #iâdeà +__NO_CTYPE + + +305  + #__i§Êum_l +( +c +, +l +è + `__isùy³_l +((c), +_IS®num +, (l)) + + ) + +306  + #__i§Íha_l +( +c +, +l +è + `__isùy³_l +((c), +_IS®pha +, (l)) + + ) + +307  + #__isúŒl_l +( +c +, +l +è + `__isùy³_l +((c), +_ISúŒl +, (l)) + + ) + +308  + #__isdig™_l +( +c +, +l +è + `__isùy³_l +((c), +_ISdig™ +, (l)) + + ) + +309  + #__i¦ow”_l +( +c +, +l +è + `__isùy³_l +((c), +_ISlow” +, (l)) + + ) + +310  + #__isg¿ph_l +( +c +, +l +è + `__isùy³_l +((c), +_ISg¿ph +, (l)) + + ) + +311  + #__i¥ršt_l +( +c +, +l +è + `__isùy³_l +((c), +_IS´št +, (l)) + + ) + +312  + #__i¥unù_l +( +c +, +l +è + `__isùy³_l +((c), +_ISpunù +, (l)) + + ) + +313  + #__is¥aû_l +( +c +, +l +è + `__isùy³_l +((c), +_IS¥aû +, (l)) + + ) + +314  + #__isuµ”_l +( +c +, +l +è + `__isùy³_l +((c), +_ISuµ” +, (l)) + + ) + +315  + #__isxdig™_l +( +c +, +l +è + `__isùy³_l +((c), +_ISxdig™ +, (l)) + + ) + +317  + #__isbÏnk_l +( +c +, +l +è + `__isùy³_l +((c), +_ISbÏnk +, (l)) + + ) + +319 #ifdeà +__USE_MISC + + +320  + #__i§scii_l +( +c +, +l +è(Ö), + `__i§scii + (c)) + + ) + +321  + #__tßscii_l +( +c +, +l +è(Ö), + `__tßscii + (c)) + + ) + +324  + #i§Êum_l +( +c +, +l +è + `__i§Êum_l + ((c), (l)) + + ) + +325  + #i§Íha_l +( +c +, +l +è + `__i§Íha_l + ((c), (l)) + + ) + +326  + #isúŒl_l +( +c +, +l +è + `__isúŒl_l + ((c), (l)) + + ) + +327  + #isdig™_l +( +c +, +l +è + `__isdig™_l + ((c), (l)) + + ) + +328  + #i¦ow”_l +( +c +, +l +è + `__i¦ow”_l + ((c), (l)) + + ) + +329  + #isg¿ph_l +( +c +, +l +è + `__isg¿ph_l + ((c), (l)) + + ) + +330  + #i¥ršt_l +( +c +, +l +è + `__i¥ršt_l + ((c), (l)) + + ) + +331  + #i¥unù_l +( +c +, +l +è + `__i¥unù_l + ((c), (l)) + + ) + +332  + #is¥aû_l +( +c +, +l +è + `__is¥aû_l + ((c), (l)) + + ) + +333  + #isuµ”_l +( +c +, +l +è + `__isuµ”_l + ((c), (l)) + + ) + +334  + #isxdig™_l +( +c +, +l +è + `__isxdig™_l + ((c), (l)) + + ) + +336  + #isbÏnk_l +( +c +, +l +è + `__isbÏnk_l + ((c), (l)) + + ) + +338 #ifdeà +__USE_MISC + + +339  + #i§scii_l +( +c +, +l +è + `__i§scii_l + ((c), (l)) + + ) + +340  + #tßscii_l +( +c +, +l +è + `__tßscii_l + ((c), (l)) + + ) + +347 +__END_DECLS + + + @/usr/include/errno.h + +22 #iâdef +_ERRNO_H + + +26 #iâdef +__Ãed_Em©h + + +27  + #_ERRNO_H + 1 + + ) + +28  + ~<ã©u»s.h +> + +31 + g__BEGIN_DECLS + + +35  + ~ + +36 #undeà +__Ãed_Em©h + + +38 #ifdef +_ERRNO_H + + +45 #iâdef +”ºo + + +46  +”ºo +; + +49 #ifdeà +__USE_GNU + + +54 * +´og¿m_švoÿtiÚ_Çme +, * +´og¿m_švoÿtiÚ_shÜt_Çme +; + +58 + g__END_DECLS + + +66 #ià +defšed + +__USE_GNU + || defšed +__Ãed_”rÜ_t + + +67 #iâdeà +__”rÜ_t_defšed + + +68  + t”rÜ_t +; + +69  + #__”rÜ_t_defšed + 1 + + ) + +71 #undeà +__Ãed_”rÜ_t + + + @/usr/include/execinfo.h + +18 #iâdeà +_EXECINFO_H + + +19  + #_EXECINFO_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +23 +__BEGIN_DECLS + + +27  + $backŒaû + (** +__¬¿y +,  +__size +è + `__nÚnuÎ + ((1)); + +32 ** + $backŒaû_symbÞs + (*cÚ¡ * +__¬¿y +,  +__size +) + +33 +__THROW + + `__nÚnuÎ + ((1)); + +38  + $backŒaû_symbÞs_fd + (*cÚ¡ * +__¬¿y +,  +__size +,  +__fd +) + +39 +__THROW + + `__nÚnuÎ + ((1)); + +41 +__END_DECLS + + + @/usr/include/fcntl.h + +22 #iâdef +_FCNTL_H + + +23  + #_FCNTL_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +31  + ~ + +35  + ~ + +39 #ifdeà +__O_TMPFILE + + +40  + #__OPEN_NEEDS_MODE +( +oæag +) \ + +41 ((( +oæag +è& +O_CREAT +è!ð0 || ((oæagè& +__O_TMPFILE +è=ð__O_TMPFILE) + + ) + +43  + #__OPEN_NEEDS_MODE +( +oæag +è(((oæagè& +O_CREAT +è!ð0) + + ) + +49 #iâdeà +__mode_t_defšed + + +50  +__mode_t + + tmode_t +; + +51  + #__mode_t_defšed + + + ) + +54 #iâdeà +__off_t_defšed + + +55 #iâdeà +__USE_FILE_OFFSET64 + + +56  +__off_t + + toff_t +; + +58  +__off64_t + + toff_t +; + +60  + #__off_t_defšed + + + ) + +63 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +64  +__off64_t + + toff64_t +; + +65  + #__off64_t_defšed + + + ) + +68 #iâdeà +__pid_t_defšed + + +69  +__pid_t + + tpid_t +; + +70  + #__pid_t_defšed + + + ) + +74 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +75  + #__Ãed_time¥ec + + + ) + +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à( +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K8 +è&& defšed +__S_IFSOCK + + +91  + #S_IFSOCK + +__S_IFSOCK + + + ) + +96  + #S_ISUID + +__S_ISUID + + + ) + +97  + #S_ISGID + +__S_ISGID + + + ) + +99 #ià +defšed + +__USE_MISC + || defšed +__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 #iâdeà +R_OK + + +127  + #R_OK + 4 + + ) + +128  + #W_OK + 2 + + ) + +129  + #X_OK + 1 + + ) + +130  + #F_OK + 0 + + ) + +135 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +136  + #SEEK_SET + 0 + + ) + +137  + #SEEK_CUR + 1 + + ) + +138  + #SEEK_END + 2 + + ) + +146  +fúŽ + ( +__fd +,  +__cmd +, ...); + +155 #iâdeà +__USE_FILE_OFFSET64 + + +156  + $ݒ + (cÚ¡ * +__fže +,  +__oæag +, ...è + `__nÚnuÎ + ((1)); + +158 #ifdeà +__REDIRECT + + +159  + `__REDIRECT + ( +ݒ +, (cÚ¡ * +__fže +,  +__oæag +, ...), +ݒ64 +) + +160 + `__nÚnuÎ + ((1)); + +162  + #ݒ + +ݒ64 + + + ) + +165 #ifdeà +__USE_LARGEFILE64 + + +166  + $ݒ64 + (cÚ¡ * +__fže +,  +__oæag +, ...è + `__nÚnuÎ + ((1)); + +169 #ifdeà +__USE_ATFILE + + +179 #iâdeà +__USE_FILE_OFFSET64 + + +180  + $ݒ© + ( +__fd +, cÚ¡ * +__fže +,  +__oæag +, ...) + +181 + `__nÚnuÎ + ((2)); + +183 #ifdeà +__REDIRECT + + +184  + `__REDIRECT + ( +ݒ© +, ( +__fd +, cÚ¡ * +__fže +,  +__oæag +, + +185 ...), +ݒ©64 +è + `__nÚnuÎ + ((2)); + +187  + #ݒ© + +ݒ©64 + + + ) + +190 #ifdeà +__USE_LARGEFILE64 + + +191  + $ݒ©64 + ( +__fd +, cÚ¡ * +__fže +,  +__oæag +, ...) + +192 + `__nÚnuÎ + ((2)); + +201 #iâdeà +__USE_FILE_OFFSET64 + + +202  + $ü—t + (cÚ¡ * +__fže +, +mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +204 #ifdeà +__REDIRECT + + +205  + `__REDIRECT + ( +ü—t +, (cÚ¡ * +__fže +, +mode_t + +__mode +), + +206 +ü—t64 +è + `__nÚnuÎ + ((1)); + +208  + #ü—t + +ü—t64 + + + ) + +211 #ifdeà +__USE_LARGEFILE64 + + +212  + $ü—t64 + (cÚ¡ * +__fže +, +mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +215 #ià! +defšed + +F_LOCK + && (defšed +__USE_MISC + || (defšed +__USE_XOPEN_EXTENDED + \ + +216 && ! +defšed + +__USE_POSIX +)) + +225  + #F_ULOCK + 0 + + ) + +226  + #F_LOCK + 1 + + ) + +227  + #F_TLOCK + 2 + + ) + +228  + #F_TEST + 3 + + ) + +230 #iâdeà +__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 #iâdeà +__USE_FILE_OFFSET64 + + +248  + $posix_çdvi£ + ( +__fd +, +off_t + +__off£t +, off_ˆ +__Ën +, + +249  +__advi£ +è +__THROW +; + +251 #ifdeà +__REDIRECT_NTH + + +252  + `__REDIRECT_NTH + ( +posix_çdvi£ +, ( +__fd +, +__off64_t + +__off£t +, + +253 +__off64_t + +__Ën +,  +__advi£ +), + +254 +posix_çdvi£64 +); + +256  + #posix_çdvi£ + +posix_çdvi£64 + + + ) + +259 #ifdeà +__USE_LARGEFILE64 + + +260  + $posix_çdvi£64 + ( +__fd +, +off64_t + +__off£t +, off64_ˆ +__Ën +, + +261  +__advi£ +è +__THROW +; + +269 #iâdeà +__USE_FILE_OFFSET64 + + +270  + `posix_çÎoÿ‹ + ( +__fd +, +off_t + +__off£t +, off_ˆ +__Ën +); + +272 #ifdeà +__REDIRECT + + +273  + `__REDIRECT + ( +posix_çÎoÿ‹ +, ( +__fd +, +__off64_t + +__off£t +, + +274 +__off64_t + +__Ën +), + +275 +posix_çÎoÿ‹64 +); + +277  + #posix_çÎoÿ‹ + +posix_çÎoÿ‹64 + + + ) + +280 #ifdeà +__USE_LARGEFILE64 + + +281  + `posix_çÎoÿ‹64 + ( +__fd +, +off64_t + +__off£t +, off64_ˆ +__Ën +); + +287 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + \ + +288 && +defšed + +__va_¬g_·ck_Ën + + +289  + ~ + +292 +__END_DECLS + + + @/usr/include/getopt.h + +19 #iâdeà +_GETOPT_H + + +21 #iâdeà +__Ãed_g‘Ýt + + +22  + #_GETOPT_H + 1 + + ) + +32 #ià! +defšed + +__GNU_LIBRARY__ + + +33  + ~<ùy³.h +> + +36 #iâdeà +__THROW + + +37 #iâdeà +__GNUC_PREREQ + + +38  + #__GNUC_PREREQ +( +maj +, +mš +è(0) + + ) + +40 #ià +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (2,8) + +41  + #__THROW + + `throw + () + + ) + +43  + #__THROW + + + ) + +47 #ifdef +__ýlu¥lus + + +57 * +ݏrg +; + +71  +Ýtšd +; + +76  +݋¼ +; + +80  +ÝtÝt +; + +82 #iâdeà +__Ãed_g‘Ýt + + +104  + sÝtiÚ + + +106 cÚ¡ * + gÇme +; + +109  + ghas_¬g +; + +110 * + gæag +; + +111  + gv® +; + +116  + #no_¬gum’t + 0 + + ) + +117  + #»quœed_¬gum’t + 1 + + ) + +118  + #ÝtiÚ®_¬gum’t + 2 + + ) + +146 #ifdeà +__GNU_LIBRARY__ + + +150  +g‘Ýt + ( +___¬gc +, *cÚ¡ * +___¬gv +, cÚ¡ * +__shÜtÝts +) + +151 +__THROW +; + +153 #ià +defšed + +__Ãed_g‘Ýt + && defšed +__USE_POSIX2 + \ + +154 && ! +defšed + + g__USE_POSIX_IMPLICITLY + && !defšed + g__USE_GNU + + +158 #ifdeà +__REDIRECT + + +159  +__REDIRECT_NTH + ( +g‘Ýt +, ( +___¬gc +, *cÚ¡ * +___¬gv +, + +160 cÚ¡ * +__shÜtÝts +), + +161 +__posix_g‘Ýt +); + +163  +__posix_g‘Ýt + ( +___¬gc +, *cÚ¡ * +___¬gv +, + +164 cÚ¡ * +__shÜtÝts +è +__THROW +; + +165  + #g‘Ýt + +__posix_g‘Ýt + + + ) + +169  +g‘Ýt + (); + +172 #iâdeà +__Ãed_g‘Ýt + + +173  +g‘Ýt_lÚg + ( +___¬gc +, *cÚ¡ * +___¬gv +, + +174 cÚ¡ * +__shÜtÝts +, + +175 cÚ¡  +ÝtiÚ + * +__lÚgÝts +, * +__lÚgšd +) + +176 +__THROW +; + +177  +g‘Ýt_lÚg_Úly + ( +___¬gc +, *cÚ¡ * +___¬gv +, + +178 cÚ¡ * +__shÜtÝts +, + +179 cÚ¡  +ÝtiÚ + * +__lÚgÝts +, * +__lÚgšd +) + +180 +__THROW +; + +184 #ifdef +__ýlu¥lus + + +189 #undeà +__Ãed_g‘Ýt + + + @/usr/include/inttypes.h + +22 #iâdeà +_INTTYPES_H + + +23  + #_INTTYPES_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27  + ~<¡dšt.h +> + +30 #iâdeà +____gwch¬_t_defšed + + +31 #ifdeà +__ýlu¥lus + + +32  + #__gwch¬_t + +wch¬_t + + + ) + +33 #–ià +defšed + +__WCHAR_TYPE__ + + +34  +__WCHAR_TYPE__ + + t__gwch¬_t +; + +36  + #__Ãed_wch¬_t + + + ) + +37  + ~<¡ddef.h +> + +38  +wch¬_t + + t__gwch¬_t +; + +40  + #____gwch¬_t_defšed + 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  + m»m +; + +275 } + timaxdiv_t +; + +282 +__ex‹nsiÚ__ +  + mquÙ +; + +283 +__ex‹nsiÚ__ +  + m»m +; + +284 } + timaxdiv_t +; + +290 +štmax_t + + $imaxabs + ( +štmax_t + +__n +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +293 +imaxdiv_t + + $imaxdiv + ( +štmax_t + +__num” +, iÁmax_ˆ +__d’om +) + +294 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +297 +štmax_t + + $¡¹oimax + (cÚ¡ * +__»¡riù + +__Ō +, + +298 ** +__»¡riù + +__’d±r +,  +__ba£ +è +__THROW +; + +301 +uštmax_t + + $¡¹oumax + (cÚ¡ * +__»¡riù + +__Ō +, + +302 ** +__»¡riù + +__’d±r +,  +__ba£ +è +__THROW +; + +305 +štmax_t + + $wc¡oimax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +__Ō +, + +306 +__gwch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +307 +__THROW +; + +310 +uštmax_t + + $wc¡oumax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +__Ō +, + +311 +__gwch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +312 +__THROW +; + +314 #ifdeà +__USE_EXTERN_INLINES + + +316 #ià +__WORDSIZE + == 64 + +318  + $__¡¹Þ_š‹º® + (cÚ¡ * +__»¡riù + +__Ō +, + +319 ** +__»¡riù + +__’d±r +, + +320  +__ba£ +,  +__group +) + +321 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +323 +__ex‹º_šlše + +štmax_t + + +324 + `__NTH + ( + $¡¹oimax + (cÚ¡ * +__»¡riù + +Ō +, **__»¡riù +’d±r +, + +325  +ba£ +)) + +327  + `__¡¹Þ_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +328 + } +} + +330  + $__¡¹oul_š‹º® + (cÚ¡ * +__»¡riù + +__Ō +, + +331 ** +__»¡riù + +__’d±r +, + +332  +__ba£ +,  +__group +) + +333 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +335 +__ex‹º_šlše + +uštmax_t + + +336 + `__NTH + ( + $¡¹oumax + (cÚ¡ * +__»¡riù + +Ō +, **__»¡riù +’d±r +, + +337  +ba£ +)) + +339  + `__¡¹oul_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +340 + } +} + +342  + $__wc¡Þ_š‹º® + (cÚ¡ +__gwch¬_t + * +__»¡riù + +__Ō +, + +343 +__gwch¬_t + ** +__»¡riù + +__’d±r +, + +344  +__ba£ +,  +__group +) + +345 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +347 +__ex‹º_šlše + +štmax_t + + +348 + `__NTH + ( + $wc¡oimax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +Ō +, + +349 +__gwch¬_t + ** +__»¡riù + +’d±r +,  +ba£ +)) + +351  + `__wc¡Þ_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +352 + } +} + +354  + $__wc¡oul_š‹º® + (cÚ¡ +__gwch¬_t + * + +355 +__»¡riù + +__Ō +, + +356 +__gwch¬_t + ** + +357 +__»¡riù + +__’d±r +, + +358  +__ba£ +,  +__group +) + +359 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +361 +__ex‹º_šlše + +uštmax_t + + +362 + `__NTH + ( + $wc¡oumax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +Ō +, + +363 +__gwch¬_t + ** +__»¡riù + +’d±r +,  +ba£ +)) + +365  + `__wc¡oul_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +366 + } +} + +370 +__ex‹nsiÚ__ + + +371  + $__¡¹Þl_š‹º® + (cÚ¡ * +__»¡riù + +__Ō +, + +372 ** +__»¡riù + +__’d±r +, + +373  +__ba£ +,  +__group +) + +374 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +376 +__ex‹º_šlše + +štmax_t + + +377 + `__NTH + ( + $¡¹oimax + (cÚ¡ * +__»¡riù + +Ō +, **__»¡riù +’d±r +, + +378  +ba£ +)) + +380  + `__¡¹Þl_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +381 + } +} + +383 +__ex‹nsiÚ__ + + +384  + $__¡¹ouÎ_š‹º® + (const * + +385 +__»¡riù + +__Ō +, + +387 +__»¡riù + +__’d±r +, + +388  +__ba£ +, + +389  +__group +) + +390 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +392 +__ex‹º_šlše + +uštmax_t + + +393 + `__NTH + ( + $¡¹oumax + (cÚ¡ * +__»¡riù + +Ō +, **__»¡riù +’d±r +, + +394  +ba£ +)) + +396  + `__¡¹ouÎ_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +397 + } +} + +399 +__ex‹nsiÚ__ + + +400  + $__wc¡Þl_š‹º® + (cÚ¡ +__gwch¬_t + * +__»¡riù + +__Ō +, + +401 +__gwch¬_t + ** +__»¡riù + +__’d±r +, + +402  +__ba£ +,  +__group +) + +403 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +405 +__ex‹º_šlše + +štmax_t + + +406 + `__NTH + ( + $wc¡oimax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +Ō +, + +407 +__gwch¬_t + ** +__»¡riù + +’d±r +,  +ba£ +)) + +409  + `__wc¡Þl_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +410 + } +} + +413 +__ex‹nsiÚ__ + + +414  + $__wc¡ouÎ_š‹º® + (cÚ¡ +__gwch¬_t + * + +415 +__»¡riù + +__Ō +, + +416 +__gwch¬_t + ** + +417 +__»¡riù + +__’d±r +, + +418  +__ba£ +, + +419  +__group +) + +420 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +422 +__ex‹º_šlše + +uštmax_t + + +423 + `__NTH + ( + $wc¡oumax + (cÚ¡ +__gwch¬_t + * +__»¡riù + +Ō +, + +424 +__gwch¬_t + ** +__»¡riù + +’d±r +,  +ba£ +)) + +426  + `__wc¡ouÎ_š‹º® + ( +Ō +, +’d±r +, +ba£ +, 0); + +427 + } +} + +432 + g__END_DECLS + + + @/usr/include/libgen.h + +18 #iâdeà +_LIBGEN_H + + +19  + #_LIBGEN_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +23 +__BEGIN_DECLS + + +26 * + $dœÇme + (* +__·th +è +__THROW +; + +34 * + $__xpg_ba£Çme + (* +__·th +è +__THROW +; + +35  + #ba£Çme + +__xpg_ba£Çme + + + ) + +37 +__END_DECLS + + + @/usr/include/math.h + +23 #iâdef +_MATH_H + + +24  + #_MATH_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +28 + g__BEGIN_DECLS + + +31  + ~ + +35  + ~ + +36 #ifdeà +__USE_ISOC99 + + +37  + ~ + +38  + ~ + +41  + ~ + +44  + ~ + +48  + ~ + +55  + #__SIMD_DECL +( +funùiÚ +è + `__CONCAT + ( +__DECL_SIMD_ +, funùiÚ) + + ) + +57  + #__MATHCALL_VEC +( +funùiÚ +, +suffix +, +¬gs +) \ + +58 + `__SIMD_DECL + ( + `__MATH_PRECNAME + ( +funùiÚ +, +suffix +)) \ + +59 + `__MATHCALL + ( +funùiÚ +, +suffix +, +¬gs +) + + ) + +61  + #__MATHDECL_VEC +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +) \ + +62 + `__SIMD_DECL + ( + `__MATH_PRECNAME + ( +funùiÚ +, +suffix +)) \ + +63 + `__MATHDECL +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +) + + ) + +65  + #__MATHCALL +( +funùiÚ +, +suffix +, +¬gs +) \ + +66 + `__MATHDECL + ( +_MdoubË_ +, +funùiÚ +, +suffix +, +¬gs +) + + ) + +67  + #__MATHDECL +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +) \ + +68 + `__MATHDECL_1 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +); \ + +69 + `__MATHDECL_1 +( +ty³ +, + `__CONCAT +( +__ +, +funùiÚ +), +suffix +, +¬gs +) + + ) + +70  + #__MATHCALLX +( +funùiÚ +, +suffix +, +¬gs +, +©Œib +) \ + +71 + `__MATHDECLX + ( +_MdoubË_ +, +funùiÚ +, +suffix +, +¬gs +, +©Œib +) + + ) + +72  + #__MATHDECLX +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +, +©Œib +) \ + +73 + `__MATHDECL_1 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +è + `__©Œibu‹__ + ( +©Œib +); \ + +74 + `__MATHDECL_1 +( +ty³ +, + `__CONCAT +( +__ +, +funùiÚ +), +suffix +, +¬gs +è + `__©Œibu‹__ + ( +©Œib +) + + ) + +75  + #__MATHDECL_1 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +) \ + +76 +ty³ + + `__MATH_PRECNAME +( +funùiÚ +, +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 #iâdeà +_Mæßt_ + + +97  + #_Mæßt_ +  + + ) + +99  + #_MdoubË_ + +_Mæßt_ + + + ) + +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à!( +defšed + +__NO_LONG_DOUBLE_MATH + && defšed +_LIBC +) \ + +112 || +defšed + +__LDBL_COMPAT + \ + +113 || +defšed + +_LIBC_TEST + + +114 #ifdeà +__LDBL_COMPAT + + +116 #ifdeà +__USE_ISOC99 + + +117  + $__Ædbl_Ãx‰ow¬df + ( +__x +,  +__y +) + +118 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +119 #ifdeà +__REDIRECT_NTH + + +120  + `__REDIRECT_NTH + ( +Ãx‰ow¬df +, ( +__x +,  +__y +), + +121 +__Ædbl_Ãx‰ow¬df +) + +122 + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +123  + `__REDIRECT_NTH + ( +Ãx‰ow¬d +, ( +__x +,  +__y +), + +124 +Ãxá” +è + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +125  + `__REDIRECT_NTH + ( +Ãx‰ow¬dl +, + +126 ( +__x +,  +__y +), + +127 +Ãxá” +è + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +131 #undeà +__MATHDECL_1 + + +132  + #__MATHDECL_2 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +, +®Ÿs +) \ + +133 +ty³ + + `__REDIRECT_NTH +( + `__MATH_PRECNAME +( +funùiÚ +, +suffix +), \ + +134 +¬gs +, +®Ÿs +) + + ) + +135  + #__MATHDECL_1 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +) \ + +136 + `__MATHDECL_2 +( +ty³ +, +funùiÚ +, +suffix +, +¬gs +, + `__CONCAT +(funùiÚ,suffix)) + + ) + +142 #iâdeà +_MlÚg_doubË_ + + +143  + #_MlÚg_doubË_ +  + + ) + +145  + #_MdoubË_ + +_MlÚg_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à +defšed + +__USE_MISC + || defšed +__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è&& ! +defšed + +__SUPPORT_SNAN__ + \ + +234 && ! +defšed + +__OPTIMIZE_SIZE__ + + +235  + #åþassify +( +x +è + `__bužtš_åþassify + ( +FP_NAN +, +FP_INFINITE +, \ + +236 +FP_NORMAL +, +FP_SUBNORMAL +, +FP_ZERO +, +x +) + + ) + +237 #–ià +defšed + +__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 ? + `__bužtš_signb™f + ( +x +) \ + +253 :  ( +x +) ==  () \ + +254 ? + `__bužtš_signb™ + ( +x +è: + `__bužtš_signb™l + (x)) + + ) + +256 #ifdeà +__NO_LONG_DOUBLE_MATH + + +257  + #signb™ +( +x +) \ + +258 ( ( +x +è=ð (è? + `__signb™f + (xè: + `__signb™ + (x)) + + ) + +260  + #signb™ +( +x +) \ + +261 ( ( +x +) ==  () \ + +262 ? + `__signb™f + ( +x +) \ + +263 :  ( +x +) ==  () \ + +264 ? + `__signb™ + ( +x +è: + `__signb™l + (x)) + + ) + +269 #ià + `__GNUC_PREREQ + (4,4è&& ! +defšed + +__SUPPORT_SNAN__ + + +270  + #isfš™e +( +x +è + `__bužtš_isfš™e + (x) + + ) + +271 #–ià +defšed + +__NO_LONG_DOUBLE_MATH + + +272  + #isfš™e +( +x +) \ + +273 ( ( +x +è=ð (è? + `__fš™ef + (xè: + `__fš™e + (x)) + + ) + +275  + #isfš™e +( +x +) \ + +276 ( ( +x +) ==  () \ + +277 ? + `__fš™ef + ( +x +) \ + +278 :  ( +x +) ==  () \ + +279 ? + `__fš™e + ( +x +è: + `__fš™– + (x)) + + ) + +283 #ià + `__GNUC_PREREQ + (4,4è&& ! +defšed + +__SUPPORT_SNAN__ + + +284  + #i¢Üm® +( +x +è + `__bužtš_i¢Üm® + (x) + + ) + +286  + #i¢Üm® +( +x +è( + `åþassify + (xè=ð +FP_NORMAL +) + + ) + +291 #ià + `__GNUC_PREREQ + (4,4è&& ! +defšed + +__SUPPORT_SNAN__ + + +292  + #i¢ª +( +x +è + `__bužtš_i¢ª + (x) + + ) + +293 #–ià +defšed + +__NO_LONG_DOUBLE_MATH + + +294  + #i¢ª +( +x +) \ + +295 ( ( +x +è=ð (è? + `__i¢ªf + (xè: + `__i¢ª + (x)) + + ) + +297  + #i¢ª +( +x +) \ + +298 ( ( +x +) ==  () \ + +299 ? + `__i¢ªf + ( +x +) \ + +300 :  ( +x +) ==  () \ + +301 ? + `__i¢ª + ( +x +è: + `__i¢ªl + (x)) + + ) + +305 #ià + `__GNUC_PREREQ + (4,4è&& ! +defšed + +__SUPPORT_SNAN__ + + +306  + #isšf +( +x +è + `__bužtš_isšf_sign + (x) + + ) + +307 #–ià +defšed + +__NO_LONG_DOUBLE_MATH + + +308  + #isšf +( +x +) \ + +309 ( ( +x +è=ð (è? + `__isšff + (xè: + `__isšf + (x)) + + ) + +311  + #isšf +( +x +) \ + +312 ( ( +x +) ==  () \ + +313 ? + `__isšff + ( +x +) \ + +314 :  ( +x +) ==  () \ + +315 ? + `__isšf + ( +x +è: + `__isšæ + (x)) + + ) + +319  + #MATH_ERRNO + 1 + + ) + +320  + #MATH_ERREXCEPT + 2 + + ) + +325 #iâdeà +__FAST_MATH__ + + +326  + #m©h_”rhªdlšg + ( +MATH_ERRNO + | +MATH_ERREXCEPT +) + + ) + +331 #ifdeà +__USE_GNU + + +333 #ifdeà +__NO_LONG_DOUBLE_MATH + + +334  + #issigÇlšg +( +x +) \ + +335 ( ( +x +è=ð (è? + `__issigÇlšgf + (xè: + `__issigÇlšg + (x)) + + ) + +337  + #issigÇlšg +( +x +) \ + +338 ( ( +x +) ==  () \ + +339 ? + `__issigÇlšgf + ( +x +) \ + +340 :  ( +x +) ==  () \ + +341 ? + `__issigÇlšg + ( +x +è: + `__issigÇlšgl + (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à +__ýlu¥lus + + +370  +__exû±iÚ + + +372  +exû±iÚ + + +375  +ty³ +; + +376 * +Çme +; + +377  +¬g1 +; + +378  +¬g2 +; + +379  +»tv® +; + +380 + } +}; + +382 #ifdeà +__ýlu¥lus + + +383  + $m©h”r + ( +__exû±iÚ + * +__exc +è + `throw + (); + +385  + `m©h”r + ( +exû±iÚ + * +__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à +defšed + +__USE_MISC + || defšed +__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à +defšed + +__STRICT_ANSI__ + && !defšed +__NO_MATH_INLINES + + +452  + #__NO_MATH_INLINES + 1 + + ) + +455 #ià +defšed + +__USE_ISOC99 + && + `__GNUC_PREREQ +(2,97) + +462  + #isg»©” +( +x +, +y +è + `__bužtš_isg»©” +(x, y) + + ) + +463  + #isg»©”equ® +( +x +, +y +è + `__bužtš_isg»©”equ® +(x, y) + + ) + +464  + #i¦ess +( +x +, +y +è + `__bužtš_i¦ess +(x, y) + + ) + +465  + #i¦es£qu® +( +x +, +y +è + `__bužtš_i¦es£qu® +(x, y) + + ) + +466  + #i¦essg»©” +( +x +, +y +è + `__bužtš_i¦essg»©” +(x, y) + + ) + +467  + #isunÜd”ed +( +u +, +v +è + `__bužtš_isunÜd”ed +(u, v) + + ) + +471 #ifdeà +__USE_EXTERN_INLINES + + +472  + ~ + +477 #ià +defšed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 + +478  + ~ + +481 #ifdeà +__USE_ISOC99 + + +485 #iâdeà +isg»©” + + +486  + #isg»©” +( +x +, +y +) \ + +487 ( +__ex‹nsiÚ__ + \ + +488 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +489 ! + `isunÜd”ed + ( +__x +, +__y +è&& __x > __y; + } +})) + + ) + +493 #iâdeà +isg»©”equ® + + +494  + #isg»©”equ® +( +x +, +y +) \ + +495 ( +__ex‹nsiÚ__ + \ + +496 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +497 ! + `isunÜd”ed + ( +__x +, +__y +è&& __x >ð__y; })) + + ) + +501 #iâdeà +i¦ess + + +502  + #i¦ess +( +x +, +y +) \ + +503 ( +__ex‹nsiÚ__ + \ + +504 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +505 ! + `isunÜd”ed + ( +__x +, +__y +è&& __x < __y; })) + + ) + +509 #iâdeà +i¦es£qu® + + +510  + #i¦es£qu® +( +x +, +y +) \ + +511 ( +__ex‹nsiÚ__ + \ + +512 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +513 ! + `isunÜd”ed + ( +__x +, +__y +è&& __x <ð__y; })) + + ) + +517 #iâdeà +i¦essg»©” + + +518  + #i¦essg»©” +( +x +, +y +) \ + +519 ( +__ex‹nsiÚ__ + \ + +520 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +521 ! + `isunÜd”ed + ( +__x +, +__y +è&& (__x < __y || __y < __x); })) + + ) + +525 #iâdeà +isunÜd”ed + + +526  + #isunÜd”ed +( +u +, +v +) \ + +527 ( +__ex‹nsiÚ__ + \ + +528 ({ + `__ty³of__ +( +u +è +__u + = (u); __ty³of__( +v +è +__v + = (v); \ + +529 + `åþassify + ( +__u +è=ð +FP_NAN + || fpþassify ( +__v +è=ðFP_NAN; })) + + ) + +534 + g__END_DECLS + + + @/usr/include/netinet/in.h + +18 #iâdef +_NETINET_IN_H + + +19  + #_NETINET_IN_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +22  + ~<¡dšt.h +> + +23  + ~ + +24  + ~ + +27 +__BEGIN_DECLS + + +30  +ušt32_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 #iâdeà +__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  +ušt16_t + + tš_pÜt_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 #iâdeà +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 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +211  + sš6_addr + + +215 +ušt8_t + + m__u6_addr8 +[16]; + +216 #ifdeà +__USE_MISC + + +217 +ušt16_t + + m__u6_addr16 +[8]; + +218 +ušt32_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_loÝback +; + +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 +š_pÜt_t + + msš_pÜt +; + +243  +š_addr + + msš_addr +; + +246  + msš_z”o +[ ( +sockaddr +) - + +247 +__SOCKADDR_COMMON_SIZE + - + +248  ( +š_pÜt_t +) - + +249  ( +š_addr +)]; + +252 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +254  + ssockaddr_š6 + + +256 +__SOCKADDR_COMMON + ( +sš6_ +); + +257 +š_pÜt_t + + msš6_pÜt +; + +258 +ušt32_t + + msš6_æowšfo +; + +259  +š6_addr + + msš6_addr +; + +260 +ušt32_t + + msš6_scÝe_id +; + +264 #ifdeà +__USE_MISC + + +266  + s_m»q + + +269  +š_addr + + mimr_muɟddr +; + +272  +š_addr + + mimr_š‹rçû +; + +275  + s_m»q_sourû + + +278  +š_addr + + mimr_muɟddr +; + +281  +š_addr + + mimr_š‹rçû +; + +284  +š_addr + + mimr_sourûaddr +; + +288 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +290  + sv6_m»q + + +293  +š6_addr + + mv6mr_muɟddr +; + +296  + mv6mr_š‹rçû +; + +300 #ifdeà +__USE_MISC + + +302  + sgroup_»q + + +305 +ušt32_t + + mgr_š‹rçû +; + +308  +sockaddr_¡Üage + + mgr_group +; + +311  + sgroup_sourû_»q + + +314 +ušt32_t + + mg¤_š‹rçû +; + +317  +sockaddr_¡Üage + + mg¤_group +; + +320  +sockaddr_¡Üage + + mg¤_sourû +; + +325  + s_msfž‹r + + +328  +š_addr + + mimsf_muɟddr +; + +331  +š_addr + + mimsf_š‹rçû +; + +334 +ušt32_t + + mimsf_fmode +; + +337 +ušt32_t + + mimsf_num¤c +; + +339  +š_addr + + mimsf_¦i¡ +[1]; + +342  + #IP_MSFILTER_SIZE +( +num¤c +è( ( +_msfž‹r +) \ + +343 -  ( +š_addr +) \ + +344 + ( +num¤c +è*  ( +š_addr +)) + + ) + +346  + sgroup_fž‹r + + +349 +ušt32_t + + mgf_š‹rçû +; + +352  +sockaddr_¡Üage + + mgf_group +; + +355 +ušt32_t + + mgf_fmode +; + +358 +ušt32_t + + mgf_num¤c +; + +360  +sockaddr_¡Üage + + mgf_¦i¡ +[1]; + +363  + #GROUP_FILTER_SIZE +( +num¤c +è( ( +group_fž‹r +) \ + +364 -  ( +sockaddr_¡Üage +) \ + +365 + (( +num¤c +) \ + +366 *  ( +sockaddr_¡Üage +))) + + ) + +376 +ušt32_t + + $Áohl + ( +ušt32_t + +__ÎÚg +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +377 +ušt16_t + + $Áohs + ( +ušt16_t + +__ÃtshÜt +) + +378 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +379 +ušt32_t + + $htÚl + ( +ušt32_t + +__ho¡lÚg +) + +380 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +381 +ušt16_t + + $htÚs + ( +ušt16_t + +__ho¡shÜt +) + +382 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +384  + ~<’dŸn.h +> + +387  + ~ + +389 #ifdeà +__OPTIMIZE__ + + +393 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +396  + #Áohl +( +x +è(x) + + ) + +397  + #Áohs +( +x +è(x) + + ) + +398  + #htÚl +( +x +è(x) + + ) + +399  + #htÚs +( +x +è(x) + + ) + +401 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +402  + #Áohl +( +x +è + `__bsw­_32 + (x) + + ) + +403  + #Áohs +( +x +è + `__bsw­_16 + (x) + + ) + +404  + #htÚl +( +x +è + `__bsw­_32 + (x) + + ) + +405  + #htÚs +( +x +è + `__bsw­_16 + (x) + + ) + +410 #ifdeà +__GNUC__ + + +411  + #IN6_IS_ADDR_UNSPECIFIED +( +a +) \ + +412 ( +__ex‹nsiÚ__ + \ + +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 ( +__ex‹nsiÚ__ + \ + +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] =ð + `htÚl + (1); })) + + ) + +427  + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +428 ( +__ex‹nsiÚ__ + \ + +429 ({ cÚ¡  +š6_addr + * +__a + = (cÚ¡ š6_add¸*è( +a +); \ + +430 ( +__a +-> +s6_addr32 +[0] & + `htÚl + (0xffc00000)è=ðhtÚÈ(0xã800000); })) + + ) + +432  + #IN6_IS_ADDR_SITELOCAL +( +a +) \ + +433 ( +__ex‹nsiÚ__ + \ + +434 ({ cÚ¡  +š6_addr + * +__a + = (cÚ¡ š6_add¸*è( +a +); \ + +435 ( +__a +-> +s6_addr32 +[0] & + `htÚl + (0xffc00000)è=ðhtÚÈ(0xãc00000); })) + + ) + +437  + #IN6_IS_ADDR_V4MAPPED +( +a +) \ + +438 ( +__ex‹nsiÚ__ + \ + +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] =ð + `htÚl + (0xffff); })) + + ) + +444  + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +445 ( +__ex‹nsiÚ__ + \ + +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 ( +__ex‹nsiÚ__ + \ + +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Ú¡ +ušt32_t + *è( +a +))[0] == 0 \ + +463 && ((cÚ¡ +ušt32_t + *è( +a +))[1] == 0 \ + +464 && ((cÚ¡ +ušt32_t + *è( +a +))[2] == 0 \ + +465 && ((cÚ¡ +ušt32_t + *è( +a +))[3] =ð0) + + ) + +467  + #IN6_IS_ADDR_LOOPBACK +( +a +) \ + +468 (((cÚ¡ +ušt32_t + *è( +a +))[0] == 0 \ + +469 && ((cÚ¡ +ušt32_t + *è( +a +))[1] == 0 \ + +470 && ((cÚ¡ +ušt32_t + *è( +a +))[2] == 0 \ + +471 && ((cÚ¡ +ušt32_t + *è( +a +))[3] =ð + `htÚl + (1)) + + ) + +473  + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +474 ((((cÚ¡ +ušt32_t + *è( +a +))[0] & + `htÚl + (0xffc00000)) \ + +475 =ð + `htÚl + (0xã800000)) + + ) + +477  + #IN6_IS_ADDR_SITELOCAL +( +a +) \ + +478 ((((cÚ¡ +ušt32_t + *è( +a +))[0] & + `htÚl + (0xffc00000)) \ + +479 =ð + `htÚl + (0xãc00000)) + + ) + +481  + #IN6_IS_ADDR_V4MAPPED +( +a +) \ + +482 ((((cÚ¡ +ušt32_t + *è( +a +))[0] == 0) \ + +483 && (((cÚ¡ +ušt32_t + *è( +a +))[1] == 0) \ + +484 && (((cÚ¡ +ušt32_t + *è( +a +))[2] =ð + `htÚl + (0xffff))) + + ) + +486  + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +487 ((((cÚ¡ +ušt32_t + *è( +a +))[0] == 0) \ + +488 && (((cÚ¡ +ušt32_t + *è( +a +))[1] == 0) \ + +489 && (((cÚ¡ +ušt32_t + *è( +a +))[2] == 0) \ + +490 && ( + `Áohl + (((cÚ¡ +ušt32_t + *è( +a +))[3]è> 1)) + + ) + +492  + #IN6_ARE_ADDR_EQUAL +( +a +, +b +) \ + +493 ((((cÚ¡ +ušt32_t + *è( +a +))[0] =ð((cÚ¡ ušt32_ˆ*è( +b +))[0]) \ + +494 && (((cÚ¡ +ušt32_t + *è( +a +))[1] =ð((cÚ¡ ušt32_ˆ*è( +b +))[1]) \ + +495 && (((cÚ¡ +ušt32_t + *è( +a +))[2] =ð((cÚ¡ ušt32_ˆ*è( +b +))[2]) \ + +496 && (((cÚ¡ +ušt32_t + *è( +a +))[3] =ð((cÚ¡ ušt32_ˆ*è( +b +))[3])) + + ) + +499  + #IN6_IS_ADDR_MULTICAST +( +a +è(((cÚ¡ +ušt8_t + *è×))[0] =ð0xff) + + ) + +501 #ifdeà +__USE_MISC + + +503  + $bšd»svpÜt + ( +__sockfd +,  +sockaddr_š + * +__sock_š +è +__THROW +; + +506  + $bšd»svpÜt6 + ( +__sockfd +,  +sockaddr_š6 + * +__sock_š +) + +507 +__THROW +; + +511  + #IN6_IS_ADDR_MC_NODELOCAL +( +a +) \ + +512 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +513 && ((((cÚ¡ +ušt8_t + *è( +a +))[1] & 0xfè=ð0x1)) + + ) + +515  + #IN6_IS_ADDR_MC_LINKLOCAL +( +a +) \ + +516 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +517 && ((((cÚ¡ +ušt8_t + *è( +a +))[1] & 0xfè=ð0x2)) + + ) + +519  + #IN6_IS_ADDR_MC_SITELOCAL +( +a +) \ + +520 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +521 && ((((cÚ¡ +ušt8_t + *è( +a +))[1] & 0xfè=ð0x5)) + + ) + +523  + #IN6_IS_ADDR_MC_ORGLOCAL +( +a +) \ + +524 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +525 && ((((cÚ¡ +ušt8_t + *è( +a +))[1] & 0xfè=ð0x8)) + + ) + +527  + #IN6_IS_ADDR_MC_GLOBAL +( +a +) \ + +528 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +529 && ((((cÚ¡ +ušt8_t + *è( +a +))[1] & 0xfè=ð0xe)) + + ) + +532 #ifdeà +__USE_GNU + + +533  +cmsghdr +; + +535 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +537  + sš6_pktšfo + + +539  +š6_addr + +i6_addr +; + +540  +i6_ifšdex +; + +544  + s6_mtušfo + + +546  +sockaddr_š6 + +6m_addr +; + +547 +ušt32_t + +6m_mtu +; + +552  + $š‘6_ÝtiÚ_¥aû + ( +__nby‹s +) + +553 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +554  + $š‘6_ÝtiÚ_š™ + (* +__bp +,  +cmsghdr + ** +__cmsgp +, + +555  +__ty³ +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +556  + $š‘6_ÝtiÚ_­³nd + ( +cmsghdr + * +__cmsg +, + +557 cÚ¡ +ušt8_t + * +__ty³p +,  +__muÉx +, + +558  +__¶usy +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +559 +ušt8_t + * + $š‘6_ÝtiÚ_®loc + ( +cmsghdr + * +__cmsg +,  +__d©®’ +, + +560  +__muÉx +,  +__¶usy +) + +561 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +562  + $š‘6_ÝtiÚ_Ãxt + (cÚ¡  +cmsghdr + * +__cmsg +, + +563 +ušt8_t + ** +__Œp +) + +564 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +565  + $š‘6_ÝtiÚ_fšd + (cÚ¡  +cmsghdr + * +__cmsg +, + +566 +ušt8_t + ** +__Œp +,  +__ty³ +) + +567 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +571  + $š‘6_Ýt_š™ + (* +__extbuf +, +sockËn_t + +__exŽ’ +è +__THROW +; + +572  + $š‘6_Ýt_­³nd + (* +__extbuf +, +sockËn_t + +__exŽ’ +,  +__off£t +, + +573 +ušt8_t + +__ty³ +, +sockËn_t + +__Ën +, ušt8_ˆ +__®ign +, + +574 ** +__d©abuå +è +__THROW +; + +575  + $š‘6_Ýt_fšish + (* +__extbuf +, +sockËn_t + +__exŽ’ +,  +__off£t +) + +576 +__THROW +; + +577  + $š‘6_Ýt_£t_v® + (* +__d©abuf +,  +__off£t +, * +__v® +, + +578 +sockËn_t + +__v®Ën +è +__THROW +; + +579  + $š‘6_Ýt_Ãxt + (* +__extbuf +, +sockËn_t + +__exŽ’ +,  +__off£t +, + +580 +ušt8_t + * +__ty³p +, +sockËn_t + * +__ËÅ +, + +581 ** +__d©abuå +è +__THROW +; + +582  + $š‘6_Ýt_fšd + (* +__extbuf +, +sockËn_t + +__exŽ’ +,  +__off£t +, + +583 +ušt8_t + +__ty³ +, +sockËn_t + * +__ËÅ +, + +584 ** +__d©abuå +è +__THROW +; + +585  + $š‘6_Ýt_g‘_v® + (* +__d©abuf +,  +__off£t +, * +__v® +, + +586 +sockËn_t + +__v®Ën +è +__THROW +; + +590 +sockËn_t + + $š‘6_¹h_¥aû + ( +__ty³ +,  +__£gm’ts +è +__THROW +; + +591 * + $š‘6_¹h_š™ + (* +__bp +, +sockËn_t + +__bp_Ën +,  +__ty³ +, + +592  +__£gm’ts +è +__THROW +; + +593  + $š‘6_¹h_add + (* +__bp +, cÚ¡  +š6_addr + * +__addr +è +__THROW +; + +594  + $š‘6_¹h_»v”£ + (cÚ¡ * +__š +, * +__out +è +__THROW +; + +595  + $š‘6_¹h_£gm’ts + (cÚ¡ * +__bp +è +__THROW +; + +596  +š6_addr + * + $š‘6_¹h_g‘addr + (cÚ¡ * +__bp +,  +__šdex +) + +597 +__THROW +; + +603  + $g‘v4sourûfž‹r + ( +__s +,  +š_addr + +__š‹rçû_addr +, + +604  +š_addr + +__group +, +ušt32_t + * +__fmode +, + +605 +ušt32_t + * +__num¤c +,  +š_addr + * +__¦i¡ +) + +606 +__THROW +; + +609  + $£tv4sourûfž‹r + ( +__s +,  +š_addr + +__š‹rçû_addr +, + +610  +š_addr + +__group +, +ušt32_t + +__fmode +, + +611 +ušt32_t + +__num¤c +, + +612 cÚ¡  +š_addr + * +__¦i¡ +) + +613 +__THROW +; + +617  + $g‘sourûfž‹r + ( +__s +, +ušt32_t + +__š‹rçû_addr +, + +618 cÚ¡  +sockaddr + * +__group +, + +619 +sockËn_t + +__grou¶’ +, +ušt32_t + * +__fmode +, + +620 +ušt32_t + * +__num¤c +, + +621  +sockaddr_¡Üage + * +__¦i¡ +è +__THROW +; + +624  + $£tsourûfž‹r + ( +__s +, +ušt32_t + +__š‹rçû_addr +, + +625 cÚ¡  +sockaddr + * +__group +, + +626 +sockËn_t + +__grou¶’ +, +ušt32_t + +__fmode +, + +627 +ušt32_t + +__num¤c +, + +628 cÚ¡  +sockaddr_¡Üage + * +__¦i¡ +è +__THROW +; + +631 +__END_DECLS + + + @/usr/include/setjmp.h + +22 #iâdef +_SETJMP_H + + +23  + #_SETJMP_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27 + g__BEGIN_DECLS + + +29  + ~ + +30  + ~ + +34  + s__jmp_buf_g + + +40 +__jmp_buf + + m__jmpbuf +; + +41  + m__mask_was_§ved +; + +42 +__sig£t_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  + $__sig£tjmp + ( +__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  + $lÚgjmp + ( +__jmp_buf_g + +__’v +[1],  +__v® +) + +75 +__THROWNL + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +77 +__END_NAMESPACE_STD + + +79 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +83  + $_lÚgjmp + ( +__jmp_buf_g + +__’v +[1],  +__v® +) + +84 +__THROWNL + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +88 #ifdef +__USE_POSIX + + +92  +__jmp_buf_g + + tsigjmp_buf +[1]; + +96  + #sig£tjmp +( +’v +, +§vemask +è + `__sig£tjmp + (’v, savemask) + + ) + +102  + $siglÚgjmp + ( +sigjmp_buf + +__’v +,  +__v® +) + +103 +__THROWNL + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +108 #ià +__USE_FORTIFY_LEVEL + > 0 + +109  + ~ + +112 +__END_DECLS + + + @/usr/include/signal.h + +22 #iâdef +_SIGNAL_H + + +24 #ià! +defšed + +__Ãed_sig_©omic_t + && !defšed +__Ãed_sig£t_t + + +25  + #_SIGNAL_H + + + ) + +28  + ~<ã©u»s.h +> + +30 + g__BEGIN_DECLS + + +32  + ~ + +36 #ià +defšed + +__Ãed_sig_©omic_t + || defšed +_SIGNAL_H + + +37 #iâdeà +__sig_©omic_t_defšed + + +38  + #__sig_©omic_t_defšed + + + ) + +39 +__BEGIN_NAMESPACE_STD + + +40  +__sig_©omic_t + + tsig_©omic_t +; + +41 + g__END_NAMESPACE_STD + + +43 #undeà +__Ãed_sig_©omic_t + + +46 #ià +defšed + +__Ãed_sig£t_t + || (defšed +_SIGNAL_H + && defšed +__USE_POSIX +) + +47 #iâdeà +__sig£t_t_defšed + + +48  + #__sig£t_t_defšed + + + ) + +49  +__sig£t_t + + tsig£t_t +; + +51 #undeà +__Ãed_sig£t_t + + +54 #ifdeà +_SIGNAL_H + + +56  + ~ + +57  + ~ + +59 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +60 #iâdeà +__pid_t_defšed + + +61  +__pid_t + + tpid_t +; + +62  + #__pid_t_defšed + + + ) + +64 #ifdeà +__USE_XOPEN + + +66 #iâdeà +__uid_t_defšed + + +67  +__uid_t + + tuid_t +; + +68  + #__uid_t_defšed + + + ) + +72 #ifdeà +__USE_POSIX199309 + + +74  + #__Ãed_time¥ec + + + ) + +75  + ~ + +78 #ià +defšed + +__USE_POSIX199309 + || defšed +__USE_XOPEN_EXTENDED + + +80  + ~ + +85 (* + t__sighªdËr_t +) (); + +90 +__sighªdËr_t + + $__sysv_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +91 +__THROW +; + +92 #ifdeà +__USE_GNU + + +93 +__sighªdËr_t + + $sysv_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +94 +__THROW +; + +100 +__BEGIN_NAMESPACE_STD + + +101 #ifdeà +__USE_MISC + + +102 +__sighªdËr_t + + $sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +103 +__THROW +; + +106 #ifdeà +__REDIRECT_NTH + + +107 +__sighªdËr_t + + `__REDIRECT_NTH + ( +sigÇl +, + +108 ( +__sig +, +__sighªdËr_t + +__hªdËr +), + +109 +__sysv_sigÇl +); + +111  + #sigÇl + +__sysv_sigÇl + + + ) + +114 +__END_NAMESPACE_STD + + +116 #ifdeà +__USE_XOPEN + + +119 +__sighªdËr_t + + $bsd_sigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +120 +__THROW +; + +126 #ifdeà +__USE_POSIX + + +127  + $kžl + ( +__pid_t + +__pid +,  +__sig +è +__THROW +; + +130 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +134  + $kžÍg + ( +__pid_t + +__pg½ +,  +__sig +è +__THROW +; + +137 +__BEGIN_NAMESPACE_STD + + +139  + $¿i£ + ( +__sig +è +__THROW +; + +140 +__END_NAMESPACE_STD + + +142 #ifdeà +__USE_MISC + + +144 +__sighªdËr_t + + $ssigÇl + ( +__sig +, +__sighªdËr_t + +__hªdËr +) + +145 +__THROW +; + +146  + $gsigÇl + ( +__sig +è +__THROW +; + +149 #ifdeà +__USE_XOPEN2K8 + + +151  + `psigÇl + ( +__sig +, cÚ¡ * +__s +); + +154  + `psigšfo + (cÚ¡ +sigšfo_t + * +__pšfo +, cÚ¡ * +__s +); + +166 #ifdeà +__USE_XOPEN + + +167 #ifdeà +__GNUC__ + + +168  + $sig·u£ + ( +__sig +è + `__asm__ + ("__xpg_sigpause"); + +170  + `__sig·u£ + ( +__sig_Ü_mask +,  +__is_sig +); + +172  + #sig·u£ +( +sig +è + `__sig·u£ + ((sig), 1) + + ) + +177 #ifdeà +__USE_MISC + + +184  + #sigmask +( +sig +è + `__sigmask +(sig) + + ) + +187  + $sigblock + ( +__mask +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +190  + $sig£tmask + ( +__mask +è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +193  + $sigg‘mask + (è +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +197 #ifdeà +__USE_MISC + + +198  + #NSIG + +_NSIG + + + ) + +201 #ifdeà +__USE_GNU + + +202  +__sighªdËr_t + + tsighªdËr_t +; + +206 #ifdeà +__USE_MISC + + +207  +__sighªdËr_t + + tsig_t +; + +210 #ifdeà +__USE_POSIX + + +213  + $sigem±y£t + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +216  + $sigfžl£t + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +219  + $sigadd£t + ( +sig£t_t + * +__£t +,  +__signo +è +__THROW + + `__nÚnuÎ + ((1)); + +222  + $sigd–£t + ( +sig£t_t + * +__£t +,  +__signo +è +__THROW + + `__nÚnuÎ + ((1)); + +225  + $sigismemb” + (cÚ¡ +sig£t_t + * +__£t +,  +__signo +) + +226 +__THROW + + `__nÚnuÎ + ((1)); + +228 #ifdeà +__USE_GNU + + +230  + $sigi£m±y£t + (cÚ¡ +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +233  + $sigªd£t + ( +sig£t_t + * +__£t +, cÚ¡ sig£t_ˆ* +__Ëá +, + +234 cÚ¡ +sig£t_t + * +__right +è +__THROW + + `__nÚnuÎ + ((1, 2, 3)); + +237  + $sigÜ£t + ( +sig£t_t + * +__£t +, cÚ¡ sig£t_ˆ* +__Ëá +, + +238 cÚ¡ +sig£t_t + * +__right +è +__THROW + + `__nÚnuÎ + ((1, 2, 3)); + +243  + ~ + +246  + $sig´ocmask + ( +__how +, cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, + +247 +sig£t_t + * +__»¡riù + +__o£t +è +__THROW +; + +254  + $sigsu¥’d + (cÚ¡ +sig£t_t + * +__£t +è + `__nÚnuÎ + ((1)); + +257  + $sigaùiÚ + ( +__sig +, cÚ¡  +sigaùiÚ + * +__»¡riù + +__aù +, + +258  +sigaùiÚ + * +__»¡riù + +__ßù +è +__THROW +; + +261  + $sig³ndšg + ( +sig£t_t + * +__£t +è +__THROW + + `__nÚnuÎ + ((1)); + +268  + $sigwa™ + (cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, *__»¡riù +__sig +) + +269 + `__nÚnuÎ + ((1, 2)); + +271 #ifdeà +__USE_POSIX199309 + + +276  + $sigwa™šfo + (cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, + +277 +sigšfo_t + * +__»¡riù + +__šfo +è + `__nÚnuÎ + ((1)); + +284  + $sigtimedwa™ + (cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, + +285 +sigšfo_t + * +__»¡riù + +__šfo +, + +286 cÚ¡  +time¥ec + * +__»¡riù + +__timeout +) + +287 + `__nÚnuÎ + ((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  + $sig»tuº + ( +sigcڋxt + * +__sý +è +__THROW +; + +314 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +315  + #__Ãed_size_t + + + ) + +316  + ~<¡ddef.h +> + +321  + $sigš‹¼u± + ( +__sig +,  +__š‹¼u± +è +__THROW +; + +323  + ~ + +324 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +326  + ~ + +332  + $sig¡ack + ( +sig¡ack + * +__ss +, sig¡ack * +__oss +) + +333 +__THROW + +__©Œibu‹_d•»ÿ‹d__ +; + +337  + $sig®t¡ack + (cÚ¡  +sig®t¡ack + * +__»¡riù + +__ss +, + +338  +sig®t¡ack + * +__»¡riù + +__oss +è +__THROW +; + +342 #ifdeà +__USE_XOPEN_EXTENDED + + +346  + $sighÞd + ( +__sig +è +__THROW +; + +349  + $sig»l£ + ( +__sig +è +__THROW +; + +352  + $sigignÜe + ( +__sig +è +__THROW +; + +355 +__sighªdËr_t + + $sig£t + ( +__sig +, +__sighªdËr_t + +__di¥ +è +__THROW +; + +358 #ià +defšed + +__USE_POSIX199506 + || defšed +__USE_UNIX98 + + +361  + ~ + +362  + ~ + +369  + $__libc_cu¼’t_sig¹mš + (è +__THROW +; + +371  + $__libc_cu¼’t_sig¹max + (è +__THROW +; + +375 +__END_DECLS + + + @/usr/include/stdint.h + +22 #iâdeà +_STDINT_H + + +23  + #_STDINT_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +26  + ~ + +27  + ~ + +34 #iâdeà +__št8_t_defšed + + +35  + #__št8_t_defšed + + + ) + +36 sigÃd  + tšt8_t +; + +37  + tšt16_t +; + +38  + tšt32_t +; + +39 #ià +__WORDSIZE + == 64 + +40  + tšt64_t +; + +42 +__ex‹nsiÚ__ + + +43  + tšt64_t +; + +48  + tušt8_t +; + +49  + tušt16_t +; + +50 #iâdeà +__ušt32_t_defšed + + +51  + tušt32_t +; + +52  + #__ušt32_t_defšed + + + ) + +54 #ià +__WORDSIZE + == 64 + +55  + tušt64_t +; + +57 +__ex‹nsiÚ__ + + +58  + tušt64_t +; + +65 sigÃd  + tšt_Ëa¡8_t +; + +66  + tšt_Ëa¡16_t +; + +67  + tšt_Ëa¡32_t +; + +68 #ià +__WORDSIZE + == 64 + +69  + tšt_Ëa¡64_t +; + +71 +__ex‹nsiÚ__ + + +72  + tšt_Ëa¡64_t +; + +76  + tušt_Ëa¡8_t +; + +77  + tušt_Ëa¡16_t +; + +78  + tušt_Ëa¡32_t +; + +79 #ià +__WORDSIZE + == 64 + +80  + tušt_Ëa¡64_t +; + +82 +__ex‹nsiÚ__ + + +83  + tušt_Ëa¡64_t +; + +90 sigÃd  + tšt_ç¡8_t +; + +91 #ià +__WORDSIZE + == 64 + +92  + tšt_ç¡16_t +; + +93  + tšt_ç¡32_t +; + +94  + tšt_ç¡64_t +; + +96  + tšt_ç¡16_t +; + +97  + tšt_ç¡32_t +; + +98 +__ex‹nsiÚ__ + + +99  + tšt_ç¡64_t +; + +103  + tušt_ç¡8_t +; + +104 #ià +__WORDSIZE + == 64 + +105  + tušt_ç¡16_t +; + +106  + tušt_ç¡32_t +; + +107  + tušt_ç¡64_t +; + +109  + tušt_ç¡16_t +; + +110  + tušt_ç¡32_t +; + +111 +__ex‹nsiÚ__ + + +112  + tušt_ç¡64_t +; + +117 #ià +__WORDSIZE + == 64 + +118 #iâdeà +__šŒ_t_defšed + + +119  + tšŒ_t +; + +120  + #__šŒ_t_defšed + + + ) + +122  + tušŒ_t +; + +124 #iâdeà +__šŒ_t_defšed + + +125  + tšŒ_t +; + +126  + #__šŒ_t_defšed + + + ) + +128  + tušŒ_t +; + +133 #ià +__WORDSIZE + == 64 + +134  + tštmax_t +; + +135  + tuštmax_t +; + +137 +__ex‹nsiÚ__ + + +138  + tštmax_t +; + +139 +__ex‹nsiÚ__ + + +140  + tuštmax_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 #iâdeà +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 #iâdeà +_STDIO_H + + +25 #ià! +defšed + +__Ãed_FILE + && !defšed +__Ãed___FILE + + +26  + #_STDIO_H + 1 + + ) + +27  + ~<ã©u»s.h +> + +29 + g__BEGIN_DECLS + + +31  + #__Ãed_size_t + + + ) + +32  + #__Ãed_NULL + + + ) + +33  + ~<¡ddef.h +> + +35  + ~ + +36  + #__Ãed_FILE + + + ) + +37  + #__Ãed___FILE + + + ) + +41 #ià! +defšed + +__FILE_defšed + && defšed +__Ãed_FILE + + +44  + g_IO_FILE +; + +46 +__BEGIN_NAMESPACE_STD + + +48  +_IO_FILE + + tFILE +; + +49 + g__END_NAMESPACE_STD + + +50 #ià +defšed + +__USE_LARGEFILE64 + || defšed +__USE_POSIX + \ + +51 || +defšed + + g__USE_ISOC99 + || defšed + g__USE_XOPEN + \ + +52 || +defšed + +__USE_POSIX2 + + +53 + $__USING_NAMESPACE_STD +( +FILE +) + +56  + #__FILE_defšed + 1 + + ) + +58 #undeà +__Ãed_FILE + + +61 #ià! +defšed + +____FILE_defšed + && defšed +__Ãed___FILE + + +64  +_IO_FILE + + t__FILE +; + +66  + #____FILE_defšed + 1 + + ) + +68 #undeà +__Ãed___FILE + + +71 #ifdef +_STDIO_H + + +72  + #_STDIO_USES_IOSTREAM + + + ) + +74  + ~ + +76 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +77 #ifdeà +__GNUC__ + + +78 #iâdeà +_VA_LIST_DEFINED + + +79  +_G_va_li¡ + + tva_li¡ +; + +80  + #_VA_LIST_DEFINED + + + ) + +83  + ~<¡d¬g.h +> + +87 #ifdeà +__USE_XOPEN2K8 + + +88 #iâdeà +__off_t_defšed + + +89 #iâdeà +__USE_FILE_OFFSET64 + + +90  +__off_t + + toff_t +; + +92  +__off64_t + + toff_t +; + +94  + #__off_t_defšed + + + ) + +96 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +97  +__off64_t + + toff64_t +; + +98  + #__off64_t_defšed + + + ) + +101 #iâdeà +__ssize_t_defšed + + +102  +__ssize_t + + tssize_t +; + +103  + #__ssize_t_defšed + + + ) + +108 +__BEGIN_NAMESPACE_STD + + +109 #iâdeà +__USE_FILE_OFFSET64 + + +110  +_G_åos_t + + tåos_t +; + +112  +_G_åos64_t + + tåos_t +; + +114 +__END_NAMESPACE_STD + + +115 #ifdeà +__USE_LARGEFILE64 + + +116  +_G_åos64_t + + tåos64_t +; + +120  + #_IOFBF + 0 + + ) + +121  + #_IOLBF + 1 + + ) + +122  + #_IONBF + 2 + + ) + +126 #iâdeà +BUFSIZ + + +127  + #BUFSIZ + +_IO_BUFSIZ + + + ) + +133 #iâdeà +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à +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +151  + #P_tmpdœ + "/tmp" + + ) + +164  + ~ + +168  +_IO_FILE + * +¡dš +; + +169  +_IO_FILE + * +¡dout +; + +170  +_IO_FILE + * +¡d”r +; + +172  + #¡dš + +¡dš + + + ) + +173  + #¡dout + +¡dout + + + ) + +174  + #¡d”r + +¡d”r + + + ) + +176 +__BEGIN_NAMESPACE_STD + + +178  + $»move + (cÚ¡ * +__fž’ame +è +__THROW +; + +180  + $»Çme + (cÚ¡ * +__Þd +, cÚ¡ * +__Ãw +è +__THROW +; + +181 +__END_NAMESPACE_STD + + +183 #ifdeà +__USE_ATFILE + + +185  + $»Çm—t + ( +__Þdfd +, cÚ¡ * +__Þd +,  +__Ãwfd +, + +186 cÚ¡ * +__Ãw +è +__THROW +; + +189 +__BEGIN_NAMESPACE_STD + + +194 #iâdeà +__USE_FILE_OFFSET64 + + +195 +FILE + * + $tmpfže + (è +__wur +; + +197 #ifdeà +__REDIRECT + + +198 +FILE + * + `__REDIRECT + ( +tmpfže +, (), +tmpfže64 +è +__wur +; + +200  + #tmpfže + +tmpfže64 + + + ) + +204 #ifdeà +__USE_LARGEFILE64 + + +205 +FILE + * + $tmpfže64 + (è +__wur +; + +209 * + $tm²am + (* +__s +è +__THROW + +__wur +; + +210 +__END_NAMESPACE_STD + + +212 #ifdeà +__USE_MISC + + +215 * + $tm²am_r + (* +__s +è +__THROW + +__wur +; + +219 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +227 * + $‹m²am + (cÚ¡ * +__dœ +, cÚ¡ * +__pfx +) + +228 +__THROW + +__©Œibu‹_m®loc__ + +__wur +; + +232 +__BEGIN_NAMESPACE_STD + + +237  + `fþo£ + ( +FILE + * +__¡»am +); + +242  + `fæush + ( +FILE + * +__¡»am +); + +243 +__END_NAMESPACE_STD + + +245 #ifdeà +__USE_MISC + + +252  + `fæush_uÆocked + ( +FILE + * +__¡»am +); + +255 #ifdeà +__USE_GNU + + +262  + `fþo£®l + (); + +266 +__BEGIN_NAMESPACE_STD + + +267 #iâdeà +__USE_FILE_OFFSET64 + + +272 +FILE + * + $fݒ + (cÚ¡ * +__»¡riù + +__fž’ame +, + +273 cÚ¡ * +__»¡riù + +__modes +è +__wur +; + +278 +FILE + * + $äeݒ + (cÚ¡ * +__»¡riù + +__fž’ame +, + +279 cÚ¡ * +__»¡riù + +__modes +, + +280 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +282 #ifdeà +__REDIRECT + + +283 +FILE + * + `__REDIRECT + ( +fݒ +, (cÚ¡ * +__»¡riù + +__fž’ame +, + +284 cÚ¡ * +__»¡riù + +__modes +), +fݒ64 +) + +285 +__wur +; + +286 +FILE + * + `__REDIRECT + ( +äeݒ +, (cÚ¡ * +__»¡riù + +__fž’ame +, + +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ù + +__fž’ame +, + +298 cÚ¡ * +__»¡riù + +__modes +è +__wur +; + +299 +FILE + * + $äeݒ64 + (cÚ¡ * +__»¡riù + +__fž’ame +, + +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_funùiÚs_t + +__io_funcs +è +__THROW + +__wur +; + +317 #ifdeà +__USE_XOPEN2K8 + + +319 +FILE + * + $fmemݒ + (* +__s +, +size_t + +__Ën +, cÚ¡ * +__modes +) + +320 +__THROW + +__wur +; + +325 +FILE + * + $ݒ_mem¡»am + (** +__buæoc +, +size_t + * +__siz–oc +è +__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  + $£tbufãr + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +, + +344 +size_t + +__size +è +__THROW +; + +347  + $£Žšebuf + ( +FILE + * +__¡»am +è +__THROW +; + +351 +__BEGIN_NAMESPACE_STD + + +356  + `årštf + ( +FILE + * +__»¡riù + +__¡»am +, + +357 cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +362  + `´štf + (cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +364  + $¥rštf + (* +__»¡riù + +__s +, + +365 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROWNL +; + +371  + `vårštf + ( +FILE + * +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fÜm© +, + +372 +_G_va_li¡ + +__¬g +); + +377  + `v´štf + (cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +); + +379  + $v¥rštf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fÜm© +, + +380 +_G_va_li¡ + +__¬g +è +__THROWNL +; + +381 +__END_NAMESPACE_STD + + +383 #ià +defšed + +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +384 +__BEGIN_NAMESPACE_C99 + + +386  + $¢´štf + (* +__»¡riù + +__s +, +size_t + +__maxËn +, + +387 cÚ¡ * +__»¡riù + +__fÜm© +, ...) + +388 +__THROWNL + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 4))); + +390  + $v¢´štf + (* +__»¡riù + +__s +, +size_t + +__maxËn +, + +391 cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +392 +__THROWNL + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 0))); + +393 +__END_NAMESPACE_C99 + + +396 #ifdeà +__USE_GNU + + +399  + $va¥rštf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__f +, + +400 +_G_va_li¡ + +__¬g +) + +401 +__THROWNL + + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__´štf__ +, 2, 0))è +__wur +; + +402  + $__a¥rštf + (** +__»¡riù + +__±r +, + +403 cÚ¡ * +__»¡riù + +__fmt +, ...) + +404 +__THROWNL + + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__´štf__ +, 2, 3))è +__wur +; + +405  + $a¥rštf + (** +__»¡riù + +__±r +, + +406 cÚ¡ * +__»¡riù + +__fmt +, ...) + +407 +__THROWNL + + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__´štf__ +, 2, 3))è +__wur +; + +410 #ifdeà +__USE_XOPEN2K8 + + +412  + $vd´štf + ( +__fd +, cÚ¡ * +__»¡riù + +__fmt +, + +413 +_G_va_li¡ + +__¬g +) + +414 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 0))); + +415  + $d´štf + ( +__fd +, cÚ¡ * +__»¡riù + +__fmt +, ...) + +416 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +420 +__BEGIN_NAMESPACE_STD + + +425  + $fsÿnf + ( +FILE + * +__»¡riù + +__¡»am +, + +426 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__wur +; + +431  + $sÿnf + (cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__wur +; + +433  + $ssÿnf + (cÚ¡ * +__»¡riù + +__s +, + +434 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +436 #ià +defšed + +__USE_ISOC99 + && !defšed +__USE_GNU + \ + +437 && (! +defšed + +__LDBL_COMPAT + || !defšed +__REDIRECT +) \ + +438 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +439 #ifdeà +__REDIRECT + + +443  + `__REDIRECT + ( +fsÿnf +, ( +FILE + * +__»¡riù + +__¡»am +, + +444 cÚ¡ * +__»¡riù + +__fÜm© +, ...), + +445 +__isoc99_fsÿnf +è +__wur +; + +446  + `__REDIRECT + ( +sÿnf +, (cÚ¡ * +__»¡riù + +__fÜm© +, ...), + +447 +__isoc99_sÿnf +è +__wur +; + +448  + `__REDIRECT_NTH + ( +ssÿnf +, (cÚ¡ * +__»¡riù + +__s +, + +449 cÚ¡ * +__»¡riù + +__fÜm© +, ...), + +450 +__isoc99_ssÿnf +); + +452  + $__isoc99_fsÿnf + ( +FILE + * +__»¡riù + +__¡»am +, + +453 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__wur +; + +454  + $__isoc99_sÿnf + (cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__wur +; + +455  + $__isoc99_ssÿnf + (cÚ¡ * +__»¡riù + +__s +, + +456 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +457  + #fsÿnf + +__isoc99_fsÿnf + + + ) + +458  + #sÿnf + +__isoc99_sÿnf + + + ) + +459  + #ssÿnf + +__isoc99_ssÿnf + + + ) + +463 +__END_NAMESPACE_STD + + +465 #ifdef +__USE_ISOC99 + + +466 +__BEGIN_NAMESPACE_C99 + + +471  + $vfsÿnf + ( +FILE + * +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fÜm© +, + +472 +_G_va_li¡ + +__¬g +) + +473 + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__sÿnf__ +, 2, 0))è +__wur +; + +479  + $vsÿnf + (cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +480 + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__sÿnf__ +, 1, 0))è +__wur +; + +483  + $vssÿnf + (cÚ¡ * +__»¡riù + +__s +, + +484 cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +) + +485 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__sÿnf__ +, 2, 0))); + +487 #ià! +defšed + +__USE_GNU + \ + +488 && (! +defšed + +__LDBL_COMPAT + || !defšed +__REDIRECT +) \ + +489 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +490 #ifdeà +__REDIRECT + + +494  + `__REDIRECT + ( +vfsÿnf +, + +495 ( +FILE + * +__»¡riù + +__s +, + +496 cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__¬g +), + +497 +__isoc99_vfsÿnf +) + +498 + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__sÿnf__ +, 2, 0))è +__wur +; + +499  + `__REDIRECT + ( +vsÿnf +, (cÚ¡ * +__»¡riù + +__fÜm© +, + +500 +_G_va_li¡ + +__¬g +), +__isoc99_vsÿnf +) + +501 + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__sÿnf__ +, 1, 0))è +__wur +; + +502  + `__REDIRECT_NTH + ( +vssÿnf +, + +503 (cÚ¡ * +__»¡riù + +__s +, + +504 cÚ¡ * +__»¡riù + +__fÜm© +, + +505 +_G_va_li¡ + +__¬g +), +__isoc99_vssÿnf +) + +506 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__sÿnf__ +, 2, 0))); + +508  + $__isoc99_vfsÿnf + ( +FILE + * +__»¡riù + +__s +, + +509 cÚ¡ * +__»¡riù + +__fÜm© +, + +510 +_G_va_li¡ + +__¬g +è +__wur +; + +511  + $__isoc99_vsÿnf + (cÚ¡ * +__»¡riù + +__fÜm© +, + +512 +_G_va_li¡ + +__¬g +è +__wur +; + +513  + $__isoc99_vssÿnf + (cÚ¡ * +__»¡riù + +__s +, + +514 cÚ¡ * +__»¡riù + +__fÜm© +, + +515 +_G_va_li¡ + +__¬g +è +__THROW +; + +516  + #vfsÿnf + +__isoc99_vfsÿnf + + + ) + +517  + #vsÿnf + +__isoc99_vsÿnf + + + ) + +518  + #vssÿnf + +__isoc99_vssÿnf + + + ) + +522 +__END_NAMESPACE_C99 + + +526 +__BEGIN_NAMESPACE_STD + + +531  + `fg‘c + ( +FILE + * +__¡»am +); + +532  + `g‘c + ( +FILE + * +__¡»am +); + +538  + `g‘ch¬ + (); + +539 +__END_NAMESPACE_STD + + +543  + #g‘c +( +_å +è + `_IO_g‘c + (_å) + + ) + +545 #ifdeà +__USE_POSIX + + +550  + `g‘c_uÆocked + ( +FILE + * +__¡»am +); + +551  + `g‘ch¬_uÆocked + (); + +554 #ifdeà +__USE_MISC + + +561  + `fg‘c_uÆocked + ( +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_uÆocked + ( +__c +, +FILE + * +__¡»am +); + +597 #ifdeà +__USE_POSIX + + +602  + `putc_uÆocked + ( +__c +, +FILE + * +__¡»am +); + +603  + `putch¬_uÆocked + ( +__c +); + +607 #ià +defšed + +__USE_MISC + \ + +608 || ( +defšed + +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +610  + `g‘w + ( +FILE + * +__¡»am +); + +613  + `putw + ( +__w +, +FILE + * +__¡»am +); + +617 +__BEGIN_NAMESPACE_STD + + +622 * + $fg‘s + (* +__»¡riù + +__s +,  +__n +, +FILE + *__»¡riù +__¡»am +) + +623 +__wur +; + +625 #ià! +defšed + +__USE_ISOC11 + \ + +626 || ( +defšed + +__ýlu¥lus + && __cplusplus <= 201103L) + +638 * + $g‘s + (* +__s +è +__wur + +__©Œibu‹_d•»ÿ‹d__ +; + +640 +__END_NAMESPACE_STD + + +642 #ifdeà +__USE_GNU + + +649 * + $fg‘s_uÆocked + (* +__»¡riù + +__s +,  +__n +, + +650 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +654 #ifdef +__USE_XOPEN2K8 + + +665 +_IO_ssize_t + + $__g‘d–im + (** +__»¡riù + +__lš•Œ +, + +666 +size_t + * +__»¡riù + +__n +,  +__d–im™” +, + +667 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +668 +_IO_ssize_t + + $g‘d–im + (** +__»¡riù + +__lš•Œ +, + +669 +size_t + * +__»¡riù + +__n +,  +__d–im™” +, + +670 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +678 +_IO_ssize_t + + $g‘lše + (** +__»¡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  + `ung‘c + ( +__c +, +FILE + * +__¡»am +); + +709 +size_t + + $ä—d + (* +__»¡riù + +__±r +, +size_t + +__size +, + +710 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +715 +size_t + + `fwr™e + (cÚ¡ * +__»¡riù + +__±r +, size_ˆ +__size +, + +716 +size_t + +__n +, +FILE + * +__»¡riù + +__s +); + +717 +__END_NAMESPACE_STD + + +719 #ifdeà +__USE_GNU + + +726  + `åuts_uÆocked + (cÚ¡ * +__»¡riù + +__s +, + +727 +FILE + * +__»¡riù + +__¡»am +); + +730 #ifdeà +__USE_MISC + + +737 +size_t + + $ä—d_uÆocked + (* +__»¡riù + +__±r +, +size_t + +__size +, + +738 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +739 +size_t + + `fwr™e_uÆocked + (cÚ¡ * +__»¡riù + +__±r +, size_ˆ +__size +, + +740 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +); + +744 +__BEGIN_NAMESPACE_STD + + +749  + `f£ek + ( +FILE + * +__¡»am +,  +__off +,  +__wh’û +); + +754  + $á–l + ( +FILE + * +__¡»am +è +__wur +; + +759  + `»wšd + ( +FILE + * +__¡»am +); + +760 +__END_NAMESPACE_STD + + +767 #ià +defšed + +__USE_LARGEFILE + || defšed +__USE_XOPEN2K + + +768 #iâdeà +__USE_FILE_OFFSET64 + + +773  + `f£eko + ( +FILE + * +__¡»am +, +__off_t + +__off +,  +__wh’û +); + +778 +__off_t + + $á–lo + ( +FILE + * +__¡»am +è +__wur +; + +780 #ifdeà +__REDIRECT + + +781  + `__REDIRECT + ( +f£eko +, + +782 ( +FILE + * +__¡»am +, +__off64_t + +__off +,  +__wh’û +), + +783 +f£eko64 +); + +784 +__off64_t + + `__REDIRECT + ( +á–lo +, ( +FILE + * +__¡»am +), +á–lo64 +); + +786  + #f£eko + +f£eko64 + + + ) + +787  + #á–lo + +á–lo64 + + + ) + +792 +__BEGIN_NAMESPACE_STD + + +793 #iâdeà +__USE_FILE_OFFSET64 + + +798  + `fg‘pos + ( +FILE + * +__»¡riù + +__¡»am +, +åos_t + *__»¡riù +__pos +); + +803  + `f£os + ( +FILE + * +__¡»am +, cÚ¡ +åos_t + * +__pos +); + +805 #ifdeà +__REDIRECT + + +806  + `__REDIRECT + ( +fg‘pos +, ( +FILE + * +__»¡riù + +__¡»am +, + +807 +åos_t + * +__»¡riù + +__pos +), +fg‘pos64 +); + +808  + `__REDIRECT + ( +f£os +, + +809 ( +FILE + * +__¡»am +, cÚ¡ +åos_t + * +__pos +), +f£os64 +); + +811  + #fg‘pos + +fg‘pos64 + + + ) + +812  + #f£os + +f£os64 + + + ) + +815 +__END_NAMESPACE_STD + + +817 #ifdeà +__USE_LARGEFILE64 + + +818  + `f£eko64 + ( +FILE + * +__¡»am +, +__off64_t + +__off +,  +__wh’û +); + +819 +__off64_t + + $á–lo64 + ( +FILE + * +__¡»am +è +__wur +; + +820  + `fg‘pos64 + ( +FILE + * +__»¡riù + +__¡»am +, +åos64_t + *__»¡riù +__pos +); + +821  + `f£os64 + ( +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  + $þ—»¼_uÆocked + ( +FILE + * +__¡»am +è +__THROW +; + +836  + $ãof_uÆocked + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +837  + $ã¼Ü_uÆocked + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +841 +__BEGIN_NAMESPACE_STD + + +846  + `³¼Ü + (cÚ¡ * +__s +); + +847 +__END_NAMESPACE_STD + + +853  + ~ + +856 #ifdef +__USE_POSIX + + +858  + $fž’o + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +861 #ifdeà +__USE_MISC + + +863  + $fž’o_uÆocked + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +867 #ifdeà +__USE_POSIX2 + + +872 +FILE + * + $pݒ + (cÚ¡ * +__commªd +, cÚ¡ * +__modes +è +__wur +; + +878  + `pþo£ + ( +FILE + * +__¡»am +); + +882 #ifdef +__USE_POSIX + + +884 * + $ù”mid + (* +__s +è +__THROW +; + +888 #ifdeà +__USE_XOPEN + + +890 * + `cu£rid + (* +__s +); + +894 #ifdef +__USE_GNU + + +895  +ob¡ack +; + +898  + $ob¡ack_´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +899 cÚ¡ * +__»¡riù + +__fÜm© +, ...) + +900 +__THROWNL + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 3))); + +901  + $ob¡ack_v´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +902 cÚ¡ * +__»¡riù + +__fÜm© +, + +903 +_G_va_li¡ + +__¬gs +) + +904 +__THROWNL + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 2, 0))); + +908 #ifdeà +__USE_POSIX + + +912  + $æockfže + ( +FILE + * +__¡»am +è +__THROW +; + +916  + $árylockfže + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +919  + $fuÆockfže + ( +FILE + * +__¡»am +è +__THROW +; + +922 #ià +defšed + +__USE_XOPEN + && !defšed +__USE_XOPEN2K + && !defšed +__USE_GNU + + +926  + #__Ãed_g‘Ýt + + + ) + +927  + ~ + +932 #ifdeà +__USE_EXTERN_INLINES + + +933  + ~ + +935 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +936  + ~ + +938 #ifdeà +__LDBL_COMPAT + + +939  + ~ + +942 +__END_DECLS + + + @/usr/include/stdlib.h + +22 #iâdef +_STDLIB_H + + +24  + ~<ã©u»s.h +> + +27  + #__Ãed_size_t + + + ) + +28 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +29  + #__Ãed_wch¬_t + + + ) + +30  + #__Ãed_NULL + + + ) + +32  + ~<¡ddef.h +> + +34 + g__BEGIN_DECLS + + +36 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +37  + #_STDLIB_H + 1 + + ) + +39 #ià( +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 +è&& !defšed +_SYS_WAIT_H + + +41  + ~ + +42  + ~ + +44 #ifdeà +__USE_MISC + + +49 #ià +defšed + +__GNUC__ + && !defšed +__ýlu¥lus + + +50  + #__WAIT_INT +( +¡©us +) \ + +51 ( + `__ex‹nsiÚ__ + (((uniÚ { + `__ty³of +( +¡©us +è +__š +;  +__i +; }) \ + +52 { . +__š + = ( +¡©us +è}). +__i +)) + + ) + +54  + #__WAIT_INT +( +¡©us +è(*(*è&(¡©us)) + + ) + +62 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 || defšed +__ýlu¥lus + + +63  + #__WAIT_STATUS + * + + ) + +64  + #__WAIT_STATUS_DEFN + * + + ) + +69  +wa™ + * + m__u±r +; + +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  + m»m +; + +101 } + tdiv_t +; + +104 #iâdeà +__ldiv_t_defšed + + +107  + mquÙ +; + +108  + m»m +; + +109 } + tldiv_t +; + +110  + #__ldiv_t_defšed + 1 + + ) + +112 + g__END_NAMESPACE_STD + + +114 #ià +defšed + +__USE_ISOC99 + && !defšed +__Îdiv_t_defšed + + +115 +__BEGIN_NAMESPACE_C99 + + +117 +__ex‹nsiÚ__ + struct + +119  + mquÙ +; + +120  + m»m +; + +121 } + tÎdiv_t +; + +122  + #__Îdiv_t_defšed + 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»__ + + `__nÚnuÎ + ((1)è +__wur +; + +147  + $©oi + (cÚ¡ * +__Ō +) + +148 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)è +__wur +; + +150  + $©Þ + (cÚ¡ * +__Ō +) + +151 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)è +__wur +; + +152 +__END_NAMESPACE_STD + + +154 #ifdeà +__USE_ISOC99 + + +155 +__BEGIN_NAMESPACE_C99 + + +157 +__ex‹nsiÚ__ +  + $©Þl + (cÚ¡ * +__Ō +) + +158 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)è +__wur +; + +159 +__END_NAMESPACE_C99 + + +162 +__BEGIN_NAMESPACE_STD + + +164  + $¡¹od + (cÚ¡ * +__»¡riù + +__Ō +, + +165 ** +__»¡riù + +__’d±r +) + +166 +__THROW + + `__nÚnuÎ + ((1)); + +167 +__END_NAMESPACE_STD + + +169 #ifdef +__USE_ISOC99 + + +170 +__BEGIN_NAMESPACE_C99 + + +172  + $¡¹of + (cÚ¡ * +__»¡riù + +__Ō +, + +173 ** +__»¡riù + +__’d±r +è +__THROW + + `__nÚnuÎ + ((1)); + +175  + $¡¹Þd + (cÚ¡ * +__»¡riù + +__Ō +, + +176 ** +__»¡riù + +__’d±r +) + +177 +__THROW + + `__nÚnuÎ + ((1)); + +178 +__END_NAMESPACE_C99 + + +181 +__BEGIN_NAMESPACE_STD + + +183  + $¡¹Þ + (cÚ¡ * +__»¡riù + +__Ō +, + +184 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +185 +__THROW + + `__nÚnuÎ + ((1)); + +187  + $¡¹oul + (cÚ¡ * +__»¡riù + +__Ō +, + +188 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +189 +__THROW + + `__nÚnuÎ + ((1)); + +190 +__END_NAMESPACE_STD + + +192 #ifdeà +__USE_MISC + + +194 +__ex‹nsiÚ__ + + +195  + $¡¹oq + (cÚ¡ * +__»¡riù + +__Ō +, + +196 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +197 +__THROW + + `__nÚnuÎ + ((1)); + +199 +__ex‹nsiÚ__ + + +200  + $¡¹ouq + (cÚ¡ * +__»¡riù + +__Ō +, + +201 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +202 +__THROW + + `__nÚnuÎ + ((1)); + +205 #ifdeà +__USE_ISOC99 + + +206 +__BEGIN_NAMESPACE_C99 + + +208 +__ex‹nsiÚ__ + + +209  + $¡¹Þl + (cÚ¡ * +__»¡riù + +__Ō +, + +210 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +211 +__THROW + + `__nÚnuÎ + ((1)); + +213 +__ex‹nsiÚ__ + + +214  + $¡¹ouÎ + (cÚ¡ * +__»¡riù + +__Ō +, + +215 ** +__»¡riù + +__’d±r +,  +__ba£ +) + +216 +__THROW + + `__nÚnuÎ + ((1)); + +217 +__END_NAMESPACE_C99 + + +221 #ifdeà +__USE_GNU + + +235  + ~ + +239  + $¡¹Þ_l + (cÚ¡ * +__»¡riù + +__Ō +, + +240 ** +__»¡riù + +__’d±r +,  +__ba£ +, + +241 +__loÿË_t + +__loc +è +__THROW + + `__nÚnuÎ + ((1, 4)); + +243  + $¡¹oul_l + (cÚ¡ * +__»¡riù + +__Ō +, + +244 ** +__»¡riù + +__’d±r +, + +245  +__ba£ +, +__loÿË_t + +__loc +) + +246 +__THROW + + `__nÚnuÎ + ((1, 4)); + +248 +__ex‹nsiÚ__ + + +249  + $¡¹Þl_l + (cÚ¡ * +__»¡riù + +__Ō +, + +250 ** +__»¡riù + +__’d±r +,  +__ba£ +, + +251 +__loÿË_t + +__loc +) + +252 +__THROW + + `__nÚnuÎ + ((1, 4)); + +254 +__ex‹nsiÚ__ + + +255  + $¡¹ouÎ_l + (cÚ¡ * +__»¡riù + +__Ō +, + +256 ** +__»¡riù + +__’d±r +, + +257  +__ba£ +, +__loÿË_t + +__loc +) + +258 +__THROW + + `__nÚnuÎ + ((1, 4)); + +260  + $¡¹od_l + (cÚ¡ * +__»¡riù + +__Ō +, + +261 ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +262 +__THROW + + `__nÚnuÎ + ((1, 3)); + +264  + $¡¹of_l + (cÚ¡ * +__»¡riù + +__Ō +, + +265 ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +266 +__THROW + + `__nÚnuÎ + ((1, 3)); + +268  + $¡¹Þd_l + (cÚ¡ * +__»¡riù + +__Ō +, + +269 ** +__»¡riù + +__’d±r +, + +270 +__loÿË_t + +__loc +) + +271 +__THROW + + `__nÚnuÎ + ((1, 3)); + +275 #ifdeà +__USE_EXTERN_INLINES + + +276 +__BEGIN_NAMESPACE_STD + + +277 +__ex‹º_šlše +  + +278 + `__NTH + ( + $©oi + (cÚ¡ * +__Ō +)) + +280  (è + `¡¹Þ + ( +__Ō +, (**è +NULL +, 10); + +281 + } +} + +282 +__ex‹º_šlše +  + +283 +__NTH + ( + $©Þ + (cÚ¡ * +__Ō +)) + +285  + `¡¹Þ + ( +__Ō +, (**è +NULL +, 10); + +286 + } +} + +287 + g__END_NAMESPACE_STD + + +289 #ifdeà +__USE_ISOC99 + + +290 +__BEGIN_NAMESPACE_C99 + + +291 +__ex‹nsiÚ__ + +__ex‹º_šlše +  + +292 +__NTH + ( + $©Þl + (cÚ¡ * +__Ō +)) + +294  + `¡¹Þl + ( +__Ō +, (**è +NULL +, 10); + +295 + } +} + +296 + g__END_NAMESPACE_C99 + + +301 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +305 * + $l64a + ( +__n +è +__THROW + +__wur +; + +308  + $a64l + (cÚ¡ * +__s +) + +309 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)è +__wur +; + +313 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +314  + ~ + +321  + $¿ndom + (è +__THROW +; + +324  + $¤ªdom + ( +__£ed +è +__THROW +; + +330 * + $š™¡©e + ( +__£ed +, * +__¡©ebuf +, + +331 +size_t + +__¡©–’ +è +__THROW + + `__nÚnuÎ + ((2)); + +335 * + $£t¡©e + (* +__¡©ebuf +è +__THROW + + `__nÚnuÎ + ((1)); + +338 #ifdeà +__USE_MISC + + +343  + s¿ndom_d©a + + +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_d©a + * +__»¡riù + +__buf +, + +355 +št32_t + * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +357  + $¤ªdom_r + ( +__£ed +,  +¿ndom_d©a + * +__buf +) + +358 +__THROW + + `__nÚnuÎ + ((2)); + +360  + $š™¡©e_r + ( +__£ed +, * +__»¡riù + +__¡©ebuf +, + +361 +size_t + +__¡©–’ +, + +362  +¿ndom_d©a + * +__»¡riù + +__buf +) + +363 +__THROW + + `__nÚnuÎ + ((2, 4)); + +365  + $£t¡©e_r + (* +__»¡riù + +__¡©ebuf +, + +366  +¿ndom_d©a + * +__»¡riù + +__buf +) + +367 +__THROW + + `__nÚnuÎ + ((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à +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +389  + $d¿nd48 + (è +__THROW +; + +390  + $”ªd48 + ( +__xsubi +[3]è +__THROW + + `__nÚnuÎ + ((1)); + +393  + $̪d48 + (è +__THROW +; + +394  + $Īd48 + ( +__xsubi +[3]) + +395 +__THROW + + `__nÚnuÎ + ((1)); + +398  + $m¿nd48 + (è +__THROW +; + +399  + $j¿nd48 + ( +__xsubi +[3]) + +400 +__THROW + + `__nÚnuÎ + ((1)); + +403  + $¤ªd48 + ( +__£edv® +è +__THROW +; + +404 * + $£ed48 + ( +__£ed16v +[3]) + +405 +__THROW + + `__nÚnuÎ + ((1)); + +406  + $lcÚg48 + ( +__·¿m +[7]è +__THROW + + `__nÚnuÎ + ((1)); + +408 #ifdeà +__USE_MISC + + +412  + sd¿nd48_d©a + + +414  +__x +[3]; + +415  +__Þd_x +[3]; + +416  +__c +; + +417  +__š™ +; + +418 +__ex‹nsiÚ__ +  +__a +; + +423  + $d¿nd48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +424 * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +425  + $”ªd48_r + ( +__xsubi +[3], + +426  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +427 * +__»¡riù + +__»suÉ +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +430  + $̪d48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +431 * +__»¡riù + +__»suÉ +) + +432 +__THROW + + `__nÚnuÎ + ((1, 2)); + +433  + $Īd48_r + ( +__xsubi +[3], + +434  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +435 * +__»¡riù + +__»suÉ +) + +436 +__THROW + + `__nÚnuÎ + ((1, 2)); + +439  + $m¿nd48_r + ( +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +440 * +__»¡riù + +__»suÉ +) + +441 +__THROW + + `__nÚnuÎ + ((1, 2)); + +442  + $j¿nd48_r + ( +__xsubi +[3], + +443  +d¿nd48_d©a + * +__»¡riù + +__bufãr +, + +444 * +__»¡riù + +__»suÉ +) + +445 +__THROW + + `__nÚnuÎ + ((1, 2)); + +448  + $¤ªd48_r + ( +__£edv® +,  +d¿nd48_d©a + * +__bufãr +) + +449 +__THROW + + `__nÚnuÎ + ((2)); + +451  + $£ed48_r + ( +__£ed16v +[3], + +452  +d¿nd48_d©a + * +__bufãr +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +454  + $lcÚg48_r + ( +__·¿m +[7], + +455  +d¿nd48_d©a + * +__bufãr +) + +456 +__THROW + + `__nÚnuÎ + ((1, 2)); + +462 #iâdeà +__m®loc_ªd_ÿÎoc_defšed + + +463  + #__m®loc_ªd_ÿÎoc_defšed + + + ) + +464 +__BEGIN_NAMESPACE_STD + + +466 * + $m®loc + ( +size_t + +__size +è +__THROW + +__©Œibu‹_m®loc__ + +__wur +; + +468 * + $ÿÎoc + ( +size_t + +__nmemb +, size_ˆ +__size +) + +469 +__THROW + +__©Œibu‹_m®loc__ + +__wur +; + +470 +__END_NAMESPACE_STD + + +473 #iâdeà +__Ãed_m®loc_ªd_ÿÎoc + + +474 +__BEGIN_NAMESPACE_STD + + +480 * + $»®loc + (* +__±r +, +size_t + +__size +) + +481 +__THROW + +__©Œibu‹_w¬n_unu£d_»suÉ__ +; + +483  + $ä“ + (* +__±r +è +__THROW +; + +484 +__END_NAMESPACE_STD + + +486 #ifdef +__USE_MISC + + +488  + $cä“ + (* +__±r +è +__THROW +; + +491 #ifdeà +__USE_MISC + + +492  + ~<®loÿ.h +> + +495 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K +) \ + +496 || +defšed + +__USE_MISC + + +498 * + $v®loc + ( +size_t + +__size +è +__THROW + +__©Œibu‹_m®loc__ + +__wur +; + +501 #ifdeà +__USE_XOPEN2K + + +503  + $posix_mem®ign + (** +__mem±r +, +size_t + +__®ignm’t +, size_ˆ +__size +) + +504 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +507 #ifdeà +__USE_ISOC11 + + +509 * + $®igÃd_®loc + ( +size_t + +__®ignm’t +, size_ˆ +__size +) + +510 +__THROW + +__©Œibu‹_m®loc__ + + `__©Œibu‹_®loc_size__ + ((2)è +__wur +; + +513 +__BEGIN_NAMESPACE_STD + + +515  + $abÜt + (è +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +519  + $©ex™ + ((* +__func +è()è +__THROW + + `__nÚnuÎ + ((1)); + +521 #ià +defšed + +__USE_ISOC11 + || defšed +__USE_ISOCXX11 + + +523 #ifdeà +__ýlu¥lus + + +524 "C++"  + $©_quick_ex™ + ((* +__func +) ()) + +525 +__THROW + + `__asm + ("©_quick_ex™"è + `__nÚnuÎ + ((1)); + +527  + $©_quick_ex™ + ((* +__func +è()è +__THROW + + `__nÚnuÎ + ((1)); + +530 +__END_NAMESPACE_STD + + +532 #ifdef +__USE_MISC + + +535  + $Ú_ex™ + ((* +__func +è( +__¡©us +, * +__¬g +), *__arg) + +536 +__THROW + + `__nÚnuÎ + ((1)); + +539 +__BEGIN_NAMESPACE_STD + + +543  + $ex™ + ( +__¡©us +è +__THROW + + `__©Œibu‹__ + (( +__nܑuº__ +)); + +545 #ià +defšed + +__USE_ISOC11 + || defšed +__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 * + $g‘’v + (cÚ¡ * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +565 +__END_NAMESPACE_STD + + +567 #ifdeà +__USE_GNU + + +570 * + $£cu»_g‘’v + (cÚ¡ * +__Çme +) + +571 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +574 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +578  + $pu‹nv + (* +__¡ršg +è +__THROW + + `__nÚnuÎ + ((1)); + +581 #ifdeà +__USE_XOPEN2K + + +584  + $£‹nv + (cÚ¡ * +__Çme +, cÚ¡ * +__v®ue +,  +__»¶aû +) + +585 +__THROW + + `__nÚnuÎ + ((2)); + +588  + $un£‹nv + (cÚ¡ * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +591 #ifdef +__USE_MISC + + +595  + $þ—»nv + (è +__THROW +; + +599 #ià +defšed + +__USE_MISC + \ + +600 || ( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K8 +) + +606 * + $mk‹mp + (* +__‹m¶©e +è +__THROW + + `__nÚnuÎ + ((1)); + +609 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +618 #iâdeà +__USE_FILE_OFFSET64 + + +619  + $mk¡emp + (* +__‹m¶©e +è + `__nÚnuÎ + ((1)è +__wur +; + +621 #ifdeà +__REDIRECT + + +622  + `__REDIRECT + ( +mk¡emp +, (* +__‹m¶©e +), +mk¡emp64 +) + +623 + `__nÚnuÎ + ((1)è +__wur +; + +625  + #mk¡emp + +mk¡emp64 + + + ) + +628 #ifdeà +__USE_LARGEFILE64 + + +629  + $mk¡emp64 + (* +__‹m¶©e +è + `__nÚnuÎ + ((1)è +__wur +; + +633 #ifdeà +__USE_MISC + + +640 #iâdeà +__USE_FILE_OFFSET64 + + +641  + $mk¡emps + (* +__‹m¶©e +,  +__suffixËn +è + `__nÚnuÎ + ((1)è +__wur +; + +643 #ifdeà +__REDIRECT + + +644  + `__REDIRECT + ( +mk¡emps +, (* +__‹m¶©e +,  +__suffixËn +), + +645 +mk¡emps64 +è + `__nÚnuÎ + ((1)è +__wur +; + +647  + #mk¡emps + +mk¡emps64 + + + ) + +650 #ifdeà +__USE_LARGEFILE64 + + +651  + $mk¡emps64 + (* +__‹m¶©e +,  +__suffixËn +) + +652 + `__nÚnuÎ + ((1)è +__wur +; + +656 #ifdeà +__USE_XOPEN2K8 + + +662 * + $mkd‹mp + (* +__‹m¶©e +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +665 #ifdeà +__USE_GNU + + +672 #iâdeà +__USE_FILE_OFFSET64 + + +673  + $mko¡emp + (* +__‹m¶©e +,  +__æags +è + `__nÚnuÎ + ((1)è +__wur +; + +675 #ifdeà +__REDIRECT + + +676  + `__REDIRECT + ( +mko¡emp +, (* +__‹m¶©e +,  +__æags +), +mko¡emp64 +) + +677 + `__nÚnuÎ + ((1)è +__wur +; + +679  + #mko¡emp + +mko¡emp64 + + + ) + +682 #ifdeà +__USE_LARGEFILE64 + + +683  + $mko¡emp64 + (* +__‹m¶©e +,  +__æags +è + `__nÚnuÎ + ((1)è +__wur +; + +692 #iâdeà +__USE_FILE_OFFSET64 + + +693  + $mko¡emps + (* +__‹m¶©e +,  +__suffixËn +,  +__æags +) + +694 + `__nÚnuÎ + ((1)è +__wur +; + +696 #ifdeà +__REDIRECT + + +697  + `__REDIRECT + ( +mko¡emps +, (* +__‹m¶©e +,  +__suffixËn +, + +698  +__æags +), +mko¡emps64 +) + +699 + `__nÚnuÎ + ((1)è +__wur +; + +701  + #mko¡emps + +mko¡emps64 + + + ) + +704 #ifdeà +__USE_LARGEFILE64 + + +705  + $mko¡emps64 + (* +__‹m¶©e +,  +__suffixËn +,  +__æags +) + +706 + `__nÚnuÎ + ((1)è +__wur +; + +711 +__BEGIN_NAMESPACE_STD + + +716  + $sy¡em + (cÚ¡ * +__commªd +è +__wur +; + +717 +__END_NAMESPACE_STD + + +720 #ifdef +__USE_GNU + + +723 * + $ÿnÚiÿlize_fže_Çme + (cÚ¡ * +__Çme +) + +724 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +727 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +733 * + $»®·th + (cÚ¡ * +__»¡riù + +__Çme +, + +734 * +__»¡riù + +__»sÞved +è +__THROW + +__wur +; + +739 #iâdeà +__COMPAR_FN_T + + +740  + #__COMPAR_FN_T + + + ) + +741 (* + t__com·r_â_t +) (const *, const *); + +743 #ifdef +__USE_GNU + + +744  +__com·r_â_t + + tcom·risÚ_â_t +; + +747 #ifdeà +__USE_GNU + + +748 (* + t__com·r_d_â_t +) (const *, const *, *); + +751 +__BEGIN_NAMESPACE_STD + + +754 * + $b£¬ch + (cÚ¡ * +__key +, cÚ¡ * +__ba£ +, + +755 +size_t + +__nmemb +, size_ˆ +__size +, +__com·r_â_t + +__com·r +) + +756 + `__nÚnuÎ + ((1, 2, 5)è +__wur +; + +758 #ifdeà +__USE_EXTERN_INLINES + + +759  + ~ + +764  + $qsÜt + (* +__ba£ +, +size_t + +__nmemb +, size_ˆ +__size +, + +765 +__com·r_â_t + +__com·r +è + `__nÚnuÎ + ((1, 4)); + +766 #ifdeà +__USE_GNU + + +767  + $qsÜt_r + (* +__ba£ +, +size_t + +__nmemb +, size_ˆ +__size +, + +768 +__com·r_d_â_t + +__com·r +, * +__¬g +) + +769 + `__nÚnuÎ + ((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 +__ex‹nsiÚ__ +  + $Îabs + ( +__x +) + +780 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)è +__wur +; + +784 +__BEGIN_NAMESPACE_STD + + +788 +div_t + + $div + ( +__num” +,  +__d’om +) + +789 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)è +__wur +; + +790 +ldiv_t + + $ldiv + ( +__num” +,  +__d’om +) + +791 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)è +__wur +; + +792 +__END_NAMESPACE_STD + + +794 #ifdeà +__USE_ISOC99 + + +795 +__BEGIN_NAMESPACE_C99 + + +796 +__ex‹nsiÚ__ + +Îdiv_t + + $Îdiv + ( +__num” +, + +797  +__d’om +) + +798 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)è +__wur +; + +799 +__END_NAMESPACE_C99 + + +803 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K8 +) \ + +804 || +defšed + +__USE_MISC + + +811 * + $ecvt + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +812 * +__»¡riù + +__sign +è +__THROW + + `__nÚnuÎ + ((3, 4)è +__wur +; + +817 * + $fcvt + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +818 * +__»¡riù + +__sign +è +__THROW + + `__nÚnuÎ + ((3, 4)è +__wur +; + +823 * + $gcvt + ( +__v®ue +,  +__ndig™ +, * +__buf +) + +824 +__THROW + + `__nÚnuÎ + ((3)è +__wur +; + +827 #ifdeà +__USE_MISC + + +829 * + $qecvt + ( +__v®ue +,  +__ndig™ +, + +830 * +__»¡riù + +__deýt +, *__»¡riù +__sign +) + +831 +__THROW + + `__nÚnuÎ + ((3, 4)è +__wur +; + +832 * + $qfcvt + ( +__v®ue +,  +__ndig™ +, + +833 * +__»¡riù + +__deýt +, *__»¡riù +__sign +) + +834 +__THROW + + `__nÚnuÎ + ((3, 4)è +__wur +; + +835 * + $qgcvt + ( +__v®ue +,  +__ndig™ +, * +__buf +) + +836 +__THROW + + `__nÚnuÎ + ((3)è +__wur +; + +841  + $ecvt_r + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +842 * +__»¡riù + +__sign +, *__»¡riù +__buf +, + +843 +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +844  + $fcvt_r + ( +__v®ue +,  +__ndig™ +, * +__»¡riù + +__deýt +, + +845 * +__»¡riù + +__sign +, *__»¡riù +__buf +, + +846 +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +848  + $qecvt_r + ( +__v®ue +,  +__ndig™ +, + +849 * +__»¡riù + +__deýt +, *__»¡riù +__sign +, + +850 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +851 +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +852  + $qfcvt_r + ( +__v®ue +,  +__ndig™ +, + +853 * +__»¡riù + +__deýt +, *__»¡riù +__sign +, + +854 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +855 +__THROW + + `__nÚnuÎ + ((3, 4, 5)); + +859 +__BEGIN_NAMESPACE_STD + + +862  + $mbËn + (cÚ¡ * +__s +, +size_t + +__n +è +__THROW +; + +865  + $mbtowc + ( +wch¬_t + * +__»¡riù + +__pwc +, + +866 cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +è +__THROW +; + +869  + $wùomb + (* +__s +, +wch¬_t + +__wch¬ +è +__THROW +; + +873 +size_t + + $mb¡owcs + ( +wch¬_t + * +__»¡riù + +__pwcs +, + +874 cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +è +__THROW +; + +876 +size_t + + $wc¡ombs + (* +__»¡riù + +__s +, + +877 cÚ¡ +wch¬_t + * +__»¡riù + +__pwcs +, +size_t + +__n +) + +878 +__THROW +; + +879 +__END_NAMESPACE_STD + + +882 #ifdeà +__USE_MISC + + +887  + $½m©ch + (cÚ¡ * +__»¥Ú£ +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +891 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +898  + $g‘subÝt + (** +__»¡riù + +__ÝtiÚp +, + +899 *cÚ¡ * +__»¡riù + +__tok’s +, + +900 ** +__»¡riù + +__v®u• +) + +901 +__THROW + + `__nÚnuÎ + ((1, 2, 3)è +__wur +; + +905 #ifdeà +__USE_XOPEN + + +907  + $£tkey + (cÚ¡ * +__key +è +__THROW + + `__nÚnuÎ + ((1)); + +913 #ifdeà +__USE_XOPEN2KXSI + + +915  + $posix_ݒ± + ( +__oæag +è +__wur +; + +918 #ifdeà +__USE_XOPEN + + +923  + $g¿Á± + ( +__fd +è +__THROW +; + +927  + $uÆock± + ( +__fd +è +__THROW +; + +932 * + $±¢ame + ( +__fd +è +__THROW + +__wur +; + +935 #ifdeà +__USE_GNU + + +939  + $±¢ame_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +) + +940 +__THROW + + `__nÚnuÎ + ((2)); + +943  + `g‘± + (); + +946 #ifdeà +__USE_MISC + + +950  + $g‘lßdavg + ( +__lßdavg +[],  +__ÃËm +) + +951 +__THROW + + `__nÚnuÎ + ((1)); + +954  + ~ + +957 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +958  + ~ + +960 #ifdeà +__LDBL_COMPAT + + +961  + ~ + +965 #undeà +__Ãed_m®loc_ªd_ÿÎoc + + +967 +__END_DECLS + + + @/usr/include/string.h + +22 #iâdef +_STRING_H + + +23  + #_STRING_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27 + g__BEGIN_DECLS + + +30  + #__Ãed_size_t + + + ) + +31  + #__Ãed_NULL + + + ) + +32  + ~<¡ddef.h +> + +35 #ià +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (4, 4) + +36  + #__CORRECT_ISO_CPP_STRING_H_PROTO + + + ) + +40 +__BEGIN_NAMESPACE_STD + + +42 * + $memýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +43 +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +46 * + $memmove + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__n +) + +47 +__THROW + + `__nÚnuÎ + ((1, 2)); + +48 +__END_NAMESPACE_STD + + +53 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +54 * + $memcýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +55  +__c +, +size_t + +__n +) + +56 +__THROW + + `__nÚnuÎ + ((1, 2)); + +60 +__BEGIN_NAMESPACE_STD + + +62 * + $mem£t + (* +__s +,  +__c +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +65  + $memcmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +size_t + +__n +) + +66 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +69 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +72 * + `memchr + (* +__s +,  +__c +, +size_t + +__n +) + +73 +__THROW + + `__asm + ("memchr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +74 cÚ¡ * + `memchr + (cÚ¡ * +__s +,  +__c +, +size_t + +__n +) + +75 +__THROW + + `__asm + ("memchr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +77 #ifdeà +__OPTIMIZE__ + + +78 +__ex‹º_®ways_šlše + * + +79 + `memchr + (* +__s +,  +__c +, +size_t + +__n +è +__THROW + + +81  + `__bužtš_memchr + ( +__s +, +__c +, +__n +); + +84 +__ex‹º_®ways_šlše + const * + +85 + `memchr + (cÚ¡ * +__s +,  +__c +, +size_t + +__n +è +__THROW + + +87  + `__bužtš_memchr + ( +__s +, +__c +, +__n +); + +90 + } +} + +92 * + $memchr + (cÚ¡ * +__s +,  +__c +, +size_t + +__n +) + +93 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((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»__ + + `__nÚnuÎ + ((1)); + +103 "C++" cÚ¡ * + $¿wmemchr + (cÚ¡ * +__s +,  +__c +) + +104 +__THROW + + `__asm + ("¿wmemchr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +106 * + $¿wmemchr + (cÚ¡ * +__s +,  +__c +) + +107 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +111 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +112 "C++" * + $memrchr + (* +__s +,  +__c +, +size_t + +__n +) + +113 +__THROW + + `__asm + ("memrchr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +114 "C++" cÚ¡ * + $memrchr + (cÚ¡ * +__s +,  +__c +, +size_t + +__n +) + +115 +__THROW + + `__asm + ("memrchr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +117 * + $memrchr + (cÚ¡ * +__s +,  +__c +, +size_t + +__n +) + +118 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +123 +__BEGIN_NAMESPACE_STD + + +125 * + $¡rýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +126 +__THROW + + `__nÚnuÎ + ((1, 2)); + +128 * + $¡ºýy + (* +__»¡riù + +__de¡ +, + +129 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +130 +__THROW + + `__nÚnuÎ + ((1, 2)); + +133 * + $¡rÿt + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +134 +__THROW + + `__nÚnuÎ + ((1, 2)); + +136 * + $¡ºÿt + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +137 +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +140  + $¡rcmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +141 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +143  + $¡ºcmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +size_t + +__n +) + +144 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +147  + $¡rcÞl + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +148 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +150 +size_t + + $¡rxäm + (* +__»¡riù + +__de¡ +, + +151 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +152 +__THROW + + `__nÚnuÎ + ((2)); + +153 +__END_NAMESPACE_STD + + +155 #ifdeà +__USE_XOPEN2K8 + + +159  + ~ + +162  + $¡rcÞl_l + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +__loÿË_t + +__l +) + +163 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 3)); + +165 +size_t + + $¡rxäm_l + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__n +, + +166 +__loÿË_t + +__l +è +__THROW + + `__nÚnuÎ + ((2, 4)); + +169 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +171 * + $¡rdup + (cÚ¡ * +__s +) + +172 +__THROW + +__©Œibu‹_m®loc__ + + `__nÚnuÎ + ((1)); + +178 #ià +defšed + +__USE_XOPEN2K8 + + +179 * + $¡ºdup + (cÚ¡ * +__¡ršg +, +size_t + +__n +) + +180 +__THROW + +__©Œibu‹_m®loc__ + + `__nÚnuÎ + ((1)); + +183 #ià +defšed + +__USE_GNU + && defšed +__GNUC__ + + +185  + #¡rdu· +( +s +) \ + +186 ( +__ex‹nsiÚ__ + \ + +188 cÚ¡ * +__Þd + = ( +s +); \ + +189 +size_t + +__Ën + = + `¡¾’ + ( +__Þd +) + 1; \ + +190 * +__Ãw + = (*è + `__bužtš_®loÿ + ( +__Ën +); \ + +191 (*è + `memýy + ( +__Ãw +, +__Þd +, +__Ën +); \ + +192 + } +})) + + ) + +195  + #¡ºdu· +( +s +, +n +) \ + +196 ( +__ex‹nsiÚ__ + \ + +198 cÚ¡ * +__Þd + = ( +s +); \ + +199 +size_t + +__Ën + = + `¡ºËn + ( +__Þd +, ( +n +)); \ + +200 * +__Ãw + = (*è + `__bužtš_®loÿ + ( +__Ën + + 1); \ + +201 +__Ãw +[ +__Ën +] = '\0'; \ + +202 (*è + `memýy + ( +__Ã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»__ + +__nÚnuÎ + ((1)); + +213 cÚ¡ * +¡rchr + (cÚ¡ * +__s +,  +__c +) + +214 +__THROW + +__asm + ("¡rchr"è +__©Œibu‹_pu»__ + +__nÚnuÎ + ((1)); + +216 #ifdeà +__OPTIMIZE__ + + +217 +__ex‹º_®ways_šlše + * + +218 +¡rchr + (* +__s +,  +__c +è + g__THROW + + +220  +__bužtš_¡rchr + ( +__s +, +__c +); + +223 +__ex‹º_®ways_šlše + const * + +224 +¡rchr + (cÚ¡ * +__s +,  +__c +è + g__THROW + + +226  +__bužtš_¡rchr + ( +__s +, +__c +); + +231 * + $¡rchr + (cÚ¡ * +__s +,  +__c +) + +232 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +235 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +238 * + `¡¼chr + (* +__s +,  +__c +) + +239 +__THROW + + `__asm + ("¡¼chr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +240 cÚ¡ * + `¡¼chr + (cÚ¡ * +__s +,  +__c +) + +241 +__THROW + + `__asm + ("¡¼chr"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +243 #ifdeà +__OPTIMIZE__ + + +244 +__ex‹º_®ways_šlše + * + +245 + `¡¼chr + (* +__s +,  +__c +è +__THROW + + +247  + `__bužtš_¡¼chr + ( +__s +, +__c +); + +250 +__ex‹º_®ways_šlše + const * + +251 + `¡¼chr + (cÚ¡ * +__s +,  +__c +è +__THROW + + +253  + `__bužtš_¡¼chr + ( +__s +, +__c +); + +256 + } +} + +258 * + $¡¼chr + (cÚ¡ * +__s +,  +__c +) + +259 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +261 +__END_NAMESPACE_STD + + +263 #ifdeà +__USE_GNU + + +266 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +267 "C++" * + $¡rchºul + (* +__s +,  +__c +) + +268 +__THROW + + `__asm + ("¡rchºul"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +269 "C++" cÚ¡ * + $¡rchºul + (cÚ¡ * +__s +,  +__c +) + +270 +__THROW + + `__asm + ("¡rchºul"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +272 * + $¡rchºul + (cÚ¡ * +__s +,  +__c +) + +273 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +277 +__BEGIN_NAMESPACE_STD + + +280 +size_t + + $¡rc¥n + (cÚ¡ * +__s +, cÚ¡ * +__»jeù +) + +281 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +284 +size_t + + $¡r¥n + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +285 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +287 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +290 * + `¡½brk + (* +__s +, cÚ¡ * +__acû± +) + +291 +__THROW + + `__asm + ("¡½brk"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +292 cÚ¡ * + `¡½brk + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +293 +__THROW + + `__asm + ("¡½brk"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +295 #ifdeà +__OPTIMIZE__ + + +296 +__ex‹º_®ways_šlše + * + +297 + `¡½brk + (* +__s +, cÚ¡ * +__acû± +è +__THROW + + +299  + `__bužtš_¡½brk + ( +__s +, +__acû± +); + +302 +__ex‹º_®ways_šlše + const * + +303 + `¡½brk + (cÚ¡ * +__s +, cÚ¡ * +__acû± +è +__THROW + + +305  + `__bužtš_¡½brk + ( +__s +, +__acû± +); + +308 + } +} + +310 * + $¡½brk + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +311 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +314 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +317 * + `¡r¡r + (* +__hay¡ack +, cÚ¡ * +__ÃedË +) + +318 +__THROW + + `__asm + ("¡r¡r"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +319 cÚ¡ * + `¡r¡r + (cÚ¡ * +__hay¡ack +, cÚ¡ * +__ÃedË +) + +320 +__THROW + + `__asm + ("¡r¡r"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +322 #ifdeà +__OPTIMIZE__ + + +323 +__ex‹º_®ways_šlše + * + +324 + `¡r¡r + (* +__hay¡ack +, cÚ¡ * +__ÃedË +è +__THROW + + +326  + `__bužtš_¡r¡r + ( +__hay¡ack +, +__ÃedË +); + +329 +__ex‹º_®ways_šlše + const * + +330 + `¡r¡r + (cÚ¡ * +__hay¡ack +, cÚ¡ * +__ÃedË +è +__THROW + + +332  + `__bužtš_¡r¡r + ( +__hay¡ack +, +__ÃedË +); + +335 + } +} + +337 * + $¡r¡r + (cÚ¡ * +__hay¡ack +, cÚ¡ * +__ÃedË +) + +338 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +343 * + $¡¹ok + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__d–im +) + +344 +__THROW + + `__nÚnuÎ + ((2)); + +345 +__END_NAMESPACE_STD + + +349 * + $__¡¹ok_r + (* +__»¡riù + +__s +, + +350 cÚ¡ * +__»¡riù + +__d–im +, + +351 ** +__»¡riù + +__§ve_±r +) + +352 +__THROW + + `__nÚnuÎ + ((2, 3)); + +353 #ifdeà +__USE_POSIX + + +354 * + $¡¹ok_r + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__d–im +, + +355 ** +__»¡riù + +__§ve_±r +) + +356 +__THROW + + `__nÚnuÎ + ((2, 3)); + +359 #ifdeà +__USE_GNU + + +361 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +362 "C++" * + $¡rÿ£¡r + (* +__hay¡ack +, cÚ¡ * +__ÃedË +) + +363 +__THROW + + `__asm + ("¡rÿ£¡r"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +364 "C++" cÚ¡ * + $¡rÿ£¡r + (cÚ¡ * +__hay¡ack +, + +365 cÚ¡ * +__ÃedË +) + +366 +__THROW + + `__asm + ("¡rÿ£¡r"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +368 * + $¡rÿ£¡r + (cÚ¡ * +__hay¡ack +, cÚ¡ * +__ÃedË +) + +369 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +373 #ifdeà +__USE_GNU + + +377 * + $memmem + (cÚ¡ * +__hay¡ack +, +size_t + +__hay¡ackËn +, + +378 cÚ¡ * +__ÃedË +, +size_t + +__ÃedËËn +) + +379 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 3)); + +383 * + $__mempýy + (* +__»¡riù + +__de¡ +, + +384 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +385 +__THROW + + `__nÚnuÎ + ((1, 2)); + +386 * + $mempýy + (* +__»¡riù + +__de¡ +, + +387 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +388 +__THROW + + `__nÚnuÎ + ((1, 2)); + +392 +__BEGIN_NAMESPACE_STD + + +394 +size_t + + $¡¾’ + (cÚ¡ * +__s +) + +395 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +396 +__END_NAMESPACE_STD + + +398 #ifdef +__USE_XOPEN2K8 + + +401 +size_t + + $¡ºËn + (cÚ¡ * +__¡ršg +, +size_t + +__maxËn +) + +402 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +406 +__BEGIN_NAMESPACE_STD + + +408 * + $¡»¼Ü + ( +__”ºum +è +__THROW +; + +409 +__END_NAMESPACE_STD + + +410 #ifdeà +__USE_XOPEN2K + + +418 #ià +defšed + +__USE_XOPEN2K + && !defšed +__USE_GNU + + +421 #ifdeà +__REDIRECT_NTH + + +422  + `__REDIRECT_NTH + ( +¡»¼Ü_r +, + +423 ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +), + +424 +__xpg_¡»¼Ü_r +è + `__nÚnuÎ + ((2)); + +426  + $__xpg_¡»¼Ü_r + ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +) + +427 +__THROW + + `__nÚnuÎ + ((2)); + +428  + #¡»¼Ü_r + +__xpg_¡»¼Ü_r + + + ) + +433 * + $¡»¼Ü_r + ( +__”ºum +, * +__buf +, +size_t + +__buæ’ +) + +434 +__THROW + + `__nÚnuÎ + ((2)è +__wur +; + +438 #ifdeà +__USE_XOPEN2K8 + + +440 * + $¡»¼Ü_l + ( +__”ºum +, +__loÿË_t + +__l +è +__THROW +; + +446  + $__bz”o + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +448 #ifdeà +__USE_MISC + + +450  + $bcÝy + (cÚ¡ * +__¤c +, * +__de¡ +, +size_t + +__n +) + +451 +__THROW + + `__nÚnuÎ + ((1, 2)); + +454  + $bz”o + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +457  + $bcmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +size_t + +__n +) + +458 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +461 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +464 * + `šdex + (* +__s +,  +__c +) + +465 +__THROW + + `__asm + ("šdex"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +466 cÚ¡ * + `šdex + (cÚ¡ * +__s +,  +__c +) + +467 +__THROW + + `__asm + ("šdex"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +469 #ià +defšed + +__OPTIMIZE__ + && !defšed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +470 +__ex‹º_®ways_šlše + * + +471 + `šdex + (* +__s +,  +__c +è +__THROW + + +473  + `__bužtš_šdex + ( +__s +, +__c +); + +476 +__ex‹º_®ways_šlše + const * + +477 + `šdex + (cÚ¡ * +__s +,  +__c +è +__THROW + + +479  + `__bužtš_šdex + ( +__s +, +__c +); + +482 + } +} + +484 * + $šdex + (cÚ¡ * +__s +,  +__c +) + +485 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +489 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +492 * + `ršdex + (* +__s +,  +__c +) + +493 +__THROW + + `__asm + ("ršdex"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +494 cÚ¡ * + `ršdex + (cÚ¡ * +__s +,  +__c +) + +495 +__THROW + + `__asm + ("ršdex"è +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +497 #ià +defšed + +__OPTIMIZE__ + && !defšed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +498 +__ex‹º_®ways_šlše + * + +499 + `ršdex + (* +__s +,  +__c +è +__THROW + + +501  + `__bužtš_ršdex + ( +__s +, +__c +); + +504 +__ex‹º_®ways_šlše + const * + +505 + `ršdex + (cÚ¡ * +__s +,  +__c +è +__THROW + + +507  + `__bužtš_ršdex + ( +__s +, +__c +); + +510 + } +} + +512 * + $ršdex + (cÚ¡ * +__s +,  +__c +) + +513 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1)); + +518  + $ffs + ( +__i +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +522 #ifdef +__USE_GNU + + +523  + $ff¦ + ( +__l +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +524 +__ex‹nsiÚ__ +  + $ff¦l + ( +__Î +) + +525 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +529  + $¡rÿ£cmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +530 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +533  + $¡ºÿ£cmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +size_t + +__n +) + +534 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +537 #ifdef +__USE_GNU + + +540  + $¡rÿ£cmp_l + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, + +541 +__loÿË_t + +__loc +) + +542 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 3)); + +544  + $¡ºÿ£cmp_l + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, + +545 +size_t + +__n +, +__loÿË_t + +__loc +) + +546 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2, 4)); + +549 #ifdef +__USE_MISC + + +552 * + $¡r£p + (** +__»¡riù + +__¡ršgp +, + +553 cÚ¡ * +__»¡riù + +__d–im +) + +554 +__THROW + + `__nÚnuÎ + ((1, 2)); + +557 #ifdef +__USE_XOPEN2K8 + + +559 * + $¡rsigÇl + ( +__sig +è +__THROW +; + +562 * + $__¡pýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +563 +__THROW + + `__nÚnuÎ + ((1, 2)); + +564 * + $¡pýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +) + +565 +__THROW + + `__nÚnuÎ + ((1, 2)); + +569 * + $__¡²ýy + (* +__»¡riù + +__de¡ +, + +570 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +571 +__THROW + + `__nÚnuÎ + ((1, 2)); + +572 * + $¡²ýy + (* +__»¡riù + +__de¡ +, + +573 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +574 +__THROW + + `__nÚnuÎ + ((1, 2)); + +577 #ifdef +__USE_GNU + + +579  + $¡rv”scmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +580 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +583 * + $¡räy + (* +__¡ršg +è +__THROW + + `__nÚnuÎ + ((1)); + +586 * + $memäob + (* +__s +, +size_t + +__n +è +__THROW + + `__nÚnuÎ + ((1)); + +588 #iâdeà +ba£Çme + + +593 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +594 "C++" * + $ba£Çme + (* +__fž’ame +) + +595 +__THROW + + `__asm + ("ba£Çme"è + `__nÚnuÎ + ((1)); + +596 "C++" cÚ¡ * + $ba£Çme + (cÚ¡ * +__fž’ame +) + +597 +__THROW + + `__asm + ("ba£Çme"è + `__nÚnuÎ + ((1)); + +599 * + $ba£Çme + (cÚ¡ * +__fž’ame +è +__THROW + + `__nÚnuÎ + ((1)); + +605 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +606 #ià +defšed + +__OPTIMIZE__ + && !defšed +__OPTIMIZE_SIZE__ + \ + +607 && ! +defšed + +__NO_INLINE__ + && !defšed +__ýlu¥lus + + +627  + ~ + +630  + ~ + +633 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +635  + ~ + +639 #ià +defšed + +__USE_GNU + && defšed +__OPTIMIZE__ + \ + +640 && +defšed + +__ex‹º_®ways_šlše + && + $__GNUC_PREREQ + (3,2) + +641 #ià! +defšed + +_FORCE_INLINES + && !defšed +_HAVE_STRING_ARCH_mempýy + + +643 #undeà +mempýy + + +644 #undeà +__mempýy + + +645  + #mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy_šlše + (de¡, src,‚) + + ) + +646  + #__mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy_šlše + (de¡, src,‚) + + ) + +648 +__ex‹º_®ways_šlše + * + +649 + $__mempýy_šlše + (* +__»¡riù + +__de¡ +, + +650 cÚ¡ * +__»¡riù + +__¤c +, +size_t + +__n +) + +652  (*è + `memýy + ( +__de¡ +, +__¤c +, +__n +) + __n; + +653 + } +} + +658 + g__END_DECLS + + + @/usr/include/sys/param.h + +19 #iâdeà +_SYS_PARAM_H + + +20  + #_SYS_PARAM_H + 1 + + ) + +22  + #__Ãed_NULL + + + ) + +23  + ~<¡ddef.h +> + +25  + ~ + +26  + ~ + +27  + ~<’dŸn.h +> + +28  + ~ + +31  + ~ + +36  + #NBBY + +CHAR_BIT + + + ) + +38 #ià! +defšed + +NGROUPS + && defšed +NGROUPS_MAX + + +39  + #NGROUPS + +NGROUPS_MAX + + + ) + +41 #ià! +defšed + +MAXSYMLINKS + && defšed +SYMLOOP_MAX + + +42  + #MAXSYMLINKS + +SYMLOOP_MAX + + + ) + +44 #ià! +defšed + +CANBSIZ + && defšed +MAX_CANON + + +45  + #CANBSIZ + +MAX_CANON + + + ) + +47 #ià! +defšed + +MAXPATHLEN + && defšed +PATH_MAX + + +48  + #MAXPATHLEN + +PATH_MAX + + + ) + +50 #ià! +defšed + +NOFILE + && defšed +OPEN_MAX + + +51  + #NOFILE + +OPEN_MAX + + + ) + +53 #ià! +defšed + +MAXHOSTNAMELEN + && defšed +HOST_NAME_MAX + + +54  + #MAXHOSTNAMELEN + +HOST_NAME_MAX + + + ) + +56 #iâdeà +NCARGS + + +57 #ifdeà +ARG_MAX + + +58  + #NCARGS + +ARG_MAX + + + ) + +62  + #NCARGS + +INT_MAX + + + ) + +68 #iâdeà +NOGROUP + + +69  + #NOGROUP + 65535 + + ) + +71 #iâdeà +NODEV + + +72  + #NODEV + (( +dev_t +è-1è + + ) + +77 #iâdeà +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  + #is£t +( +a +, +i +è(×)[(i)/ +NBBY +] & (1<<((i)%NBBY))) + + ) + +86  + #isþr +( +a +, +i +è((×)[(i)/ +NBBY +] & (1<<((i)%NBBY))è=ð0) + + ) + +89 #iâdeà +howmªy + + +90  + #howmªy +( +x +, +y +è(((xè+ ((yè- 1)è/ (y)) + + ) + +92 #ifdeà +__GNUC__ + + +93  + #roundup +( +x +, +y +è( + `__bužtš_cÚ¡ªt_p + (yè&& + `pow”of2 + (y) \ + +94 ? ((( +x +è+ ( +y +) - 1) & ~((y) - 1)) \ + +95 : (((( +x +è+ (( +y +è- 1)è/ (y)è* (y))) + + ) + +97  + #roundup +( +x +, +y +è((((xè+ ((yè- 1)è/ (y)è* (y)) + + ) + +99  + #pow”of2 +( +x +è((((xè- 1è& (x)è=ð0) + + ) + +102  + #MIN +( +a +, +b +è((×)<(b))?×):(b)) + + ) + +103  + #MAX +( +a +, +b +è((×)>(b))?×):(b)) + + ) + + @/usr/include/sys/queue.h + +32 #iâdef +_SYS_QUEUE_H_ + + +33  + #_SYS_QUEUE_H_ + + + ) + +84  + #LIST_HEAD +( +Çme +, +ty³ +) \ + +85  + sÇme + { \ + +86  +ty³ + * +lh_fœ¡ +; \ + +87 } + + ) + +89  + #LIST_HEAD_INITIALIZER +( +h—d +) \ + +90 { +NULL + } + + ) + +92  + #LIST_ENTRY +( +ty³ +) \ + +94  +ty³ + * +Ë_Ãxt +; \ + +95  +ty³ + ** +Ë_´ev +; \ + +96 } + + ) + +101  + #LIST_INIT +( +h—d +) do { \ + +102 ( +h—d +)-> +lh_fœ¡ + = +NULL +; \ + +103 }  0) + + ) + +105  + #LIST_INSERT_AFTER +( +li¡–m +, +–m +, +f›ld +) do { \ + +106 ià((( +–m +)-> +f›ld +. +Ë_Ãxt + = ( +li¡–m +)->f›ld.Ë_Ãxtè!ð +NULL +) \ + +107 ( +li¡–m +)-> +f›ld +. +Ë_Ãxt +->f›ld. +Ë_´ev + = \ + +108 &( +–m +)-> +f›ld +. +Ë_Ãxt +; \ + +109 ( +li¡–m +)-> +f›ld +. +Ë_Ãxt + = ( +–m +); \ + +110 ( +–m +)-> +f›ld +. +Ë_´ev + = &( +li¡–m +)->f›ld. +Ë_Ãxt +; \ + +111 }  0) + + ) + +113  + #LIST_INSERT_BEFORE +( +li¡–m +, +–m +, +f›ld +) do { \ + +114 ( +–m +)-> +f›ld +. +Ë_´ev + = ( +li¡–m +)->field.le_prev; \ + +115 ( +–m +)-> +f›ld +. +Ë_Ãxt + = ( +li¡–m +); \ + +116 *( +li¡–m +)-> +f›ld +. +Ë_´ev + = ( +–m +); \ + +117 ( +li¡–m +)-> +f›ld +. +Ë_´ev + = &( +–m +)->f›ld. +Ë_Ãxt +; \ + +118 }  0) + + ) + +120  + #LIST_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +121 ià((( +–m +)-> +f›ld +. +Ë_Ãxt + = ( +h—d +)-> +lh_fœ¡ +è!ð +NULL +) \ + +122 ( +h—d +)-> +lh_fœ¡ +-> +f›ld +. +Ë_´ev + = &( +–m +)->f›ld. +Ë_Ãxt +;\ + +123 ( +h—d +)-> +lh_fœ¡ + = ( +–m +); \ + +124 ( +–m +)-> +f›ld +. +Ë_´ev + = &( +h—d +)-> +lh_fœ¡ +; \ + +125 }  0) + + ) + +127  + #LIST_REMOVE +( +–m +, +f›ld +) do { \ + +128 ià(( +–m +)-> +f›ld +. +Ë_Ãxt + !ð +NULL +) \ + +129 ( +–m +)-> +f›ld +. +Ë_Ãxt +->f›ld. +Ë_´ev + = \ + +130 ( +–m +)-> +f›ld +. +Ë_´ev +; \ + +131 *( +–m +)-> +f›ld +. +Ë_´ev + = (–m)->f›ld. +Ë_Ãxt +; \ + +132 }  0) + + ) + +134  + #LIST_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +135 ( +v¬ +èð(( +h—d +)-> +lh_fœ¡ +); \ + +136 ( +v¬ +); \ + +137 ( +v¬ +èð((v¬)-> +f›ld +. +Ë_Ãxt +)) + + ) + +142  + #LIST_EMPTY +( +h—d +è((h—d)-> +lh_fœ¡ + =ð +NULL +) + + ) + +143  + #LIST_FIRST +( +h—d +è((h—d)-> +lh_fœ¡ +) + + ) + +144  + #LIST_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +Ë_Ãxt +) + + ) + +150  + #SLIST_HEAD +( +Çme +, +ty³ +) \ + +151  + sÇme + { \ + +152  +ty³ + * +¦h_fœ¡ +; \ + +153 } + + ) + +155  + #SLIST_HEAD_INITIALIZER +( +h—d +) \ + +156 { +NULL + } + + ) + +158  + #SLIST_ENTRY +( +ty³ +) \ + +160  +ty³ + * +¦e_Ãxt +; \ + +161 } + + ) + +166  + #SLIST_INIT +( +h—d +) do { \ + +167 ( +h—d +)-> +¦h_fœ¡ + = +NULL +; \ + +168 }  0) + + ) + +170  + #SLIST_INSERT_AFTER +( +¦i¡–m +, +–m +, +f›ld +) do { \ + +171 ( +–m +)-> +f›ld +. +¦e_Ãxt + = ( +¦i¡–m +)->field.sle_next; \ + +172 ( +¦i¡–m +)-> +f›ld +. +¦e_Ãxt + = ( +–m +); \ + +173 }  0) + + ) + +175  + #SLIST_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +176 ( +–m +)-> +f›ld +. +¦e_Ãxt + = ( +h—d +)-> +¦h_fœ¡ +; \ + +177 ( +h—d +)-> +¦h_fœ¡ + = ( +–m +); \ + +178 }  0) + + ) + +180  + #SLIST_REMOVE_HEAD +( +h—d +, +f›ld +) do { \ + +181 ( +h—d +)-> +¦h_fœ¡ + = (h—d)->¦h_fœ¡-> +f›ld +. +¦e_Ãxt +; \ + +182 }  0) + + ) + +184  + #SLIST_REMOVE +( +h—d +, +–m +, +ty³ +, +f›ld +) do { \ + +185 ià(( +h—d +)-> +¦h_fœ¡ + =ð( +–m +)) { \ + +186 + `SLIST_REMOVE_HEAD +(( +h—d +), +f›ld +); \ + +189  +ty³ + * +cu»lm + = ( +h—d +)-> +¦h_fœ¡ +; \ + +190  +cu»lm +-> +f›ld +. +¦e_Ãxt + !ð( +–m +)) \ + +191 +cu»lm + = cu»lm-> +f›ld +. +¦e_Ãxt +; \ + +192 +cu»lm +-> +f›ld +. +¦e_Ãxt + = \ + +193 +cu»lm +-> +f›ld +. +¦e_Ãxt +->field.sle_next; \ + +195 }  0) + + ) + +197  + #SLIST_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +198 ( +v¬ +èð( +h—d +)-> +¦h_fœ¡ +; (v¬); (v¬èð(v¬)-> +f›ld +. +¦e_Ãxt +) + + ) + +203  + #SLIST_EMPTY +( +h—d +è((h—d)-> +¦h_fœ¡ + =ð +NULL +) + + ) + +204  + #SLIST_FIRST +( +h—d +è((h—d)-> +¦h_fœ¡ +) + + ) + +205  + #SLIST_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +¦e_Ãxt +) + + ) + +211  + #STAILQ_HEAD +( +Çme +, +ty³ +) \ + +212  + sÇme + { \ + +213  +ty³ + * +¡qh_fœ¡ +; \ + +214  +ty³ + ** +¡qh_Ï¡ +; \ + +215 } + + ) + +217  + #STAILQ_HEAD_INITIALIZER +( +h—d +) \ + +218 { +NULL +, &( +h—d +). +¡qh_fœ¡ + } + + ) + +220  + #STAILQ_ENTRY +( +ty³ +) \ + +222  +ty³ + * +¡qe_Ãxt +; \ + +223 } + + ) + +228  + #STAILQ_INIT +( +h—d +) do { \ + +229 ( +h—d +)-> +¡qh_fœ¡ + = +NULL +; \ + +230 ( +h—d +)-> +¡qh_Ï¡ + = &(h—d)-> +¡qh_fœ¡ +; \ + +231 }  0) + + ) + +233  + #STAILQ_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +234 ià((( +–m +)-> +f›ld +. +¡qe_Ãxt + = ( +h—d +)-> +¡qh_fœ¡ +è=ð +NULL +) \ + +235 ( +h—d +)-> +¡qh_Ï¡ + = &( +–m +)-> +f›ld +. +¡qe_Ãxt +; \ + +236 ( +h—d +)-> +¡qh_fœ¡ + = ( +–m +); \ + +237 }  0) + + ) + +239  + #STAILQ_INSERT_TAIL +( +h—d +, +–m +, +f›ld +) do { \ + +240 ( +–m +)-> +f›ld +. +¡qe_Ãxt + = +NULL +; \ + +241 *( +h—d +)-> +¡qh_Ï¡ + = ( +–m +); \ + +242 ( +h—d +)-> +¡qh_Ï¡ + = &( +–m +)-> +f›ld +. +¡qe_Ãxt +; \ + +243 }  0) + + ) + +245  + #STAILQ_INSERT_AFTER +( +h—d +, +li¡–m +, +–m +, +f›ld +) do { \ + +246 ià((( +–m +)-> +f›ld +. +¡qe_Ãxt + = ( +li¡–m +)->f›ld.¡qe_Ãxtè=ð +NULL +)\ + +247 ( +h—d +)-> +¡qh_Ï¡ + = &( +–m +)-> +f›ld +. +¡qe_Ãxt +; \ + +248 ( +li¡–m +)-> +f›ld +. +¡qe_Ãxt + = ( +–m +); \ + +249 }  0) + + ) + +251  + #STAILQ_REMOVE_HEAD +( +h—d +, +f›ld +) do { \ + +252 ià((( +h—d +)-> +¡qh_fœ¡ + = (h—d)->¡qh_fœ¡-> +f›ld +. +¡qe_Ãxt +è=ð +NULL +) \ + +253 ( +h—d +)-> +¡qh_Ï¡ + = &(h—d)-> +¡qh_fœ¡ +; \ + +254 }  0) + + ) + +256  + #STAILQ_REMOVE +( +h—d +, +–m +, +ty³ +, +f›ld +) do { \ + +257 ià(( +h—d +)-> +¡qh_fœ¡ + =ð( +–m +)) { \ + +258 + `STAILQ_REMOVE_HEAD +(( +h—d +), +f›ld +); \ + +260  +ty³ + * +cu»lm + = ( +h—d +)-> +¡qh_fœ¡ +; \ + +261  +cu»lm +-> +f›ld +. +¡qe_Ãxt + !ð( +–m +)) \ + +262 +cu»lm + = cu»lm-> +f›ld +. +¡qe_Ãxt +; \ + +263 ià(( +cu»lm +-> +f›ld +. +¡qe_Ãxt + = \ + +264 +cu»lm +-> +f›ld +. +¡qe_Ãxt +->f›ld.¡qe_Ãxtè=ð +NULL +) \ + +265 ( +h—d +)-> +¡qh_Ï¡ + = &( +cu»lm +)-> +f›ld +. +¡qe_Ãxt +; \ + +267 }  0) + + ) + +269  + #STAILQ_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +270 ( +v¬ +èð(( +h—d +)-> +¡qh_fœ¡ +); \ + +271 ( +v¬ +); \ + +272 ( +v¬ +èð((v¬)-> +f›ld +. +¡qe_Ãxt +)) + + ) + +274  + #STAILQ_CONCAT +( +h—d1 +, +h—d2 +) do { \ + +275 ià(! + `STAILQ_EMPTY +(( +h—d2 +))) { \ + +276 *( +h—d1 +)-> +¡qh_Ï¡ + = ( +h—d2 +)-> +¡qh_fœ¡ +; \ + +277 ( +h—d1 +)-> +¡qh_Ï¡ + = ( +h—d2 +)->stqh_last; \ + +278 + `STAILQ_INIT +(( +h—d2 +)); \ + +280 }  0) + + ) + +285  + #STAILQ_EMPTY +( +h—d +è((h—d)-> +¡qh_fœ¡ + =ð +NULL +) + + ) + +286  + #STAILQ_FIRST +( +h—d +è((h—d)-> +¡qh_fœ¡ +) + + ) + +287  + #STAILQ_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +¡qe_Ãxt +) + + ) + +293  + #SIMPLEQ_HEAD +( +Çme +, +ty³ +) \ + +294  + sÇme + { \ + +295  +ty³ + * +sqh_fœ¡ +; \ + +296  +ty³ + ** +sqh_Ï¡ +; \ + +297 } + + ) + +299  + #SIMPLEQ_HEAD_INITIALIZER +( +h—d +) \ + +300 { +NULL +, &( +h—d +). +sqh_fœ¡ + } + + ) + +302  + #SIMPLEQ_ENTRY +( +ty³ +) \ + +304  +ty³ + * +sqe_Ãxt +; \ + +305 } + + ) + +310  + #SIMPLEQ_INIT +( +h—d +) do { \ + +311 ( +h—d +)-> +sqh_fœ¡ + = +NULL +; \ + +312 ( +h—d +)-> +sqh_Ï¡ + = &(h—d)-> +sqh_fœ¡ +; \ + +313 }  0) + + ) + +315  + #SIMPLEQ_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +316 ià((( +–m +)-> +f›ld +. +sqe_Ãxt + = ( +h—d +)-> +sqh_fœ¡ +è=ð +NULL +) \ + +317 ( +h—d +)-> +sqh_Ï¡ + = &( +–m +)-> +f›ld +. +sqe_Ãxt +; \ + +318 ( +h—d +)-> +sqh_fœ¡ + = ( +–m +); \ + +319 }  0) + + ) + +321  + #SIMPLEQ_INSERT_TAIL +( +h—d +, +–m +, +f›ld +) do { \ + +322 ( +–m +)-> +f›ld +. +sqe_Ãxt + = +NULL +; \ + +323 *( +h—d +)-> +sqh_Ï¡ + = ( +–m +); \ + +324 ( +h—d +)-> +sqh_Ï¡ + = &( +–m +)-> +f›ld +. +sqe_Ãxt +; \ + +325 }  0) + + ) + +327  + #SIMPLEQ_INSERT_AFTER +( +h—d +, +li¡–m +, +–m +, +f›ld +) do { \ + +328 ià((( +–m +)-> +f›ld +. +sqe_Ãxt + = ( +li¡–m +)->f›ld.sqe_Ãxtè=ð +NULL +)\ + +329 ( +h—d +)-> +sqh_Ï¡ + = &( +–m +)-> +f›ld +. +sqe_Ãxt +; \ + +330 ( +li¡–m +)-> +f›ld +. +sqe_Ãxt + = ( +–m +); \ + +331 }  0) + + ) + +333  + #SIMPLEQ_REMOVE_HEAD +( +h—d +, +f›ld +) do { \ + +334 ià((( +h—d +)-> +sqh_fœ¡ + = (h—d)->sqh_fœ¡-> +f›ld +. +sqe_Ãxt +è=ð +NULL +) \ + +335 ( +h—d +)-> +sqh_Ï¡ + = &(h—d)-> +sqh_fœ¡ +; \ + +336 }  0) + + ) + +338  + #SIMPLEQ_REMOVE +( +h—d +, +–m +, +ty³ +, +f›ld +) do { \ + +339 ià(( +h—d +)-> +sqh_fœ¡ + =ð( +–m +)) { \ + +340 + `SIMPLEQ_REMOVE_HEAD +(( +h—d +), +f›ld +); \ + +342  +ty³ + * +cu»lm + = ( +h—d +)-> +sqh_fœ¡ +; \ + +343  +cu»lm +-> +f›ld +. +sqe_Ãxt + !ð( +–m +)) \ + +344 +cu»lm + = cu»lm-> +f›ld +. +sqe_Ãxt +; \ + +345 ià(( +cu»lm +-> +f›ld +. +sqe_Ãxt + = \ + +346 +cu»lm +-> +f›ld +. +sqe_Ãxt +->f›ld.sqe_Ãxtè=ð +NULL +) \ + +347 ( +h—d +)-> +sqh_Ï¡ + = &( +cu»lm +)-> +f›ld +. +sqe_Ãxt +; \ + +349 }  0) + + ) + +351  + #SIMPLEQ_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +352 ( +v¬ +èð(( +h—d +)-> +sqh_fœ¡ +); \ + +353 ( +v¬ +); \ + +354 ( +v¬ +èð((v¬)-> +f›ld +. +sqe_Ãxt +)) + + ) + +359  + #SIMPLEQ_EMPTY +( +h—d +è((h—d)-> +sqh_fœ¡ + =ð +NULL +) + + ) + +360  + #SIMPLEQ_FIRST +( +h—d +è((h—d)-> +sqh_fœ¡ +) + + ) + +361  + #SIMPLEQ_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +sqe_Ãxt +) + + ) + +367  + #_TAILQ_HEAD +( +Çme +, +ty³ +, +qu® +) \ + +368  + sÇme + { \ + +369 +qu® + +ty³ + * +tqh_fœ¡ +; \ + +370 +qu® + +ty³ + *qu® * +tqh_Ï¡ +; \ + +371 } + + ) + +372  + #TAILQ_HEAD +( +Çme +, +ty³ +è + `_TAILQ_HEAD +Òame, ty³,) + + ) + +374  + #TAILQ_HEAD_INITIALIZER +( +h—d +) \ + +375 { +NULL +, &( +h—d +). +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 +( +h—d +) do { \ + +388 ( +h—d +)-> +tqh_fœ¡ + = +NULL +; \ + +389 ( +h—d +)-> +tqh_Ï¡ + = &(h—d)-> +tqh_fœ¡ +; \ + +390 }  0) + + ) + +392  + #TAILQ_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +393 ià((( +–m +)-> +f›ld +. +tqe_Ãxt + = ( +h—d +)-> +tqh_fœ¡ +è!ð +NULL +) \ + +394 ( +h—d +)-> +tqh_fœ¡ +-> +f›ld +. +tqe_´ev + = \ + +395 &( +–m +)-> +f›ld +. +tqe_Ãxt +; \ + +397 ( +h—d +)-> +tqh_Ï¡ + = &( +–m +)-> +f›ld +. +tqe_Ãxt +; \ + +398 ( +h—d +)-> +tqh_fœ¡ + = ( +–m +); \ + +399 ( +–m +)-> +f›ld +. +tqe_´ev + = &( +h—d +)-> +tqh_fœ¡ +; \ + +400 }  0) + + ) + +402  + #TAILQ_INSERT_TAIL +( +h—d +, +–m +, +f›ld +) do { \ + +403 ( +–m +)-> +f›ld +. +tqe_Ãxt + = +NULL +; \ + +404 ( +–m +)-> +f›ld +. +tqe_´ev + = ( +h—d +)-> +tqh_Ï¡ +; \ + +405 *( +h—d +)-> +tqh_Ï¡ + = ( +–m +); \ + +406 ( +h—d +)-> +tqh_Ï¡ + = &( +–m +)-> +f›ld +. +tqe_Ãxt +; \ + +407 }  0) + + ) + +409  + #TAILQ_INSERT_AFTER +( +h—d +, +li¡–m +, +–m +, +f›ld +) do { \ + +410 ià((( +–m +)-> +f›ld +. +tqe_Ãxt + = ( +li¡–m +)->f›ld.tqe_Ãxtè!ð +NULL +)\ + +411 ( +–m +)-> +f›ld +. +tqe_Ãxt +->f›ld. +tqe_´ev + = \ + +412 &( +–m +)-> +f›ld +. +tqe_Ãxt +; \ + +414 ( +h—d +)-> +tqh_Ï¡ + = &( +–m +)-> +f›ld +. +tqe_Ãxt +; \ + +415 ( +li¡–m +)-> +f›ld +. +tqe_Ãxt + = ( +–m +); \ + +416 ( +–m +)-> +f›ld +. +tqe_´ev + = &( +li¡–m +)->f›ld. +tqe_Ãxt +; \ + +417 }  0) + + ) + +419  + #TAILQ_INSERT_BEFORE +( +li¡–m +, +–m +, +f›ld +) do { \ + +420 ( +–m +)-> +f›ld +. +tqe_´ev + = ( +li¡–m +)->field.tqe_prev; \ + +421 ( +–m +)-> +f›ld +. +tqe_Ãxt + = ( +li¡–m +); \ + +422 *( +li¡–m +)-> +f›ld +. +tqe_´ev + = ( +–m +); \ + +423 ( +li¡–m +)-> +f›ld +. +tqe_´ev + = &( +–m +)->f›ld. +tqe_Ãxt +; \ + +424 }  0) + + ) + +426  + #TAILQ_REMOVE +( +h—d +, +–m +, +f›ld +) do { \ + +427 ià((( +–m +)-> +f›ld +. +tqe_Ãxt +è!ð +NULL +) \ + +428 ( +–m +)-> +f›ld +. +tqe_Ãxt +->f›ld. +tqe_´ev + = \ + +429 ( +–m +)-> +f›ld +. +tqe_´ev +; \ + +431 ( +h—d +)-> +tqh_Ï¡ + = ( +–m +)-> +f›ld +. +tqe_´ev +; \ + +432 *( +–m +)-> +f›ld +. +tqe_´ev + = (–m)->f›ld. +tqe_Ãxt +; \ + +433 }  0) + + ) + +435  + #TAILQ_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +436 ( +v¬ +èð(( +h—d +)-> +tqh_fœ¡ +); \ + +437 ( +v¬ +); \ + +438 ( +v¬ +èð((v¬)-> +f›ld +. +tqe_Ãxt +)) + + ) + +440  + #TAILQ_FOREACH_REVERSE +( +v¬ +, +h—d +, +h—dÇme +, +f›ld +) \ + +441 ( +v¬ +èð(*((( +h—dÇme + *)(( +h—d +)-> +tqh_Ï¡ +))->tqh_last)); \ + +442 ( +v¬ +); \ + +443 ( +v¬ +èð(*((( +h—dÇme + *)((v¬)-> +f›ld +. +tqe_´ev +))-> +tqh_Ï¡ +))) + + ) + +445  + #TAILQ_CONCAT +( +h—d1 +, +h—d2 +, +f›ld +) do { \ + +446 ià(! + `TAILQ_EMPTY +( +h—d2 +)) { \ + +447 *( +h—d1 +)-> +tqh_Ï¡ + = ( +h—d2 +)-> +tqh_fœ¡ +; \ + +448 ( +h—d2 +)-> +tqh_fœ¡ +-> +f›ld +. +tqe_´ev + = ( +h—d1 +)-> +tqh_Ï¡ +; \ + +449 ( +h—d1 +)-> +tqh_Ï¡ + = ( +h—d2 +)->tqh_last; \ + +450 + `TAILQ_INIT +(( +h—d2 +)); \ + +452 }  0) + + ) + +457  + #TAILQ_EMPTY +( +h—d +è((h—d)-> +tqh_fœ¡ + =ð +NULL +) + + ) + +458  + #TAILQ_FIRST +( +h—d +è((h—d)-> +tqh_fœ¡ +) + + ) + +459  + #TAILQ_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +tqe_Ãxt +) + + ) + +461  + #TAILQ_LAST +( +h—d +, +h—dÇme +) \ + +462 (*((( +h—dÇme + *)(( +h—d +)-> +tqh_Ï¡ +))->tqh_Ï¡)) + + ) + +463  + #TAILQ_PREV +( +–m +, +h—dÇme +, +f›ld +) \ + +464 (*((( +h—dÇme + *)(( +–m +)-> +f›ld +. +tqe_´ev +))-> +tqh_Ï¡ +)) + + ) + +470  + #CIRCLEQ_HEAD +( +Çme +, +ty³ +) \ + +471  + sÇme + { \ + +472  +ty³ + * +cqh_fœ¡ +; \ + +473  +ty³ + * +cqh_Ï¡ +; \ + +474 } + + ) + +476  + #CIRCLEQ_HEAD_INITIALIZER +( +h—d +) \ + +477 { (*)& +h—d +, (*)&h—d } + + ) + +479  + #CIRCLEQ_ENTRY +( +ty³ +) \ + +481  +ty³ + * +cqe_Ãxt +; \ + +482  +ty³ + * +cqe_´ev +; \ + +483 } + + ) + +488  + #CIRCLEQ_INIT +( +h—d +) do { \ + +489 ( +h—d +)-> +cqh_fœ¡ + = (*)(head); \ + +490 ( +h—d +)-> +cqh_Ï¡ + = (*)(head); \ + +491 }  0) + + ) + +493  + #CIRCLEQ_INSERT_AFTER +( +h—d +, +li¡–m +, +–m +, +f›ld +) do { \ + +494 ( +–m +)-> +f›ld +. +cqe_Ãxt + = ( +li¡–m +)->field.cqe_next; \ + +495 ( +–m +)-> +f›ld +. +cqe_´ev + = ( +li¡–m +); \ + +496 ià(( +li¡–m +)-> +f›ld +. +cqe_Ãxt + =ð(*)( +h—d +)) \ + +497 ( +h—d +)-> +cqh_Ï¡ + = ( +–m +); \ + +499 ( +li¡–m +)-> +f›ld +. +cqe_Ãxt +->f›ld. +cqe_´ev + = ( +–m +); \ + +500 ( +li¡–m +)-> +f›ld +. +cqe_Ãxt + = ( +–m +); \ + +501 }  0) + + ) + +503  + #CIRCLEQ_INSERT_BEFORE +( +h—d +, +li¡–m +, +–m +, +f›ld +) do { \ + +504 ( +–m +)-> +f›ld +. +cqe_Ãxt + = ( +li¡–m +); \ + +505 ( +–m +)-> +f›ld +. +cqe_´ev + = ( +li¡–m +)->field.cqe_prev; \ + +506 ià(( +li¡–m +)-> +f›ld +. +cqe_´ev + =ð(*)( +h—d +)) \ + +507 ( +h—d +)-> +cqh_fœ¡ + = ( +–m +); \ + +509 ( +li¡–m +)-> +f›ld +. +cqe_´ev +->f›ld. +cqe_Ãxt + = ( +–m +); \ + +510 ( +li¡–m +)-> +f›ld +. +cqe_´ev + = ( +–m +); \ + +511 }  0) + + ) + +513  + #CIRCLEQ_INSERT_HEAD +( +h—d +, +–m +, +f›ld +) do { \ + +514 ( +–m +)-> +f›ld +. +cqe_Ãxt + = ( +h—d +)-> +cqh_fœ¡ +; \ + +515 ( +–m +)-> +f›ld +. +cqe_´ev + = (*)( +h—d +); \ + +516 ià(( +h—d +)-> +cqh_Ï¡ + == (*)(head)) \ + +517 ( +h—d +)-> +cqh_Ï¡ + = ( +–m +); \ + +519 ( +h—d +)-> +cqh_fœ¡ +-> +f›ld +. +cqe_´ev + = ( +–m +); \ + +520 ( +h—d +)-> +cqh_fœ¡ + = ( +–m +); \ + +521 }  0) + + ) + +523  + #CIRCLEQ_INSERT_TAIL +( +h—d +, +–m +, +f›ld +) do { \ + +524 ( +–m +)-> +f›ld +. +cqe_Ãxt + = (*)( +h—d +); \ + +525 ( +–m +)-> +f›ld +. +cqe_´ev + = ( +h—d +)-> +cqh_Ï¡ +; \ + +526 ià(( +h—d +)-> +cqh_fœ¡ + == (*)(head)) \ + +527 ( +h—d +)-> +cqh_fœ¡ + = ( +–m +); \ + +529 ( +h—d +)-> +cqh_Ï¡ +-> +f›ld +. +cqe_Ãxt + = ( +–m +); \ + +530 ( +h—d +)-> +cqh_Ï¡ + = ( +–m +); \ + +531 }  0) + + ) + +533  + #CIRCLEQ_REMOVE +( +h—d +, +–m +, +f›ld +) do { \ + +534 ià(( +–m +)-> +f›ld +. +cqe_Ãxt + =ð(*)( +h—d +)) \ + +535 ( +h—d +)-> +cqh_Ï¡ + = ( +–m +)-> +f›ld +. +cqe_´ev +; \ + +537 ( +–m +)-> +f›ld +. +cqe_Ãxt +->f›ld. +cqe_´ev + = \ + +538 ( +–m +)-> +f›ld +. +cqe_´ev +; \ + +539 ià(( +–m +)-> +f›ld +. +cqe_´ev + =ð(*)( +h—d +)) \ + +540 ( +h—d +)-> +cqh_fœ¡ + = ( +–m +)-> +f›ld +. +cqe_Ãxt +; \ + +542 ( +–m +)-> +f›ld +. +cqe_´ev +->f›ld. +cqe_Ãxt + = \ + +543 ( +–m +)-> +f›ld +. +cqe_Ãxt +; \ + +544 }  0) + + ) + +546  + #CIRCLEQ_FOREACH +( +v¬ +, +h—d +, +f›ld +) \ + +547 ( +v¬ +èð(( +h—d +)-> +cqh_fœ¡ +); \ + +548 ( +v¬ +è!ð(cÚ¡ *)( +h—d +); \ + +549 ( +v¬ +èð((v¬)-> +f›ld +. +cqe_Ãxt +)) + + ) + +551  + #CIRCLEQ_FOREACH_REVERSE +( +v¬ +, +h—d +, +f›ld +) \ + +552 ( +v¬ +èð(( +h—d +)-> +cqh_Ï¡ +); \ + +553 ( +v¬ +è!ð(cÚ¡ *)( +h—d +); \ + +554 ( +v¬ +èð((v¬)-> +f›ld +. +cqe_´ev +)) + + ) + +559  + #CIRCLEQ_EMPTY +( +h—d +è((h—d)-> +cqh_fœ¡ + =ð(*)(h—d)) + + ) + +560  + #CIRCLEQ_FIRST +( +h—d +è((h—d)-> +cqh_fœ¡ +) + + ) + +561  + #CIRCLEQ_LAST +( +h—d +è((h—d)-> +cqh_Ï¡ +) + + ) + +562  + #CIRCLEQ_NEXT +( +–m +, +f›ld +è(Ólm)->f›ld. +cqe_Ãxt +) + + ) + +563  + #CIRCLEQ_PREV +( +–m +, +f›ld +è(Ólm)->f›ld. +cqe_´ev +) + + ) + +565  + #CIRCLEQ_LOOP_NEXT +( +h—d +, +–m +, +f›ld +) \ + +566 ((( +–m +)-> +f›ld +. +cqe_Ãxt + =ð(*)( +h—d +)) \ + +567 ? (( +h—d +)-> +cqh_fœ¡ +) \ + +568 : ( +–m +-> +f›ld +. +cqe_Ãxt +)) + + ) + +569  + #CIRCLEQ_LOOP_PREV +( +h—d +, +–m +, +f›ld +) \ + +570 ((( +–m +)-> +f›ld +. +cqe_´ev + =ð(*)( +h—d +)) \ + +571 ? (( +h—d +)-> +cqh_Ï¡ +) \ + +572 : ( +–m +-> +f›ld +. +cqe_´ev +)) + + ) + + @/usr/include/sys/socket.h + +19 #iâdef +_SYS_SOCKET_H + + +20  + #_SYS_SOCKET_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +24 + g__BEGIN_DECLS + + +26  + ~ + +27  + #__Ãed_size_t + + + ) + +28  + ~<¡ddef.h +> + +29 #ifdeà +__USE_GNU + + +31  + ~ + +38  + ~ + +40 #ifdeà +__USE_MISC + + +43  + sosockaddr + + +45  + m§_çmžy +; + +46  + m§_d©a +[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à +defšed + +__ýlu¥lus + || ! +__GNUC_PREREQ + (2, 7è|| !defšed +__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  + $bšd + ( +__fd +, +__CONST_SOCKADDR_ARG + +__addr +, +sockËn_t + +__Ën +) + +124 +__THROW +; + +127  + $g‘sockÇme + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +128 +sockËn_t + * +__»¡riù + +__Ën +è +__THROW +; + +137  + `cÚÃù + ( +__fd +, +__CONST_SOCKADDR_ARG + +__addr +, +sockËn_t + +__Ën +); + +141  + $g‘³”Çme + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +142 +sockËn_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 +sockËn_t + +__addr_Ën +); + +174 +ssize_t + + `»cväom + ( +__fd +, * +__»¡riù + +__buf +, +size_t + +__n +, + +175  +__æags +, +__SOCKADDR_ARG + +__addr +, + +176 +sockËn_t + * +__»¡riù + +__addr_Ën +); + +184 +ssize_t + + `£ndmsg + ( +__fd +, cÚ¡  +msghdr + * +__mes§ge +, + +185  +__æags +); + +187 #ifdeà +__USE_GNU + + +193  + `£ndmmsg + ( +__fd +,  +mmsghdr + * +__vmes§ges +, + +194  +__vËn +,  +__æags +); + +202 +ssize_t + + `»cvmsg + ( +__fd +,  +msghdr + * +__mes§ge +,  +__æags +); + +204 #ifdeà +__USE_GNU + + +210  + `»cvmmsg + ( +__fd +,  +mmsghdr + * +__vmes§ges +, + +211  +__vËn +,  +__æags +, + +212  +time¥ec + * +__tmo +); + +219  + $g‘sockÝt + ( +__fd +,  +__Ëv– +,  +__݊ame +, + +220 * +__»¡riù + +__Ýtv® +, + +221 +sockËn_t + * +__»¡riù + +__ݎ’ +è +__THROW +; + +226  + $£tsockÝt + ( +__fd +,  +__Ëv– +,  +__݊ame +, + +227 cÚ¡ * +__Ýtv® +, +sockËn_t + +__ݎ’ +è +__THROW +; + +233  + $li¡’ + ( +__fd +,  +__n +è +__THROW +; + +243  + `acû± + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +244 +sockËn_t + * +__»¡riù + +__addr_Ën +); + +246 #ifdeà +__USE_GNU + + +251  + `acû±4 + ( +__fd +, +__SOCKADDR_ARG + +__addr +, + +252 +sockËn_t + * +__»¡riù + +__addr_Ën +,  +__æags +); + +261  + $shutdown + ( +__fd +,  +__how +è +__THROW +; + +264 #ifdeà +__USE_XOPEN2K + + +266  + $sock©m¬k + ( +__fd +è +__THROW +; + +270 #ifdeà +__USE_MISC + + +274  + $isfdty³ + ( +__fd +,  +__fdty³ +è +__THROW +; + +279 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +280  + ~ + +283 +__END_DECLS + + + @/usr/include/sys/types.h + +22 #iâdef +_SYS_TYPES_H + + +23  + #_SYS_TYPES_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27 + g__BEGIN_DECLS + + +29  + ~ + +31 #ifdef +__USE_MISC + + +32 #iâdeà +__u_ch¬_defšed + + +33  +__u_ch¬ + + tu_ch¬ +; + +34  +__u_shÜt + + tu_shÜt +; + +35  +__u_št + + tu_št +; + +36  +__u_lÚg + + tu_lÚg +; + +37  +__quad_t + + tquad_t +; + +38  +__u_quad_t + + tu_quad_t +; + +39  +__fsid_t + + tfsid_t +; + +40  + #__u_ch¬_defšed + + + ) + +44  +__loff_t + + tloff_t +; + +46 #iâdeà +__šo_t_defšed + + +47 #iâdeà +__USE_FILE_OFFSET64 + + +48  +__šo_t + + tšo_t +; + +50  +__šo64_t + + tšo_t +; + +52  + #__šo_t_defšed + + + ) + +54 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__šo64_t_defšed + + +55  +__šo64_t + + tšo64_t +; + +56  + #__šo64_t_defšed + + + ) + +59 #iâdeà +__dev_t_defšed + + +60  +__dev_t + + tdev_t +; + +61  + #__dev_t_defšed + + + ) + +64 #iâdeà +__gid_t_defšed + + +65  +__gid_t + + tgid_t +; + +66  + #__gid_t_defšed + + + ) + +69 #iâdeà +__mode_t_defšed + + +70  +__mode_t + + tmode_t +; + +71  + #__mode_t_defšed + + + ) + +74 #iâdeà +__ƚk_t_defšed + + +75  +__ƚk_t + + tƚk_t +; + +76  + #__ƚk_t_defšed + + + ) + +79 #iâdeà +__uid_t_defšed + + +80  +__uid_t + + tuid_t +; + +81  + #__uid_t_defšed + + + ) + +84 #iâdeà +__off_t_defšed + + +85 #iâdeà +__USE_FILE_OFFSET64 + + +86  +__off_t + + toff_t +; + +88  +__off64_t + + toff_t +; + +90  + #__off_t_defšed + + + ) + +92 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +93  +__off64_t + + toff64_t +; + +94  + #__off64_t_defšed + + + ) + +97 #iâdeà +__pid_t_defšed + + +98  +__pid_t + + tpid_t +; + +99  + #__pid_t_defšed + + + ) + +102 #ià( +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 +) \ + +103 && ! +defšed + +__id_t_defšed + + +104  +__id_t + + tid_t +; + +105  + #__id_t_defšed + + + ) + +108 #iâdeà +__ssize_t_defšed + + +109  +__ssize_t + + tssize_t +; + +110  + #__ssize_t_defšed + + + ) + +113 #ifdef +__USE_MISC + + +114 #iâdeà +__daddr_t_defšed + + +115  +__daddr_t + + tdaddr_t +; + +116  +__ÿddr_t + + tÿddr_t +; + +117  + #__daddr_t_defšed + + + ) + +121 #ià( +defšed + +__USE_MISC + || defšed +__USE_XOPEN +è&& !defšed +__key_t_defšed + + +122  +__key_t + + tkey_t +; + +123  + #__key_t_defšed + + + ) + +126 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +127  + #__Ãed_þock_t + + + ) + +129  + #__Ãed_time_t + + + ) + +130  + #__Ãed_tim”_t + + + ) + +131  + #__Ãed_þockid_t + + + ) + +132  + ~ + +134 #ifdeà +__USE_XOPEN + + +135 #iâdeà +__u£cÚds_t_defšed + + +136  +__u£cÚds_t + + tu£cÚds_t +; + +137  + #__u£cÚds_t_defšed + + + ) + +139 #iâdeà +__su£cÚds_t_defšed + + +140  +__su£cÚds_t + + tsu£cÚds_t +; + +141  + #__su£cÚds_t_defšed + + + ) + +145  + #__Ãed_size_t + + + ) + +146  + ~<¡ddef.h +> + +148 #ifdeà +__USE_MISC + + +150  + tulÚg +; + +151  + tushÜt +; + +152  + tušt +; + +157 #ià! +__GNUC_PREREQ + (2, 7) + +160 #iâdeà +__št8_t_defšed + + +161  + #__št8_t_defšed + + + ) + +162  + tšt8_t +; + +163  + tšt16_t +; + +164  + tšt32_t +; + +165 #ià +__WORDSIZE + == 64 + +166  + tšt64_t +; + +168 +__ex‹nsiÚ__ +  + tšt64_t +; + +173  + tu_št8_t +; + +174  + tu_št16_t +; + +175  + tu_št32_t +; + +176 #ià +__WORDSIZE + == 64 + +177  + tu_št64_t +; + +179 +__ex‹nsiÚ__ +  + tu_št64_t +; + +182  + t»gi¡”_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 #iâdeà + t__št8_t_defšed + + +193  + t__št8_t_defšed + + + ) + +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  + t»gi¡”_t + + t__©Œibu‹__ + (( + t__mode__ + ( + t__wÜd__ +))); + +211  + #__BIT_TYPES_DEFINED__ + 1 + + ) + +214 #ifdef +__USE_MISC + + +216  + ~<’dŸn.h +> + +219  + ~ + +222  + ~ + +226 #ià( +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K8 +) \ + +227 && ! +defšed + +__blksize_t_defšed + + +228  +__blksize_t + + tblksize_t +; + +229  + #__blksize_t_defšed + + + ) + +233 #iâdeà +__USE_FILE_OFFSET64 + + +234 #iâdeà +__blkút_t_defšed + + +235  +__blkút_t + + tblkút_t +; + +236  + #__blkút_t_defšed + + + ) + +238 #iâdeà +__fsblkút_t_defšed + + +239  +__fsblkút_t + + tfsblkút_t +; + +240  + #__fsblkút_t_defšed + + + ) + +242 #iâdeà +__fsfžút_t_defšed + + +243  +__fsfžút_t + + tfsfžút_t +; + +244  + #__fsfžút_t_defšed + + + ) + +247 #iâdeà +__blkút_t_defšed + + +248  +__blkút64_t + + tblkút_t +; + +249  + #__blkút_t_defšed + + + ) + +251 #iâdeà +__fsblkút_t_defšed + + +252  +__fsblkút64_t + + tfsblkút_t +; + +253  + #__fsblkút_t_defšed + + + ) + +255 #iâdeà +__fsfžút_t_defšed + + +256  +__fsfžút64_t + + tfsfžút_t +; + +257  + #__fsfžút_t_defšed + + + ) + +261 #ifdeà +__USE_LARGEFILE64 + + +262  +__blkút64_t + + tblkút64_t +; + +263  +__fsblkút64_t + + tfsblkút64_t +; + +264  +__fsfžút64_t + + tfsfžút64_t +; + +269 #ià +defšed + +__USE_POSIX199506 + || defšed +__USE_UNIX98 + + +270  + ~ + +273 + g__END_DECLS + + + @/usr/include/sys/wait.h + +22 #iâdef +_SYS_WAIT_H + + +23  + #_SYS_WAIT_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27 + g__BEGIN_DECLS + + +29  + ~ + +32 #ià! +defšed + +_STDLIB_H + || (!defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K8 +) + +35  + ~ + +37 #ifdef +__USE_MISC + + +42 #ià +defšed + +__GNUC__ + && !defšed +__ýlu¥lus + + +43  + #__WAIT_INT +( +¡©us +) \ + +44 ( + `__ex‹nsiÚ__ + (((uniÚ { + `__ty³of +( +¡©us +è +__š +;  +__i +; }) \ + +45 { . +__š + = ( +¡©us +è}). +__i +)) + + ) + +47  + #__WAIT_INT +( +¡©us +è(*(cÚ¡ *è&(¡©us)) + + ) + +55 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 || defšed +__ýlu¥lus + + +56  + #__WAIT_STATUS + * + + ) + +57  + #__WAIT_STATUS_DEFN + * + + ) + +62  +wa™ + * + m__u±r +; + +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 + +wa™pid + (__pid_ˆ +__pid +, * +__¡©_loc +,  +__ÝtiÚs +); + +127 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +128 #iâdeà +__id_t_defšed + + +129  + ~ + +130  +__id_t + + tid_t +; + +131  + #__id_t_defšed + + + ) + +134  + #__Ãed_sigšfo_t + + + ) + +135  + ~ + +148  +wa™id + ( +idty³_t + +__idty³ +, +__id_t + +__id +, +sigšfo_t + * +__šfÝ +, + +149  +__ÝtiÚs +); + +152 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +155  + gru§ge +; + +162 +__pid_t + + $wa™3 + ( +__WAIT_STATUS + +__¡©_loc +,  +__ÝtiÚs +, + +163  +ru§ge + * +__u§ge +è +__THROWNL +; + +166 #ifdeà +__USE_MISC + + +168 +__pid_t + + $wa™4 + ( +__pid_t + +__pid +, +__WAIT_STATUS + +__¡©_loc +,  +__ÝtiÚs +, + +169  +ru§ge + * +__u§ge +è +__THROWNL +; + +173 +__END_DECLS + + + @/usr/include/time.h + +22 #iâdef +_TIME_H + + +24 #ià(! +defšed + +__Ãed_time_t + && !defšed +__Ãed_þock_t + && \ + +25 ! +defšed + + g__Ãed_time¥ec +) + +26  + #_TIME_H + 1 + + ) + +27  + ~<ã©u»s.h +> + +29 + g__BEGIN_DECLS + + +33 #ifdef +_TIME_H + + +35  + #__Ãed_size_t + + + ) + +36  + #__Ãed_NULL + + + ) + +37  + ~<¡ddef.h +> + +41  + ~ + +44 #ià! +defšed + +__STRICT_ANSI__ + && !defšed +__USE_XOPEN2K + + +45 #iâdeà +CLK_TCK + + +46  + #CLK_TCK + +CLOCKS_PER_SEC + + + ) + +52 #ià! +defšed + +__þock_t_defšed + && (defšed +_TIME_H + || defšed +__Ãed_þock_t +) + +53  + #__þock_t_defšed + 1 + + ) + +55  + ~ + +57 +__BEGIN_NAMESPACE_STD + + +59  +__þock_t + + tþock_t +; + +60 + g__END_NAMESPACE_STD + + +61 #ià +defšed + +__USE_XOPEN + || defšed +__USE_POSIX + + +62 + $__USING_NAMESPACE_STD +( +þock_t +) + +66 #undeà +__Ãed_þock_t + + +68 #ià! +defšed + +__time_t_defšed + && (defšed +_TIME_H + || defšed +__Ãed_time_t +) + +69  + #__time_t_defšed + 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à! +defšed + +__þockid_t_defšed + && \ + +85 (( +defšed + +_TIME_H + && defšed +__USE_POSIX199309 +è|| defšed +__Ãed_þockid_t +) + +86  + #__þockid_t_defšed + 1 + + ) + +88  + ~ + +91  +__þockid_t + + tþockid_t +; + +94 #undeà +__þockid_time_t + + +96 #ià! +defšed + +__tim”_t_defšed + && \ + +97 (( +defšed + +_TIME_H + && defšed +__USE_POSIX199309 +è|| defšed +__Ãed_tim”_t +) + +98  + #__tim”_t_defšed + 1 + + ) + +100  + ~ + +103  +__tim”_t + + ttim”_t +; + +106 #undeà +__Ãed_tim”_t + + +109 #ià(! +defšed + +__time¥ec_defšed + \ + +110 && (( +defšed + +_TIME_H + \ + +111 && ( +defšed + +__USE_POSIX199309 + \ + +112 || +defšed + +__USE_ISOC11 +)) \ + +113 || +defšed + +__Ãed_time¥ec +)) + +114  + #__time¥ec_defšed + 1 + + ) + +116  + ~ + +120  + stime¥ec + + +122 +__time_t + +tv_£c +; + +123 +__sysÿÎ_¦Úg_t + +tv_n£c +; + +127 #undeà +__Ãed_time¥ec + + +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_y—r +; + +141  +tm_wday +; + +142  +tm_yday +; + +143  +tm_isd¡ +; + +145 #ifdef +__USE_MISC + + +146  +tm_gmtoff +; + +147 cÚ¡ * +tm_zÚe +; + +149  +__tm_gmtoff +; + +150 cÚ¡ * +__tm_zÚe +; + +153 +__END_NAMESPACE_STD + + +154 #ià +defšed + +__USE_XOPEN + || defšed +__USE_POSIX + + +155 + $__USING_NAMESPACE_STD +( +tm +) + +159 #ifdeà +__USE_POSIX199309 + + +161  + s™im”¥ec + + +163  +time¥ec + +™_š‹rv® +; + +164  +time¥ec + +™_v®ue +; + +168  +sigev’t +; + +172 #ifdeà +__USE_XOPEN2K + + +173 #iâdeà +__pid_t_defšed + + +174  +__pid_t + + tpid_t +; + +175  + #__pid_t_defšed + + + ) + +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  + $difáime + ( +time_t + +__time1 +,ime_ˆ +__time0 +) + +196 +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +199 +time_t + + $mktime + ( +tm + * +__ +è +__THROW +; + +205 +size_t + + $¡ráime + (* +__»¡riù + +__s +, +size_t + +__maxsize +, + +206 cÚ¡ * +__»¡riù + +__fÜm© +, + +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 + + $¡ráime_l + (* +__»¡riù + +__s +, +size_t + +__maxsize +, + +224 cÚ¡ * +__»¡riù + +__fÜm© +, + +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 + * + $loÿÉime + (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 + * + $loÿÉime_r + (cÚ¡ +time_t + * +__»¡riù + +__tim” +, + +255  +tm + * +__»¡riù + +__ +è +__THROW +; + +258 +__BEGIN_NAMESPACE_STD + + +261 * + $asùime + (cÚ¡  +tm + * +__ +è +__THROW +; + +264 * + $ùime + (cÚ¡ +time_t + * +__tim” +è +__THROW +; + +265 +__END_NAMESPACE_STD + + +267 #ifdeà +__USE_POSIX + + +272 * + $asùime_r + (cÚ¡  +tm + * +__»¡riù + +__ +, + +273 * +__»¡riù + +__buf +è +__THROW +; + +276 * + $ùime_r + (cÚ¡ +time_t + * +__»¡riù + +__tim” +, + +277 * +__»¡riù + +__buf +è +__THROW +; + +282 * +__tzÇme +[2]; + +283  +__daylight +; + +284  +__timezÚe +; + +287 #ifdef +__USE_POSIX + + +289 * +tzÇme +[2]; + +293  + $tz£t + (è +__THROW +; + +296 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +297  +daylight +; + +298  +timezÚe +; + +301 #ifdeà +__USE_MISC + + +304  + $¡ime + (cÚ¡ +time_t + * +__wh’ +è +__THROW +; + +310  + #__i¦—p +( +y—r +) \ + +311 (( +y—r +è% 4 =ð0 && ((y—rè% 100 !ð0 || (y—rè% 400 =ð0)) + + ) + +314 #ifdeà +__USE_MISC + + +319 +time_t + + $timegm + ( +tm + * +__ +è +__THROW +; + +322 +time_t + + $tim–oÿl + ( +tm + * +__ +è +__THROW +; + +325  + $dysize + ( +__y—r +è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +329 #ifdeà +__USE_POSIX199309 + + +334  + `Çno¦“p + (cÚ¡  +time¥ec + * +__»que¡ed_time +, + +335  +time¥ec + * +__»maššg +); + +339  + $þock_g‘»s + ( +þockid_t + +__þock_id +,  +time¥ec + * +__»s +è +__THROW +; + +342  + $þock_g‘time + ( +þockid_t + +__þock_id +,  +time¥ec + * +__ +è +__THROW +; + +345  + $þock_£‰ime + ( +þockid_t + +__þock_id +, cÚ¡  +time¥ec + * +__ +) + +346 +__THROW +; + +348 #ifdeà +__USE_XOPEN2K + + +353  + `þock_Çno¦“p + ( +þockid_t + +__þock_id +,  +__æags +, + +354 cÚ¡  +time¥ec + * +__»q +, + +355  +time¥ec + * +__»m +); + +358  + $þock_g‘ýuþockid + ( +pid_t + +__pid +, +þockid_t + * +__þock_id +è +__THROW +; + +363  + $tim”_ü—‹ + ( +þockid_t + +__þock_id +, + +364  +sigev’t + * +__»¡riù + +__evp +, + +365 +tim”_t + * +__»¡riù + +__tim”id +è +__THROW +; + +368  + $tim”_d–‘e + ( +tim”_t + +__tim”id +è +__THROW +; + +371  + $tim”_£‰ime + ( +tim”_t + +__tim”id +,  +__æags +, + +372 cÚ¡  +™im”¥ec + * +__»¡riù + +__v®ue +, + +373  +™im”¥ec + * +__»¡riù + +__ov®ue +è +__THROW +; + +376  + $tim”_g‘time + ( +tim”_t + +__tim”id +,  +™im”¥ec + * +__v®ue +) + +377 +__THROW +; + +380  + $tim”_g‘ov”run + ( +tim”_t + +__tim”id +è +__THROW +; + +384 #ifdeà +__USE_ISOC11 + + +386  + $time¥ec_g‘ + ( +time¥ec + * +__ts +,  +__ba£ +) + +387 +__THROW + + `__nÚnuÎ + ((1)); + +391 #ifdeà +__USE_XOPEN_EXTENDED + + +403  +g‘d©e_”r +; + +412  +tm + * + `g‘d©e + (cÚ¡ * +__¡ršg +); + +415 #ifdeà +__USE_GNU + + +426  + `g‘d©e_r + (cÚ¡ * +__»¡riù + +__¡ršg +, + +427  +tm + * +__»¡riù + +__»sbuå +); + +430 +__END_DECLS + + + @/usr/include/unistd.h + +22 #iâdef +_UNISTD_H + + +23  + #_UNISTD_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +27 + g__BEGIN_DECLS + + +32 #ifdeà +__USE_XOPEN2K8 + + +34  + #_POSIX_VERSION + 200809L + + ) + +35 #–ià +defšed + +__USE_XOPEN2K + + +37  + #_POSIX_VERSION + 200112L + + ) + +38 #–ià +defšed + +__USE_POSIX199506 + + +40  + #_POSIX_VERSION + 199506L + + ) + +41 #–ià +defšed + +__USE_POSIX199309 + + +43  + #_POSIX_VERSION + 199309L + + ) + +46  + #_POSIX_VERSION + 199009L + + ) + +52 #ifdeà +__USE_XOPEN2K8 + + +53  + #__POSIX2_THIS_VERSION + 200809L + + ) + +55 #–ià +defšed + +__USE_XOPEN2K + + +57  + #__POSIX2_THIS_VERSION + 200112L + + ) + +58 #–ià +defšed + +__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à +defšed + +__USE_XOPEN2K + + +92  + #_XOPEN_VERSION + 600 + + ) + +93 #–ià +defšed + +__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à +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +209  + ~ + +213  + #STDIN_FILENO + 0 + + ) + +214  + #STDOUT_FILENO + 1 + + ) + +215  + #STDERR_FILENO + 2 + + ) + +220  + ~ + +222 #iâdef +__ssize_t_defšed + + +223  +__ssize_t + + tssize_t +; + +224  + #__ssize_t_defšed + + + ) + +227  + #__Ãed_size_t + + + ) + +228  + #__Ãed_NULL + + + ) + +229  + ~<¡ddef.h +> + +231 #ià +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K + + +234 #iâdeà +__gid_t_defšed + + +235  +__gid_t + + tgid_t +; + +236  + #__gid_t_defšed + + + ) + +239 #iâdeà +__uid_t_defšed + + +240  +__uid_t + + tuid_t +; + +241  + #__uid_t_defšed + + + ) + +244 #iâdeà +__off_t_defšed + + +245 #iâdeà +__USE_FILE_OFFSET64 + + +246  +__off_t + + toff_t +; + +248  +__off64_t + + toff_t +; + +250  + #__off_t_defšed + + + ) + +252 #ià +defšed + +__USE_LARGEFILE64 + && !defšed +__off64_t_defšed + + +253  +__off64_t + + toff64_t +; + +254  + #__off64_t_defšed + + + ) + +257 #iâdeà +__u£cÚds_t_defšed + + +258  +__u£cÚds_t + + tu£cÚds_t +; + +259  + #__u£cÚds_t_defšed + + + ) + +262 #iâdeà +__pid_t_defšed + + +263  +__pid_t + + tpid_t +; + +264  + #__pid_t_defšed + + + ) + +268 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +269 #iâdeà +__šŒ_t_defšed + + +270  +__šŒ_t + + tšŒ_t +; + +271  + #__šŒ_t_defšed + + + ) + +275 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +276 #iâdeà +__sockËn_t_defšed + + +277  +__sockËn_t + + tsockËn_t +; + +278  + #__sockËn_t_defšed + + + ) + +284  + #R_OK + 4 + + ) + +285  + #W_OK + 2 + + ) + +286  + #X_OK + 1 + + ) + +287  + #F_OK + 0 + + ) + +290  + $acûss + (cÚ¡ * +__Çme +,  +__ty³ +è +__THROW + + `__nÚnuÎ + ((1)); + +292 #ifdeà +__USE_GNU + + +295  + $euidacûss + (cÚ¡ * +__Çme +,  +__ty³ +) + +296 +__THROW + + `__nÚnuÎ + ((1)); + +299  + $—cûss + (cÚ¡ * +__Çme +,  +__ty³ +) + +300 +__THROW + + `__nÚnuÎ + ((1)); + +303 #ifdeà +__USE_ATFILE + + +307  + $çcûs§t + ( +__fd +, cÚ¡ * +__fže +,  +__ty³ +,  +__æag +) + +308 +__THROW + + `__nÚnuÎ + ((2)è +__wur +; + +313 #iâdef +_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à +defšed + +__USE_MISC + && !defšed +L_SET + + +325  + #L_SET + +SEEK_SET + + + ) + +326  + #L_INCR + +SEEK_CUR + + + ) + +327  + #L_XTND + +SEEK_END + + + ) + +336 #iâdeà +__USE_FILE_OFFSET64 + + +337 +__off_t + + $l£ek + ( +__fd +, +__off_t + +__off£t +,  +__wh’û +è +__THROW +; + +339 #ifdeà +__REDIRECT_NTH + + +340 +__off64_t + + `__REDIRECT_NTH + ( +l£ek +, + +341 ( +__fd +, +__off64_t + +__off£t +,  +__wh’û +), + +342 +l£ek64 +); + +344  + #l£ek + +l£ek64 + + + ) + +347 #ifdeà +__USE_LARGEFILE64 + + +348 +__off64_t + + $l£ek64 + ( +__fd +, +__off64_t + +__off£t +,  +__wh’û +) + +349 +__THROW +; + +356  + `þo£ + ( +__fd +); + +363 +ssize_t + + $»ad + ( +__fd +, * +__buf +, +size_t + +__nby‹s +è +__wur +; + +369 +ssize_t + + $wr™e + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +è +__wur +; + +371 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K8 + + +372 #iâdeà +__USE_FILE_OFFSET64 + + +379 +ssize_t + + $´—d + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +380 +__off_t + +__off£t +è +__wur +; + +387 +ssize_t + + $pwr™e + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +, + +388 +__off_t + +__off£t +è +__wur +; + +390 #ifdeà +__REDIRECT + + +391 +ssize_t + + `__REDIRECT + ( +´—d +, ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +392 +__off64_t + +__off£t +), + +393 +´—d64 +è +__wur +; + +394 +ssize_t + + `__REDIRECT + ( +pwr™e +, ( +__fd +, cÚ¡ * +__buf +, + +395 +size_t + +__nby‹s +, +__off64_t + +__off£t +), + +396 +pwr™e64 +è +__wur +; + +398  + #´—d + +´—d64 + + + ) + +399  + #pwr™e + +pwr™e64 + + + ) + +403 #ifdeà +__USE_LARGEFILE64 + + +407 +ssize_t + + $´—d64 + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +408 +__off64_t + +__off£t +è +__wur +; + +411 +ssize_t + + $pwr™e64 + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +, + +412 +__off64_t + +__off£t +è +__wur +; + +420  + $pe + ( +__pedes +[2]è +__THROW + +__wur +; + +422 #ifdeà +__USE_GNU + + +425  + $pe2 + ( +__pedes +[2],  +__æags +è +__THROW + +__wur +; + +435  + $®¬m + ( +__£cÚds +è +__THROW +; + +447  + `¦“p + ( +__£cÚds +); + +449 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K8 +) \ + +450 || +defšed + +__USE_MISC + + +455 +__u£cÚds_t + + $u®¬m + ( +__u£cÚds_t + +__v®ue +, __u£cÚds_ˆ +__š‹rv® +) + +456 +__THROW +; + +463  + `u¦“p + ( +__u£cÚds_t + +__u£cÚds +); + +472  + `·u£ + (); + +476  + $chown + (cÚ¡ * +__fže +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +477 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +479 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +481  + $fchown + ( +__fd +, +__uid_t + +__owÃr +, +__gid_t + +__group +è +__THROW + +__wur +; + +486  + $lchown + (cÚ¡ * +__fže +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +487 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +491 #ifdeà +__USE_ATFILE + + +494  + $fchowÇt + ( +__fd +, cÚ¡ * +__fže +, +__uid_t + +__owÃr +, + +495 +__gid_t + +__group +,  +__æag +) + +496 +__THROW + + `__nÚnuÎ + ((2)è +__wur +; + +500  + $chdœ + (cÚ¡ * +__·th +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +502 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +504  + $fchdœ + ( +__fd +è +__THROW + +__wur +; + +514 * + $g‘cwd + (* +__buf +, +size_t + +__size +è +__THROW + +__wur +; + +516 #ifdef +__USE_GNU + + +520 * + $g‘_cu¼’t_dœ_Çme + (è +__THROW +; + +523 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K8 +) \ + +524 || +defšed + +__USE_MISC + + +528 * + $g‘wd + (* +__buf +) + +529 +__THROW + + `__nÚnuÎ + ((1)è +__©Œibu‹_d•»ÿ‹d__ + +__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 + + `__nÚnuÎ + ((1, 2)); + +557 #ifdeà +__USE_XOPEN2K8 + + +560  + $ãxecve + ( +__fd +, *cÚ¡ +__¬gv +[], *cÚ¡ +__’vp +[]) + +561 +__THROW + + `__nÚnuÎ + ((2)); + +566  + $execv + (cÚ¡ * +__·th +, *cÚ¡ +__¬gv +[]) + +567 +__THROW + + `__nÚnuÎ + ((1, 2)); + +571  + $exeþe + (cÚ¡ * +__·th +, cÚ¡ * +__¬g +, ...) + +572 +__THROW + + `__nÚnuÎ + ((1, 2)); + +576  + $exeþ + (cÚ¡ * +__·th +, cÚ¡ * +__¬g +, ...) + +577 +__THROW + + `__nÚnuÎ + ((1, 2)); + +581  + $execvp + (cÚ¡ * +__fže +, *cÚ¡ +__¬gv +[]) + +582 +__THROW + + `__nÚnuÎ + ((1, 2)); + +587  + $exeþp + (cÚ¡ * +__fže +, cÚ¡ * +__¬g +, ...) + +588 +__THROW + + `__nÚnuÎ + ((1, 2)); + +590 #ifdeà +__USE_GNU + + +593  + $execv³ + (cÚ¡ * +__fže +, *cÚ¡ +__¬gv +[], + +594 *cÚ¡ +__’vp +[]) + +595 +__THROW + + `__nÚnuÎ + ((1, 2)); + +599 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +601  + $niû + ( +__šc +è +__THROW + +__wur +; + +606  + $_ex™ + ( +__¡©us +è + `__©Œibu‹__ + (( +__nܑuº__ +)); + +612  + ~ + +615  + $·thcÚf + (cÚ¡ * +__·th +,  +__Çme +) + +616 +__THROW + + `__nÚnuÎ + ((1)); + +619  + $å©hcÚf + ( +__fd +,  +__Çme +è +__THROW +; + +622  + $syscÚf + ( +__Çme +è +__THROW +; + +624 #ifdef +__USE_POSIX2 + + +626 +size_t + + $cÚf¡r + ( +__Çme +, * +__buf +, +size_t + +__Ën +è +__THROW +; + +631 +__pid_t + + $g‘pid + (è +__THROW +; + +634 +__pid_t + + $g‘µid + (è +__THROW +; + +637 +__pid_t + + $g‘pg½ + (è +__THROW +; + +640 +__pid_t + + $__g‘pgid + ( +__pid_t + +__pid +è +__THROW +; + +641 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +642 +__pid_t + + $g‘pgid + ( +__pid_t + +__pid +è +__THROW +; + +649  + $£gid + ( +__pid_t + +__pid +, __pid_ˆ +__pgid +è +__THROW +; + +651 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +663  + $£g½ + (è +__THROW +; + +670 +__pid_t + + $£tsid + (è +__THROW +; + +672 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +674 +__pid_t + + $g‘sid + ( +__pid_t + +__pid +è +__THROW +; + +678 +__uid_t + + $g‘uid + (è +__THROW +; + +681 +__uid_t + + $g‘euid + (è +__THROW +; + +684 +__gid_t + + $g‘gid + (è +__THROW +; + +687 +__gid_t + + $g‘egid + (è +__THROW +; + +692  + $g‘groups + ( +__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à +defšed + +__USE_MISC + || defšed +__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à +defšed + +__USE_MISC + || defšed +__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  + $g‘»suid + ( +__uid_t + * +__ruid +, __uid_ˆ* +__euid +, __uid_ˆ* +__suid +) + +737 +__THROW +; + +741  + $g‘»sgid + ( +__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 + + $fÜk + (è +__THROWNL +; + +761 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K8 +) \ + +762 || +defšed + +__USE_MISC + + +767 +__pid_t + + $vfÜk + (è +__THROW +; + +773 * + $‰yÇme + ( +__fd +è +__THROW +; + +777  + $‰yÇme_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +) + +778 +__THROW + + `__nÚnuÎ + ((2)è +__wur +; + +782  + $i§‰y + ( +__fd +è +__THROW +; + +784 #ià +defšed + +__USE_MISC + \ + +785 || ( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_UNIX98 +) + +788  + $‰y¦Ù + (è +__THROW +; + +793  + $lšk + (cÚ¡ * +__äom +, cÚ¡ * +__to +) + +794 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +796 #ifdeà +__USE_ATFILE + + +799  + $lšk© + ( +__äomfd +, cÚ¡ * +__äom +,  +__tofd +, + +800 cÚ¡ * +__to +,  +__æags +) + +801 +__THROW + + `__nÚnuÎ + ((2, 4)è +__wur +; + +804 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +806  + $symlšk + (cÚ¡ * +__äom +, cÚ¡ * +__to +) + +807 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +812 +ssize_t + + $»adlšk + (cÚ¡ * +__»¡riù + +__·th +, + +813 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +814 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +817 #ifdeà +__USE_ATFILE + + +819  + $symlšk© + (cÚ¡ * +__äom +,  +__tofd +, + +820 cÚ¡ * +__to +è +__THROW + + `__nÚnuÎ + ((1, 3)è +__wur +; + +823 +ssize_t + + $»adlšk© + ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +824 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +825 +__THROW + + `__nÚnuÎ + ((2, 3)è +__wur +; + +829  + $uƚk + (cÚ¡ * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +831 #ifdeà +__USE_ATFILE + + +833  + $uƚk© + ( +__fd +, cÚ¡ * +__Çme +,  +__æag +) + +834 +__THROW + + `__nÚnuÎ + ((2)); + +838  + $rmdœ + (cÚ¡ * +__·th +è +__THROW + + `__nÚnuÎ + ((1)); + +842 +__pid_t + + $tcg‘pg½ + ( +__fd +è +__THROW +; + +845  + $tc£g½ + ( +__fd +, +__pid_t + +__pg½_id +è +__THROW +; + +852 * + `g‘logš + (); + +853 #ià +defšed + +__USE_REENTRANT + || defšed +__USE_POSIX199506 + + +860  + $g‘logš_r + (* +__Çme +, +size_t + +__Çme_Ën +è + `__nÚnuÎ + ((1)); + +863 #ifdef +__USE_MISC + + +865  + $£Žogš + (cÚ¡ * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)); + +869 #ifdef +__USE_POSIX2 + + +873  + #__Ãed_g‘Ýt + + + ) + +874  + ~ + +878 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +882  + $g‘ho¡Çme + (* +__Çme +, +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((1)); + +886 #ià +defšed + +__USE_MISC + + +889  + $£tho¡Çme + (cÚ¡ * +__Çme +, +size_t + +__Ën +) + +890 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +894  + $£tho¡id + ( +__id +è +__THROW + +__wur +; + +900  + $g‘domašÇme + (* +__Çme +, +size_t + +__Ën +) + +901 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +902  + $£tdomašÇme + (cÚ¡ * +__Çme +, +size_t + +__Ën +) + +903 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +909  + $vhªgup + (è +__THROW +; + +912  + $»voke + (cÚ¡ * +__fže +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +920  + $´ofž + (* +__§m¶e_bufãr +, +size_t + +__size +, + +921 +size_t + +__off£t +,  +__sÿË +) + +922 +__THROW + + `__nÚnuÎ + ((1)); + +928  + $acù + (cÚ¡ * +__Çme +è +__THROW +; + +932 * + $g‘u£rsh–l + (è +__THROW +; + +933  + $’du£rsh–l + (è +__THROW +; + +934  + $£tu£rsh–l + (è +__THROW +; + +940  + $d«mÚ + ( +__nochdœ +,  +__noþo£ +è +__THROW + +__wur +; + +944 #ià +defšed + +__USE_MISC + || (defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +947  + $chroÙ + (cÚ¡ * +__·th +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +951 * + $g‘·ss + (cÚ¡ * +__´om± +è + `__nÚnuÎ + ((1)); + +959  + `fsync + ( +__fd +); + +962 #ifdeà +__USE_GNU + + +965  + $syncfs + ( +__fd +è +__THROW +; + +969 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +972  + `g‘ho¡id + (); + +975  + $sync + (è +__THROW +; + +978 #ià +defšed + +__USE_MISC + || !defšed +__USE_XOPEN2K + + +981  + $g‘·gesize + (è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +986  + $g‘dbËsize + (è +__THROW +; + +992 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +995 #iâdeà +__USE_FILE_OFFSET64 + + +996  + $Œunÿ‹ + (cÚ¡ * +__fže +, +__off_t + +__Ëngth +) + +997 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +999 #ifdeà +__REDIRECT_NTH + + +1000  + `__REDIRECT_NTH + ( +Œunÿ‹ +, + +1001 (cÚ¡ * +__fže +, +__off64_t + +__Ëngth +), + +1002 +Œunÿ‹64 +è + `__nÚnuÎ + ((1)è +__wur +; + +1004  + #Œunÿ‹ + +Œunÿ‹64 + + + ) + +1007 #ifdeà +__USE_LARGEFILE64 + + +1008  + $Œunÿ‹64 + (cÚ¡ * +__fže +, +__off64_t + +__Ëngth +) + +1009 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +1014 #ià +defšed + +__USE_POSIX199309 + \ + +1015 || +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +1018 #iâdeà +__USE_FILE_OFFSET64 + + +1019  + $árunÿ‹ + ( +__fd +, +__off_t + +__Ëngth +è +__THROW + +__wur +; + +1021 #ifdeà +__REDIRECT_NTH + + +1022  + `__REDIRECT_NTH + ( +árunÿ‹ +, ( +__fd +, +__off64_t + +__Ëngth +), + +1023 +árunÿ‹64 +è +__wur +; + +1025  + #árunÿ‹ + +árunÿ‹64 + + + ) + +1028 #ifdeà +__USE_LARGEFILE64 + + +1029  + $árunÿ‹64 + ( +__fd +, +__off64_t + +__Ëngth +è +__THROW + +__wur +; + +1035 #ià( +defšed + +__USE_XOPEN_EXTENDED + && !defšed +__USE_XOPEN2K +) \ + +1036 || +defšed + +__USE_MISC + + +1040  + $brk + (* +__addr +è +__THROW + +__wur +; + +1046 * + $sbrk + ( +šŒ_t + +__d– +è +__THROW +; + +1050 #ifdeà +__USE_MISC + + +1061  + $sysÿÎ + ( +__sy¢o +, ...è +__THROW +; + +1066 #ià( +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED +è&& !defšed +F_LOCK + + +1078  + #F_ULOCK + 0 + + ) + +1079  + #F_LOCK + 1 + + ) + +1080  + #F_TLOCK + 2 + + ) + +1081  + #F_TEST + 3 + + ) + +1083 #iâdeà +__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 +( +ex´essiÚ +) \ + +1105 ( +__ex‹nsiÚ__ + \ + +1106 ({  +__»suÉ +; \ + +1107 dØ +__»suÉ + = (è( +ex´essiÚ +); \ + +1108  +__»suÉ + =ð-1L && +”ºo + =ð +EINTR +); \ + +1109 +__»suÉ +; + } +})) + + ) + +1112 #ià +defšed + +__USE_POSIX199309 + || defšed +__USE_UNIX98 + + +1115  +fd©async + ( +__fždes +); + +1121 #ifdef +__USE_XOPEN + + +1123 * + $üy± + (cÚ¡ * +__key +, cÚ¡ * +__§É +) + +1124 +__THROW + + `__nÚnuÎ + ((1, 2)); + +1128  + $’üy± + (* +__glibc_block +,  +__edæag +) + +1129 +__THROW + + `__nÚnuÎ + ((1)); + +1136  + $swab + (cÚ¡ * +__»¡riù + +__äom +, *__»¡riù +__to +, + +1137 +ssize_t + +__n +è +__THROW + + `__nÚnuÎ + ((1, 2)); + +1143 #ià +defšed + +__USE_XOPEN + && !defšed +__USE_XOPEN2K + + +1145 * + $ù”mid + (* +__s +è +__THROW +; + +1150 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +1151  + ~ + +1154 +__END_DECLS + + + @/usr/include/alloca.h + +18 #iâdef +_ALLOCA_H + + +19  + #_ALLOCA_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +23  + #__Ãed_size_t + + + ) + +24  + ~<¡ddef.h +> + +26 + g__BEGIN_DECLS + + +29 #undeà +®loÿ + + +32 * + $®loÿ + ( +size_t + +__size +è +__THROW +; + +34 #ifdef +__GNUC__ + + +35  + #®loÿ +( +size +è + `__bužtš_®loÿ + (size) + + ) + +38 +__END_DECLS + + + @/usr/include/bits/byteswap.h + +19 #ià! +defšed + +_BYTESWAP_H + && !defšed +_NETINET_IN_H + && !defšed +_ENDIAN_H + + +23 #iâdeà +_BITS_BYTESWAP_H + + +24  + #_BITS_BYTESWAP_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +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  +__šlše +  + +45 + $__bsw­_32 + ( +__bsx +) + +47  + `__bužtš_bsw­32 + ( +__bsx +); + +48 + } +} + +49 #–ià +__GNUC__ + >= 2 + +50 #ià +__WORDSIZE + =ð64 || ( +defšed + +__i486__ + || defšed +__³Áium__ + \ + +51 || +defšed + + g__³Áium´o__ + || defšed + g__³Áium4__ + \ + +52 || +defšed + + g__k8__ + || defšed + g__©hlÚ__ + \ + +53 || +defšed + + g__k6__ + || defšed + g__nocÚa__ + \ + +54 || +defšed + + g__cÜe2__ + || defšed + g__geode__ + \ + +55 || +defšed + + g__amdçm10__ +) + +58  + #__bsw­_32 +( +x +) \ + +59 ( +__ex‹nsiÚ__ + \ + +60 ({  +__v +, +__x + = ( +x +); \ + +61 ià( + `__bužtš_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 ( +__ex‹nsiÚ__ + \ + +69 ({  +__v +, +__x + = ( +x +); \ + +70 ià( + `__bužtš_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 ( +__ex‹nsiÚ__ + \ + +84 ({  +__x + = ( +x +); + `__bsw­_cÚ¡ªt_32 + (__x); })) + + ) + +87  +__šlše +  + +88 + $__bsw­_32 + ( +__bsx +) + +90  + `__bsw­_cÚ¡ªt_32 + ( +__bsx +); + +91 + } +} + +95 #ià +__GNUC_PREREQ + (2, 0) + +97  + #__bsw­_cÚ¡ªt_64 +( +x +) \ + +98 ( + `__ex‹nsiÚ__ + (((( +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  +__šlše + +__ušt64_t + + +109 + $__bsw­_64 + ( +__ušt64_t + +__bsx +) + +111  + `__bužtš_bsw­64 + ( +__bsx +); + +112 + } +} + +113 #–ià +__WORDSIZE + == 64 + +114  + #__bsw­_64 +( +x +) \ + +115 ( +__ex‹nsiÚ__ + \ + +116 ({ +__ušt64_t + +__v +, +__x + = ( +x +); \ + +117 ià( + `__bužtš_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 ( +__ex‹nsiÚ__ + \ + +125 ({ uniÚ { +__ex‹nsiÚ__ + +__ušt64_t + +__Î +; \ + +126  +__l +[2]; } +__w +, +__r +; \ + +127 ià( + `__bužtš_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  +__šlše + +__ušt64_t + + +149 + $__bsw­_64 + ( +__ušt64_t + +__bsx +) + +151  + `__bsw­_cÚ¡ªt_64 + ( +__bsx +); + +152 + } +} + + @/usr/include/bits/confname.h + +19 #iâdeà +_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 #iâdeà +_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 #iâdeà +__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à +defšed + +__x86_64__ + && defšed +__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 #iâdeà +ECANCELED + + +31  + #ECANCELED + 125 + + ) + +35 #iâdeà +EOWNERDEAD + + +36  + #EOWNERDEAD + 130 + + ) + +37  + #ENOTRECOVERABLE + 131 + + ) + +40 #iâdeà +ERFKILL + + +41  + #ERFKILL + 132 + + ) + +44 #iâdeà +EHWPOISON + + +45  + #EHWPOISON + 133 + + ) + +48 #iâdeà +__ASSEMBLER__ + + +50 * + $__”ºo_loÿtiÚ + (è +__THROW + + `__©Œibu‹__ + (( +__cÚ¡__ +)); + +52 #ià! +defšed + +_LIBC + || defšed +_LIBC_REENTRANT + + +54  + #”ºo + (* + `__”ºo_loÿtiÚ + ()) + + ) + +59 #ià! +defšed + +_ERRNO_H + && defšed +__Ãed_Em©h + + +63  + #EDOM + 33 + + ) + +64  + #EILSEQ + 84 + + ) + +65  + #ERANGE + 34 + + ) + + @/usr/include/bits/fcntl.h + +19 #iâdeà +_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  + sæock + + +37  + ml_ty³ +; + +38  + ml_wh’û +; + +39 #iâdeà +__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  + sæock64 + + +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 #iâdef +_FCNTL_H + + +25 #iâdeà +__USE_FILE_OFFSET64 + + +26  + $__ݒ_2 + (cÚ¡ * +__·th +,  +__oæag +è + `__nÚnuÎ + ((1)); + +27  + `__REDIRECT + ( +__ݒ_®Ÿs +, (cÚ¡ * +__·th +,  +__oæag +, ...), + +28 +ݒ +è + `__nÚnuÎ + ((1)); + +30  + `__REDIRECT + ( +__ݒ_2 +, (cÚ¡ * +__·th +,  +__oæag +), + +31 +__ݒ64_2 +è + `__nÚnuÎ + ((1)); + +32  + `__REDIRECT + ( +__ݒ_®Ÿs +, (cÚ¡ * +__·th +,  +__oæag +, ...), + +33 +ݒ64 +è + `__nÚnuÎ + ((1)); + +35 + `__”rÜdeþ + ( +__ݒ_too_mªy_¬gs +, + +37 + `__”rÜdeþ + ( +__ݒ_missšg_mode +, + +40 +__fÜtify_funùiÚ +  + +41 + $ݒ + (cÚ¡ * +__·th +,  +__oæag +, ...) + +43 ià( + `__va_¬g_·ck_Ën + () > 1) + +44 + `__ݒ_too_mªy_¬gs + (); + +46 ià( + `__bužtš_cÚ¡ªt_p + ( +__oæag +)) + +48 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +50 + `__ݒ_missšg_mode + (); + +51  + `__ݒ_2 + ( +__·th +, +__oæag +); + +53  + `__ݒ_®Ÿs + ( +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +56 ià( + `__va_¬g_·ck_Ën + () < 1) + +57  + `__ݒ_2 + ( +__·th +, +__oæag +); + +59  + `__ݒ_®Ÿs + ( +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +60 + } +} + +63 #ifdeà +__USE_LARGEFILE64 + + +64  + $__ݒ64_2 + (cÚ¡ * +__·th +,  +__oæag +è + `__nÚnuÎ + ((1)); + +65  + `__REDIRECT + ( +__ݒ64_®Ÿs +, (cÚ¡ * +__·th +,  +__oæag +, + +66 ...), +ݒ64 +è + `__nÚnuÎ + ((1)); + +67 + `__”rÜdeþ + ( +__ݒ64_too_mªy_¬gs +, + +69 + `__”rÜdeþ + ( +__ݒ64_missšg_mode +, + +72 +__fÜtify_funùiÚ +  + +73 + $ݒ64 + (cÚ¡ * +__·th +,  +__oæag +, ...) + +75 ià( + `__va_¬g_·ck_Ën + () > 1) + +76 + `__ݒ64_too_mªy_¬gs + (); + +78 ià( + `__bužtš_cÚ¡ªt_p + ( +__oæag +)) + +80 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +82 + `__ݒ64_missšg_mode + (); + +83  + `__ݒ64_2 + ( +__·th +, +__oæag +); + +85  + `__ݒ64_®Ÿs + ( +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +88 ià( + `__va_¬g_·ck_Ën + () < 1) + +89  + `__ݒ64_2 + ( +__·th +, +__oæag +); + +91  + `__ݒ64_®Ÿs + ( +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +92 + } +} + +96 #ifdeà +__USE_ATFILE + + +97 #iâdeà +__USE_FILE_OFFSET64 + + +98  + $__ݒ©_2 + ( +__fd +, cÚ¡ * +__·th +,  +__oæag +) + +99 + `__nÚnuÎ + ((2)); + +100  + `__REDIRECT + ( +__ݒ©_®Ÿs +, ( +__fd +, cÚ¡ * +__·th +, + +101  +__oæag +, ...), +ݒ© +) + +102 + `__nÚnuÎ + ((2)); + +104  + `__REDIRECT + ( +__ݒ©_2 +, ( +__fd +, cÚ¡ * +__·th +, + +105  +__oæag +), +__ݒ©64_2 +) + +106 + `__nÚnuÎ + ((2)); + +107  + `__REDIRECT + ( +__ݒ©_®Ÿs +, ( +__fd +, cÚ¡ * +__·th +, + +108  +__oæag +, ...), +ݒ©64 +) + +109 + `__nÚnuÎ + ((2)); + +111 + `__”rÜdeþ + ( +__ݒ©_too_mªy_¬gs +, + +113 + `__”rÜdeþ + ( +__ݒ©_missšg_mode +, + +116 +__fÜtify_funùiÚ +  + +117 + $ݒ© + ( +__fd +, cÚ¡ * +__·th +,  +__oæag +, ...) + +119 ià( + `__va_¬g_·ck_Ën + () > 1) + +120 + `__ݒ©_too_mªy_¬gs + (); + +122 ià( + `__bužtš_cÚ¡ªt_p + ( +__oæag +)) + +124 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +126 + `__ݒ©_missšg_mode + (); + +127  + `__ݒ©_2 + ( +__fd +, +__·th +, +__oæag +); + +129  + `__ݒ©_®Ÿs + ( +__fd +, +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +132 ià( + `__va_¬g_·ck_Ën + () < 1) + +133  + `__ݒ©_2 + ( +__fd +, +__·th +, +__oæag +); + +135  + `__ݒ©_®Ÿs + ( +__fd +, +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +136 + } +} + +139 #ifdeà +__USE_LARGEFILE64 + + +140  + $__ݒ©64_2 + ( +__fd +, cÚ¡ * +__·th +,  +__oæag +) + +141 + `__nÚnuÎ + ((2)); + +142  + `__REDIRECT + ( +__ݒ©64_®Ÿs +, ( +__fd +, cÚ¡ * +__·th +, + +143  +__oæag +, ...), +ݒ©64 +) + +144 + `__nÚnuÎ + ((2)); + +145 + `__”rÜdeþ + ( +__ݒ©64_too_mªy_¬gs +, + +147 + `__”rÜdeþ + ( +__ݒ©64_missšg_mode +, + +150 +__fÜtify_funùiÚ +  + +151 + $ݒ©64 + ( +__fd +, cÚ¡ * +__·th +,  +__oæag +, ...) + +153 ià( + `__va_¬g_·ck_Ën + () > 1) + +154 + `__ݒ©64_too_mªy_¬gs + (); + +156 ià( + `__bužtš_cÚ¡ªt_p + ( +__oæag +)) + +158 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +160 + `__ݒ©64_missšg_mode + (); + +161  + `__ݒ©64_2 + ( +__fd +, +__·th +, +__oæag +); + +163  + `__ݒ©64_®Ÿs + ( +__fd +, +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +166 ià( + `__va_¬g_·ck_Ën + () < 1) + +167  + `__ݒ©64_2 + ( +__fd +, +__·th +, +__oæag +); + +169  + `__ݒ©64_®Ÿs + ( +__fd +, +__·th +, +__oæag +, + `__va_¬g_·ck + ()); + +170 + } +} + + @/usr/include/bits/huge_val.h + +20 #iâdeà +_MATH_H + + +26 #ià +__GNUC_PREREQ +(3,3) + +27  + #HUGE_VAL + ( + `__bužtš_huge_v® +()) + + ) + +28 #–ià +__GNUC_PREREQ +(2,96) + +29  + #HUGE_VAL + ( +__ex‹nsiÚ__ + 0x1.0 +p2047 +) + + ) + +30 #–ià +defšed + +__GNUC__ + + +32  + #HUGE_VAL + \ + +33 ( +__ex‹nsiÚ__ + \ + +34 ((uniÚ {  +__l + + `__©Œibu‹__ +(( + `__mode__ +( +__DI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7ff0000000000000ULL }). +__d +) + + ) + +39  + ~<’dŸn.h +> + +41 uniÚ {  + m__c +[8];  + m__d +; } + t__huge_v®_t +; + +43 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +44  + #__HUGE_VAL_by‹s + { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } + + ) + +46 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +47  + #__HUGE_VAL_by‹s + { 0, 0, 0, 0, 0, 0, 0xf0, 0x7à} + + ) + +50  +__huge_v®_t + + g__huge_v® + = { +__HUGE_VAL_by‹s + }; + +51  + #HUGE_VAL + ( +__huge_v® +. +__d +) + + ) + + @/usr/include/bits/huge_valf.h + +20 #iâdeà +_MATH_H + + +26 #ià +__GNUC_PREREQ +(3,3) + +27  + #HUGE_VALF + ( + `__bužtš_huge_v®f +()) + + ) + +28 #–ià +__GNUC_PREREQ +(2,96) + +29  + #HUGE_VALF + ( +__ex‹nsiÚ__ + 0x1.0 +p255f +) + + ) + +30 #–ià +defšed + +__GNUC__ + + +32  + #HUGE_VALF + \ + +33 ( +__ex‹nsiÚ__ + \ + +34 ((uniÚ {  +__l + + `__©Œibu‹__ +(( + `__mode__ +( +__SI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7f800000UL }). +__d +) + + ) + +39 uniÚ {  + m__c +[4];  + m__f +; } + t__huge_v®f_t +; + +41 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +42  + #__HUGE_VALF_by‹s + { 0x7f, 0x80, 0, 0 } + + ) + +44 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +45  + #__HUGE_VALF_by‹s + { 0, 0, 0x80, 0x7à} + + ) + +48  +__huge_v®f_t + + g__huge_v®f + = { +__HUGE_VALF_by‹s + }; + +49  + #HUGE_VALF + ( +__huge_v®f +. +__f +) + + ) + + @/usr/include/bits/huge_vall.h + +20 #iâdeà +_MATH_H + + +24 #ià +__GNUC_PREREQ +(3,3) + +25  + #HUGE_VALL + ( + `__bužtš_huge_v®l +()) + + ) + +26 #–ià +__GNUC_PREREQ +(2,96) + +27  + #HUGE_VALL + ( +__ex‹nsiÚ__ + 0x1.0 +p32767L +) + + ) + +30  + #__HUGE_VALL_by‹s + { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } + + ) + +32  + #__huge_v®l_t + uniÚ {  +__c +[12];  +__ld +; } + + ) + +33 #ifdeà +__GNUC__ + + +34  + #HUGE_VALL + ( +__ex‹nsiÚ__ + \ + +35 (( +__huge_v®l_t +è{ +__c +: +__HUGE_VALL_by‹s + }). +__ld +) + + ) + +37  +__huge_v®l_t + + g__huge_v®l + = { +__HUGE_VALL_by‹s + }; + +38  + #HUGE_VALL + ( +__huge_v®l +. +__ld +) + + ) + + @/usr/include/bits/in.h + +20 #iâdeà +_NETINET_IN_H + + +29 #ià +defšed + +_UAPI_LINUX_IN6_H + || defšed +_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_m»qn + + +142  +š_addr + + mimr_muɟddr +; + +143  +š_addr + + mimr_add»ss +; + +144  + mimr_ifšdex +; + +148  + sš_pktšfo + + +150  + mi_ifšdex +; + +151  +š_addr + + mi_¥ec_d¡ +; + +152  +š_addr + + mi_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 #iâdeà +_MATH_H + + +25 #ià +__GNUC_PREREQ +(3,3) + +26  + #INFINITY + ( + `__bužtš_šff +()) + + ) + +28  + #INFINITY + +HUGE_VALF + + + ) + + @/usr/include/bits/math-finite.h + +19 #iâdeà +_MATH_H + + +24  +__REDIRECT_NTH + ( +acos +, (), +__acos_fš™e +); + +25 #ifdeà +__USE_ISOC99 + + +26  +__REDIRECT_NTH + ( +acosf +, (), +__acosf_fš™e +); + +27 #ifdeà +__MATH_DECLARE_LDOUBLE + + +28 #ifdeà +__NO_LONG_DOUBLE_MATH + + +29  +__REDIRECT_NTH + ( +aco¦ +, (), +__acos_fš™e +); + +31  +__REDIRECT_NTH + ( +aco¦ +, (), +__aco¦_fš™e +); + +36 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +38  +__REDIRECT_NTH + ( +acosh +, (), +__acosh_fš™e +); + +40 #ifdeà +__USE_ISOC99 + + +41  +__REDIRECT_NTH + ( +acoshf +, (), +__acoshf_fš™e +); + +42 #ifdeà +__MATH_DECLARE_LDOUBLE + + +43 #ifdeà +__NO_LONG_DOUBLE_MATH + + +44  +__REDIRECT_NTH + ( +acoshl +, (), +__acosh_fš™e +); + +46  +__REDIRECT_NTH + ( +acoshl +, (), +__acoshl_fš™e +); + +52  +__REDIRECT_NTH + ( +asš +, (), +__asš_fš™e +); + +53 #ifdeà +__USE_ISOC99 + + +54  +__REDIRECT_NTH + ( +asšf +, (), +__asšf_fš™e +); + +55 #ifdeà +__MATH_DECLARE_LDOUBLE + + +56 #ifdeà +__NO_LONG_DOUBLE_MATH + + +57  +__REDIRECT_NTH + ( +asšl +, (), +__asš_fš™e +); + +59  +__REDIRECT_NTH + ( +asšl +, (), +__asšl_fš™e +); + +65  +__REDIRECT_NTH + ( +©ª2 +, (, ), +__©ª2_fš™e +); + +66 #ifdeà +__USE_ISOC99 + + +67  +__REDIRECT_NTH + ( +©ª2f +, (, ), +__©ª2f_fš™e +); + +68 #ifdeà +__MATH_DECLARE_LDOUBLE + + +69 #ifdeà +__NO_LONG_DOUBLE_MATH + + +70  +__REDIRECT_NTH + ( +©ª2l +, (, ), + +71 +__©ª2_fš™e +); + +73  +__REDIRECT_NTH + ( +©ª2l +, (, ), + +74 +__©ª2l_fš™e +); + +79 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +81  +__REDIRECT_NTH + ( +©ªh +, (), +__©ªh_fš™e +); + +83 #ifdeà +__USE_ISOC99 + + +84  +__REDIRECT_NTH + ( +©ªhf +, (), +__©ªhf_fš™e +); + +85 #ifdeà +__MATH_DECLARE_LDOUBLE + + +86 #ifdeà +__NO_LONG_DOUBLE_MATH + + +87  +__REDIRECT_NTH + ( +©ªhl +, (), +__©ªh_fš™e +); + +89  +__REDIRECT_NTH + ( +©ªhl +, (), +__©ªhl_fš™e +); + +95  +__REDIRECT_NTH + ( +cosh +, (), +__cosh_fš™e +); + +96 #ifdeà +__USE_ISOC99 + + +97  +__REDIRECT_NTH + ( +coshf +, (), +__coshf_fš™e +); + +98 #ifdeà +__MATH_DECLARE_LDOUBLE + + +99 #ifdeà +__NO_LONG_DOUBLE_MATH + + +100  +__REDIRECT_NTH + ( +coshl +, (), +__cosh_fš™e +); + +102  +__REDIRECT_NTH + ( +coshl +, (), +__coshl_fš™e +); + +108  +__REDIRECT_NTH + ( +exp +, (), +__exp_fš™e +); + +109 #ifdeà +__USE_ISOC99 + + +110  +__REDIRECT_NTH + ( +expf +, (), +__expf_fš™e +); + +111 #ifdeà +__MATH_DECLARE_LDOUBLE + + +112 #ifdeà +__NO_LONG_DOUBLE_MATH + + +113  +__REDIRECT_NTH + ( +ex¶ +, (), +__exp_fš™e +); + +115  +__REDIRECT_NTH + ( +ex¶ +, (), +__ex¶_fš™e +); + +120 #ifdeà +__USE_GNU + + +122  +__REDIRECT_NTH + ( +exp10 +, (), +__exp10_fš™e +); + +123  +__REDIRECT_NTH + ( +exp10f +, (), +__exp10f_fš™e +); + +124 #ifdeà +__MATH_DECLARE_LDOUBLE + + +125 #ifdeà +__NO_LONG_DOUBLE_MATH + + +126  +__REDIRECT_NTH + ( +exp10l +, (), +__exp10_fš™e +); + +128  +__REDIRECT_NTH + ( +exp10l +, (), +__exp10l_fš™e +); + +133  +__REDIRECT_NTH + ( +pow10 +, (), +__exp10_fš™e +); + +134  +__REDIRECT_NTH + ( +pow10f +, (), +__exp10f_fš™e +); + +135 #ifdeà +__MATH_DECLARE_LDOUBLE + + +136 #ifdeà +__NO_LONG_DOUBLE_MATH + + +137  +__REDIRECT_NTH + ( +pow10l +, (), +__exp10_fš™e +); + +139  +__REDIRECT_NTH + ( +pow10l +, (), +__exp10l_fš™e +); + +144 #ifdeà +__USE_ISOC99 + + +146  +__REDIRECT_NTH + ( +exp2 +, (), +__exp2_fš™e +); + +147  +__REDIRECT_NTH + ( +exp2f +, (), +__exp2f_fš™e +); + +148 #ifdeà +__MATH_DECLARE_LDOUBLE + + +149 #ifdeà +__NO_LONG_DOUBLE_MATH + + +150  +__REDIRECT_NTH + ( +exp2l +, (), +__exp2_fš™e +); + +152  +__REDIRECT_NTH + ( +exp2l +, (), +__exp2l_fš™e +); + +158  +__REDIRECT_NTH + ( +fmod +, (, ), +__fmod_fš™e +); + +159 #ifdeà +__USE_ISOC99 + + +160  +__REDIRECT_NTH + ( +fmodf +, (, ), +__fmodf_fš™e +); + +161 #ifdeà +__MATH_DECLARE_LDOUBLE + + +162 #ifdeà +__NO_LONG_DOUBLE_MATH + + +163  +__REDIRECT_NTH + ( +fmodl +, (, ), + +164 +__fmod_fš™e +); + +166  +__REDIRECT_NTH + ( +fmodl +, (, ), + +167 +__fmodl_fš™e +); + +172 #ià +defšed + +__USE_XOPEN + || defšed +__USE_ISOC99 + + +174  +__REDIRECT_NTH + ( +hypÙ +, (, ), +__hypÙ_fš™e +); + +176 #ifdeà +__USE_ISOC99 + + +177  +__REDIRECT_NTH + ( +hypÙf +, (, ), +__hypÙf_fš™e +); + +178 #ifdeà +__MATH_DECLARE_LDOUBLE + + +179 #ifdeà +__NO_LONG_DOUBLE_MATH + + +180  +__REDIRECT_NTH + ( +hypÙl +, (, ), + +181 +__hypÙ_fš™e +); + +183  +__REDIRECT_NTH + ( +hypÙl +, (, ), + +184 +__hypÙl_fš™e +); + +189 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +191  +__REDIRECT_NTH + ( +j0 +, (), +__j0_fš™e +); + +193 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +194  +__REDIRECT_NTH + ( +j0f +, (), +__j0f_fš™e +); + +195 #ifdeà +__MATH_DECLARE_LDOUBLE + + +196 #ifdeà +__NO_LONG_DOUBLE_MATH + + +197  +__REDIRECT_NTH + ( +j0l +, (), +__j0_fš™e +); + +199  +__REDIRECT_NTH + ( +j0l +, (), +__j0l_fš™e +); + +204 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +206  +__REDIRECT_NTH + ( +y0 +, (), +__y0_fš™e +); + +208 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +209  +__REDIRECT_NTH + ( +y0f +, (), +__y0f_fš™e +); + +210 #ifdeà +__MATH_DECLARE_LDOUBLE + + +211 #ifdeà +__NO_LONG_DOUBLE_MATH + + +212  +__REDIRECT_NTH + ( +y0l +, (), +__y0_fš™e +); + +214  +__REDIRECT_NTH + ( +y0l +, (), +__y0l_fš™e +); + +219 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +221  +__REDIRECT_NTH + ( +j1 +, (), +__j1_fš™e +); + +223 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +224  +__REDIRECT_NTH + ( +j1f +, (), +__j1f_fš™e +); + +225 #ifdeà +__MATH_DECLARE_LDOUBLE + + +226 #ifdeà +__NO_LONG_DOUBLE_MATH + + +227  +__REDIRECT_NTH + ( +j1l +, (), +__j1_fš™e +); + +229  +__REDIRECT_NTH + ( +j1l +, (), +__j1l_fš™e +); + +234 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +236  +__REDIRECT_NTH + ( +y1 +, (), +__y1_fš™e +); + +238 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +239  +__REDIRECT_NTH + ( +y1f +, (), +__y1f_fš™e +); + +240 #ifdeà +__MATH_DECLARE_LDOUBLE + + +241 #ifdeà +__NO_LONG_DOUBLE_MATH + + +242  +__REDIRECT_NTH + ( +y1l +, (), +__y1_fš™e +); + +244  +__REDIRECT_NTH + ( +y1l +, (), +__y1l_fš™e +); + +249 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +251  +__REDIRECT_NTH + ( +jn +, (, ), +__jn_fš™e +); + +253 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +254  +__REDIRECT_NTH + ( +jnf +, (, ), +__jnf_fš™e +); + +255 #ifdeà +__MATH_DECLARE_LDOUBLE + + +256 #ifdeà +__NO_LONG_DOUBLE_MATH + + +257  +__REDIRECT_NTH + ( +jÆ +, (, ), +__jn_fš™e +); + +259  +__REDIRECT_NTH + ( +jÆ +, (, ), +__jÆ_fš™e +); + +264 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +266  +__REDIRECT_NTH + ( +yn +, (, ), +__yn_fš™e +); + +268 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +269  +__REDIRECT_NTH + ( +ynf +, (, ), +__ynf_fš™e +); + +270 #ifdeà +__MATH_DECLARE_LDOUBLE + + +271 #ifdeà +__NO_LONG_DOUBLE_MATH + + +272  +__REDIRECT_NTH + ( +yÆ +, (, ), +__yn_fš™e +); + +274  +__REDIRECT_NTH + ( +yÆ +, (, ), +__yÆ_fš™e +); + +279 #ifdeà +__USE_MISC + + +281  +__REDIRECT_NTH + ( +lgamma_r +, (, *), +__lgamma_r_fš™e +); + +282 #ifdeà +__USE_ISOC99 + + +283  +__REDIRECT_NTH + ( +lgammaf_r +, (, *), +__lgammaf_r_fš™e +); + +284 #ifdeà +__MATH_DECLARE_LDOUBLE + + +285 #ifdeà +__NO_LONG_DOUBLE_MATH + + +286  +__REDIRECT_NTH + ( +lgamm®_r +, (, *), + +287 +__lgamma_r_fš™e +); + +289  +__REDIRECT_NTH + ( +lgamm®_r +, (, *), + +290 +__lgamm®_r_fš™e +); + +296  +__lgamma_r_fš™e + (, *); + +297  +__lgammaf_r_fš™e + (, *); + +298 #ifdeà +__NO_LONG_DOUBLE_MATH + + +299  +__REDIRECT_NTH + ( +__lgamm®_r_fš™e +, (, *), + +300 +__lgamma_r_fš™e +); + +302  +__lgamm®_r_fš™e + (, *); + +305 #ià(( +defšed + +__USE_XOPEN + || defšed +__USE_ISOC99 +) \ + +306 && +defšed + + g__ex‹º_®ways_šlše +) + +308 +__ex‹º_®ways_šlše +  +__NTH + ( + $lgamma + ( +__d +)) + +310 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +311  + `__lgamma_r_fš™e + ( +__d +, & +signgam +); + +313  +__loÿl_signgam + = 0; + +314  + `__lgamma_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +316 + } +} + +318 #ià +defšed + +__USE_ISOC99 + && defšed +__ex‹º_®ways_šlše + + +319 +__ex‹º_®ways_šlše +  +__NTH + ( + $lgammaf + ( +__d +)) + +321 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +322  + `__lgammaf_r_fš™e + ( +__d +, & +signgam +); + +324  +__loÿl_signgam + = 0; + +325  + `__lgammaf_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +327 + } +} + +328 #ifdeà +__MATH_DECLARE_LDOUBLE + + +329 +__ex‹º_®ways_šlše +  +__NTH + ( + $lgamm® + ( +__d +)) + +331 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN + + +332  + `__lgamm®_r_fš™e + ( +__d +, & +signgam +); + +334  +__loÿl_signgam + = 0; + +335  + `__lgamm®_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +337 + } +} + +341 #ià(( +defšed + +__USE_MISC + || (defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K +)) \ + +342 && +defšed + + g__ex‹º_®ways_šlše +) + +344 +__ex‹º_®ways_šlše +  +__NTH + ( + $gamma + ( +__d +)) + +346  + `__lgamma_r_fš™e + ( +__d +, & +signgam +); + +347 + } +} + +348 #ifdeà +__USE_ISOC99 + + +349 +__ex‹º_®ways_šlše +  +__NTH + ( + $gammaf + ( +__d +)) + +351  + `__lgammaf_r_fš™e + ( +__d +, & +signgam +); + +352 + } +} + +353 #ifdeà +__MATH_DECLARE_LDOUBLE + + +354 +__ex‹º_®ways_šlše +  +__NTH + ( + $gamm® + ( +__d +)) + +356  + `__lgamm®_r_fš™e + ( +__d +, & +signgam +); + +357 + } +} + +363  +__REDIRECT_NTH + ( +log +, (), +__log_fš™e +); + +364 #ifdeà +__USE_ISOC99 + + +365  +__REDIRECT_NTH + ( +logf +, (), +__logf_fš™e +); + +366 #ifdeà +__MATH_DECLARE_LDOUBLE + + +367 #ifdeà +__NO_LONG_DOUBLE_MATH + + +368  +__REDIRECT_NTH + ( +logl +, (), +__log_fš™e +); + +370  +__REDIRECT_NTH + ( +logl +, (), +__logl_fš™e +); + +376  +__REDIRECT_NTH + ( +log10 +, (), +__log10_fš™e +); + +377 #ifdeà +__USE_ISOC99 + + +378  +__REDIRECT_NTH + ( +log10f +, (), +__log10f_fš™e +); + +379 #ifdeà +__MATH_DECLARE_LDOUBLE + + +380 #ifdeà +__NO_LONG_DOUBLE_MATH + + +381  +__REDIRECT_NTH + ( +log10l +, (), +__log10_fš™e +); + +383  +__REDIRECT_NTH + ( +log10l +, (), +__log10l_fš™e +); + +388 #ifdeà +__USE_ISOC99 + + +390  +__REDIRECT_NTH + ( +log2 +, (), +__log2_fš™e +); + +391  +__REDIRECT_NTH + ( +log2f +, (), +__log2f_fš™e +); + +392 #ifdeà +__MATH_DECLARE_LDOUBLE + + +393 #ifdeà +__NO_LONG_DOUBLE_MATH + + +394  +__REDIRECT_NTH + ( +log2l +, (), +__log2_fš™e +); + +396  +__REDIRECT_NTH + ( +log2l +, (), +__log2l_fš™e +); + +402  +__REDIRECT_NTH + ( +pow +, (, ), +__pow_fš™e +); + +403 #ifdeà +__USE_ISOC99 + + +404  +__REDIRECT_NTH + ( +powf +, (, ), +__powf_fš™e +); + +405 #ifdeà +__MATH_DECLARE_LDOUBLE + + +406 #ifdeà +__NO_LONG_DOUBLE_MATH + + +407  +__REDIRECT_NTH + ( +powl +, (, ), + +408 +__pow_fš™e +); + +410  +__REDIRECT_NTH + ( +powl +, (, ), + +411 +__powl_fš™e +); + +416 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +418  +__REDIRECT_NTH + ( +»mašd” +, (, ), +__»mašd”_fš™e +); + +420 #ifdeà +__USE_ISOC99 + + +421  +__REDIRECT_NTH + ( +»mašd”f +, (, ), +__»mašd”f_fš™e +); + +422 #ifdeà +__MATH_DECLARE_LDOUBLE + + +423 #ifdeà +__NO_LONG_DOUBLE_MATH + + +424  +__REDIRECT_NTH + ( +»mašd”l +, (, ), + +425 +__»mašd”_fš™e +); + +427  +__REDIRECT_NTH + ( +»mašd”l +, (, ), + +428 +__»mašd”l_fš™e +); + +433 #ià( +defšed + +__USE_MISC + \ + +434 || ( +defšed + + g__USE_XOPEN_EXTENDED + && !defšed + g__USE_XOPEN2K8 +)) + +436  +__REDIRECT_NTH + ( +sÿlb +, (, ), +__sÿlb_fš™e +); + +438 #ià +defšed + +__USE_MISC + && defšed +__USE_ISOC99 + + +439  +__REDIRECT_NTH + ( +sÿlbf +, (, ), +__sÿlbf_fš™e +); + +440 #ifdeà +__MATH_DECLARE_LDOUBLE + + +441 #ifdeà +__NO_LONG_DOUBLE_MATH + + +442  +__REDIRECT_NTH + ( +sÿlbl +, (, ), + +443 +__sÿlb_fš™e +); + +445  +__REDIRECT_NTH + ( +sÿlbl +, (, ), + +446 +__sÿlbl_fš™e +); + +452  +__REDIRECT_NTH + ( +sšh +, (), +__sšh_fš™e +); + +453 #ifdeà +__USE_ISOC99 + + +454  +__REDIRECT_NTH + ( +sšhf +, (), +__sšhf_fš™e +); + +455 #ifdeà +__MATH_DECLARE_LDOUBLE + + +456 #ifdeà +__NO_LONG_DOUBLE_MATH + + +457  +__REDIRECT_NTH + ( +sšhl +, (), +__sšh_fš™e +); + +459  +__REDIRECT_NTH + ( +sšhl +, (), +__sšhl_fš™e +); + +465  +__REDIRECT_NTH + ( +sq¹ +, (), +__sq¹_fš™e +); + +466 #ifdeà +__USE_ISOC99 + + +467  +__REDIRECT_NTH + ( +sq¹f +, (), +__sq¹f_fš™e +); + +468 #ifdeà +__MATH_DECLARE_LDOUBLE + + +469 #ifdeà +__NO_LONG_DOUBLE_MATH + + +470  +__REDIRECT_NTH + ( +sq¹l +, (), +__sq¹_fš™e +); + +472  +__REDIRECT_NTH + ( +sq¹l +, (), +__sq¹l_fš™e +); + +477 #ià +defšed + +__USE_ISOC99 + && defšed +__ex‹º_®ways_šlše + + +479  +__gamma_r_fš™e + (, *); + +480 +__ex‹º_®ways_šlše +  +__NTH + ( + $tgamma + ( +__d +)) + +482  +__loÿl_signgam + = 0; + +483  +__»s + = + `__gamma_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +484  +__loÿl_signgam + < 0 ? - +__»s + : __res; + +485 + } +} + +486  +__gammaf_r_fš™e + (, *); + +487 +__ex‹º_®ways_šlše +  +__NTH + ( + $tgammaf + ( +__d +)) + +489  +__loÿl_signgam + = 0; + +490  +__»s + = + `__gammaf_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +491  +__loÿl_signgam + < 0 ? - +__»s + : __res; + +492 + } +} + +493 #ifdeà +__MATH_DECLARE_LDOUBLE + + +494  +__gamm®_r_fš™e + (, *); + +495 +__ex‹º_®ways_šlše +  +__NTH + ( + $tgamm® + ( +__d +)) + +497  +__loÿl_signgam + = 0; + +498 #ifdeà +__NO_LONG_DOUBLE_MATH + + +499  +__»s + = + `__gamma_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +501  +__»s + = + `__gamm®_r_fš™e + ( +__d +, & +__loÿl_signgam +); + +503  +__loÿl_signgam + < 0 ? - +__»s + : __res; + +504 + } +} + + @/usr/include/bits/math-vector.h + +19 #iâdeà +_MATH_H + + +25  + ~ + +27 #ià +defšed + +__x86_64__ + && defšed +__FAST_MATH__ + + +28 #ià +defšed + +_OPENMP + && _OPENMP >= 201307 + +30  + #__DECL_SIMD_x86_64 + + `_P¿gma + ("om°deþ¬simd‚Ùšb¿nch") + + ) + +31 #–ià +__GNUC_PREREQ + (6,0) + +33  + #__DECL_SIMD_x86_64 + + `__©Œibu‹__ + (( + `__simd__ + ("nٚb¿nch"))) + + ) + +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_sšf + + +44  + #__DECL_SIMD_sšf + +__DECL_SIMD_x86_64 + + + ) + +45 #undeà +__DECL_SIMD_sšcos + + +46  + #__DECL_SIMD_sšcos + +__DECL_SIMD_x86_64 + + + ) + +47 #undeà +__DECL_SIMD_sšcosf + + +48  + #__DECL_SIMD_sšcosf + +__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 #iâdeà +_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 + ( +sšh +,, ( +_MdoubË_ + +__x +)); + +76 +__MATHCALL + ( +nh +,, ( +_MdoubË_ + +__x +)); + +77 + g_MdoubË_END_NAMESPACE + + +79 #ifdeà +__USE_GNU + + +81 +__MATHDECL_VEC + (, +sšcos +,, + +82 ( +_MdoubË_ + +__x +, _MdoubË_ * +__sšx +, _MdoubË_ * +__cosx +)); + +85 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +86 +__BEGIN_NAMESPACE_C99 + + +88 +__MATHCALL + ( +acosh +,, ( +_MdoubË_ + +__x +)); + +90 +__MATHCALL + ( +asšh +,, ( +_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Ë_ * +__Œ +)è +__nÚnuÎ + ((2)); + +116 + g_MdoubË_END_NAMESPACE + + +118 #ifdeà +__USE_GNU + + +120 +__MATHCALL + ( +exp10 +,, ( +_MdoubË_ + +__x +)); + +122 +__MATHCALL + ( +pow10 +,, ( +_MdoubË_ + +__x +)); + +125 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__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à +defšed + +__USE_XOPEN + || defšed +__USE_ISOC99 + + +160 +__BEGIN_NAMESPACE_C99 + + +162 +__MATHCALL + ( +hypÙ +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +163 + g__END_NAMESPACE_C99 + + +166 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__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 + (, +__isšf +,, ( +_MdoubË_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +195 +__MATHDECL_1 + (, +__fš™e +,, ( +_MdoubË_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +196 + g_MdoubË_END_NAMESPACE + + +198 #ifdeà +__USE_MISC + + +199 #ià(! +defšed + +__ýlu¥lus + \ + +200 || + g__ýlu¥lus + < 201103L \ + +201 || + g__MATH_DECLARING_DOUBLE + == 0) + +204 +__MATHDECL_1 + (, +isšf +,, ( +_MdoubË_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +208 +__MATHDECL_1 + (, +fš™e +,, ( +_MdoubË_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +211 +__MATHCALL + ( +d»m +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +215 +__MATHCALL + ( +signifiÿnd +,, ( +_MdoubË_ + +__x +)); + +218 #ifdeà +__USE_ISOC99 + + +219 +__BEGIN_NAMESPACE_C99 + + +221 +__MATHCALLX + ( +cÝysign +,, ( +_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Ë_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +236 #ià +defšed + +__USE_MISC + || (defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +237 #ià(! +defšed + +__ýlu¥lus + \ + +238 || + g__ýlu¥lus + < 201103L \ + +239 || + g__MATH_DECLARING_DOUBLE + == 0) + +241 +__MATHDECL_1 + (, +i¢ª +,, ( +_MdoubË_ + +__v®ue +)è +__©Œibu‹__ + (( +__cÚ¡__ +)); + +245 #ià +defšed + +__USE_MISC + || (defšed +__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à +defšed + +__USE_XOPEN + || defšed +__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à +defšed + +__USE_MISC + || (defšed +__USE_XOPEN + && !defšed +__USE_XOPEN2K +) + +274 +__MATHCALL + ( +gamma +,, ( +_MdoubË_ +)); + +277 #ifdeà +__USE_MISC + + +281 +__MATHCALL + ( +lgamma +, +_r +, ( +_MdoubË_ +, * +__signgamp +)); + +285 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +286 +__BEGIN_NAMESPACE_C99 + + +289 +__MATHCALL + ( +ršt +,, ( +_MdoubË_ + +__x +)); + +292 +__MATHCALLX + ( +Ãxá” +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +), ( +__cÚ¡__ +)); + +293 #ià +defšed + +__USE_ISOC99 + && !defšed +__LDBL_COMPAT + + +294 +__MATHCALLX + ( +Ãx‰ow¬d +,, ( +_MdoubË_ + +__x +,  +__y +), ( +__cÚ¡__ +)); + +298 +__MATHCALL + ( +»mašd” +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +300 #ifdeà +__USE_ISOC99 + + +302 +__MATHCALL + ( +sÿlbn +,, ( +_MdoubË_ + +__x +,  +__n +)); + +306 +__MATHDECL + (, +žogb +,, ( +_MdoubË_ + +__x +)); + +309 #ifdeà +__USE_ISOC99 + + +311 +__MATHCALL + ( +sÿlbÊ +,, ( +_MdoubË_ + +__x +,  +__n +)); + +315 +__MATHCALL + ( +ìbyšt +,, ( +_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 +__ex‹nsiÚ__ + + +337 +__MATHDECL + (, +Îršt +,, ( +_MdoubË_ + +__x +)); + +341 +__MATHDECL + (, +Ìound +,, ( +_MdoubË_ + +__x +)); + +342 +__ex‹nsiÚ__ + + +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Ë_ + +__v®ue +)) + +358 +__©Œibu‹__ + (( +__cÚ¡__ +)); + +361 +__MATHDECL_1 + (, +__signb™ +,, ( +_MdoubË_ + +__v®ue +)) + +362 +__©Œibu‹__ + (( +__cÚ¡__ +)); + +366 +__MATHCALL + ( +fma +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +, _MdoubË_ +__z +)); + +369 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +370 + g__END_NAMESPACE_C99 + + +373 #ifdeà +__USE_GNU + + +375 +__MATHDECL_1 + (, +__issigÇlšg +,, ( +_MdoubË_ + +__v®ue +)) + +376 +__©Œibu‹__ + (( +__cÚ¡__ +)); + +379 #ià +defšed + +__USE_MISC + || (defšed +__USE_XOPEN_EXTENDED + \ + +380 && + g__MATH_DECLARING_DOUBLE + \ + +381 && ! +defšed + + g__USE_XOPEN2K8 +) + +383 +__MATHCALL + ( +sÿlb +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__n +)); + + @/usr/include/bits/mathdef.h + +18 #ià! +defšed + +_MATH_H + && !defšed +_COMPLEX_H + + +22 #ià +defšed + +__USE_ISOC99 + && defšed +_MATH_H + && !defšed +_MATH_H_MATHDEF + + +23  + #_MATH_H_MATHDEF + 1 + + ) + +25 #ià +defšed + +__x86_64__ + || (defšed +__FLT_EVAL_METHOD__ + && __FLT_EVAL_METHOD__ == 0) + +28  + tæßt_t +; + +29  + tdoubË_t +; + +35  + tæßt_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 #iâdeà +_MATH_H + + +23 #iâdeà +__ex‹º_®ways_šlše + + +24  + #__MATH_INLINE + +__šlše + + + ) + +26  + #__MATH_INLINE + +__ex‹º_®ways_šlše + + + ) + +30 #ià +defšed + +__USE_ISOC99 + && defšed +__GNUC__ + && __GNUC__ >= 2 + +32 #ià! +__GNUC_PREREQ + (2,97) + +37 #undeà +isg»©” + + +38 #undeà +isg»©”equ® + + +39 #undeà +i¦ess + + +40 #undeà +i¦es£qu® + + +41 #undeà +i¦essg»©” + + +42 #undeà +isunÜd”ed + + +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  + #isg»©”equ® +( +x +, +y +) \ + +52 ({  +__»suÉ +; \ + +53 + `__asm__ + ("fucomip %%st(1), %%st; setae %%al" \ + +54 : "÷" ( +__»suÉ +è: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +55 +__»suÉ +; }) + + ) + +57  + #i¦ess +( +x +, +y +) \ + +58 ({  +__»suÉ +; \ + +59 + `__asm__ + ("fucomip %%st(1), %%st; seta %%al" \ + +60 : "÷" ( +__»suÉ +è: "u" ( +x +), "t" ( +y +) : "cc", "st"); \ + +61 +__»suÉ +; }) + + ) + +63  + #i¦es£qu® +( +x +, +y +) \ + +64 ({  +__»suÉ +; \ + +65 + `__asm__ + ("fucomip %%st(1), %%st; setae %%al" \ + +66 : "÷" ( +__»suÉ +è: "u" ( +x +), "t" ( +y +) : "cc", "st"); \ + +67 +__»suÉ +; }) + + ) + +69  + #i¦essg»©” +( +x +, +y +) \ + +70 ({  +__»suÉ +; \ + +71 + `__asm__ + ("fucomip %%st(1), %%st; setne %%al" \ + +72 : "÷" ( +__»suÉ +è: "u" ( +y +), "t" ( +x +) : "cc", "st"); \ + +73 +__»suÉ +; }) + + ) + +75  + #isunÜd”ed +( +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  + #isg»©”equ® +( +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  + #i¦ess +( +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  + #i¦es£qu® +( +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  + #i¦essg»©” +( +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  + #isunÜd”ed +( +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 + ( + $__signb™f + ( +__x +)) + +129 #ifdeà +__SSE2_MATH__ + + +130  +__m +; + +131 + `__asm + ("pmovmskb %1, %0" : "ô" ( +__m +è: "x" ( +__x +)); + +132  ( +__m + & 0x8) != 0; + +134 +__ex‹nsiÚ__ + 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 +__ex‹nsiÚ__ + uniÚ {  +__d +;  +__i +[2]; } +__u + = { __d: +__x + }; + +147  +__u +. +__i +[1] < 0; + +149 + } +} + +150 +__MATH_INLINE +  + +151 +__NTH + ( + $__signb™l + ( +__x +)) + +153 +__ex‹nsiÚ__ + 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è&& ! +defšed + +__NO_MATH_INLINES + \ + +166 && +defšed + + 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 +__ex‹nsiÚ__ + + +202 +__MATH_INLINE +  + +203 +__NTH + ( + $Îrštf + ( +__x +)) + +205  +__»s +; + +210 +__asm + + `__vÞ©že__ + ("cvtss2s˜%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +211  +__»s +; + +212 + } +} + +213 +__ex‹nsiÚ__ + + +214 +__MATH_INLINE +  + +215 +__NTH + ( + $Îršt + ( +__x +)) + +217  +__»s +; + +222 +__asm + + `__vÞ©že__ + ("cvtsd2s˜%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +223  +__»s +; + +224 + } +} + +227 #ià +defšed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 \ + +228 && +defšed + +__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 + ( + $fmšf + ( +__x +,  +__y +)) + +259 #ifdeà +__AVX__ + + +260  +__»s +; + +261 + `__asm + ("vmšs %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +262  +__»s +; + +264 + `__asm + ("mšs %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +265  +__x +; + +267 + } +} + +268 +__MATH_INLINE +  + +269 +__NTH + ( + $fmš + ( +__x +,  +__y +)) + +271 #ifdeà +__AVX__ + + +272  +__»s +; + +273 + `__asm + ("vmšsd %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +274  +__»s +; + +276 + `__asm + ("mšsd %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +277  +__x +; + +279 + } +} + +282 + g__END_NAMESPACE_C99 + + +285 #ià +defšed + +__SSE4_1__ + && defšed +__SSE2_MATH__ + + +286 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_ISOC99 + + +287 +__BEGIN_NAMESPACE_C99 + + +290 +__MATH_INLINE +  + +291 +__NTH + ( + $ršt + ( +__x +)) + +293  +__»s +; + +298 +__asm + + `__vÞ©že__ + ("roundsd $4, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +299  +__»s +; + +300 + } +} + +301 +__MATH_INLINE +  + +302 +__NTH + ( + $rštf + ( +__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 + ( + $ìbyšt + ( +__x +)) + +318  +__»s +; + +323 +__asm + + `__vÞ©že__ + ("roundsd $0xc, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +324  +__»s +; + +325 + } +} + +326 +__MATH_INLINE +  + +327 +__NTH + ( + $ìbyštf + ( +__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 + ( + $æoÜf + ( +__x +)) + +378  +__»s +; + +379 + `__asm + ("rounds $1, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +380  +__»s +; + +381 + } +} + +382 + g__END_NAMESPACE_C99 + + +390 #ià! +defšed + +__SSE2_MATH__ + && !defšed +__x86_64__ + + +391 #ià((! +defšed + +__NO_MATH_INLINES + || defšed +__LIBC_INTERNAL_MATH_INLINES +) \ + +392 && +defšed + + g__OPTIMIZE__ +) + +396 #undeà +m©h_”rhªdlšg + + +405 #ifdeà +__USE_ISOC99 + + +406  + #__šlše_m©hÝ +( +func +, +Ý +) \ + +407 + `__šlše_m©hÝ_ + (, +func +, +Ý +) \ + +408 + `__šlše_m©hÝ_ + (, + `__CONCAT +( +func +, +f +), +Ý +) \ + +409 + `__šlše_m©hÝ_ + (, + `__CONCAT +( +func +, +l +), +Ý +) + + ) + +410  + #__šlše_m©hÝNP +( +func +, +Ý +) \ + +411 + `__šlše_m©hÝNP_ + (, +func +, +Ý +) \ + +412 + `__šlše_m©hÝNP_ + (, + `__CONCAT +( +func +, +f +), +Ý +) \ + +413 + `__šlše_m©hÝNP_ + (, + `__CONCAT +( +func +, +l +), +Ý +) + + ) + +415  + #__šlše_m©hÝ +( +func +, +Ý +) \ + +416 + `__šlše_m©hÝ_ + (, +func +, +Ý +) + + ) + +417  + #__šlše_m©hÝNP +( +func +, +Ý +) \ + +418 + `__šlše_m©hÝNP_ + (, +func +, +Ý +) + + ) + +421  + #__šlše_m©hÝ_ +( +æßt_ty³ +, +func +, +Ý +) \ + +422 + `__šlše_m©hÝ_deþ_ + ( +æßt_ty³ +, +func +, +Ý +, "0" ( +__x +)) + + ) + +423  + #__šlše_m©hÝNP_ +( +æßt_ty³ +, +func +, +Ý +) \ + +424 + `__šlše_m©hÝ_deþNP_ + ( +æßt_ty³ +, +func +, +Ý +, "0" ( +__x +)) + + ) + +427 #ifdeà +__USE_ISOC99 + + +428  + #__šlše_m©hÝ_deþ +( +func +, +Ý +, +·¿ms +...) \ + +429 + `__šlše_m©hÝ_deþ_ + (, +func +, +Ý +, +·¿ms +) \ + +430 + `__šlše_m©hÝ_deþ_ + (, + `__CONCAT +( +func +, +f +), +Ý +, +·¿ms +) \ + +431 + `__šlše_m©hÝ_deþ_ + (, + `__CONCAT +( +func +, +l +), +Ý +, +·¿ms +) + + ) + +432  + #__šlše_m©hÝ_deþNP +( +func +, +Ý +, +·¿ms +...) \ + +433 + `__šlše_m©hÝ_deþNP_ + (, +func +, +Ý +, +·¿ms +) \ + +434 + `__šlše_m©hÝ_deþNP_ + (, + `__CONCAT +( +func +, +f +), +Ý +, +·¿ms +) \ + +435 + `__šlše_m©hÝ_deþNP_ + (, + `__CONCAT +( +func +, +l +), +Ý +, +·¿ms +) + + ) + +437  + #__šlše_m©hÝ_deþ +( +func +, +Ý +, +·¿ms +...) \ + +438 + `__šlše_m©hÝ_deþ_ + (, +func +, +Ý +, +·¿ms +) + + ) + +439  + #__šlše_m©hÝ_deþNP +( +func +, +Ý +, +·¿ms +...) \ + +440 + `__šlše_m©hÝ_deþNP_ + (, +func +, +Ý +, +·¿ms +) + + ) + +443  + #__šlše_m©hÝ_deþ_ +( +æßt_ty³ +, +func +, +Ý +, +·¿ms +...) \ + +444 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³è +__THROW +; \ + +445 + `__šlše_m©hÝ_deþNP_ + ( +æßt_ty³ +, +func +, +Ý +, +·¿ms +) + + ) + +447  + #__šlše_m©hÝ_deþNP_ +( +æß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  + #__šlše_m©hcode +( +func +, +¬g +, +code +) \ + +458 + `__šlše_m©hcode_ + (, +func +, +¬g +, +code +) \ + +459 + `__šlše_m©hcode_ + (, + `__CONCAT +( +func +, +f +), +¬g +, +code +) \ + +460 + `__šlše_m©hcode_ + (, + `__CONCAT +( +func +, +l +), +¬g +, +code +) + + ) + +461  + #__šlše_m©hcodeNP +( +func +, +¬g +, +code +) \ + +462 + `__šlše_m©hcodeNP_ + (, +func +, +¬g +, +code +) \ + +463 + `__šlše_m©hcodeNP_ + (, + `__CONCAT +( +func +, +f +), +¬g +, +code +) \ + +464 + `__šlše_m©hcodeNP_ + (, + `__CONCAT +( +func +, +l +), +¬g +, +code +) + + ) + +465  + #__šlše_m©hcode2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +466 + `__šlše_m©hcode2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) \ + +467 + `__šlše_m©hcode2_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +code +) \ + +468 + `__šlše_m©hcode2_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +code +) + + ) + +469  + #__šlše_m©hcodeNP2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +470 + `__šlše_m©hcodeNP2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) \ + +471 + `__šlše_m©hcodeNP2_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +code +) \ + +472 + `__šlše_m©hcodeNP2_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +code +) + + ) + +473  + #__šlše_m©hcode3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +474 + `__šlše_m©hcode3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +475 + `__šlše_m©hcode3_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +476 + `__šlše_m©hcode3_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +477  + #__šlše_m©hcodeNP3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +478 + `__šlše_m©hcodeNP3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +479 + `__šlše_m©hcodeNP3_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +480 + `__šlše_m©hcodeNP3_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +482  + #__šlše_m©hcode +( +func +, +¬g +, +code +) \ + +483 + `__šlše_m©hcode_ + (, +func +, ( +¬g +), +code +) + + ) + +484  + #__šlše_m©hcodeNP +( +func +, +¬g +, +code +) \ + +485 + `__šlše_m©hcodeNP_ + (, +func +, ( +¬g +), +code +) + + ) + +486  + #__šlše_m©hcode2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +487 + `__šlše_m©hcode2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +488  + #__šlše_m©hcodeNP2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +489 + `__šlše_m©hcodeNP2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +490  + #__šlše_m©hcode3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +491 + `__šlše_m©hcode3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +492  + #__šlše_m©hcodeNP3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +493 + `__šlše_m©hcodeNP3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +496  + #__šlše_m©hcode_ +( +æßt_ty³ +, +func +, +¬g +, +code +) \ + +497 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³è +__THROW +; \ + +498 + `__šlše_m©hcodeNP_ +( +æßt_ty³ +, +func +, +¬g +, +code +) + + ) + +500  + #__šlše_m©hcodeNP_ +( +æßt_ty³ +, +func +, +¬g +, +code +) \ + +501 +__MATH_INLINE + +æßt_ty³ + + `__NTH + ( + `func + (æßt_ty³ +¬g +)) \ + +503 +code +; \ + +504 } + + ) + +507  + #__šlše_m©hcode2_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +code +) \ + +508 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³, flßt_ty³è +__THROW +; \ + +509 + `__šlše_m©hcodeNP2_ + ( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +511  + #__šlše_m©hcodeNP2_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +code +) \ + +512 +__MATH_INLINE + +æßt_ty³ + + `__NTH + ( + `func + (æßt_ty³ +¬g1 +, flßt_ty³ +¬g2 +)) \ + +514 +code +; \ + +515 } + + ) + +517  + #__šlše_m©hcode3_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +518 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³, flßt_ty³, flßt_ty³è +__THROW +; \ + +519 + `__šlše_m©hcodeNP3_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +521  + #__šlše_m©hcodeNP3_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +522 +__MATH_INLINE + +æßt_ty³ + + `__NTH + ( + `func + (æßt_ty³ +¬g1 +, flßt_ty³ +¬g2 +, \ + +523 +æßt_ty³ + +¬g3 +)) \ + +525 +code +; \ + +526 } + + ) + +530 #ià! +defšed + +__NO_MATH_INLINES + && defšed +__OPTIMIZE__ + + +534 #ifdeà +__FAST_MATH__ + + +535 #ifdeà +__USE_GNU + + +536  + #__sšcos_code + \ + +537  +__co¤ +; \ + +538  +__sšr +; \ + +539  +__swtmp +; \ + +540 +__asm + +__vÞ©že__ + \ + +555 : "ñ" ( +__co¤ +), "=u" ( +__sšr +), "÷" ( +__swtmp +è: "0" ( +__x +)); \ + +556 * +__sšx + = +__sšr +; \ + +557 * +__cosx + = +__co¤ + + + ) + +559 +__MATH_INLINE +  + +560 +__NTH + ( + $__sšcos + ( +__x +, * +__sšx +, * +__cosx +)) + +562 +__sšcos_code +; + +563 + } +} + +565 +__MATH_INLINE +  + +566 +__NTH + ( + $__sšcosf + ( +__x +, * +__sšx +, * +__cosx +)) + +568 +__sšcos_code +; + +569 + } +} + +571 +__MATH_INLINE +  + +572 +__NTH + ( + $__sšco¦ + ( +__x +, * +__sšx +, * +__cosx +)) + +574 +__sšcos_code +; + +575 + } +} + +582 #ià +__GNUC_PREREQ + (3, 5) + +583  + #__expm1_code + \ + +584  +__‹mp +; \ + +585 +__‹mp + = + `__bužtš_expm1l + ( +__x +); \ + +586  +__‹mp + ? __‹m°: +__x + + + ) + +588  + #__expm1_code + \ + +589  +__v®ue +; \ + +590  +__expڒt +; \ + +591  +__‹mp +; \ + +592 +__asm + +__vÞ©že__ + \ + +601 : "ñ" ( +__v®ue +), "=u" ( +__expڒt +è: "0" ( +__x +)); \ + +602 +__asm + +__vÞ©že__ + \ + +604 : "ñ" ( +__‹mp +è: "0" (1.0), "u" ( +__expڒt +)); \ + +605 +__‹mp + -= 1.0; \ + +606 +__‹mp + +ð +__v®ue +; \ + +607  +__‹mp + ? __‹m°: +__x + + + ) + +609 + $__šlše_m©hcodeNP_ + (, +__expm1l +, +__x +, +__expm1_code +) + +611 #ià + `__GNUC_PREREQ + (3, 4) + +612 + `__šlše_m©hcodeNP_ + (, +__ex¶ +, +__x +,  + $__bužtš_ex¶ + ( +__x +)) + +614  + #__exp_code + \ + +615  +__v®ue +; \ + +616  +__expڒt +; \ + +617 +__asm + +__vÞ©že__ + \ + +625 : "ñ" ( +__v®ue +), "=u" ( +__expڒt +è: "0" ( +__x +)); \ + +626 +__v®ue + += 1.0; \ + +627 +__asm + +__vÞ©že__ + \ + +629 : "ñ" ( +__v®ue +è: "0" (__v®ue), "u" ( +__expڒt +)); \ + +630  +__v®ue + + + ) + +631 + $__šlše_m©hcodeNP + ( +exp +, +__x +, +__exp_code +) + +632 + $__šlše_m©hcodeNP_ + (, +__ex¶ +, +__x +, +__exp_code +) + +636 #ià! + `__GNUC_PREREQ + (3, 5) + +637 + `__šlše_m©hcodeNP + ( +n +, +__x +, \ + +638  +__v®ue +; \ + +639  +__v®ue2 + + `__©Œibu‹__ + (( +__unu£d__ +)); \ + +640 +__asm + +__vÞ©že__ + \ + +642 : "ñ" ( +__v®ue2 +), "=u" ( +__v®ue +è: "0" ( +__x +)); \ + +643  +__v®ue +) + +648 #ià + `__GNUC_PREREQ + (3, 4) + +649 + `__šlše_m©hcodeNP2_ + (, +__©ª2l +, +__y +, +__x +, + +650  + $__bužtš_©ª2l + ( +__y +, +__x +)) + +652  + #__©ª2_code + \ + +653  +__v®ue +; \ + +654 +__asm + +__vÞ©že__ + \ + +656 : "ñ" ( +__v®ue +è: "0" ( +__x +), "u" ( +__y +) : "st(1)"); \ + +657  +__v®ue + + + ) + +658 #ifdeà +__FAST_MATH__ + + +659 + $__šlše_m©hcodeNP2 + ( +©ª2 +, +__y +, +__x +, +__©ª2_code +) + +661 + $__šlše_m©hcodeNP2_ + (, +__©ª2l +, +__y +, +__x +, +__©ª2_code +) + +665 #ià +defšed + +__FAST_MATH__ + && ! + `__GNUC_PREREQ + (3, 5) + +666 + `__šlše_m©hcodeNP2 + ( +fmod +, +__x +, +__y +, \ + +667  +__v®ue +; \ + +668 +__asm + +__vÞ©že__ + \ + +673 : "ñ" ( +__v®ue +è: "0" ( +__x +), "u" ( +__y +) : "ax", "cc"); \ + +674  +__v®ue +) + +678 #ifdeà +__FAST_MATH__ + + +679 #ià! + `__GNUC_PREREQ + (3,3) + +680 + `__šlše_m©hÝNP + ( +sq¹ +, "fsqrt") + +681 + `__šlše_m©hÝNP_ + (, +__sq¹l +, "fsqrt") + +682  + #__libc_sq¹l +( +n +è + `__sq¹l + (n) + + ) + +684  + #__libc_sq¹l +( +n +è + `__bužtš_sq¹l + (n) + + ) + +688 #ià + `__GNUC_PREREQ + (2, 8) + +689 + `__šlše_m©hcodeNP_ + (, +çbs +, +__x +,  + $__bužtš_çbs + ( +__x +)) + +690 #ifdeà +__USE_ISOC99 + + +691 + `__šlše_m©hcodeNP_ + (, +çbsf +, +__x +,  + $__bužtš_çbsf + ( +__x +)) + +692 + `__šlše_m©hcodeNP_ + (, +çb¦ +, +__x +,  + $__bužtš_çb¦ + ( +__x +)) + +694 + `__šlše_m©hcodeNP_ + (, +__çb¦ +, +__x +,  + $__bužtš_çb¦ + ( +__x +)) + +696 + `__šlše_m©hÝ + ( +çbs +, "fabs") + +697 + `__šlše_m©hÝ_ + (, +__çb¦ +, "fabs") + +700 #ifdeà +__FAST_MATH__ + + +701 #ià! + `__GNUC_PREREQ + (3, 4) + +703 + `__šlše_m©hÝNP + ( +sš +, "fsin") + +705 + `__šlše_m©hÝNP + ( +cos +, "fcos") + +707 + `__šlše_m©hÝ_deþNP + ( +log +, "ædÊ2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +710 #ià! + `__GNUC_PREREQ + (3, 5) + +711 + `__šlše_m©hÝ_deþNP + ( +log10 +, "ædlg2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +713 + `__šlše_m©hcodeNP + ( +asš +, +__x +,  + `__©ª2l + (__x, + `__libc_sq¹l + (1.0 - __x * __x))) + +714 + `__šlše_m©hcodeNP + ( +acos +, +__x +,  + `__©ª2l + ( + `__libc_sq¹l + (1.0 - __x * __x), __x)) + +717 #ià! + `__GNUC_PREREQ + (3, 4) + +718 + `__šlše_m©hÝ_deþNP + ( +©ª +, "æd1; f·n", "0" ( +__x +) : "st(1)") + +722 + `__šlše_m©hcode_ + (, +__sgn1l +, +__x +, \ + +723 +__ex‹nsiÚ__ + 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 +__šlše_m©hcodeNP + ( +sšh +, +__x +, \ + +734  +__exm1 + = +__expm1l + ( +__çb¦ + ( +__x +)); \ + +735  0.5 * ( +__exm1 + / (__exm1 + 1.0è+ __exm1è* + $__sgn1l + ( +__x +)) + +737 + `__šlše_m©hcodeNP + ( +cosh +, +__x +, \ + +738  +__ex + = + `__ex¶ + ( +__x +); \ + +739  0.5 * ( +__ex + + 1.0 / __ex)) + +741 + `__šlše_m©hcodeNP + ( +nh +, +__x +, \ + +742  +__exm1 + = + `__expm1l + (- + `__çb¦ + ( +__x + + __x)); \ + +743  +__exm1 + / (__exm1 + 2.0è* + `__sgn1l + (- +__x +)) + +746 + `__šlše_m©hcodeNP + ( +æoÜ +, +__x +, \ + +747  +__v®ue +; \ + +748  +__ignÜe +; \ + +749  +__cw +; \ + +750  +__cwtmp +; \ + +751 +__asm + + `__vÞ©že + ("fnstcw %3\n\t" \ + +759 : "ñ" ( +__v®ue +), "=&q" ( +__ignÜe +), "=m" ( +__cwtmp +), \ + +760 "=m" ( +__cw +) \ + +761 : "0" ( +__x +)); \ + +762  +__v®ue +) + +764 + `__šlše_m©hcodeNP + ( +ûž +, +__x +, \ + +765  +__v®ue +; \ + +766  +__ignÜe +; \ + +767  +__cw +; \ + +768  +__cwtmp +; \ + +769 +__asm + + `__vÞ©že + ("fnstcw %3\n\t" \ + +777 : "ñ" ( +__v®ue +), "=&q" ( +__ignÜe +), "=m" ( +__cwtmp +), \ + +778 "=m" ( +__cw +) \ + +779 : "0" ( +__x +)); \ + +780  +__v®ue +) + +782 #ifdeà +__FAST_MATH__ + + +783  + #__ldexp_code + \ + +784  +__v®ue +; \ + +785 +__asm + +__vÞ©že__ + \ + +787 : "ñ" ( +__v®ue +è: "0" ( +__x +), "u" ((è +__y +)); \ + +788  +__v®ue + + + ) + +790 +__MATH_INLINE +  + +791 + `__NTH + ( + $ldexp + ( +__x +,  +__y +)) + +793 +__ldexp_code +; + +794 + } +} + +799 #ifdeà +__USE_ISOC99 + + +801 #ifdeà +__FAST_MATH__ + + +802 + $__šlše_m©hcodeNP + ( +expm1 +, +__x +, +__expm1_code +) + +806  + #__M_SQRT2 + 1.41421356237309504880L + + ) + +808 #ià! + `__GNUC_PREREQ + (3, 5) + +809 + `__šlše_m©hcodeNP + ( +log1p +, +__x +, \ + +810  +__v®ue +; \ + +811 ià( + `__çb¦ + ( +__x +è>ð1.0 - 0.5 * +__M_SQRT2 +) \ + +812 +__v®ue + = + `logl + (1.0 + +__x +); \ + +814 +__asm + +__vÞ©že__ + \ + +818 : "ñ" ( +__v®ue +è: "0" ( +__x +) : "st(1)"); \ + +819  +__v®ue +) + +824 + `__šlše_m©hcodeNP + ( +asšh +, +__x +, \ + +825  +__y + = + `__çb¦ + ( +__x +); \ + +826  ( + `log1¶ + ( +__y + * __y / ( + `__libc_sq¹l + (__y * __y + 1.0) + 1.0) + __y) \ + +827 * + $__sgn1l + ( +__x +))) + +829 + `__šlše_m©hcodeNP + ( +acosh +, +__x +, \ + +830  + `logl + ( +__x + + + `__libc_sq¹l + (__x - 1.0) * __libc_sqrtl (__x + 1.0))) + +832 + `__šlše_m©hcodeNP + ( +©ªh +, +__x +, \ + +833  +__y + = + `__çb¦ + ( +__x +); \ + +834  -0.5 * + `log1¶ + (-( +__y + + __yè/ (1.0 + __y)è* + $__sgn1l + ( +__x +)) + +837 + `__šlše_m©hcodeNP2 + ( +hypÙ +, +__x +, +__y +, + +838  + `__libc_sq¹l + ( +__x + * __x + +__y + * __y)) + +840 #ià! + `__GNUC_PREREQ + (3, 5) + +841 + `__šlše_m©hcodeNP +( +logb +, +__x +, \ + +842  +__v®ue +; \ + +843  +__junk +; \ + +844 +__asm + +__vÞ©že__ + \ + +846 : "ñ" ( +__junk +), "=u" ( +__v®ue +è: "0" ( +__x +)); \ + +847  +__v®ue +) + +853 #ifdeà +__USE_ISOC99 + + +854 #ifdeà +__FAST_MATH__ + + +856 #ià! + `__GNUC_PREREQ + (3, 5) + +857 + `__šlše_m©hÝ_deþNP + ( +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 +__šlše_m©hÝNP + ( +ršt +, "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  + #__Îršt_code + \ + +899  +__ÎršŒes +; \ + +900 +__asm__ + +__vÞ©že__ + \ + +902 : "=m" ( +__ÎršŒes +è: "t" ( +__x +) : "st"); \ + +903  +__ÎršŒes + + + ) + +904 +__ex‹nsiÚ__ + + +905 +__MATH_INLINE +  + +906 +__NTH + ( + $Îrštf + ( +__x +)) + +908 +__Îršt_code +; + +909 + } +} + +910 +__ex‹nsiÚ__ + + +911 +__MATH_INLINE +  + +912 +__NTH + ( + $Îršt + ( +__x +)) + +914 +__Îršt_code +; + +915 + } +} + +916 +__ex‹nsiÚ__ + + +917 +__MATH_INLINE +  + +918 +__NTH + ( + $ÎršŽ + ( +__x +)) + +920 +__Îršt_code +; + +921 + } +} + +922 #undeà +__Îršt_code + + +927 #ifdeà +__USE_MISC + + +929 #ià +defšed + +__FAST_MATH__ + && ! +__GNUC_PREREQ + (3, 5) + +930 +__šlše_m©hcodeNP2 + ( +d»m +, +__x +, +__y +, \ + +931  +__v®ue +; \ + +932  +__þobb”ed +; \ + +933 +__asm + +__vÞ©že__ + \ + +938 : "ñ" ( +__v®ue +), "=&a" ( +__þobb”ed +è: "0" ( +__x +), "u" ( +__y +) : "cc"); \ + +939  +__v®ue +) + +944 +__MATH_INLINE +  + +945 +__NTH + ( + $__fš™e + ( +__x +)) + +947  ( +__ex‹nsiÚ__ + + +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à +__sšcos_code + + +966 #ifdeà +__LIBC_INTERNAL_MATH_INLINES + + +967 +__šlše_m©hÝ + ( +__›“754_sq¹ +, "fsqrt") + +968 +__šlše_m©hcode2_ + (, +__›“754_©ª2l +, +__y +, +__x +, + +969  +__v®ue +; + +970 +__asm + +__vÞ©že__ + ("fpatan\n\t" + +971 : "ñ" ( +__v®ue +) + +972 : "0" ( +__x +), "u" ( +__y +) : "st(1)"); + +973  +__v®ue +;) + + @/usr/include/bits/nan.h + +19 #iâdeà +_MATH_H + + +26 #ià +__GNUC_PREREQ +(3,3) + +28  + #NAN + ( + `__bužtš_Çnf + ("")) + + ) + +30 #–ià +defšed + +__GNUC__ + + +32  + #NAN + \ + +33 ( +__ex‹nsiÚ__ + \ + +34 ((uniÚ {  +__l + + `__©Œibu‹__ + (( + `__mode__ + ( +__SI__ +)));  +__d +; }) \ + +35 { +__l +: 0x7fc00000UL }). +__d +) + + ) + +39  + ~<’dŸn.h +> + +41 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +42  + #__qÇn_by‹s + { 0x7f, 0xc0, 0, 0 } + + ) + +44 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +45  + #__qÇn_by‹s + { 0, 0, 0xc0, 0x7à} + + ) + +48 uniÚ {  + m__c +[4];  + m__d +; } +__qÇn_uniÚ + + +49 +__©Œibu‹__ + (( +__unu£d__ +)èð{ +__qÇn_by‹s + }; + +50  + #NAN + ( +__qÇn_uniÚ +. +__d +) + + ) + + @/usr/include/bits/param.h + +19 #iâdeà +_SYS_PARAM_H + + +23 #iâdeà +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 #iâdef +_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 #iâdeà +_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  + t±h»ad_t +; + +63  + u±h»ad_©Œ_t + + +65  + m__size +[ +__SIZEOF_PTHREAD_ATTR_T +]; + +66  + m__®ign +; + +68 #iâdeà +__have_±h»ad_©Œ_t + + +69  +±h»ad_©Œ_t + + t±h»ad_©Œ_t +; + +70  + #__have_±h»ad_©Œ_t + 1 + + ) + +74 #ifdeà +__x86_64__ + + +75  + s__±h»ad_š‹º®_li¡ + + +77  +__±h»ad_š‹º®_li¡ + * + m__´ev +; + +78  +__±h»ad_š‹º®_li¡ + * + m__Ãxt +; + +79 } + t__±h»ad_li¡_t +; + +81  + s__±h»ad_š‹º®_¦i¡ + + +83  +__±h»ad_š‹º®_¦i¡ + * + m__Ãxt +; + +84 } + t__±h»ad_¦i¡_t +; + +92  + s__±h»ad_mu‹x_s + + +94  + m__lock +; + +95  + m__couÁ +; + +96  + m__owÃr +; + +97 #ifdeà +__x86_64__ + + +98  + m__nu£rs +; + +102  + m__kšd +; + +103 #ifdeà +__x86_64__ + + +104  + m__¥šs +; + +105  + m__–isiÚ +; + +106 +__±h»ad_li¡_t + + m__li¡ +; + +107  + #__PTHREAD_MUTEX_HAVE_PREV + 1 + + ) + +109  + #__PTHREAD_SPINS + 0, 0 + + ) + +111  + m__nu£rs +; + +112 +__ex‹nsiÚ__ + union + +116  + m__e¥šs +; + +117  + m__–isiÚ +; + +118  + #__¥šs + +__–isiÚ_d©a +. +__e¥šs + + + ) + +119  + #__–isiÚ + +__–isiÚ_d©a +. +__–isiÚ + + + ) + +120  + #__PTHREAD_SPINS + { 0, 0 } + + ) + +121 } + m__–isiÚ_d©a +; + +122 +__±h»ad_¦i¡_t + + m__li¡ +; + +125 } + m__d©a +; + +126  + m__size +[ +__SIZEOF_PTHREAD_MUTEX_T +]; + +127  + m__®ign +; + +128 } + t±h»ad_mu‹x_t +; + +132  + m__size +[ +__SIZEOF_PTHREAD_MUTEXATTR_T +]; + +133  + m__®ign +; + +134 } + t±h»ad_mu‹x©Œ_t +; + +143  + m__lock +; + +144  + m__fu‹x +; + +145 +__ex‹nsiÚ__ +  + m__tÙ®_£q +; + +146 +__ex‹nsiÚ__ +  + m__wakeup_£q +; + +147 +__ex‹nsiÚ__ +  + m__wok’_£q +; + +148 * + m__mu‹x +; + +149  + m__nwa™”s +; + +150  + m__brßdÿ¡_£q +; + +151 } + m__d©a +; + +152  + m__size +[ +__SIZEOF_PTHREAD_COND_T +]; + +153 +__ex‹nsiÚ__ +  + m__®ign +; + +154 } + t±h»ad_cÚd_t +; + +158  + m__size +[ +__SIZEOF_PTHREAD_CONDATTR_T +]; + +159  + m__®ign +; + +160 } + t±h»ad_cÚd©Œ_t +; + +164  + t±h»ad_key_t +; + +168  + t±h»ad_Úû_t +; + +171 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +176 #ifdeà +__x86_64__ + + +179  + m__lock +; + +180  + m__Ä_»ad”s +; + +181  + m__»ad”s_wakeup +; + +182  + m__wr™”_wakeup +; + +183  + m__Ä_»ad”s_queued +; + +184  + m__Ä_wr™”s_queued +; + +185  + m__wr™” +; + +186  + m__sh¬ed +; + +187 sigÃd  + m__rw–isiÚ +; + +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__d©a +; + +204  + m__lock +; + +205  + m__Ä_»ad”s +; + +206  + m__»ad”s_wakeup +; + +207  + m__wr™”_wakeup +; + +208  + m__Ä_»ad”s_queued +; + +209  + m__Ä_wr™”s_queued +; + +212  + m__æags +; + +213  + m__sh¬ed +; + +214 sigÃd  + m__rw–isiÚ +; + +215  + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0 + + ) + +216  + m__·d2 +; + +217  + m__wr™” +; + +218 } + m__d©a +; + +220  + m__size +[ +__SIZEOF_PTHREAD_RWLOCK_T +]; + +221  + m__®ign +; + +222 } + t±h»ad_rwlock_t +; + +226  + m__size +[ +__SIZEOF_PTHREAD_RWLOCKATTR_T +]; + +227  + m__®ign +; + +228 } + t±h»ad_rwlock©Œ_t +; + +232 #ifdeà +__USE_XOPEN2K + + +234 vÞ©ž + t±h»ad_¥šlock_t +; + +241  + m__size +[ +__SIZEOF_PTHREAD_BARRIER_T +]; + +242  + m__®ign +; + +243 } + t±h»ad_b¬r›r_t +; + +247  + m__size +[ +__SIZEOF_PTHREAD_BARRIERATTR_T +]; + +248  + m__®ign +; + +249 } + t±h»ad_b¬r›¿‰r_t +; + +253 #iâdeà +__x86_64__ + + +255  + #__þ—nup_fù_©Œibu‹ + + `__©Œibu‹__ + (( + `__»g·rm__ + (1))) + + ) + + @/usr/include/bits/setjmp.h + +19 #iâdeà +_BITS_SETJMP_H + + +20  + #_BITS_SETJMP_H + 1 + + ) + +22 #ià! +defšed + +_SETJMP_H + && !defšed +_PTHREAD_H + + +26  + ~ + +28 #iâdeà +_ASM + + +30 #ià +__WORDSIZE + == 64 + +31  + t__jmp_buf +[8]; + +32 #–ià +defšed + +__x86_64__ + + +33 +__ex‹nsiÚ__ +  + t__jmp_buf +[8]; + +35  + t__jmp_buf +[6]; + + @/usr/include/bits/setjmp2.h + +19 #iâdeà +_SETJMP_H + + +24 #ifdeà +__REDIRECT_NTH + + +25  +__REDIRECT_NTHNL + ( +lÚgjmp +, + +26 ( +__jmp_buf_g + +__’v +[1],  +__v® +), + +27 +__lÚgjmp_chk +è +__©Œibu‹__ + (( +__nܑuº__ +)); + +28  +__REDIRECT_NTHNL + ( +_lÚgjmp +, + +29 ( +__jmp_buf_g + +__’v +[1],  +__v® +), + +30 +__lÚgjmp_chk +è +__©Œibu‹__ + (( +__nܑuº__ +)); + +31  +__REDIRECT_NTHNL + ( +siglÚgjmp +, + +32 ( +__jmp_buf_g + +__’v +[1],  +__v® +), + +33 +__lÚgjmp_chk +è +__©Œibu‹__ + (( +__nܑuº__ +)); + +35  +__lÚgjmp_chk + ( +__jmp_buf_g + +__’v +[1],  +__v® +), + +36 +__THROWNL + +__©Œibu‹__ + (( +__nܑuº__ +)); + +37  + #lÚgjmp + +__lÚgjmp_chk + + + ) + +38  + #_lÚgjmp + +__lÚgjmp_chk + + + ) + +39  + #siglÚgjmp + +__lÚgjmp_chk + + + ) + + @/usr/include/bits/sigaction.h + +19 #iâdeà +_SIGNAL_H + + +24  + ssigaùiÚ + + +27 #ifdeà +__USE_POSIX199309 + + +31 +__sighªdËr_t + + m§_hªdËr +; + +33 (* + m§_sigaùiÚ +è(, + msigšfo_t + *, *); + +35 + m__sigaùiÚ_hªdËr +; + +36  + #§_hªdËr + +__sigaùiÚ_hªdËr +. +§_hªdËr + + + ) + +37  + #§_sigaùiÚ + +__sigaùiÚ_hªdËr +. +§_sigaùiÚ + + + ) + +39 +__sighªdËr_t + + m§_hªdËr +; + +43 +__sig£t_t + + m§_mask +; + +46  + m§_æags +; + +49 (* + m§_»¡Ü” +) (); + +53  + #SA_NOCLDSTOP + 1 + + ) + +54  + #SA_NOCLDWAIT + 2 + + ) + +55  + #SA_SIGINFO + 4 + + ) + +57 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_MISC + + +58  + #SA_ONSTACK + 0x08000000 + + ) + +60 #ià +defšed + +__USE_UNIX98 + || defšed +__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 #iâdeà +_BITS_SIGCONTEXT_H + + +19  + #_BITS_SIGCONTEXT_H + 1 + + ) + +21 #ià! +defšed + +_SIGNAL_H + && !defšed +_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_by‹s + + +31 +__ušt32_t + + mmagic1 +; + +32 +__ušt32_t + + mex‹nded_size +; + +33 +__ušt64_t + + mx¡©e_bv +; + +34 +__ušt32_t + + mx¡©e_size +; + +35 +__ušt32_t + + m·ddšg +[7]; + +38  + s_å»g + + +40  + msignifiÿnd +[4]; + +41  + mexpڒt +; + +44  + s_åx»g + + +46  + msignifiÿnd +[4]; + +47  + mexpڒt +; + +48  + m·ddšg +[3]; + +51  + s_xmm»g + + +53 +__ušt32_t + + m–em’t +[4]; + +58 #iâdeà +__x86_64__ + + +60  + s_å¡©e + + +63 +__ušt32_t + + mcw +; + +64 +__ušt32_t + + msw +; + +65 +__ušt32_t + + mg +; + +66 +__ušt32_t + + moff +; + +67 +__ušt32_t + + mcs£l +; + +68 +__ušt32_t + + md©aoff +; + +69 +__ušt32_t + + md©a£l +; + +70  +_å»g + + m_¡ +[8]; + +71  + m¡©us +; + +72  + mmagic +; + +75 +__ušt32_t + + m_fx¤_’v +[6]; + +76 +__ušt32_t + + mmxc¤ +; + +77 +__ušt32_t + + m»£rved +; + +78  +_åx»g + + m_fx¤_¡ +[8]; + +79  +_xmm»g + + m_xmm +[8]; + +80 +__ušt32_t + + m·ddšg +[56]; + +83 #iâdeà +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  + m—x +; + +107  + mŒ­no +; + +108  + m”r +; + +109  + me +; + +110  + mcs +, + m__csh +; + +111  + meæags +; + +112  + me¥_©_sigÇl +; + +113  + mss +, + m__ssh +; + +114  +_å¡©e + * + må¡©e +; + +115  + mÞdmask +; + +116  + mü2 +; + +121  + s_å¡©e + + +124 +__ušt16_t + + mcwd +; + +125 +__ušt16_t + + mswd +; + +126 +__ušt16_t + + máw +; + +127 +__ušt16_t + + mfÝ +; + +128 +__ušt64_t + + mr +; + +129 +__ušt64_t + + mrdp +; + +130 +__ušt32_t + + mmxc¤ +; + +131 +__ušt32_t + + mmxü_mask +; + +132  +_åx»g + + m_¡ +[8]; + +133  +_xmm»g + + m_xmm +[16]; + +134 +__ušt32_t + + m·ddšg +[24]; + +137  + ssigcڋxt + + +139 +__ušt64_t + + mr8 +; + +140 +__ušt64_t + + mr9 +; + +141 +__ušt64_t + + mr10 +; + +142 +__ušt64_t + + mr11 +; + +143 +__ušt64_t + + mr12 +; + +144 +__ušt64_t + + mr13 +; + +145 +__ušt64_t + + mr14 +; + +146 +__ušt64_t + + mr15 +; + +147 +__ušt64_t + + mrdi +; + +148 +__ušt64_t + + mrsi +; + +149 +__ušt64_t + + mrbp +; + +150 +__ušt64_t + + mrbx +; + +151 +__ušt64_t + + mrdx +; + +152 +__ušt64_t + + m¿x +; + +153 +__ušt64_t + + mrcx +; + +154 +__ušt64_t + + mr¥ +; + +155 +__ušt64_t + + mr +; + +156 +__ušt64_t + + meæags +; + +157  + mcs +; + +158  + mgs +; + +159  + mfs +; + +160  + m__·d0 +; + +161 +__ušt64_t + + m”r +; + +162 +__ušt64_t + + mŒ­no +; + +163 +__ušt64_t + + mÞdmask +; + +164 +__ušt64_t + + mü2 +; + +165 +__ex‹nsiÚ__ + union + +167  +_å¡©e + * + må¡©e +; + +168 +__ušt64_t + + m__å¡©e_wÜd +; + +170 +__ušt64_t + + m__»£rved1 + [8]; + +175  + s_x§ve_hdr + + +177 +__ušt64_t + + mx¡©e_bv +; + +178 +__ušt64_t + + m»£rved1 +[2]; + +179 +__ušt64_t + + m»£rved2 +[5]; + +182  + s_ymmh_¡©e + + +184 +__ušt32_t + + mymmh_¥aû +[64]; + +187  + s_x¡©e + + +189  +_å¡©e + + må¡©e +; + +190  +_x§ve_hdr + + mx¡©e_hdr +; + +191  +_ymmh_¡©e + + mymmh +; + + @/usr/include/bits/siginfo.h + +19 #ià! +defšed + +_SIGNAL_H + && !defšed +__Ãed_sigšfo_t + \ + +20 && ! +defšed + + g__Ãed_sigev’t_t + + +24  + ~ + +26 #ià(! +defšed + +__have_sigv®_t + \ + +27 && ( +defšed + + g_SIGNAL_H + || defšed + g__Ãed_sigšfo_t + \ + +28 || +defšed + + g__Ãed_sigev’t_t +)) + +29  + #__have_sigv®_t + 1 + + ) + +32  + usigv® + + +34  + msiv®_št +; + +35 * + msiv®_±r +; + +36 } + tsigv®_t +; + +39 #ià(! +defšed + +__have_sigšfo_t + \ + +40 && ( +defšed + + g_SIGNAL_H + || defšed + g__Ãed_sigšfo_t +)) + +41  + #__have_sigšfo_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à +defšed + +__x86_64__ + && +__WORDSIZE + == 32 + +55  +__þock_t + + t__©Œibu‹__ + (( + t__®igÃd__ + (4))è + t__sigchld_þock_t +; + +56  + #__SI_ALIGNMENT + + `__©Œibu‹__ + (( + `__®igÃd__ + (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 } +_kžl +; + +83  +si_tid +; + +84  +si_ov”run +; + +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 } +_sigçuÉ +; + +121  +si_bªd +; + +122  +si_fd +; + +123 } +_sigpÞl +; + +128 * +_ÿÎ_addr +; + +129  +_sysÿÎ +; + +130  +_¬ch +; + +131 } +_sigsys +; + +132 } +_sif›lds +; + +133 } + tsigšfo_t + + t__SI_ALIGNMENT +; + +137  + #si_pid + +_sif›lds +. +_kžl +. +si_pid + + + ) + +138  + #si_uid + +_sif›lds +. +_kžl +. +si_uid + + + ) + +139  + #si_tim”id + +_sif›lds +. +_tim” +. +si_tid + + + ) + +140  + #si_ov”run + +_sif›lds +. +_tim” +. +si_ov”run + + + ) + +141  + #si_¡©us + +_sif›lds +. +_sigchld +. +si_¡©us + + + ) + +142  + #si_utime + +_sif›lds +. +_sigchld +. +si_utime + + + ) + +143  + #si_¡ime + +_sif›lds +. +_sigchld +. +si_¡ime + + + ) + +144  + #si_v®ue + +_sif›lds +. +_¹ +. +si_sigv® + + + ) + +145  + #si_št + +_sif›lds +. +_¹ +. +si_sigv® +. +siv®_št + + + ) + +146  + #si_±r + +_sif›lds +. +_¹ +. +si_sigv® +. +siv®_±r + + + ) + +147  + #si_addr + +_sif›lds +. +_sigçuÉ +. +si_addr + + + ) + +148  + #si_addr_lsb + +_sif›lds +. +_sigçuÉ +. +si_addr_lsb + + + ) + +149  + #si_low” + +_sif›lds +. +_sigçuÉ +. +si_addr_bnd +. +_low” + + + ) + +150  + #si_uµ” + +_sif›lds +. +_sigçuÉ +. +si_addr_bnd +. +_uµ” + + + ) + +151  + #si_bªd + +_sif›lds +. +_sigpÞl +. +si_bªd + + + ) + +152  + #si_fd + +_sif›lds +. +_sigpÞl +. +si_fd + + + ) + +153  + #si_ÿÎ_addr + +_sif›lds +. +_sigsys +. +_ÿÎ_addr + + + ) + +154  + #si_sysÿÎ + +_sif›lds +. +_sigsys +. +_sysÿÎ + + + ) + +155  + #si_¬ch + +_sif›lds +. +_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à +defšed + +__USE_XOPEN_EXTENDED + || defšed +__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à +defšed + +__USE_XOPEN_EXTENDED + || defšed +__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_sigšfo_t + + +302 #ià( +defšed + +_SIGNAL_H + || defšed +__Ãed_sigev’t_t +) \ + +303 && ! +defšed + +__have_sigev’t_t + + +304  + #__have_sigev’t_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 #iâdeà +__have_±h»ad_©Œ_t + + +316  +±h»ad_©Œ_t + + t±h»ad_©Œ_t +; + +317  + #__have_±h»ad_©Œ_t + 1 + + ) + +320  + ssigev’t + + +322 +sigv®_t + +sigev_v®ue +; + +323  +sigev_signo +; + +324  +sigev_nÙify +; + +328  +_·d +[ +__SIGEV_PAD_SIZE +]; + +332 +__pid_t + +_tid +; + +336 (* +_funùiÚ +è( +sigv®_t +); + +337 +±h»ad_©Œ_t + * +_©Œibu‹ +; + +338 } +_sigev_th»ad +; + +339 } +_sigev_un +; + +340 } + tsigev’t_t +; + +343  + #sigev_nÙify_funùiÚ + +_sigev_un +. +_sigev_th»ad +. +_funùiÚ + + + ) + +344  + #sigev_nÙify_©Œibu‹s + +_sigev_un +. +_sigev_th»ad +. +_©Œ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 + (( +__sighªdËr_t +è-1è + + ) + +23  + #SIG_DFL + (( +__sighªdËr_t +è0è + + ) + +24  + #SIG_IGN + (( +__sighªdËr_t +è1è + + ) + +26 #ifdeà +__USE_UNIX98 + + +27  + #SIG_HOLD + (( +__sighªdËr_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_cu¼’t_sig¹mš + ()) + + ) + +72  + #SIGRTMAX + ( + `__libc_cu¼’t_sig¹max + ()) + + ) + +76  + #__SIGRTMIN + 32 + + ) + +77  + #__SIGRTMAX + ( +_NSIG + - 1) + + ) + + @/usr/include/bits/sigset.h + +19 #iâdef +_SIGSET_H_ty³s + + +20  + #_SIGSET_H_ty³s + 1 + + ) + +22  + t__sig_©omic_t +; + +26  + #_SIGSET_NWORDS + (1024 / (8 *  ())) + + ) + +29  + m__v® +[ +_SIGSET_NWORDS +]; + +30 } + t__sig£t_t +; + +41 #ià! +defšed + +_SIGSET_H_âs + && defšed +_SIGNAL_H + + +42  + #_SIGSET_H_âs + 1 + + ) + +44 #iâdeà +_EXTERN_INLINE + + +45  + #_EXTERN_INLINE + +__ex‹º_šlše + + + ) + +49  + #__sigmask +( +sig +) \ + +50 (((è1è<< ((( +sig +è- 1è% (8 *  ()))) + + ) + +53  + #__sigwÜd +( +sig +è(((sigè- 1è/ (8 *  ())) + + ) + +55 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +56  + #__sigem±y£t +( +£t +) \ + +57 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +58 +sig£t_t + * +__£t + = ( +£t +); \ + +59 -- +__út + >ð0è +__£t +-> +__v® +[__cnt] = 0; \ + +60 0; })) + + ) + +61  + #__sigfžl£t +( +£t +) \ + +62 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +63 +sig£t_t + * +__£t + = ( +£t +); \ + +64 -- +__út + >ð0è +__£t +-> +__v® +[__cnt] = ~0UL; \ + +65 0; })) + + ) + +67 #ifdeà +__USE_GNU + + +71  + #__sigi£m±y£t +( +£t +) \ + +72 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +73 cÚ¡ +sig£t_t + * +__£t + = ( +£t +); \ + +74  +__»t + = +__£t +-> +__v® +[-- +__út +]; \ + +75 ! +__»t + && -- +__út + >= 0) \ + +76 +__»t + = +__£t +-> +__v® +[ +__út +]; \ + +77 +__»t + =ð0; })) + + ) + +78  + #__sigªd£t +( +de¡ +, +Ëá +, +right +) \ + +79 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +80 +sig£t_t + * +__de¡ + = ( +de¡ +); \ + +81 cÚ¡ +sig£t_t + * +__Ëá + = ( +Ëá +); \ + +82 cÚ¡ +sig£t_t + * +__right + = ( +right +); \ + +83 -- +__út + >= 0) \ + +84 +__de¡ +-> +__v® +[ +__út +] = ( +__Ëá +->__val[__cnt] \ + +85 & +__right +-> +__v® +[ +__út +]); \ + +86 0; })) + + ) + +87  + #__sigÜ£t +( +de¡ +, +Ëá +, +right +) \ + +88 ( + `__ex‹nsiÚ__ + ({  +__út + = +_SIGSET_NWORDS +; \ + +89 +sig£t_t + * +__de¡ + = ( +de¡ +); \ + +90 cÚ¡ +sig£t_t + * +__Ëá + = ( +Ëá +); \ + +91 cÚ¡ +sig£t_t + * +__right + = ( +right +); \ + +92 -- +__út + >= 0) \ + +93 +__de¡ +-> +__v® +[ +__út +] = ( +__Ëá +->__val[__cnt] \ + +94 | +__right +-> +__v® +[ +__út +]); \ + +95 0; })) + + ) + +102  +__sigismemb” + (cÚ¡ +__sig£t_t + *, ); + +103  +__sigadd£t + ( +__sig£t_t + *, ); + +104  +__sigd–£t + ( +__sig£t_t + *, ); + +106 #ifdeà +__USE_EXTERN_INLINES + + +107  + #__SIGSETFN +( +NAME +, +BODY +, +CONST +) \ + +108 +_EXTERN_INLINE + \ + +109 + `NAME + ( +CONST + +__sig£t_t + * +__£t +,  +__sig +) \ + +111  +__mask + = + `__sigmask + ( +__sig +); \ + +112  +__wÜd + = + `__sigwÜd + ( +__sig +); \ + +113  +BODY +; \ + +114 } + + ) + +116 +__SIGSETFN + ( +__sigismemb” +, ( +__£t +-> +__v® +[ +__wÜd +] & +__mask +) ? 1 : 0, const) + +117 +__SIGSETFN + ( +__sigadd£t +, (( +__£t +-> +__v® +[ +__wÜd +] |ð +__mask +), 0), ) + +118 +__SIGSETFN + ( +__sigd–£t +, (( +__£t +-> +__v® +[ +__wÜd +] &ð~ +__mask +), 0), ) + +120 #undeà +__SIGSETFN + + + @/usr/include/bits/sigstack.h + +19 #iâdeà +_SIGNAL_H + + +25  + ssig¡ack + + +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  + ssig®t¡ack + + +51 * + mss_¥ +; + +52  + mss_æags +; + +53 +size_t + + mss_size +; + +54 } + t¡ack_t +; + + @/usr/include/bits/sigthread.h + +19 #iâdeà +_BITS_SIGTHREAD_H + + +20  + #_BITS_SIGTHREAD_H + 1 + + ) + +22 #ià! +defšed + +_SIGNAL_H + && !defšed +_PTHREAD_H + + +30  + $±h»ad_sigmask + ( +__how +, + +31 cÚ¡ +__sig£t_t + * +__»¡riù + +__Ãwmask +, + +32 +__sig£t_t + * +__»¡riù + +__Þdmask +) +__THROW +; + +35  + $±h»ad_kžl + ( +±h»ad_t + +__th»adid +,  +__signo +è +__THROW +; + +37 #ifdeà +__USE_GNU + + +39  + $±h»ad_sigqueue + ( +±h»ad_t + +__th»adid +,  +__signo +, + +40 cÚ¡  +sigv® + +__v®ue +è +__THROW +; + + @/usr/include/bits/socket.h + +19 #iâdeà +__BITS_SOCKET_H + + +20  + #__BITS_SOCKET_H + + + ) + +22 #iâdeà +_SYS_SOCKET_H + + +26  + #__Ãed_size_t + + + ) + +27  + ~<¡ddef.h +> + +29  + ~ + +32 #iâdeà +__sockËn_t_defšed + + +33  +__sockËn_t + + tsockËn_t +; + +34  + #__sockËn_t_defšed + + + ) + +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_DECÃt + 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_DECÃt + +PF_DECÃt + + + ) + +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§_d©a +[14]; + +162  + #__ss_®igÁy³ +  + + ) + +163  + #_SS_PADSIZE + \ + +164 ( +_SS_SIZE + - +__SOCKADDR_COMMON_SIZE + -  ( +__ss_®igÁy³ +)) + + ) + +166  + ssockaddr_¡Üage + + +168 +__SOCKADDR_COMMON + ( +ss_ +); + +169  + m__ss_·ddšg +[ +_SS_PADSIZE +]; + +170 +__ss_®igÁy³ + + 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 +sockËn_t + + mmsg_Çm–’ +; + +233  +iovec + * + mmsg_iov +; + +234 +size_t + + mmsg_iovËn +; + +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à(! +defšed + +__STRICT_ANSI__ + && +__GNUC__ + >ð2è|| +__STDC_VERSION__ + >= 199901L + +256 +__ex‹nsiÚ__ +  +__cmsg_d©a + + m__æex¬r +; + +261 #ià(! +defšed + +__STRICT_ANSI__ + && +__GNUC__ + >ð2è|| +__STDC_VERSION__ + >= 199901L + +262  + #CMSG_DATA +( +cmsg +è((cmsg)-> +__cmsg_d©a +) + + ) + +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 #iâdeà +_EXTERN_INLINE + + +280  + #_EXTERN_INLINE + +__ex‹º_šlše + + + ) + +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  + suüed + + +317 +pid_t + + mpid +; + +318 +uid_t + + muid +; + +319 +gid_t + + mgid +; + +324 #iâdeà +__USE_MISC + + +325 #iâdeà +FIOGETOWN + + +326  + #__SYS_SOCKET_H_undef_FIOGETOWN + + + ) + +328 #iâdeà +FIOSETOWN + + +329  + #__SYS_SOCKET_H_undef_FIOSETOWN + + + ) + +331 #iâdeà +SIOCATMARK + + +332  + #__SYS_SOCKET_H_undef_SIOCATMARK + + + ) + +334 #iâdeà +SIOCGPGRP + + +335  + #__SYS_SOCKET_H_undef_SIOCGPGRP + + + ) + +337 #iâdeà +SIOCGSTAMP + + +338  + #__SYS_SOCKET_H_undef_SIOCGSTAMP + + + ) + +340 #iâdeà +SIOCGSTAMPNS + + +341  + #__SYS_SOCKET_H_undef_SIOCGSTAMPNS + + + ) + +343 #iâdeà +SIOCSPGRP + + +344  + #__SYS_SOCKET_H_undef_SIOCSPGRP + + + ) + +349  + ~ + +351 #iâdeà +__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  + slšg” + + +385  + ml_Úoff +; + +386  + ml_lšg” +; + + @/usr/include/bits/socket2.h + +19 #iâdeà +_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_w¬n +, + +28 ( +__fd +, * +__buf +, +size_t + +__n +, size_ˆ +__buæ’ +, + +29  +__æags +), +__»cv_chk +) + +30 +__w¬Ç‰r + ("recv called with bigger†engthhan size of destination " + +33 +__fÜtify_funùiÚ + +ssize_t + + +34 + $»cv + ( +__fd +, * +__buf +, +size_t + +__n +,  +__æags +) + +36 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +38 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +39  + `__»cv_chk + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__æags +); + +41 ià( +__n + > + `__bos0 + ( +__buf +)) + +42  + `__»cv_chk_w¬n + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__æags +); + +44  + `__»cv_®Ÿs + ( +__fd +, +__buf +, +__n +, +__æags +); + +45 + } +} + +47 +ssize_t + +__»cväom_chk + ( +__fd +, * +__»¡riù + +__buf +, +size_t + +__n +, + +48 +size_t + +__buæ’ +,  +__æags +, + +49 +__SOCKADDR_ARG + +__addr +, + +50 +sockËn_t + * +__»¡riù + +__addr_Ën +); + +51 +ssize_t + +__REDIRECT + ( +__»cväom_®Ÿs +, + +52 ( +__fd +, * +__»¡riù + +__buf +, +size_t + +__n +, + +53  +__æags +, +__SOCKADDR_ARG + +__addr +, + +54 +sockËn_t + * +__»¡riù + +__addr_Ën +), +»cväom +); + +55 +ssize_t + +__REDIRECT + ( +__»cväom_chk_w¬n +, + +56 ( +__fd +, * +__»¡riù + +__buf +, +size_t + +__n +, + +57 +size_t + +__buæ’ +,  +__æags +, + +58 +__SOCKADDR_ARG + +__addr +, + +59 +sockËn_t + * +__»¡riù + +__addr_Ën +), +__»cväom_chk +) + +60 +__w¬Ç‰r + ("recvfrom called with bigger†engthhan size of " + +63 +__fÜtify_funùiÚ + +ssize_t + + +64 + $»cväom + ( +__fd +, * +__»¡riù + +__buf +, +size_t + +__n +,  +__æags +, + +65 +__SOCKADDR_ARG + +__addr +, +sockËn_t + * +__»¡riù + +__addr_Ën +) + +67 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +69 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +70  + `__»cväom_chk + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__æags +, + +71 +__addr +, +__addr_Ën +); + +72 ià( +__n + > + `__bos0 + ( +__buf +)) + +73  + `__»cväom_chk_w¬n + ( +__fd +, +__buf +, +__n +, + `__bos0 + (__buf), +__æags +, + +74 +__addr +, +__addr_Ën +); + +76  + `__»cväom_®Ÿs + ( +__fd +, +__buf +, +__n +, +__æags +, +__addr +, +__addr_Ën +); + +77 + } +} + + @/usr/include/bits/stat.h + +18 #ià! +defšed + +_SYS_STAT_H + && !defšed +_FCNTL_H + + +22 #iâdeà +_BITS_STAT_H + + +23  + #_BITS_STAT_H + 1 + + ) + +26 #iâdeà +__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 #iâdeà +__x86_64__ + + +50  + m__·d1 +; + +52 #ià +defšed + +__x86_64__ + || !defšed +__USE_FILE_OFFSET64 + + +53 +__šo_t + + m¡_šo +; + +55 +__šo_t + + m__¡_šo +; + +57 #iâdeà +__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 #iâdeà +__x86_64__ + + +71  + m__·d2 +; + +73 #ià +defšed + +__x86_64__ + || !defšed +__USE_FILE_OFFSET64 + + +74 +__off_t + + m¡_size +; + +76 +__off64_t + + m¡_size +; + +78 +__blksize_t + + m¡_blksize +; + +79 #ià +defšed + +__x86_64__ + || !defšed +__USE_FILE_OFFSET64 + + +80 +__blkút_t + + m¡_blocks +; + +82 +__blkút64_t + + m¡_blocks +; + +84 #ifdeà +__USE_XOPEN2K8 + + +91  +time¥ec + + m¡_©im +; + +92  +time¥ec + + m¡_mtim +; + +93  +time¥ec + + m¡_ùim +; + +94  + #¡_©ime + +¡_©im +. +tv_£c + + + ) + +95  + #¡_mtime + +¡_mtim +. +tv_£c + + + ) + +96  + #¡_ùime + +¡_ùim +. +tv_£c + + + ) + +98 +__time_t + + m¡_©ime +; + +99 +__sysÿÎ_ulÚg_t + + m¡_©im’£c +; + +100 +__time_t + + m¡_mtime +; + +101 +__sysÿÎ_ulÚg_t + + m¡_mtim’£c +; + +102 +__time_t + + m¡_ùime +; + +103 +__sysÿÎ_ulÚg_t + + m¡_ùim’£c +; + +105 #ifdeà +__x86_64__ + + +106 +__sysÿÎ_¦Úg_t + + m__glibc_»£rved +[3]; + +108 #iâdeà +__USE_FILE_OFFSET64 + + +109  + m__glibc_»£rved4 +; + +110  + m__glibc_»£rved5 +; + +112 +__šo64_t + + m¡_šo +; + +117 #ifdeà +__USE_LARGEFILE64 + + +119  + s¡©64 + + +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 +__blkút64_t + + m¡_blocks +; + +145 #ifdeà +__USE_XOPEN2K8 + + +152  +time¥ec + + m¡_©im +; + +153  +time¥ec + + m¡_mtim +; + +154  +time¥ec + + m¡_ùim +; + +156 +__time_t + + m¡_©ime +; + +157 +__sysÿÎ_ulÚg_t + + m¡_©im’£c +; + +158 +__time_t + + m¡_mtime +; + +159 +__sysÿÎ_ulÚg_t + + m¡_mtim’£c +; + +160 +__time_t + + m¡_ùime +; + +161 +__sysÿÎ_ulÚg_t + + m¡_ùim’£c +; + +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 #iâdeà +_STDIO_H + + +23 +__BEGIN_NAMESPACE_STD + + +24 + $__LDBL_REDIR_DECL + ( +årštf +) + +25 + $__LDBL_REDIR_DECL + ( +´štf +) + +26 + $__LDBL_REDIR_DECL + ( +¥rštf +) + +27 + $__LDBL_REDIR_DECL + ( +vårštf +) + +28 + $__LDBL_REDIR_DECL + ( +v´štf +) + +29 + $__LDBL_REDIR_DECL + ( +v¥rštf +) + +30 #ià +defšed + +__USE_ISOC99 + && !defšed +__USE_GNU + \ + +31 && ! +defšed + +__REDIRECT + \ + +32 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +33 + $__LDBL_REDIR1_DECL + ( +fsÿnf +, +__Ædbl___isoc99_fsÿnf +) + +34 + $__LDBL_REDIR1_DECL + ( +sÿnf +, +__Ædbl___isoc99_sÿnf +) + +35 + $__LDBL_REDIR1_DECL + ( +ssÿnf +, +__Ædbl___isoc99_ssÿnf +) + +37 + $__LDBL_REDIR_DECL + ( +fsÿnf +) + +38 + $__LDBL_REDIR_DECL + ( +sÿnf +) + +39 + $__LDBL_REDIR_DECL + ( +ssÿnf +) + +41 +__END_NAMESPACE_STD + + +43 #ià +defšed + +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +44 +__BEGIN_NAMESPACE_C99 + + +45 + $__LDBL_REDIR_DECL + ( +¢´štf +) + +46 + $__LDBL_REDIR_DECL + ( +v¢´štf +) + +47 +__END_NAMESPACE_C99 + + +50 #ifdef +__USE_ISOC99 + + +51 +__BEGIN_NAMESPACE_C99 + + +52 #ià! +defšed + +__USE_GNU + && !defšed +__REDIRECT + \ + +53 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +54 + $__LDBL_REDIR1_DECL + ( +vfsÿnf +, +__Ædbl___isoc99_vfsÿnf +) + +55 + $__LDBL_REDIR1_DECL + ( +vsÿnf +, +__Ædbl___isoc99_vsÿnf +) + +56 + $__LDBL_REDIR1_DECL + ( +vssÿnf +, +__Ædbl___isoc99_vssÿnf +) + +58 + $__LDBL_REDIR_DECL + ( +vfsÿnf +) + +59 + $__LDBL_REDIR_DECL + ( +vssÿnf +) + +60 + $__LDBL_REDIR_DECL + ( +vsÿnf +) + +62 +__END_NAMESPACE_C99 + + +65 #ifdeà +__USE_XOPEN2K8 + + +66 + $__LDBL_REDIR_DECL + ( +vd´štf +) + +67 + $__LDBL_REDIR_DECL + ( +d´štf +) + +70 #ifdeà +__USE_GNU + + +71 + $__LDBL_REDIR_DECL + ( +va¥rštf +) + +72 + $__LDBL_REDIR_DECL + ( +__a¥rštf +) + +73 + $__LDBL_REDIR_DECL + ( +a¥rštf +) + +74 + $__LDBL_REDIR_DECL + ( +ob¡ack_´štf +) + +75 + $__LDBL_REDIR_DECL + ( +ob¡ack_v´štf +) + +78 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +79 + $__LDBL_REDIR_DECL + ( +__¥rštf_chk +) + +80 + $__LDBL_REDIR_DECL + ( +__v¥rštf_chk +) + +81 #ià +defšed + +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +82 + $__LDBL_REDIR_DECL + ( +__¢´štf_chk +) + +83 + $__LDBL_REDIR_DECL + ( +__v¢´štf_chk +) + +85 #ià +__USE_FORTIFY_LEVEL + > 1 + +86 + $__LDBL_REDIR_DECL + ( +__årštf_chk +) + +87 + $__LDBL_REDIR_DECL + ( +__´štf_chk +) + +88 + $__LDBL_REDIR_DECL + ( +__vårštf_chk +) + +89 + $__LDBL_REDIR_DECL + ( +__v´štf_chk +) + +90 #ifdeà +__USE_XOPEN2K8 + + +91 + $__LDBL_REDIR_DECL + ( +__d´štf_chk +) + +92 + $__LDBL_REDIR_DECL + ( +__vd´štf_chk +) + +94 #ifdeà +__USE_GNU + + +95 + $__LDBL_REDIR_DECL + ( +__a¥rštf_chk +) + +96 + $__LDBL_REDIR_DECL + ( +__va¥rštf_chk +) + +97 + $__LDBL_REDIR_DECL + ( +__ob¡ack_´štf_chk +) + +98 + $__LDBL_REDIR_DECL + ( +__ob¡ack_v´štf_chk +) + + @/usr/include/bits/stdio.h + +19 #iâdeà +_STDIO_H + + +23 #iâdeà +__ex‹º_šlše + + +24  + #__STDIO_INLINE + +šlše + + + ) + +26  + #__STDIO_INLINE + +__ex‹º_šlše + + + ) + +30 #ifdeà +__USE_EXTERN_INLINES + + +33 #ià!( +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ +) + +35 +__STDIO_INLINE +  + +36 + $v´štf + (cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__¬g +) + +38  + `vårštf + ( +¡dout +, +__fmt +, +__¬g +); + +39 + } +} + +43 +__STDIO_INLINE +  + +44 + $g‘ch¬ + () + +46  + `_IO_g‘c + ( +¡dš +); + +47 + } +} + +50 #ifdeà +__USE_MISC + + +52 +__STDIO_INLINE +  + +53 + $fg‘c_uÆocked + ( +FILE + * +__å +) + +55  + `_IO_g‘c_uÆocked + ( +__å +); + +56 + } +} + +60 #ifdeà +__USE_POSIX + + +62 +__STDIO_INLINE +  + +63 + $g‘c_uÆocked + ( +FILE + * +__å +) + +65  + `_IO_g‘c_uÆocked + ( +__å +); + +66 + } +} + +69 +__STDIO_INLINE +  + +70 + $g‘ch¬_uÆocked + () + +72  + `_IO_g‘c_uÆocked + ( +¡dš +); + +73 + } +} + +78 +__STDIO_INLINE +  + +79 + $putch¬ + ( +__c +) + +81  + `_IO_putc + ( +__c +, +¡dout +); + +82 + } +} + +85 #ifdeà +__USE_MISC + + +87 +__STDIO_INLINE +  + +88 + $åutc_uÆocked + ( +__c +, +FILE + * +__¡»am +) + +90  + `_IO_putc_uÆocked + ( +__c +, +__¡»am +); + +91 + } +} + +95 #ifdeà +__USE_POSIX + + +97 +__STDIO_INLINE +  + +98 + $putc_uÆocked + ( +__c +, +FILE + * +__¡»am +) + +100  + `_IO_putc_uÆocked + ( +__c +, +__¡»am +); + +101 + } +} + +104 +__STDIO_INLINE +  + +105 + $putch¬_uÆocked + ( +__c +) + +107  + `_IO_putc_uÆocked + ( +__c +, +¡dout +); + +108 + } +} + +112 #ifdef +__USE_GNU + + +114 +__STDIO_INLINE + +_IO_ssize_t + + +115 + $g‘lše + (** +__lš•Œ +, +size_t + * +__n +, +FILE + * +__¡»am +) + +117  + `__g‘d–im + ( +__lš•Œ +, +__n +, '\n', +__¡»am +); + +118 + } +} + +122 #ifdeà +__USE_MISC + + +124 +__STDIO_INLINE +  + +125 +__NTH + ( + $ãof_uÆocked + ( +FILE + * +__¡»am +)) + +127  + `_IO_ãof_uÆocked + ( +__¡»am +); + +128 + } +} + +131 +__STDIO_INLINE +  + +132 +__NTH + ( + $ã¼Ü_uÆocked + ( +FILE + * +__¡»am +)) + +134  + `_IO_ã¼Ü_uÆocked + ( +__¡»am +); + +135 + } +} + +141 #ià +defšed + +__USE_MISC + && defšed +__GNUC__ + && defšed +__OPTIMIZE__ + \ + +142 && ! +defšed + + g__ýlu¥lus + + +144  + #ä—d_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +145 ( + `__ex‹nsiÚ__ + (( + `__bužtš_cÚ¡ªt_p + ( +size +è&& __bužtš_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_g‘c_uÆocked + ( +__¡»am +); \ + +155 ià( +__c + =ð +EOF +) \ + +157 * +__±r +++ = +__c +; \ + +159 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +160 / ( +size_t +è( +size +); }) \ + +161 : ((( + `__bužtš_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +162 || ( + `__bužtš_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +164 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +165 (è( +n +), ( +size_t +) 0) \ + +166 : + `ä—d_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +168  + #fwr™e_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +169 ( + `__ex‹nsiÚ__ + (( + `__bužtš_cÚ¡ªt_p + ( +size +è&& __bužtš_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_uÆocked + (* +__±r +++, +__¡»am +è=ð +EOF +) \ + +179 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +180 / ( +size_t +è( +size +); }) \ + +181 : ((( + `__bužtš_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +182 || ( + `__bužtš_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +184 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +185 (è( +n +), ( +size_t +) 0) \ + +186 : + `fwr™e_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +190 #undeà +__STDIO_INLINE + + + @/usr/include/bits/stdio2.h + +19 #iâdeà +_STDIO_H + + +23  + $__¥rštf_chk + (* +__»¡riù + +__s +,  +__æag +, +size_t + +__¦’ +, + +24 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +25  + $__v¥rštf_chk + (* +__»¡riù + +__s +,  +__æag +, +size_t + +__¦’ +, + +26 cÚ¡ * +__»¡riù + +__fÜm© +, + +27 +_G_va_li¡ + +__­ +è +__THROW +; + +29 #ifdeà +__va_¬g_·ck + + +30 +__fÜtify_funùiÚ +  + +31 + `__NTH + ( + $¥rštf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fmt +, ...)) + +33  + `__bužtš___¥rštf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +34 + `__bos + ( +__s +), +__fmt +, + `__va_¬g_·ck + ()); + +35 + } +} + +36 #–ià! +defšed + +__ýlu¥lus + + +37  + #¥rštf +( +¡r +, ...) \ + +38 + `__bužtš___¥rštf_chk + ( +¡r +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +39 +__VA_ARGS__ +) + + ) + +42 +__fÜtify_funùiÚ +  + +43 +__NTH + ( + $v¥rštf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fmt +, + +44 +_G_va_li¡ + +__­ +)) + +46  + `__bužtš___v¥rštf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +47 + `__bos + ( +__s +), +__fmt +, +__­ +); + +48 + } +} + +50 #ià +defšed + +__USE_ISOC99 + || defšed +__USE_UNIX98 + + +52  + $__¢´štf_chk + (* +__»¡riù + +__s +, +size_t + +__n +,  +__æag +, + +53 +size_t + +__¦’ +, cÚ¡ * +__»¡riù + +__fÜm© +, + +54 ...è +__THROW +; + +55  + $__v¢´štf_chk + (* +__»¡riù + +__s +, +size_t + +__n +,  +__æag +, + +56 +size_t + +__¦’ +, cÚ¡ * +__»¡riù + +__fÜm© +, + +57 +_G_va_li¡ + +__­ +è +__THROW +; + +59 #ifdeà +__va_¬g_·ck + + +60 +__fÜtify_funùiÚ +  + +61 + `__NTH + ( + $¢´štf + (* +__»¡riù + +__s +, +size_t + +__n +, + +62 cÚ¡ * +__»¡riù + +__fmt +, ...)) + +64  + `__bužtš___¢´štf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +65 + `__bos + ( +__s +), +__fmt +, + `__va_¬g_·ck + ()); + +66 + } +} + +67 #–ià! +defšed + +__ýlu¥lus + + +68  + #¢´štf +( +¡r +, +Ën +, ...) \ + +69 + `__bužtš___¢´štf_chk + ( +¡r +, +Ën +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +70 +__VA_ARGS__ +) + + ) + +73 +__fÜtify_funùiÚ +  + +74 +__NTH + ( + $v¢´štf + (* +__»¡riù + +__s +, +size_t + +__n +, + +75 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__­ +)) + +77  + `__bužtš___v¢´štf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +78 + `__bos + ( +__s +), +__fmt +, +__­ +); + +79 + } +} + +83 #ià +__USE_FORTIFY_LEVEL + > 1 + +85  +__årštf_chk + ( +FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +86 cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +87  +__´štf_chk + ( +__æag +, cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +88  +__vårštf_chk + ( +FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +89 cÚ¡ * +__»¡riù + +__fÜm© +, +_G_va_li¡ + +__­ +); + +90  +__v´štf_chk + ( +__æag +, cÚ¡ * +__»¡riù + +__fÜm© +, + +91 +_G_va_li¡ + +__­ +); + +93 #ifdeà +__va_¬g_·ck + + +94 +__fÜtify_funùiÚ +  + +95 + $årštf + ( +FILE + * +__»¡riù + +__¡»am +, cÚ¡ *__»¡riù +__fmt +, ...) + +97  + `__årštf_chk + ( +__¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +98 + `__va_¬g_·ck + ()); + +99 + } +} + +101 +__fÜtify_funùiÚ +  + +102 + $´štf + (cÚ¡ * +__»¡riù + +__fmt +, ...) + +104  + `__´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + `__va_¬g_·ck + ()); + +105 + } +} + +106 #–ià! +defšed + +__ýlu¥lus + + +107  + #´štf +(...) \ + +108 + `__´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +109  + #årštf +( +¡»am +, ...) \ + +110 + `__årštf_chk + ( +¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +113 +__fÜtify_funùiÚ +  + +114 + $v´štf + (cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__­ +) + +116 #ifdeà +__USE_EXTERN_INLINES + + +117  + `__vårštf_chk + ( +¡dout +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +119  + `__v´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +121 + } +} + +123 +__fÜtify_funùiÚ +  + +124 + $vårštf + ( +FILE + * +__»¡riù + +__¡»am +, + +125 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__­ +) + +127  + `__vårštf_chk + ( +__¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +128 + } +} + +130 #ifdeà +__USE_XOPEN2K8 + + +131  + $__d´štf_chk + ( +__fd +,  +__æag +, cÚ¡ * +__»¡riù + +__fmt +, + +132 ...è + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 4))); + +133  + $__vd´štf_chk + ( +__fd +,  +__æag +, + +134 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__¬g +) + +135 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 0))); + +137 #ifdeà +__va_¬g_·ck + + +138 +__fÜtify_funùiÚ +  + +139 + $d´štf + ( +__fd +, cÚ¡ * +__»¡riù + +__fmt +, ...) + +141  + `__d´štf_chk + ( +__fd +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +142 + `__va_¬g_·ck + ()); + +143 + } +} + +144 #–ià! +defšed + +__ýlu¥lus + + +145  + #d´štf +( +fd +, ...) \ + +146 + `__d´štf_chk + ( +fd +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +149 +__fÜtify_funùiÚ +  + +150 + $vd´štf + ( +__fd +, cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__­ +) + +152  + `__vd´štf_chk + ( +__fd +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +153 + } +} + +156 #ifdeà +__USE_GNU + + +158  + $__a¥rštf_chk + (** +__»¡riù + +__±r +,  +__æag +, + +159 cÚ¡ * +__»¡riù + +__fmt +, ...) + +160 +__THROW + + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__´štf__ +, 3, 4))è +__wur +; + +161  + $__va¥rštf_chk + (** +__»¡riù + +__±r +,  +__æag +, + +162 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__¬g +) + +163 +__THROW + + `__©Œibu‹__ + (( + $__fÜm©__ + ( +__´štf__ +, 3, 0))è +__wur +; + +164  + $__ob¡ack_´štf_chk + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +165  +__æag +, cÚ¡ * +__»¡riù + +__fÜm© +, + +167 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 4))); + +168  + $__ob¡ack_v´štf_chk + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +169  +__æag +, + +170 cÚ¡ * +__»¡riù + +__fÜm© +, + +171 +_G_va_li¡ + +__¬gs +) + +172 +__THROW + + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__´štf__ +, 3, 0))); + +174 #ifdeà +__va_¬g_·ck + + +175 +__fÜtify_funùiÚ +  + +176 + `__NTH + ( + $a¥rštf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, ...)) + +178  + `__a¥rštf_chk + ( +__±r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +179 + `__va_¬g_·ck + ()); + +180 + } +} + +182 +__fÜtify_funùiÚ +  + +183 +__NTH + ( + $__a¥rštf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, + +186  + `__a¥rštf_chk + ( +__±r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +187 + `__va_¬g_·ck + ()); + +188 + } +} + +190 +__fÜtify_funùiÚ +  + +191 +__NTH + ( + $ob¡ack_´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +192 cÚ¡ * +__»¡riù + +__fmt +, ...)) + +194  + `__ob¡ack_´štf_chk + ( +__ob¡ack +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +195 + `__va_¬g_·ck + ()); + +196 + } +} + +197 #–ià! +defšed + +__ýlu¥lus + + +198  + #a¥rštf +( +±r +, ...) \ + +199 + `__a¥rštf_chk + ( +±r +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +200  + #__a¥rštf +( +±r +, ...) \ + +201 + `__a¥rštf_chk + ( +±r +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +202  + #ob¡ack_´štf +( +ob¡ack +, ...) \ + +203 + `__ob¡ack_´štf_chk + ( +ob¡ack +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +206 +__fÜtify_funùiÚ +  + +207 +__NTH + ( + $va¥rštf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, + +208 +_G_va_li¡ + +__­ +)) + +210  + `__va¥rštf_chk + ( +__±r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +211 + } +} + +213 +__fÜtify_funùiÚ +  + +214 +__NTH + ( + $ob¡ack_v´štf + ( +ob¡ack + * +__»¡riù + +__ob¡ack +, + +215 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__­ +)) + +217  + `__ob¡ack_v´štf_chk + ( +__ob¡ack +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +218 +__­ +); + +219 + } +} + +225 #ià! +defšed + +__USE_ISOC11 + \ + +226 || ( +defšed + + g__ýlu¥lus + && __ýlu¥lu <ð201103L && !defšed +__USE_GNU +) + +227 * + $__g‘s_chk + (* +__¡r +, +size_t +è +__wur +; + +228 * + `__REDIRECT + ( +__g‘s_w¬n +, (* +__¡r +), +g‘s +) + +229 +__wur + + `__w¬Ç‰r + ("please use fgets or getline instead, gets can't " + +232 +__fÜtify_funùiÚ + +__wur + * + +233 + $g‘s + (* +__¡r +) + +235 ià( + `__bos + ( +__¡r +è!ð( +size_t +) -1) + +236  + `__g‘s_chk + ( +__¡r +, + `__bos + (__str)); + +237  + `__g‘s_w¬n + ( +__¡r +); + +238 + } +} + +241 * + $__fg‘s_chk + (* +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +242 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +243 * + `__REDIRECT + ( +__fg‘s_®Ÿs +, + +244 (* +__»¡riù + +__s +,  +__n +, + +245 +FILE + * +__»¡riù + +__¡»am +), +fg‘s +è +__wur +; + +246 * + `__REDIRECT + ( +__fg‘s_chk_w¬n +, + +247 (* +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +248 +FILE + * +__»¡riù + +__¡»am +), +__fg‘s_chk +) + +249 +__wur + + `__w¬Ç‰r + ("fgets called with bigger sizehan†ength " + +252 +__fÜtify_funùiÚ + +__wur + * + +253 + $fg‘s + (* +__»¡riù + +__s +,  +__n +, +FILE + *__»¡riù +__¡»am +) + +255 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +257 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +258  + `__fg‘s_chk + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +260 ià(( +size_t +è +__n + > + `__bos + ( +__s +)) + +261  + `__fg‘s_chk_w¬n + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +263  + `__fg‘s_®Ÿ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_w¬n +, + +274 (* +__»¡riù + +__±r +, +size_t + +__±¾’ +, + +275 +size_t + +__size +, size_ˆ +__n +, + +276 +FILE + * +__»¡riù + +__¡»am +), + +277 +__ä—d_chk +) + +278 +__wur + + `__w¬Ç‰r + ("fread called with bigger size *‚membhan†ength " + +281 +__fÜtify_funùiÚ + +__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à(! + `__bužtš_cÚ¡ªt_p + ( +__size +) + +288 || ! + `__bužtš_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_w¬n + ( +__±r +, + `__bos0 + (__±r), +__size +, +__n +, +__¡»am +); + +295  + `__ä—d_®Ÿs + ( +__±r +, +__size +, +__n +, +__¡»am +); + +296 + } +} + +298 #ifdeà +__USE_GNU + + +299 * + $__fg‘s_uÆocked_chk + (* +__»¡riù + +__s +, +size_t + +__size +, + +300  +__n +, +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +301 * + `__REDIRECT + ( +__fg‘s_uÆocked_®Ÿs +, + +302 (* +__»¡riù + +__s +,  +__n +, + +303 +FILE + * +__»¡riù + +__¡»am +), +fg‘s_uÆocked +è +__wur +; + +304 * + `__REDIRECT + ( +__fg‘s_uÆocked_chk_w¬n +, + +305 (* +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +306 +FILE + * +__»¡riù + +__¡»am +), +__fg‘s_uÆocked_chk +) + +307 +__wur + + `__w¬Ç‰r + ("fgets_unlocked called with bigger sizehan†ength " + +310 +__fÜtify_funùiÚ + +__wur + * + +311 + $fg‘s_uÆocked + (* +__»¡riù + +__s +,  +__n +, +FILE + *__»¡riù +__¡»am +) + +313 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +315 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +316  + `__fg‘s_uÆocked_chk + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +318 ià(( +size_t +è +__n + > + `__bos + ( +__s +)) + +319  + `__fg‘s_uÆocked_chk_w¬n + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +321  + `__fg‘s_uÆocked_®Ÿs + ( +__s +, +__n +, +__¡»am +); + +322 + } +} + +325 #ifdeà +__USE_MISC + + +326 #undeà +ä—d_uÆocked + + +327 +size_t + + $__ä—d_uÆocked_chk + (* +__»¡riù + +__±r +, +size_t + +__±¾’ +, + +328 +size_t + +__size +, size_ˆ +__n +, + +329 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +330 +size_t + + `__REDIRECT + ( +__ä—d_uÆocked_®Ÿs +, + +331 (* +__»¡riù + +__±r +, +size_t + +__size +, + +332 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +), + +333 +ä—d_uÆocked +è +__wur +; + +334 +size_t + + `__REDIRECT + ( +__ä—d_uÆocked_chk_w¬n +, + +335 (* +__»¡riù + +__±r +, +size_t + +__±¾’ +, + +336 +size_t + +__size +, size_ˆ +__n +, + +337 +FILE + * +__»¡riù + +__¡»am +), + +338 +__ä—d_uÆocked_chk +) + +339 +__wur + + `__w¬Ç‰r + ("fread_unlocked called with bigger size *‚membhan " + +342 +__fÜtify_funùiÚ + +__wur + +size_t + + +343 + $ä—d_uÆocked + (* +__»¡riù + +__±r +, +size_t + +__size +, size_ˆ +__n +, + +344 +FILE + * +__»¡riù + +__¡»am +) + +346 ià( + `__bos0 + ( +__±r +è!ð( +size_t +) -1) + +348 ià(! + `__bužtš_cÚ¡ªt_p + ( +__size +) + +349 || ! + `__bužtš_cÚ¡ªt_p + ( +__n +) + +350 || ( +__size + | +__n +è>ð((( +size_t +) 1) << (8 *  (size_t) / 2))) + +351  + `__ä—d_uÆocked_chk + ( +__±r +, + `__bos0 + (__±r), +__size +, +__n +, + +352 +__¡»am +); + +354 ià( +__size + * +__n + > + `__bos0 + ( +__±r +)) + +355  + `__ä—d_uÆocked_chk_w¬n + ( +__±r +, + `__bos0 + (__±r), +__size +, +__n +, + +356 +__¡»am +); + +359 #ifdeà +__USE_EXTERN_INLINES + + +360 ià( + `__bužtš_cÚ¡ªt_p + ( +__size +) + +361 && + `__bužtš_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_g‘c_uÆocked + ( +__¡»am +); + +373 ià( +__c + =ð +EOF +) + +375 * +__ýŒ +++ = +__c +; + +377  ( +__ýŒ + - (*è +__±r +è/ +__size +; + +380  + `__ä—d_uÆocked_®Ÿs + ( +__±r +, +__size +, +__n +, +__¡»am +); + +381 + } +} + + @/usr/include/bits/stdio_lim.h + +18 #ià! +defšed + +_STDIO_H + && !defšed +__Ãed_FOPEN_MAX + && !defšed +__Ãed_IOV_MAX + + +22 #ifdeà +_STDIO_H + + +23  + #L_tm²am + 20 + + ) + +24  + #TMP_MAX + 238328 + + ) + +25  + #FILENAME_MAX + 4096 + + ) + +27 #ifdeà +__USE_POSIX + + +28  + #L_ù”mid + 9 + + ) + +29 #ià! +defšed + +__USE_XOPEN2K + || defšed +__USE_GNU + + +30  + #L_cu£rid + 9 + + ) + +35 #ià +defšed + +__Ãed_FOPEN_MAX + || defšed +_STDIO_H + + +36 #undeà +FOPEN_MAX + + +37  + #FOPEN_MAX + 16 + + ) + +40 #ià +defšed + +__Ãed_IOV_MAX + && !defšed +IOV_MAX + + +41  + #IOV_MAX + 1024 + + ) + + @/usr/include/bits/stdlib-bsearch.h + +19 +__ex‹º_šlše + * + +20 + $b£¬ch + (cÚ¡ * +__key +, cÚ¡ * +__ba£ +, +size_t + +__nmemb +, size_ˆ +__size +, + +21 +__com·r_â_t + +__com·r +) + +23 +size_t + +__l +, +__u +, +__idx +; + +24 cÚ¡ * +__p +; + +25  +__com·risÚ +; + +27 +__l + = 0; + +28 +__u + = +__nmemb +; + +29  +__l + < +__u +) + +31 +__idx + = ( +__l + + +__u +) / 2; + +32 +__p + = (*è(((cÚ¡ *è +__ba£ +è+ ( +__idx + * +__size +)); + +33 +__com·risÚ + = (* +__com·r +è( +__key +, +__p +); + +34 ià( +__com·risÚ + < 0) + +35 +__u + = +__idx +; + +36 ià( +__com·risÚ + > 0) + +37 +__l + = +__idx + + 1; + +39  (*è +__p +; + +42  +NULL +; + +43 + } +} + + @/usr/include/bits/stdlib-float.h + +19 #iâdeà +_STDLIB_H + + +23 #ifdeà +__USE_EXTERN_INLINES + + +24 +__BEGIN_NAMESPACE_STD + + +25 +__ex‹º_šlše +  + +26 +__NTH + ( + $©of + (cÚ¡ * +__Ō +)) + +28  + `¡¹od + ( +__Ō +, (**è +NULL +); + +29 + } +} + +30 + g__END_NAMESPACE_STD + + + @/usr/include/bits/stdlib-ldbl.h + +19 #iâdeà +_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 #iâdeà +_STDLIB_H + + +23 * + $__»®·th_chk + (cÚ¡ * +__»¡riù + +__Çme +, + +24 * +__»¡riù + +__»sÞved +, + +25 +size_t + +__»sÞvedËn +è +__THROW + +__wur +; + +26 * + `__REDIRECT_NTH + ( +__»®·th_®Ÿs +, + +27 (cÚ¡ * +__»¡riù + +__Çme +, + +28 * +__»¡riù + +__»sÞved +), +»®·th +è +__wur +; + +29 * + `__REDIRECT_NTH + ( +__»®·th_chk_w¬n +, + +30 (cÚ¡ * +__»¡riù + +__Çme +, + +31 * +__»¡riù + +__»sÞved +, + +32 +size_t + +__»sÞvedËn +), +__»®·th_chk +è +__wur + + +33 + `__w¬Ç‰r + ("second‡rgument of„ealpath must beƒither NULL or‡t " + +36 +__fÜtify_funùiÚ + +__wur + * + +37 + `__NTH + ( + $»®·th + (cÚ¡ * +__»¡riù + +__Çme +, *__»¡riù +__»sÞved +)) + +39 ià( + `__bos + ( +__»sÞved +è!ð( +size_t +) -1) + +41 #ià +defšed + +_LIBC_LIMITS_H_ + && defšed +PATH_MAX + + +42 ià( + `__bos + ( +__»sÞved +è< +PATH_MAX +) + +43  + `__»®·th_chk_w¬n + ( +__Çme +, +__»sÞved +, + `__bos + (__resolved)); + +45  + `__»®·th_chk + ( +__Çme +, +__»sÞved +, + `__bos + (__resolved)); + +48  + `__»®·th_®Ÿs + ( +__Çme +, +__»sÞved +); + +49 + } +} + +52  + $__±¢ame_r_chk + ( +__fd +, * +__buf +, +size_t + +__buæ’ +, + +53 +size_t + +__ėl +è +__THROW + + `__nÚnuÎ + ((2)); + +54  + `__REDIRECT_NTH + ( +__±¢ame_r_®Ÿs +, ( +__fd +, * +__buf +, + +55 +size_t + +__buæ’ +), +±¢ame_r +) + +56 + `__nÚnuÎ + ((2)); + +57  + `__REDIRECT_NTH + ( +__±¢ame_r_chk_w¬n +, + +58 ( +__fd +, * +__buf +, +size_t + +__buæ’ +, + +59 +size_t + +__ėl +), +__±¢ame_r_chk +) + +60 + `__nÚnuÎ + ((2)è + `__w¬Ç‰r + ("ptsname_r called with buflen biggerhan " + +63 +__fÜtify_funùiÚ +  + +64 + `__NTH + ( + $±¢ame_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +)) + +66 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +68 ià(! + `__bužtš_cÚ¡ªt_p + ( +__buæ’ +)) + +69  + `__±¢ame_r_chk + ( +__fd +, +__buf +, +__buæ’ +, + `__bos + (__buf)); + +70 ià( +__buæ’ + > + `__bos + ( +__buf +)) + +71  + `__±¢ame_r_chk_w¬n + ( +__fd +, +__buf +, +__buæ’ +, + `__bos + (__buf)); + +73  + `__±¢ame_r_®Ÿs + ( +__fd +, +__buf +, +__buæ’ +); + +74 + } +} + +77  + $__wùomb_chk + (* +__s +, +wch¬_t + +__wch¬ +, +size_t + +__buæ’ +) + +78 +__THROW + +__wur +; + +79  + `__REDIRECT_NTH + ( +__wùomb_®Ÿs +, (* +__s +, +wch¬_t + +__wch¬ +), + +80 +wùomb +è +__wur +; + +82 +__fÜtify_funùiÚ + +__wur +  + +83 + `__NTH + ( + $wùomb + (* +__s +, +wch¬_t + +__wch¬ +)) + +88  + #__STDLIB_MB_LEN_MAX + 16 + + ) + +89 #ià +defšed + +MB_LEN_MAX + && MB_LEN_MAX !ð +__STDLIB_MB_LEN_MAX + + +92 ià( + `__bos + ( +__s +è!ð( +size_t +è-1 && +__STDLIB_MB_LEN_MAX + > __bos (__s)) + +93  + `__wùomb_chk + ( +__s +, +__wch¬ +, + `__bos + (__s)); + +94  + `__wùomb_®Ÿs + ( +__s +, +__wch¬ +); + +95 + } +} + +98 +size_t + + $__mb¡owcs_chk + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +99 cÚ¡ * +__»¡riù + +__¤c +, + +100 +size_t + +__Ën +, size_ˆ +__d¡Ën +è +__THROW +; + +101 +size_t + + `__REDIRECT_NTH + ( +__mb¡owcs_®Ÿs +, + +102 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +103 cÚ¡ * +__»¡riù + +__¤c +, + +104 +size_t + +__Ën +), +mb¡owcs +); + +105 +size_t + + `__REDIRECT_NTH + ( +__mb¡owcs_chk_w¬n +, + +106 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +107 cÚ¡ * +__»¡riù + +__¤c +, + +108 +size_t + +__Ën +, size_ˆ +__d¡Ën +), +__mb¡owcs_chk +) + +109 + `__w¬Ç‰r + ("mbstowcs called with dst buffer smallerhan†en " + +112 +__fÜtify_funùiÚ + +size_t + + +113 + `__NTH + ( + $mb¡owcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, cÚ¡ *__»¡riù +__¤c +, + +114 +size_t + +__Ën +)) + +116 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +118 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +119  + `__mb¡owcs_chk + ( +__d¡ +, +__¤c +, +__Ën +, + +120 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +122 ià( +__Ën + > + `__bos + ( +__d¡ +è/  ( +wch¬_t +)) + +123  + `__mb¡owcs_chk_w¬n + ( +__d¡ +, +__¤c +, +__Ën +, + +124 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +126  + `__mb¡owcs_®Ÿs + ( +__d¡ +, +__¤c +, +__Ën +); + +127 + } +} + +130 +size_t + + $__wc¡ombs_chk + (* +__»¡riù + +__d¡ +, + +131 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +132 +size_t + +__Ën +, size_ˆ +__d¡Ën +è +__THROW +; + +133 +size_t + + `__REDIRECT_NTH + ( +__wc¡ombs_®Ÿs +, + +134 (* +__»¡riù + +__d¡ +, + +135 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +136 +size_t + +__Ën +), +wc¡ombs +); + +137 +size_t + + `__REDIRECT_NTH + ( +__wc¡ombs_chk_w¬n +, + +138 (* +__»¡riù + +__d¡ +, + +139 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +140 +size_t + +__Ën +, size_ˆ +__d¡Ën +), +__wc¡ombs_chk +) + +141 + `__w¬Ç‰r + ("wcstombs called with dst buffer smallerhan†en"); + +143 +__fÜtify_funùiÚ + +size_t + + +144 + `__NTH + ( + $wc¡ombs + (* +__»¡riù + +__d¡ +, cÚ¡ +wch¬_t + *__»¡riù +__¤c +, + +145 +size_t + +__Ën +)) + +147 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +149 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +150  + `__wc¡ombs_chk + ( +__d¡ +, +__¤c +, +__Ën +, + `__bos + (__dst)); + +151 ià( +__Ën + > + `__bos + ( +__d¡ +)) + +152  + `__wc¡ombs_chk_w¬n + ( +__d¡ +, +__¤c +, +__Ën +, + `__bos + (__dst)); + +154  + `__wc¡ombs_®Ÿs + ( +__d¡ +, +__¤c +, +__Ën +); + +155 + } +} + + @/usr/include/bits/string.h + +19 #iâdeà +_STRING_H + + +24  + #_STRING_INLINE_uÇligÃd + 1 + + ) + +27  + #_HAVE_STRING_ARCH_mempýy + 1 + + ) + +31 #ià! +defšed + +__x86_64__ + && (defšed +__i486__ + || defšed +__³Áium__ + \ + +32 || +defšed + + g__³Áium´o__ + || defšed + g__³Áium4__ + \ + +33 || +defšed + + g__nocÚa__ + || defšed + g__©om__ + \ + +34 || +defšed + + g__cÜe2__ + || defšed + g__cÜei7__ + \ + +35 || +defšed + + g__§ndybridge__ + || defšed + g__hasw–l__ + \ + +36 || +defšed + + g__bÚÃÎ__ + || defšed + g__sžv”mÚt__ + \ + +37 || +defšed + + g__k6__ + || defšed + g__geode__ + \ + +38 || +defšed + + g__k8__ + || defšed + g__©hlÚ__ + \ + +39 || +defšed + + g__amdçm10__ + || defšed + g__bdv”1__ + \ + +40 || +defšed + + g__bdv”2__ + || defšed + g__bdv”3__ + \ + +41 || +defšed + + g__bdv”4__ + || defšed + g__btv”1__ + \ + +42 || +defšed + + g__btv”2__ +) + +46 #ià! +defšed + +__NO_STRING_INLINES + && defšed +__USE_STRING_INLINES + \ + +47 && +defšed + + g__GNUC__ + && __GNUC__ >= 2 + +49 #iâdeà +__STRING_INLINE + + +50 #iâdeà +__ex‹º_šlše + + +51  + #__STRING_INLINE + +šlše + + + ) + +53  + #__STRING_INLINE + +__ex‹º_šlše + + + ) + +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_memýy + 1 + + ) + +70  + #memýy +( +de¡ +, +¤c +, +n +) \ + +71 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +72 ? + `__memýy_c + (( +de¡ +), ( +¤c +), ( +n +)) \ + +73 : + `__memýy_g + (( +de¡ +), ( +¤c +), ( +n +)))) + + ) + +74  + #__memýy_c +( +de¡ +, +¤c +, +n +) \ + +75 (( +n +) == 0 \ + +76 ? ( +de¡ +) \ + +77 : ((( +n +) % 4 == 0) \ + +78 ? + `__memýy_by4 + ( +de¡ +, +¤c +, +n +) \ + +79 : ((( +n +) % 2 == 0) \ + +80 ? + `__memýy_by2 + ( +de¡ +, +¤c +, +n +) \ + +81 : + `__memýy_g + ( +de¡ +, +¤c +, +n +)))) + + ) + +83 +__STRING_INLINE + * +__memýy_by4 + (* +__de¡ +, cÚ¡ * +__¤c +, + +84 +size_t + +__n +); + +86 +__STRING_INLINE + * + +87 + $__memýy_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 + * +__memýy_by2 + (* +__de¡ +, cÚ¡ * +__¤c +, + +106 +size_t + +__n +); + +108 +__STRING_INLINE + * + +109 + $__memýy_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 + * +__memýy_g + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__n +); + +134 +__STRING_INLINE + * + +135 + $__memýy_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +152 : "0" ( +__n +), "1" ( +__tmp +), "2" ( +__¤c +), + +153 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +) + +155  +__de¡ +; + +156 + } +} + +158  + #_HAVE_STRING_ARCH_memmove + 1 + + ) + +159 #iâdeà +_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +178 : "0" ( +__n +), "1" ( +__¤c +), "2" ( +__tmp +), + +179 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +)); + +181 +__asm__ + +__vÞ©že__ + + +187 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +188 "=m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__de¡ +) + +189 : "0" ( +__n +), "1" (__À+ (cÚ¡ *è +__¤c +), + +190 "2" ( +__n + + (*è +__tmp +), + +191 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__¤c +)); + +192  +__de¡ +; + +193 + } +} + +197  + #_HAVE_STRING_ARCH_memcmp + 1 + + ) + +198 #iâdeà +_FORCE_INLINES + + +199 #iâdeà +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s1 +), + +217 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s2 +) + +219  +__»s +; + +220 + } +} + +225  + #_HAVE_STRING_ARCH_mem£t + 1 + + ) + +226  + #_USE_STRING_ARCH_mem£t + 1 + + ) + +227  + #mem£t +( +s +, +c +, +n +) \ + +228 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +229 ? (( +n +) == 1 \ + +230 ? + `__mem£t_c1 + (( +s +), ( +c +)) \ + +231 : + `__mem£t_gc + (( +s +), ( +c +), ( +n +))) \ + +232 : ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +233 ? ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +234 ? + `__mem£t_cú + (( +s +), ( +c +), ( +n +)) \ + +235 : + `mem£t + (( +s +), ( +c +), ( +n +))) \ + +236 : ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +237 ? + `__mem£t_gú + (( +s +), ( +c +), ( +n +)) \ + +238 : + `mem£t + (( +s +), ( +c +), ( +n +)))))) + + ) + +240  + #__mem£t_c1 +( +s +, +c +è({ * +__s + = (s); \ + +241 *((*è +__s +èð(è( +c +); \ + +242 +__s +; }) + + ) + +244  + #__mem£t_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 + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +267 +__u +-> +__ui + = +__c +; \ + +268 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +270 +__u +-> +__ui + = +__c +; \ + +271 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +273 +__u +-> +__usi + = (è +__c +; \ + +274 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +275 +__u +-> +__uc + = (è +__c +; \ + +279 +__u +-> +__ui + = +__c +; \ + +280 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +282 +__u +-> +__ui + = +__c +; \ + +283 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +285 +__u +-> +__ui + = +__c +; \ + +286 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +288 +__u +-> +__usi + = (è +__c +; \ + +292 +__u +-> +__ui + = +__c +; \ + +293 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +295 +__u +-> +__ui + = +__c +; \ + +296 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +298 +__u +-> +__ui + = +__c +; \ + +299 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +301 +__u +-> +__uc + = (è +__c +; \ + +305 +__u +-> +__ui + = +__c +; \ + +306 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +308 +__u +-> +__ui + = +__c +; \ + +309 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +311 +__u +-> +__ui + = +__c +; \ + +312 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +314 +__u +-> +__ui + = +__c +; \ + +319 +__s +; }) + + ) + +321  + #__mem£t_cú +( +s +, +c +, +n +) \ + +322 ((( +n +) % 4 == 0) \ + +323 ? + `__mem£t_cú_by4 + ( +s +, ((è((è( +c +))) * 0x01010101,\ + +324 +n +) \ + +325 : ((( +n +) % 2 == 0) \ + +326 ? + `__mem£t_cú_by2 + ( +s +, \ + +327 ((è((è( +c +))) * 0x01010101,\ + +328 +n +) \ + +329 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +331 +__STRING_INLINE + * +__mem£t_cú_by4 + (* +__s +,  +__c +, + +332 +size_t + +__n +); + +334 +__STRING_INLINE + * + +335 + $__mem£t_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ù { +__ex‹nsiÚ__ +  +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +356 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +359  +__s +; + +360 + } +} + +362 +__STRING_INLINE + * +__mem£t_cú_by2 + (* +__s +,  +__c +, + +363 +size_t + +__n +); + +365 +__STRING_INLINE + * + +366 + $__mem£t_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ù { +__ex‹nsiÚ__ +  +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +388 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +391  +__s +; + +392 + } +} + +394  + #__mem£t_gú +( +s +, +c +, +n +) \ + +395 ((( +n +) % 4 == 0) \ + +396 ? + `__mem£t_gú_by4 + ( +s +, +c +, +n +) \ + +397 : ((( +n +) % 2 == 0) \ + +398 ? + `__mem£t_gú_by2 + ( +s +, +c +, +n +) \ + +399 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +401 +__STRING_INLINE + * +__mem£t_gú_by4 + (* +__s +,  +__c +, +size_t + +__n +); + +403 +__STRING_INLINE + * + +404 + $__mem£t_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +420 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +422  +__s +; + +423 + } +} + +425 +__STRING_INLINE + * +__mem£t_gú_by2 + (* +__s +,  +__c +, +size_t + +__n +); + +427 +__STRING_INLINE + * + +428 + $__mem£t_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +445 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +447  +__s +; + +448 + } +} + +452  + #_HAVE_STRING_ARCH_memchr + 1 + + ) + +453 #iâdeà +_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +474 +__asm__ + +__vÞ©že__ + + +480 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +481 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), + +482 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +485  +__»s + - 1; + +486 + } +} + +489  + #_HAVE_STRING_ARCH_memrchr + 1 + + ) + +490 #iâdeà +_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s +) + +515 +__asm__ + +__vÞ©že__ + + +522 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +523 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), + +524 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__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 #iâdeà +_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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¡r +) \ + +567 ? + `__bužtš_¡¾’ + ( +¡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_¡rýy + 1 + + ) + +592  + #¡rýy +( +de¡ +, +¤c +) \ + +593 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +594 ? ( (( +¤c +)[0]è=ð1 && + `¡¾’ + (src) + 1 <= 8 \ + +595 ? + `__¡rýy_a_sm®l + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +596 : (*è + `memýy + ((*è( +de¡ +), \ + +597 (cÚ¡ *è( +¤c +), \ + +598 + `¡¾’ + ( +¤c +) + 1)) \ + +599 : + `__¡rýy_g + (( +de¡ +), ( +¤c +)))) + + ) + +601  + #__¡rýy_a_sm®l +( +de¡ +, +¤c +, +¤þ’ +) \ + +602 ( + `__ex‹nsiÚ__ + ({ * +__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 + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +620 +__u +-> +__uc + = '\0'; \ + +623 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +626 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +627 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +628 +__u +-> +__uc + = '\0'; \ + +631 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +632 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +633 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +636 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +637 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +638 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +639 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +640 +__u +-> +__uc + = '\0'; \ + +643 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +644 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +645 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +648 (*è +__de¡ +; })) + + ) + +650 +__STRING_INLINE + * +__¡rýy_g + (* +__de¡ +, cÚ¡ * +__¤c +); + +652 +__STRING_INLINE + * + +653 + $__¡rýy_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_¡pýy + 1 + + ) + +678  + #__¡pýy +( +de¡ +, +¤c +) \ + +679 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +680 ? ( + `¡¾’ + ( +¤c +) + 1 <= 8 \ + +681 ? + `__¡pýy_a_sm®l + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +682 : + `__¡pýy_c + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1)) \ + +683 : + `__¡pýy_g + (( +de¡ +), ( +¤c +)))) + + ) + +684  + #__¡pýy_c +( +de¡ +, +¤c +, +¤þ’ +) \ + +685 (( +¤þ’ +) % 4 == 0 \ + +686 ? + `__mempýy_by4 + ( +de¡ +, +¤c +, +¤þ’ +) - 1 \ + +687 : (( +¤þ’ +) % 2 == 0 \ + +688 ? + `__mempýy_by2 + ( +de¡ +, +¤c +, +¤þ’ +) - 1 \ + +689 : + `__mempýy_byn + ( +de¡ +, +¤c +, +¤þ’ +è- 1)) + + ) + +692  + #¡pýy +( +de¡ +, +¤c +è + `__¡pýy + ((de¡), (¤c)) + + ) + +694  + #__¡pýy_a_sm®l +( +de¡ +, +¤c +, +¤þ’ +) \ + +695 ( + `__ex‹nsiÚ__ + ({ 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 + = + `__ex‹nsiÚ__ + ((*) __u + 1); \ + +711 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +712 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +713 +__u +-> +__uc + = '\0'; \ + +716 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +717 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); \ + +720 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +721 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +722 +__u +-> +__uc + = '\0'; \ + +725 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +726 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +727 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +728 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); \ + +731 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +732 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +733 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +734 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +735 +__u +-> +__uc + = '\0'; \ + +738 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +739 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +740 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +741 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); \ + +744 (*è +__u +; })) + + ) + +746 +__STRING_INLINE + * +__mempýy_by4 + (* +__de¡ +, cÚ¡ * +__¤c +, + +747 +size_t + +__¤þ’ +); + +749 +__STRING_INLINE + * + +750 + $__mempýy_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 + * +__mempýy_by2 + (* +__de¡ +, cÚ¡ * +__¤c +, + +769 +size_t + +__¤þ’ +); + +771 +__STRING_INLINE + * + +772 + $__mempýy_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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +791 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 2), + +792 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +794  +__tmp + + 2; + +795 + } +} + +797 +__STRING_INLINE + * +__mempýy_byn + (* +__de¡ +, cÚ¡ * +__¤c +, + +798 +size_t + +__¤þ’ +); + +800 +__STRING_INLINE + * + +801 + $__mempýy_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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +818 : "0" ( +__tmp +), "1" ( +__¤þ’ +), "2" ( +__¤c +), + +819 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +821  +__tmp +; + +822 + } +} + +824 +__STRING_INLINE + * +__¡pýy_g + (* +__de¡ +, cÚ¡ * +__¤c +); + +826 +__STRING_INLINE + * + +827 + $__¡pýy_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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +854 ? (( + `¡¾’ + ( +¤c +è+ 1 >ð(( +size_t +è( +n +)) \ + +855 ? (*è + `memýy + ((*è( +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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +884 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 4), + +885 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +887 (è + `mem£t + ( +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +914 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ’ + / 2), + +915 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +917 (è + `mem£t + ( +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__de¡ +) + +942 : "1" ( +__¤þ’ +), "0" ( +__tmp +),"2" ( +__¤c +), + +943 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +945 (è + `mem£t + ( +__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_¡rÿt + 1 + + ) + +984  + #¡rÿt +( +de¡ +, +¤c +) \ + +985 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +986 ? + `__¡rÿt_c + (( +de¡ +), ( +¤c +), + `¡¾’ + (src) + 1) \ + +987 : + `__¡rÿt_g + (( +de¡ +), ( +¤c +)))) + + ) + +989 +__STRING_INLINE + * +__¡rÿt_c + (* +__de¡ +, cÚ¡  +__¤c +[], + +990 +size_t + +__¤þ’ +); + +992 +__STRING_INLINE + * + +993 + $__¡rÿt_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ù { +__ex‹nsiÚ__ +  +__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ù { +__ex‹nsiÚ__ +  +__x +[ +__¤þ’ +]; } *) +__¤c +) + +1020 (è + `memýy + ( +__tmp +, +__¤c +, +__¤þ’ +); + +1021  +__de¡ +; + +1022 + } +} + +1024 +__STRING_INLINE + * +__¡rÿt_g + (* +__de¡ +, cÚ¡ * +__¤c +); + +1026 +__STRING_INLINE + * + +1027 + $__¡rÿt_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 ( + `__ex‹nsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +1057 + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +1058 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +1059 ? + `¡rÿt + ( +__de¡ +, ( +¤c +)) \ + +1060 : (*(*) + `__mempýy + ( + `¡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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_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 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +) &&  ((s1)[0]) == 1 \ + +1128 &&  (( +s2 +)[0]è=ð1 && + `¡¾’ + ( +s1 +) < 4 \ + +1129 ? ( + `__bužtš_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 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&&  (( +s1 +)[0]) == 1 \ + +1137 &&  (( +s2 +)[0]è=ð1 && + `¡¾’ + (s2) < 4 \ + +1138 ? ( + `__bužtš_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 ( + `__ex‹nsiÚ__ + ({  +__»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 ( + `__ex‹nsiÚ__ + ({ 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 ( + `__ex‹nsiÚ__ + ({ 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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `¡¾’ + (s1è< (( +size_t +è( +n +)) \ + +1226 ? + `¡rcmp + (( +s1 +), ( +s2 +)) \ + +1227 : ( + `__bužtš_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ù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s1 +), + +1260 "m" ( *(¡ruù { +__ex‹nsiÚ__ +  +__x +[ +__n +]; } *) +__s2 +) + +1262  +__»s +; + +1263 + } +} + +1267  + #_HAVE_STRING_ARCH_¡rchr + 1 + + ) + +1268  + #_USE_STRING_ARCH_¡rchr + 1 + + ) + +1269  + #¡rchr +( +s +, +c +) \ + +1270 ( + `__ex‹nsiÚ__ + ( + `__bužtš_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_¡rchºul + 1 + + ) + +1328  + #__¡rchºul +( +s +, +c +) \ + +1329 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1330 ? (( +c +) == '\0' \ + +1331 ? (*è + `__¿wmemchr + (( +s +), +c +) \ + +1332 : + `__¡rchºul_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1333 : + `__¡rchºul_g + (( +s +), +c +))) + + ) + +1335 +__STRING_INLINE + * +__¡rchºul_c + (cÚ¡ * +__s +,  +__c +); + +1337 +__STRING_INLINE + * + +1338 + $__¡rchºul_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 + * +__¡rchºul_g + (cÚ¡ * +__s +,  +__c +); + +1361 +__STRING_INLINE + * + +1362 + $__¡rchºul_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  + #¡rchºul +( +s +, +c +è + `__¡rchºul + ((s), (c)) + + ) + +1388 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +1390  + #_HAVE_STRING_ARCH_šdex + 1 + + ) + +1391  + #šdex +( +s +, +c +) \ + +1392 ( + `__ex‹nsiÚ__ + ( + `__bužtš_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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_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à +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +1504  + #_HAVE_STRING_ARCH_ršdex + 1 + + ) + +1505  + #ršdex +( +s +, +c +) \ + +1506 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) \ + +1507 ? + `__¡¼chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1508 : + `__¡¼chr_g + (( +s +), ( +c +)))) + + ) + +1514  + #_HAVE_STRING_ARCH_¡rc¥n + 1 + + ) + +1515  + #¡rc¥n +( +s +, +»jeù +) \ + +1516 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +) &&  ((reject)[0]) == 1 \ + +1517 ? (( +»jeù +)[0] == '\0' \ + +1518 ? + `¡¾’ + ( +s +) \ + +1519 : (( +»jeù +)[1] == '\0' \ + +1520 ? + `__¡rc¥n_c1 + (( +s +), ((( +»jeù +)[0] << 8) & 0xff00)) \ + +1521 : + `__¡rc¥n_cg + (( +s +), ( +»jeù +), + `¡¾’ + (reject)))) \ + +1522 : + `__¡rc¥n_g + (( +s +), ( +»jeù +)))) + + ) + +1524 +__STRING_INLINE + +size_t + +__¡rc¥n_c1 + (cÚ¡ * +__s +,  +__»jeù +); + +1526 #iâdeà +_FORCE_INLINES + + +1527 +__STRING_INLINE + +size_t + + +1528 + $__¡rc¥n_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 + +__¡rc¥n_cg + (cÚ¡ * +__s +, cÚ¡  +__»jeù +[], + +1550 +size_t + +__»jeù_Ën +); + +1552 +__STRING_INLINE + +size_t + + +1553 + $__¡rc¥n_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 + +__¡rc¥n_g + (cÚ¡ * +__s +, cÚ¡ * +__»jeù +); + +1575 #ifdeà +__PIC__ + + +1577 +__STRING_INLINE + +size_t + + +1578 + $__¡rc¥n_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 + $__¡rc¥n_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_¡r¥n + 1 + + ) + +1636  + #¡r¥n +( +s +, +acû± +) \ + +1637 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +acû± +) &&  ((accept)[0]) == 1 \ + +1638 ? (( +acû± +)[0] == '\0' \ + +1639 ? ((è( +s +), 0) \ + +1640 : (( +acû± +)[1] == '\0' \ + +1641 ? + `__¡r¥n_c1 + (( +s +), ((( +acû± +)[0] << 8 ) & 0xff00)) \ + +1642 : + `__¡r¥n_cg + (( +s +), ( +acû± +), + `¡¾’ + (accept)))) \ + +1643 : + `__¡r¥n_g + (( +s +), ( +acû± +)))) + + ) + +1645 #iâdeà +_FORCE_INLINES + + +1646 +__STRING_INLINE + +size_t + +__¡r¥n_c1 + (cÚ¡ * +__s +,  +__acû± +); + +1648 +__STRING_INLINE + +size_t + + +1649 + $__¡r¥n_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 + +__¡r¥n_cg + (cÚ¡ * +__s +, cÚ¡  +__acû± +[], + +1669 +size_t + +__acû±_Ën +); + +1671 +__STRING_INLINE + +size_t + + +1672 + $__¡r¥n_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ù { +__ex‹nsiÚ__ +  +__x +[ +__acû±_Ën +]; } *) +__acû± +) + +1694  ( +__»s + - 1è- +__s +; + +1695 + } +} + +1697 +__STRING_INLINE + +size_t + +__¡r¥n_g + (cÚ¡ * +__s +, cÚ¡ * +__acû± +); + +1698 #ifdeà +__PIC__ + + +1700 +__STRING_INLINE + +size_t + + +1701 + $__¡r¥n_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 + $__¡r¥n_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 ( + `__ex‹nsiÚ__ + ( + `__bužtš_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_¡r¡r + 1 + + ) + +1863  + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1864 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +ÃedË +) &&  ((needle)[0]) == 1 \ + +1865 ? (( +ÃedË +)[0] == '\0' \ + +1866 ? ( +hay¡ack +) \ + +1867 : (( +ÃedË +)[1] == '\0' \ + +1868 ? + `¡rchr + (( +hay¡ack +), ( +ÃedË +)[0]) \ + +1869 : + `__¡r¡r_cg + (( +hay¡ack +), ( +ÃedË +), \ + +1870 + `¡¾’ + ( +ÃedË +)))) \ + +1871 : + `__¡r¡r_g + (( +hay¡ack +), ( +ÃedË +)))) + + ) + +1875 +__STRING_INLINE + * +__¡r¡r_cg + (cÚ¡ * +__hay¡ack +, + +1876 cÚ¡  +__ÃedË +[], + +1877 +size_t + +__ÃedË_Ën +); + +1879 +__STRING_INLINE + * + +1880 + $__¡r¡r_cg + (cÚ¡ * +__hay¡ack +, 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" ( +__hay¡ack +), "d" ( +__ÃedË +) + +1901  +__»s +; + +1902 + } +} + +1904 +__STRING_INLINE + * +__¡r¡r_g + (cÚ¡ * +__hay¡ack +, + +1905 cÚ¡ * +__ÃedË +); + +1906 #ifdeà +__PIC__ + + +1908 +__STRING_INLINE + * + +1909 + $__¡r¡r_g + (cÚ¡ * +__hay¡ack +, 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" ( +__hay¡ack +), "3" ( +__ÃedË +), + +1934 "d" ( +__ÃedË +) + +1936  +__»s +; + +1937 + } +} + +1939 +__STRING_INLINE + * + +1940 + $__¡r¡r_g + (cÚ¡ * +__hay¡ack +, 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" ( +__hay¡ack +), "3" ( +__ÃedË +), + +1963 "b" ( +__ÃedË +) + +1965  +__»s +; + +1966 + } +} + +1972 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +1973 #ifdeà +__i686__ + + +1974  + #_HAVE_STRING_ARCH_ffs + 1 + + ) + +1975  + #ffs +( +wÜd +è( + `__bužtš_cÚ¡ªt_p + (word) \ + +1976 ? + `__bužtš_ffs + ( +wÜd +) \ + +1977 : ({  +__út +, +__tmp +; \ + +1978 +__asm__ + +__vÞ©že__ + \ + +1981 : "=&r" ( +__út +), "ô" ( +__tmp +) \ + +1982 : "rm" ( +wÜd +), "1" (-1)); \ + +1983 +__út + + 1; })) + + ) + +1985 #iâdeà +ff¦ + + +1986  + #ff¦ +( +wÜd +è + `ffs +(wÜd) + + ) + +1991 #iâdeà +_FORCE_INLINES + + +1992 #undeà +__STRING_INLINE + + + @/usr/include/bits/string2.h + +20 #iâdeà +_STRING_H + + +24 #iâdeà +__NO_STRING_INLINES + + +41 #iâdeà +__STRING_INLINE + + +42 #ifdeà +__ýlu¥lus + + +43  + #__STRING_INLINE + +šlše + + + ) + +45  + #__STRING_INLINE + +__ex‹º_šlše + + + ) + +49 #ià +_STRING_INLINE_uÇligÃd + + +51  + ~<’dŸn.h +> + +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  + #__¡ršg2_1b±r_p +( +__x +) \ + +93 (( +size_t +)(cÚ¡ *)(( +__x +è+ 1è- (size_t)(cÚ¡ *)(__xè=ð1) + + ) + +96 #ià! +defšed + +_HAVE_STRING_ARCH_mem£t + + +97 #ià! +__GNUC_PREREQ + (3, 0) + +98 #ià +_STRING_INLINE_uÇligÃd + + +99  + #mem£t +( +s +, +c +, +n +) \ + +100 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +101 ? (( +n +) == 1 \ + +102 ? + `__mem£t_1 + ( +s +, +c +) \ + +103 : + `__mem£t_gc + ( +s +, +c +, +n +)) \ + +104 : ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +105 ? ({ * +__s + = ( +s +); + `__bz”o + (__s, +n +); __s; }) \ + +106 : + `mem£t + ( +s +, +c +, +n +)))) + + ) + +108  + #__mem£t_1 +( +s +, +c +è({ * +__s + = (s); \ + +109 *(( +__ušt8_t + *è +__s +èð(__ušt8_tè +c +; __s; }) + + ) + +111  + #__mem£t_gc +( +s +, +c +, +n +) \ + +112 ({ * +__s + = ( +s +); \ + +114  +__ui +; \ + +115  +__usi +; \ + +116  +__uc +; \ + +117 } * +__u + = +__s +; \ + +118 +__ušt8_t + +__c + = (__ušt8_tè( +c +); \ + +121 (è( +n +)) \ + +124 +__u +-> +__ui + = +__c + * 0x01010101; \ + +125 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +127 +__u +-> +__ui + = +__c + * 0x01010101; \ + +128 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +130 +__u +-> +__ui + = +__c + * 0x01010101; \ + +131 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +133 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +134 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); \ + +135 +__u +-> +__uc + = (è +__c +; \ + +139 +__u +-> +__ui + = +__c + * 0x01010101; \ + +140 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +142 +__u +-> +__ui + = +__c + * 0x01010101; \ + +143 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +145 +__u +-> +__ui + = +__c + * 0x01010101; \ + +146 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +148 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +152 +__u +-> +__ui + = +__c + * 0x01010101; \ + +153 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +155 +__u +-> +__ui + = +__c + * 0x01010101; \ + +156 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +158 +__u +-> +__ui + = +__c + * 0x01010101; \ + +159 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +161 +__u +-> +__uc + = (è +__c +; \ + +165 +__u +-> +__ui + = +__c + * 0x01010101; \ + +166 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +168 +__u +-> +__ui + = +__c + * 0x01010101; \ + +169 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +171 +__u +-> +__ui + = +__c + * 0x01010101; \ + +172 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); \ + +174 +__u +-> +__ui + = +__c + * 0x01010101; \ + +179 +__s +; }) + + ) + +181  + #mem£t +( +s +, +c +, +n +) \ + +182 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +183 ? ({ * +__s + = ( +s +); + `__bz”o + (__s, +n +); __s; }) \ + +184 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +193 #ià +__GNUC_PREREQ + (2, 91) + +194  + #__bz”o +( +s +, +n +è + `__bužtš_mem£t + (s, '\0',‚) + + ) + +202 #ifdeà +__USE_GNU + + +203 #ià! +defšed + +_HAVE_STRING_ARCH_mempýy + || defšed +_FORCE_INLINES + + +204 #iâdeà +_HAVE_STRING_ARCH_mempýy + + +205 #ià +__GNUC_PREREQ + (3, 4) + +206  + #__mempýy +( +de¡ +, +¤c +, +n +è + `__bužtš_mempýy + (de¡, src,‚) + + ) + +207 #–ià +__GNUC_PREREQ + (3, 0) + +208  + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +209 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +210 && + `__¡ršg2_1b±r_p + ( +¤c +è&& +n + <= 8 \ + +211 ? + `__bužtš_memýy + ( +de¡ +, +¤c +, +n +) + (n) \ + +212 : + `__mempýy + ( +de¡ +, +¤c +, +n +))) + + ) + +214  + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +215 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +216 && + `__¡ršg2_1b±r_p + ( +¤c +è&& +n + <= 8 \ + +217 ? + `__mempýy_sm®l + ( +de¡ +, + `__mempýy_¬gs + ( +¤c +), +n +) \ + +218 : + `__mempýy + ( +de¡ +, +¤c +, +n +))) + + ) + +222  + #mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy + (de¡, src,‚) + + ) + +225 #ià! +__GNUC_PREREQ + (3, 0è|| +defšed + +_FORCE_INLINES + + +226 #ià +_STRING_INLINE_uÇligÃd + + +227 #iâdeà +_FORCE_INLINES + + +228  + #__mempýy_¬gs +( +¤c +) \ + +229 ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[2], \ + +230 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[6], \ + +231 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +232 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +233 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +234 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +236 +__STRING_INLINE + * +__mempýy_sm®l + (*, , , , , + +237 +__ušt16_t +, __ušt16_t, +__ušt32_t +, + +238 +__ušt32_t +, +size_t +); + +239 +__STRING_INLINE + * + +240 + $__mempýy_sm®l + (* +__de¡1 +, + +241  +__¤c0_1 +,  +__¤c2_1 +,  +__¤c4_1 +,  +__¤c6_1 +, + +242 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +243 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤c4_4 +, + +244 +size_t + +__¤þ’ +) + +247 +__ušt32_t + +__ui +; + +248 +__ušt16_t + +__usi +; + +249  +__uc +; + +250  +__c +; + +251 } * +__u + = +__de¡1 +; + +252 (è +__¤þ’ +) + +255 +__u +-> +__c + = +__¤c0_1 +; + +256 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +259 +__u +-> +__usi + = +__¤c0_2 +; + +260 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +263 +__u +-> +__usi + = +__¤c0_2 +; + +264 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +265 +__u +-> +__c + = +__¤c2_1 +; + +266 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +269 +__u +-> +__ui + = +__¤c0_4 +; + +270 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +273 +__u +-> +__ui + = +__¤c0_4 +; + +274 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +275 +__u +-> +__c + = +__¤c4_1 +; + +276 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +279 +__u +-> +__ui + = +__¤c0_4 +; + +280 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +281 +__u +-> +__usi + = +__¤c4_2 +; + +282 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +285 +__u +-> +__ui + = +__¤c0_4 +; + +286 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +287 +__u +-> +__usi + = +__¤c4_2 +; + +288 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +289 +__u +-> +__c + = +__¤c6_1 +; + +290 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +293 +__u +-> +__ui + = +__¤c0_4 +; + +294 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +295 +__u +-> +__ui + = +__¤c4_4 +; + +296 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +299  (*è +__u +; + +300 + } +} + +302 #iâdeà +_FORCE_INLINES + + +303  + #__mempýy_¬gs +( +¤c +) \ + +304 ((cÚ¡ *è( +¤c +))[0], \ + +305 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +306 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1] } }), \ + +307 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +308 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +309 ((cÚ¡ *è( +¤c +))[2] } }), \ + +310 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +311 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +312 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3] } }), \ + +313 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +314 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +315 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +316 ((cÚ¡ *è( +¤c +))[4] } }), \ + +317 + `__ex‹nsiÚ__ + (( +__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 + `__ex‹nsiÚ__ + (( +__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 + `__ex‹nsiÚ__ + (( +__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 + * +__mempýy_sm®l + (*, , +__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 + $__mempýy_sm®l + (* +__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 + +__sÿ2 +; + +349 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +350 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +351 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +352 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +353 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +354 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +355 } * +__u + = +__de¡ +; + +356 (è +__¤þ’ +) + +359 +__u +-> +__c + = +__¤c1 +; + +362 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +365 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +368 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +371 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +374 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +377 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +380 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +383  + `__ex‹nsiÚ__ + ((*è +__u + + +__¤þ’ +); + +384 + } +} + +392 #iâdeà +_HAVE_STRING_ARCH_¡rchr + + +393 * +__¿wmemchr + (cÚ¡ * +__s +,  +__c +); + +394 #ià +__GNUC_PREREQ + (3, 2) + +395  + #¡rchr +( +s +, +c +) \ + +396 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +è&& !__bužtš_cÚ¡ªt_°( +s +) \ + +397 && ( +c +) == '\0' \ + +398 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +399 : + `__bužtš_¡rchr + ( +s +, +c +))) + + ) + +401  + #¡rchr +( +s +, +c +) \ + +402 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +403 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +404 : + `¡rchr + ( +s +, +c +))) + + ) + +410 #ià(! +defšed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0)) \ + +411 || +defšed + + g_FORCE_INLINES + + +412 #ià! +defšed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0) + +413  + #¡rýy +( +de¡ +, +¤c +) \ + +414 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +415 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +416 ? + `__¡rýy_sm®l + ( +de¡ +, + `__¡rýy_¬gs + ( +¤c +), \ + +417 + `¡¾’ + ( +¤c +) + 1) \ + +418 : (*è + `memýy + ( +de¡ +, +¤c +, + `¡¾’ + (src) + 1)) \ + +419 : + `¡rýy + ( +de¡ +, +¤c +))) + + ) + +422 #ià +_STRING_INLINE_uÇligÃd + + +423 #iâdeà +_FORCE_INLINES + + +424  + #__¡rýy_¬gs +( +¤c +) \ + +425 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +426 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +427 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +428 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +430 +__STRING_INLINE + * +__¡rýy_sm®l + (*, +__ušt16_t +, __uint16_t, + +431 +__ušt32_t +, __ušt32_t, +size_t +); + +432 +__STRING_INLINE + * + +433 + $__¡rýy_sm®l + (* +__de¡ +, + +434 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +435 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤c4_4 +, + +436 +size_t + +__¤þ’ +) + +439 +__ušt32_t + +__ui +; + +440 +__ušt16_t + +__usi +; + +441  +__uc +; + +442 } * +__u + = (*è +__de¡ +; + +443 (è +__¤þ’ +) + +446 +__u +-> +__uc + = '\0'; + +449 +__u +-> +__usi + = +__¤c0_2 +; + +452 +__u +-> +__usi + = +__¤c0_2 +; + +453 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +454 +__u +-> +__uc + = '\0'; + +457 +__u +-> +__ui + = +__¤c0_4 +; + +460 +__u +-> +__ui + = +__¤c0_4 +; + +461 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +462 +__u +-> +__uc + = '\0'; + +465 +__u +-> +__ui + = +__¤c0_4 +; + +466 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +467 +__u +-> +__usi + = +__¤c4_2 +; + +470 +__u +-> +__ui + = +__¤c0_4 +; + +471 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +472 +__u +-> +__usi + = +__¤c4_2 +; + +473 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +474 +__u +-> +__uc + = '\0'; + +477 +__u +-> +__ui + = +__¤c0_4 +; + +478 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +479 +__u +-> +__ui + = +__¤c4_4 +; + +482  +__de¡ +; + +483 + } +} + +485 #iâdeà +_FORCE_INLINES + + +486  + #__¡rýy_¬gs +( +¤c +) \ + +487 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +488 { { ((cÚ¡ *è( +¤c +))[0], '\0' } }), \ + +489 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +490 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +492 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +493 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +494 ((cÚ¡ *è( +¤c +))[2], '\0' } }), \ + +495 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +496 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +497 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +499 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +500 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +501 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +502 ((cÚ¡ *è( +¤c +))[4], '\0' } }), \ + +503 + `__ex‹nsiÚ__ + (( +__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 + `__ex‹nsiÚ__ + (( +__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 + * +__¡rýy_sm®l + (*, +__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 + $__¡rýy_sm®l + (* +__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 + +__sÿ2 +; + +531 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +532 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +533 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +534 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +535 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +536 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +537 } * +__u + = (*è +__de¡ +; + +538 (è +__¤þ’ +) + +541 +__u +-> +__c + = '\0'; + +544 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +547 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +550 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +553 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +556 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +559 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +562 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +565  +__de¡ +; + +566 + } +} + +572 #ifdeà +__USE_GNU + + +573 #ià! +defšed + +_HAVE_STRING_ARCH_¡pýy + || defšed +_FORCE_INLINES + + +574 #iâdeà +_HAVE_STRING_ARCH_¡pýy + + +575 #ià +__GNUC_PREREQ + (3, 4) + +576  + #__¡pýy +( +de¡ +, +¤c +è + `__bužtš_¡pýy + (de¡, src) + + ) + +577 #–ià +__GNUC_PREREQ + (3, 0) + +578  + #__¡pýy +( +de¡ +, +¤c +) \ + +579 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +580 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +581 ? + `__bužtš_¡rýy + ( +de¡ +, +¤c +è+ + `¡¾’ + (src) \ + +582 : ((*è( +__mempýy +è( +de¡ +, +¤c +, + `¡¾’ + (src) + 1) \ + +584 : + `__¡pýy + ( +de¡ +, +¤c +))) + + ) + +586  + #__¡pýy +( +de¡ +, +¤c +) \ + +587 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +) \ + +588 ? ( + `__¡ršg2_1b±r_p + ( +¤c +è&& + `¡¾’ + (src) + 1 <= 8 \ + +589 ? + `__¡pýy_sm®l + ( +de¡ +, + `__¡pýy_¬gs + ( +¤c +), \ + +590 + `¡¾’ + ( +¤c +) + 1) \ + +591 : ((*è( +__mempýy +è( +de¡ +, +¤c +, + `¡¾’ + (src) + 1) \ + +593 : + `__¡pýy + ( +de¡ +, +¤c +))) + + ) + +597  + #¡pýy +( +de¡ +, +¤c +è + `__¡pýy + (de¡, src) + + ) + +600 #ià! +__GNUC_PREREQ + (3, 0è|| +defšed + +_FORCE_INLINES + + +601 #ià +_STRING_INLINE_uÇligÃd + + +602 #iâdeà +_FORCE_INLINES + + +603  + #__¡pýy_¬gs +( +¤c +) \ + +604 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +605 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +606 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +607 +__ex‹nsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +609 +__STRING_INLINE + * +__¡pýy_sm®l + (*, +__ušt16_t +, __uint16_t, + +610 +__ušt32_t +, __ušt32_t, +size_t +); + +611 +__STRING_INLINE + * + +612 + $__¡pýy_sm®l + (* +__de¡ +, + +613 +__ušt16_t + +__¤c0_2 +, __ušt16_ˆ +__¤c4_2 +, + +614 +__ušt32_t + +__¤c0_4 +, __ušt32_ˆ +__¤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 + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +633 +__u +-> +__usi + = +__¤c0_2 +; + +634 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +635 +__u +-> +__uc + = '\0'; + +638 +__u +-> +__ui + = +__¤c0_4 +; + +639 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); + +642 +__u +-> +__ui + = +__¤c0_4 +; + +643 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +644 +__u +-> +__uc + = '\0'; + +647 +__u +-> +__ui + = +__¤c0_4 +; + +648 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +649 +__u +-> +__usi + = +__¤c4_2 +; + +650 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 1); + +653 +__u +-> +__ui + = +__¤c0_4 +; + +654 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +655 +__u +-> +__usi + = +__¤c4_2 +; + +656 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 2); + +657 +__u +-> +__uc + = '\0'; + +660 +__u +-> +__ui + = +__¤c0_4 +; + +661 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 4); + +662 +__u +-> +__ui + = +__¤c4_4 +; + +663 +__u + = + `__ex‹nsiÚ__ + ((*) __u + 3); + +666  & +__u +-> +__c +; + +667 + } +} + +669 #iâdeà +_FORCE_INLINES + + +670  + #__¡pýy_¬gs +( +¤c +) \ + +671 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +672 { { ((cÚ¡ *è( +¤c +))[0], '\0' } }), \ + +673 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +674 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +676 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +677 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +678 ((cÚ¡ *è( +¤c +))[2], '\0' } }), \ + +679 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +680 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +681 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +683 + `__ex‹nsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +684 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +685 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +686 ((cÚ¡ *è( +¤c +))[4], '\0' } }), \ + +687 + `__ex‹nsiÚ__ + (( +__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 + `__ex‹nsiÚ__ + (( +__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 + * +__¡pýy_sm®l + (*, +__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 + $__¡pýy_sm®l + (* +__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 + +__sÿ2 +; + +715 +__STRING2_COPY_ARR3 + +__sÿ3 +; + +716 +__STRING2_COPY_ARR4 + +__sÿ4 +; + +717 +__STRING2_COPY_ARR5 + +__sÿ5 +; + +718 +__STRING2_COPY_ARR6 + +__sÿ6 +; + +719 +__STRING2_COPY_ARR7 + +__sÿ7 +; + +720 +__STRING2_COPY_ARR8 + +__sÿ8 +; + +721 } * +__u + = (*è +__de¡ +; + +722 (è +__¤þ’ +) + +725 +__u +-> +__c + = '\0'; + +728 +__ex‹nsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +731 +__ex‹nsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +734 +__ex‹nsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +737 +__ex‹nsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +740 +__ex‹nsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +743 +__ex‹nsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +746 +__ex‹nsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +749  +__de¡ + + +__¤þ’ + - 1; + +750 + } +} + +758 #iâdeà +_HAVE_STRING_ARCH_¡ºýy + + +759 #ià +__GNUC_PREREQ + (3, 2) + +760  + #¡ºýy +( +de¡ +, +¤c +, +n +è + `__bužtš_¡ºýy + (de¡, src,‚) + + ) + +762  + #¡ºýy +( +de¡ +, +¤c +, +n +) \ + +763 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +764 ? ( + `¡¾’ + ( +¤c +è+ 1 >ð(( +size_t +è( +n +)) \ + +765 ? (*è + `memýy + ( +de¡ +, +¤c +, +n +) \ + +766 : + `¡ºýy + ( +de¡ +, +¤c +, +n +)) \ + +767 : + `¡ºýy + ( +de¡ +, +¤c +, +n +))) + + ) + +773 #iâdeà +_HAVE_STRING_ARCH_¡ºÿt + + +774 #ifdeà +_USE_STRING_ARCH_¡rchr + + +775  + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +776 ( + `__ex‹nsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +777 + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +778 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +779 ? + `¡rÿt + ( +__de¡ +, +¤c +) \ + +780 : (*((*è + `__mempýy + ( + `¡rchr + ( +__de¡ +, '\0'), \ + +781 +¤c +, +n +)èð'\0', +__de¡ +)) \ + +782 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +); })) + + ) + +783 #–ià +__GNUC_PREREQ + (3, 2) + +784  + #¡ºÿt +( +de¡ +, +¤c +, +n +è + `__bužtš_¡ºÿt + (de¡, src,‚) + + ) + +786  + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +787 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +¤c +è&& __bužtš_cÚ¡ªt_°( +n +) \ + +788 ? ( + `¡¾’ + ( +¤c +è< (( +size_t +è( +n +)) \ + +789 ? + `¡rÿt + ( +de¡ +, +¤c +) \ + +790 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +)) \ + +791 : + `¡ºÿt + ( +de¡ +, +¤c +, +n +))) + + ) + +797 #iâdeà +_HAVE_STRING_ARCH_¡rcmp + + +798 #ià +__GNUC_PREREQ + (3, 2) + +799  + #¡rcmp +( +s1 +, +s2 +) \ + +800 +__ex‹nsiÚ__ + \ + +801 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +802 ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_cÚ¡ªt_°( +s2 +) \ + +803 && ( +__s1_Ën + = + `__bužtš_¡¾’ + ( +s1 +), +__s2_Ën + = __bužtš_¡¾’ ( +s2 +), \ + +804 (! + `__¡ršg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +805 && (! + `__¡ršg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +806 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +807 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +808 && ( +__s1_Ën + = + `__bužtš_¡¾’ + ( +s1 +), __s1_len < 4) \ + +809 ? ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +810 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +811 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +812 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +813 && ( +__s2_Ën + = + `__bužtš_¡¾’ + ( +s2 +), __s2_len < 4) \ + +814 ? ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +815 ? + `__bužtš_¡rcmp + ( +s1 +, +s2 +) \ + +816 : + `__¡rcmp_gc + ( +s1 +, +s2 +, +__s2_Ën +)) \ + +817 : + `__bužtš_¡rcmp + ( +s1 +, +s2 +)))); }) + + ) + +819  + #¡rcmp +( +s1 +, +s2 +) \ + +820 +__ex‹nsiÚ__ + \ + +821 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +822 ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& __bužtš_cÚ¡ªt_°( +s2 +) \ + +823 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), +__s2_Ën + = sŒËÀ( +s2 +), \ + +824 (! + `__¡ršg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +825 && (! + `__¡ršg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +826 ? + `memcmp + ((cÚ¡ *è( +s1 +), (cÚ¡ *è( +s2 +), \ + +827 ( +__s1_Ën + < +__s2_Ën + ? __s1_len : __s2_len) + 1) \ + +828 : ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_p + (s1) \ + +829 && ( +__s1_Ën + = + `¡¾’ + ( +s1 +), __s1_len < 4) \ + +830 ? ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +831 ? + `__¡rcmp_cc + ( +s1 +, +s2 +, +__s1_Ën +) \ + +832 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +833 : ( + `__bužtš_cÚ¡ªt_p + ( +s2 +è&& + `__¡ršg2_1b±r_p + (s2) \ + +834 && ( +__s2_Ën + = + `¡¾’ + ( +s2 +), __s2_len < 4) \ + +835 ? ( + `__bužtš_cÚ¡ªt_p + ( +s1 +è&& + `__¡ršg2_1b±r_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 ( + `__ex‹nsiÚ__ + ({  +__»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 ( + `__ex‹nsiÚ__ + ({ 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 #iâdeà +_HAVE_STRING_ARCH_¡ºcmp + + +896  + #¡ºcmp +( +s1 +, +s2 +, +n +) \ + +897 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +n +) \ + +898 && (( + `__bužtš_cÚ¡ªt_p + ( +s1 +) \ + +899 && + `¡¾’ + ( +s1 +è< (( +size_t +è( +n +))) \ + +900 || ( + `__bužtš_cÚ¡ªt_p + ( +s2 +) \ + +901 && + `¡¾’ + ( +s2 +è< (( +size_t +è( +n +)))) \ + +902 ? + `¡rcmp + ( +s1 +, +s2 +è: + `¡ºcmp + (s1, s2, +n +))) + + ) + +908 #ià! +defšed + +_HAVE_STRING_ARCH_¡rc¥n + || defšed +_FORCE_INLINES + + +909 #iâdeà +_HAVE_STRING_ARCH_¡rc¥n + + +910 #ià +__GNUC_PREREQ + (3, 2) + +911  + #¡rc¥n +( +s +, +»jeù +) \ + +912 +__ex‹nsiÚ__ + \ + +913 ({  +__r0 +, +__r1 +, +__r2 +; \ + +914 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +915 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +916 ? + `__bužtš_¡rc¥n + ( +s +, +»jeù +) \ + +917 : (( +__r0 + = ((cÚ¡ *è( +»jeù +))[0], __r0 == '\0') \ + +918 ? + `¡¾’ + ( +s +) \ + +919 : (( +__r1 + = ((cÚ¡ *è( +»jeù +))[1], __r1 == '\0') \ + +920 ? + `__¡rc¥n_c1 + ( +s +, +__r0 +) \ + +921 : (( +__r2 + = ((cÚ¡ *è( +»jeù +))[2], __r2 == '\0') \ + +922 ? + `__¡rc¥n_c2 + ( +s +, +__r0 +, +__r1 +) \ + +923 : (((cÚ¡ *è( +»jeù +))[3] == '\0' \ + +924 ? + `__¡rc¥n_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +925 : + `__bužtš_¡rc¥n + ( +s +, +»jeù +)))))) \ + +926 : + `__bužtš_¡rc¥n + ( +s +, +»jeù +)); }) + + ) + +928  + #¡rc¥n +( +s +, +»jeù +) \ + +929 +__ex‹nsiÚ__ + \ + +930 ({  +__r0 +, +__r1 +, +__r2 +; \ + +931 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +932 ? (( +__r0 + = ((cÚ¡ *è( +»jeù +))[0], __r0 == '\0') \ + +933 ? + `¡¾’ + ( +s +) \ + +934 : (( +__r1 + = ((cÚ¡ *è( +»jeù +))[1], __r1 == '\0') \ + +935 ? + `__¡rc¥n_c1 + ( +s +, +__r0 +) \ + +936 : (( +__r2 + = ((cÚ¡ *è( +»jeù +))[2], __r2 == '\0') \ + +937 ? + `__¡rc¥n_c2 + ( +s +, +__r0 +, +__r1 +) \ + +938 : (((cÚ¡ *è( +»jeù +))[3] == '\0' \ + +939 ? + `__¡rc¥n_c3 + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +940 : + `¡rc¥n + ( +s +, +»jeù +))))) \ + +941 : + `¡rc¥n + ( +s +, +»jeù +)); }) + + ) + +945 +__STRING_INLINE + +size_t + +__¡rc¥n_c1 + (cÚ¡ * +__s +,  +__»jeù +); + +946 +__STRING_INLINE + +size_t + + +947 + $__¡rc¥n_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 + +__¡rc¥n_c2 + (cÚ¡ * +__s +,  +__»jeù1 +, + +956  +__»jeù2 +); + +957 +__STRING_INLINE + +size_t + + +958 + $__¡rc¥n_c2 + (cÚ¡ * +__s +,  +__»jeù1 +,  +__»jeù2 +) + +960 +size_t + +__»suÉ + = 0; + +961  +__s +[ +__»suÉ +] !ð'\0' && __s[__»suÉ] !ð +__»jeù1 + + +962 && +__s +[ +__»suÉ +] !ð +__»jeù2 +) + +963 ++ +__»suÉ +; + +964  +__»suÉ +; + +965 + } +} + +967 +__STRING_INLINE + +size_t + +__¡rc¥n_c3 + (cÚ¡ * +__s +,  +__»jeù1 +, + +968  +__»jeù2 +,  +__»jeù3 +); + +969 +__STRING_INLINE + +size_t + + +970 + $__¡rc¥n_c3 + (cÚ¡ * +__s +,  +__»jeù1 +,  +__»jeù2 +, + +971  +__»jeù3 +) + +973 +size_t + +__»suÉ + = 0; + +974  +__s +[ +__»suÉ +] !ð'\0' && __s[__»suÉ] !ð +__»jeù1 + + +975 && +__s +[ +__»suÉ +] !ð +__»jeù2 + && __s[__»suÉ] !ð +__»jeù3 +) + +976 ++ +__»suÉ +; + +977  +__»suÉ +; + +978 + } +} + +984 #ià! +defšed + +_HAVE_STRING_ARCH_¡r¥n + || defšed +_FORCE_INLINES + + +985 #iâdeà +_HAVE_STRING_ARCH_¡r¥n + + +986 #ià +__GNUC_PREREQ + (3, 2) + +987  + #¡r¥n +( +s +, +acû± +) \ + +988 +__ex‹nsiÚ__ + \ + +989 ({  +__a0 +, +__a1 +, +__a2 +; \ + +990 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +991 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +992 ? + `__bužtš_¡r¥n + ( +s +, +acû± +) \ + +993 : (( +__a0 + = ((cÚ¡ *è( +acû± +))[0], __a0 == '\0') \ + +994 ? ((è( +s +), ( +size_t +) 0) \ + +995 : (( +__a1 + = ((cÚ¡ *è( +acû± +))[1], __a1 == '\0') \ + +996 ? + `__¡r¥n_c1 + ( +s +, +__a0 +) \ + +997 : (( +__a2 + = ((cÚ¡ *è( +acû± +))[2], __a2 == '\0') \ + +998 ? + `__¡r¥n_c2 + ( +s +, +__a0 +, +__a1 +) \ + +999 : (((cÚ¡ *è( +acû± +))[3] == '\0' \ + +1000 ? + `__¡r¥n_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1001 : + `__bužtš_¡r¥n + ( +s +, +acû± +)))))) \ + +1002 : + `__bužtš_¡r¥n + ( +s +, +acû± +)); }) + + ) + +1004  + #¡r¥n +( +s +, +acû± +) \ + +1005 +__ex‹nsiÚ__ + \ + +1006 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1007 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1008 ? (( +__a0 + = ((cÚ¡ *è( +acû± +))[0], __a0 == '\0') \ + +1009 ? ((è( +s +), ( +size_t +) 0) \ + +1010 : (( +__a1 + = ((cÚ¡ *è( +acû± +))[1], __a1 == '\0') \ + +1011 ? + `__¡r¥n_c1 + ( +s +, +__a0 +) \ + +1012 : (( +__a2 + = ((cÚ¡ *è( +acû± +))[2], __a2 == '\0') \ + +1013 ? + `__¡r¥n_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1014 : (((cÚ¡ *è( +acû± +))[3] == '\0' \ + +1015 ? + `__¡r¥n_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1016 : + `¡r¥n + ( +s +, +acû± +))))) \ + +1017 : + `¡r¥n + ( +s +, +acû± +)); }) + + ) + +1021 +__STRING_INLINE + +size_t + +__¡r¥n_c1 + (cÚ¡ * +__s +,  +__acû± +); + +1022 +__STRING_INLINE + +size_t + + +1023 + $__¡r¥n_c1 + (cÚ¡ * +__s +,  +__acû± +) + +1025 +size_t + +__»suÉ + = 0; + +1027  +__s +[ +__»suÉ +] =ð +__acû± +) + +1028 ++ +__»suÉ +; + +1029  +__»suÉ +; + +1030 + } +} + +1032 +__STRING_INLINE + +size_t + +__¡r¥n_c2 + (cÚ¡ * +__s +,  +__acû±1 +, + +1033  +__acû±2 +); + +1034 +__STRING_INLINE + +size_t + + +1035 + $__¡r¥n_c2 + (cÚ¡ * +__s +,  +__acû±1 +,  +__acû±2 +) + +1037 +size_t + +__»suÉ + = 0; + +1039  +__s +[ +__»suÉ +] =ð +__acû±1 + || __s[__»suÉ] =ð +__acû±2 +) + +1040 ++ +__»suÉ +; + +1041  +__»suÉ +; + +1042 + } +} + +1044 +__STRING_INLINE + +size_t + +__¡r¥n_c3 + (cÚ¡ * +__s +,  +__acû±1 +, + +1045  +__acû±2 +,  +__acû±3 +); + +1046 +__STRING_INLINE + +size_t + + +1047 + $__¡r¥n_c3 + (cÚ¡ * +__s +,  +__acû±1 +,  +__acû±2 +,  +__acû±3 +) + +1049 +size_t + +__»suÉ + = 0; + +1051  +__s +[ +__»suÉ +] =ð +__acû±1 + || __s[__»suÉ] =ð +__acû±2 + + +1052 || +__s +[ +__»suÉ +] =ð +__acû±3 +) + +1053 ++ +__»suÉ +; + +1054  +__»suÉ +; + +1055 + } +} + +1060 #ià! +defšed + +_HAVE_STRING_ARCH_¡½brk + || defšed +_FORCE_INLINES + + +1061 #iâdeà +_HAVE_STRING_ARCH_¡½brk + + +1062 #ià +__GNUC_PREREQ + (3, 2) + +1063  + #¡½brk +( +s +, +acû± +) \ + +1064 +__ex‹nsiÚ__ + \ + +1065 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1066 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_p + (accept) \ + +1067 ? (( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s)) \ + +1068 ? + `__bužtš_¡½brk + ( +s +, +acû± +) \ + +1069 : (( +__a0 + = ((cÚ¡ *è( +acû± +))[0], __a0 == '\0') \ + +1070 ? ((è( +s +), (*è +NULL +) \ + +1071 : (( +__a1 + = ((cÚ¡ *è( +acû± +))[1], __a1 == '\0') \ + +1072 ? + `__bužtš_¡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 : + `__bužtš_¡½brk + ( +s +, +acû± +)))))) \ + +1078 : + `__bužtš_¡½brk + ( +s +, +acû± +)); }) + + ) + +1080  + #¡½brk +( +s +, +acû± +) \ + +1081 +__ex‹nsiÚ__ + \ + +1082 ({  +__a0 +, +__a1 +, +__a2 +; \ + +1083 ( + `__bužtš_cÚ¡ªt_p + ( +acû± +è&& + `__¡ršg2_1b±r_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 +,  +__acû±1 +, + +1098  +__acû±2 +); + +1099 +__STRING_INLINE + * + +1100 + $__¡½brk_c2 + (cÚ¡ * +__s +,  +__acû±1 +,  +__acû±2 +) + +1103 * +__s + !ð'\0' && *__ !ð +__acû±1 + && *__ !ð +__acû±2 +) + +1104 ++ +__s +; + +1105  * +__s + =ð'\0' ? +NULL + : (*è( +size_t +) __s; + +1106 + } +} + +1108 +__STRING_INLINE + * +__¡½brk_c3 + (cÚ¡ * +__s +,  +__acû±1 +, + +1109  +__acû±2 +,  +__acû±3 +); + +1110 +__STRING_INLINE + * + +1111 + $__¡½brk_c3 + (cÚ¡ * +__s +,  +__acû±1 +,  +__acû±2 +,  +__acû±3 +) + +1114 * +__s + !ð'\0' && *__ !ð +__acû±1 + && *__ !ð +__acû±2 + + +1115 && * +__s + !ð +__acû±3 +) + +1116 ++ +__s +; + +1117  * +__s + =ð'\0' ? +NULL + : (*è( +size_t +) __s; + +1118 + } +} + +1124 #ià! +defšed + +_HAVE_STRING_ARCH_¡r¡r + && ! +__GNUC_PREREQ + (2, 97) + +1125  + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1126 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +ÃedË +è&& + `__¡ršg2_1b±r_p + (needle) \ + +1127 ? (((cÚ¡ *è( +ÃedË +))[0] == '\0' \ + +1128 ? (*è( +size_t +è( +hay¡ack +) \ + +1129 : (((cÚ¡ *è( +ÃedË +))[1] == '\0' \ + +1130 ? + `¡rchr + ( +hay¡ack +, \ + +1131 ((cÚ¡ *è( +ÃedË +))[0]) \ + +1132 : + `¡r¡r + ( +hay¡ack +, +ÃedË +))) \ + +1133 : + `¡r¡r + ( +hay¡ack +, +ÃedË +))) + + ) + +1137 #ià! +defšed + +_HAVE_STRING_ARCH_¡¹ok_r + || defšed +_FORCE_INLINES + + +1138 #iâdeà +_HAVE_STRING_ARCH_¡¹ok_r + + +1139  + #__¡¹ok_r +( +s +, +£p +, +Ãx +) \ + +1140 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +£p +è&& + `__¡ršg2_1b±r_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à! +defšed + +_HAVE_STRING_ARCH_¡r£p + || defšed +_FORCE_INLINES + + +1177 #iâdeà +_HAVE_STRING_ARCH_¡r£p + + +1179 * +__¡r£p_g + (** +__¡ršgp +, cÚ¡ * +__d–im +); + +1180  + #__¡r£p +( +s +, +»jeù +) \ + +1181 +__ex‹nsiÚ__ + \ + +1182 ({  +__r0 +, +__r1 +, +__r2 +; \ + +1183 ( + `__bužtš_cÚ¡ªt_p + ( +»jeù +è&& + `__¡ršg2_1b±r_p + (reject) \ + +1184 && ( +__r0 + = ((cÚ¡ *è( +»jeù +))[0], \ + +1185 ((cÚ¡ *è( +»jeù +))[0] != '\0') \ + +1186 ? (( +__r1 + = ((cÚ¡ *è( +»jeù +))[1], \ + +1187 ((cÚ¡ *è( +»jeù +))[1] == '\0') \ + +1188 ? + `__¡r£p_1c + ( +s +, +__r0 +) \ + +1189 : (( +__r2 + = ((cÚ¡ *è( +»jeù +))[2], __r2 == '\0') \ + +1190 ? + `__¡r£p_2c + ( +s +, +__r0 +, +__r1 +) \ + +1191 : (((cÚ¡ *è( +»jeù +))[3] == '\0' \ + +1192 ? + `__¡r£p_3c + ( +s +, +__r0 +, +__r1 +, +__r2 +) \ + +1193 : + `__¡r£p_g + ( +s +, +»jeù +)))) \ + +1194 : + `__¡r£p_g + ( +s +, +»jeù +)); }) + + ) + +1197 +__STRING_INLINE + * +__¡r£p_1c + (** +__s +,  +__»jeù +); + +1198 +__STRING_INLINE + * + +1199 + $__¡r£p_1c + (** +__s +,  +__»jeù +) + +1201 * +__»tv® + = * +__s +; + +1202 ià( +__»tv® + !ð +NULL + && (* +__s + = + `¡rchr + (__»tv®, +__»jeù +)) != NULL) + +1203 *(* +__s +)++ = '\0'; + +1204  +__»tv® +; + +1205 + } +} + +1207 +__STRING_INLINE + * +__¡r£p_2c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +); + +1208 +__STRING_INLINE + * + +1209 + $__¡r£p_2c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +) + +1211 * +__»tv® + = * +__s +; + +1212 ià( +__»tv® + !ð +NULL +) + +1214 * +__ý + = +__»tv® +; + +1217 ià(* +__ý + == '\0') + +1219 +__ý + = +NULL +; + +1222 ià(* +__ý + =ð +__»jeù1 + || *__ý =ð +__»jeù2 +) + +1224 * +__ý +++ = '\0'; + +1227 ++ +__ý +; + +1229 * +__s + = +__ý +; + +1231  +__»tv® +; + +1232 + } +} + +1234 +__STRING_INLINE + * +__¡r£p_3c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +, + +1235  +__»jeù3 +); + +1236 +__STRING_INLINE + * + +1237 + $__¡r£p_3c + (** +__s +,  +__»jeù1 +,  +__»jeù2 +,  +__»jeù3 +) + +1239 * +__»tv® + = * +__s +; + +1240 ià( +__»tv® + !ð +NULL +) + +1242 * +__ý + = +__»tv® +; + +1245 ià(* +__ý + == '\0') + +1247 +__ý + = +NULL +; + +1250 ià(* +__ý + =ð +__»jeù1 + || *__ý =ð +__»jeù2 + || *__ý =ð +__»jeù3 +) + +1252 * +__ý +++ = '\0'; + +1255 ++ +__ý +; + +1257 * +__s + = +__ý +; + +1259  +__»tv® +; + +1260 + } +} + +1261 #ifdeà +__USE_MISC + + +1262  + #¡r£p +( +s +, +»jeù +è + `__¡r£p + (s,„ejeù) + + ) + +1269 #ifdeà +__USE_MISC + + +1271 #ià! +defšed + +_HAVE_STRING_ARCH_¡rdup + || !defšed +_HAVE_STRING_ARCH_¡ºdup + + +1272  + #__Ãed_m®loc_ªd_ÿÎoc + + + ) + +1273  + ~<¡dlib.h +> + +1276 #iâdeà +_HAVE_STRING_ARCH_¡rdup + + +1278 * + $__¡rdup + (cÚ¡ * +__¡ršg +è +__THROW + +__©Œibu‹_m®loc__ +; + +1279  + #__¡rdup +( +s +) \ + +1280 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_p + (s) \ + +1281 ? (((cÚ¡ *è( +s +))[0] == '\0' \ + +1282 ? (*è + `ÿÎoc + (( +size_t +) 1, (size_t) 1) \ + +1283 : ({ +size_t + +__Ën + = + `¡¾’ + ( +s +) + 1; \ + +1284 * +__»tv® + = (*è + `m®loc + ( +__Ën +); \ + +1285 ià( +__»tv® + !ð +NULL +) \ + +1286 +__»tv® + = (*è + `memýy + (__»tv®, +s +, +__Ën +); \ + +1287 +__»tv® +; + } +})) \ + +1288 : + `__¡rdup + ( +s +))) + + ) + +1290 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K8 + + +1291  + #¡rdup +( +s +è + `__¡rdup + (s) + + ) + +1295 #iâdeà +_HAVE_STRING_ARCH_¡ºdup + + +1297 * + $__¡ºdup + (cÚ¡ * +__¡ršg +, +size_t + +__n +) + +1298 +__THROW + +__©Œibu‹_m®loc__ +; + +1299  + #__¡ºdup +( +s +, +n +) \ + +1300 ( + `__ex‹nsiÚ__ + ( + `__bužtš_cÚ¡ªt_p + ( +s +è&& + `__¡ršg2_1b±r_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® + = (*è + `m®loc + ( +__Ën +); \ + +1309 ià( +__»tv® + !ð +NULL +) \ + +1311 +__»tv® +[ +__Ën + - 1] = '\0'; \ + +1312 +__»tv® + = (*è + `memýy + (__»tv®, +s +, \ + +1313 +__Ën + - 1); \ + +1315 +__»tv® +; + } +})) \ + +1316 : + `__¡ºdup + ( +s +, +n +))) + + ) + +1318 #ifdeà +__USE_XOPEN2K8 + + +1319  + #¡ºdup +( +s +, +n +è + `__¡ºdup + (s,‚) + + ) + +1325 #iâdeà +_FORCE_INLINES + + +1326 #undeà +__STRING_INLINE + + + @/usr/include/bits/string3.h + +18 #iâdeà +_STRING_H + + +22 #ià! +__GNUC_PREREQ + (5,0) + +23 +__w¬ndeþ + ( +__w¬n_mem£t_z”o_Ën +, + +27 #iâdeà +__ýlu¥lus + + +31 #undeà +memýy + + +32 #undeà +memmove + + +33 #undeà +mem£t + + +34 #undeà +¡rÿt + + +35 #undeà +¡rýy + + +36 #undeà +¡ºÿt + + +37 #undeà +¡ºýy + + +38 #ifdeà +__USE_GNU + + +39 #undeà +mempýy + + +40 #undeà +¡pýy + + +42 #ifdeà +__USE_MISC + + +43 #undeà +bcÝy + + +44 #undeà +bz”o + + +49 +__fÜtify_funùiÚ + * + +50 +__NTH + ( + $memýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +51 +size_t + +__Ën +)) + +53  + `__bužtš___memýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +54 + } +} + +56 +__fÜtify_funùiÚ + * + +57 +__NTH + ( + $memmove + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__Ën +)) + +59  + `__bužtš___memmove_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +60 + } +} + +62 #ifdeà +__USE_GNU + + +63 +__fÜtify_funùiÚ + * + +64 +__NTH + ( + $mempýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +65 +size_t + +__Ën +)) + +67  + `__bužtš___mempýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +68 + } +} + +77 +__fÜtify_funùiÚ + * + +78 +__NTH + ( + $mem£t + (* +__de¡ +,  +__ch +, +size_t + +__Ën +)) + +82 #ià! + `__GNUC_PREREQ + (5,0) + +83 ià( + `__bužtš_cÚ¡ªt_p + ( +__Ën +) && __len == 0 + +84 && (! + `__bužtš_cÚ¡ªt_p + ( +__ch +) || __ch != 0)) + +86 + `__w¬n_mem£t_z”o_Ën + (); + +87  +__de¡ +; + +90  + `__bužtš___mem£t_chk + ( +__de¡ +, +__ch +, +__Ën +, + `__bos0 + (__dest)); + +91 + } +} + +93 #ifdeà +__USE_MISC + + +94 +__fÜtify_funùiÚ +  + +95 +__NTH + ( + $bcÝy + (cÚ¡ * +__¤c +, * +__de¡ +, +size_t + +__Ën +)) + +97 (è + `__bužtš___memmove_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +98 + } +} + +100 +__fÜtify_funùiÚ +  + +101 +__NTH + ( + $bz”o + (* +__de¡ +, +size_t + +__Ën +)) + +103 (è + `__bužtš___mem£t_chk + ( +__de¡ +, '\0', +__Ën +, + `__bos0 + (__dest)); + +104 + } +} + +107 +__fÜtify_funùiÚ + * + +108 +__NTH + ( + $¡rýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +)) + +110  + `__bužtš___¡rýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +111 + } +} + +113 #ifdeà +__USE_GNU + + +114 +__fÜtify_funùiÚ + * + +115 +__NTH + ( + $¡pýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +)) + +117  + `__bužtš___¡pýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +118 + } +} + +122 +__fÜtify_funùiÚ + * + +123 +__NTH + ( + $¡ºýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +124 +size_t + +__Ën +)) + +126  + `__bužtš___¡ºýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos + (__dest)); + +127 + } +} + +130 * + $__¡²ýy_chk + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__n +, + +131 +size_t + +__de¡Ën +è +__THROW +; + +132 * + `__REDIRECT_NTH + ( +__¡²ýy_®Ÿs +, (* +__de¡ +, cÚ¡ * +__¤c +, + +133 +size_t + +__n +), +¡²ýy +); + +135 +__fÜtify_funùiÚ + * + +136 + `__NTH + ( + $¡²ýy + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__n +)) + +138 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1 + +139 && (! + `__bužtš_cÚ¡ªt_p + ( +__n +è|| __À> + `__bos + ( +__de¡ +))) + +140  + `__¡²ýy_chk + ( +__de¡ +, +__¤c +, +__n +, + `__bos + (__dest)); + +141  + `__¡²ýy_®Ÿs + ( +__de¡ +, +__¤c +, +__n +); + +142 + } +} + +145 +__fÜtify_funùiÚ + * + +146 +__NTH + ( + $¡rÿt + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +)) + +148  + `__bužtš___¡rÿt_chk + ( +__de¡ +, +__¤c +, + `__bos + (__dest)); + +149 + } +} + +152 +__fÜtify_funùiÚ + * + +153 +__NTH + ( + $¡ºÿt + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +154 +size_t + +__Ën +)) + +156  + `__bužtš___¡ºÿt_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos + (__dest)); + +157 + } +} + + @/usr/include/bits/sys_errlist.h + +19 #iâdeà +_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à +defšed + +__Ãed_timev® + || defšed +__USE_GNU + + +24 #iâdeà +_STRUCT_TIMEVAL + + +25  + #_STRUCT_TIMEVAL + 1 + + ) + +26  + ~ + +30  + stimev® + + +32 +__time_t + + mtv_£c +; + +33 +__su£cÚds_t + + mtv_u£c +; + +38 #iâdeà +__Ãed_timev® + + +39 #iâdeà +_BITS_TIME_H + + +40  + #_BITS_TIME_H + 1 + + ) + +48  + #CLOCKS_PER_SEC + (( +þock_t +è1000000) + + ) + +50 #ià(! +defšed + +__STRICT_ANSI__ + || defšed +__USE_POSIX +) \ + +51 && ! +defšed + + g__USE_XOPEN2K + + +54  + ~ + +55  +__syscÚf + (); + +56  + #CLK_TCK + (( +__þock_t +è + `__syscÚf + (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 #iâdef +_BITS_TYPES_H + + +24  + #_BITS_TYPES_H + 1 + + ) + +26  + ~<ã©u»s.h +> + +27  + ~ + +30  + t__u_ch¬ +; + +31  + t__u_shÜt +; + +32  + t__u_št +; + +33  + t__u_lÚg +; + +36 sigÃd  + t__št8_t +; + +37  + t__ušt8_t +; + +38 sigÃd  + t__št16_t +; + +39  + t__ušt16_t +; + +40 sigÃd  + t__št32_t +; + +41  + t__ušt32_t +; + +42 #ià +__WORDSIZE + == 64 + +43 sigÃd  + t__št64_t +; + +44  + t__ušt64_t +; + +46 +__ex‹nsiÚ__ + sigÃd  + t__št64_t +; + +47 +__ex‹nsiÚ__ +  + t__ušt64_t +; + +51 #ià +__WORDSIZE + == 64 + +52  + t__quad_t +; + +53  + t__u_quad_t +; + +55 +__ex‹nsiÚ__ +  + t__quad_t +; + +56 +__ex‹nsiÚ__ +  + 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 + +__ex‹nsiÚ__ +  + + ) + +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__u£cÚds_t +; + +141 +__STD_TYPE + +__SUSECONDS_T_TYPE + + g__su£cÚds_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__blkút_t +; + +159 +__STD_TYPE + +__BLKCNT64_T_TYPE + + g__blkút64_t +; + +162 +__STD_TYPE + +__FSBLKCNT_T_TYPE + + g__fsblkút_t +; + +163 +__STD_TYPE + +__FSBLKCNT64_T_TYPE + + g__fsblkút64_t +; + +166 +__STD_TYPE + +__FSFILCNT_T_TYPE + + g__fsfžút_t +; + +167 +__STD_TYPE + +__FSFILCNT64_T_TYPE + + g__fsfžút64_t +; + +170 +__STD_TYPE + +__FSWORD_T_TYPE + + g__fswÜd_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ÿÎ_ulÚg_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__sockËn_t +; + +192 #undeà +__STD_TYPE + + + @/usr/include/bits/unistd.h + +19 #iâdeà +_UNISTD_H + + +23 +ssize_t + + $__»ad_chk + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +24 +size_t + +__buæ’ +è +__wur +; + +25 +ssize_t + + `__REDIRECT + ( +__»ad_®Ÿs +, ( +__fd +, * +__buf +, + +26 +size_t + +__nby‹s +), +»ad +è +__wur +; + +27 +ssize_t + + `__REDIRECT + ( +__»ad_chk_w¬n +, + +28 ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +29 +size_t + +__buæ’ +), +__»ad_chk +) + +30 +__wur + + `__w¬Ç‰r + ("read called with bigger†engthhan size of " + +33 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +34 + $»ad + ( +__fd +, * +__buf +, +size_t + +__nby‹s +) + +36 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +38 ià(! + `__bužtš_cÚ¡ªt_p + ( +__nby‹s +)) + +39  + `__»ad_chk + ( +__fd +, +__buf +, +__nby‹s +, + `__bos0 + (__buf)); + +41 ià( +__nby‹s + > + `__bos0 + ( +__buf +)) + +42  + `__»ad_chk_w¬n + ( +__fd +, +__buf +, +__nby‹s +, + `__bos0 + (__buf)); + +44  + `__»ad_®Ÿs + ( +__fd +, +__buf +, +__nby‹s +); + +45 + } +} + +47 #ifdeà +__USE_UNIX98 + + +48 +ssize_t + + $__´—d_chk + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +49 +__off_t + +__off£t +, +size_t + +__bufsize +è +__wur +; + +50 +ssize_t + + $__´—d64_chk + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +51 +__off64_t + +__off£t +, +size_t + +__bufsize +è +__wur +; + +52 +ssize_t + + `__REDIRECT + ( +__´—d_®Ÿs +, + +53 ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +54 +__off_t + +__off£t +), +´—d +è +__wur +; + +55 +ssize_t + + `__REDIRECT + ( +__´—d64_®Ÿs +, + +56 ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +57 +__off64_t + +__off£t +), +´—d64 +è +__wur +; + +58 +ssize_t + + `__REDIRECT + ( +__´—d_chk_w¬n +, + +59 ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +60 +__off_t + +__off£t +, +size_t + +__bufsize +), +__´—d_chk +) + +61 +__wur + + `__w¬Ç‰r + ("pread called with bigger†engthhan size of " + +63 +ssize_t + + `__REDIRECT + ( +__´—d64_chk_w¬n +, + +64 ( +__fd +, * +__buf +, +size_t + +__nby‹s +, + +65 +__off64_t + +__off£t +, +size_t + +__bufsize +), + +66 +__´—d64_chk +) + +67 +__wur + + `__w¬Ç‰r + ("pread64 called with bigger†engthhan size of " + +70 #iâdeà +__USE_FILE_OFFSET64 + + +71 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +72 + $´—d + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, +__off_t + +__off£t +) + +74 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +76 ià(! + `__bužtš_cÚ¡ªt_p + ( +__nby‹s +)) + +77  + `__´—d_chk + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + `__bos0 + (__buf)); + +79 iàÐ +__nby‹s + > + `__bos0 + ( +__buf +)) + +80  + `__´—d_chk_w¬n + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + +81 + `__bos0 + ( +__buf +)); + +83  + `__´—d_®Ÿs + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +); + +84 + } +} + +86 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +87 + $´—d + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, +__off64_t + +__off£t +) + +89 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +91 ià(! + `__bužtš_cÚ¡ªt_p + ( +__nby‹s +)) + +92  + `__´—d64_chk + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + `__bos0 + (__buf)); + +94 iàÐ +__nby‹s + > + `__bos0 + ( +__buf +)) + +95  + `__´—d64_chk_w¬n + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + +96 + `__bos0 + ( +__buf +)); + +99  + `__´—d64_®Ÿs + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +); + +100 + } +} + +103 #ifdeà +__USE_LARGEFILE64 + + +104 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +105 + $´—d64 + ( +__fd +, * +__buf +, +size_t + +__nby‹s +, +__off64_t + +__off£t +) + +107 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +109 ià(! + `__bužtš_cÚ¡ªt_p + ( +__nby‹s +)) + +110  + `__´—d64_chk + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + `__bos0 + (__buf)); + +112 iàÐ +__nby‹s + > + `__bos0 + ( +__buf +)) + +113  + `__´—d64_chk_w¬n + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +, + +114 + `__bos0 + ( +__buf +)); + +117  + `__´—d64_®Ÿs + ( +__fd +, +__buf +, +__nby‹s +, +__off£t +); + +118 + } +} + +122 #ià +defšed + +__USE_XOPEN_EXTENDED + || defšed +__USE_XOPEN2K + + +123 +ssize_t + + $__»adlšk_chk + (cÚ¡ * +__»¡riù + +__·th +, + +124 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +125 +size_t + +__buæ’ +) + +126 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +127 +ssize_t + + `__REDIRECT_NTH + ( +__»adlšk_®Ÿs +, + +128 (cÚ¡ * +__»¡riù + +__·th +, + +129 * +__»¡riù + +__buf +, +size_t + +__Ën +), +»adlšk +) + +130 + `__nÚnuÎ + ((1, 2)è +__wur +; + +131 +ssize_t + + `__REDIRECT_NTH + ( +__»adlšk_chk_w¬n +, + +132 (cÚ¡ * +__»¡riù + +__·th +, + +133 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +134 +size_t + +__buæ’ +), +__»adlšk_chk +) + +135 + `__nÚnuÎ + ((1, 2)è +__wur + + `__w¬Ç‰r + ("readlink called with bigger†ength " + +138 +__fÜtify_funùiÚ + + `__nÚnuÎ + ((1, 2)è +__wur + +ssize_t + + +139 + `__NTH + ( + $»adlšk + (cÚ¡ * +__»¡riù + +__·th +, *__»¡riù +__buf +, + +140 +size_t + +__Ën +)) + +142 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +144 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +145  + `__»adlšk_chk + ( +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +147 iàÐ +__Ën + > + `__bos + ( +__buf +)) + +148  + `__»adlšk_chk_w¬n + ( +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +150  + `__»adlšk_®Ÿs + ( +__·th +, +__buf +, +__Ën +); + +151 + } +} + +154 #ifdeà +__USE_ATFILE + + +155 +ssize_t + + $__»adlšk©_chk + ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +156 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +157 +size_t + +__buæ’ +) + +158 +__THROW + + `__nÚnuÎ + ((2, 3)è +__wur +; + +159 +ssize_t + + `__REDIRECT_NTH + ( +__»adlšk©_®Ÿs +, + +160 ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +161 * +__»¡riù + +__buf +, +size_t + +__Ën +), + +162 +»adlšk© +) + +163 + `__nÚnuÎ + ((2, 3)è +__wur +; + +164 +ssize_t + + `__REDIRECT_NTH + ( +__»adlšk©_chk_w¬n +, + +165 ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +166 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +167 +size_t + +__buæ’ +), +__»adlšk©_chk +) + +168 + `__nÚnuÎ + ((2, 3)è +__wur + + `__w¬Ç‰r + ("readlinkat called with bigger " + +172 +__fÜtify_funùiÚ + + `__nÚnuÎ + ((2, 3)è +__wur + +ssize_t + + +173 + `__NTH + ( + $»adlšk© + ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +174 * +__»¡riù + +__buf +, +size_t + +__Ën +)) + +176 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +178 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +179  + `__»adlšk©_chk + ( +__fd +, +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +181 ià( +__Ën + > + `__bos + ( +__buf +)) + +182  + `__»adlšk©_chk_w¬n + ( +__fd +, +__·th +, +__buf +, +__Ën +, + +183 + `__bos + ( +__buf +)); + +185  + `__»adlšk©_®Ÿs + ( +__fd +, +__·th +, +__buf +, +__Ën +); + +186 + } +} + +189 * + $__g‘cwd_chk + (* +__buf +, +size_t + +__size +, size_ˆ +__buæ’ +) + +190 +__THROW + +__wur +; + +191 * + `__REDIRECT_NTH + ( +__g‘cwd_®Ÿs +, + +192 (* +__buf +, +size_t + +__size +), +g‘cwd +è +__wur +; + +193 * + `__REDIRECT_NTH + ( +__g‘cwd_chk_w¬n +, + +194 (* +__buf +, +size_t + +__size +, size_ˆ +__buæ’ +), + +195 +__g‘cwd_chk +) + +196 +__wur + + `__w¬Ç‰r + ("getcwd caller with bigger†engthhan size of " + +199 +__fÜtify_funùiÚ + +__wur + * + +200 + `__NTH + ( + $g‘cwd + (* +__buf +, +size_t + +__size +)) + +202 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +204 ià(! + `__bužtš_cÚ¡ªt_p + ( +__size +)) + +205  + `__g‘cwd_chk + ( +__buf +, +__size +, + `__bos + (__buf)); + +207 ià( +__size + > + `__bos + ( +__buf +)) + +208  + `__g‘cwd_chk_w¬n + ( +__buf +, +__size +, + `__bos + (__buf)); + +210  + `__g‘cwd_®Ÿs + ( +__buf +, +__size +); + +211 + } +} + +213 #ià +defšed + +__USE_MISC + || defšed +__USE_XOPEN_EXTENDED + + +214 * + $__g‘wd_chk + (* +__buf +, +size_t + +buæ’ +) + +215 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +216 * + `__REDIRECT_NTH + ( +__g‘wd_w¬n +, (* +__buf +), +g‘wd +) + +217 + `__nÚnuÎ + ((1)è +__wur + + `__w¬Ç‰r + ("please use getcwd instead,‡s getwd " + +220 +__fÜtify_funùiÚ + + `__nÚnuÎ + ((1)è +__©Œibu‹_d•»ÿ‹d__ + +__wur + * + +221 + `__NTH + ( + $g‘wd + (* +__buf +)) + +223 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +224  + `__g‘wd_chk + ( +__buf +, + `__bos + (__buf)); + +225  + `__g‘wd_w¬n + ( +__buf +); + +226 + } +} + +229 +size_t + + $__cÚf¡r_chk + ( +__Çme +, * +__buf +, +size_t + +__Ën +, + +230 +size_t + +__buæ’ +è +__THROW +; + +231 +size_t + + `__REDIRECT_NTH + ( +__cÚf¡r_®Ÿs +, ( +__Çme +, * +__buf +, + +232 +size_t + +__Ën +), +cÚf¡r +); + +233 +size_t + + `__REDIRECT_NTH + ( +__cÚf¡r_chk_w¬n +, + +234 ( +__Çme +, * +__buf +, +size_t + +__Ën +, + +235 +size_t + +__buæ’ +), +__cÚf¡r_chk +) + +236 + `__w¬Ç‰r + ("confstr called with bigger†engthhan size of destination " + +239 +__fÜtify_funùiÚ + +size_t + + +240 + `__NTH + ( + $cÚf¡r + ( +__Çme +, * +__buf +, +size_t + +__Ën +)) + +242 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +244 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +245  + `__cÚf¡r_chk + ( +__Çme +, +__buf +, +__Ën +, + `__bos + (__buf)); + +247 ià( + `__bos + ( +__buf +è< +__Ën +) + +248  + `__cÚf¡r_chk_w¬n + ( +__Çme +, +__buf +, +__Ën +, + `__bos + (__buf)); + +250  + `__cÚf¡r_®Ÿs + ( +__Çme +, +__buf +, +__Ën +); + +251 + } +} + +254  + $__g‘groups_chk + ( +__size +, +__gid_t + +__li¡ +[], +size_t + +__li¡Ën +) + +255 +__THROW + +__wur +; + +256  + `__REDIRECT_NTH + ( +__g‘groups_®Ÿs +, ( +__size +, +__gid_t + +__li¡ +[]), + +257 +g‘groups +è +__wur +; + +258  + `__REDIRECT_NTH + ( +__g‘groups_chk_w¬n +, + +259 ( +__size +, +__gid_t + +__li¡ +[], +size_t + +__li¡Ën +), + +260 +__g‘groups_chk +) + +261 +__wur + + `__w¬Ç‰r + ("getgroups called with bigger group counthan what " + +264 +__fÜtify_funùiÚ +  + +265 + `__NTH + ( + $g‘groups + ( +__size +, +__gid_t + +__li¡ +[])) + +267 ià( + `__bos + ( +__li¡ +è!ð( +size_t +) -1) + +269 ià(! + `__bužtš_cÚ¡ªt_p + ( +__size +) || __size < 0) + +270  + `__g‘groups_chk + ( +__size +, +__li¡ +, + `__bos + (__list)); + +272 ià( +__size + *  ( +__gid_t +è> + `__bos + ( +__li¡ +)) + +273  + `__g‘groups_chk_w¬n + ( +__size +, +__li¡ +, + `__bos + (__list)); + +275  + `__g‘groups_®Ÿs + ( +__size +, +__li¡ +); + +276 + } +} + +279  + $__‰yÇme_r_chk + ( +__fd +, * +__buf +, +size_t + +__buæ’ +, + +280 +size_t + +__ėl +è +__THROW + + `__nÚnuÎ + ((2)); + +281  + `__REDIRECT_NTH + ( +__‰yÇme_r_®Ÿs +, ( +__fd +, * +__buf +, + +282 +size_t + +__buæ’ +), +‰yÇme_r +) + +283 + `__nÚnuÎ + ((2)); + +284  + `__REDIRECT_NTH + ( +__‰yÇme_r_chk_w¬n +, + +285 ( +__fd +, * +__buf +, +size_t + +__buæ’ +, + +286 +size_t + +__ėl +), +__‰yÇme_r_chk +) + +287 + `__nÚnuÎ + ((2)è + `__w¬Ç‰r + ("ttyname_r called with bigger buflenhan " + +290 +__fÜtify_funùiÚ +  + +291 + `__NTH + ( + $‰yÇme_r + ( +__fd +, * +__buf +, +size_t + +__buæ’ +)) + +293 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +295 ià(! + `__bužtš_cÚ¡ªt_p + ( +__buæ’ +)) + +296  + `__‰yÇme_r_chk + ( +__fd +, +__buf +, +__buæ’ +, + `__bos + (__buf)); + +298 ià( +__buæ’ + > + `__bos + ( +__buf +)) + +299  + `__‰yÇme_r_chk_w¬n + ( +__fd +, +__buf +, +__buæ’ +, + `__bos + (__buf)); + +301  + `__‰yÇme_r_®Ÿs + ( +__fd +, +__buf +, +__buæ’ +); + +302 + } +} + +305 #ià +defšed + +__USE_REENTRANT + || defšed +__USE_POSIX199506 + + +306  + $__g‘logš_r_chk + (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +) + +307 + `__nÚnuÎ + ((1)); + +308  + `__REDIRECT + ( +__g‘logš_r_®Ÿs +, (* +__buf +, +size_t + +__buæ’ +), + +309 +g‘logš_r +è + `__nÚnuÎ + ((1)); + +310  + `__REDIRECT + ( +__g‘logš_r_chk_w¬n +, + +311 (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +), + +312 +__g‘logš_r_chk +) + +313 + `__nÚnuÎ + ((1)è + `__w¬Ç‰r + ("getlogin_r called with bigger buflenhan " + +316 +__fÜtify_funùiÚ +  + +317 + $g‘logš_r + (* +__buf +, +size_t + +__buæ’ +) + +319 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +321 ià(! + `__bužtš_cÚ¡ªt_p + ( +__buæ’ +)) + +322  + `__g‘logš_r_chk + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +324 ià( +__buæ’ + > + `__bos + ( +__buf +)) + +325  + `__g‘logš_r_chk_w¬n + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +327  + `__g‘logš_r_®Ÿs + ( +__buf +, +__buæ’ +); + +328 + } +} + +332 #ià +defšed + +__USE_MISC + || defšed +__USE_UNIX98 + + +333  + $__g‘ho¡Çme_chk + (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +) + +334 +__THROW + + `__nÚnuÎ + ((1)); + +335  + `__REDIRECT_NTH + ( +__g‘ho¡Çme_®Ÿs +, (* +__buf +, +size_t + +__buæ’ +), + +336 +g‘ho¡Çme +è + `__nÚnuÎ + ((1)); + +337  + `__REDIRECT_NTH + ( +__g‘ho¡Çme_chk_w¬n +, + +338 (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +), + +339 +__g‘ho¡Çme_chk +) + +340 + `__nÚnuÎ + ((1)è + `__w¬Ç‰r + ("gethostname called with bigger buflenhan " + +343 +__fÜtify_funùiÚ +  + +344 + `__NTH + ( + $g‘ho¡Çme + (* +__buf +, +size_t + +__buæ’ +)) + +346 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +348 ià(! + `__bužtš_cÚ¡ªt_p + ( +__buæ’ +)) + +349  + `__g‘ho¡Çme_chk + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +351 ià( +__buæ’ + > + `__bos + ( +__buf +)) + +352  + `__g‘ho¡Çme_chk_w¬n + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +354  + `__g‘ho¡Çme_®Ÿs + ( +__buf +, +__buæ’ +); + +355 + } +} + +359 #ià +defšed + +__USE_MISC + || (defšed +__USE_XOPEN + && !defšed +__USE_UNIX98 +) + +360  + $__g‘domašÇme_chk + (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +) + +361 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +362  + `__REDIRECT_NTH + ( +__g‘domašÇme_®Ÿs +, (* +__buf +, + +363 +size_t + +__buæ’ +), + +364 +g‘domašÇme +è + `__nÚnuÎ + ((1)è +__wur +; + +365  + `__REDIRECT_NTH + ( +__g‘domašÇme_chk_w¬n +, + +366 (* +__buf +, +size_t + +__buæ’ +, size_ˆ +__ėl +), + +367 +__g‘domašÇme_chk +) + +368 + `__nÚnuÎ + ((1)è +__wur + + `__w¬Ç‰r + ("getdomainname called with bigger " + +372 +__fÜtify_funùiÚ +  + +373 + `__NTH + ( + $g‘domašÇme + (* +__buf +, +size_t + +__buæ’ +)) + +375 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +377 ià(! + `__bužtš_cÚ¡ªt_p + ( +__buæ’ +)) + +378  + `__g‘domašÇme_chk + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +380 ià( +__buæ’ + > + `__bos + ( +__buf +)) + +381  + `__g‘domašÇme_chk_w¬n + ( +__buf +, +__buæ’ +, + `__bos + (__buf)); + +383  + `__g‘domašÇme_®Ÿs + ( +__buf +, +__buæ’ +); + +384 + } +} + + @/usr/include/bits/waitflags.h + +19 #ià! +defšed + +_SYS_WAIT_H + && !defšed +_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à +defšed + +__USE_XOPEN + || defšed +__USE_XOPEN2K8 + + +41 #iâdeà +__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à! +defšed + +_SYS_WAIT_H + && !defšed +_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 (((sigÃd è((( +¡©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  + ~<’dŸn.h +> + +66  + uwa™ + + +68  + mw_¡©us +; + +71 #if +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +72  + m__w_‹rmsig +:7; + +73  + m__w_cÜedump +:1; + +74  + m__w_»tcode +:8; + +77 #if +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +79  + m__w_»tcode +:8; + +80  + m__w_cÜedump +:1; + +81  + m__w_‹rmsig +:7; + +83 } + m__wa™_‹rmš©ed +; + +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™_‹rmš©ed +. +__w_‹rmsig + + + ) + +100  + #w_cÜedump + +__wa™_‹rmš©ed +. +__w_cÜedump + + + ) + +101  + #w_»tcode + +__wa™_‹rmš©ed +. +__w_»tcode + + + ) + +102  + #w_¡Ýsig + +__wa™_¡Ý³d +. +__w_¡Ýsig + + + ) + +103  + #w_¡Ýv® + +__wa™_¡Ý³d +. +__w_¡Ýv® + + + ) + + @/usr/include/bits/wchar.h + +19 #iâdeà +_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à +defšed + +__x86_64__ + && !defšed +__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 #iâdef +_ENDIAN_H + + +19  + #_ENDIAN_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +31  + #__LITTLE_ENDIAN + 1234 + + ) + +32  + #__BIG_ENDIAN + 4321 + + ) + +33  + #__PDP_ENDIAN + 3412 + + ) + +36  + ~ + +40 #iâdeà +__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à +defšed + +__USE_MISC + && !defšed +__ASSEMBLER__ + + +60  + ~ + +62 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +63  + #htobe16 +( +x +è + `__bsw­_16 + (x) + + ) + +64  + #htÞe16 +( +x +è(x) + + ) + +65  + #be16toh +( +x +è + `__bsw­_16 + (x) + + ) + +66  + #Ë16toh +( +x +è(x) + + ) + +68  + #htobe32 +( +x +è + `__bsw­_32 + (x) + + ) + +69  + #htÞe32 +( +x +è(x) + + ) + +70  + #be32toh +( +x +è + `__bsw­_32 + (x) + + ) + +71  + #Ë32toh +( +x +è(x) + + ) + +73  + #htobe64 +( +x +è + `__bsw­_64 + (x) + + ) + +74  + #htÞe64 +( +x +è(x) + + ) + +75  + #be64toh +( +x +è + `__bsw­_64 + (x) + + ) + +76  + #Ë64toh +( +x +è(x) + + ) + +79  + #htobe16 +( +x +è(x) + + ) + +80  + #htÞe16 +( +x +è + `__bsw­_16 + (x) + + ) + +81  + #be16toh +( +x +è(x) + + ) + +82  + #Ë16toh +( +x +è + `__bsw­_16 + (x) + + ) + +84  + #htobe32 +( +x +è(x) + + ) + +85  + #htÞe32 +( +x +è + `__bsw­_32 + (x) + + ) + +86  + #be32toh +( +x +è(x) + + ) + +87  + #Ë32toh +( +x +è + `__bsw­_32 + (x) + + ) + +89  + #htobe64 +( +x +è(x) + + ) + +90  + #htÞe64 +( +x +è + `__bsw­_64 + (x) + + ) + +91  + #be64toh +( +x +è(x) + + ) + +92  + #Ë64toh +( +x +è + `__bsw­_64 + (x) + + ) + + @/usr/include/features.h + +18 #iâdef +_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 #iâdeà +_LOOSE_KERNEL_NAMES + + +125  + #__KERNEL_STRICT_NAMES + + + ) + +135 #ià +defšed + +__GNUC__ + && defšed +__GNUC_MINOR__ + + +136  + #__GNUC_PREREQ +( +maj +, +mš +) \ + +137 (( +__GNUC__ + << 16è+ +__GNUC_MINOR__ + >ð(( +maj +è<< 16è+ ( +mš +)) + + ) + +139  + #__GNUC_PREREQ +( +maj +, +mš +è0 + + ) + +146 #ià( +defšed + +_BSD_SOURCE + || defšed +_SVID_SOURCE +) \ + +147 && ! +defšed + + 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à( +defšed + +_DEFAULT_SOURCE + \ + +183 || (! +defšed + + g__STRICT_ANSI__ + \ + +184 && ! +defšed + + g_ISOC99_SOURCE + \ + +185 && ! +defšed + + g_POSIX_SOURCE + && !defšed + g_POSIX_C_SOURCE + \ + +186 && ! +defšed + + g_XOPEN_SOURCE +)) + +187 #undeà +_DEFAULT_SOURCE + + +188  + #_DEFAULT_SOURCE + 1 + + ) + +192 #ià( +defšed + +_ISOC11_SOURCE + \ + +193 || ( +defšed + + g__STDC_VERSION__ + && __STDC_VERSION__ >= 201112L)) + +194  + #__USE_ISOC11 + 1 + + ) + +198 #ià( +defšed + +_ISOC99_SOURCE + || defšed +_ISOC11_SOURCE + \ + +199 || ( +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L)) + +200  + #__USE_ISOC99 + 1 + + ) + +204 #ià( +defšed + +_ISOC99_SOURCE + || defšed +_ISOC11_SOURCE + \ + +205 || ( +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199409L)) + +206  + #__USE_ISOC95 + 1 + + ) + +213 #ià(( +defšed + +__ýlu¥lus + && __cplusplus >= 201103L) \ + +214 || +defšed + +__GXX_EXPERIMENTAL_CXX0X__ +) + +215  + #__USE_ISOCXX11 + 1 + + ) + +221 #ifdeà +_DEFAULT_SOURCE + + +222 #ià! +defšed + +_POSIX_SOURCE + && !defšed +_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à((! +defšed + +__STRICT_ANSI__ + \ + +231 || ( +defšed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) >= 500)) \ + +232 && ! +defšed + +_POSIX_SOURCE + && !defšed +_POSIX_C_SOURCE +) + +233  + #_POSIX_SOURCE + 1 + + ) + +234 #ià +defšed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 500 + +235  + #_POSIX_C_SOURCE + 2 + + ) + +236 #–ià +defšed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 600 + +237  + #_POSIX_C_SOURCE + 199506L + + ) + +238 #–ià +defšed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 700 + +239  + #_POSIX_C_SOURCE + 200112L + + ) + +241  + #_POSIX_C_SOURCE + 200809L + + ) + +243  + #__USE_POSIX_IMPLICITLY + 1 + + ) + +246 #ià( +defšed + +_POSIX_SOURCE + \ + +247 || ( +defšed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >= 1) \ + +248 || +defšed + +_XOPEN_SOURCE +) + +249  + #__USE_POSIX + 1 + + ) + +252 #ià +defšed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >ð2 || defšed +_XOPEN_SOURCE + + +253  + #__USE_POSIX2 + 1 + + ) + +256 #ià +defšed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199309L + +257  + #__USE_POSIX199309 + 1 + + ) + +260 #ià +defšed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199506L + +261  + #__USE_POSIX199506 + 1 + + ) + +264 #ià +defšed + +_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à +defšed + +_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à +defšed + +_FILE_OFFSET_BITS + && _FILE_OFFSET_BITS == 64 + +313  + #__USE_FILE_OFFSET64 + 1 + + ) + +316 #ià +defšed + +_DEFAULT_SOURCE + + +317  + #__USE_MISC + 1 + + ) + +320 #ifdef +_ATFILE_SOURCE + + +321  + #__USE_ATFILE + 1 + + ) + +324 #ifdef +_GNU_SOURCE + + +325  + #__USE_GNU + 1 + + ) + +328 #ià +defšed + +_REENTRANT + || defšed +_THREAD_SAFE + + +329  + #__USE_REENTRANT + 1 + + ) + +332 #ià +defšed + +_FORTIFY_SOURCE + && _FORTIFY_SOURCE > 0 \ + +333 && +__GNUC_PREREQ + (4, 1è&& +defšed + + 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  + ~<¡dc-´edef.h +> + +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 #iâdeà +__ASSEMBLER__ + + +366 #iâdeà +_SYS_CDEFS_H + + +367  + ~ + +372 #ià +defšed + +__USE_FILE_OFFSET64 + && !defšed +__REDIRECT + + +373  + #__USE_LARGEFILE + 1 + + ) + +374  + #__USE_LARGEFILE64 + 1 + + ) + +380 #ià +__GNUC_PREREQ + (2, 7è&& +defšed + +__OPTIMIZE__ + \ + +381 && ! +defšed + + g__OPTIMIZE_SIZE__ + && !defšed + g__NO_INLINE__ + \ + +382 && +defšed + + g__ex‹º_šlše + + +383  + #__USE_EXTERN_INLINES + 1 + + ) + +391  + ~ + + @/usr/include/libio.h + +28 #iâdeà +_IO_STDIO_H + + +29  + #_IO_STDIO_H + + + ) + +31  + ~<_G_cÚfig.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_icÚv_t + +_G_icÚv_t + + + ) + +42  + #_IO_HAVE_ST_BLKSIZE + +_G_HAVE_ST_BLKSIZE + + + ) + +43  + #_IO_BUFSIZ + +_G_BUFSIZ + + + ) + +44  + #_IO_va_li¡ + +_G_va_li¡ + + + ) + +45  + #_IO_wšt_t + +wšt_t + + + ) + +48  + #__Ãed___va_li¡ + + + ) + +49  + ~<¡d¬g.h +> + +50 #ifdeà +__GNUC_VA_LIST + + +51 #undeà +_IO_va_li¡ + + +52  + #_IO_va_li¡ + +__gnuc_va_li¡ + + + ) + +55 #iâdeà +__P + + +56  + ~ + +59  + #_IO_UNIFIED_JUMPTABLES + 1 + + ) + +61 #iâdeà +EOF + + +62  + #EOF + (-1) + + ) + +64 #iâdeà +NULL + + +65 #ià +defšed + +__GNUG__ + && \ + +66 ( + g__GNUC__ + > 2 || (__GNUC__ =ð2 && +__GNUC_MINOR__ + >= 8)) + +67  + #NULL + ( +__nuÎ +) + + ) + +69 #ià! +defšed +( +__ýlu¥lus +) + +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_m¬k” + { + +157  +_IO_m¬k” + * + m_Ãxt +; + +158  +_IO_FILE + * + m_sbuf +; + +162  + m_pos +; + +164  +£t_¡»ampos +( +¡»ampos + +¥ +è{ + m_¥os + = sp; } + +165  +£t_off£t +( +off£t +è{ + m_pos + = off£t; + m_¥os + = ( +¡»ampos +)(-2); } + +166 + mpublic +: + +167 +¡»amm¬k” +( +¡»ambuf + * +sb +); + +168 ~ +¡»amm¬k” +(); + +169  +§všg +(è{  + m_¥os + == -2; } + +170  +d– +( +¡»amm¬k” +&); + +171  +d– +(); + +176 + e__codecvt_»suÉ + + +178 + m__codecvt_ok +, + +179 + m__codecvt_·¹Ÿl +, + +180 + m__codecvt_”rÜ +, + +181 + m__codecvt_nocÚv + + +184 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +187  + s_IO_codecvt + + +189 (* + m__codecvt_de¡r +è( + m_IO_codecvt + *); + +190 +__codecvt_»suÉ + (* +__codecvt_do_out +è( + m_IO_codecvt + *, + +191 + m__mb¡©e_t + *, + +192 cÚ¡ + mwch¬_t + *, + +193 cÚ¡ + mwch¬_t + *, + +194 cÚ¡ + mwch¬_t + **, *, + +196 +__codecvt_»suÉ + (* +__codecvt_do_unshiá +è( + m_IO_codecvt + *, + +197 + m__mb¡©e_t + *, *, + +199 +__codecvt_»suÉ + (* +__codecvt_do_š +è( + m_IO_codecvt + *, + +200 + m__mb¡©e_t + *, + +202 cÚ¡ **, + mwch¬_t + *, + +203 + mwch¬_t + *, wchar_t **); + +204 (* + m__codecvt_do_’codšg +è( + m_IO_codecvt + *); + +205 (* + m__codecvt_do_®ways_nocÚv +è( + m_IO_codecvt + *); + +206 (* + m__codecvt_do_Ëngth +è( + m_IO_codecvt + *, + m__mb¡©e_t + *, + +207 cÚ¡ *, cÚ¡ *, + m_IO_size_t +); + +208 (* + m__codecvt_do_max_Ëngth +è( + m_IO_codecvt + *); + +210 +_IO_icÚv_t + + m__cd_š +; + +211 +_IO_icÚv_t + + m__cd_out +; + +215  + s_IO_wide_d©a + + +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_wr™e_ba£ +; + +221 +wch¬_t + * + m_IO_wr™e_±r +; + +222 +wch¬_t + * + m_IO_wr™e_’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 +__mb¡©e_t + + m_IO_¡©e +; + +232 +__mb¡©e_t + + m_IO_Ï¡_¡©e +; + +233  +_IO_codecvt + + m_codecvt +; + +235 +wch¬_t + + m_shÜtbuf +[1]; + +237 cÚ¡  +_IO_jump_t + * + m_wide_vbË +; + +241  + s_IO_FILE + { + +242  + m_æags +; + +243  + #_IO_fže_æags + +_æags + + + ) + +247 * + m_IO_»ad_±r +; + +248 * + m_IO_»ad_’d +; + +249 * + m_IO_»ad_ba£ +; + +250 * + m_IO_wr™e_ba£ +; + +251 * + m_IO_wr™e_±r +; + +252 * + m_IO_wr™e_’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_m¬k” + * + m_m¬k”s +; + +262  +_IO_FILE + * + m_chaš +; + +264  + m_fž’o +; + +266  + m_blksize +; + +268  + m_æags2 +; + +270 +_IO_off_t + + m_Þd_off£t +; + +272  + #__HAVE_COLUMN + + + ) + +274  + m_cur_cÞumn +; + +275 sigÃd  + m_vbË_off£t +; + +276  + m_shÜtbuf +[1]; + +280 +_IO_lock_t + * + m_lock +; + +281 #ifdeà +_IO_USE_OLD_IO_FILE + + +284  + s_IO_FILE_com¶‘e + + +286  +_IO_FILE + + m_fže +; + +288 #ià +defšed + +_G_IO_IO_FILE_VERSION + && _G_IO_IO_FILE_VERSION == 0x20001 + +289 +_IO_off64_t + + m_off£t +; + +290 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +292  +_IO_codecvt + * + m_codecvt +; + +293  +_IO_wide_d©a + * + m_wide_d©a +; + +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_unu£d2 +[15 *  (è- 4 *  (*è-  ( +size_t +)]; + +309 #iâdeà +__ýlu¥lus + + +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_¡d”r_ +; + +318 #iâdeà +_LIBC + + +319  + #_IO_¡dš + (( +_IO_FILE +*)(& +_IO_2_1_¡dš_ +)) + + ) + +320  + #_IO_¡dout + (( +_IO_FILE +*)(& +_IO_2_1_¡dout_ +)) + + ) + +321  + #_IO_¡d”r + (( +_IO_FILE +*)(& +_IO_2_1_¡d”r_ +)) + + ) + +323 +_IO_FILE + * +_IO_¡dš + +©Œibu‹_hidd’ +; + +324 +_IO_FILE + * +_IO_¡dout + +©Œibu‹_hidd’ +; + +325 +_IO_FILE + * +_IO_¡d”r + +©Œibu‹_hidd’ +; + +333  +__ssize_t + + t__io_»ad_â + (* + t__cook› +, * + t__buf +, + tsize_t + + t__nby‹s +); + +341  +__ssize_t + + t__io_wr™e_â + (* + 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_funùiÚ_t +; + +359  +__io_wr™e_â + + tcook›_wr™e_funùiÚ_t +; + +360  +__io_£ek_â + + tcook›_£ek_funùiÚ_t +; + +361  +__io_þo£_â + + tcook›_þo£_funùiÚ_t +; + +366 +__io_»ad_â + * + m»ad +; + +367 +__io_wr™e_â + * + mwr™e +; + +368 +__io_£ek_â + * + m£ek +; + +369 +__io_þo£_â + * + mþo£ +; + +370 } + t_IO_cook›_io_funùiÚs_t +; + +371  +_IO_cook›_io_funùiÚs_t + + tcook›_io_funùiÚs_t +; + +373  + g_IO_cook›_fže +; + +376  +_IO_cook›_š™ + ( +_IO_cook›_fže + * +__cfže +,  +__»ad_wr™e +, + +377 * +__cook› +, +_IO_cook›_io_funùiÚs_t + +__âs +); + +381 #ifdeà +__ýlu¥lus + + +385  +__und”æow + ( +_IO_FILE + *); + +386  +__uæow + ( +_IO_FILE + *); + +387  +__ov”æow + ( +_IO_FILE + *, ); + +388 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +389 +_IO_wšt_t + +__wund”æow + ( +_IO_FILE + *); + +390 +_IO_wšt_t + +__wuæow + ( +_IO_FILE + *); + +391 +_IO_wšt_t + +__wov”æow + ( +_IO_FILE + *, _IO_wint_t); + +394 #ià +__GNUC__ + >= 3 + +395  + #_IO_BE +( +ex´ +, +»s +è + `__bužtš_ex³ù + (Óx´),„es) + + ) + +397  + #_IO_BE +( +ex´ +, +»s +èÓx´) + + ) + +400  + #_IO_g‘c_uÆocked +( +_å +) \ + +401 ( + `_IO_BE + (( +_å +)-> +_IO_»ad_±r + >ð(_å)-> +_IO_»ad_’d +, 0) \ + +402 ? + `__uæow + ( +_å +è: *(*è(_å)-> +_IO_»ad_±r +++) + + ) + +403  + #_IO_³ekc_uÆocked +( +_å +) \ + +404 ( + `_IO_BE + (( +_å +)-> +_IO_»ad_±r + >ð(_å)-> +_IO_»ad_’d +, 0) \ + +405 && + `__und”æow + ( +_å +è=ð +EOF + ? EOF \ + +406 : *(*è( +_å +)-> +_IO_»ad_±r +) + + ) + +407  + #_IO_putc_uÆocked +( +_ch +, +_å +) \ + +408 ( + `_IO_BE + (( +_å +)-> +_IO_wr™e_±r + >ð(_å)-> +_IO_wr™e_’d +, 0) \ + +409 ? + `__ov”æow + ( +_å +, (è( +_ch +)) \ + +410 : (è(*( +_å +)-> +_IO_wr™e_±r +++ = ( +_ch +))) + + ) + +412 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +413  + #_IO_g‘wc_uÆocked +( +_å +) \ + +414 ( + `_IO_BE + (( +_å +)-> +_wide_d©a + =ð +NULL + \ + +415 || (( +_å +)-> +_wide_d©a +-> +_IO_»ad_±r + \ + +416 >ð( +_å +)-> +_wide_d©a +-> +_IO_»ad_’d +), 0) \ + +417 ? + `__wuæow + ( +_å +è: ( +_IO_wšt_t +è*(_å)-> +_wide_d©a +-> +_IO_»ad_±r +++) + + ) + +418  + #_IO_putwc_uÆocked +( +_wch +, +_å +) \ + +419 ( + `_IO_BE + (( +_å +)-> +_wide_d©a + =ð +NULL + \ + +420 || (( +_å +)-> +_wide_d©a +-> +_IO_wr™e_±r + \ + +421 >ð( +_å +)-> +_wide_d©a +-> +_IO_wr™e_’d +), 0) \ + +422 ? + `__wov”æow + ( +_å +, +_wch +) \ + +423 : ( +_IO_wšt_t +è(*( +_å +)-> +_wide_d©a +-> +_IO_wr™e_±r +++ = ( +_wch +))) + + ) + +426  + #_IO_ãof_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_EOF_SEEN +è!ð0) + + ) + +427  + #_IO_ã¼Ü_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_ERR_SEEN +è!ð0) + + ) + +429  +_IO_g‘c + ( +_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_wr™e_±r + - (_å)-> +_IO_wr™e_ba£ +) + + ) + +440  +_IO_æockfže + ( +_IO_FILE + *è +__THROW +; + +441  +_IO_fuÆockfže + ( +_IO_FILE + *è +__THROW +; + +442  +_IO_árylockfže + ( +_IO_FILE + *è +__THROW +; + +444 #ifdeà +_IO_MTSAFE_IO + + +445  + #_IO_³ekc +( +_å +è + `_IO_³ekc_locked + (_å) + + ) + +446  + #_IO_æockfže +( +_å +) \ + +447 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_æockfže + (_å) + + ) + +448  + #_IO_fuÆockfže +( +_å +) \ + +449 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_fuÆockfže + (_å) + + ) + +451  + #_IO_³ekc +( +_å +è + `_IO_³ekc_uÆocked + (_å) + + ) + +452  + #_IO_æockfže +( +_å +è + + ) + +453  + #_IO_fuÆockfže +( +_å +è + + ) + +454  + #_IO_árylockfže +( +_å +è + + ) + +455  + #_IO_þ—nup_»giÚ_¡¬t +( +_fù +, +_å +è + + ) + +456  + #_IO_þ—nup_»giÚ_’d +( +_Do™ +è + + ) + +459  +_IO_vfsÿnf + ( +_IO_FILE + * +__»¡riù +, const * __restrict, + +460 +_IO_va_li¡ +, * +__»¡riù +); + +461  +_IO_vårštf + ( +_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_sg‘n + ( +_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à +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +472 +_IO_wšt_t + +_IO_g‘wc + ( +_IO_FILE + * +__å +); + +473 +_IO_wšt_t + +_IO_putwc + ( +wch¬_t + +__wc +, +_IO_FILE + * +__å +); + +474  +_IO_fwide + ( +_IO_FILE + * +__å +,  +__mode +è +__THROW +; + +475 #ià +__GNUC__ + >= 2 + +478 #ià +defšed + +_LIBC + && defšed +SHARED + + +479  + ~ + +480 #ià +SHLIB_COMPAT + ( +libc +, +GLIBC_2_0 +, +GLIBC_2_1 +) + +481  + #_IO_fwide_maybe_šcom·tibË + \ + +482 ( + `__bužtš_ex³ù + (& +_IO_¡dš_u£d + =ð +NULL +, 0)) + + ) + +483 cÚ¡  +_IO_¡dš_u£d +; + +484 +w—k_ex‹º + ( +_IO_¡dš_u£d +); + +487 #iâdeà +_IO_fwide_maybe_šcom·tibË + + +488  + #_IO_fwide_maybe_šcom·tibË + (0) + + ) + +492  + #_IO_fwide +( +__å +, +__mode +) \ + +493 ({  +__»suÉ + = ( +__mode +); \ + +494 ià( +__»suÉ + < 0 && ! +_IO_fwide_maybe_šcom·tibË +) \ + +496 ià(( +__å +)-> +_mode + == 0) \ + +498 ( +__å +)-> +_mode + = -1; \ + +499 +__»suÉ + = ( +__å +)-> +_mode +; \ + +501 ià( + `__bužtš_cÚ¡ªt_p + ( +__mode +) && (__mode) == 0) \ + +502 +__»suÉ + = +_IO_fwide_maybe_šcom·tibË + ? -1 : ( +__å +)-> +_mode +; \ + +504 +__»suÉ + = + `_IO_fwide + ( +__å +, __result); \ + +505 +__»suÉ +; }) + + ) + +508  +_IO_vfwsÿnf + ( +_IO_FILE + * +__»¡riù +, cÚ¡ +wch¬_t + * __restrict, + +509 +_IO_va_li¡ +, * +__»¡riù +); + +510  +_IO_vfw´štf + ( +_IO_FILE + * +__»¡riù +, cÚ¡ +wch¬_t + *__restrict, + +511 +_IO_va_li¡ +); + +512 +_IO_ssize_t + +_IO_w·dn + ( +_IO_FILE + *, +wšt_t +, _IO_ssize_t); + +513  +_IO_ä“_wbackup_¬— + ( +_IO_FILE + *è +__THROW +; + +516 #ifdeà +__LDBL_COMPAT + + +517  + ~ + +520 #ifdeà +__ýlu¥lus + + + @/usr/include/limits.h + +22 #iâdeà +_LIBC_LIMITS_H_ + + +23  + #_LIBC_LIMITS_H_ + 1 + + ) + +25  + ~<ã©u»s.h +> + +31  + #MB_LEN_MAX + 16 + + ) + +36 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 + +41 #iâdeà +_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à +defšed + +__GNUC__ + && !defšed +_GCC_LIMITS_H_ + + +123 #šþude_Ãxˆ< +lim™s +. +h +> + +129 #ià +defšed + +__USE_ISOC99 + && defšed +__GNUC__ + + +130 #iâdeà +LLONG_MIN + + +131  + #LLONG_MIN + (- +LLONG_MAX +-1) + + ) + +133 #iâdeà +LLONG_MAX + + +134  + #LLONG_MAX + +__LONG_LONG_MAX__ + + + ) + +136 #iâdeà +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 #iâdeà +_SYS_SELECT_H + + +22  + #_SYS_SELECT_H + 1 + + ) + +24  + ~<ã©u»s.h +> + +27  + ~ + +30  + ~ + +33  + ~ + +35 #iâdeà +__sig£t_t_defšed + + +36  + #__sig£t_t_defšed + + + ) + +37  +__sig£t_t + + tsig£t_t +; + +41  + #__Ãed_time_t + + + ) + +42  + #__Ãed_time¥ec + + + ) + +43  + ~ + +44  + #__Ãed_timev® + + + ) + +45  + ~ + +47 #iâdeà +__su£cÚds_t_defšed + + +48  +__su£cÚds_t + + tsu£cÚds_t +; + +49  + #__su£cÚds_t_defšed + + + ) + +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_b™s +[ +__FD_SETSIZE + / +__NFDBITS +]; + +70  + #__FDS_BITS +( +£t +è((£t)-> +fds_b™s +) + + ) + +72 +__fd_mask + + m__fds_b™s +[ +__FD_SETSIZE + / +__NFDBITS +]; + +73  + #__FDS_BITS +( +£t +è((£t)-> +__fds_b™s +) + + ) + +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ù + +__wr™efds +, + +108 +fd_£t + * +__»¡riù + +__exû±fds +, + +109  +timev® + * +__»¡riù + +__timeout +); + +111 #ifdeà +__USE_XOPEN2K + + +118  +p£Ëù + ( +__nfds +, +fd_£t + * +__»¡riù + +__»adfds +, + +119 +fd_£t + * +__»¡riù + +__wr™efds +, + +120 +fd_£t + * +__»¡riù + +__exû±fds +, + +121 cÚ¡  +time¥ec + * +__»¡riù + +__timeout +, + +122 cÚ¡ +__sig£t_t + * +__»¡riù + +__sigmask +); + +127 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__GNUC__ + + +128  + ~ + +131 + g__END_DECLS + + + @/usr/include/sys/sysmacros.h + +19 #iâdeà +_SYS_SYSMACROS_H + + +20  + #_SYS_SYSMACROS_H + 1 + + ) + +22  + ~<ã©u»s.h +> + +24 +__BEGIN_DECLS + + +26 +__ex‹nsiÚ__ + + +27  + $gnu_dev_majÜ + ( +__dev +) + +28 +__THROW + +__©Œibu‹_cÚ¡__ +; + +29 +__ex‹nsiÚ__ + + +30  + $gnu_dev_mšÜ + ( +__dev +) + +31 +__THROW + +__©Œibu‹_cÚ¡__ +; + +32 +__ex‹nsiÚ__ + + +33  + $gnu_dev_makedev + ( +__majÜ +, + +34  +__mšÜ +) + +35 +__THROW + +__©Œibu‹_cÚ¡__ +; + +37 #ifdeà +__USE_EXTERN_INLINES + + +38 +__ex‹nsiÚ__ + +__ex‹º_šlše + +__©Œibu‹_cÚ¡__ +  + +39 + `__NTH + ( + $gnu_dev_majÜ + ( +__dev +)) + +41  (( +__dev + >> 8) & 0xfff) | (() (__dev >> 32) & ~0xfff); + +42 + } +} + +44 +__ex‹nsiÚ__ + +__ex‹º_šlše + +__©Œibu‹_cÚ¡__ +  + +45 +__NTH + ( + $gnu_dev_mšÜ + ( +__dev +)) + +47  ( +__dev + & 0xff) | (() (__dev >> 12) & ~0xff); + +48 + } +} + +50 +__ex‹nsiÚ__ + +__ex‹º_šlše + +__©Œ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 #iâdeà +_SYS_UCONTEXT_H + + +19  + #_SYS_UCONTEXT_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +22  + ~ + +26  + ~ + +28 #ifdeà +__x86_64__ + + +31 +__ex‹nsiÚ__ +  + tg»g_t +; + +34  + #NGREG + 23 + + ) + +37  +g»g_t + + tg»g£t_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_åx»g + + +94  + msignifiÿnd +[4]; + +95  + mexpڒt +; + +96  + m·ddšg +[3]; + +99  + s_libc_xmm»g + + +101 +__ušt32_t + + m–em’t +[4]; + +104  + s_libc_å¡©e + + +107 +__ušt16_t + + mcwd +; + +108 +__ušt16_t + + mswd +; + +109 +__ušt16_t + + máw +; + +110 +__ušt16_t + + mfÝ +; + +111 +__ušt64_t + + mr +; + +112 +__ušt64_t + + mrdp +; + +113 +__ušt32_t + + mmxc¤ +; + +114 +__ušt32_t + + mmxü_mask +; + +115  +_libc_åx»g + + m_¡ +[8]; + +116  +_libc_xmm»g + + m_xmm +[16]; + +117 +__ušt32_t + + m·ddšg +[24]; + +121  +_libc_å¡©e + * + tå»g£t_t +; + +126 +g»g£t_t + + mg»gs +; + +128 +å»g£t_t + + må»gs +; + +129 +__ex‹nsiÚ__ +  + m__»£rved1 + [8]; + +130 } + tmcڋxt_t +; + +133  + sucڋxt + + +135  + muc_æags +; + +136  +ucڋxt + * + muc_lšk +; + +137 +¡ack_t + + muc_¡ack +; + +138 +mcڋxt_t + + muc_mcڋxt +; + +139 +__sig£t_t + + muc_sigmask +; + +140  +_libc_å¡©e + + m__å»gs_mem +; + +141 } + tucڋxt_t +; + +146  + tg»g_t +; + +149  + #NGREG + 19 + + ) + +152  +g»g_t + + tg»g£t_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  + msignifiÿnd +[4]; + +203  + mexpڒt +; + +206  + s_libc_å¡©e + + +208  + mcw +; + +209  + msw +; + +210  + mg +; + +211  + moff +; + +212  + mcs£l +; + +213  + md©aoff +; + +214  + md©a£l +; + +215  +_libc_å»g + + m_¡ +[8]; + +216  + m¡©us +; + +220  +_libc_å¡©e + * + tå»g£t_t +; + +225 +g»g£t_t + + mg»gs +; + +228 +å»g£t_t + + må»gs +; + +229  + mÞdmask +; + +230  + mü2 +; + +231 } + tmcڋxt_t +; + +234  + sucڋxt + + +236  + muc_æags +; + +237  +ucڋxt + * + muc_lšk +; + +238 +¡ack_t + + muc_¡ack +; + +239 +mcڋxt_t + + muc_mcڋxt +; + +240 +__sig£t_t + + muc_sigmask +; + +241  +_libc_å¡©e + + m__å»gs_mem +; + +242 } + tucڋxt_t +; + + @/usr/include/sys/uio.h + +18 #iâdeà +_SYS_UIO_H + + +19  + #_SYS_UIO_H + 1 + + ) + +21  + ~<ã©u»s.h +> + +23  + ~ + +25 + g__BEGIN_DECLS + + +28  + ~ + +39 +ssize_t + + $»adv + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +) + +40 +__wur +; + +50 +ssize_t + + $wr™ev + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +) + +51 +__wur +; + +54 #ifdeà +__USE_MISC + + +55 #iâdeà +__USE_FILE_OFFSET64 + + +65 +ssize_t + + $´—dv + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +, + +66 +__off_t + +__off£t +è +__wur +; + +77 +ssize_t + + $pwr™ev + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +, + +78 +__off_t + +__off£t +è +__wur +; + +80 #ifdeà +__REDIRECT + + +81 +ssize_t + + `__REDIRECT + ( +´—dv +, ( +__fd +, cÚ¡  +iovec + * +__iovec +, + +82  +__couÁ +, +__off64_t + +__off£t +), + +83 +´—dv64 +è +__wur +; + +84 +ssize_t + + `__REDIRECT + ( +pwr™ev +, ( +__fd +, cÚ¡  +iovec + * +__iovec +, + +85  +__couÁ +, +__off64_t + +__off£t +), + +86 +pwr™ev64 +è +__wur +; + +88  + #´—dv + +´—dv64 + + + ) + +89  + #pwr™ev + +pwr™ev64 + + + ) + +93 #ifdeà +__USE_LARGEFILE64 + + +103 +ssize_t + + $´—dv64 + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +, + +104 +__off64_t + +__off£t +è +__wur +; + +115 +ssize_t + + $pwr™ev64 + ( +__fd +, cÚ¡  +iovec + * +__iovec +,  +__couÁ +, + +116 +__off64_t + +__off£t +è +__wur +; + +120 +__END_DECLS + + + @/usr/include/xlocale.h + +20 #iâdeà +_XLOCALE_H + + +21  + #_XLOCALE_H + 1 + + ) + +27  + s__loÿË_¡ruù + + +30  +__loÿË_d©a + * + m__loÿËs +[13]; + +33 cÚ¡ * + m__ùy³_b +; + +34 cÚ¡ * + m__ùy³_tÞow” +; + +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 #iâdeà +_G_cÚfig_h + + +5  + #_G_cÚfig_h + 1 + + ) + +9  + ~ + +10  + #__Ãed_size_t + + + ) + +11 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +12  + #__Ãed_wch¬_t + + + ) + +14  + #__Ãed_NULL + + + ) + +15  + ~<¡ddef.h +> + +16  + #__Ãed_mb¡©e_t + + + ) + +17 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +18  + #__Ãed_wšt_t + + + ) + +20  + ~ + +23 +__off_t + + m__pos +; + +24 +__mb¡©e_t + + m__¡©e +; + +25 } + t_G_åos_t +; + +28 +__off64_t + + m__pos +; + +29 +__mb¡©e_t + + m__¡©e +; + +30 } + t_G_åos64_t +; + +31 #ià +defšed + +_LIBC + || defšed +_GLIBCPP_USE_WCHAR_T + + +32  + ~ + +35  +__gcÚv_šfo + + m__cd +; + +38  +__gcÚv_šfo + + m__cd +; + +39  +__gcÚv_¡•_d©a + + m__d©a +; + +40 } + m__combšed +; + +41 } + t_G_icÚv_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 + + `defšed + ( +_STATBUF_ST_BLKSIZE +) + + ) + +56  + #_G_BUFSIZ + 8192 + + ) + + @/usr/include/asm/socket.h + +1  + ~ + + @/usr/include/bits/byteswap-16.h + +19 #iâdeà +_BITS_BYTESWAP_H + + +23 #ifdeà +__GNUC__ + + +24 #ià +__GNUC__ + >= 2 + +25  + #__bsw­_16 +( +x +) \ + +26 ( +__ex‹nsiÚ__ + \ + +27 ({  +__v +, +__x + = (è( +x +); \ + +28 ià( + `__bužtš_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 ( +__ex‹nsiÚ__ + \ + +40 ({  +__x + = (è( +x +); \ + +41 + `__bsw­_cÚ¡ªt_16 + ( +__x +); })) + + ) + +44  +__šlše +  + +45 + $__bsw­_16 + ( +__bsx +) + +47  + `__bsw­_cÚ¡ªt_16 + ( +__bsx +); + +48 + } +} + + @/usr/include/bits/endian.h + +3 #iâdeà +_ENDIAN_H + + +7  + #__BYTE_ORDER + +__LITTLE_ENDIAN + + + ) + + @/usr/include/bits/fcntl-linux.h + +19 #iâdef +_FCNTL_H + + +37 #ifdeà +__USE_GNU + + +38  + ~ + +42  + #O_ACCMODE + 0003 + + ) + +43  + #O_RDONLY + 00 + + ) + +44  + #O_WRONLY + 01 + + ) + +45  + #O_RDWR + 02 + + ) + +46 #iâdeà +O_CREAT + + +47  + #O_CREAT + 0100 + + ) + +49 #iâdeà +O_EXCL + + +50  + #O_EXCL + 0200 + + ) + +52 #iâdeà +O_NOCTTY + + +53  + #O_NOCTTY + 0400 + + ) + +55 #iâdeà +O_TRUNC + + +56  + #O_TRUNC + 01000 + + ) + +58 #iâdeà +O_APPEND + + +59  + #O_APPEND + 02000 + + ) + +61 #iâdeà +O_NONBLOCK + + +62  + #O_NONBLOCK + 04000 + + ) + +64 #iâdeà +O_NDELAY + + +65  + #O_NDELAY + +O_NONBLOCK + + + ) + +67 #iâdeà +O_SYNC + + +68  + #O_SYNC + 04010000 + + ) + +70  + #O_FSYNC + +O_SYNC + + + ) + +71 #iâdeà +O_ASYNC + + +72  + #O_ASYNC + 020000 + + ) + +74 #iâdeà +__O_LARGEFILE + + +75  + #__O_LARGEFILE + 0100000 + + ) + +78 #iâdeà +__O_DIRECTORY + + +79  + #__O_DIRECTORY + 0200000 + + ) + +81 #iâdeà +__O_NOFOLLOW + + +82  + #__O_NOFOLLOW + 0400000 + + ) + +84 #iâdeà +__O_CLOEXEC + + +85  + #__O_CLOEXEC + 02000000 + + ) + +87 #iâdeà +__O_DIRECT + + +88  + #__O_DIRECT + 040000 + + ) + +90 #iâdeà +__O_NOATIME + + +91  + #__O_NOATIME + 01000000 + + ) + +93 #iâdeà +__O_PATH + + +94  + #__O_PATH + 010000000 + + ) + +96 #iâdeà +__O_DSYNC + + +97  + #__O_DSYNC + 010000 + + ) + +99 #iâdeà +__O_TMPFILE + + +100  + #__O_TMPFILE + (020000000 | +__O_DIRECTORY +) + + ) + +103 #iâdeà +F_GETLK + + +104 #iâdeà +__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 #iâdeà +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à +defšed + +__USE_POSIX199309 + || defšed +__USE_UNIX98 + + +158  + #O_DSYNC + +__O_DSYNC + + + ) + +159 #ià +defšed + +__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 #iâdeà +__F_SETOWN + + +174  + #__F_SETOWN + 8 + + ) + +175  + #__F_GETOWN + 9 + + ) + +178 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K8 + + +179  + #F_SETOWN + +__F_SETOWN + + + ) + +180  + #F_GETOWN + +__F_GETOWN + + + ) + +183 #iâdeà +__F_SETSIG + + +184  + #__F_SETSIG + 10 + + ) + +185  + #__F_GETSIG + 11 + + ) + +187 #iâdeà +__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 #iâdeà +F_RDLCK + + +216  + #F_RDLCK + 0 + + ) + +217  + #F_WRLCK + 1 + + ) + +218  + #F_UNLCK + 2 + + ) + +223 #iâdeà +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_owÃr_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 #iâdeà +__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  + sfže_hªdË + + +335  + mhªdË_by‹s +; + +336  + mhªdË_ty³ +; + +338  + mf_hªdË +[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 + + $»adah—d + ( +__fd +, +__off64_t + +__off£t +, +size_t + +__couÁ +) + +369 +__THROW +; + +376  + `sync_fže_¿nge + ( +__fd +, +__off64_t + +__off£t +, __off64_ˆ +__couÁ +, + +377  +__æags +); + +384 +ssize_t + + `vm¥liû + ( +__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 #iâdeà +__USE_FILE_OFFSET64 + + +407  + `çÎoÿ‹ + ( +__fd +,  +__mode +, +__off_t + +__off£t +, __off_ˆ +__Ën +); + +409 #ifdeà +__REDIRECT + + +410  + `__REDIRECT + ( +çÎoÿ‹ +, ( +__fd +,  +__mode +, +__off64_t + +__off£t +, + +411 +__off64_t + +__Ën +), + +412 +çÎoÿ‹64 +); + +414  + #çÎoÿ‹ + +çÎoÿ‹64 + + + ) + +417 #ifdeà +__USE_LARGEFILE64 + + +418  + `çÎoÿ‹64 + ( +__fd +,  +__mode +, +__off64_t + +__off£t +, + +419 +__off64_t + +__Ën +); + +424  + $Çme_to_hªdË_© + ( +__dfd +, cÚ¡ * +__Çme +, + +425  +fže_hªdË + * +__hªdË +, * +__mÁ_id +, + +426  +__æags +è +__THROW +; + +432  + `ݒ_by_hªdË_© + ( +__mouÁdœfd +,  +fže_hªdË + * +__hªdË +, + +433  +__æags +); + +437 +__END_DECLS + + + @/usr/include/bits/libio-ldbl.h + +19 #iâdeà +_IO_STDIO_H + + +23 + $__LDBL_REDIR_DECL + ( +_IO_vfsÿnf +) + +24 + `__LDBL_REDIR_DECL + ( +_IO_vårštf +) + + @/usr/include/bits/libm-simd-decl-stubs.h + +19 #iâdeà +_MATH_H + + +33 #iâdeà +_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_sšf + + + ) + +42  + #__DECL_SIMD_sšl + + + ) + +44  + #__DECL_SIMD_sšcos + + + ) + +45  + #__DECL_SIMD_sšcosf + + + ) + +46  + #__DECL_SIMD_sšco¦ + + + ) + +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 #iâdef +_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à! +defšed + +__USE_XOPEN2K + || defšed +__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à! +defšed + +__USE_XOPEN2K + || defšed +__USE_GNU + + +145  + #_POSIX_QLIMIT + 1 + + ) + +149  + #_POSIX_HIWAT + +_POSIX_PIPE_BUF + + + ) + +152  + #_POSIX_UIO_MAXIOV + 16 + + ) + +156  + #_POSIX_CLOCKRES_MIN + 20000000 + + ) + +160  + ~ + +163 #iâdef +SSIZE_MAX + + +164  + #SSIZE_MAX + +LONG_MAX + + + ) + +171 #iâdef +NGROUPS_MAX + + +172  + #NGROUPS_MAX + 8 + + ) + + @/usr/include/bits/posix2_lim.h + +22 #iâdef +_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 #iâdef +BC_BASE_MAX + + +63  + #BC_BASE_MAX + +_POSIX2_BC_BASE_MAX + + + ) + +65 #iâdef +BC_DIM_MAX + + +66  + #BC_DIM_MAX + +_POSIX2_BC_DIM_MAX + + + ) + +68 #iâdef +BC_SCALE_MAX + + +69  + #BC_SCALE_MAX + +_POSIX2_BC_SCALE_MAX + + + ) + +71 #iâdef +BC_STRING_MAX + + +72  + #BC_STRING_MAX + +_POSIX2_BC_STRING_MAX + + + ) + +74 #iâdef +COLL_WEIGHTS_MAX + + +75  + #COLL_WEIGHTS_MAX + 255 + + ) + +77 #iâdef +EXPR_NEST_MAX + + +78  + #EXPR_NEST_MAX + +_POSIX2_EXPR_NEST_MAX + + + ) + +80 #iâdef +LINE_MAX + + +81  + #LINE_MAX + +_POSIX2_LINE_MAX + + + ) + +83 #iâdef +CHARCLASS_NAME_MAX + + +84  + #CHARCLASS_NAME_MAX + 2048 + + ) + +88  + #RE_DUP_MAX + (0x7fff) + + ) + + @/usr/include/bits/select.h + +18 #iâdeà +_SYS_SELECT_H + + +22  + ~ + +25 #ià +defšed + +__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 #iâdeà +_SYS_SELECT_H + + +24  +__fd–t_chk + ( +__d +); + +25  + $__fd–t_w¬n + ( +__d +) + +26 + `__w¬Ç‰r + ("bit outside of fd_set selected"); + +27 #undeà +__FD_ELT + + +28  + #__FD_ELT +( +d +) \ + +29 +__ex‹nsiÚ__ + \ + +30 ({  +__d + = ( +d +); \ + +31 ( + `__bužtš_cÚ¡ªt_p + ( +__d +) \ + +32 ? (0 <ð +__d + && __d < +__FD_SETSIZE + \ + +33 ? ( +__d + / +__NFDBITS +) \ + +34 : + `__fd–t_w¬n + ( +__d +)) \ + +35 : + `__fd–t_chk + ( +__d +)); + } +}) + + ) + + @/usr/include/bits/sockaddr.h + +23 #iâdeà +_BITS_SOCKADDR_H + + +24  + #_BITS_SOCKADDR_H + 1 + + ) + +28  + t§_çmžy_t +; + +34  + #__SOCKADDR_COMMON +( +§_´efix +) \ + +35 +§_çmžy_t + +§_´efix +## +çmžy + + + ) + +37  + #__SOCKADDR_COMMON_SIZE + ( ()) + + ) + +40  + #_SS_SIZE + 128 + + ) + + @/usr/include/bits/socket_type.h + +19 #iâdeà +_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 #iâdef +_BITS_TIMEX_H + + +19  + #_BITS_TIMEX_H + 1 + + ) + +21  + ~ + +25  + stimex + + +27  + mmodes +; + +28 +__sysÿÎ_¦Úg_t + + moff£t +; + +29 +__sysÿÎ_¦Úg_t + + mäeq +; + +30 +__sysÿÎ_¦Úg_t + + mmax”rÜ +; + +31 +__sysÿÎ_¦Úg_t + + me¡”rÜ +; + +32  + m¡©us +; + +33 +__sysÿÎ_¦Úg_t + + mcÚ¡ªt +; + +34 +__sysÿÎ_¦Úg_t + + m´ecisiÚ +; + +35 +__sysÿÎ_¦Úg_t + + mtޔªû +; + +36  +timev® + + mtime +; + +37 +__sysÿÎ_¦Úg_t + + mtick +; + +38 +__sysÿÎ_¦Úg_t + + mµsäeq +; + +39 +__sysÿÎ_¦Úg_t + + mj™‹r +; + +40  + mshiá +; + +41 +__sysÿÎ_¦Úg_t + + m¡abž +; + +42 +__sysÿÎ_¦Úg_t + + mj™út +; + +43 +__sysÿÎ_¦Úg_t + + mÿlút +; + +44 +__sysÿÎ_¦Úg_t + + m”rút +; + +45 +__sysÿÎ_¦Úg_t + + m¡bút +; + +47  + mi +; + +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 #iâdeà +_BITS_TYPES_H + + +23 #iâdef +_BITS_TYPESIZES_H + + +24  + #_BITS_TYPESIZES_H + 1 + + ) + +30 #ià +defšed + +__x86_64__ + && defšed +__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 + sŒuù {  +__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à! +defšed + +_SYS_UIO_H + && !defšed +_FCNTL_H + + +22 #iâdeà +_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à +defšed + +_SYS_UIO_H + && !defšed +_BITS_UIO_H_FOR_SYS_UIO_H + + +54  + #_BITS_UIO_H_FOR_SYS_UIO_H + 1 + + ) + +56 +__BEGIN_DECLS + + +59 +ssize_t + + $´oûss_vm_»adv + ( +pid_t + +__pid +, cÚ¡  +iovec + * +__lvec +, + +60  +__liovút +, + +61 cÚ¡  +iovec + * +__rvec +, + +62  +__riovút +, + +63  +__æags +) + +64 +__THROW +; + +67 +ssize_t + + $´oûss_vm_wr™ev + ( +pid_t + +__pid +, cÚ¡  +iovec + * +__lvec +, + +68  +__liovút +, + +69 cÚ¡  +iovec + * +__rvec +, + +70  +__riovút +, + +71  +__æags +) + +72 +__THROW +; + +74 +__END_DECLS + + + @/usr/include/bits/xopen_lim.h + +29 #iâdeà +_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à +defšed + +__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à +defšed + +__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à! +defšed + +__x86_64__ + + +7  + ~ + +9 #ià +defšed + +__x86_64__ + && defšed +__LP64__ + + +10  + ~ + +12 #ià +defšed + +__x86_64__ + && defšed +__ILP32__ + + +13  + ~ + + @/usr/include/linux/errno.h + +1  + ~ + + @/usr/include/linux/limits.h + +1 #iâdeà +_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 #iâdeà +_LINUX_PARAM_H + + +2  + #_LINUX_PARAM_H + + + ) + +4  + ~ + + @/usr/include/stdc-predef.h + +18 #iâdef +_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 #iâdef +_SYS_CDEFS_H + + +19  + #_SYS_CDEFS_H + 1 + + ) + +22 #iâdeà +_FEATURES_H + + +23  + ~<ã©u»s.h +> + +29 #ià +defšed + +__GNUC__ + && !defšed +__STDC__ + + +34 #undeà +__P + + +35 #undeà +__PMT + + +37 #ifdeà +__GNUC__ + + +41 #ià +__GNUC_PREREQ + (4, 6è&& ! +defšed + +_LIBC + + +42  + #__LEAF + , +__Ëaf__ + + + ) + +43  + #__LEAF_ATTR + + `__©Œibu‹__ + (( +__Ëaf__ +)) + + ) + +45  + #__LEAF + + + ) + +46  + #__LEAF_ATTR + + + ) + +54 #ià! +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (3, 3) + +55  + #__THROW + + `__©Œibu‹__ + (( +__nÙhrow__ + +__LEAF +)) + + ) + +56  + #__THROWNL + + `__©Œibu‹__ + (( +__nÙhrow__ +)) + + ) + +57  + #__NTH +( +fù +è + `__©Œibu‹__ + (( +__nÙhrow__ + +__LEAF +)è + ) +fct + +59 #ià +defšed + +__ýlu¥lus + && +__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  + #__šlše + + + ) + +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  + #__lÚg_doubË_t +  + + ) + +97 #ifdef +__ýlu¥lus + + +98  + #__BEGIN_DECLS + "C" { + + ) + +99  + #__END_DECLS + } + + ) + +101  + #__BEGIN_DECLS + + + ) + +102  + #__END_DECLS + + + ) + +111 #ià +defšed + +__ýlu¥lus + && defšed +_GLIBCPP_USE_NAMESPACES + + +112  + #__BEGIN_NAMESPACE_STD + +Çme¥aû + +¡d + { + + ) + +113  + #__END_NAMESPACE_STD + } + + ) + +114  + #__USING_NAMESPACE_STD +( +Çme +è +usšg + +¡d +::Çme; + + ) + +115  + #__BEGIN_NAMESPACE_C99 + +Çme¥aû + +__c99 + { + + ) + +116  + #__END_NAMESPACE_C99 + } + + ) + +117  + #__USING_NAMESPACE_C99 +( +Çme +è +usšg + +__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 +è + `__bužtš_objeù_size + (±r, +__USE_FORTIFY_LEVEL + > 1) + + ) + +133  + #__bos0 +( +±r +è + `__bužtš_objeù_size + (±r, 0) + + ) + +135 #ià +__GNUC_PREREQ + (4,3) + +136  + #__w¬ndeþ +( +Çme +, +msg +) \ + +137  + `Çme + (è + `__©Œibu‹__ +(( + `__w¬nšg__ + ( +msg +))) + + ) + +138  + #__w¬Ç‰r +( +msg +è + `__©Œibu‹__ +(( + `__w¬nšg__ + (msg))) + + ) + +139  + #__”rÜdeþ +( +Çme +, +msg +) \ + +140  + `Çme + (è + `__©Œibu‹__ +(( + `__”rÜ__ + ( +msg +))) + + ) + +142  + #__w¬ndeþ +( +Çme +, +msg +è  + `Çme + () + + ) + +143  + #__w¬Ç‰r +( +msg +) + + ) + +144  + #__”rÜdeþ +( +Çme +, +msg +è  + `Çme + () + + ) + +148 #ià +__GNUC_PREREQ + (2,97) + +150  + #__æex¬r + [] + + ) + +152 #ifdeà +__GNUC__ + + +153  + #__æex¬r + [0] + + ) + +155 #ià +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +156  + #__æex¬r + [] + + ) + +159  + #__æex¬r + [1] + + ) + +175 #ià +defšed + +__GNUC__ + && __GNUC__ >= 2 + +177  + #__REDIRECT +( +Çme +, +´Ùo +, +®Ÿs +èÇm´ÙØ + `__asm__ + ( + `__ASMNAME + (#®Ÿs)) + + ) + +178 #ifdeà +__ýlu¥lus + + +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__ +, cÇme) + + ) + +190  + #__ASMNAME2 +( +´efix +, +úame +è + `__STRING + (´efixè + ) +cname + +203 #ià! +defšed + +__GNUC__ + || __GNUC__ < 2 + +204  + #__©Œibu‹__ +( +xyz +è + + ) + +210 #ià +__GNUC_PREREQ + (2,96) + +211  + #__©Œibu‹_m®loc__ + + `__©Œibu‹__ + (( +__m®loc__ +)) + + ) + +213  + #__©Œibu‹_m®loc__ + + + ) + +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‹_u£d__ + + `__©Œibu‹__ + (( +__u£d__ +)) + + ) + +246  + #__©Œibu‹_nošlše__ + + `__©Œibu‹__ + (( +__nošlše__ +)) + + ) + +248  + #__©Œibu‹_u£d__ + + `__©Œibu‹__ + (( +__unu£d__ +)) + + ) + +249  + #__©Œibu‹_nošlše__ + + + ) + +253 #ià +__GNUC_PREREQ + (3,2) + +254  + #__©Œibu‹_d•»ÿ‹d__ + + `__©Œibu‹__ + (( +__d•»ÿ‹d__ +)) + + ) + +256  + #__©Œibu‹_d•»ÿ‹d__ + + + ) + +265 #ià +__GNUC_PREREQ + (2,8) + +266  + #__©Œibu‹_fÜm©_¬g__ +( +x +è + `__©Œibu‹__ + (( + `__fÜm©_¬g__ + (x))) + + ) + +268  + #__©Œibu‹_fÜm©_¬g__ +( +x +è + + ) + +275 #ià +__GNUC_PREREQ + (2,97) + +276  + #__©Œibu‹_fÜm©_¡rfmÚ__ +( +a +, +b +) \ + +277 + `__©Œibu‹__ + (( + `__fÜm©__ + ( +__¡rfmÚ__ +, +a +, +b +))) + + ) + +279  + #__©Œibu‹_fÜm©_¡rfmÚ__ +( +a +, +b +è + + ) + +284 #ià +__GNUC_PREREQ + (3,3) + +285  + #__nÚnuÎ +( +·¿ms +è + `__©Œibu‹__ + (( +__nÚnuÎ__ +…¬ams)) + + ) + +287  + #__nÚnuÎ +( +·¿ms +) + + ) + +292 #ià +__GNUC_PREREQ + (3,4) + +293  + #__©Œibu‹_w¬n_unu£d_»suÉ__ + \ + +294 + `__©Œibu‹__ + (( +__w¬n_unu£d_»suÉ__ +)) + + ) + +295 #ià +__USE_FORTIFY_LEVEL + > 0 + +296  + #__wur + +__©Œibu‹_w¬n_unu£d_»suÉ__ + + + ) + +299  + #__©Œibu‹_w¬n_unu£d_»suÉ__ + + + ) + +301 #iâdeà +__wur + + +302  + #__wur + + + ) + +306 #ià +__GNUC_PREREQ + (3,2) + +307  + #__®ways_šlše + +__šlše + + `__©Œibu‹__ + (( +__®ways_šlše__ +)) + + ) + +309  + #__®ways_šlše + +__šlše + + + ) + +314 #ià +__GNUC_PREREQ + (4,3) + +315  + #__©Œibu‹_¬tificŸl__ + + `__©Œibu‹__ + (( +__¬tificŸl__ +)) + + ) + +317  + #__©Œibu‹_¬tificŸl__ + + + ) + +329 #ià(! +defšed + +__ýlu¥lus + || +__GNUC_PREREQ + (4,3) \ + +330 || ( +defšed + +__þªg__ + && (defšed +__GNUC_STDC_INLINE__ + \ + +331 || +defšed + +__GNUC_GNU_INLINE__ +))) + +332 #ià +defšed + +__GNUC_STDC_INLINE__ + || defšed +__ýlu¥lus + + +333  + #__ex‹º_šlše + +__šlše + + `__©Œibu‹__ + (( +__gnu_šlše__ +)) + + ) + +334  + #__ex‹º_®ways_šlše + \ + +335 +__®ways_šlše + + `__©Œibu‹__ + (( +__gnu_šlše__ +)) + + ) + +337  + #__ex‹º_šlše + +__šlše + + + ) + +338  + #__ex‹º_®ways_šlše + +__®ways_šlše + + + ) + +342 #ifdeà +__ex‹º_®ways_šlše + + +343  + #__fÜtify_funùiÚ + +__ex‹º_®ways_šlše + +__©Œibu‹_¬tificŸl__ + + + ) + +348 #ià +__GNUC_PREREQ + (4,3) + +349  + #__va_¬g_·ck +(è + `__bužtš_va_¬g_·ck + () + + ) + +350  + #__va_¬g_·ck_Ën +(è + `__bužtš_va_¬g_·ck_Ën + () + + ) + +357 #ià! +__GNUC_PREREQ + (2,8) + +358  + #__ex‹nsiÚ__ + + + ) + +362 #ià! +__GNUC_PREREQ + (2,92) + +363  + #__»¡riù + + + ) + +369 #ià +__GNUC_PREREQ + (3,1è&& ! +defšed + +__GNUG__ + + +370  + #__»¡riù_¬r + +__»¡riù + + + ) + +372 #ifdeà +__GNUC__ + + +373  + #__»¡riù_¬r + + + ) + +375 #ià +defšed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +376  + #__»¡riù_¬r + +»¡riù + + + ) + +379  + #__»¡riù_¬r + + + ) + +384 #ià +__GNUC__ + >= 3 + +385  + #__glibc_uÆik–y +( +cÚd +è + `__bužtš_ex³ù + ((cÚd), 0) + + ) + +386  + #__glibc_lik–y +( +cÚd +è + `__bužtš_ex³ù + ((cÚd), 1) + + ) + +388  + #__glibc_uÆik–y +( +cÚd +è(cÚd) + + ) + +389  + #__glibc_lik–y +( +cÚd +è(cÚd) + + ) + +392 #ià(! +defšed + +_Nܑuº + \ + +393 && ( +defšed + +__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à(! +defšed + +_Stic_as£¹ + && !defšed +__ýlu¥lus + \ + +403 && ( +defšed + +__STDC_VERSION__ + ? __STDC_VERSION__ : 0) < 201112 \ + +404 && (! + `__GNUC_PREREQ + (4, 6è|| +defšed + +__STRICT_ANSI__ +)) + +405  + #_Stic_as£¹ +( +ex´ +, +dŸgno¡ic +) \ + +406 (* + `__Stic_as£¹_funùiÚ + ()) \ + +407 [!! (¡ruù {  +__”rÜ_if_Ãg©ive +: ( +ex´ +è? 2 : -1; })] + + ) + +410  + ~ + +412 #ià +defšed + +__LONG_DOUBLE_MATH_OPTIONAL + && defšed +__NO_LONG_DOUBLE_MATH + + +413  + #__LDBL_COMPAT + 1 + + ) + +414 #ifdeà +__REDIRECT + + +415  + #__LDBL_REDIR1 +( +Çme +, +´Ùo +, +®Ÿs +è + `__REDIRECT + (Çme,…rÙo,‡lŸs) + + ) + +416  + #__LDBL_REDIR +( +Çme +, +´Ùo +) \ + +417 + `__LDBL_REDIR1 + ( +Çme +, +´Ùo +, +__Ædbl_ +##Çme) + + ) + +418  + #__LDBL_REDIR1_NTH +( +Çme +, +´Ùo +, +®Ÿs +è + `__REDIRECT_NTH + (Çme,…rÙo,‡lŸs) + + ) + +419  + #__LDBL_REDIR_NTH +( +Çme +, +´Ùo +) \ + +420 + `__LDBL_REDIR1_NTH + ( +Çme +, +´Ùo +, +__Ædbl_ +##Çme) + + ) + +421  + #__LDBL_REDIR1_DECL +( +Çme +, +®Ÿs +) \ + +422 + `__ty³of + ( +Çme +èÇm + `__asm + ( + `__ASMNAME + (#®Ÿs)); + + ) + +423  + #__LDBL_REDIR_DECL +( +Çme +) \ + +424 + `__ty³of + ( +Ç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à! +defšed + +__LDBL_COMPAT + || !defšed +__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,…rÙo,‡lŸs) + + ) + +439  + #__REDIRECT_NTH_LDBL +( +Çme +, +´Ùo +, +®Ÿs +) \ + +440 + `__REDIRECT_NTH + ( +Çme +, +´Ùo +, +®Ÿs +) + + ) + + @/usr/include/asm-generic/socket.h + +1 #iâdeà +__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 #iâdeà +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 #iâdeà +NR_OPEN + + +25  + #__undef_NR_OPEN + + + ) + +27 #iâdeà +LINK_MAX + + +28  + #__undef_LINK_MAX + + + ) + +30 #iâdeà +OPEN_MAX + + +31  + #__undef_OPEN_MAX + + + ) + +33 #iâdeà +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 #iâdeà +_GCONV_H + + +23  + #_GCONV_H + 1 + + ) + +25  + ~<ã©u»s.h +> + +26  + #__Ãed_mb¡©e_t + + + ) + +27  + #__Ãed_wšt_t + + + ) + +28  + ~ + +29  + #__Ãed_size_t + + + ) + +30  + #__Ãed_wch¬_t + + + ) + +31  + ~<¡ddef.h +> + +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__gcÚv_¡• +; + +66  + g__gcÚv_¡•_d©a +; + +67  + g__gcÚv_lßded_objeù +; + +71 (* + t__gcÚv_fù +è( + t__gcÚv_¡• + *,  + t__gcÚv_¡•_d©a + *, + +73 **, + tsize_t + *, , ); + +76  + $wšt_t + (* + t__gcÚv_btowc_fù +è( + t__gcÚv_¡• + *, ); + +79 (* + t__gcÚv_š™_fù +è( + t__gcÚv_¡• + *); + +80 (* + t__gcÚv_’d_fù +è( + t__gcÚv_¡• + *); + +84  + s__gcÚv_¡• + + +86  +__gcÚv_lßded_objeù + * +__shlib_hªdË +; + +87 cÚ¡ * +__modÇme +; + +89  +__couÁ” +; + +91 * +__äom_Çme +; + +92 * +__to_Çme +; + +94 +__gcÚv_fù + +__fù +; + +95 +__gcÚv_btowc_fù + +__btowc_fù +; + +96 +__gcÚv_š™_fù + +__š™_fù +; + +97 +__gcÚv_’d_fù + +__’d_fù +; + +101  +__mš_Ãeded_äom +; + +102  +__max_Ãeded_äom +; + +103  +__mš_Ãeded_to +; + +104  +__max_Ãeded_to +; + +107  +__¡©eful +; + +109 * +__d©a +; + +114  + s__gcÚv_¡•_d©a + + +116 * +__outbuf +; + +117 * +__outbuãnd +; + +121  +__æags +; + +125  +__švoÿtiÚ_couÁ” +; + +129  +__š‹º®_u£ +; + +131 +__mb¡©e_t + * +__¡©• +; + +132 +__mb¡©e_t + +__¡©e +; + +138  + s__gcÚv_šfo + + +140 +size_t + +__n¡•s +; + +141  +__gcÚv_¡• + * +__¡•s +; + +142 +__ex‹nsiÚ__ +  +__gcÚv_¡•_d©a + +__d©a + +__æex¬r +; + +143 } * + t__gcÚv_t +; + +146  + `__gcÚv_Œª¦™”©e + ( +__gcÚv_¡• + * +¡• +, + +147  +__gcÚv_¡•_d©a + * +¡•_d©a +, + +148 cÚ¡ * +šbuf¡¬t +, + +149 cÚ¡ ** +šbuå +, + +150 cÚ¡ * +šbuãnd +, + +151 ** +outbuf¡¬t +, + +152 +size_t + * +œ»v”sibË +); + + @/usr/include/gnu/stubs-32.h + +6 #ifdeà +_LIBC + + +7 #”rÜ +AµliÿtiÚs + +may + +nÙ + +defše + +the + +maüo + +_LIBC + + +10  + #__¡ub_chæags + + + ) + +11  + #__¡ub_ç‰ach + + + ) + +12  + #__¡ub_fchæags + + + ) + +13  + #__¡ub_fd‘ach + + + ) + +14  + #__¡ub_g‰y + + + ) + +15  + #__¡ub_lchmod + + + ) + +16  + #__¡ub_»voke + + + ) + +17  + #__¡ub_£Žogš + + + ) + +18  + #__¡ub_sig»tuº + + + ) + +19  + #__¡ub_s¡k + + + ) + +20  + #__¡ub_¡ty + + + ) + + @/usr/include/gnu/stubs-64.h + +6 #ifdeà +_LIBC + + +7 #”rÜ +AµliÿtiÚs + +may + +nÙ + +defše + +the + +maüo + +_LIBC + + +10  + #__¡ub___com·t_bdæush + + + ) + +11  + #__¡ub_chæags + + + ) + +12  + #__¡ub_ç‰ach + + + ) + +13  + #__¡ub_fchæags + + + ) + +14  + #__¡ub_fd‘ach + + + ) + +15  + #__¡ub_g‘msg + + + ) + +16  + #__¡ub_g‰y + + + ) + +17  + #__¡ub_lchmod + + + ) + +18  + #__¡ub_putmsg + + + ) + +19  + #__¡ub_»voke + + + ) + +20  + #__¡ub_£Žogš + + + ) + +21  + #__¡ub_sig»tuº + + + ) + +22  + #__¡ub_s¡k + + + ) + +23  + #__¡ub_¡ty + + + ) + + @/usr/include/gnu/stubs-x32.h + +6 #ifdeà +_LIBC + + +7 #”rÜ +AµliÿtiÚs + +may + +nÙ + +defše + +the + +maüo + +_LIBC + + +10  + #__¡ub___com·t_bdæush + + + ) + +11  + #__¡ub___com·t_ü—‹_moduË + + + ) + +12  + #__¡ub___com·t_g‘_k”Ãl_syms + + + ) + +13  + #__¡ub___com·t_qu”y_moduË + + + ) + +14  + #__¡ub___com·t_u£lib + + + ) + +15  + #__¡ub_chæags + + + ) + +16  + #__¡ub_ç‰ach + + + ) + +17  + #__¡ub_fchæags + + + ) + +18  + #__¡ub_fd‘ach + + + ) + +19  + #__¡ub_g‘msg + + + ) + +20  + #__¡ub_g‰y + + + ) + +21  + #__¡ub_lchmod + + + ) + +22  + #__¡ub_nfs£rvùl + + + ) + +23  + #__¡ub_putmsg + + + ) + +24  + #__¡ub_»voke + + + ) + +25  + #__¡ub_£Žogš + + + ) + +26  + #__¡ub_sig»tuº + + + ) + +27  + #__¡ub_s¡k + + + ) + +28  + #__¡ub_¡ty + + + ) + + @/usr/include/wchar.h + +23 #iâdeà +_WCHAR_H + + +25 #ià! +defšed + +__Ãed_mb¡©e_t + && !defšed +__Ãed_wšt_t + + +26  + #_WCHAR_H + 1 + + ) + +27  + ~<ã©u»s.h +> + +30 #ifdeà +_WCHAR_H + + +32  + #__Ãed___FILE + + + ) + +33 #ià +defšed + +__USE_UNIX98 + || defšed +__USE_XOPEN2K + + +34  + #__Ãed_FILE + + + ) + +36  + ~<¡dio.h +> + +38  + #__Ãed___va_li¡ + + + ) + +39  + ~<¡d¬g.h +> + +41  + ~ + +44  + #__Ãed_size_t + + + ) + +45  + #__Ãed_wch¬_t + + + ) + +46  + #__Ãed_NULL + + + ) + +48 #ià +defšed + +_WCHAR_H + || defšed +__Ãed_wšt_t + || !defšed +__WINT_TYPE__ + + +49 #undeà +__Ãed_wšt_t + + +50  + #__Ãed_wšt_t + + + ) + +51  + ~<¡ddef.h +> + +55 #iâdeà +_WINT_T + + +60  + #_WINT_T + + + ) + +61  + twšt_t +; + +65 #ià +defšed + +__ýlu¥lus + && defšed +_GLIBCPP_USE_NAMESPACES + \ + +66 && +defšed + +__WINT_TYPE__ + + +67 +__BEGIN_NAMESPACE_STD + + +68  +__WINT_TYPE__ + + twšt_t +; + +69 + g__END_NAMESPACE_STD + + +74 #ià +defšed + +__ýlu¥lus + && +__GNUC_PREREQ + (4, 4) + +75  + #__CORRECT_ISO_CPP_WCHAR_H_PROTO + + + ) + +79 #ià( +defšed + +_WCHAR_H + || defšed +__Ãed_mb¡©e_t +è&& !defšed +____mb¡©e_t_defšed + + +80  + #____mb¡©e_t_defšed + 1 + + ) + +84  + m__couÁ +; + +87 #ifdeà +__WINT_TYPE__ + + +88 +__WINT_TYPE__ + + m__wch +; + +90 +wšt_t + + m__wch +; + +92  + m__wchb +[4]; + +93 } + m__v®ue +; + +94 } + t__mb¡©e_t +; + +96 #undeà +__Ãed_mb¡©e_t + + +101 #ifdeà +_WCHAR_H + + +103 #iâdeà +__mb¡©e_t_defšed + + +104 +__BEGIN_NAMESPACE_C99 + + +106  +__mb¡©e_t + + tmb¡©e_t +; + +107 + g__END_NAMESPACE_C99 + + +108  + #__mb¡©e_t_defšed + 1 + + ) + +111 #ifdeà +__USE_GNU + + +112 + $__USING_NAMESPACE_C99 +( +mb¡©e_t +) + +115 #iâdeà +WCHAR_MIN + + +117  + #WCHAR_MIN + +__WCHAR_MIN + + + ) + +118  + #WCHAR_MAX + +__WCHAR_MAX + + + ) + +121 #iâdeà +WEOF + + +122  + #WEOF + (0xffffffffu) + + ) + +127 #ià +defšed + +__USE_XOPEN + && !defšed +__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 + * + $wcsýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +148 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +) + +149 +__THROW + + `__nÚnuÎ + ((1, 2)); + +152 +wch¬_t + * + $wc¢ýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +153 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +) + +154 +__THROW + + `__nÚnuÎ + ((1, 2)); + +157 +wch¬_t + * + $wcsÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +158 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +) + +159 +__THROW + + `__nÚnuÎ + ((1, 2)); + +161 +wch¬_t + * + $wc¢ÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +162 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +) + +163 +__THROW + + `__nÚnuÎ + ((1, 2)); + +166  + $wcscmp + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +) + +167 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +169  + $wc¢cmp + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, +size_t + +__n +) + +170 +__THROW + +__©Œibu‹_pu»__ + + `__nÚnuÎ + ((1, 2)); + +171 +__END_NAMESPACE_STD + + +173 #ifdeà +__USE_XOPEN2K8 + + +175  + $wcsÿ£cmp + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +è +__THROW +; + +178  + $wc¢ÿ£cmp + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, + +179 +size_t + +__n +è +__THROW +; + +183  + ~ + +185  + $wcsÿ£cmp_l + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, + +186 +__loÿË_t + +__loc +è +__THROW +; + +188  + $wc¢ÿ£cmp_l + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, + +189 +size_t + +__n +, +__loÿË_t + +__loc +è +__THROW +; + +192 +__BEGIN_NAMESPACE_STD + + +195  + $wcscÞl + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +è +__THROW +; + +199 +size_t + + $wcsxäm + ( +wch¬_t + * +__»¡riù + +__s1 +, + +200 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +è +__THROW +; + +201 +__END_NAMESPACE_STD + + +203 #ifdeà +__USE_XOPEN2K8 + + +209  + $wcscÞl_l + (cÚ¡ +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, + +210 +__loÿË_t + +__loc +è +__THROW +; + +215 +size_t + + $wcsxäm_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‹_m®loc__ +; + +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 + * + $wc¤chr + ( +wch¬_t + * +__wcs +, wch¬_ˆ +__wc +) + +236 +__THROW + + `__asm + ("wc¤chr"è +__©Œibu‹_pu»__ +; + +237 "C++" cÚ¡ +wch¬_t + * + $wc¤chr + (cÚ¡ +wch¬_t + * +__wcs +, wch¬_ˆ +__wc +) + +238 +__THROW + + `__asm + ("wc¤chr"è +__©Œibu‹_pu»__ +; + +240 +wch¬_t + * + $wc¤chr + (cÚ¡ +wch¬_t + * +__wcs +, wch¬_ˆ +__wc +) + +241 +__THROW + +__©Œibu‹_pu»__ +; + +243 +__END_NAMESPACE_STD + + +245 #ifdeà +__USE_GNU + + +248 +wch¬_t + * + $wcschºul + (cÚ¡ +wch¬_t + * +__s +, wch¬_ˆ +__wc +) + +249 +__THROW + +__©Œibu‹_pu»__ +; + +252 +__BEGIN_NAMESPACE_STD + + +255 +size_t + + $wcsc¥n + (cÚ¡ +wch¬_t + * +__wcs +, cÚ¡ wch¬_ˆ* +__»jeù +) + +256 +__THROW + +__©Œibu‹_pu»__ +; + +259 +size_t + + $wcs¥n + (cÚ¡ +wch¬_t + * +__wcs +, cÚ¡ wch¬_ˆ* +__acû± +) + +260 +__THROW + +__©Œibu‹_pu»__ +; + +262 #ifdeà +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +263 "C++" +wch¬_t + * + $wc¥brk + ( +wch¬_t + * +__wcs +, cÚ¡ wch¬_ˆ* +__acû± +) + +264 +__THROW + + `__asm + ("wc¥brk"è +__©Œibu‹_pu»__ +; + +265 "C++" cÚ¡ +wch¬_t + * + $wc¥brk + (cÚ¡ +wch¬_t + * +__wcs +, + +266 cÚ¡ +wch¬_t + * +__acû± +) + +267 +__THROW + + `__asm + ("wc¥brk"è +__©Œibu‹_pu»__ +; + +269 +wch¬_t + * + $wc¥brk + (cÚ¡ +wch¬_t + * +__wcs +, cÚ¡ wch¬_ˆ* +__acû± +) + +270 +__THROW + +__©Œibu‹_pu»__ +; + +273 #ifdeà +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +274 "C++" +wch¬_t + * + $wcs¡r + ( +wch¬_t + * +__hay¡ack +, cÚ¡ wch¬_ˆ* +__ÃedË +) + +275 +__THROW + + `__asm + ("wcs¡r"è +__©Œibu‹_pu»__ +; + +276 "C++" cÚ¡ +wch¬_t + * + $wcs¡r + (cÚ¡ +wch¬_t + * +__hay¡ack +, + +277 cÚ¡ +wch¬_t + * +__ÃedË +) + +278 +__THROW + + `__asm + ("wcs¡r"è +__©Œibu‹_pu»__ +; + +280 +wch¬_t + * + $wcs¡r + (cÚ¡ +wch¬_t + * +__hay¡ack +, cÚ¡ wch¬_ˆ* +__ÃedË +) + +281 +__THROW + +__©Œibu‹_pu»__ +; + +285 +wch¬_t + * + $wc¡ok + ( +wch¬_t + * +__»¡riù + +__s +, + +286 cÚ¡ +wch¬_t + * +__»¡riù + +__d–im +, + +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 + * +__hay¡ack +, cÚ¡ wch¬_ˆ* +__ÃedË +) + +297 +__THROW + + `__asm + ("wcswcs"è +__©Œibu‹_pu»__ +; + +298 "C++" cÚ¡ +wch¬_t + * + $wcswcs + (cÚ¡ +wch¬_t + * +__hay¡ack +, + +299 cÚ¡ +wch¬_t + * +__ÃedË +) + +300 +__THROW + + `__asm + ("wcswcs"è +__©Œibu‹_pu»__ +; + +302 +wch¬_t + * + $wcswcs + (cÚ¡ +wch¬_t + * +__hay¡ack +, cÚ¡ wch¬_ˆ* +__ÃedË +) + +303 +__THROW + +__©Œibu‹_pu»__ +; + +307 #ifdeà +__USE_XOPEN2K8 + + +309 +size_t + + $wc¢Ën + (cÚ¡ +wch¬_t + * +__s +, +size_t + +__maxËn +) + +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 + * + $wmemýy + ( +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 + * + $wmem£t + ( +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +è +__THROW +; + +342 +__END_NAMESPACE_STD + + +344 #ifdeà +__USE_GNU + + +347 +wch¬_t + * + $wmempýy + ( +wch¬_t + * +__»¡riù + +__s1 +, + +348 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +) + +349 +__THROW +; + +353 +__BEGIN_NAMESPACE_STD + + +356 +wšt_t + + $btowc + ( +__c +è +__THROW +; + +360  + $wùob + ( +wšt_t + +__c +è +__THROW +; + +364  + $mbsš™ + (cÚ¡ +mb¡©e_t + * +__ps +è +__THROW + +__©Œibu‹_pu»__ +; + +368 +size_t + + $mb¹owc + ( +wch¬_t + * +__»¡riù + +__pwc +, + +369 cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +, + +370 +mb¡©e_t + * +__»¡riù + +__p +è +__THROW +; + +373 +size_t + + $wütomb + (* +__»¡riù + +__s +, +wch¬_t + +__wc +, + +374 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +377 +size_t + + $__mb¾’ + (cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +, + +378 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +379 +size_t + + $mb¾’ + (cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +, + +380 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +381 +__END_NAMESPACE_STD + + +383 #ifdeà +__USE_EXTERN_INLINES + + +389 +wšt_t + + $__btowc_®Ÿs + ( +__c +è + `__asm + ("btowc"); + +390 +__ex‹º_šlše + +wšt_t + + +391 + `__NTH + ( + $btowc + ( +__c +)) + +392 {  ( + `__bužtš_cÚ¡ªt_p + ( +__c +) && __c >= '\0' && __c <= '\x7f' + +393 ? ( +wšt_t +è +__c + : + `__btowc_®Ÿs + (__c)); + } +} + +395  + $__wùob_®Ÿs + ( +wšt_t + +__c +è + `__asm + ("wctob"); + +396 +__ex‹º_šlše +  + +397 + `__NTH + ( + $wùob + ( +wšt_t + +__wc +)) + +398 {  ( + `__bužtš_cÚ¡ªt_p + ( +__wc +è&& __wø>ð +L +'\0' && __wc <= L'\x7f' + +399 ? (è +__wc + : + `__wùob_®Ÿs + (__wc)); + } +} + +401 +__ex‹º_šlše + +size_t + + +402 +__NTH + ( + $mb¾’ + (cÚ¡ * +__»¡riù + +__s +, +size_t + +__n +, + +403 +mb¡©e_t + * +__»¡riù + +__ps +)) + +404 {  ( +__ps + !ð +NULL + + +405 ? + `mb¹owc + ( +NULL +, +__s +, +__n +, +__ps +è: + `__mb¾’ + (__s, __n, NULL)); + } +} + +408 +__BEGIN_NAMESPACE_STD + + +411 +size_t + + $mb¤towcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +412 cÚ¡ ** +__»¡riù + +__¤c +, +size_t + +__Ën +, + +413 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +417 +size_t + + $wc¤tombs + (* +__»¡riù + +__d¡ +, + +418 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, +size_t + +__Ën +, + +419 +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +420 +__END_NAMESPACE_STD + + +423 #ifdef +__USE_XOPEN2K8 + + +426 +size_t + + $mb¢¹owcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +427 cÚ¡ ** +__»¡riù + +__¤c +, +size_t + +__nmc +, + +428 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +è +__THROW +; + +432 +size_t + + $wc¢¹ombs + (* +__»¡riù + +__d¡ +, + +433 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +434 +size_t + +__nwc +, size_ˆ +__Ën +, + +435 +mb¡©e_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  + $wc¡od + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +454 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +455 +__END_NAMESPACE_STD + + +457 #ifdeà +__USE_ISOC99 + + +458 +__BEGIN_NAMESPACE_C99 + + +460  + $wc¡of + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +461 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +462  + $wc¡Þd + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +463 +wch¬_t + ** +__»¡riù + +__’d±r +è +__THROW +; + +464 +__END_NAMESPACE_C99 + + +468 +__BEGIN_NAMESPACE_STD + + +471  + $wc¡Þ + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +472 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +è +__THROW +; + +476  + $wc¡oul + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +477 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +478 +__THROW +; + +479 +__END_NAMESPACE_STD + + +481 #ifdeà +__USE_ISOC99 + + +482 +__BEGIN_NAMESPACE_C99 + + +485 +__ex‹nsiÚ__ + + +486  + $wc¡Þl + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +487 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +488 +__THROW +; + +492 +__ex‹nsiÚ__ + + +493  + $wc¡ouÎ + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +494 +wch¬_t + ** +__»¡riù + +__’d±r +, + +495  +__ba£ +è +__THROW +; + +496 +__END_NAMESPACE_C99 + + +499 #ifdeà +__USE_GNU + + +502 +__ex‹nsiÚ__ + + +503  + $wc¡oq + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +504 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +) + +505 +__THROW +; + +509 +__ex‹nsiÚ__ + + +510  + $wc¡ouq + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +511 +wch¬_t + ** +__»¡riù + +__’d±r +, + +512  +__ba£ +è +__THROW +; + +515 #ifdeà +__USE_GNU + + +529  + ~ + +533  + $wc¡Þ_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +534 +wch¬_t + ** +__»¡riù + +__’d±r +,  +__ba£ +, + +535 +__loÿË_t + +__loc +è +__THROW +; + +537  + $wc¡oul_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +538 +wch¬_t + ** +__»¡riù + +__’d±r +, + +539  +__ba£ +, +__loÿË_t + +__loc +è +__THROW +; + +541 +__ex‹nsiÚ__ + + +542  + $wc¡Þl_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +543 +wch¬_t + ** +__»¡riù + +__’d±r +, + +544  +__ba£ +, +__loÿË_t + +__loc +è +__THROW +; + +546 +__ex‹nsiÚ__ + + +547  + $wc¡ouÎ_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +548 +wch¬_t + ** +__»¡riù + +__’d±r +, + +549  +__ba£ +, +__loÿË_t + +__loc +) + +550 +__THROW +; + +552  + $wc¡od_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +553 +wch¬_t + ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +554 +__THROW +; + +556  + $wc¡of_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +557 +wch¬_t + ** +__»¡riù + +__’d±r +, +__loÿË_t + +__loc +) + +558 +__THROW +; + +560  + $wc¡Þd_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Ō +, + +561 +wch¬_t + ** +__»¡riù + +__’d±r +, + +562 +__loÿË_t + +__loc +è +__THROW +; + +566 #ifdeà +__USE_XOPEN2K8 + + +569 +wch¬_t + * + $wýýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +570 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +è +__THROW +; + +574 +wch¬_t + * + $wýnýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +575 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +) + +576 +__THROW +; + +583 +__FILE + * + $ݒ_wmem¡»am + ( +wch¬_t + ** +__buæoc +, +size_t + * +__siz–oc +è +__THROW +; + +586 #ià +defšed + +__USE_ISOC95 + || defšed +__USE_UNIX98 + + +587 +__BEGIN_NAMESPACE_STD + + +590  + $fwide + ( +__FILE + * +__å +,  +__mode +è +__THROW +; + +597  + `fw´štf + ( +__FILE + * +__»¡riù + +__¡»am +, + +598 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +604  + `w´štf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +607  + $sw´štf + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +608 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +609 +__THROW + ; + +615  + `vfw´štf + ( +__FILE + * +__»¡riù + +__s +, + +616 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +617 +__gnuc_va_li¡ + +__¬g +) + +623  + `vw´štf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +624 +__gnuc_va_li¡ + +__¬g +) + +628  + $vsw´štf + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +629 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +630 +__gnuc_va_li¡ + +__¬g +) + +631 +__THROW + ; + +638  + `fwsÿnf + ( +__FILE + * +__»¡riù + +__¡»am +, + +639 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +645  + `wsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +648  + $swsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +649 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +650 +__THROW + ; + +652 #ià +defšed + +__USE_ISOC99 + && !defšed +__USE_GNU + \ + +653 && (! +defšed + +__LDBL_COMPAT + || !defšed +__REDIRECT +) \ + +654 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +655 #ifdeà +__REDIRECT + + +659  + `__REDIRECT + ( +fwsÿnf +, ( +__FILE + * +__»¡riù + +__¡»am +, + +660 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...), + +661 +__isoc99_fwsÿnf +) + +663  + `__REDIRECT + ( +wsÿnf +, (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...), + +664 +__isoc99_wsÿnf +) + +666  + `__REDIRECT_NTH + ( +swsÿnf +, (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +667 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +668 ...), +__isoc99_swsÿnf +) + +671  + `__isoc99_fwsÿnf + ( +__FILE + * +__»¡riù + +__¡»am +, + +672 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...); + +673  + `__isoc99_wsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...); + +674  + $__isoc99_swsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +675 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +676 +__THROW +; + +677  + #fwsÿnf + +__isoc99_fwsÿnf + + + ) + +678  + #wsÿnf + +__isoc99_wsÿnf + + + ) + +679  + #swsÿnf + +__isoc99_swsÿnf + + + ) + +683 +__END_NAMESPACE_STD + + +686 #ifdeà +__USE_ISOC99 + + +687 +__BEGIN_NAMESPACE_C99 + + +692  + `vfwsÿnf + ( +__FILE + * +__»¡riù + +__s +, + +693 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +694 +__gnuc_va_li¡ + +__¬g +) + +700  + `vwsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +701 +__gnuc_va_li¡ + +__¬g +) + +704  + $vswsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +705 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +706 +__gnuc_va_li¡ + +__¬g +) + +707 +__THROW + ; + +709 #ià! +defšed + +__USE_GNU + \ + +710 && (! +defšed + +__LDBL_COMPAT + || !defšed +__REDIRECT +) \ + +711 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +712 #ifdeà +__REDIRECT + + +713  + `__REDIRECT + ( +vfwsÿnf +, ( +__FILE + * +__»¡riù + +__s +, + +714 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +715 +__gnuc_va_li¡ + +__¬g +), +__isoc99_vfwsÿnf +) + +717  + `__REDIRECT + ( +vwsÿnf +, (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +718 +__gnuc_va_li¡ + +__¬g +), +__isoc99_vwsÿnf +) + +720  + `__REDIRECT_NTH + ( +vswsÿnf +, (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +721 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +722 +__gnuc_va_li¡ + +__¬g +), +__isoc99_vswsÿnf +) + +725  + `__isoc99_vfwsÿnf + ( +__FILE + * +__»¡riù + +__s +, + +726 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +727 +__gnuc_va_li¡ + +__¬g +); + +728  + `__isoc99_vwsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +729 +__gnuc_va_li¡ + +__¬g +); + +730  + $__isoc99_vswsÿnf + (cÚ¡ +wch¬_t + * +__»¡riù + +__s +, + +731 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +732 +__gnuc_va_li¡ + +__¬g +è +__THROW +; + +733  + #vfwsÿnf + +__isoc99_vfwsÿnf + + + ) + +734  + #vwsÿnf + +__isoc99_vwsÿnf + + + ) + +735  + #vswsÿnf + +__isoc99_vswsÿnf + + + ) + +739 +__END_NAMESPACE_C99 + + +743 +__BEGIN_NAMESPACE_STD + + +748 +wšt_t + + `fg‘wc + ( +__FILE + * +__¡»am +); + +749 +wšt_t + + `g‘wc + ( +__FILE + * +__¡»am +); + +755 +wšt_t + + `g‘wch¬ + (); + +762 +wšt_t + + `åutwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +763 +wšt_t + + `putwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +769 +wšt_t + + `putwch¬ + ( +wch¬_t + +__wc +); + +777 +wch¬_t + * + `fg‘ws + (wch¬_ˆ* +__»¡riù + +__ws +,  +__n +, + +778 +__FILE + * +__»¡riù + +__¡»am +); + +784  + `åutws + (cÚ¡ +wch¬_t + * +__»¡riù + +__ws +, + +785 +__FILE + * +__»¡riù + +__¡»am +); + +792 +wšt_t + + `ung‘wc + (wšt_ˆ +__wc +, +__FILE + * +__¡»am +); + +793 +__END_NAMESPACE_STD + + +796 #ifdeà +__USE_GNU + + +804 +wšt_t + + `g‘wc_uÆocked + ( +__FILE + * +__¡»am +); + +805 +wšt_t + + `g‘wch¬_uÆocked + (); + +813 +wšt_t + + `fg‘wc_uÆocked + ( +__FILE + * +__¡»am +); + +821 +wšt_t + + `åutwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +830 +wšt_t + + `putwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +831 +wšt_t + + `putwch¬_uÆocked + ( +wch¬_t + +__wc +); + +840 +wch¬_t + * + `fg‘ws_uÆocked + (wch¬_ˆ* +__»¡riù + +__ws +,  +__n +, + +841 +__FILE + * +__»¡riù + +__¡»am +); + +849  + `åutws_uÆocked + (cÚ¡ +wch¬_t + * +__»¡riù + +__ws +, + +850 +__FILE + * +__»¡riù + +__¡»am +); + +854 +__BEGIN_NAMESPACE_C99 + + +858 +size_t + + $wcsáime + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__maxsize +, + +859 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +860 cÚ¡  +tm + * +__»¡riù + +__ +è +__THROW +; + +861 +__END_NAMESPACE_C99 + + +863 #ifdeà +__USE_GNU + + +864  + ~ + +868 +size_t + + $wcsáime_l + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__maxsize +, + +869 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +870 cÚ¡  +tm + * +__»¡riù + +__ +, + +871 +__loÿË_t + +__loc +è +__THROW +; + +880 #ià +defšed + +__USE_UNIX98 + && !defšed +__USE_GNU + + +881  + #__Ãed_iswxxx + + + ) + +882  + ~ + +886 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +887  + ~ + +890 #ifdeà +__LDBL_COMPAT + + +891  + ~ + +894 +__END_DECLS + + +902 #undeà +__Ãed_mb¡©e_t + + +903 #undeà +__Ãed_wšt_t + + + @/usr/include/asm-generic/errno.h + +1 #iâdeà +_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 #iâdeà +__ASM_GENERIC_PARAM_H + + +2  + #__ASM_GENERIC_PARAM_H + + + ) + +4 #iâdeà +HZ + + +5  + #HZ + 100 + + ) + +8 #iâdeà +EXEC_PAGESIZE + + +9  + #EXEC_PAGESIZE + 4096 + + ) + +12 #iâdeà +NOGROUP + + +13  + #NOGROUP + (-1) + + ) + +16  + #MAXHOSTNAMELEN + 64 + + ) + + @/usr/include/asm/sockios.h + +1  + ~ + + @/usr/include/bits/wchar-ldbl.h + +19 #iâdeà +_WCHAR_H + + +23 #ià +defšed + +__USE_ISOC95 + || defšed +__USE_UNIX98 + + +24 +__BEGIN_NAMESPACE_C99 + + +25 +__LDBL_REDIR_DECL + ( +fw´štf +); + +26 +__LDBL_REDIR_DECL + ( +w´štf +); + +27 +__LDBL_REDIR_DECL + ( +sw´štf +); + +28 +__LDBL_REDIR_DECL + ( +vfw´štf +); + +29 +__LDBL_REDIR_DECL + ( +vw´štf +); + +30 +__LDBL_REDIR_DECL + ( +vsw´štf +); + +31 #ià +defšed + +__USE_ISOC99 + && !defšed +__USE_GNU + \ + +32 && ! +defšed + + g__REDIRECT + \ + +33 && ( +defšed + + g__STRICT_ANSI__ + || defšed + g__USE_XOPEN2K +) + +34 + $__LDBL_REDIR1_DECL + ( +fwsÿnf +, +__Ædbl___isoc99_fwsÿnf +) + +35 + $__LDBL_REDIR1_DECL + ( +wsÿnf +, +__Ædbl___isoc99_wsÿnf +) + +36 + $__LDBL_REDIR1_DECL + ( +swsÿnf +, +__Ædbl___isoc99_swsÿnf +) + +38 + `__LDBL_REDIR_DECL + ( +fwsÿnf +); + +39 + `__LDBL_REDIR_DECL + ( +wsÿnf +); + +40 + `__LDBL_REDIR_DECL + ( +swsÿnf +); + +42 +__END_NAMESPACE_C99 + + +45 #ifdeà +__USE_ISOC99 + + +46 +__BEGIN_NAMESPACE_C99 + + +47 + `__LDBL_REDIR1_DECL + ( +wc¡Þd +, +wc¡od +); + +48 #ià! +defšed + +__USE_GNU + && !defšed +__REDIRECT + \ + +49 && ( +defšed + +__STRICT_ANSI__ + || defšed +__USE_XOPEN2K +) + +50 + $__LDBL_REDIR1_DECL + ( +vfwsÿnf +, +__Ædbl___isoc99_vfwsÿnf +) + +51 + $__LDBL_REDIR1_DECL + ( +vwsÿnf +, +__Ædbl___isoc99_vwsÿnf +) + +52 + $__LDBL_REDIR1_DECL + ( +vswsÿnf +, +__Ædbl___isoc99_vswsÿnf +) + +54 + `__LDBL_REDIR_DECL + ( +vfwsÿnf +); + +55 + `__LDBL_REDIR_DECL + ( +vwsÿnf +); + +56 + `__LDBL_REDIR_DECL + ( +vswsÿnf +); + +58 +__END_NAMESPACE_C99 + + +61 #ifdeà +__USE_GNU + + +62 + `__LDBL_REDIR1_DECL + ( +wc¡Þd_l +, +wc¡od_l +); + +65 #ià +__USE_FORTIFY_LEVEL + > 0 && +defšed + +__fÜtify_funùiÚ + + +66 + $__LDBL_REDIR_DECL + ( +__sw´štf_chk +) + +67 + $__LDBL_REDIR_DECL + ( +__vsw´štf_chk +) + +68 #ià +__USE_FORTIFY_LEVEL + > 1 + +69 + $__LDBL_REDIR_DECL + ( +__fw´štf_chk +) + +70 + $__LDBL_REDIR_DECL + ( +__w´štf_chk +) + +71 + $__LDBL_REDIR_DECL + ( +__vfw´štf_chk +) + +72 + $__LDBL_REDIR_DECL + ( +__vw´štf_chk +) + + @/usr/include/bits/wchar2.h + +19 #iâdeà +_WCHAR_H + + +24 +wch¬_t + * + $__wmemýy_chk + ( +wch¬_t + * +__»¡riù + +__s1 +, + +25 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +, + +26 +size_t + +__ns1 +è +__THROW +; + +27 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmemýy_®Ÿs +, + +28 ( +wch¬_t + * +__»¡riù + +__s1 +, + +29 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +), + +30 +wmemýy +); + +31 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmemýy_chk_w¬n +, + +32 ( +wch¬_t + * +__»¡riù + +__s1 +, + +33 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +, + +34 +size_t + +__ns1 +), +__wmemýy_chk +) + +35 + `__w¬Ç‰r + ("wmemcpy called with†ength biggerhan size of destination " + +38 +__fÜtify_funùiÚ + +wch¬_t + * + +39 + `__NTH + ( + $wmemýy + ( +wch¬_t + * +__»¡riù + +__s1 +, cÚ¡ wch¬_ˆ*__»¡riù +__s2 +, + +40 +size_t + +__n +)) + +42 ià( + `__bos0 + ( +__s1 +è!ð( +size_t +) -1) + +44 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +45  + `__wmemýy_chk + ( +__s1 +, +__s2 +, +__n +, + +46 + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)); + +48 ià( +__n + > + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)) + +49  + `__wmemýy_chk_w¬n + ( +__s1 +, +__s2 +, +__n +, + +50 + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)); + +52  + `__wmemýy_®Ÿ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_w¬n +, + +62 ( +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, + +63 +size_t + +__n +, size_ˆ +__ns1 +), +__wmemmove_chk +) + +64 + `__w¬Ç‰r + ("wmemmove called with†ength biggerhan size of destination " + +67 +__fÜtify_funùiÚ + +wch¬_t + * + +68 + `__NTH + ( + $wmemmove + ( +wch¬_t + * +__s1 +, cÚ¡ wch¬_ˆ* +__s2 +, +size_t + +__n +)) + +70 ià( + `__bos0 + ( +__s1 +è!ð( +size_t +) -1) + +72 ià(! + `__bužtš_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_w¬n + ( +__s1 +, +__s2 +, +__n +, + +78 + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)); + +80  + `__wmemmove_®Ÿs + ( +__s1 +, +__s2 +, +__n +); + +81 + } +} + +84 #ifdeà +__USE_GNU + + +85 +wch¬_t + * + $__wmempýy_chk + ( +wch¬_t + * +__»¡riù + +__s1 +, + +86 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +, + +87 +size_t + +__ns1 +è +__THROW +; + +88 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmempýy_®Ÿs +, + +89 ( +wch¬_t + * +__»¡riù + +__s1 +, + +90 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, + +91 +size_t + +__n +), +wmempýy +); + +92 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmempýy_chk_w¬n +, + +93 ( +wch¬_t + * +__»¡riù + +__s1 +, + +94 cÚ¡ +wch¬_t + * +__»¡riù + +__s2 +, +size_t + +__n +, + +95 +size_t + +__ns1 +), +__wmempýy_chk +) + +96 + `__w¬Ç‰r + ("wmempcpy called with†ength biggerhan size of destination " + +99 +__fÜtify_funùiÚ + +wch¬_t + * + +100 + `__NTH + ( + $wmempýy + ( +wch¬_t + * +__»¡riù + +__s1 +, cÚ¡ wch¬_ˆ*__»¡riù +__s2 +, + +101 +size_t + +__n +)) + +103 ià( + `__bos0 + ( +__s1 +è!ð( +size_t +) -1) + +105 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +106  + `__wmempýy_chk + ( +__s1 +, +__s2 +, +__n +, + +107 + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)); + +109 ià( +__n + > + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)) + +110  + `__wmempýy_chk_w¬n + ( +__s1 +, +__s2 +, +__n +, + +111 + `__bos0 + ( +__s1 +è/  ( +wch¬_t +)); + +113  + `__wmempýy_®Ÿs + ( +__s1 +, +__s2 +, +__n +); + +114 + } +} + +118 +wch¬_t + * + $__wmem£t_chk + ( +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +, + +119 +size_t + +__ns +è +__THROW +; + +120 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmem£t_®Ÿs +, (wch¬_ˆ* +__s +, wch¬_ˆ +__c +, + +121 +size_t + +__n +), +wmem£t +); + +122 +wch¬_t + * + `__REDIRECT_NTH + ( +__wmem£t_chk_w¬n +, + +123 ( +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +, + +124 +size_t + +__ns +), +__wmem£t_chk +) + +125 + `__w¬Ç‰r + ("wmemset called with†ength biggerhan size of destination " + +128 +__fÜtify_funùiÚ + +wch¬_t + * + +129 + `__NTH + ( + $wmem£t + ( +wch¬_t + * +__s +, wch¬_ˆ +__c +, +size_t + +__n +)) + +131 ià( + `__bos0 + ( +__s +è!ð( +size_t +) -1) + +133 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +134  + `__wmem£t_chk + ( +__s +, +__c +, +__n +, + `__bos0 + (__sè/  ( +wch¬_t +)); + +136 ià( +__n + > + `__bos0 + ( +__s +è/  ( +wch¬_t +)) + +137  + `__wmem£t_chk_w¬n + ( +__s +, +__c +, +__n +, + +138 + `__bos0 + ( +__s +è/  ( +wch¬_t +)); + +140  + `__wmem£t_®Ÿs + ( +__s +, +__c +, +__n +); + +141 + } +} + +144 +wch¬_t + * + $__wcsýy_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +145 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +146 +size_t + +__n +è +__THROW +; + +147 +wch¬_t + * + `__REDIRECT_NTH + ( +__wcsýy_®Ÿs +, + +148 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +149 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +), +wcsýy +); + +151 +__fÜtify_funùiÚ + +wch¬_t + * + +152 + `__NTH + ( + $wcsýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +)) + +154 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +155  + `__wcsýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__de¡è/  ( +wch¬_t +)); + +156  + `__wcsýy_®Ÿs + ( +__de¡ +, +__¤c +); + +157 + } +} + +160 +wch¬_t + * + $__wýýy_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +161 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +162 +size_t + +__de¡Ën +è +__THROW +; + +163 +wch¬_t + * + `__REDIRECT_NTH + ( +__wýýy_®Ÿs +, + +164 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +165 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +), +wýýy +); + +167 +__fÜtify_funùiÚ + +wch¬_t + * + +168 + `__NTH + ( + $wýýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +)) + +170 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +171  + `__wýýy_chk + ( +__de¡ +, +__¤c +, + `__bos + (__de¡è/  ( +wch¬_t +)); + +172  + `__wýýy_®Ÿs + ( +__de¡ +, +__¤c +); + +173 + } +} + +176 +wch¬_t + * + $__wc¢ýy_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +177 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +, + +178 +size_t + +__de¡Ën +è +__THROW +; + +179 +wch¬_t + * + `__REDIRECT_NTH + ( +__wc¢ýy_®Ÿs +, + +180 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +181 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +182 +size_t + +__n +), +wc¢ýy +); + +183 +wch¬_t + * + `__REDIRECT_NTH + ( +__wc¢ýy_chk_w¬n +, + +184 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +185 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +186 +size_t + +__n +, size_ˆ +__de¡Ën +), +__wc¢ýy_chk +) + +187 + `__w¬Ç‰r + ("wcsncpy called with†ength biggerhan size of destination " + +190 +__fÜtify_funùiÚ + +wch¬_t + * + +191 + `__NTH + ( + $wc¢ýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +, + +192 +size_t + +__n +)) + +194 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +196 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +197  + `__wc¢ýy_chk + ( +__de¡ +, +__¤c +, +__n +, + +198 + `__bos + ( +__de¡ +è/  ( +wch¬_t +)); + +199 ià( +__n + > + `__bos + ( +__de¡ +è/  ( +wch¬_t +)) + +200  + `__wc¢ýy_chk_w¬n + ( +__de¡ +, +__¤c +, +__n +, + +201 + `__bos + ( +__de¡ +è/  ( +wch¬_t +)); + +203  + `__wc¢ýy_®Ÿs + ( +__de¡ +, +__¤c +, +__n +); + +204 + } +} + +207 +wch¬_t + * + $__wýnýy_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +208 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, +size_t + +__n +, + +209 +size_t + +__de¡Ën +è +__THROW +; + +210 +wch¬_t + * + `__REDIRECT_NTH + ( +__wýnýy_®Ÿs +, + +211 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +212 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +213 +size_t + +__n +), +wýnýy +); + +214 +wch¬_t + * + `__REDIRECT_NTH + ( +__wýnýy_chk_w¬n +, + +215 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +216 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +217 +size_t + +__n +, size_ˆ +__de¡Ën +), +__wýnýy_chk +) + +218 + `__w¬Ç‰r + ("wcpncpy called with†ength biggerhan size of destination " + +221 +__fÜtify_funùiÚ + +wch¬_t + * + +222 + `__NTH + ( + $wýnýy + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +, + +223 +size_t + +__n +)) + +225 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +227 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +)) + +228  + `__wýnýy_chk + ( +__de¡ +, +__¤c +, +__n +, + +229 + `__bos + ( +__de¡ +è/  ( +wch¬_t +)); + +230 ià( +__n + > + `__bos + ( +__de¡ +è/  ( +wch¬_t +)) + +231  + `__wýnýy_chk_w¬n + ( +__de¡ +, +__¤c +, +__n +, + +232 + `__bos + ( +__de¡ +è/  ( +wch¬_t +)); + +234  + `__wýnýy_®Ÿs + ( +__de¡ +, +__¤c +, +__n +); + +235 + } +} + +238 +wch¬_t + * + $__wcsÿt_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +239 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +240 +size_t + +__de¡Ën +è +__THROW +; + +241 +wch¬_t + * + `__REDIRECT_NTH + ( +__wcsÿt_®Ÿs +, + +242 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +243 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +), +wcsÿt +); + +245 +__fÜtify_funùiÚ + +wch¬_t + * + +246 + `__NTH + ( + $wcsÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +)) + +248 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +249  + `__wcsÿt_chk + ( +__de¡ +, +__¤c +, + `__bos + (__de¡è/  ( +wch¬_t +)); + +250  + `__wcsÿt_®Ÿs + ( +__de¡ +, +__¤c +); + +251 + } +} + +254 +wch¬_t + * + $__wc¢ÿt_chk + ( +wch¬_t + * +__»¡riù + +__de¡ +, + +255 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +256 +size_t + +__n +, size_ˆ +__de¡Ën +è +__THROW +; + +257 +wch¬_t + * + `__REDIRECT_NTH + ( +__wc¢ÿt_®Ÿs +, + +258 ( +wch¬_t + * +__»¡riù + +__de¡ +, + +259 cÚ¡ +wch¬_t + * +__»¡riù + +__¤c +, + +260 +size_t + +__n +), +wc¢ÿt +); + +262 +__fÜtify_funùiÚ + +wch¬_t + * + +263 + `__NTH + ( + $wc¢ÿt + ( +wch¬_t + * +__»¡riù + +__de¡ +, cÚ¡ wch¬_ˆ*__»¡riù +__¤c +, + +264 +size_t + +__n +)) + +266 ià( + `__bos + ( +__de¡ +è!ð( +size_t +) -1) + +267  + `__wc¢ÿt_chk + ( +__de¡ +, +__¤c +, +__n +, + +268 + `__bos + ( +__de¡ +è/  ( +wch¬_t +)); + +269  + `__wc¢ÿt_®Ÿs + ( +__de¡ +, +__¤c +, +__n +); + +270 + } +} + +273  + $__sw´štf_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +274  +__æag +, +size_t + +__s_Ën +, + +275 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...) + +276 +__THROW + ; + +278  + `__REDIRECT_NTH_LDBL + ( +__sw´štf_®Ÿs +, + +279 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +280 cÚ¡ +wch¬_t + * +__»¡riù + +__fmt +, ...), + +281 +sw´štf +); + +283 #ifdeà +__va_¬g_·ck + + +284 +__fÜtify_funùiÚ +  + +285 + `__NTH + ( + $sw´štf + ( +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  + `__sw´štf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +290 + `__bos + ( +__s +è/  ( +wch¬_t +), + +291 +__fmt +, + `__va_¬g_·ck + ()); + +292  + `__sw´štf_®Ÿs + ( +__s +, +__n +, +__fmt +, + `__va_¬g_·ck + ()); + +293 + } +} + +294 #–ià! +defšed + +__ýlu¥lus + + +296  + #sw´štf +( +s +, +n +, ...) \ + +297 ( + `__bos + ( +s +è!ð( +size_t +è-1 || +__USE_FORTIFY_LEVEL + > 1 \ + +298 ? + `__sw´štf_chk + ( +s +, +n +, +__USE_FORTIFY_LEVEL + - 1, \ + +299 + `__bos + ( +s +è/  ( +wch¬_t +), +__VA_ARGS__ +) \ + +300 : + `sw´štf + ( +s +, +n +, +__VA_ARGS__ +)) + + ) + +303  + $__vsw´štf_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +304  +__æag +, +size_t + +__s_Ën +, + +305 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +306 +__gnuc_va_li¡ + +__¬g +) + +307 +__THROW + ; + +309  + `__REDIRECT_NTH_LDBL + ( +__vsw´štf_®Ÿs +, + +310 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__n +, + +311 cÚ¡ +wch¬_t + * +__»¡riù + +__fmt +, + +312 +__gnuc_va_li¡ + +__­ +), +vsw´štf +); + +314 +__fÜtify_funùiÚ +  + +315 + `__NTH + ( + $vsw´štf + ( +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  + `__vsw´štf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +320 + `__bos + ( +__s +è/  ( +wch¬_t +), +__fmt +, +__­ +); + +321  + `__vsw´štf_®Ÿs + ( +__s +, +__n +, +__fmt +, +__­ +); + +322 + } +} + +325 #ià +__USE_FORTIFY_LEVEL + > 1 + +327  +__fw´štf_chk + ( +__FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +328 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, ...); + +329  +__w´štf_chk + ( +__æag +, cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +331  +__vfw´štf_chk + ( +__FILE + * +__»¡riù + +__¡»am +,  +__æag +, + +332 cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +333 +__gnuc_va_li¡ + +__­ +); + +334  +__vw´štf_chk + ( +__æag +, cÚ¡ +wch¬_t + * +__»¡riù + +__fÜm© +, + +335 +__gnuc_va_li¡ + +__­ +); + +337 #ifdeà +__va_¬g_·ck + + +338 +__fÜtify_funùiÚ +  + +339 + $w´štf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fmt +, ...) + +341  + `__w´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + `__va_¬g_·ck + ()); + +342 + } +} + +344 +__fÜtify_funùiÚ +  + +345 + $fw´štf + ( +__FILE + * +__»¡riù + +__¡»am +, cÚ¡ +wch¬_t + *__»¡riù +__fmt +, ...) + +347  + `__fw´štf_chk + ( +__¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +348 + `__va_¬g_·ck + ()); + +349 + } +} + +350 #–ià! +defšed + +__ýlu¥lus + + +351  + #w´štf +(...) \ + +352 + `__w´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +353  + #fw´štf +( +¡»am +, ...) \ + +354 + `__fw´štf_chk + ( +¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +357 +__fÜtify_funùiÚ +  + +358 + $vw´štf + (cÚ¡ +wch¬_t + * +__»¡riù + +__fmt +, +__gnuc_va_li¡ + +__­ +) + +360  + `__vw´štf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +361 + } +} + +363 +__fÜtify_funùiÚ +  + +364 + $vfw´štf + ( +__FILE + * +__»¡riù + +__¡»am +, + +365 cÚ¡ +wch¬_t + * +__»¡riù + +__fmt +, +__gnuc_va_li¡ + +__­ +) + +367  + `__vfw´štf_chk + ( +__¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__­ +); + +368 + } +} + +372 +wch¬_t + * + $__fg‘ws_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +373 +__FILE + * +__»¡riù + +__¡»am +è +__wur +; + +374 +wch¬_t + * + `__REDIRECT + ( +__fg‘ws_®Ÿs +, + +375 ( +wch¬_t + * +__»¡riù + +__s +,  +__n +, + +376 +__FILE + * +__»¡riù + +__¡»am +), +fg‘ws +è +__wur +; + +377 +wch¬_t + * + `__REDIRECT + ( +__fg‘ws_chk_w¬n +, + +378 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +379 +__FILE + * +__»¡riù + +__¡»am +), +__fg‘ws_chk +) + +380 +__wur + + `__w¬Ç‰r + ("fgetws called with bigger sizehan†ength " + +383 +__fÜtify_funùiÚ + +__wur + +wch¬_t + * + +384 + $fg‘ws + ( +wch¬_t + * +__»¡riù + +__s +,  +__n +, +__FILE + *__»¡riù +__¡»am +) + +386 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +388 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +389  + `__fg‘ws_chk + ( +__s +, + `__bos + (__sè/  ( +wch¬_t +), + +390 +__n +, +__¡»am +); + +392 ià(( +size_t +è +__n + > + `__bos + ( +__s +è/  ( +wch¬_t +)) + +393  + `__fg‘ws_chk_w¬n + ( +__s +, + `__bos + (__sè/  ( +wch¬_t +), + +394 +__n +, +__¡»am +); + +396  + `__fg‘ws_®Ÿs + ( +__s +, +__n +, +__¡»am +); + +397 + } +} + +399 #ifdeà +__USE_GNU + + +400 +wch¬_t + * + $__fg‘ws_uÆocked_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +, + +401  +__n +, +__FILE + * +__»¡riù + +__¡»am +) + +402 +__wur +; + +403 +wch¬_t + * + `__REDIRECT + ( +__fg‘ws_uÆocked_®Ÿs +, + +404 ( +wch¬_t + * +__»¡riù + +__s +,  +__n +, + +405 +__FILE + * +__»¡riù + +__¡»am +), +fg‘ws_uÆocked +) + +406 +__wur +; + +407 +wch¬_t + * + `__REDIRECT + ( +__fg‘ws_uÆocked_chk_w¬n +, + +408 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +,  +__n +, + +409 +__FILE + * +__»¡riù + +__¡»am +), + +410 +__fg‘ws_uÆocked_chk +) + +411 +__wur + + `__w¬Ç‰r + ("fgetws_unlocked called with bigger sizehan†ength " + +414 +__fÜtify_funùiÚ + +__wur + +wch¬_t + * + +415 + $fg‘ws_uÆocked + ( +wch¬_t + * +__»¡riù + +__s +,  +__n +, +__FILE + *__»¡riù +__¡»am +) + +417 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +419 ià(! + `__bužtš_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +420  + `__fg‘ws_uÆocked_chk + ( +__s +, + `__bos + (__sè/  ( +wch¬_t +), + +421 +__n +, +__¡»am +); + +423 ià(( +size_t +è +__n + > + `__bos + ( +__s +è/  ( +wch¬_t +)) + +424  + `__fg‘ws_uÆocked_chk_w¬n + ( +__s +, + `__bos + (__sè/  ( +wch¬_t +), + +425 +__n +, +__¡»am +); + +427  + `__fg‘ws_uÆocked_®Ÿs + ( +__s +, +__n +, +__¡»am +); + +428 + } +} + +432 +size_t + + $__wütomb_chk + (* +__»¡riù + +__s +, +wch¬_t + +__wch¬ +, + +433 +mb¡©e_t + * +__»¡riù + +__p +, + +434 +size_t + +__buæ’ +è +__THROW + +__wur +; + +435 +size_t + + `__REDIRECT_NTH + ( +__wütomb_®Ÿs +, + +436 (* +__»¡riù + +__s +, +wch¬_t + +__wch¬ +, + +437 +mb¡©e_t + * +__»¡riù + +__ps +), +wütomb +è +__wur +; + +439 +__fÜtify_funùiÚ + +__wur + +size_t + + +440 + `__NTH + ( + $wütomb + (* +__»¡riù + +__s +, +wch¬_t + +__wch¬ +, + +441 +mb¡©e_t + * +__»¡riù + +__ps +)) + +446  + #__WCHAR_MB_LEN_MAX + 16 + + ) + +447 #ià +defšed + +MB_LEN_MAX + && MB_LEN_MAX !ð +__WCHAR_MB_LEN_MAX + + +450 ià( + `__bos + ( +__s +è!ð( +size_t +è-1 && +__WCHAR_MB_LEN_MAX + > __bos (__s)) + +451  + `__wütomb_chk + ( +__s +, +__wch¬ +, +__ps +, + `__bos + (__s)); + +452  + `__wütomb_®Ÿs + ( +__s +, +__wch¬ +, +__ps +); + +453 + } +} + +456 +size_t + + $__mb¤towcs_chk + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +457 cÚ¡ ** +__»¡riù + +__¤c +, + +458 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +459 +size_t + +__d¡Ën +è +__THROW +; + +460 +size_t + + `__REDIRECT_NTH + ( +__mb¤towcs_®Ÿs +, + +461 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +462 cÚ¡ ** +__»¡riù + +__¤c +, + +463 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +), + +464 +mb¤towcs +); + +465 +size_t + + `__REDIRECT_NTH + ( +__mb¤towcs_chk_w¬n +, + +466 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +467 cÚ¡ ** +__»¡riù + +__¤c +, + +468 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +469 +size_t + +__d¡Ën +), +__mb¤towcs_chk +) + +470 + `__w¬Ç‰r + ("mbsrtowcs called with dst buffer smallerhan†en " + +473 +__fÜtify_funùiÚ + +size_t + + +474 + `__NTH + ( + $mb¤towcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, cÚ¡ **__»¡riù +__¤c +, + +475 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +)) + +477 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +479 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +480  + `__mb¤towcs_chk + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +, + +481 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +483 ià( +__Ën + > + `__bos + ( +__d¡ +è/  ( +wch¬_t +)) + +484  + `__mb¤towcs_chk_w¬n + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +, + +485 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +487  + `__mb¤towcs_®Ÿs + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +); + +488 + } +} + +491 +size_t + + $__wc¤tombs_chk + (* +__»¡riù + +__d¡ +, + +492 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +493 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +494 +size_t + +__d¡Ën +è +__THROW +; + +495 +size_t + + `__REDIRECT_NTH + ( +__wc¤tombs_®Ÿs +, + +496 (* +__»¡riù + +__d¡ +, + +497 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +498 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +), + +499 +wc¤tombs +); + +500 +size_t + + `__REDIRECT_NTH + ( +__wc¤tombs_chk_w¬n +, + +501 (* +__»¡riù + +__d¡ +, + +502 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +503 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +504 +size_t + +__d¡Ën +), +__wc¤tombs_chk +) + +505 + `__w¬Ç‰r + ("wcsrtombs called with dst buffer smallerhan†en"); + +507 +__fÜtify_funùiÚ + +size_t + + +508 + `__NTH + ( + $wc¤tombs + (* +__»¡riù + +__d¡ +, cÚ¡ +wch¬_t + **__»¡riù +__¤c +, + +509 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +)) + +511 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +513 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +514  + `__wc¤tombs_chk + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +, + `__bos + (__dst)); + +516 ià( +__Ën + > + `__bos + ( +__d¡ +)) + +517  + `__wc¤tombs_chk_w¬n + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +, + `__bos + (__dst)); + +519  + `__wc¤tombs_®Ÿs + ( +__d¡ +, +__¤c +, +__Ën +, +__ps +); + +520 + } +} + +523 #ifdeà +__USE_GNU + + +524 +size_t + + $__mb¢¹owcs_chk + ( +wch¬_t + * +__»¡riù + +__d¡ +, + +525 cÚ¡ ** +__»¡riù + +__¤c +, +size_t + +__nmc +, + +526 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +527 +size_t + +__d¡Ën +è +__THROW +; + +528 +size_t + + `__REDIRECT_NTH + ( +__mb¢¹owcs_®Ÿs +, + +529 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +530 cÚ¡ ** +__»¡riù + +__¤c +, +size_t + +__nmc +, + +531 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +), + +532 +mb¢¹owcs +); + +533 +size_t + + `__REDIRECT_NTH + ( +__mb¢¹owcs_chk_w¬n +, + +534 ( +wch¬_t + * +__»¡riù + +__d¡ +, + +535 cÚ¡ ** +__»¡riù + +__¤c +, +size_t + +__nmc +, + +536 +size_t + +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +, + +537 +size_t + +__d¡Ën +), +__mb¢¹owcs_chk +) + +538 + `__w¬Ç‰r + ("mbsnrtowcs called with dst buffer smallerhan†en " + +541 +__fÜtify_funùiÚ + +size_t + + +542 + `__NTH + ( + $mb¢¹owcs + ( +wch¬_t + * +__»¡riù + +__d¡ +, cÚ¡ **__»¡riù +__¤c +, + +543 +size_t + +__nmc +, size_ˆ +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +)) + +545 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +547 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +548  + `__mb¢¹owcs_chk + ( +__d¡ +, +__¤c +, +__nmc +, +__Ën +, +__ps +, + +549 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +551 ià( +__Ën + > + `__bos + ( +__d¡ +è/  ( +wch¬_t +)) + +552  + `__mb¢¹owcs_chk_w¬n + ( +__d¡ +, +__¤c +, +__nmc +, +__Ën +, +__ps +, + +553 + `__bos + ( +__d¡ +è/  ( +wch¬_t +)); + +555  + `__mb¢¹owcs_®Ÿs + ( +__d¡ +, +__¤c +, +__nmc +, +__Ën +, +__ps +); + +556 + } +} + +559 +size_t + + $__wc¢¹ombs_chk + (* +__»¡riù + +__d¡ +, + +560 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +561 +size_t + +__nwc +, size_ˆ +__Ën +, + +562 +mb¡©e_t + * +__»¡riù + +__ps +, +size_t + +__d¡Ën +) + +563 +__THROW +; + +564 +size_t + + `__REDIRECT_NTH + ( +__wc¢¹ombs_®Ÿs +, + +565 (* +__»¡riù + +__d¡ +, + +566 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +567 +size_t + +__nwc +, size_ˆ +__Ën +, + +568 +mb¡©e_t + * +__»¡riù + +__ps +), +wc¢¹ombs +); + +569 +size_t + + `__REDIRECT_NTH + ( +__wc¢¹ombs_chk_w¬n +, + +570 (* +__»¡riù + +__d¡ +, + +571 cÚ¡ +wch¬_t + ** +__»¡riù + +__¤c +, + +572 +size_t + +__nwc +, size_ˆ +__Ën +, + +573 +mb¡©e_t + * +__»¡riù + +__ps +, + +574 +size_t + +__d¡Ën +), +__wc¢¹ombs_chk +) + +575 + `__w¬Ç‰r + ("wcsnrtombs called with dst buffer smallerhan†en"); + +577 +__fÜtify_funùiÚ + +size_t + + +578 + `__NTH + ( + $wc¢¹ombs + (* +__»¡riù + +__d¡ +, cÚ¡ +wch¬_t + **__»¡riù +__¤c +, + +579 +size_t + +__nwc +, size_ˆ +__Ën +, +mb¡©e_t + * +__»¡riù + +__ps +)) + +581 ià( + `__bos + ( +__d¡ +è!ð( +size_t +) -1) + +583 ià(! + `__bužtš_cÚ¡ªt_p + ( +__Ën +)) + +584  + `__wc¢¹ombs_chk + ( +__d¡ +, +__¤c +, +__nwc +, +__Ën +, +__ps +, + +585 + `__bos + ( +__d¡ +)); + +587 ià( +__Ën + > + `__bos + ( +__d¡ +)) + +588  + `__wc¢¹ombs_chk_w¬n + ( +__d¡ +, +__¤c +, +__nwc +, +__Ën +, +__ps +, + +589 + `__bos + ( +__d¡ +)); + +591  + `__wc¢¹ombs_®Ÿs + ( +__d¡ +, +__¤c +, +__nwc +, +__Ën +, +__ps +); + +592 + } +} + + @/usr/include/wctype.h + +23 #iâdeà +_WCTYPE_H + + +25  + ~<ã©u»s.h +> + +26  + ~ + +28 #iâdeà +__Ãed_iswxxx + + +29  + #_WCTYPE_H + 1 + + ) + +32  + #__Ãed_wšt_t + + + ) + +33  + ~ + +37 #iâdeà +WEOF + + +38  + #WEOF + (0xffffffffu) + + ) + +41 #undeà +__Ãed_iswxxx + + +46 #iâdeà +__iswxxx_defšed + + +47  + #__iswxxx_defšed + 1 + + ) + +49 +__BEGIN_NAMESPACE_C99 + + +52  + twùy³_t +; + +53 + g__END_NAMESPACE_C99 + + +55 #iâdeà +_ISwb™ + + +60  + ~<’dŸn.h +> + +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__ISw®pha + = 2, + +76 + m__ISwdig™ + = 3, + +77 + m__ISwxdig™ + = 4, + +78 + m__ISw¥aû + = 5, + +79 + m__ISw´št + = 6, + +80 + m__ISwg¿ph + = 7, + +81 + m__ISwbÏnk + = 8, + +82 + m__ISwúŒl + = 9, + +83 + m__ISwpunù + = 10, + +84 + m__ISw®num + = 11, + +86 + m_ISwuµ” + = +_ISwb™ + ( +__ISwuµ” +), + +87 + m_ISwlow” + = +_ISwb™ + ( +__ISwlow” +), + +88 + m_ISw®pha + = +_ISwb™ + ( +__ISw®pha +), + +89 + m_ISwdig™ + = +_ISwb™ + ( +__ISwdig™ +), + +90 + m_ISwxdig™ + = +_ISwb™ + ( +__ISwxdig™ +), + +91 + m_ISw¥aû + = +_ISwb™ + ( +__ISw¥aû +), + +92 + m_ISw´št + = +_ISwb™ + ( +__ISw´št +), + +93 + m_ISwg¿ph + = +_ISwb™ + ( +__ISwg¿ph +), + +94 + m_ISwbÏnk + = +_ISwb™ + ( +__ISwbÏnk +), + +95 + m_ISwúŒl + = +_ISwb™ + ( +__ISwúŒl +), + +96 + m_ISwpunù + = +_ISwb™ + ( +__ISwpunù +), + +97 + m_ISw®num + = +_ISwb™ + ( +__ISw®num +) + +102 +__BEGIN_DECLS + + +104 +__BEGIN_NAMESPACE_C99 + + +111  + $isw®num + ( +wšt_t + +__wc +è +__THROW +; + +117  + $isw®pha + ( +wšt_t + +__wc +è +__THROW +; + +120  + $iswúŒl + ( +wšt_t + +__wc +è +__THROW +; + +124  + $iswdig™ + ( +wšt_t + +__wc +è +__THROW +; + +128  + $iswg¿ph + ( +wšt_t + +__wc +è +__THROW +; + +133  + $iswlow” + ( +wšt_t + +__wc +è +__THROW +; + +136  + $isw´št + ( +wšt_t + +__wc +è +__THROW +; + +141  + $iswpunù + ( +wšt_t + +__wc +è +__THROW +; + +146  + $isw¥aû + ( +wšt_t + +__wc +è +__THROW +; + +151  + $iswuµ” + ( +wšt_t + +__wc +è +__THROW +; + +156  + $iswxdig™ + ( +wšt_t + +__wc +è +__THROW +; + +161 #ifdeà +__USE_ISOC99 + + +162  + $iswbÏnk + ( +wšt_t + +__wc +è +__THROW +; + +171 +wùy³_t + + $wùy³ + (cÚ¡ * +__´Ý”ty +è +__THROW +; + +175  + $iswùy³ + ( +wšt_t + +__wc +, +wùy³_t + +__desc +è +__THROW +; + +176 +__END_NAMESPACE_C99 + + +183 +__BEGIN_NAMESPACE_C99 + + +186 cÚ¡ + t__št32_t + * + twù¿ns_t +; + +187 +__END_NAMESPACE_C99 + + +188 #ifdeà +__USE_GNU + + +189 + $__USING_NAMESPACE_C99 +( +wù¿ns_t +) + +192 +__BEGIN_NAMESPACE_C99 + + +194 +wšt_t + + $towlow” + ( +wšt_t + +__wc +è +__THROW +; + +197 +wšt_t + + $towuµ” + ( +wšt_t + +__wc +è +__THROW +; + +198 +__END_NAMESPACE_C99 + + +200 +__END_DECLS + + +207 #ifdeà +_WCTYPE_H + + +213 +__BEGIN_DECLS + + +215 +__BEGIN_NAMESPACE_C99 + + +218 +wù¿ns_t + + $wù¿ns + (cÚ¡ * +__´Ý”ty +è +__THROW +; + +221 +wšt_t + + $towù¿ns + ( +wšt_t + +__wc +, +wù¿ns_t + +__desc +è +__THROW +; + +222 +__END_NAMESPACE_C99 + + +224 #ifdeà +__USE_XOPEN2K8 + + +226  + ~ + +230  + $isw®num_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +236  + $isw®pha_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +239  + $iswúŒl_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +243  + $iswdig™_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +247  + $iswg¿ph_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +252  + $iswlow”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +255  + $isw´št_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +260  + $iswpunù_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +265  + $isw¥aû_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +270  + $iswuµ”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +275  + $iswxdig™_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +280  + $iswbÏnk_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +284 +wùy³_t + + $wùy³_l + (cÚ¡ * +__´Ý”ty +, +__loÿË_t + +__loÿË +) + +285 +__THROW +; + +289  + $iswùy³_l + ( +wšt_t + +__wc +, +wùy³_t + +__desc +, +__loÿË_t + +__loÿË +) + +290 +__THROW +; + +298 +wšt_t + + $towlow”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +301 +wšt_t + + $towuµ”_l + ( +wšt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +305 +wù¿ns_t + + $wù¿ns_l + (cÚ¡ * +__´Ý”ty +, +__loÿË_t + +__loÿË +) + +306 +__THROW +; + +309 +wšt_t + + $towù¿ns_l + ( +wšt_t + +__wc +, +wù¿ns_t + +__desc +, + +310 +__loÿË_t + +__loÿË +è +__THROW +; + +314 +__END_DECLS + + + @/usr/include/asm-generic/errno-base.h + +1 #iâdeà +_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 #iâdeà +__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 {