From: Deepak S <deepak.s@linux.intel.com> 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=10745be7adb099f559ba1b00b8d97fda59f75d62;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 <deepak.s@linux.intel.com> --- 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þ_fld_def + + gfld_fÜm©_v4 +[] = { + +23 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +24 . + gsize + = ( +ut8_t +), + +25 . + gfld_dex + = 0, + +26 . + gput_dex + = 0, + +27 . + goff£t + = ( +h_hdr +) + + +28 +off£tof +( +v4_hdr +, +Ãxt_´Ùo_id +), + +33 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +34 . + gsize + = ( +ut32_t +), + +35 . + gfld_dex + = 1, + +36 . + gput_dex + = 1, + +37 . + goff£t + = ( +h_hdr +) + + +38 +off£tof +( +v4_hdr +, +¤c_addr +), + +43 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +44 . + gsize + = ( +ut32_t +), + +45 . + gfld_dex + = 2, + +46 . + gput_dex + = 2, + +47 . + goff£t + = ( +h_hdr +) + + +48 +off£tof +( +v4_hdr +, +d¡_addr +), + +53 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +54 . + gsize + = ( +ut16_t +), + +55 . + gfld_dex + = 3, + +56 . + gput_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 + = ( +ut16_t +), + +65 . + gfld_dex + = 4, + +66 . + gput_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þ_fld_def + + gfld_fÜm©_vÏn_v4 +[] = { + +77 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +78 . + gsize + = ( +ut8_t +), + +79 . + gfld_dex + = 0, + +80 . + gput_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 + = ( +ut32_t +), + +89 . + gfld_dex + = 1, + +90 . + gput_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 + = ( +ut32_t +), + +99 . + gfld_dex + = 2, + +100 . + gput_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 + = ( +ut16_t +), + +109 . + gfld_dex + = 3, + +110 . + gput_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 + = ( +ut16_t +), + +120 . + gfld_dex + = 4, + +121 . + gput_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þ_fld_def + + gfld_fÜm©_qq_v4 +[] = { + +133 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +134 . + gsize + = ( +ut8_t +), + +135 . + gfld_dex + = 0, + +136 . + gput_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 + = ( +ut32_t +), + +145 . + gfld_dex + = 1, + +146 . + gput_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 + = ( +ut32_t +), + +155 . + gfld_dex + = 2, + +156 . + gput_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 + = ( +ut16_t +), + +165 . + gfld_dex + = 3, + +166 . + gput_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 + = ( +ut16_t +), + +176 . + gfld_dex + = 4, + +177 . + gput_dex + = 4, + +178 . + goff£t + = ( +h_hdr +) + + +179 +SIZEOF_QINQ_HEADER + + + +180 ( +v4_hdr +è+ +off£tof +( +tý_hdr +, +d¡_pÜt +), + +184 +¹e_aþ_fld_def + + gfld_fÜm©_v6 +[] = { + +187 . +ty³ + = +RTE_ACL_FIELD_TYPE_BITMASK +, + +188 . + gsize + = ( +ut8_t +), + +189 . + gfld_dex + = 0, + +190 . + gput_dex + = 0, + +191 . + goff£t + = ( +h_hdr +) + + +192 +off£tof +( +v6_hdr +, +´Ùo +), + +197 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +198 . + gsize + = ( +ut32_t +), + +199 . + gfld_dex + = 1, + +200 . + gput_dex + = 1, + +201 . + goff£t + = ( +h_hdr +) + + +202 +off£tof +( +v6_hdr +, +¤c_addr +), + +206 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +207 . + gsize + = ( +ut32_t +), + +208 . + gfld_dex + = 2, + +209 . + gput_dex + = 2, + +210 . + goff£t + = ( +h_hdr +) + + +211 +off£tof +( +v6_hdr +, +¤c_addr +è+ ( + gut32_t +), + +215 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +216 . + gsize + = ( +ut32_t +), + +217 . + gfld_dex + = 3, + +218 . + gput_dex + = 3, + +219 . + goff£t + = ( +h_hdr +) + + +220 +off£tof +( +v6_hdr +, +¤c_addr +è+ 2 * ( + gut32_t +), + +224 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +225 . + gsize + = ( +ut32_t +), + +226 . + gfld_dex + = 4, + +227 . + gput_dex + = 4, + +228 . + goff£t + = ( +h_hdr +) + + +229 +off£tof +( +v6_hdr +, +¤c_addr +è+ 3 * ( + gut32_t +), + +234 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +235 . + gsize + = ( +ut32_t +), + +236 . + gfld_dex + = 5, + +237 . + gput_dex + = 5, + +238 . + goff£t + = ( +h_hdr +) + + +239 +off£tof +( +v6_hdr +, +d¡_addr +), + +243 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +244 . + gsize + = ( +ut32_t +), + +245 . + gfld_dex + = 6, + +246 . + gput_dex + = 6, + +247 . + goff£t + = ( +h_hdr +) + + +248 +off£tof +( +v6_hdr +, +d¡_addr +è+ ( + gut32_t +), + +252 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +253 . + gsize + = ( +ut32_t +), + +254 . + gfld_dex + = 7, + +255 . + gput_dex + = 7, + +256 . + goff£t + = ( +h_hdr +) + + +257 +off£tof +( +v6_hdr +, +d¡_addr +è+ 2 * ( + gut32_t +), + +261 . +ty³ + = +RTE_ACL_FIELD_TYPE_MASK +, + +262 . + gsize + = ( +ut32_t +), + +263 . + gfld_dex + = 8, + +264 . + gput_dex + = 8, + +265 . + goff£t + = ( +h_hdr +) + + +266 +off£tof +( +v6_hdr +, +d¡_addr +è+ 3 * ( + gut32_t +), + +271 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +272 . + gsize + = ( +ut16_t +), + +273 . + gfld_dex + = 9, + +274 . + gput_dex + = 9, + +275 . + goff£t + = ( +h_hdr +) + + +276 ( +v6_hdr +è+ +off£tof +( +tý_hdr +, +¤c_pÜt +), + +281 . +ty³ + = +RTE_ACL_FIELD_TYPE_RANGE +, + +282 . + gsize + = ( +ut16_t +), + +283 . + gfld_dex + = 10, + +284 . + gput_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 +( +ut8_t + +bË_num +, + +291 +ut32_t + * +libaþ_n_ruËs +) + +293 + `´tf +("Create LIBACLctive IPV4 Tableste_socket_id(): %i\n", + +294 + `¹e_sock_id +()); + +297 +¹e_bË_aþ_·¿ms + +commÚ_v4_bË_libaþ_·¿ms + = { + +298 . +Çme + = "LIBACLIPV4A", + +299 . +n_ruËs + = * +libaþ_n_ruËs +, + +300 . +n_ruË_flds + = + `RTE_DIM +( +fld_fÜm©_v4 +), + +303 + `memýy +( +commÚ_v4_bË_libaþ_·¿ms +. +fld_fÜm© +, + +304 +fld_fÜm©_v4 +, (field_format_ipv4)); + +306 +ut32_t + +v4_y_size + = ( +lib_aþ_bË_y +); + +308 ià( +bË_num + == 2) + +309 +commÚ_v4_bË_libaþ_·¿ms +. +Çme + = "LIBACLIPV4B"; + +310 +¹e_bË_aþ_Ýs +. + `f_ü +(& +commÚ_v4_bË_libaþ_·¿ms +, + +311 + `¹e_sock_id +(), + +312 +v4_y_size +); + +315 + } +} + +317 * + $lib_aþ_ü_aùive_¡ªdby_bË_v6 +( +ut8_t + +bË_num +, + +318 +ut32_t + * +libaþ_n_ruËs +) + +320 + `´tf +("Create LIBACLctive IPV6 Tableste_socket_id(): %i\n", + +321 + `¹e_sock_id +()); + +323 +¹e_bË_aþ_·¿ms + +commÚ_v6_bË_libaþ_·¿ms + = { + +324 . +Çme + = "LIBACLIPV6A", + +325 . +n_ruËs + = * +libaþ_n_ruËs +, + +326 . +n_ruË_flds + = + `RTE_DIM +( +fld_fÜm©_v6 +), + +329 + `memýy +( +commÚ_v6_bË_libaþ_·¿ms +. +fld_fÜm© +, + +330 +fld_fÜm©_v6 +, (field_format_ipv6)); + +332 +ut32_t + +v6_y_size + = ( +lib_aþ_bË_y +); + +334 ià( +bË_num + == 2) + +335 +commÚ_v6_bË_libaþ_·¿ms +. +Çme + = "LIBACLIPV6B"; + +336 +¹e_bË_aþ_Ýs +. + `f_ü +(& +commÚ_v6_bË_libaþ_·¿ms +, + +337 + `¹e_sock_id +(), + +338 +v6_y_size +); + +341 + } +} + +342 + $lib_aþ_·r£_cÚfig +( +lib_aþ + * +¶ib_aþ +, + +343 * +¬g_Çme +, * +¬g_v®ue +, + +344 +ut32_t + * +libaþ_n_ruËs +) + +346 +ut32_t + +n_ruËs_´e£Á + = 0; + +347 +ut32_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Ë_flds + = + `RTE_DIM +( +fld_fÜm©_v4 +); + +352 +¶ib_aþ +-> +fld_fÜm© + = +fld_fÜm©_v4 +; + +353 +¶ib_aþ +-> +fld_fÜm©_size + = ( +fld_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Ë_flds + = + +375 + `RTE_DIM +( +fld_fÜm©_v4 +); + +376 +¶ib_aþ +-> +fld_fÜm© + = +fld_fÜm©_v4 +; + +377 +¶ib_aþ +-> +fld_fÜm©_size + = + +378 ( +fld_fÜm©_v4 +); + +383 ià( + `¡rcmp +( +¬g_v®ue +, "vlan_ipv4") == 0) { + +384 +¶ib_aþ +-> +n_ruË_flds + = + +385 + `RTE_DIM +( +fld_fÜm©_vÏn_v4 +); + +386 +¶ib_aþ +-> +fld_fÜm© + = + +387 +fld_fÜm©_vÏn_v4 +; + +388 +¶ib_aþ +-> +fld_fÜm©_size + = + +389 ( +fld_fÜm©_vÏn_v4 +); + +394 ià( + `¡rcmp +( +¬g_v®ue +, "qinq_ipv4") == 0) { + +395 +¶ib_aþ +-> +n_ruË_flds + = + +396 + `RTE_DIM +( +fld_fÜm©_qq_v4 +); + +397 +¶ib_aþ +-> +fld_fÜm© + = + +398 +fld_fÜm©_qq_v4 +; + +399 +¶ib_aþ +-> +fld_fÜm©_size + = + +400 ( +fld_fÜm©_qq_v4 +); + +405 ià( + `¡rcmp +( +¬g_v®ue +, "ipv6") == 0) { + +406 +¶ib_aþ +-> +n_ruË_flds + = + +407 + `RTE_DIM +( +fld_fÜm©_v6 +); + +408 +¶ib_aþ +-> +fld_fÜm© + = +fld_fÜm©_v6 +; + +409 +¶ib_aþ +-> +fld_fÜm©_size + = + +410 ( +fld_fÜm©_v6 +); + +414 + `´tf +("other"); + +419 + } +} + +444 +ut64_t + + +445 +lib_aþ_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +446 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +447 +ut64_t + * +pkts_drÝ_whout_ruË +, + +448 * +¶ib_aþ_ruË_bË_v4_aùive +, + +449 * +¶ib_aþ_ruË_bË_v6_aùive +, + +450 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +451 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +452 +ut64_t + * +cÚÁ¿ck_mask +, + +453 +ut64_t + * +cÚÃxi¡_mask +, + +454 +lib_aþ_v4_abËd +, +lib_aþ_v6_abËd +) + +457 +ut64_t + + glookup_h_mask + = 0; + +458 +ut64_t + + glookup_h_mask_v4 + = 0; + +459 +ut64_t + + glookup_h_mask_v6 + = 0; + +460 +ut64_t + + glookup_miss_mask + = 0; + +461 + 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Ý_whout_ruË + +ð +__but_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Ý_whout_ruË +, + +506 +__but_pÝcouÁÎ +( +lookup_miss_mask +)); + +508 +ut64_t + + gpkts_to_´oûss + = +lookup_h_mask +; + +510 ; + gpkts_to_´oûss +;) { + +511 +ut8_t + + gpos + = (ut8_t) +__but_ùzÎ +( +pkts_to_´oûss +); + +513 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +515 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +516 +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +518 +ut8_t + + ghdr_chk + = +RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +520 + ghdr_chk + = +hdr_chk + >> +IP_VERSION_CHECK +; + +522 ià( + ghdr_chk + =ð +IPv4_HDR_VERSION +) { + +524 +lib_aþ_bË_y + * +y + = + +525 ( +lib_aþ_bË_y + *) + +526 +¶ib_aþ +-> +¶ib_aþ_s_v4 +[ +pos +]; + +527 +ut16_t + + gphy_pÜt + = +y +-> +hd +. +pÜt_id +; + +528 +ut32_t + + gaùiÚ_id + = +y +-> +aùiÚ_id +; + +530 ià( + gACL_LIB_DEBUG +) + +531 +´tf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +533 +ut32_t + + gdsý_off£t + = +IP_START + + +IP_HDR_DSCP_OFST +; + +535 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +536 + glib_aþ_aùiÚ_couÁ +) { + +537 + gp_aùiÚ_couÁ_bË + + +538 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +539 [ +aùiÚ_id +]. + g·ckCouÁ +++; + +540 + gp_aùiÚ_couÁ_bË + + +541 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +542 [ +aùiÚ_id +]. + gbyCouÁ + += + +543 +¹e_pktmbuf_pkt_Ën +( +pkt +); + +544 ià( + gACL_LIB_DEBUG +) + +545 +´tf +("Action Count Packet Count: %" + +546 +PRIu64 + " Byte Count: %" + +547 +PRIu64 + "\n" + +548 , +p_aùiÚ_couÁ_bË + + +549 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +550 [ +aùiÚ_id +]. +·ckCouÁ +, + +551 +p_aùiÚ_couÁ_bË + + +552 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +553 [ +aùiÚ_id +]. +byCouÁ +); + +556 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +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Ý_whout_ruË +)++; + +566 ià( + gACL_LIB_DEBUG +) + +567 +´tf +("ACLá drÝ kt_mask %" +PRIx64 + + +569 +PRIu64 +"\n", +pkts_mask +, +pos +, + +570 * +pkts_drÝ_whout_ruË +); + +573 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +574 + glib_aþ_aùiÚ_fwd +) { + +575 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +576 +fwd_pÜt +; + +577 + gy +-> + ghd +. + 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Ú_bm + & + +584 + glib_aþ_aùiÚ_Çt +) { + +585 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +586 +Çt_pÜt +; + +587 + gy +-> + ghd +. + 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Ú_bm + & + +594 + glib_aþ_aùiÚ_dsý +) { + +597 +ut8_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Ú_bm + & + +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Ú_bm + + +612 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +615 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +616 ià( + gACL_LIB_DEBUG +) + +617 +´tf +("ACL CTnabled: 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Ú_bm + + +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 +ut16_t + + gphy_pÜt + = +y +-> +hd +. +pÜt_id +; + +657 +ut32_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Ú_bm + & + +663 + glib_aþ_aùiÚ_couÁ +) { + +664 + gp_aùiÚ_couÁ_bË + + +665 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +666 [ +aùiÚ_id +]. + g·ckCouÁ +++; + +667 + gp_aùiÚ_couÁ_bË + + +668 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +669 [ +aùiÚ_id +]. + gbyCouÁ + += + +670 +¹e_pktmbuf_pkt_Ën +( +pkt +); + +671 ià( + gACL_LIB_DEBUG +) + +672 +´tf +("Action Count Packet Count: %" + +673 +PRIu64 + " Byte Count: %" + +674 +PRIu64 + "\n", + +675 +p_aùiÚ_couÁ_bË + + +676 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +677 [ +aùiÚ_id +]. +·ckCouÁ +, + +678 +p_aùiÚ_couÁ_bË + + +679 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +680 [ +aùiÚ_id +]. +byCouÁ +); + +683 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +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Ý_whout_ruË +)++; + +692 ià( + gACL_LIB_DEBUG +) + +693 +´tf +("ACLá drÝ kt_mask %" +PRIx64 + + +695 +PRIu64 + "\n", +pkts_mask +, +pos +, + +696 * +pkts_drÝ_whout_ruË +); + +700 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +701 + glib_aþ_aùiÚ_fwd +) { + +702 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +703 +fwd_pÜt +; + +704 + gy +-> + ghd +. + 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Ú_bm + & + +711 + glib_aþ_aùiÚ_Çt +) { + +712 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +713 +Çt_pÜt +; + +714 + gy +-> + ghd +. + 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Ú_bm + & + +721 + glib_aþ_aùiÚ_dsý +) { + +724 +ut32_t + + gdsý_off£t + = +IP_START + + + +725 +IP_HDR_DSCP_OFST_IPV6 +; + +726 +ut16_t + * + gdsý + = +RTE_MBUF_METADATA_UINT16_PTR +( + +727 +pkt +, +dsý_off£t +); + +728 +ut16_t + + gmp + = * +dsý +; + +729 +ut16_t + + gdsý_v®ue + = ( +¹e_bsw16 +( +mp +) & + +731 +ut8_t + + gdsý_¡Üe + = + +732 +aùiÚ_¬¿y_aùive + + +733 [ +aùiÚ_id +]. +dsý_´iÜy + << 2; + +734 +ut16_t + + gdsý_mp + = +dsý_¡Üe +; + +736 + gdsý_mp + = +dsý_mp + << 4; + +737 * + gdsý + = +¹e_bsw16 +( +dsý_mp + | +dsý_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Ú_bm + + +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Ú_bm + + +749 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +752 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +753 ià( + gACL_LIB_DEBUG +) + +754 +´tf +("ACL CTnabled: 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Ú_bm + + +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 +ut64_t + + +814 +lib_aþ_v4_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +815 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +816 +ut64_t + * +pkts_drÝ_whout_ruË +, + +817 * +¶ib_aþ_ruË_bË_v4_aùive +, + +818 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +819 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +820 +ut64_t + * +cÚÁ¿ck_mask +, + +821 +ut64_t + * +cÚÃxi¡_mask +) + +824 +ut64_t + + glookup_h_mask_v4 + = 0; + +825 +ut64_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Ý_whout_ruË + +ð +__but_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Ý_whout_ruË +, + +850 +__but_pÝcouÁÎ +( +lookup_miss_mask_v4 +)); + +852 +ut64_t + + gpkts_to_´oûss + = +lookup_h_mask_v4 +; + +854 ; + gpkts_to_´oûss +;) { + +855 +ut8_t + + gpos + = (ut8_t) +__but_ùzÎ +( +pkts_to_´oûss +); + +857 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +859 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +860 +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +864 +lib_aþ_bË_y + * + gy + = + +865 ( +lib_aþ_bË_y + *) + +866 +¶ib_aþ +-> +¶ib_aþ_s_v4 +[ +pos +]; + +867 +ut16_t + + gphy_pÜt + = +y +-> +hd +. +pÜt_id +; + +868 +ut32_t + + gaùiÚ_id + = +y +-> +aùiÚ_id +; + +870 ià( + gACL_LIB_DEBUG +) + +871 +´tf +("aùiÚ_id = %u\n", +aùiÚ_id +); + +873 +ut32_t + + gdsý_off£t + = +IP_START + + +IP_HDR_DSCP_OFST +; + +875 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +876 + glib_aþ_aùiÚ_couÁ +) { + +877 + gp_aùiÚ_couÁ_bË + + +878 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +879 [ +aùiÚ_id +]. + g·ckCouÁ +++; + +880 + gp_aùiÚ_couÁ_bË + + +881 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +882 [ +aùiÚ_id +]. + gbyCouÁ + += + +883 +¹e_pktmbuf_pkt_Ën +( +pkt +); + +884 ià( + gACL_LIB_DEBUG +) + +885 +´tf +("Action Count Packet Count: %" + +886 +PRIu64 + " Byte Count: %" + +887 +PRIu64 + "\n" + +888 , +p_aùiÚ_couÁ_bË + + +889 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +890 [ +aùiÚ_id +]. +·ckCouÁ +, + +891 +p_aùiÚ_couÁ_bË + + +892 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +893 [ +aùiÚ_id +]. +byCouÁ +); + +896 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +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Ý_whout_ruË +)++; + +906 ià( + gACL_LIB_DEBUG +) + +907 +´tf +("ACLá drÝ kt_mask %" +PRIx64 + + +909 +PRIu64 + "\n", +pkts_mask +, +pos +, + +910 * +pkts_drÝ_whout_ruË +); + +913 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +914 + glib_aþ_aùiÚ_fwd +) { + +915 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +916 +fwd_pÜt +; + +917 + gy +-> + ghd +. + 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Ú_bm + & + +924 + glib_aþ_aùiÚ_Çt +) { + +925 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +926 +Çt_pÜt +; + +927 + gy +-> + ghd +. + 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Ú_bm + & + +934 + glib_aþ_aùiÚ_dsý +) { + +937 +ut8_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Ú_bm + & + +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Ú_bm + + +952 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +955 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +956 ià( + gACL_LIB_DEBUG +) + +957 +´tf +("ACL CTnabled: 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Ú_bm + + +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 +ut64_t + + +1017 +lib_aþ_v6_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +1018 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +1019 +ut64_t + * +pkts_drÝ_whout_ruË +, + +1020 * +¶ib_aþ_ruË_bË_v6_aùive +, + +1021 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +1022 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +1023 +ut64_t + * +cÚÁ¿ck_mask +, + +1024 +ut64_t + * +cÚÃxi¡_mask +) + +1027 +ut64_t + + glookup_h_mask_v6 + = 0; + +1028 +ut64_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Ý_whout_ruË + +ð +__but_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Ý_whout_ruË +, + +1055 +__but_pÝcouÁÎ +( +lookup_miss_mask_v6 +)); + +1057 +ut64_t + + gpkts_to_´oûss + = +lookup_h_mask_v6 +; + +1059 ; + gpkts_to_´oûss +;) { + +1060 +ut8_t + + gpos + = (ut8_t) +__but_ùzÎ +( +pkts_to_´oûss +); + +1062 +ut64_t + + gpkt_mask + = 1LLU << +pos +; + +1064 + gpkts_to_´oûss + &ð~ +pkt_mask +; + +1065 +¹e_mbuf + * + gpkt + = +pkts +[ +pos +]; + +1068 +lib_aþ_bË_y + * + gy + = + +1069 ( +lib_aþ_bË_y + *) + +1070 +¶ib_aþ +-> +¶ib_aþ_s_v6 +[ +pos +]; + +1071 +ut16_t + + gphy_pÜt + = +y +-> +hd +. +pÜt_id +; + +1072 +ut32_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Ú_bm + & + +1078 + glib_aþ_aùiÚ_couÁ +) { + +1079 + gp_aùiÚ_couÁ_bË + + +1080 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +1081 [ +aùiÚ_id +]. + g·ckCouÁ +++; + +1082 + gp_aùiÚ_couÁ_bË + + +1083 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +1084 [ +aùiÚ_id +]. + gbyCouÁ + += + +1085 +¹e_pktmbuf_pkt_Ën +( +pkt +); + +1086 ià( + gACL_LIB_DEBUG +) + +1087 +´tf +("Action Count Packet Count: %" + +1088 +PRIu64 + " Byte Count: %" + +1089 +PRIu64 + "\n", + +1090 +p_aùiÚ_couÁ_bË + + +1091 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +1092 [ +aùiÚ_id +]. +·ckCouÁ +, + +1093 +p_aùiÚ_couÁ_bË + + +1094 [ +¶ib_aþ +-> +aùiÚ_couÁ_dex +] + +1095 [ +aùiÚ_id +]. +byCouÁ +); + +1098 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +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Ý_whout_ruË +)++; + +1107 ià( + gACL_LIB_DEBUG +) + +1108 +´tf +("ACLá drÝ kt_mask %" +PRIx64 + + +1110 +PRIu64 + "\n", +pkts_mask +, +pos +, + +1111 * +pkts_drÝ_whout_ruË +); + +1115 ià( + gaùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + gaùiÚ_bm + & + +1116 + glib_aþ_aùiÚ_fwd +) { + +1117 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +1118 +fwd_pÜt +; + +1119 + gy +-> + ghd +. + 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Ú_bm + & + +1126 + glib_aþ_aùiÚ_Çt +) { + +1127 + gphy_pÜt + = +aùiÚ_¬¿y_aùive +[ +aùiÚ_id +]. + +1128 +Çt_pÜt +; + +1129 + gy +-> + ghd +. + 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Ú_bm + & + +1136 + glib_aþ_aùiÚ_dsý +) { + +1139 +ut32_t + + gdsý_off£t + = +IP_START + + + +1140 +IP_HDR_DSCP_OFST_IPV6 +; + +1141 +ut16_t + * + gdsý + = +RTE_MBUF_METADATA_UINT16_PTR +( + +1142 +pkt +, +dsý_off£t +); + +1143 +ut16_t + + gmp + = * +dsý +; + +1144 +ut16_t + + gdsý_v®ue + = ( +¹e_bsw16 +( +mp +) & + +1146 +ut8_t + + gdsý_¡Üe + = + +1147 +aùiÚ_¬¿y_aùive + + +1148 [ +aùiÚ_id +]. +dsý_´iÜy + << 2; + +1149 +ut16_t + + gdsý_mp + = +dsý_¡Üe +; + +1151 + gdsý_mp + = +dsý_mp + << 4; + +1152 * + gdsý + = +¹e_bsw16 +( +dsý_mp + | +dsý_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Ú_bm + + +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Ú_bm + + +1164 & + glib_aþ_aùiÚ_cÚÁ¿ck +) { + +1167 * + gcÚÁ¿ck_mask + |ð +pkt_mask +; + +1168 ià( + gACL_LIB_DEBUG +) + +1169 +´tf +("ACL CTnabled: 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Ú_bm + + +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 + ~<¡rg.h +> + +22 + ~<y³s.h +> + +23 + ~<¹e_pe.h +> + +24 + ~<¹e_bË_aþ.h +> + +25 + ~"¹e_úxn_ackg.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 + spe_aùiÚ_key + { + +50 +ut32_t + + maùiÚ_id +; + +51 +ut32_t + + maùiÚ_bm +; + +52 +ut32_t + + mÇt_pÜt +; + +53 +ut32_t + + mfwd_pÜt +; + +54 +ut8_t + + mdsý_´iÜy +; + +55 +ut8_t + + m´iv©e_public +; + +56 } + g__¹e_ÿche_®igÃd +; + +62 + saùiÚ_couÁ_block + { + +63 +ut64_t + + mbyCouÁ +; + +64 +ut64_t + + m·ckCouÁ +; + +65 } + g__¹e_ÿche_®igÃd +; + +70 + slib_aþ_bË_y + { + +71 +¹e_pe_bË_y + + mhd +; + +72 +ut32_t + + maùiÚ_id +; + +76 + slib_aþ + { + +77 +ut32_t + + mn_ruËs +; + +78 +ut32_t + + mn_ruË_flds +; + +79 +¹e_aþ_fld_def + * + mfld_fÜm© +; + +80 +ut32_t + + mfld_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 +( +ut8_t + +bË_num +, + +89 +ut32_t + * +libaþ_n_ruËs +); + +91 * +lib_aþ_ü_aùive_¡ªdby_bË_v6 +( +ut8_t + +bË_num +, + +92 +ut32_t + * +libaþ_n_ruËs +); + +93 +lib_aþ_·r£_cÚfig +( +lib_aþ + * +¶ib_aþ +, + +94 * +¬g_Çme +, * +¬g_v®ue +, + +95 +ut32_t + * +libaþ_n_ruËs +); + +96 +ut64_t + + +97 +lib_aþ_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +98 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +99 +ut64_t + * +pkts_drÝ_whout_ruË +, + +100 * +¶ib_aþ_ruË_bË_v4_aùive +, + +101 * +¶ib_aþ_ruË_bË_v6_aùive +, + +102 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +103 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +104 +ut64_t + * +cÚÁ¿ck_mask +, + +105 +ut64_t + * +cÚÃxi¡_mask +, + +106 +lib_aþ_v4_abËd +, +lib_aþ_v6_abËd +); + +107 +ut64_t + + +108 +lib_aþ_v4_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +109 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +110 +ut64_t + * +pkts_drÝ_whout_ruË +, + +111 * +¶ib_aþ_ruË_bË_v4_aùive +, + +112 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +113 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +114 +ut64_t + * +cÚÁ¿ck_mask +, + +115 +ut64_t + * +cÚÃxi¡_mask +); + +116 +ut64_t + + +117 +lib_aþ_v6_pkt_wÜk_key +( +lib_aþ + * +¶ib_aþ +, + +118 +¹e_mbuf + ** +pkts +, +ut64_t + +pkts_mask +, + +119 +ut64_t + * +pkts_drÝ_whout_ruË +, + +120 * +¶ib_aþ_ruË_bË_v6_aùive +, + +121 +pe_aùiÚ_key + * +aùiÚ_¬¿y_aùive +, + +122 +aùiÚ_couÁ_block + (* +p_aùiÚ_couÁ_bË +)[ +aùiÚ_¬¿y_max +], + +123 +ut64_t + * +cÚÁ¿ck_mask +, + +124 +ut64_t + * +cÚÃxi¡_mask +); + + @VIL/alg/lib_ftp_alg.c + +16 + ~<¡dio.h +> + +17 + ~<¡dlib.h +> + +18 + ~<¡dt.h +> + +19 + ~<¡rg.h +> + +20 + ~<uni¡d.h +> + +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_pe.h +> + +31 + ~<¹e_¬p.h +> + +32 + ~<¹e_icmp.h +> + +33 + ~<¹e_hash.h +> + +34 + ~<¹e_jhash.h +> + +35 + ~<¹e_cyþes.h +> + +36 + ~"pe_cgDZ_commÚ.h +" + +37 + ~"pe_aùiÚs_commÚ.h +" + +38 + ~"pe_cgDZ_be.h +" + +39 + ~"hash_func.h +" + +40 + ~"lib_áp_®g.h +" + +41 + ~"vnf_commÚ.h +" + +42 + ~"pe_commÚ_be.h +" + +43 + ~"¹e_ù_tý.h +" + +44 + ~"¹e_úxn_ackg.h +" + +45 + #ALG_DEBUG + 1 + + ) + +48 +ut8_t + + +49 +¹e_ù_ü_úxn_hashkey +( + +50 +ut32_t + * +¤c_addr +, + +51 +ut32_t + * +d¡_addr +, + +52 +ut16_t + +¤c_pÜt +, + +53 +ut16_t + +d¡_pÜt +, + +54 +ut8_t + +´Ùo +, + +55 +ut32_t + * +key +, + +56 +ut8_t + +ty³ +); + +59 +¹e_mbuf + * + glib_®g_pkt +; + +60 um { + mPRIVATE +, + mPUBLIC +}; + +61 +¹e_hash_·¿ms + + gáp_®g_hash_·¿ms + = { + +62 . +Çme + = "FTP ALG", + +63 . + gs + = 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 ALGte_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-hashookup failedet %d, EINVAL %d, ENOENT %d\n", + +110 +»t +, +EINVAL +, +ENOENT +); + +113 +»t_®g_d©a +; + +116 +NULL +; + +117 + } +} + +124 + $»move_áp_®g_y +( +ut32_t + +addr +, +ut8_t + +pÜtid +) + +129 +áp_®g_key + +®g_key +; + +130 +®g_key +. +l4pÜt + = + `¹e_bsw16 +( +pÜtid +); + +131 +®g_key +. +_add»ss + = + `¹e_bsw32 +( +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 +( +ut32_t + +addr +, +ut8_t + +pÜtid +) + +151 +áp_®g_key + +®g_key +; + +152 +®g_key +. +l4pÜt + = + `¹e_bsw16 +( +pÜtid +); + +154 +®g_key +. +_add»ss + = + `¹e_bsw32 +( +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_yxi¡ %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_bsw16 +( +pÜtid +); + +180 +Ãw_®g_d©a +-> +_add»ss + = + `¹e_bsw32 +( +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_¡rg +, + +205 * +pÜt_¡rg_ª¦©ed +, +áp_£ssiÚ_ty³ +) + +207 +ut32_t + +ª¥Üt_ +; + +208 +ut16_t + +ª¥Üt_pÜt +; + +209 +ut16_t + +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +; + +210 +ut16_t + +Ãw_pÜt_¡rg_Ëngth +; + +212 +ut8_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 + = ( +ut16_t +è( +ª¥Üt_pÜt +/0x100); + +217 +tmp6 + = ( +ut16_t +è( +ª¥Üt_pÜt + % 0x100); + +219 +ª¥Üt_ + = + `¹e_bsw32 +(transport_ip); + +221 +b±r_public_add»ss + = ( +ut8_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 + `¥rtf +( +pÜt_¡rg_ª¦©ed +, +FTP_PASV_PARAMETER_STRING +, + +230 +FTP_PASV_RETURN_CODE +, +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, + +231 +tmp5 +, +tmp6 +); + +233 + `¥rtf +( +pÜt_¡rg_ª¦©ed +, +FTP_PORT_PARAMETER_STRING +, + +234 +tmp1 +, +tmp2 +, +tmp3 +, +tmp4 +, +tmp5 +, +tmp6 +); + +235 #ifdeà +ALGDBG + + +236 + `´tf +("FTP ALG: FTPew string: Len:%d %s\n", + +237 ( +ut16_t +è + `¡¾ +( +pÜt_¡rg_ª¦©ed +)-2, + +238 +pÜt_¡rg_ª¦©ed +); + +240 + `´tf +("FTPonranslated PASV string: Len:%d, %s\n", + +241 ( +ut16_t +) + `¡¾ +( +pÜt_¡rg +)-2, ort_string); + +242 + `´tf +("old strlen:%dew strlen:%d\n", + +243 () + `¡¾ +( +pÜt_¡rg +), + +244 () + `¡¾ +( +pÜt_¡rg_ª¦©ed +)); + +247 ( +Ãw_pÜt_¡rg_Ëngth + = + +248 ( +ut16_t +è + `¡¾ +( +pÜt_¡rg_ª¦©ed +)); + +249 + } +} + +256 +le + + $áp_®g_modify_pkt_Ën +( +¹e_mbuf + * +pkt +) + +258 +ut16_t + +pkt_Ëngth + = 0; + +259 +_hdr_size_bys + = + `¹e_ù_g_IP_hdr_size +( +pkt +); + +260 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +262 ià( +_hdr_size_bys + =ð +IPv4_HEADER_SIZE +) { + +263 +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +264 +pkt_Ëngth + = + `¹e_bsw16 +( +ihdr4 +-> +tÙ®_Ëngth +è+ +ETH_HDR_SIZE +; + +265 } ià( +_hdr_size_bys + =ð +IPv6_HEADER_SIZE +) { + +266 +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +267 +pkt_Ëngth + = + `¹e_bsw16 +( +ihdr6 +-> +·ylßd_Ën +) + + +268 +IPv6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +271 +ut16_t + +mbuf_pkt_Ëngth + = + `¹e_pktmbuf_pkt_Ën +( +pkt +); + +273 ià( +pkt_Ëngth + =ð +mbuf_pkt_Ëngth +) + +276 ià( +pkt_Ëngth + < +mbuf_pkt_Ëngth +) { + +277 + `¹e_pktmbuf_im +( +pkt +, +mbuf_pkt_Ëngth + - +pkt_Ëngth +); + +282 + `¹e_pktmbuf_³nd +( +pkt +, +pkt_Ëngth + - +mbuf_pkt_Ëngth +); + +283 + } +} + +292 +ut16_t + + $áp_®g_g_IP_hdr_size +( +¹e_mbuf + * +pkt +) + +298 +ut8_t + +hdr_chk + = + `RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +299 +hdr_chk + = hdr_chk >> 4; + +301 ià( +hdr_chk + =ð +IP_VERSION_4 +) + +302 +IPv4_HEADER_SIZE +; + +303 ià( +hdr_chk + =ð +IP_VERSION_6 +) + +304 +IPv6_HEADER_SIZE +; + +308 + } +} + +316 + $áp_®g_compu_checksums +( + +317 * +i_hdr +, + +318 +tý_hdr + * +t_hdr +) + +328 +t8_t + +hdr_chk + = + `¹e_ù_vsiÚ +( +i_hdr +); + +329 +t_hdr +-> +cksum + = 0; + +331 ià( +hdr_chk + =ð +IP_VERSION_4 +) { + +332 +v4_hdr + * +i4_hdr + = (v4_hd¸*) +i_hdr +; + +333 +i4_hdr +-> +hdr_checksum + = 0; + +334 +t_hdr +-> +cksum + = 0; + +335 +t_hdr +-> +cksum + = + `¹e_v4_ud±ý_cksum +( +i4_hdr +,_hdr); + +337 #ifdeà +ALGDBG + + +338 + `´tf +("cksum %x\n", + `¹e_bsw32 +( +t_hdr +-> +cksum +)); + +341 +i4_hdr +-> +hdr_checksum + = + `¹e_v4_cksum +(i4_hdr); + +342 } ià( +hdr_chk + =ð +IP_VERSION_6 +) { + +343 +v6_hdr + * +i6_hdr + = (v6_hd¸*) +i_hdr +; + +344 +t_hdr +-> +cksum + = 0; + +345 +t_hdr +-> +cksum + = + `¹e_v6_ud±ý_cksum +( +i6_hdr +,_hdr); + +347 + } +} + +356 + $áp_®g_adju¡_tý_ack +( +¹e_mbuf + * +pkt +, +t16_t + +ackSeqdiff +) + +359 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +360 +v4_hdr + * +hdr + = (ipv4_hdr *) + +361 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +362 +tý_hdr + * +thdr + = (tcp_hdr *) + +363 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +364 +IP_START + + +_hdr_size_bys +); + +369 +ut32_t + +mp +; + +370 +mp + = + `¹e_bsw32 +( +thdr +-> +»cv_ack +); + +372 ià( +ackSeqdiff + < 0) + +373 +mp + +ð + `abs +( +ackSeqdiff +); + +375 +mp + -ð + `abs +( +ackSeqdiff +); + +377 +thdr +-> +»cv_ack + = + `¹e_bsw32 +( +mp +); + +378 + } +} + +386 + $áp_®g_adju¡_tý_£q +( +¹e_mbuf + * +pkt +, +t16_t + +ackSeqdiff +) + +389 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +390 +v4_hdr + * +hdr + = (ipv4_hdr *) + +391 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +392 +tý_hdr + * +thdr + = (tcp_hdr *) + +393 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +394 +IP_START + + +_hdr_size_bys +); + +395 +ut32_t + +mp +; + +397 +mp + = + `¹e_bsw32 +( +thdr +-> +£Á_£q +); + +398 ià( +ackSeqdiff + < 0) + +399 +mp + -ð + `abs +( +ackSeqdiff +); + +401 +mp + +ð + `abs +( +ackSeqdiff +); + +403 +thdr +-> +£Á_£q + = + `¹e_bsw32 +( +mp +); + +404 + } +} + +414 + $áp_®g_d_tý_£quû +( + +415 +¹e_mbuf + * +pkt +, + +416 * +pÜt_¡rg +, + +417 +t16_t + +exi¡g_týSeqdiff +, + +418 +ut16_t + +Þd_pÜt_¡rg_Ëngth +, + +419 +ut16_t + +Ãw_pÜt_¡rg_Ëngth +) + +421 +t16_t + +cu¼t_£quû_numb_d +=0; + +422 +t16_t + +f®_£quû_numb_d +; + +424 +ut16_t + +_hdr_size_bys + = +IPv4_HEADER_SIZE +; + +425 +v4_hdr + * +hdr + = (ipv4_hdr *) + +426 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +427 +tý_hdr + * +thdr + = (tcp_hdr *) + +428 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +429 +IP_START + + +_hdr_size_bys +); + +434 +cu¼t_£quû_numb_d + = ( +t16_t +è( +Ãw_pÜt_¡rg_Ëngth + - + +435 +Þd_pÜt_¡rg_Ëngth +); + +436 +hdr +-> +tÙ®_Ëngth + = + `¹e_bsw16 +(iphdr->total_length); + +438 #ifdeà +ALGDBG + + +439 + `´tf +("tÙ®_Ëngth :%u\n", +hdr +-> +tÙ®_Ëngth +); + +441 if( +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_bsw16 +(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 +pe_cgDZ + * +p_Çt +, + +464 +pe_cgDZ_y_key + * +Çt_y_key +, + +465 +¹e_mbuf + * +pkt +, + +466 +¹e_ù_úxn_ack + * +cgÇt_úxn_ack +, + +467 +t32_t + +ù_posiÚ +, + +468 +ut8_t + +deùiÚ +) + +476 * +pÜt_cmd_¡rg +; + +477 * +pÜt_cmd_d_¡rg +; + +478 * +tý_hd_d +; + +479 * +tý_¡¬t +; + +482 +ut16_t + +´iv©e_pÜt_numb +; + +483 +ut16_t + +public_pÜt_numb +; + +484 +ut16_t + +1 +, +2 +, +3 +, +4 +, +pÜt1 +, +pÜt2 +; + +485 +t16_t + +týSeqdiff +; + +486 +t16_t + +ackSeqdiff +, +ackAdju¡ +; + +487 +ut32_t + +´iv©e_add»ss +; + +488 +ut32_t + +public_add»ss +; + +489 +ut8_t + * +b±r_´iv©e_add»ss +; + +491 +pÜt_¡rg +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +492 +pÜt_¡rg_ª¦©ed +[ +FTP_MAXIMUM_PORT_STRING_LENGTH +]; + +493 +t16_t + +Ãw_pÜt_¡rg_Ëngth +; + +494 +t16_t + +Þd_pÜt_¡rg_Ëngth +; + +495 +dummy_v®ue +; + +496 +cgDZ_bË_y + * +eg»ss_y +, * +g»ss_y +; + +497 +ut32_t + +ù_key +[10]; + +498 +ut8_t + +key_deùiÚ +; + +500 +ut16_t + +_hdr_size_bys + = +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 +ut16_t + +¤c_pÜt + = + `¹e_bsw16 +( +thdr +->src_port); + +510 +ut16_t + +d¡_pÜt + = + `¹e_bsw16 +( +thdr +->dst_port); + +511 +ut8_t + +´Ùo + = +_hdr +-> +Ãxt_´Ùo_id +; + +512 +ut32_t + +¤c_addr + = + `¹e_bsw32 +( +_hdr +->src_addr); + +513 +ut32_t + +d¡_addr + = + `¹e_bsw32 +( +_hdr +->dst_addr); + +514 +ut32_t + +tmp_tý_·ylod_size +; + +517 - +¤c_pÜt + & +d¡_pÜt + +checkg + +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 + +wl +) + +523 +Ruº + + +524 +ELSE + + +525 +the + +pÜt +/ +·sv + +·¿mr + +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 sequm diff: %d\n", + +539 +cgÇt_úxn_ack +-> +hash_bË_s +[ + +540 +ù_posiÚ +]. +týSeqdiff +); + +541 + `´tf +("tcp data offset: %d\n", + +542 (( +thdr +-> +d©a_off + & 0xf0) >> 2)); + +543 + `´tf +("ù osiÚ iÀdpi:%d\n", +ù_posiÚ +); + +547 ià( +¤c_pÜt + =ð21 || +d¡_pÜt + == 21) { + +556 +tý_¡¬t + = (*) +thdr +; + +559 +pÜt_cmd_¡rg + = (* )( +tý_¡¬t ++(( +thdr +-> +d©a_off + & 0xf0) >> 2)); + +560 +tý_hd_d + = +pÜt_cmd_¡rg +; + +562 ià( +deùiÚ + =ð +PRIVATE +) { + +564 #ifdeà +ALGDBG + + +565 + `´tf +("In PRIVATE "); + +568 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. +£q_þÁ + + +569 ð + `¹e_bsw32 +( +thdr +-> +£Á_£q +); + +570 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. +ack_þÁ + + +571 ð + `¹e_bsw32 +( +thdr +-> +»cv_ack +); + +572 #ifdeà +ALGDBG + + +573 + `´tf +("-->Seq_cli:%u, Ack_cli:%u, Len:%4d\n", + +574 + `¹e_bsw32 +( +thdr +-> +£Á_£q +), + +575 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +576 ( + `¹e_bsw16 +( +_hdr +-> +tÙ®_Ëngth +) - + +577 ((( +thdr +-> +d©a_off + & 0xf0) >> 4) * 4)) - 20); + +581 #ifdeà +ALGDBG + + +582 + `´tf +("In PUBLIC "); + +584 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. +£q_£rv + + +585 ð + `¹e_bsw32 +( +thdr +-> +£Á_£q +); + +586 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. +ack_£rv + + +587 ð + `¹e_bsw32 +( +thdr +-> +»cv_ack +); + +588 #ifdeà +ALGDBG + + +589 + `´tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +590 + `¹e_bsw32 +( +thdr +-> +£Á_£q +),_bsw32Ñhdr-> +»cv_ack +), + +591 ( +_hdr +-> +tÙ®_Ëngth + - ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) + +596 ià( + `ssÿnf +( +pÜt_cmd_¡rg +, +FTP_PASV_PARAMETER_STRING +, & +dummy_v®ue +, + +597 & +1 +, & +2 +, & +3 +, & +4 +, & +pÜt1 +, & +pÜt2 +) == + +598 +FTP_PASV_PARAMETER_COUNT +){ + +600 + `¥rtf + ( +pÜt_¡rg +, +FTP_PASV_PARAMETER_STRING +, +FTP_PASV_RETURN_CODE +, + +601 +1 +, +2 +, +3 +, +4 +, +pÜt1 +, +pÜt2 +); + +603 +i + = 0; + +604 +pÜt_cmd_¡rg +[ +i +] != '\r' && ort_cmd_string[i+1] != '\n') + +605 +i +++; + +607 +i + += 2; + +609 +Þd_pÜt_¡rg_Ëngth + = +i +; + +611 +´iv©e_pÜt_numb + = ( +ut16_t +è( +pÜt1 + * 0x100 + +pÜt2 +); + +612 +b±r_´iv©e_add»ss + = ( +ut8_t + *è& +´iv©e_add»ss +; + +614 +b±r_´iv©e_add»ss +[3] = ( +ut8_t +è( +4 + & 0x00FF); + +615 +b±r_´iv©e_add»ss +[2] = ( +ut8_t +è( +3 + & 0x00FF); + +616 +b±r_´iv©e_add»ss +[1] = ( +ut8_t +è( +2 + & 0x00FF); + +617 +b±r_´iv©e_add»ss +[0] = ( +ut8_t +è( +1 + & 0x00FF); + +621 ià( +deù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 +[ +ù_posiÚ +]. + +635 +£rv_deùiÚ + = +SERVER_IN_PUBLIC +; + +636 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +637 +áp_£ssiÚ_ty³ += 1; + +638 } ià( +deùiÚ + =ð +PRIVATE +) { + +641 +pe_cgDZ_y_key + +d©a_chªÃl_key +; + +642 +´iv©e_add»ss + = + `¹e_bsw32 +(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 +(( +pe + *) +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_bsw16 +( +_hdr +-> +tÙ®_Ëngth +) - + +672 (( +thdr +-> +d©a_off + & 0xf0è>> 2è- +_hdr_size_bys +; + +673 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +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_¡rg_Ëngth + = + `áp_®g_modify_·ylßd +( +eg»ss_y +, + +681 +pÜt_¡rg +, + +682 +pÜt_¡rg_ª¦©ed +, 1); + +683 + `¡ºýy +( +tý_hd_d +, +pÜt_¡rg_ª¦©ed +, + +684 + `¡¾ +( +pÜt_¡rg_ª¦©ed +)); + +685 +týSeqdiff + = + `áp_®g_d_tý_£quû +Ð +pkt +, +pÜt_¡rg +, + +686 +cgÇt_úxn_ack +-> +hash_bË_s + + +687 [ +ù_posiÚ +]. +týSeqdiff +, + +688 +Þd_pÜt_¡rg_Ëngth +, + +689 +Ãw_pÜt_¡rg_Ëngth +); + +692 + `áp_®g_modify_pkt_Ën +( +pkt +); + +699 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +700 +®g_by·ss_æag + = +NO_BYPASS +; + +701 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +702 +týSeqdiff + =cpSeqdiff; + +703 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +704 +£rv_deùiÚ + = +SERVER_IN_PRIVATE +; + +705 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +706 +áp_£ssiÚ_ty³ + = 1; + +710 } ià( + `ssÿnf +( +pÜt_cmd_¡rg +, +FTP_PORT_PARAMETER_STRING +, + +711 & +1 +, & +2 +, & +3 +, & +4 +, & +pÜt1 +, & +pÜt2 +) == + +712 +FTP_PORT_PARAMETER_COUNT +){ + +714 +i + = 0; + +715 +ut8_t + +pÜt_h +; + +716 +pÜt_cmd_¡rg +[ +i +] != '\r' && + +717 +pÜt_cmd_¡rg +[ +i ++1] != '\n') + +718 +i +++; + +720 +i + += 2; + +722 +Þd_pÜt_¡rg_Ëngth + = +i +; + +724 #ifdeà +ALGDBG + + +725 + `´tf +Ð" Exi¡g Seq Difàð%d", +cgÇt_úxn_ack +-> + +726 +hash_bË_s +[ +ù_posiÚ +]. +týSeqdiff +); + +727 + `´tf +("FTP ALG: FTP PORT commandength: %d\n", + +728 +Þd_pÜt_¡rg_Ëngth +); + +731 +´iv©e_pÜt_numb + = ( +ut16_t +è( +pÜt1 + * 0x100 + +pÜt2 +); + +733 #ifdeà +ALGDBG + + +734 + `´tf +("FTP ALG: rivate ortumber before swap: %u\n", + +735 +´iv©e_pÜt_numb +); + +738 +b±r_´iv©e_add»ss + = ( +ut8_t + *è& +´iv©e_add»ss +; + +739 +b±r_´iv©e_add»ss +[3] = ( +ut8_t +è( +4 + & 0x00FF); + +740 +b±r_´iv©e_add»ss +[2] = ( +ut8_t +è( +3 + & 0x00FF); + +741 +b±r_´iv©e_add»ss +[1] = ( +ut8_t +è( +2 + & 0x00FF); + +742 +b±r_´iv©e_add»ss +[0] = ( +ut8_t +è( +1 + & 0x00FF); + +744 + `¥rtf +( +pÜt_¡rg +, +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_¡rg +)-2, ort_string); + +750 + `´tf +("´vddr: %x\n", +´iv©e_add»ss +); + +754 ià( +deùiÚ + =ð +PUBLIC +) { + +760 +pe_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 +[ +ù_posiÚ +]. + +767 +£rv_deùiÚ + = +SERVER_IN_PRIVATE +; + +768 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +769 +áp_£ssiÚ_ty³ += 0; + +772 #ifdeà +ALGDBG + + +773 + `´tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +774 + `¹e_bsw32 +( +thdr +-> +£Á_£q +), + +775 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +776 ( +_hdr +-> +tÙ®_Ëngth + - + +777 ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) - 20)); + +779 + `pÝuÏ_áp_®g_y +( +´iv©e_add»ss +, +´iv©e_pÜt_numb +); + +780 } ià( +deùiÚ + =ð +PRIVATE +) { + +786 +pe_cgDZ_y_key + +d©a_chªÃl_key +; + +787 +´iv©e_add»ss + = + `¹e_bsw32 +(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 +(( +pe + *) + +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_bsw16 +( +_hdr +-> +tÙ®_Ëngth +) - + +819 (( +thdr +-> +d©a_off + & 0xf0) >> 2) - + +820 +_hdr_size_bys +; + +821 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +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_¡rg_Ëngth + = + `áp_®g_modify_·ylßd +( +eg»ss_y +, + +829 +pÜt_¡rg +, + +830 +pÜt_¡rg_ª¦©ed +, 0); + +831 + `¡ºýy +( +tý_hd_d +, +pÜt_¡rg_ª¦©ed +, + +832 + `¡¾ +( +pÜt_¡rg_ª¦©ed +)); + +833 +týSeqdiff + = + `áp_®g_d_tý_£quû +Ð +pkt +, +pÜt_¡rg +, + +834 +cgÇt_úxn_ack +-> +hash_bË_s + + +835 [ +ù_posiÚ +]. +týSeqdiff +, + +836 +Þd_pÜt_¡rg_Ëngth +, + +837 +Ãw_pÜt_¡rg_Ëngth +); + +839 + `áp_®g_modify_pkt_Ën +( +pkt +); + +848 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +849 +®g_by·ss_æag + = +NO_BYPASS +; + +850 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +851 +týSeqdiff + =cpSeqdiff; + +852 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +853 +£rv_deùiÚ + = +SERVER_IN_PUBLIC +; + +854 +cgÇt_úxn_ack +-> +hash_bË_s +[ +ù_posiÚ +]. + +855 +áp_£ssiÚ_ty³ + = 0; + +857 #ifdeà +ALGDBG + + +858 + `´tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +859 + `¹e_bsw32 +( +thdr +-> +£Á_£q +), + +860 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +861 ( +_hdr +-> +tÙ®_Ëngth + - + +862 ((( +thdr +-> +d©a_off + & 0xf0) >> 2)) - 20)); + +869 ià(( +ackAdju¡ += +cgÇt_úxn_ack +-> +hash_bË_s +[ + +870 +ù_posiÚ +]. +týSeqdiff +) != 0) { + +871 ià( +deùiÚ + =ð +PRIVATE +) { + +873 +cgÇt_úxn_ack +-> +hash_bË_s + + +874 [ +ù_posiÚ +]. +£q_þÁ + != + +875 +cgÇt_úxn_ack +-> +hash_bË_s + + +876 [ +ù_posiÚ +]. +ack_£rv +) { + +877 +Seqhs +; + +878 + `áp_®g_adju¡_tý_£q +Ð +pkt +, +ackAdju¡ +); + +879 +tmp_tý_·ylod_size + = + `¹e_bsw16 +( + +880 +_hdr +-> +tÙ®_Ëngth +) - + +881 (( +thdr +-> +d©a_off + & 0xf0) >> 2) - + +882 +_hdr_size_bys +; + +883 +cgÇt_úxn_ack +-> +hash_bË_s + + +884 [ +ù_posiÚ +]. +tý_·ylßd_size + = +tmp_tý_·ylod_size +; + +885 #ifdeà +ALGDBG + + +886 + `´tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +887 + `¹e_bsw32 +( +thdr +-> +£Á_£q +), + +888 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +889 ( +_hdr +-> +tÙ®_Ëngth + -((( +thdr +-> +d©a_off + & 0xf0) >> 2))- 20)); + +893 ià( +cgÇt_úxn_ack +-> +hash_bË_s + + +894 [ +ù_posiÚ +]. +ack_£rv + != + +895 ( +cgÇt_úxn_ack +-> +hash_bË_s + + +896 [ +ù_posiÚ +]. +£q_þÁ + + + +897 +cgÇt_úxn_ack +-> +hash_bË_s + + +898 [ +ù_posiÚ +]. +tý_·ylßd_size +)) { + +899 +Ackhs +; + +900 + `áp_®g_adju¡_tý_ack +Ð +pkt +, +ackAdju¡ +); + +901 #ifdeà +ALGDBG + + +902 + `´tf +("<--Seq_cli:%4d, Ack_cli%4d, Len:%4d\n", + +903 + `¹e_bsw32 +( +thdr +-> +£Á_£q +), + +904 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +905 ( +_hdr +-> +tÙ®_Ëngth + -((( +thdr +-> +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 +[ +ù_posiÚ +]. +®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_deù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 +ut32_t + + m_add»ss +; + +64 +ut16_t + + ml4pÜt +; + +65 +ut8_t + + mfËr1 +; + +66 +ut8_t + + mfËr2 +; + +68 + sáp_®g_bË_y + { + +69 +ut32_t + + m_add»ss +; + +70 +ut16_t + + ml4pÜt +; + +71 +ut8_t + + máp_®g_mode +; + +72 +ut8_t + + máp_®g_deùiÚ +; + +73 +ut32_t + + m£ssiÚ_id +; + +74 +ut8_t + + m®g_by·ss_æag +; + +75 +ut8_t + + mdummy +; + +76 +ut8_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 PassivMod(%hu,%hu,%hu,%hu,%hu,%hu)\r\n" + + ) + +89 + #FTP_PASV_PARAMETER_COUNT + 7 + + ) + +90 + #FTP_PASV_STRING_END_MARKER + '\n' + + ) + +91 + #FTP_PASV_RETURN_CODE + 227 + + ) + +93 +áp_®g_dpi +( + +94 +pe_cgDZ + * +p_Çt +, + +95 +pe_cgDZ_y_key + * +Çt_y_key +, + +96 +¹e_mbuf + * +pkt +, + +97 +¹e_ù_úxn_ack + * +cgÇt_úxn_ack +, + +98 +t32_t + +ù_posiÚ +, + +99 +ut8_t + +deùiÚ +); + +100 +lib_áp_®g_ +(); + +101 +t8_t + +¹e_ù_vsiÚ +(* +i_hdr +); + + @VIL/alg/lib_sip_alg.c + +17 + ~<¡dio.h +> + +18 + ~<¡dlib.h +> + +19 + ~<¡dt.h +> + +20 + ~<¡rg.h +> + +21 + ~<uni¡d.h +> + +22 + ~<¬·/.h +> + +23 + ~<m©h.h +> + +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_pe.h +> + +34 + ~<¹e_¬p.h +> + +35 + ~<¹e_icmp.h +> + +36 + ~<¹e_hash.h +> + +37 + ~<¹e_jhash.h +> + +38 + ~<¹e_cyþes.h +> + +40 + ~"pe_aùiÚs_commÚ.h +" + +41 + ~"hash_func.h +" + +42 + ~"lib_s_®g.h +" + +43 + ~"vnf_commÚ.h +" + +44 + ~"pe_commÚ_be.h +" + +46 + #SIP_ALG_SIP + "SIP" + + ) + +47 + #SIP_ALG_200_OK + "200 OK" + + ) + +48 + #SIP_ALG_INVITE + "INVITE" + + ) + +49 + #SIP_ALG_BYE + "BYE" + + ) + +50 + #SIP_ALG_TRYING + "100 Tryg" + + ) + +51 + #SIP_ALG_RINGING + "180 Rgg" + + ) + +52 + #SIP_ALG_ACK + "ACK" + + ) + +53 + #SIP_ALG_CONTACT + "CÚù" + + ) + +54 + #SIP_ALG_CONTENT_LEN + "CÚÁ-Lgth" + + ) + +55 + #SIP_ALG_VIA + "V" + + ) + +56 + #SIP_ALG_FROM + "From" + + ) + +57 + #SIP_ALG_TO + "To" + + ) + +58 + #SIP_ALG_CALLID + "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_·¿ms + + gs_®g_hash_·¿ms + = { + +108 . +Çme + = +NULL +, + +109 . + gs + = +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 . + gexa_æag + = 1, + +117 +¹e_hash + * + gs_®g_hash_bË +; + +119 +s_®g_bË_y + * + gs_®g_bË +[ +MAX_NUM_SIP_ALG_ENTRIES +]; + +121 * +s_®g_´oûss +( +¹e_mbuf + * +pkt +, + +122 +ut16_t + +pkt_deùiÚ +, ut16_ +ÿÎ_deùiÚ +, + +123 +ut16_t + +msgTy³ +, +ut32_t + +modIp +, + +124 +ut16_t + +modL4PÜt +, +ut32_t + +pubIp +, + +125 +ut16_t + +pubL4PÜt +, ut16_ +modRPÜt +, + +126 +ut16_t + +modRtýPÜt +, ut16_* +diffModSL +); + +127 * +gSC®lIdS +(* +pMsg +); + +128 * +ÇtSAlgModifyPaylßdAddrPÜt +(* +pSMsg +, ** +pSMsgEnd +, + +129 +ut32_t + +ÞdSL +, ut32_* +diffL +, + +130 +ut32_t + +pub_ +, +ut16_t + +pub_pÜt +, + +131 +ut32_t + +ty³ +); + +132 * +ÇtSAlgAdju¡Msg +(* +pSMsg +, ** +pSMsgEnd +, + +133 +ut32_t + +ÃwSL +, ut32_ +ÞdSL +); + +137 + $lib_s_®g_ +() + +139 * +s + = + `¹e_zm®loc +( +NULL +, 64, +RTE_CACHE_LINE_SIZE +);; + +140 +sockid + = 0; + +142 if(! +s +){ + +143 + `´tf +("NAT SIP ALG Init failed\n"); + +146 + `¢´tf +( +s +, + `¡¾ +(s), "v4_s_®g_hash_%d", +sockid +); + +147 + `´tf +("NAT SIP ALG initialization ...\n"); + +150 +s_®g_hash_·¿ms +. +sock_id + = +SOCKET_ID_ANY +; + +151 +s_®g_hash_·¿ms +. +Çme + = +s +; + +152 +s_®g_hash_bË + = + `¹e_hash_ü +(& +s_®g_hash_·¿ms +); + +154 ià( +s_®g_hash_bË + =ð +NULL +) { + +155 + `´tf +("SIP ALGte_hash_create failed. socket %d ...\n", + +156 +s_®g_hash_·¿ms +. +sock_id +); + +157 + `¹e_ex +(0, "SIP ALGte_hash_create failed"); + +159 + `´tf +("s_®g_hash_bË %p\n\n", (*) +s_®g_hash_bË +); + +162 + } +} + +164 * +ß +( +n +); + +165 * + $ß +( +n +) + +167 +Ën + = +n + =ð0 ? 1 : + `æoÜ +( + `log10l +( + `Ïbs +(n))) + 1; + +169 ià( +n + < 0) + +170 +Ën +++; + +172 * +buf + = + `ÿÎoc +((), +Ën + + 1); + +173 if( +buf + !ð +NULL +) + +174 + `¢´tf +( +buf +, +Ën + + 1, "%ld", +n +); + +175 +buf +; + +176 + } +} + +178 +s_®g_bË_y + * +»ve_s_®g_y +( + +179 +s_®g_key + * +®g_key +); + +181 +s_®g_bË_y + * + $»ve_s_®g_y +( + +182 +s_®g_key + * +®g_key +) + +184 +s_®g_bË_y + * +s_®g_d©a + = +NULL +; + +186 +»t + = + `¹e_hash_lookup +( +s_®g_hash_bË +, +®g_key +); + +188 ià( +»t + < 0) { + +189 #ifdeà +ALGDBG + + +190 + `´tf +("alg-hashookup failedet %d, " + +192 +»t +, +EINVAL +, +ENOENT +); + +195 +s_®g_d©a + = +s_®g_bË +[ +»t +]; + +196 +s_®g_d©a +; + +199 +NULL +; + +200 + } +} + +203 + $»move_s_®g_y +( +ut32_t + +addr +, +ut16_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 +( +ut32_t + +addr +, +ut16_t + +pÜtid +, + +240 * +s_ÿÎ_id +, +ut8_t + +ÿÎ_deùiÚ +, + +241 +s_®g_pÜt_ty³ + +pÜt_ty³ +); + +242 + $pÝuÏ_s_®g_y +( +ut32_t + +addr +, +ut16_t + +pÜtid +, + +243 * +s_ÿÎ_id +, +ut8_t + +ÿÎ_deù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_entryxists 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 siplgntry: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_ÿÎ_deùiÚ + = +ÿÎ_deù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=%det=%d\n", + +296 +®g_key +. +_add»ss +, +pÜtid +, +»t +); + +299 + } +} + +301 + $s_®g_dpi +( +¹e_mbuf + * +pkt +, +pkt_d + +pkt_deùiÚ +, + +302 +ut32_t + +modIp +, +ut16_t + +modL4PÜt +, + +303 +ut32_t + +pubIp +, +ut16_t + +pubL4PÜt +, + +304 +ut16_t + +modRPÜt +, ut16_ +modRtýPÜt +) + +306 +ut16_t + +msgTy³ + = 0; + +307 +s_®g_ÿÎ_deùiÚ + +ÿÎ_deùiÚ + = 0; + +308 +ut32_t + +_add»ss + = 0; + +309 +ut16_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 * +pSMsg + = +NULL +; + +315 +s_®g_bË_y + * +s_®g_y +; + +316 * +s_ÿÎ_id + = +NULL +; + +317 +pos + = 0; + +318 +s_®g_key + +®g_key +; + +319 +ut16_t + +diffModSL + = 0; + +321 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +322 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +323 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +325 ià( +ALG_DEBUG +) { + +326 + `´tf +("%s: ackgth(%u), bufã¸Ëngth(%u)\n", +__func__ +, + +327 + `¹e_pktmbuf_pkt_Ën +( +pkt +), kt-> +buf_Ën +); + +328 + `´tf +("%s:a¡ segmaddr(%°%p)\n", +__func__ +, + +329 + `¹e_pktmbuf_Ï¡£g +( +pkt +), kt); + +330 + `´tf +("%s: 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 +( +pSMsg +, +SIP_ALG_INVITE +)) { + +338 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0) == + +339 +TRUE +) + +340 +s_ÿÎ_id + = + +341 + `gSC®lIdS +( +pSMsg + + +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_deùiÚ + =ð +PRIVATE +) { + +349 +ÿÎ_deùiÚ + = +SIP_CALL_OUTGOING +; + +350 +_add»ss + = + `¹e_bsw32 +( +_h +-> +¤c_addr +); + +351 +pÜt + = + `¹e_bsw16 +( +udp_h +-> +¤c_pÜt +); + +352 } ià( +pkt_deùiÚ + =ð +PUBLIC +) { + +353 +ÿÎ_deù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_deùiÚ +, +ÿÎ_deùiÚ +, +_add»ss +, +pÜt +); + +364 +»t + = + `pÝuÏ_s_®g_y +( +_add»ss +, +pÜt +, + +365 +s_ÿÎ_id +, +ÿÎ_deùiÚ +, + +366 +SIP_UDP +); + +367 ià( +»t + < 0) { + +368 + `´tf +("sipalgdpi:populate SIPlg UDPntry failed\n"); + +371 ià( +modRPÜt + != 0) { + +372 +»t + = + `pÝuÏ_s_®g_y +( +_add»ss +, +modRPÜt +, + +373 +s_ÿÎ_id +, + +374 +ÿÎ_deù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 +ÿÎ_deùiÚ +, +SIP_RTCP +); + +385 ià( +»t + < 0) { + +386 + `´tf +("sipalgdpi: " + +393 +pSMsg + = + +394 + `s_®g_´oûss +( +pkt +, +pkt_deùiÚ +, +ÿÎ_deùiÚ +, + +395 +SIP_ALG_INVITE_MSGTYPE +, +modIp +, +modL4PÜt +, 0, + +396 0, +modRPÜt +, +modRtýPÜt +, & +diffModSL +); + +403 ià( +pkt_deùiÚ + =ð +PRIVATE +) { + +404 +®g_key +. +_add»ss + = + `¹e_bsw32 +( +_h +-> +¤c_addr +); + +405 +®g_key +. +l4pÜt + = + `¹e_bsw16 +( +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_deùiÚ +, +modIp +, +modL4PÜt +, + +421 +modRPÜt +, +modRtýPÜt +, +pubIp +, +pubL4PÜt +); + +424 ià( +s_®g_y +) { + +425 +ÿÎ_deùiÚ + = +s_®g_y +-> +s_®g_ÿÎ_deùiÚ +; + +426 ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_BYE +) || + +427 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_CANCEL +)) { + +428 +msgTy³ + = +SIP_ALG_BYE_MSGTYPE +; + +430 +sAlgProûss +; + +431 } ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_ACK +)) { + +432 +msgTy³ + = +SIP_ALG_ACK_MSGTYPE +; + +434 +sAlgProûss +; + +437 +pSMsg + += 8; + +439 ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_200_OK +)) { + +441 ià( +ÇtSAlgMsgFldPos + + +442 ( +pSMsg +, +SIP_ALG_CSEQ +, & +pos +, 0è=ð +TRUE +) { + +443 * +pBye +; + +445 +pBye + = + +446 +pSMsg + + +pos + + + +447 + `TAG_TO_DATAPOS +( +SIP_ALG_CSEQ +); + +448 + `SKIP_SPACES +( +pBye +); + +450 * +pBye + != ' ') + +451 +pBye +++; + +452 + `SKIP_SPACES +( +pBye +); + +453 ià( + `IS_STRING_SAME +( +pBye +, +SIP_ALG_BYE +) + +455 ( +IS_STRING_SAME + + +456 ( +pBye +, +SIP_ALG_CANCEL +))) + +457 +msgTy³ + = + +458 +SIP_ALG_200_OK_BYE_MSGTYPE +; + +461 +msgTy³ + = + +462 +SIP_ALG_200_OK_INVITE_MSGTYPE +; + +464 } ià( + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_TRYING +) || + +465 + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_RINGING +)) { + +466 +msgTy³ + = +SIP_ALG_TRYING_RINGING_MSGTYPE +; + +469 +sAlgProûss +: + +470 ià( +ALG_DEBUG +) + +471 + `´tf +("2=>%s: kt_dir(%d), call_dir(%d), " + +474 +__func__ +, +pkt_deùiÚ +, +ÿÎ_deùiÚ +, + +475 +msgTy³ +, +modIp +, +modL4PÜt +, +modRPÜt +, + +476 +modRtýPÜt +); + +478 +pSMsg + = + +479 + `s_®g_´oûss +( +pkt +, +pkt_deùiÚ +, +ÿÎ_deùiÚ +, + +480 +msgTy³ +, +modIp +, +modL4PÜt +, +pubIp +, + +481 +pubL4PÜt +, +modRPÜt +, +modRtýPÜt +, + +482 & +diffModSL +); + +484 +pSMsg + = +NULL +; + +487 ià( +ALG_DEBUG +) + +488 + `´tf +("%s: BefÜIPÙ®gth(%u), ud°Ëngth(%u)\n", +__func__ +, + +489 + `¹e_bsw16 +( +_h +-> +tÙ®_Ëngth +),_bsw16( +udp_h +-> +dg¿m_Ën +)); + +494 +ut16_t + +Ën + = 0; + +495 ià( +diffModSL + > 0) { + +496 +Ën + = + `¹e_bsw16 +( +udp_h +-> +dg¿m_Ën +); + +497 +Ën + +ð +diffModSL +; + +498 +udp_h +-> +dg¿m_Ën + = + `¹e_bsw16 +( +Ën +); + +500 +Ën + = + `¹e_bsw16 +( +_h +-> +tÙ®_Ëngth +); + +501 +Ën + +ð +diffModSL +; + +502 +_h +-> +tÙ®_Ëngth + = + `¹e_bsw16 +( +Ën +); + +504 ià( + `¹e_pktmbuf_³nd +( +pkt +, +diffModSL +è=ð +NULL +) + +505 + `´tf +("%s: ktmbuf_³nduº NULL", +__func__ +); + +509 ià( +ALG_DEBUG +) + +510 + `´tf +("%s: After IPotalength(%u), udpength(%u), " + +511 "diffModSL(%u)\n", +__func__ +, + +512 + `¹e_bsw16 +( +_h +-> +tÙ®_Ëngth +), + +513 + `¹e_bsw16 +( +udp_h +-> +dg¿m_Ën +), + +514 +diffModSL +); + +516 ià( +pSMsg + !ð +NULL +) + +520 + } +} + +522 * + $s_®g_´oûss +( +¹e_mbuf + * +pkt +, +ut16_t + +pkt_deùiÚ +, + +523 +ut16_t + +ÿÎ_deùiÚ +, ut16_ +msgTy³ +, +ut32_t + +modIp +, + +524 +ut16_t + +modL4PÜt +, +ut32_t + +pubIp +, ut16_ +pubL4PÜt +, + +525 +ut16_t + +modRPÜt +, ut16_ +modRtýPÜt +, + +526 +ut16_t + * +diffModSL +) + +528 +v4_hdr + * +_h +; + +529 +h_hdr + * +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +530 +udp_hdr + * +udp_h +; + +531 * +pSMsg +, * +pS +, * +pEndP +; + +532 +pos +; + +534 +ut32_t + +diffL +, +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 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +541 * +pTmpSMsg + = +pSMsg +; + +542 * +pS¹SMsg + = +pSMsg +; + +544 +s_msg_Ën + = + +545 + `¹e_bsw16 +( +_h +-> +tÙ®_Ëngth +è- ( +v4_hdr +) - + +546 ( +udp_hdr +); + +548 ià( + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) == + +549 +TRUE +) + +550 +pTmpSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +552 + `´tf +("sip_alg_process: Invalid Content Length\n"); + +553 +NULL +; + +556 + `SKIP_SPACES +( +pTmpSMsg +); + +557 +sdpD©aL + = + `¡¹Þ +( +pTmpSMsg +, & +pS +, 10); + +559 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, +SIP_ALG_DOUBLE_CRLF +, & +pos +, 0); + +560 +pTmpSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_DOUBLE_CRLF +)); + +562 ià( +sdpD©aL + != 0) + +563 ià( +ÇtSAlgMsgFldPos + + +564 ( +pTmpSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, 0è=ð +TRUE +) { + +565 +pTmpSMsg + +ð +pos + + + `¡¾ +( +SIP_ALG_REMOTE_PARTY_ID +); + +567 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +568 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +570 +pTmpSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_DOUBLE_CRLF +)); + +573 +sMsgL + = ( +pTmpSMsg + - +pSMsg +); + +575 * +pSMsgEnd + = +pSMsg + + +sMsgL + + +sdpD©aL +; + +577 ià( +ALG_DEBUG +) + +578 + `´tf +("%s: SipMsg: %p, SipMsgEnd: %p, sipMsgLen: %d, " + +580 +__func__ +, +pSMsg +, +pSMsgEnd +, +sMsgL +, +sdpD©aL +, + +581 +s_msg_Ën +); + +583 ià( +ÿÎ_deùiÚ + =ð +SIP_CALL_OUTGOING +) { + +584 ià(( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) + +585 || ( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +)) { + +587 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +588 =ð +TRUE +) { + +590 +pSMsg + += + +591 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +592 +SIP_ALG_VIA_FIELD_IPADDR +); + +593 +pTmpSMsg + = +pSMsg +; + +595 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +596 +SIP_ALG_SEMICOLON +, & +pos +, + +598 +pTmpSMsg + +ð +pos +; + +599 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +601 + `´tf +("sip_alg_process; No valid VIA field\n"); + +602 +NULL +; + +605 +pSMsg + = + +606 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +607 +addrPÜtL +, + +608 & +diffL +, +modIp +, + +609 +modL4PÜt +, + +610 +ADDRESS_PORT_STRING +); + +612 * +diffModSL + +ð +diffL +; + +616 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +617 =ð +TRUE +) { + +618 +pSMsg + +ð +pos +; + +620 +pTmpSMsg + = +pSMsg +; + +622 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +623 & +pos +, 0); + +624 +pTmpSMsg + +ð +pos +; + +625 +diffL + = +pTmpSMsg + - +pSMsg +; + +627 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +629 +pSMsg + +ð +pos + + 1; + +631 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +633 +´tf + + +635 +NULL +; + +638 +pSMsg + = + +639 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +640 +addrPÜtL +, + +641 & +diffL +, +modIp +, + +642 +modL4PÜt +, + +643 +ADDRESS_PORT_STRING +); + +645 * +diffModSL + +ð +diffL +; + +649 ià( +ÇtSAlgMsgFldPos + + +650 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +651 +pSMsg + +ð +pos +; + +653 +pTmpSMsg + = +pSMsg +; + +655 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +656 +SIP_ALG_CRLF +, & +pos +, + +658 +pTmpSMsg + +ð +pos +; + +659 +diffL + = +pTmpSMsg + - +pSMsg +; + +661 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +663 +pSMsg + +ð +pos + + 1; + +664 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +666 + `´tf +("sip_alg_process; " + +668 +NULL +; + +672 +pSMsg + = + +673 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +674 +addrPÜtL +, + +675 & +diffL +, +modIp +, 0, + +676 +ADDRESS_PORT_STRING +); + +678 * +diffModSL + +ð +diffL +; + +681 ià( +ÇtSAlgMsgFldPos + + +682 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +683 +pSMsg + +ð +pos +; + +685 +pTmpSMsg + = +pSMsg +; + +686 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +687 +SIP_ALG_CRLF +, & +pos +, + +689 +pTmpSMsg + +ð +pos +; + +691 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +693 +pSMsg + +ð +pos + + 1; + +694 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +697 + `´tf +("sip_alg_process; " + +699 +NULL +; + +702 +pSMsg + = + +703 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +704 +addrPÜtL +, + +705 & +diffL +, +modIp +, + +706 +modL4PÜt +, + +707 +ADDRESS_PORT_STRING +); + +709 * +diffModSL + +ð +diffL +; + +711 ià( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) { + +713 ià( +ÇtSAlgMsgFldPos + + +714 ( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, + +715 0è=ð +TRUE +) { + +716 +pSMsg + += + +717 ( +pos + + + +718 + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +719 + `SKIP_SPACES +( +pSMsg +); + +721 ià(! +IS_STRING_SAME + + +722 ( +pSMsg +, +SIP_ALG_APPSDP +)) { + +723 + `´tf +("sip_alg_process " + +725 +NULL +; + +728 + `´tf +("sip_alg_process; " + +730 +NULL +; + +734 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +735 +SIP_ALG_CONTENT_LEN +, & +pos +, + +737 +pSMsg + += + +738 ( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +739 + `SKIP_SPACES +( +pSMsg +); + +740 +sdpMsgL + = + `¡¹Þ +( +pSMsg +, & +pEndP +, 10); + +741 ià(! +sdpMsgL +) { + +743 ià( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +) + +744 +sAlgProûssEx +; + +746 + `´tf +("sip_alg_process - " + +748 +NULL +; + +752 ià( +ÇtSAlgMsgFldPos + + +753 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +754 0è=ð +TRUE +) { + +755 +pSMsg + +ð +pos +; + +757 +pTmpSMsg + = +pSMsg +; + +759 + `ÇtSAlgMsgFldPosFdC¾f +( +pSMsg +, + +760 +SIP_ALG_CRLF +, + +761 & +pos +, + +763 +pTmpSMsg + +ð +pos +; + +766 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +767 +SIP_ALG_IPV4 +, & +pos +, + +769 +pSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_IPV4 +)); + +770 + `SKIP_SPACES +( +pSMsg +); + +772 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +774 + `´tf +("sip_alg_processing: " + +776 +NULL +; + +779 +pSMsg + = + +780 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +781 & +pSMsgEnd +, + +782 +addrPÜtL +, + +783 & +diffL +, + +784 +modIp +, 0, + +785 +ADDRESS_PORT_STRING +); + +787 * +diffModSL + +ð +diffL +; + +788 +sdpMsgL + +ð +diffL +; + +792 ià( +ÇtSAlgMsgFldPos + + +793 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +794 0è=ð +TRUE +) { + +795 +pSMsg + +ð +pos +; + +796 +pTmpSMsg + = +pSMsg +; + +798 + `ÇtSAlgMsgFldPosFdC¾f +( +pSMsg +, + +799 +SIP_ALG_CRLF +, + +800 & +pos +, + +802 +pTmpSMsg + +ð +pos +; + +805 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +806 +SIP_ALG_IPV4 +, & +pos +, + +808 +pSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_IPV4 +)); + +809 + `SKIP_SPACES +( +pSMsg +); + +811 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +813 + `´tf +("sip_alg_processing: " + +815 +NULL +; + +818 +pSMsg + = + +819 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +820 & +pSMsgEnd +, + +821 +addrPÜtL +, + +822 & +diffL +, + +823 +modIp +, 0, + +824 +ADDRESS_PORT_STRING +); + +826 * +diffModSL + +ð +diffL +; + +827 +sdpMsgL + +ð +diffL +; + +831 ià( +ÇtSAlgMsgFldPos + + +832 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +833 0è=ð +TRUE +) { + +834 +pSMsg + += + +835 ( +pos + + + +836 + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +837 + `SKIP_SPACES +( +pSMsg +); + +838 +pTmpSMsg + = +pSMsg +; + +839 +ÇtSAlgMsgFldPosFdS·û + + +840 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +842 +pTmpSMsg + +ð +pos +; + +843 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +847 +pSMsg + = + +848 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +849 & +pSMsgEnd +, + +850 +addrPÜtL +, + +851 & +diffL +, 0, + +852 +modRPÜt +, + +853 +PORT_STRING +); + +855 * +diffModSL + +ð +diffL +; + +856 +sdpMsgL + +ð +diffL +; + +860 ià( +ÇtSAlgMsgFldPos + + +861 ( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, + +862 0è=ð +TRUE +) { + +863 +pSMsg + += + +864 ( +pos + + + +865 + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +866 + `SKIP_SPACES +( +pSMsg +); + +867 +pTmpSMsg + = +pSMsg +; + +868 +ÇtSAlgMsgFldPosFdS·û + + +869 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +871 +pTmpSMsg + +ð +pos +; + +872 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +875 +pSMsg + = + +876 +ÇtSAlgModifyPaylßdAddrPÜt + + +877 ( +pSMsg +, & +pSMsgEnd +, +addrPÜtL +, + +878 & +diffL +, 0, +modRtýPÜt +, + +879 +PORT_STRING +); + +881 * +diffModSL + +ð +diffL +; + +882 +sdpMsgL + +ð +diffL +; + +887 } ià(( +msgTy³ + =ð +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +888 || ( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +890 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +891 =ð +TRUE +) { + +893 +pSMsg + += + +894 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +895 +SIP_ALG_VIA_FIELD_IPADDR +); + +896 +pTmpSMsg + = +pSMsg +; + +898 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +899 +SIP_ALG_SEMICOLON +, & +pos +, + +901 +pTmpSMsg + +ð +pos +; + +902 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +904 + `´tf +("sip_alg_process; No valid VIA field\n"); + +905 +NULL +; + +908 +pSMsg + = + +909 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +910 +addrPÜtL +, + +911 & +diffL +, +modIp +, + +912 +modL4PÜt +, + +913 +ADDRESS_PORT_STRING +); + +914 * +diffModSL + = +diffL +; + +917 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +918 =ð +TRUE +) { + +919 +pSMsg + +ð +pos +; + +921 +pTmpSMsg + = +pSMsg +; + +923 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +924 & +pos +, 0); + +925 +pTmpSMsg + +ð +pos +; + +928 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +930 +pSMsg + +ð +pos + + 1; + +932 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +934 +´tf + + +936 +NULL +; + +939 +pSMsg + = + +940 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +941 +addrPÜtL +, + +942 & +diffL +, +modIp +, + +943 +modL4PÜt +, + +944 +ADDRESS_PORT_STRING +); + +946 * +diffModSL + +ð +diffL +; + +950 ià( +ÇtSAlgMsgFldPos + + +951 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +952 +pSMsg + +ð +pos +; + +954 +pTmpSMsg + = +pSMsg +; + +956 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +957 +SIP_ALG_CRLF +, & +pos +, + +959 +pTmpSMsg + +ð +pos +; + +962 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +964 +pSMsg + +ð +pos + + 1; + +965 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +967 + `´tf +("sip_alg_process; " + +969 +NULL +; + +973 +pSMsg + = + +974 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +975 +addrPÜtL +, + +976 & +diffL +, +modIp +, 0, + +977 +ADDRESS_PORT_STRING +); + +979 * +diffModSL + +ð +diffL +; + +981 } ià( +pkt_deùiÚ + =ð +PRIVATE + + +982 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +986 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +987 =ð +TRUE +) { + +989 +pSMsg + += + +990 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +991 +SIP_ALG_VIA_FIELD_IPADDR +); + +992 +pTmpSMsg + = +pSMsg +; + +994 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +995 +SIP_ALG_SEMICOLON +, & +pos +, + +997 +pTmpSMsg + +ð +pos +; + +998 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1000 + `´tf +("sip_alg_process; No valid VIA field\n"); + +1001 +NULL +; + +1004 +pSMsg + = + +1005 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1006 +addrPÜtL +, + +1007 & +diffL +, +modIp +, 0, + +1008 +ADDRESS_PORT_STRING +); + +1009 * +diffModSL + = +diffL +; + +1012 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1013 =ð +TRUE +) { + +1014 +pSMsg + +ð +pos +; + +1016 +pTmpSMsg + = +pSMsg +; + +1018 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1019 & +pos +, 0); + +1020 +pTmpSMsg + +ð +pos +; + +1021 +diffL + = +pTmpSMsg + - +pSMsg +; + +1023 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1025 +pSMsg + +ð +pos + + 1; + +1027 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1029 +´tf + + +1031 +NULL +; + +1034 +pSMsg + = + +1035 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1036 +addrPÜtL +, + +1037 & +diffL +, +modIp +, + +1038 +modL4PÜt +, + +1039 +ADDRESS_PORT_STRING +); + +1041 * +diffModSL + +ð +diffL +; + +1045 ià( +ÇtSAlgMsgFldPos + + +1046 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1047 +pSMsg + +ð +pos +; + +1049 +pTmpSMsg + = +pSMsg +; + +1051 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1052 +SIP_ALG_CRLF +, & +pos +, + +1054 +pTmpSMsg + +ð +pos +; + +1055 +diffL + = +pTmpSMsg + - +pSMsg +; + +1057 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1059 +pSMsg + +ð +pos + + 1; + +1060 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1062 + `´tf +("sip_alg_process; " + +1064 +NULL +; + +1068 +pSMsg + = + +1069 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1070 +addrPÜtL +, + +1071 & +diffL +, +modIp +, 0, + +1072 +ADDRESS_PORT_STRING +); + +1074 * +diffModSL + +ð +diffL +; + +1077 ià( +ÇtSAlgMsgFldPos + + +1078 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1079 +pSMsg + +ð +pos +; + +1081 +pTmpSMsg + = +pSMsg +; + +1082 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1083 +SIP_ALG_CRLF +, & +pos +, 0); + +1084 +pTmpSMsg + +ð +pos +; + +1086 +æag + = 0; + +1087 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, + +1088 & +pos +, 0è=ð +FALSE +) + +1089 +æag + = 1; + +1091 ià( +æag +) + +1092 +SMsgAdvªû2 +; + +1093 +pSMsg + +ð +pos + + 1; + +1094 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1097 + `´tf +("sip_alg_process; " + +1099 +NULL +; + +1102 +pSMsg + = + +1103 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1104 +addrPÜtL +, + +1105 & +diffL +, +modIp +, + +1106 +modL4PÜt +, + +1107 +ADDRESS_PORT_STRING +); + +1109 * +diffModSL + +ð +diffL +; + +1110 } ià( +pkt_deùiÚ + =ð +PUBLIC + + +1111 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1118 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1119 +pSMsg + +ð +pos + + 1; + +1120 +pTmpSMsg + = +pSMsg +; + +1121 + `ÇtSAlgMsgFldPosFdS·û +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1122 & +pos +, 0); + +1123 +pTmpSMsg + +ð +pos +; + +1124 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1126 +pSMsg + = + +1127 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1128 +addrPÜtL +, + +1129 & +diffL +, +modIp +, + +1130 +modL4PÜt +, + +1131 +ADDRESS_PORT_STRING +); + +1132 * +diffModSL + +ð +diffL +; + +1136 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1137 =ð +TRUE +) { + +1138 +pSMsg + +ð +pos +; + +1139 +pTmpSMsg + = +pSMsg +; + +1140 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1141 & +pos +, 0); + +1142 +pTmpSMsg + +ð +pos +; + +1143 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1145 +pSMsg + +ð +pos + + 1; + +1146 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1147 +pSMsg + = + +1148 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1149 & +pSMsgEnd +, + +1150 +addrPÜtL +, + +1151 & +diffL +, + +1152 +modIp +, + +1153 +modL4PÜt +, + +1154 +ADDRESS_PORT_STRING +); + +1155 * +diffModSL + +ð +diffL +; + +1160 ià( +ÇtSAlgMsgFldPos + + +1161 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1162 +pSMsg + +ð +pos +; + +1164 +pTmpSMsg + = +pSMsg +; + +1166 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1167 +SIP_ALG_CRLF +, & +pos +, + +1169 +pTmpSMsg + +ð +pos +; + +1172 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1174 +pSMsg + +ð +pos + + 1; + +1175 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1177 + `´tf +("sip_alg_process; " + +1179 +NULL +; + +1183 +pSMsg + = + +1184 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1185 +addrPÜtL +, + +1186 & +diffL +, +modIp +, 0, + +1187 +ADDRESS_PORT_STRING +); + +1189 * +diffModSL + +ð +diffL +; + +1190 } ià( +pkt_deùiÚ + =ð +PRIVATE + + +1191 && ( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1197 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1198 =ð +TRUE +) { + +1199 +pSMsg + +ð +pos +; + +1201 +pTmpSMsg + = +pSMsg +; + +1203 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1204 & +pos +, 0); + +1205 +pTmpSMsg + +ð +pos +; + +1206 +diffL + = +pTmpSMsg + - +pSMsg +; + +1208 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1210 +pSMsg + +ð +pos + + 1; + +1212 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1214 +´tf + + +1216 +NULL +; + +1219 +pSMsg + = + +1220 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1221 +addrPÜtL +, + +1222 & +diffL +, +modIp +, + +1223 +modL4PÜt +, + +1224 +ADDRESS_PORT_STRING +); + +1226 * +diffModSL + = +diffL +; + +1230 ià( +ÇtSAlgMsgFldPos + + +1231 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1232 +pSMsg + +ð +pos +; + +1234 +pTmpSMsg + = +pSMsg +; + +1235 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1236 +SIP_ALG_CRLF +, & +pos +, + +1238 +pTmpSMsg + +ð +pos +; + +1240 +æag + = 0; + +1241 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, + +1242 & +pos +, 0è=ð +FALSE +) + +1243 +æag + = 1; + +1245 ià( +æag +) + +1246 +SMsgAdvªû2 +; + +1247 +pSMsg + +ð +pos + + 1; + +1248 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1250 + `´tf +("sip_alg_process; " + +1252 +NULL +; + +1255 +pSMsg + = + +1256 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1257 +addrPÜtL +, + +1258 & +diffL +, +modIp +, + +1259 +modL4PÜt +, + +1260 +ADDRESS_PORT_STRING +); + +1262 * +diffModSL + +ð +diffL +; + +1263 } ià( +pkt_deùiÚ + =ð +PUBLIC + + +1264 && ( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +)) { + +1268 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1269 =ð +TRUE +) { + +1271 +pSMsg + += + +1272 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +1273 +SIP_ALG_VIA_FIELD_IPADDR +); + +1274 +pTmpSMsg + = +pSMsg +; + +1276 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +1277 +SIP_ALG_SEMICOLON +, & +pos +, + +1279 +pTmpSMsg + +ð +pos +; + +1280 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1282 + `´tf +("sip_alg_process; No valid VIA field\n"); + +1283 +NULL +; + +1286 +pSMsg + = + +1287 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1288 +addrPÜtL +, + +1289 & +diffL +, +modIp +, 0, + +1290 +ADDRESS_PORT_STRING +); + +1291 * +diffModSL + = +diffL +; + +1294 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1295 =ð +TRUE +) { + +1296 +pSMsg + +ð +pos +; + +1298 +pTmpSMsg + = +pSMsg +; + +1300 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1301 & +pos +, 0); + +1302 +pTmpSMsg + +ð +pos +; + +1303 +diffL + = +pTmpSMsg + - +pSMsg +; + +1305 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1307 +pSMsg + +ð +pos + + 1; + +1309 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1311 +´tf + + +1313 +NULL +; + +1316 +pSMsg + = + +1317 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1318 +addrPÜtL +, + +1319 & +diffL +, +modIp +, + +1320 +modL4PÜt +, + +1321 +ADDRESS_PORT_STRING +); + +1323 * +diffModSL + +ð +diffL +; + +1326 ià( +ÇtSAlgMsgFldPos + + +1327 ( +pSMsg +, +SIP_ALG_CALLID +, & +pos +, 0è=ð +TRUE +) { + +1328 +pSMsg + +ð +pos +; + +1330 +pTmpSMsg + = +pSMsg +; + +1331 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1332 +SIP_ALG_CRLF +, & +pos +, + +1334 +pTmpSMsg + +ð +pos +; + +1335 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1337 +pSMsg + +ð +pos + + 1; + +1338 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1340 +pSMsg + = + +1341 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1342 & +pSMsgEnd +, + +1343 +addrPÜtL +, + +1344 & +diffL +, + +1345 +modIp +, 0, + +1346 +ADDRESS_PORT_STRING +); + +1348 * +diffModSL + +ð +diffL +; + +1351 + `´tf +("sip_alg_process; " + +1353 +NULL +; + +1357 } ià( +ÿÎ_deùiÚ + =ð +SIP_CALL_INCOMING +) { + +1358 ià(( +msgTy³ + =ð +SIP_ALG_INVITE_MSGTYPE +) + +1359 || ( +msgTy³ + =ð +SIP_ALG_ACK_MSGTYPE +)) { + +1362 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0) + +1363 =ð +TRUE +) { + +1364 +pSMsg + +ð +pos + + 1; + +1365 +pTmpSMsg + = +pSMsg +; + +1366 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_SIP +, + +1367 & +pos +, 0); + +1368 +pTmpSMsg + +ð( +pos + - 1); + +1370 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1372 +´tf + + +1374 +__LINE__ +); + +1375 +NULL +; + +1378 +pSMsg + = + +1379 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1380 +addrPÜtL +, + +1381 & +diffL +, +modIp +, + +1382 +modL4PÜt +, + +1383 +ADDRESS_PORT_STRING +); + +1384 * +diffModSL + +ð +diffL +; + +1388 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1389 =ð +TRUE +) { + +1390 +pSMsg + +ð +pos +; + +1391 +pTmpSMsg + = +pSMsg +; + +1392 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1393 & +pos +, 0); + +1394 +pTmpSMsg + +ð +pos +; + +1395 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1397 +pSMsg + +ð +pos + + 1; + +1398 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1400 + `´tf +("sip_alg_processing; " + +1402 +__LINE__ +); + +1403 +NULL +; + +1406 +pSMsg + = + +1407 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1408 +addrPÜtL +, + +1409 & +diffL +, +modIp +, + +1410 +modL4PÜt +, + +1411 +ADDRESS_PORT_STRING +); + +1412 * +diffModSL + +ð +diffL +; + +1414 } ià(( +msgTy³ + =ð +SIP_ALG_TRYING_RINGING_MSGTYPE +) + +1415 || ( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +)) { + +1418 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1419 =ð +TRUE +) { + +1420 +pSMsg + +ð +pos +; + +1421 +pTmpSMsg + = +pSMsg +; + +1422 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1423 & +pos +, 0); + +1424 +pTmpSMsg + +ð +pos +; + +1425 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1427 +pSMsg + +ð +pos + + 1; + +1428 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1429 +pSMsg + = + +1430 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1431 & +pSMsgEnd +, + +1432 +addrPÜtL +, + +1433 & +diffL +, + +1434 +modIp +, + +1435 +modL4PÜt +, + +1436 +ADDRESS_PORT_STRING +); + +1437 * +diffModSL + +ð +diffL +; + +1440 ià( +msgTy³ + =ð +SIP_ALG_200_OK_INVITE_MSGTYPE +) { + +1444 ià( +ÇtSAlgMsgFldPos + + +1445 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, + +1446 0è=ð +TRUE +) { + +1447 +pSMsg + +ð +pos +; + +1449 +pTmpSMsg + = +pSMsg +; + +1450 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +1451 +SIP_ALG_SEMICOLON +, + +1452 & +pos +, 0); + +1453 +pTmpSMsg + +ð +pos +; + +1455 +æag + = 0; + +1456 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, + +1457 +SIP_ALG_AT +, & +pos +, + +1458 30è=ð +FALSE +) + +1459 +æag + = 1; + +1461 ià( +æag +) + +1462 +SMsgAdvªû +; + +1464 +pSMsg + +ð +pos + + 1; + +1465 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1467 + `´tf +("sip_alg_process; " + +1469 +NULL +; + +1472 +pSMsg + = + +1473 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1474 & +pSMsgEnd +, + +1475 +addrPÜtL +, + +1476 & +diffL +, + +1477 +modIp +, + +1478 +modL4PÜt +, + +1479 +ADDRESS_PORT_STRING +); + +1481 * +diffModSL + +ð +diffL +; + +1482 +SMsgAdvªû +: + +1484 +pTmpSMsg + = +pSMsg +; + +1485 ià( +ÇtSAlgMsgFldPos + + +1486 ( +pSMsg +, +SIP_ALG_REMOTE_PARTY_ID +, & +pos +, + +1487 0è=ð +TRUE +) { + +1488 +pSMsg + +ð +pos + + + +1489 + `¡¾ +( +SIP_ALG_REMOTE_PARTY_ID +); + +1490 +pTmpSMsg + = +pSMsg +; + +1491 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +1492 +SIP_ALG_GREAT +, + +1493 & +pos +, 0); + +1494 +pTmpSMsg + +ð +pos +; + +1495 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +1496 +SIP_ALG_AT +, & +pos +, + +1498 +pSMsg + +ð +pos + + 1; + +1499 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1501 +pSMsg + = + +1502 +ÇtSAlgModifyPaylßdAddrPÜt + + +1503 ( +pSMsg +, & +pSMsgEnd +, +addrPÜtL +, + +1504 & +diffL +, +modIp +, +modL4PÜt +, + +1505 +ADDRESS_PORT_STRING +); + +1506 +diffModSL + +ð +diffL +; + +1508 + `´tf +("sip_alg_process: " + +1510 +pSMsg + = +pTmpSMsg +; + +1514 ià( +ÇtSAlgMsgFldPos + + +1515 ( +pSMsg +, +SIP_ALG_OWNER +, & +pos +, + +1516 0è=ð +TRUE +) { + +1517 +pSMsg + +ð +pos +; + +1519 +pTmpSMsg + = +pSMsg +; + +1521 + `ÇtSAlgMsgFldPosFdC¾f +( +pSMsg +, + +1522 +SIP_ALG_CRLF +, + +1523 & +pos +, + +1525 +pTmpSMsg + +ð +pos +; + +1528 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +1529 +SIP_ALG_IPV4 +, & +pos +, + +1531 +pSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_IPV4 +)); + +1532 + `SKIP_SPACES +( +pSMsg +); + +1534 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1536 + `´tf +("sip_alg_processing: " + +1538 +NULL +; + +1541 +pSMsg + = + +1542 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1543 & +pSMsgEnd +, + +1544 +addrPÜtL +, + +1545 & +diffL +, + +1546 +modIp +, 0, + +1547 +ADDRESS_PORT_STRING +); + +1549 * +diffModSL + +ð +diffL +; + +1550 +sdpMsgL + +ð +diffL +; + +1554 ià( +ÇtSAlgMsgFldPos + + +1555 ( +pSMsg +, +SIP_ALG_CONN +, & +pos +, + +1556 0è=ð +TRUE +) { + +1557 +pSMsg + +ð +pos +; + +1558 +pTmpSMsg + = +pSMsg +; + +1560 + `ÇtSAlgMsgFldPosFdC¾f +( +pSMsg +, + +1561 +SIP_ALG_CRLF +, + +1562 & +pos +, + +1564 +pTmpSMsg + +ð +pos +; + +1567 + `ÇtSAlgMsgFldPos +( +pSMsg +, + +1568 +SIP_ALG_IPV4 +, & +pos +, + +1570 +pSMsg + +ð( +pos + + + `¡¾ +( +SIP_ALG_IPV4 +)); + +1571 + `SKIP_SPACES +( +pSMsg +); + +1573 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1575 + `´tf +("sip_alg_processing: " + +1577 +NULL +; + +1580 +pSMsg + = + +1581 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1582 & +pSMsgEnd +, + +1583 +addrPÜtL +, + +1584 & +diffL +, + +1585 +modIp +, 0, + +1586 +ADDRESS_PORT_STRING +); + +1588 * +diffModSL + +ð +diffL +; + +1589 +sdpMsgL + +ð +diffL +; + +1593 ià( +ÇtSAlgMsgFldPos + + +1594 ( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, + +1595 0è=ð +TRUE +) { + +1596 +pSMsg + += + +1597 ( +pos + + + `¡¾ +( +SIP_ALG_AUDIO +)); + +1598 + `SKIP_SPACES +( +pSMsg +); + +1599 +pTmpSMsg + = +pSMsg +; + +1600 +ÇtSAlgMsgFldPosFdS·û + + +1601 ( +pTmpSMsg +, +SIP_ALG_SPACE +, & +pos +, + +1603 +pTmpSMsg + +ð +pos +; + +1604 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1608 +pSMsg + = + +1609 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1610 & +pSMsgEnd +, + +1611 +addrPÜtL +, + +1612 & +diffL +, 0, + +1613 +modRPÜt +, + +1614 +PORT_STRING +); + +1616 * +diffModSL + +ð +diffL +; + +1617 +sdpMsgL + +ð +diffL +; + +1620 } ià( +pkt_deùiÚ + =ð +PUBLIC + + +1621 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1625 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, 0); + +1626 +pSMsg + +ð +pos + + 1; + +1627 +pTmpSMsg + = +pSMsg +; + +1628 + `ÇtSAlgMsgFldPosFdS·û +( +pTmpSMsg +, +SIP_ALG_SPACE +, + +1629 & +pos +, 0); + +1630 +pTmpSMsg + +ð +pos +; + +1631 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1633 +pSMsg + = + +1634 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1635 +addrPÜtL +, + +1636 & +diffL +, +modIp +, + +1637 +modL4PÜt +, + +1638 +ADDRESS_PORT_STRING +); + +1639 * +diffModSL + +ð +diffL +; + +1643 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1644 =ð +TRUE +) { + +1645 +pSMsg + +ð +pos +; + +1646 +pTmpSMsg + = +pSMsg +; + +1647 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1648 & +pos +, 0); + +1649 +pTmpSMsg + +ð +pos +; + +1650 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1652 +pSMsg + +ð +pos + + 1; + +1653 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1654 +pSMsg + = + +1655 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, + +1656 & +pSMsgEnd +, + +1657 +addrPÜtL +, + +1658 & +diffL +, + +1659 +modIp +, + +1660 +modL4PÜt +, + +1661 +ADDRESS_PORT_STRING +); + +1662 * +diffModSL + +ð +diffL +; + +1665 +´tf + + +1667 +NULL +; + +1669 } ià( +pkt_deùiÚ + =ð +PRIVATE + + +1670 && +msgTy³ + =ð +SIP_ALG_BYE_MSGTYPE +) { + +1674 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1675 =ð +TRUE +) { + +1677 +pSMsg + += + +1678 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +1679 +SIP_ALG_VIA_FIELD_IPADDR +); + +1680 +pTmpSMsg + = +pSMsg +; + +1682 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +1683 +SIP_ALG_SEMICOLON +, & +pos +, + +1685 +pTmpSMsg + +ð +pos +; + +1686 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1688 + `´tf +("sip_alg_process; No valid VIA field\n"); + +1689 +NULL +; + +1692 +pSMsg + = + +1693 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1694 +addrPÜtL +, + +1695 & +diffL +, +modIp +, 0, + +1696 +ADDRESS_PORT_STRING +); + +1697 * +diffModSL + = +diffL +; + +1700 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_FROM +, & +pos +, 0) + +1701 =ð +TRUE +) { + +1702 +pSMsg + +ð +pos +; + +1704 +pTmpSMsg + = +pSMsg +; + +1706 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1707 & +pos +, 0); + +1708 +pTmpSMsg + +ð +pos +; + +1709 +diffL + = +pTmpSMsg + - +pSMsg +; + +1711 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1713 +pSMsg + +ð +pos + + 1; + +1715 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1717 +´tf + + +1719 +NULL +; + +1722 +pSMsg + = + +1723 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1724 +addrPÜtL +, + +1725 & +diffL +, +modIp +, + +1726 +modL4PÜt +, + +1727 +ADDRESS_PORT_STRING +); + +1729 * +diffModSL + +ð +diffL +; + +1731 } ià( +pkt_deùiÚ + =ð +PRIVATE + + +1732 && +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1736 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_VIA +, & +pos +, 0) + +1737 =ð +TRUE +) { + +1739 +pSMsg + += + +1740 ( +pos + + + `¡¾ +( +SIP_ALG_VIA +) + + +1741 +SIP_ALG_VIA_FIELD_IPADDR +); + +1742 +pTmpSMsg + = +pSMsg +; + +1744 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, + +1745 +SIP_ALG_SEMICOLON +, & +pos +, + +1747 +pTmpSMsg + +ð +pos +; + +1748 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1750 + `´tf +("sip_alg_process; No valid VIA field\n"); + +1751 +NULL +; + +1754 +pSMsg + = + +1755 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1756 +addrPÜtL +, + +1757 & +diffL +, +modIp +, 0, + +1758 +ADDRESS_PORT_STRING +); + +1759 * +diffModSL + = +diffL +; + +1762 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, + +1763 +SIP_ALG_FROM +, & +pos +, 0è=ð +TRUE +) { + +1764 +pSMsg + +ð +pos +; + +1766 +pTmpSMsg + = +pSMsg +; + +1768 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1769 & +pos +, 0); + +1770 +pTmpSMsg + +ð +pos +; + +1771 +diffL + = +pTmpSMsg + - +pSMsg +; + +1773 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1775 +pSMsg + +ð +pos + + 1; + +1777 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1779 +´tf + + +1781 +NULL +; + +1784 +pSMsg + = + +1785 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1786 +addrPÜtL +, + +1787 & +diffL +, +modIp +, + +1788 +modL4PÜt +, + +1789 +ADDRESS_PORT_STRING +); + +1791 * +diffModSL + +ð +diffL +; + +1793 } ià( +pkt_deùiÚ + =ð +PUBLIC + + +1794 && +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1796 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_TO +, & +pos +, 0) + +1797 =ð +TRUE +) { + +1798 +pSMsg + +ð +pos +; + +1800 +pTmpSMsg + = +pSMsg +; + +1802 + `ÇtSAlgMsgFldPos +( +pTmpSMsg +, +SIP_ALG_GREAT +, + +1803 & +pos +, 0); + +1804 +pTmpSMsg + +ð +pos +; + +1805 +diffL + = +pTmpSMsg + - +pSMsg +; + +1807 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1809 +pSMsg + +ð +pos + + 1; + +1811 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1813 +´tf + + +1815 +NULL +; + +1818 +pSMsg + = + `ÇtSAlgModifyPaylßdAddrPÜt +(pSipMsg, + +1819 & +pSMsgEnd +, + +1820 +addrPÜtL +, + +1821 & +diffL +, +modIp +, + +1822 +modL4PÜt +, + +1823 +ADDRESS_PORT_STRING +); + +1825 * +diffModSL + = +diffL +; + +1829 ià( +ÇtSAlgMsgFldPos + + +1830 ( +pSMsg +, +SIP_ALG_CONTACT +, & +pos +, 0è=ð +TRUE +) { + +1831 +pSMsg + +ð +pos +; + +1833 +pTmpSMsg + = +pSMsg +; + +1834 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1835 +SIP_ALG_CRLF +, & +pos +, + +1837 +pTmpSMsg + +ð +pos +; + +1839 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AT +, & +pos +, + +1841 +pSMsg + +ð +pos + + 1; + +1842 +addrPÜtL + = +pTmpSMsg + - +pSMsg +; + +1844 + `´tf +("sip_alg_process; " + +1846 +NULL +; + +1849 +pSMsg + = + +1850 + `ÇtSAlgModifyPaylßdAddrPÜt +( +pSMsg +, & +pSMsgEnd +, + +1851 +addrPÜtL +, + +1852 & +diffL +, +modIp +, + +1853 +modL4PÜt +, + +1854 +ADDRESS_PORT_STRING +); + +1856 * +diffModSL + +ð +diffL +; + +1860 +SMsgAdvªû2 +: + +1862 ià( +ÿÎ_deùiÚ + =ð +SIP_CALL_OUTGOING +) { + +1864 ià( +pkt_deùiÚ + =ð +PRIVATE +) { + +1865 ià( +msgTy³ + =ð +SIP_ALG_200_OK_BYE_MSGTYPE +) { + +1866 ià( +»move_s_®g_y + + +1867 ( + `¹e_bsw32 +( +_h +-> +¤c_addr +), + +1868 + `¹e_bsw16 +( +udp_h +-> +¤c_pÜt +)) < 0) + +1869 + `´tf +("removesipalgentry failed: " + +1871 +_h +-> +¤c_addr +, +udp_h +-> +¤c_pÜt +); + +1875 ià( +pkt_deù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 +pSMsg + = +pS¹SMsg +; + +1888 * +tmpSdpL + = +NULL +; + +1890 +sdpMsgL + +ð +sdpD©aL +; + +1891 +tmpSdpL + = + `ß +( +sdpMsgL +); + +1892 +tmpSL + = + `¡¾ +( +tmpSdpL +); + +1895 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0) + +1896 =ð +TRUE +) { + +1897 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1898 + `SKIP_SPACES +( +pSMsg +); + +1899 +pTmpSMsg + = +pSMsg +; + +1900 + `ÇtSAlgMsgFldPosFdC¾f +( +pTmpSMsg +, + +1901 +SIP_ALG_DOUBLE_CRLF +, & +pos +, + +1903 +pTmpSMsg + +ð +pos +; + +1904 + `SKIP_SPACES +( +pSMsg +); + +1905 +diffL + = +pTmpSMsg + - +pSMsg +; + +1906 + `ÇtSAlgAdju¡Msg +( +pSMsg +, & +pSMsgEnd +, +tmpSL +, + +1907 +diffL +); + +1908 + `¡ºýy +( +pSMsg +, +tmpSdpL +, +tmpSL +); + +1910 + `´tf +("sip_alg_process: Invalid Content Length\n"); + +1911 +NULL +; + +1915 +sAlgProûssEx +: + +1917 +pS¹SMsg +; + +1918 + } +} + +1924 + $ÇtSAlgGAudioPÜts +( +¹e_mbuf + * +pkt +, +ut16_t + * +¹pPÜt +, + +1925 +ut16_t + * +¹ýPÜt +) + +1927 +v4_hdr + * +_h +; + +1928 +h_hdr + * +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, ether_hdr *); + +1929 +udp_hdr + * +udp_h +; + +1930 * +pSMsg +, * +pEndP +; + +1931 +pos +, +sdpMsgL +; + +1933 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1934 +udp_h + = ( +udp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1935 +pSMsg + = ((*) +udp_h + + ( +udp_hdr +)); + +1938 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTYPE +, & +pos +, 0è=ð +FALSE +) + +1941 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTYPE +)); + +1942 + `SKIP_SPACES +( +pSMsg +); + +1945 ià(! + `IS_STRING_SAME +( +pSMsg +, +SIP_ALG_APPSDP +)) { + +1946 + `´tf +("sip_alg_getAudioPort Invalid Contentype\n"); + +1951 + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_CONTENT_LEN +, & +pos +, 0); + +1952 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_CONTENT_LEN +)); + +1953 + `SKIP_SPACES +( +pSMsg +); + +1954 +sdpMsgL + = + `¡¹Þ +( +pSMsg +, & +pEndP +, 10); + +1955 ià(! +sdpMsgL +) { + +1956 + `´tf +("sipAlggetAudioport - sdpMsgLen is 0\n"); + +1961 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_AUDIO +, & +pos +, 0) == + +1962 +TRUE +) { + +1963 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_AUDIO +)); + +1964 + `SKIP_SPACES +( +pSMsg +); + +1965 * +¹pPÜt + = + `¡¹Þ +( +pSMsg +, & +pEndP +, 10); + +1967 * +¹pPÜt + = 0; + +1970 ià( + `ÇtSAlgMsgFldPos +( +pSMsg +, +SIP_ALG_RTCP +, & +pos +, 0) == + +1971 +TRUE +) { + +1972 +pSMsg + +ð( +pos + + + `TAG_TO_DATAPOS +( +SIP_ALG_RTCP +)); + +1973 + `SKIP_SPACES +( +pSMsg +); + +1974 * +¹ýPÜt + = + `¡¹Þ +( +pSMsg +, & +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 + $ÇtSAlgMsgFldPosFdS·û +(* +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 + $ÇtSAlgMsgFldPosFdC¾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 + $ÇtSAlgMsgFldPos +(* +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 * + $gSC®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 * + $ÇtSAlgModifyPaylßdAddrPÜt +( + +2172 * +pSMsg +, ** +pSMsgEnd +, + +2173 +ut32_t + +ÞdSL +, ut32_* +diffL +, + +2174 +ut32_t + +modIp +, +ut16_t + +modPÜt +, ut32_ +ty³ +) + +2176 +add½Üt +[ +MAX_ADDR_PORT_SIZE +]; + +2177 +_addr + +Addr +; + +2178 +ut32_t + +ÃwSL + = 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 + `¥rtf +( +add½Üt +, "%s:%s", +tmpAddr +, +tmpPÜt +); + +2192 + `¥rtf +( +add½Üt +, "%s", +tmpAddr +); + +2194 +ÃwSL + = + `¡¾ +( +add½Üt +); + +2196 ià( + `abs +( +ÃwSL + - +ÞdSL +) > 0) { + +2201 + `ÇtSAlgAdju¡Msg +( +pSMsg +, +pSMsgEnd +, + +2202 +ÃwSL +, +ÞdSL +); + +2206 + `¡ºýy +( +pSMsg +, +add½Üt +, + `¡¾ +(addrport)); + +2207 } ià( +ty³ + =ð +PORT_STRING +) { + +2208 if( +tmpPÜt +) + +2209 +ÃwSL + = + `¡¾ +( +tmpPÜt +); + +2211 ià( + `abs +( +ÃwSL + - +ÞdSL +) > 0) { + +2216 + `ÇtSAlgAdju¡Msg +( +pSMsg +, +pSMsgEnd +, + +2217 +ÃwSL +, +ÞdSL +); + +2221 if( +tmpPÜt +) + +2222 + `¡ºýy +( +pSMsg +, +tmpPÜt +, + `¡¾ +(tmpPort)); + +2225 ià( +ÃwSL + > +ÞdSL +) + +2226 * +diffL + = +ÃwSL + - +ÞdSL +; + +2228 +pSMsg +; + +2229 + } +} + +2231 * + $ÇtSAlgAdju¡Msg +(* +pSMsg +, ** +pSMsgEnd +, + +2232 +ut32_t + +ÃwSL +, ut32_ +ÞdSL +) + +2234 +MsgBufãr +[ +MAX_SIP_UDP_MSG_SIZE +]; + +2236 ià( +ÃwSL + > +ÞdSL +) { + +2237 +pSMsg + +ð +ÞdSL +; + +2238 +msgL + = * +pSMsgEnd + - +pSMsg +; + +2240 + `¡ºýy +( +MsgBufãr +, +pSMsg +, +msgL +); + +2241 +pSMsg + +ð( +ÃwSL + - +ÞdSL +); + +2242 + `¡ºýy +( +pSMsg +, +MsgBufãr +, +msgL +); + +2244 ià( +ALG_DEBUG +) + +2245 + `´tf +("ÇtSAlgAdju¡Msg: %u\n", +msgL +); + +2248 * +pSMsgEnd + +ð( +ÃwSL + - +ÞdSL +); + +2251 + `mem£t +( +pSMsg +, ' ', +ÞdSL +); + +2254 +pSMsg +; + +2255 + } +} + + @VIL/alg/lib_sip_alg.h + +17 #iâdeà +__INCLUDE_LIB_ALG_H__ + + +18 + #__INCLUDE_LIB_ALG_H__ + + + ) + +20 + ~"¹e_h.h +" + +22 +ut16_t + + gs_£ssiÚ_numb +; + +23 + #IS_STRING_SAME +( +pS +, +¡rId +è( + `bcmp +(ÕS), sId, + `¡¾ +(¡rId)è=ð0) + + ) + +24 + #TAG_TO_DATAPOS +( +¡r +è( + `¡¾ +(¡rè+ 1) + + ) + +25 + #SKIP_SPACES +( +pS +) \ + +27 *(*)( +pS +) == ' ') \ + +28 (*)( +pS +)++; \ + +29 } + + ) + +31 + epkt_d + { + mPRIVATE +, + mPUBLIC +}; + +34 + es_®g_ÿÎ_deù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 +ut32_t + + m_add»ss +; + +56 +ut16_t + + ml4pÜt +; + +57 +ut8_t + + mfËr1 +; + +58 +ut8_t + + mfËr2 +; + +65 + ss_®g_bË_y + { + +66 +ut32_t + + m_add»ss +; + +71 +ut16_t + + ml4pÜt +; + +72 +ut8_t + + ms_®g_ÿÎ_deùiÚ +; + +74 +ut8_t + + ms_®g_ÿÎ_id +[100]; + +75 +ut8_t + + ml4pÜt_ty³ +; + +76 +ut8_t + + mfËr1 +; + +77 +ut16_t + + mfËr2 +; + +78 +ut32_t + + mfËr3 +; + +79 } + g__¹e_ÿche_®igÃd +; + +94 +lib_s_®g_ +(); + +117 +s_®g_dpi +( +¹e_mbuf + * +pkt +, +pkt_d + +pkt_deùiÚ +, + +118 +ut32_t + +modIp +, +ut16_t + +modL4PÜt +, + +119 +ut32_t + +pubIp +, +ut16_t + +pubL4PÜt +, + +120 +ut16_t + +modRPÜt +, ut16_ +modRtýPÜt +); + +133 +ÇtSAlgGAudioPÜts +( + +134 +¹e_mbuf + * +pkt +, + +135 +ut16_t + * +¹pPÜt +, + +136 +ut16_t + * +¹ý_pÜt +); + +137 +ÇtSAlgMsgFldPos +( + +138 * +pD©a +, + +139 cÚ¡ * +pIdS +, + +140 * +pos +, + +141 +£¬chL +); + +142 +ÇtSAlgMsgFldPosFdC¾f +( + +143 * +pD©a +, + +144 cÚ¡ * +pIdS +, + +145 * +pPos +, + +146 +£¬chL +); + +147 +ÇtSAlgMsgFldPosFdS·û +( + +148 * +pD©a +, + +149 cÚ¡ * +pIdS +, + +150 * +pPos +, + +151 +£¬chL +); + +152 +»move_s_®g_y +( + +153 +ut32_t + +addr +, + +154 +ut16_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_ackg.h +" + +25 + ~"¹e_ù_tý.h +" + +27 + #CNXN_TRX_DEBUG + 0 + + ) + +28 + #TESTING_TIMERS + 0 + + ) + +29 + #RTE_CT_TIMER_EXPIRED_DUMP + 0 + + ) + +31 + #META_DATA_OFFSET + 128 + + ) + +32 + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +33 + #ETH_HDR_SIZE + 14 + + ) + +34 + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +35 + #PROTOCOL_START + ( +IP_START + + 9) + + ) + +36 + #SRC_ADDR_START + ( +IP_START + + 12) + + ) + +37 + #TCP_START + ( +IP_START + + 20) + + ) + +40 + #PROTOCOL_START_IPV6 + ( +IP_START + + 6) + + ) + +41 + #SRC_ADDR_START_IPV6 + ( +IP_START + + 8) + + ) + +42 + #TCP_START_IPV6 + ( +IP_START + + 40) + + ) + +44 + #TCP_PROTOCOL + 6 + + ) + +45 + #UDP_PROTOCOL + 17 + + ) + +46 + #TCP_FW_IPV4_KEY_SIZE + 16 + + ) + +48 + #TCP_FW_IPV6_KEY_SIZE + 40 + + ) + +50 + #IPv4_HEADER_SIZE + 20 + + ) + +51 + #IPv6_HEADER_SIZE + 40 + + ) + +53 + #IP_VERSION_4 + 4 + + ) + +54 + #IP_VERSION_6 + 6 + + ) + +57 +¹e_ù_úxn_ack_b©ch_lookup_basic_ty³ +( + +58 +¹e_ù_úxn_ack + * +ù +, + +59 +¹e_mbuf + ** +pkts +, + +60 +ut64_t + * +pkts_mask +, + +61 +ut64_t + +no_Ãw_úxn_mask +, + +62 +ut64_t + * +»¶y_pkt_mask +, + +63 +ut64_t + * +hijack_mask +, + +64 +ut8_t + +_hdr_size_bys +); + +74 + $¹e_ù_úxn_´t_pkt +( +¹e_mbuf + * +pkt +, +ut8_t + +ty³ +) + +76 +i +; + +77 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +IP_START +); + +79 + `´tf +("\n"); + +80 + `´tf +("IPnd TCP/UDP headers:\n"); + +82 ià( +ty³ + =ð +IP_VERSION_4 +) { + +83 +i + = 0; i < 40; i++) { + +84 + `´tf +("%02x ", +rd +[ +i +]); + +85 ià(( +i + & 3) == 3) + +86 + `´tf +("\n"); + +88 + `´tf +("\n"); + +91 ià( +ty³ + =ð +IP_VERSION_6 +) { + +92 +i + = 0; i < 60; i++) { + +93 + `´tf +("%02x ", +rd +[ +i +]); + +94 ià(( +i + & 3) == 3) + +95 + `´tf +("\n"); + +97 + `´tf +("\n"); + +100 + } +} + +103 + $¹e_úxn__ty³ +( +ut8_t + * +ty³ +, +¹e_mbuf + * +pkt +) + +106 +_hdr_size_bys + = + `¹e_ù_g_IP_hdr_size +( +pkt +); + +108 ià( +_hdr_size_bys + =ð +IPv4_HEADER_SIZE +) + +109 * +ty³ + = +IP_VERSION_4 +; + +111 ià( +_hdr_size_bys + =ð +IPv6_HEADER_SIZE +) + +112 * +ty³ + = +IP_VERSION_6 +; + +113 + } +} + +116 + $¹e_ù_´t_hashkey +( +ut32_t + * +key +) + +118 + `´tf +("Key: %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x \\\n", + +119 +key +[0], key[1], key[2], key[3], + +120 +key +[4], key[5], key[6], key[7], key[8], key[9]); + +121 + } +} + +133 +ut8_t + + +134 + $¹e_ù_ü_úxn_hashkey +( + +135 +ut32_t + * +¤c_addr +, + +136 +ut32_t + * +d¡_addr +, + +137 +ut16_t + +¤c_pÜt +, + +138 +ut16_t + +d¡_pÜt +, + +139 +ut8_t + +´Ùo +, + +140 +ut32_t + * +key +, + +141 +ut8_t + +ty³ +) + +143 +ut8_t + +hash_Üd_Üig®_deùiÚ + = 1; + +145 +key +[9] = +´Ùo +; + +147 ià( +ty³ + =ð +IP_VERSION_4 +) { + +148 +ut32_t + +sourû + = * +¤c_addr +; + +149 +ut32_t + +de¡ + = * +d¡_addr +; + +151 +key +[3] = key[4] = key[5] = key[6] = key[7] = key[8] = 0; + +153 ià(( +sourû + < +de¡ +) + +154 || (( +sourû + =ð +de¡ +è&& ( +¤c_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®_deùiÚ + = 0; + +166 ià( +ty³ + =ð +IP_VERSION_6 +) { + +167 +_cmp + = + `memcmp +( +¤c_addr +, +d¡_addr +, 16); + +168 +ut32_t + * +lo_addr +; + +169 +ut32_t + * +hi_addr +; + +171 ià(( +_cmp + < 0è|| ((_cm°=ð0è&& ( +¤c_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®_deù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®_deùiÚ +; + +195 + } +} + +199 + $¹e_ù_g_IP_hdr_size +( +¹e_mbuf + * +pkt +) + +207 +ut8_t + +hdr_chk + = + `RTE_MBUF_METADATA_UINT8 +( +pkt +, +IP_START +); + +209 +hdr_chk + = hdr_chk >> 4; + +211 ià( +hdr_chk + =ð +IP_VERSION_4 +) + +212 +IPv4_HEADER_SIZE +; + +214 ià( +hdr_chk + =ð +IP_VERSION_6 +) + +215 +IPv6_HEADER_SIZE +; + +224 + } +} + +227 + $¹e_ù_£t_tim_fÜ_Ãw_úxn +( + +228 +¹e_ù_úxn_ack + * +ù +, + +229 +¹e_ù_úxn_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 +le + + +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 + * +ù +, +ut32_t + * +key +) + +276 +i +; + +278 +i + = 0; i <ð +ù +-> +Ï¡_cÚÃùiÚ +; i++) { + +279 +ut32_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 +le + + $¹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 +ut8_t + +pkt_num +, + +302 +ut8_t + +key_is_þÁ_Üd +, + +303 +ut32_t + * +key +, + +304 +hash_bË_y +, + +305 +no_Ãw_úxn +, + +306 +ut8_t + +_hdr_size_bys +) + +308 +¹e_ù_úxn_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 + +posiÚ + = +hash_bË_y +; + +315 +ù +-> +posiÚs +[ +pkt_num +] = +posiÚ +; + +319 ià( +hash_bË_y + >= 0) { + +325 +¹e_ù_úxn_d©a + * +y + = + +326 & +ù +-> +hash_bË_s +[ +hash_bË_y +]; + +328 +·ck_aùiÚ + = + `¹e_ù_vify_tý_·ck +( +ù +, +y +, +·ck +, + +329 +key_is_þÁ_Üd +, +_hdr_size_bys +); + +331 +·ck_aùiÚ +) { + +333 +RTE_CT_FORWARD_PACKET +: + +334 +y +-> +couÁs +. +·cks_fÜw¬ded +++; + +337 +RTE_CT_DROP_PACKET +: + +338 +y +-> +couÁs +. +·cks_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_bys +) != + +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 +. +·cks_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_bys +); + +431 ià( + `uÆiky +( +·ck_aùiÚ + =ð +RTE_CT_DROP_PACKET +)) { + +432 +ù +-> +couÁs +-> +pkts_drÝ_v®id_cÚn +++; + +433 +RTE_CT_DROP_PACKET +; + +437 +t32_t + +posiÚ + = + `¹e_hash_add_key +( +ù +-> +rhash +, +key +); + +438 ià( +posiÚ + < 0) { + +439 +´tf + + +441 +posiÚ +, +pkt_num +); + +442 +RTE_CT_DROP_PACKET +; + +444 #ifdeà +CT_CGNAT + + +445 +ù +-> +posiÚs +[ +pkt_num +] = +posiÚ +; + +447 +Ãw_hash_y + = & +ù +-> +hash_bË_s +[ +posiÚ +]; + +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 +. +·cks_fÜw¬ded + = 1; + +458 +Ãw_hash_y +-> +couÁs +. +·cks_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_ù_vify_tý_·ck +( +ù +, + +482 +Ãw_hash_y +, +·ck +, + +483 ! +key_is_þÁ_Üd +, + +484 +_hdr_size_bys +); + +486 ià( + `uÆiky +( +·ck_aùiÚ + !ð +RTE_CT_FORWARD_PACKET +)) { + +488 + `´tf +("Seriousrror 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 +ut64_t + + +513 + $¹e_ù_úxn_ack_b©ch_lookup_basic +( + +514 +¹e_ù_úxn_ack + * +ù +, + +515 +¹e_mbuf + ** +pkts +, + +516 +ut64_t + +pkts_mask +, + +517 +ut64_t + +no_Ãw_úxn_mask +, + +518 +ut64_t + * +»¶y_pkt_mask +, + +519 +ut64_t + * +hijack_mask +) + +522 +ut64_t + +pkts_to_´oûss + = +pkts_mask +; + +524 +ut64_t + +v®id_·cks + = +pkts_mask +; + +525 +ut8_t + +com·ùg_m +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +527 +ut8_t + +key_Üig_d +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +528 +ut32_t + +·cks_fÜ_lookup + = 0; + +529 +t32_t + +posiÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +530 +ut32_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 batchookup 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 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_to_´oûss +); + +551 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +553 +pkts_to_´oûss + &ð~ +pkt_mask +; + +555 +¹e_mbuf + * +pkt + = +pkts +[ +pos +]; + +557 +_hdr_size_bys + = + `¹e_ù_g_IP_hdr_size +( +pkt +); + +559 ià( + `uÆiky +( +_hdr_size_bys + < 0)) { + +564 * +_hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +569 +tý_hdr + * +thdr + = + +570 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +571 ( +IP_START + + +_hdr_size_bys +)); + +572 +ut16_t + +¤c_pÜt + = + `¹e_bsw16 +( +thdr +->src_port); + +573 +ut16_t + +d¡_pÜt + = + `¹e_bsw16 +( +thdr +->dst_port); + +575 ià( +_hdr_size_bys + =ð +IPv4_HEADER_SIZE +) { + +576 +v4_hdr + * +ihdr + = (v4_hd¸*) +_hdr +; + +577 +ut8_t + +´Ùo + = +ihdr +-> +Ãxt_´Ùo_id +; + +579 ià(!( +´Ùo + =ð +TCP_PROTOCOL + || rÙØ=ð +UDP_PROTOCOL +)) { + +590 +ut32_t + +¤c_addr + = + `¹e_bsw32 +( +ihdr +->src_addr); + +591 +ut32_t + +d¡_addr + = + `¹e_bsw32 +( +ihdr +->dst_addr); + +593 ià( +CNXN_TRX_DEBUG + > 2) { + +594 ià( +CNXN_TRX_DEBUG + > 4) + +595 + `¹e_ù_úxn_´t_pkt +( +pkt +, + +596 +IP_VERSION_4 +); + +602 +com·ùg_m +[ +·cks_fÜ_lookup +] = +pos +; + +603 +key_Üig_d +[ +·cks_fÜ_lookup +] = + +604 + `¹e_ù_ü_úxn_hashkey +(& +¤c_addr +, & +d¡_addr +, + +605 +¤c_pÜt +, +d¡_pÜt +, + +606 +´Ùo +, + +607 & +ù +-> +hash_keys + + +608 [ +·cks_fÜ_lookup +][0], + +609 +IP_VERSION_4 +); + +610 +·cks_fÜ_lookup +++; + +613 ià( +_hdr_size_bys + =ð +IPv6_HEADER_SIZE +) { + +614 +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +615 +ut8_t + +´Ùo + = +ihdr +->proto; + +617 ià(!( +´Ùo + =ð +TCP_PROTOCOL + || rÙØ=ð +UDP_PROTOCOL +)) { + +622 ià( +CNXN_TRX_DEBUG + > 2) { + +623 ià( +CNXN_TRX_DEBUG + > 4) + +624 + `¹e_ù_úxn_´t_pkt +( +pkt +, + +625 +IP_VERSION_6 +); + +632 +com·ùg_m +[ +·cks_fÜ_lookup +] = +pos +; + +633 +key_Üig_d +[ +·cks_fÜ_lookup +] = + +634 + `¹e_ù_ü_úxn_hashkey +( + +635 ( +ut32_t + *è +ihdr +-> +¤c_addr +, + +636 ( +ut32_t + *è +ihdr +-> +d¡_addr +, + +637 +¤c_pÜt +, +d¡_pÜt +, + +638 +´Ùo +, + +639 & +ù +-> +hash_keys + + +640 [ +·cks_fÜ_lookup +][0], + +641 +IP_VERSION_6 +); + +642 +·cks_fÜ_lookup +++; + +647 ià( + `uÆiky +( +·cks_fÜ_lookup + == 0)) + +648 +v®id_·cks +; + +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 +·cks_fÜ_lookup +, & +posiÚs +[0]); + +659 ià( + `uÆiky +( +lookup_»suÉ + < 0)) { + +661 + `´tf +("Unexpected hashable roblem, discardingll ackets"); + +664 #ifdeà +ALGDBG + + +665 +i + = 0; i < +·cks_fÜ_lookup +; i++) { + +666 ià( +posiÚs +[ +i +] >= 0) + +667 + `´tf +("@CT ositions[i]= %d, compacting_map[i]= %d\n", + +668 +posiÚs +[ +i +], +com·ùg_m +[i]); + +671 +i + = 0; i < +·cks_fÜ_lookup +; i++) { + +673 +hash_bË_y + = +posiÚs +[ +i +]; + +675 +ut8_t + +pkt_dex + = +com·ùg_m +[ +i +]; + +677 +ut64_t + +pkt_mask + = 1LLU << +pkt_dex +; + +678 +ut8_t + +key_is_þÁ_Üd + = +key_Üig_d +[ +i +]; + +679 +ut32_t + * +key + = +ù +-> +hash_key_±rs +[ +pkt_dex +]; + +680 +ut8_t + +´ÙocÞ + = *( +key + + 9); + +681 +¹e_mbuf + * +·ck + = +pkts +[ +pkt_dex +]; + +682 +no_Ãw_úxn + = ( +pkt_mask + & +no_Ãw_úxn_mask +) != 0; + +686 ià( +´ÙocÞ + =ð +TCP_PROTOCOL +) { + +687 +¹e_ù_·ck_aùiÚ + +tý_pkt_aùiÚ +; + +689 +_hdr_size_bys + = + `¹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_bys +); + +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_·cks + ^ð +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 +. +·cks_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 +·cks_fÜw¬ded +++; + +753 +ù +-> +couÁs +-> +pkts_fÜw¬ded +++; + +760 ià( +no_Ãw_úxn +) { + +764 +v®id_·cks + ^ð +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 + +posiÚ + = + +778 + `¹e_hash_add_key +( + +779 +ù +-> +rhash +, +key +); + +781 ià( +posiÚ + < 0) + +784 +¹e_ù_úxn_d©a + + +785 * +Ãw_hash_y + = & +ù +-> + +786 +hash_bË_s +[ +posiÚ +]; + +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 +·cks_fÜw¬ded + = 1; + +811 +ù +-> +couÁs +-> +pkts_fÜw¬ded +++; + +812 +Ãw_hash_y +-> +couÁs +. + +813 +·cks_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 cnxnracker synproxy batchookup with"); + +841 + `´tf +(" ack mask %p\n", (*) +v®id_·cks +); + +844 +v®id_·cks +; + +845 + } +} + +847 +ut64_t + + +848 + $¹e_ù_úxn_ack_b©ch_lookup_wh_syÅroxy +( + +849 +¹e_ù_úxn_ack + * +ù +, + +850 +¹e_mbuf + ** +pkts +, + +851 +ut64_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 +ut64_t + + $cgDZ_ù_´oûss +( + +859 +¹e_ù_úxn_ack + * +ù +, + +860 +¹e_mbuf + ** +pkts +, + +861 +ut64_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 +ut64_t + + +873 + $¹e_ù_úxn_ack_b©ch_lookup +( + +874 +¹e_ù_úxn_ack + * +ù +, + +875 +¹e_mbuf + ** +pkts +, + +876 +ut64_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 +ut64_t + * +pkts_mask +, + +890 +¹e_CT_h³r + * +ù_h³r +, + +891 +ut8_t + +_hdr_size_bys +) + +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_bys +); + +898 + } +} + +902 +ut64_t + + +903 + $¹e_ù_úxn_ack_b©ch_lookup_wh_Ãw_úxn_cÚÞ +( + +904 +¹e_ù_úxn_ack + * +ù +, + +905 +¹e_mbuf + ** +pkts +, + +906 +ut64_t + +pkts_mask +, + +907 +ut64_t + +no_Ãw_úxn_mask +) + +909 +ut64_t + +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 +ut64_t + +htz + = + `¹e_g_tsc_hz +(); + +925 +Ãw_úxn_ack +-> +htz + = hertz; + +926 +Ãw_úxn_ack +-> +timg_cyþes_³r_timg_¡ + = +htz + / 10; + +927 +Ãw_úxn_ack +-> +timg_100ms_¡s_´evious + = 0; + +928 +Ãw_úxn_ack +-> +timg_100ms_¡s + = 0; + +929 +Ãw_úxn_ack +-> +timg_Ï¡_time + = + `¹e_g_tsc_cyþes +(); + +932 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +933 [ +RTE_CT_TCP_SYN_SENT +] = 120 * +htz +; + +934 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +935 [ +RTE_CT_TCP_SYN_RECV +] = 60 * +htz +; + +937 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +938 [ +RTE_CT_TCP_ESTABLISHED +] = 60 * 60 * 24 * 5 * +htz +; + +940 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +941 [ +RTE_CT_TCP_FIN_WAIT +] = 120 * +htz +; + +942 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +943 [ +RTE_CT_TCP_CLOSE_WAIT +] = 60 * +htz +; + +944 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +945 [ +RTE_CT_TCP_LAST_ACK +] = 30 * +htz +; + +946 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +947 [ +RTE_CT_TCP_TIME_WAIT +] = 120 * +htz +; + +948 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +949 [ +RTE_CT_TCP_CLOSE +] = 10 * +htz +; + +950 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +951 [ +RTE_CT_TCP_SYN_SENT_2 +] = 120 * +htz +; + +952 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +953 [ +RTE_CT_TCP_RETRANS +] = 300 * +htz +; + +954 +Ãw_úxn_ack +-> +ù_timeout +. +týtimeout +. +tý_timeouts + + +955 [ +RTE_CT_TCP_UNACK +] = 300 * +htz +; + +957 +Ãw_úxn_ack +-> +ù_timeout +. +ud±imeout +. +udp_timeouts + + +958 [ +RTE_CT_UDP_UNREPLIED +] = 30 * +htz +; + +959 +Ãw_úxn_ack +-> +ù_timeout +. +ud±imeout +. +udp_timeouts + + +960 [ +RTE_CT_UDP_REPLIED +] = 180 * +htz +; + +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 +-> +posiÚ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_wh_syÅroxy +( + +981 +¹e_ù_úxn_ack + * +Ãw_úxn_ack +, + +982 +ut32_t + +max_cÚÃùiÚ_couÁ +, + +983 * +Çme +, + +984 +ut16_t + +por_off£t +) + +986 +ut32_t + +i +; + +987 +ut32_t + +size +; + +988 +¹e_CT_couÁ_block + * +couÁ_±r +; + +995 +Ãw_úxn_ack +-> +por_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 +ut32_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 +(" Notnough memory, or invalidrguments\n"); + +1011 +Ãw_úxn_ack +-> +num_úxn_s + = +numb_of_s +; + +1015 +i + = 0; i < +numb_of_s +; i++) + +1016 + `¹e_tim_ +(& +Ãw_úxn_ack +-> +hash_bË_s +[ +i +]. +tim +); + +1019 +i + = 0; i < +RTE_HASH_LOOKUP_BULK_MAX +; i++) + +1020 +Ãw_úxn_ack +-> +hash_key_±rs +[ +i +] = + +1021 & +Ãw_úxn_ack +-> +hash_keys +[ +i +][0]; + +1028 ià( +¹e_CT_hi_couÁ_block__u£ + =ð +MAX_CT_INSTANCES +) + +1031 +¹e_CT_hi_couÁ_block__u£ +++; + +1032 +couÁ_±r + = & +¹e_CT_couÁ_bË +[ +¹e_CT_hi_couÁ_block__u£ +]; + +1034 +Ãw_úxn_ack +-> +couÁs + = +couÁ_±r +; + +1037 +¹e_hash_·¿ms + +rhash_·rms + = { + +1038 . +Çme + =ame, + +1039 . +s + = +numb_of_s +, + +1040 . +hash_func + = +NULL +, + +1041 . +key_Ën + = 40, + +1042 . +hash_func__v® + = 0, + +1043 . +sock_id + = + `¹e_sock_id +(), + +1044 . +exa_æag + = 1 + +1047 +Ãw_úxn_ack +-> +rhash + = + `¹e_hash_ü +(& +rhash_·rms +); + +1050 + } +} + +1053 + $¹e_ù_lize_úxn_ack +( + +1054 +¹e_ù_úxn_ack + * +Ãw_úxn_ack +, + +1055 +ut32_t + +max_cÚÃùiÚ_couÁ +, + +1056 * +Çme +) + +1058 + `¹e_ù_lize_úxn_ack_wh_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_exped +( +¹e_tim + * +¹ +, * +¬g +); + +1080 + $¹e_ù_£t_úxn_tim +( + +1081 +¹e_ù_úxn_ack + * +ù +, + +1082 +¹e_ù_úxn_d©a + * +cd +, + +1083 +ut64_t + +ticks_uÁ_timeout +) + +1090 +¹e_tim + * +¹ + = (¹e_tim *) +cd +; + +1091 #ifdeà +CT_CGNAT + + +1093 +ut32_t + +cÜe_id + = + `g_tim_cÜe_id +(); + +1096 +ut32_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_exped +, +ù +); + +1104 ià( +sucûss + < 0) { + +1108 + `´tf +("CNXN_TRACKER: Failedo set connectionimer.\n"); + +1110 + } +} + +1118 + $¹e_ù_£t_úxn_tim_fÜ_tý +( + +1119 +¹e_ù_úxn_ack + * +ù +, + +1120 +¹e_ù_úxn_d©a + * +cd +, + +1121 +ut8_t + +tý_¡©e +) + +1124 +cd +-> +ex³ùed_timeout + = + +1125 ( +ù +-> +timg_100ms_¡s + * ct-> +timg_cyþes_³r_timg_¡ +) + + +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 +ut8_t + +udp_¡©e +) + +1164 +cd +-> +ex³ùed_timeout + = ( +ù +-> +timg_cyþes_³r_timg_¡ +) + + +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Ë_exped_tims +( +¹e_ù_úxn_ack + * +ù +) + +1209 +ut64_t + +Ãw_time + = + `¹e_g_tsc_cyþes +(); + +1210 +ut64_t + +time_diff + = +Ãw_time + - +ù +-> +timg_Ï¡_time +; + +1212 ià( +time_diff + >ð +ù +-> +timg_cyþes_³r_timg_¡ +) { + +1213 +ù +-> +timg_Ï¡_time + = +Ãw_time +; + +1214 +ù +-> +timg_100ms_¡s +++; + +1217 ià( +ù +-> +timg_100ms_¡s + !ðù-> +timg_100ms_¡s_´evious +) { + +1218 + `¹e_tim_mªage +(); + +1219 +ù +-> +timg_100ms_¡s_´evious + = ct-> +timg_100ms_¡s +; + +1221 + } +} + +1226 + $¹e_ù_úxn_tim_exped +( +¹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 +ut64_t + +cu¼t_time + = +ù +-> +timg_100ms_¡s + * + +1242 +ù +-> +timg_cyþes_³r_timg_¡ +; + +1244 ià( +cd +-> +ex³ùed_timeout + >ð +cu¼t_time +) { + +1245 +ut64_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Åroxd +) + +1262 + `¹e_ù_»Ëa£_bufã»d_·cks +( +ù +, +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 +ut64_t + +³rûÁ + = ( +cd +-> +couÁs +. +·cks_drݳd + * 10000) / + +1271 ( +cd +-> +couÁs +. +·cks_fÜw¬ded + + + +1272 +cd +-> +couÁs +. +·cks_drݳd +); + +1274 ià( +cd +-> +´ÙocÞ + =ð +TCP_PROTOCOL +) { + +1275 + `´tf +("CnxnTrkr %s,imed-out TCP Connection: %p,", + +1276 +ù +-> +Çme +, +cd +); + +1277 + `´tf +(" %s, kts forwarded %" + +1278 +PRIu64 + ", kts dropped %" PRIu64 + +1280 +¹e_ù_tý_Çmes +[ +cd +-> +¡©e_u£d_fÜ_tim +], + +1281 +cd +-> +couÁs +. +·cks_fÜw¬ded +, + +1282 +cd +-> +couÁs +. +·cks_drݳd +, + +1283 ( +ut32_t +è( +³rûÁ + / 100), + +1284 ( +ut32_t +è( +³rûÁ + % 100)); + +1285 } ià( +cd +-> +´ÙocÞ + =ð +UDP_PROTOCOL +) { + +1286 + `´tf +("CnxnTrkr %s, Timed-out UDP Connection: %p,", + +1287 +ù +-> +Çme +, +cd +); + +1288 + `´tf +(" %s, 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 +. +·cks_fÜw¬ded +, + +1292 +cd +-> +couÁs +. +·cks_drݳd +, + +1293 ( +ut32_t +è( +³rûÁ + / 100), + +1294 ( +ut32_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 +ut64_t + +time_v®ue + = +iv® + * +ù +-> +htz +; + +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 +ut64_t + * +pkts_mask +, + +1467 +ut64_t + +no_Ãw_úxn_mask +, + +1468 +ut64_t + * +»¶y_pkt_mask +, + +1469 +ut64_t + * +hijack_mask +, + +1470 +ut8_t + +_hdr_size_bys +) + +1473 +ut64_t + +pkts_to_´oûss + = * +pkts_mask +; + +1475 +ut8_t + +com·ùg_m +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1477 +ut8_t + +key_Üig_d +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1478 +ut32_t + +·cks_fÜ_lookup + = 0; + +1479 +t32_t + +posiÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +1480 +ut32_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 batchookup 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_bys +) { + +1499 +IPv4_HEADER_SIZE +: + +1500 ; +pkts_to_´oûss +;) { + +1501 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( + +1502 +pkts_to_´oûss +); + +1504 +ut64_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_bys +)); + +1517 +ut16_t + +¤c_pÜt + = + `¹e_bsw16 +( +thdr +->src_port); + +1518 +ut16_t + +d¡_pÜt + = + `¹e_bsw16 +( +thdr +->dst_port); + +1520 +v4_hdr + * +ihdr + = (ipv4_hdr *) + +1521 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +1522 +ut8_t + +´Ùo + = +ihdr +-> +Ãxt_´Ùo_id +; + +1524 ià(!( +´Ùo + =ð +TCP_PROTOCOL + || rÙØ=ð +UDP_PROTOCOL +)) { + +1535 +ut32_t + +¤c_addr + = + `¹e_bsw32 +( +ihdr +->src_addr); + +1536 +ut32_t + +d¡_addr + = + `¹e_bsw32 +( +ihdr +->dst_addr); + +1538 ià( +CNXN_TRX_DEBUG + > 2) { + +1539 ià( +CNXN_TRX_DEBUG + > 4) + +1540 + `¹e_ù_úxn_´t_pkt +( +pkt +, + +1541 +IP_VERSION_4 +); + +1547 +com·ùg_m +[ +·cks_fÜ_lookup +] = +pos +; + +1548 +key_Üig_d +[ +·cks_fÜ_lookup +] = + +1549 + `¹e_ù_ü_úxn_hashkey +(& +¤c_addr +, & +d¡_addr +, + +1550 +¤c_pÜt +, +d¡_pÜt +, + +1551 +´Ùo +, + +1552 & +ù +-> +hash_keys + + +1553 [ +·cks_fÜ_lookup +][0], + +1554 +IP_VERSION_4 +); + +1555 +·cks_fÜ_lookup +++; + +1558 +IPv6_HEADER_SIZE +: + +1559 ; +pkts_to_´oûss +;) { + +1560 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( + +1561 +pkts_to_´oûss +); + +1563 +ut64_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_bys +)); + +1579 +ut16_t + +¤c_pÜt + = + `¹e_bsw16 +( +thdr +->src_port); + +1580 +ut16_t + +d¡_pÜt + = + `¹e_bsw16 +( +thdr +->dst_port); + +1582 +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +1583 +ut8_t + +´Ùo + = +ihdr +->proto; + +1585 ià(!( +´Ùo + =ð +TCP_PROTOCOL + || rÙØ=ð +UDP_PROTOCOL +)) { + +1590 ià( +CNXN_TRX_DEBUG + > 2) { + +1591 ià( +CNXN_TRX_DEBUG + > 4) + +1592 + `¹e_ù_úxn_´t_pkt +( +pkt +, + +1593 +IP_VERSION_6 +); + +1600 +com·ùg_m +[ +·cks_fÜ_lookup +] = +pos +; + +1601 +key_Üig_d +[ +·cks_fÜ_lookup +] = + +1602 + `¹e_ù_ü_úxn_hashkey +( + +1603 ( +ut32_t + *è +ihdr +-> +¤c_addr +, + +1604 ( +ut32_t + *è +ihdr +-> +d¡_addr +, + +1605 +¤c_pÜt +, +d¡_pÜt +, + +1606 +´Ùo +, + +1607 & +ù +-> +hash_keys + + +1608 [ +·cks_fÜ_lookup +][0], + +1609 +IP_VERSION_6 +); + +1610 +·cks_fÜ_lookup +++; + +1616 ià( + `uÆiky +( +·cks_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 +·cks_fÜ_lookup +, & +posiÚs +[0]); + +1628 ià( + `uÆiky +( +lookup_»suÉ + < 0)) { + +1630 + `´tf +("Unexpected hashable roblem, discardingll ackets"); + +1631 * +pkts_mask + = 0; + +1634 +i + = 0; i < +·cks_fÜ_lookup +; i++) { + +1636 +hash_bË_y + = +posiÚs +[ +i +]; + +1638 +ut8_t + +pkt_dex + = +com·ùg_m +[ +i +]; + +1640 +ut64_t + +pkt_mask + = 1LLU << +pkt_dex +; + +1641 +ut8_t + +key_is_þÁ_Üd + = +key_Üig_d +[ +i +]; + +1642 +ut32_t + * +key + = +ù +-> +hash_key_±rs +[ +pkt_dex +]; + +1643 +ut8_t + +´ÙocÞ + = *( +key + + 9); + +1644 +¹e_mbuf + * +·ck + = +pkts +[ +pkt_dex +]; + +1645 +no_Ãw_úxn + = ( +pkt_mask + & +no_Ãw_úxn_mask +) != 0; + +1649 ià( +´ÙocÞ + =ð +TCP_PROTOCOL +) { + +1650 +¹e_ù_·ck_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_bys +); + +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 +. +·cks_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 +·cks_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 + +posiÚ + = + +1739 + `¹e_hash_add_key +( +ù +-> + +1740 +rhash +, +key +); + +1742 ià( +posiÚ + < 0) + +1745 +¹e_ù_úxn_d©a + + +1746 * +Ãw_hash_y + = & +ù +-> + +1747 +hash_bË_s +[ +posiÚ +]; + +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 +·cks_fÜw¬ded + = 1; + +1772 +ù +-> +couÁs +-> +pkts_fÜw¬ded +++; + +1773 +Ãw_hash_y +-> +couÁs +. + +1774 +·cks_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 cnxnracker synproxy batchookup 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 + ~<¡rg.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 +ut64_t + + mcu¼t_aùive_£ssiÚs +; + +61 +ut64_t + + m£ssiÚs_aùiv©ed +; + +63 +ut64_t + + m£ssiÚs_»aùiv©ed +; + +65 +ut64_t + + m£ssiÚs_e¡ablished +; + +66 +ut64_t + + m£ssiÚs_þo£d +; + +67 +ut64_t + + m£ssiÚs_timedout +; + +68 +ut64_t + + mpkts_fÜw¬ded +; + +69 +ut64_t + + mpkts_drÝ +; + +70 +ut64_t + + mpkts_drÝ_v®id_cÚn +; + +71 +ut64_t + + mpkts_drÝ_v®id_¡©e +; + +72 +ut64_t + + mpkts_drÝ_v®id_r¡ +; + +73 +ut64_t + + mpkts_drÝ_outof_wdow +; + +74 } + g__¹e_ÿche_®igÃd +; + +76 + s¹e_syÅroxy_h³r + { + +77 +ut64_t + + m»¶y_pkt_mask +; + +78 +ut64_t + + mhijack_mask +; + +79 +¹e_mbuf + ** + mbufã»d_pkts_to_fÜw¬d +; + +80 +ut8_t + + mnum_bufã»d_pkts_to_fÜw¬d +; + +83 + s¹e_CT_h³r + { + +84 +ut64_t + + mno_Ãw_úxn_mask +; + +85 +ut64_t + + m»¶y_pkt_mask +; + +86 +ut64_t + + mhijack_mask +; + +87 +¹e_mbuf + ** + mbufã»d_pkts_to_fÜw¬d +; + +88 +ut8_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 +ut64_t + + +123 +¹e_ù_úxn_ack_b©ch_lookup +( + +124 +¹e_ù_úxn_ack + * +ù +, + +125 +¹e_mbuf + ** +pkts +, + +126 +ut64_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 +ut64_t + * +pkts_mask +, + +134 +¹e_CT_h³r + * +ù_h³r +, + +135 +ut8_t + +_hdr_size_bys +); + +169 +ut64_t + + +170 +¹e_ù_úxn_ack_b©ch_lookup_wh_Ãw_úxn_cÚÞ +( + +171 +¹e_ù_úxn_ack + * +ù +, + +172 +¹e_mbuf + ** +pkts +, + +173 +ut64_t + +pkts_mask +, + +174 +ut64_t + +no_Ãw_úxn_mask +); + +205 +ut64_t + + +206 +¹e_ù_úxn_ack_b©ch_lookup_wh_syÅroxy +( + +207 +¹e_ù_úxn_ack + * +ù +, + +208 +¹e_mbuf + ** +pkts +, + +209 +ut64_t + +pkts_mask +, + +210 +¹e_syÅroxy_h³r + * +¥_h³r +); + +239 +¹e_mbuf + * + +240 +¹e_ù_g_bufã»d_syÅroxy_·cks +( +¹e_ù_úxn_ack + * +ù +); + +259 +¹e_ù_lize_úxn_ack_wh_syÅroxy +( + +260 +¹e_ù_úxn_ack + * +Ãw_úxn_ack +, + +261 +ut32_t + +max_cÚÃùiÚ_couÁ +, + +262 * +Çme +, + +263 +ut16_t + +por_off£t +); + +283 +¹e_ù_lize_úxn_ack +( + +284 +¹e_ù_úxn_ack + * +Ãw_úxn_ack +, + +285 +ut32_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Ë_exped_tims +( +¹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 +ut8_t + + +395 +¹e_ù_ü_úxn_hashkey +( + +396 +ut32_t + * +¤c_addr +, + +397 +ut32_t + * +d¡_addr +, + +398 +ut16_t + +¤c_pÜt +, + +399 +ut16_t + +d¡_pÜt +, + +400 +ut8_t + +´Ùo +, + +401 +ut32_t + * +key +, + +402 +ut8_t + +ty³ +); + +405 #ifdeà +CT_CGNAT + + +406 +ut32_t + +g_tim_cÜe_id +(); + +407 +ut64_t + +cgDZ_ù_´oûss +( + +408 +¹e_ù_úxn_ack + * +ù +, + +409 +¹e_mbuf + ** +pkts +, + +410 +ut64_t + +pkts_mask +, + +411 +¹e_CT_h³r + * +ù_h³r +); + + @VIL/conntrack/rte_ct_synproxy.c + +17 + ~<¡dio.h +> + +18 + ~<¡dlib.h +> + +19 + ~<¡dt.h +> + +20 + ~<¡ddef.h +> + +21 + ~<¡rg.h +> + +22 + ~<uni¡d.h +> + +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 . + gwdow_sÿË + = 7, + +107 . + gl_wdow + = +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 . + gwdow_sÿË + = 7, + +117 . + gl_wdow + = +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 +ut32_t + +·ck_Ëngth + = + `¹e_pktmbuf_pkt_Ën +( +pkt +); + +130 + `´tf +("\Åackgth %u, i°Ëngth %u\n", +·ck_Ëngth +, + +131 + `¹e_bsw16 +( +ihdr4 +-> +tÙ®_Ëngth +)); + +132 + `¹e_pktmbuf_dump +( +¡dout +, +pkt +, 80); + +133 + } +} + +135 +le + + +136 + $¹e_¥_üeml_tý_chksum_upd©e_32 +( + +137 +ut32_t + +num_befÜe +, + +138 +ut32_t + +num_aá +, + +140 +ut16_t + * +chksum +) + +142 +ut32_t + +sum +; + +144 +sum + = ~ + `¹e_bsw16 +(* +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_bsw16 +(~ +sum + & 0xffff); + +151 + } +} + +155 +le + +ut32_t + + +156 + $¹e_¥_g_¿ndom_£q_numb +() + +158 + `¹e_g_tsc_cyþes +(); + +159 + } +} + +162 +t8_t + + $¹e_ù_vsiÚ +(* +i_hdr +) + +164 +ut8_t + * +ihdr + = (ut8_*) +i_hdr +; + +165 +t8_t + +hdr_chk + = * +ihdr +; + +167 +hdr_chk + = hdr_chk >> 4; + +168 ià( +hdr_chk + =ð +IP_VERSION_4 + || hdr_chk =ð +IP_VERSION_6 +) + +169 +hdr_chk +; + +172 + } +} + +174 +le + + +175 + $¹e_syÅroxy_adju¡_pkt_Ëngth +( +¹e_mbuf + * +pkt +) + +177 +ut16_t + +pkt_Ëngth + = 0; + +178 +_hdr_size_bys + = + `¹e_ù_g_IP_hdr_size +( +pkt +); + +179 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +181 ià( +_hdr_size_bys + =ð +IP_V4_HEADER_SIZE +) { + +182 +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +184 +pkt_Ëngth + = + `¹e_bsw16 +( +ihdr4 +-> +tÙ®_Ëngth +è+ +ETH_HDR_SIZE +; + +185 } ià( +_hdr_size_bys + =ð +IP_V6_HEADER_SIZE +) { + +186 +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +188 +pkt_Ëngth + = + `¹e_bsw16 +( +ihdr6 +-> +·ylßd_Ën +) + + +189 +IP_V6_HEADER_SIZE + + +ETH_HDR_SIZE +; + +191 +ut16_t + +mbuf_pkt_Ëngth + = + `¹e_pktmbuf_pkt_Ën +( +pkt +); + +193 ià( +pkt_Ëngth + =ð +mbuf_pkt_Ëngth +) + +196 ià( +pkt_Ëngth + < +mbuf_pkt_Ëngth +) { + +197 + `¹e_pktmbuf_im +( +pkt +, +mbuf_pkt_Ëngth + - +pkt_Ëngth +); + +202 + `¹e_pktmbuf_³nd +( +pkt +, +pkt_Ëngth + - +mbuf_pkt_Ëngth +); + +203 + } +} + +206 + $¹e_syÅroxy_bud_v4_hd +( + +207 +v4_hdr + * +hdr4 +, + +208 +ut32_t + +¤c_addr +, + +209 +ut32_t + +d¡_addr +, + +210 +ut16_t + +tý_Ëngth +) + +214 +hdr4 +-> +vsiÚ_ihl + = 0x45; + +215 +hdr4 +-> +ty³_of_£rviû + = 0; + +216 +hdr4 +-> +tÙ®_Ëngth + = + `¹e_bsw16 +( +tý_Ëngth + + +IP_V4_HEADER_SIZE +); + +217 +hdr4 +-> +·ck_id + = 0; + +219 +hdr4 +-> +äagmt_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_bsw32 +(src_addr); + +224 +hdr4 +-> +d¡_addr + = + `¹e_bsw32 +(dst_addr); + +225 + } +} + +229 + $¹e_syÅroxy_bud_v6_hd +( + +230 +v6_hdr + * +hdr6 +, + +231 +ut8_t + * +¤c_addr +, + +232 +ut8_t + * +d¡_addr +, + +233 +ut16_t + +tý_Ëngth +) + +237 +ut8_t + +mp_¤c +[16]; + +238 +ut8_t + +mp_d¡ +[16]; + +240 +hdr6 +-> +vtc_æow + = 0x60; + +241 +hdr6 +-> +·ylßd_Ën + = + `¹e_bsw16 +( +tý_Ëngth +); + +242 +hdr6 +-> +´Ùo + = +RTE_TCP_PROTO_ID +; + +243 +hdr6 +-> +hÝ_lims + = +RTE_SP_DEFAULT_TTL +; + +247 + `¹e_mov16 +( +mp_¤c +, +¤c_addr +); + +248 + `¹e_mov16 +( +mp_d¡ +, +d¡_addr +); + +249 + `¹e_mov16 +( +hdr6 +-> +¤c_addr +, +mp_¤c +); + +250 + `¹e_mov16 +( +hdr6 +-> +d¡_addr +, +mp_d¡ +); + +251 + } +} + +255 +ut16_t + + +256 + $¹e_¥_add_tý_ÝtiÚs +( +tý_hdr + * +thdr +, + +257 cÚ¡ +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +) + +259 +ut32_t + * +ÝtiÚs_±r + = (ut32_*)( +thdr + + 1); + +260 +ut32_t + * +§ved_±r + = +ÝtiÚs_±r +; + +261 +ut8_t + +ÝtiÚs + = +t_Ýts +->options; + +262 +ut32_t + +ÝtiÚ_bys +; + +264 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_MSS +) { + +265 +ÝtiÚ_bys + = ( +RTE_CT_TCPOPT_MSS + << 24) | + +266 ( +RTE_CT_TCPOLEN_MSS + << 16è| +t_Ýts +-> +mss +; + +267 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +ÝtiÚ_bys +); + +270 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_TIMESTAMP +) { + +274 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_SACK_PERM +) + +275 +ÝtiÚ_bys + = ( +RTE_CT_TCPOPT_SACK_PERM + << 24) | + +276 ( +RTE_CT_TCPOLEN_SACK_PERM + << 16); + +278 +ÝtiÚ_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +279 ( +RTE_CT_TCPOPT_NOP + << 16); + +281 +ÝtiÚ_bys + |ð( +RTE_CT_TCPOPT_TIMESTAMP + << 8) | + +282 +RTE_CT_TCPOLEN_TIMESTAMP +; + +283 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +ÝtiÚ_bys +); + +284 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +t_Ýts +-> +ts_v® +); + +285 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +t_Ýts +-> +ts_echo_»¶y +); + +286 } ià( +ÝtiÚs + & +RTE_SP_OPTIONS_SACK_PERM +) { + +287 +ÝtiÚ_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +288 ( +RTE_CT_TCPOPT_NOP + << 16) | + +289 ( +RTE_CT_TCPOPT_SACK_PERM + << 8) | + +290 +RTE_CT_TCPOLEN_SACK_PERM +; + +291 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +ÝtiÚ_bys +); + +294 ià( +ÝtiÚs + & +RTE_SP_OPTIONS_WINDOW_SCALE +) { + +295 +ÝtiÚ_bys + = ( +RTE_CT_TCPOPT_NOP + << 24) | + +296 ( +RTE_CT_TCPOPT_WINDOW + << 16) | + +297 ( +RTE_CT_TCPOLEN_WINDOW + << 8) | + +298 +t_Ýts +-> +wdow_sÿË +; + +299 * +ÝtiÚs_±r +++ = + `¹e_bsw32 +( +ÝtiÚ_bys +); + +306 +ut16_t + +d©a_off£t_bys + = (ut16_t) + `RTE_PTR_DIFF +( +ÝtiÚs_±r +, + +307 +§ved_±r +è+ ( +tý_hdr +); + +308 +thdr +-> +d©a_off + = ( +d©a_off£t_bys + >> 2) << 4; + +310 +d©a_off£t_bys +; + +311 + } +} + +318 +le + +ut16_t + + +319 + $¹e_syÅroxy_bud_tý_hd +( + +320 +__¹e_unu£d + +¹e_mbuf + * +Þd_pkt +, + +321 +tý_hdr + * +t_hdr +, + +322 +ut16_t + +¤c_pÜt +, + +323 +ut16_t + +d¡_pÜt +, + +324 +ut32_t + +£q +, + +325 +ut32_t + +ack +, + +326 +ut8_t + +æags +, + +327 cÚ¡ +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +, + +328 +ut8_t + +add_ÝtiÚs +) + +330 +t_hdr +-> +¤c_pÜt + = + `¹e_bsw16 +(src_port); + +331 +t_hdr +-> +d¡_pÜt + = + `¹e_bsw16 +(dst_port); + +332 +t_hdr +-> +£Á_£q + = + `¹e_bsw32 +( +£q +); + +333 +t_hdr +-> +»cv_ack + = + `¹e_bsw32 +( +ack +); + +335 +t_hdr +-> +tý_æags + = +æags +; + +336 +t_hdr +-> +rx_w + = +t_Ýts +-> +l_wdow +; + +338 +t_hdr +-> +tý_u½ + = 0; + +342 +ut16_t + +Ãw_tý_hdr_size + = +TCP_MIN_HDR_SIZE +; + +344 ià( +add_Ý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_ù_vsiÚ +( +i_hdr +); + +366 +t_hdr +-> +cksum + = 0; + +368 ià( +hdr_chk + =ð +IP_VERSION_4 +) { + +369 +v4_hdr + * +i4_hdr + = (v4_hd¸*) +i_hdr +; + +371 +i4_hdr +-> +hdr_checksum + = 0; + +372 +t_hdr +-> +cksum + = + `¹e_v4_ud±ý_cksum +( +i4_hdr +,_hdr); + +373 +i4_hdr +-> +hdr_checksum + = + `¹e_v4_cksum +(i4_hdr); + +374 } ià( +hdr_chk + =ð +IP_VERSION_6 +) { + +375 +v6_hdr + * +i6_hdr + = (v6_hd¸*) +i_hdr +; + +377 +t_hdr +-> +cksum + = + `¹e_v6_ud±ý_cksum +( +i6_hdr +,_hdr); + +379 + } +} + +391 + $¹e_¥_cvt_to_¥ooãd_þÁ_syÇck +( +¹e_ù_úxn_d©a + * +cd +, + +392 +¹e_mbuf + * +Þd_pkt +) + +398 +_hdr_size_bys + = + `¹e_ù_g_IP_hdr_size +( +Þd_pkt +); + +399 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START +); + +400 +tý_hdr + * +thdr + = (tcp_hdr *) + +401 + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START + + + +402 +_hdr_size_bys +); + +403 +ut16_t + +tý_hd_size +; + +406 +ut32_t + +Ãw_£q + = + `¹e_¥_g_¿ndom_£q_numb +(); + +408 ià( +RTE_CT_DEBUG_SPOOFED_SEQ +) + +409 +Ãw_£q + = 10; + +411 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +Üig®_¥ooãd_£q + = +Ãw_£q +; + +414 +tý_hd_size + = + `¹e_syÅroxy_bud_tý_hd +( +Þd_pkt +, +thdr +, + +415 + `¹e_bsw16 +( +thdr +-> +d¡_pÜt +), + +416 + `¹e_bsw16 +( +thdr +-> +¤c_pÜt +), + +417 +Ãw_£q +, + `¹e_bsw32 +( +thdr +-> +£Á_£q +) + 1, + +418 +RTE_TCP_SYN_ACK +, + +419 +_hdr_size_bys + =ð +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_bys + =ð +IP_V4_HEADER_SIZE +) { + +425 +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +427 + `¹e_syÅroxy_bud_v4_hd +( +ihdr4 +, + +428 + `¹e_bsw32 +( +ihdr4 +-> +d¡_addr +), + +429 + `¹e_bsw32 +( +ihdr4 +-> +¤c_addr +), +tý_hd_size +); + +431 } ià( +_hdr_size_bys + =ð +IP_V6_HEADER_SIZE +) { + +432 +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +434 + `¹e_syÅroxy_bud_v6_hd +( +ihdr6 +, + +435 ( +ut8_t + *) +ihdr6 +-> +d¡_addr +, + +436 ( +ut8_t + *) +ihdr6 +-> +¤c_addr +, +tý_hd_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_bys + = + `¹e_ù_g_IP_hdr_size +( +Þd_pkt +); + +454 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START +); + +455 +tý_hdr + * +thdr + = (tcp_hdr *) + +456 + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START + + +457 + +_hdr_size_bys +); + +458 +ut16_t + +tý_hd_size +; + +460 +tý_hd_size + = + `¹e_syÅroxy_bud_tý_hd +( +Þd_pkt +, +thdr +, + +461 + `¹e_bsw16 +( +thdr +-> +¤c_pÜt +), + +462 + `¹e_bsw16 +( +thdr +-> +d¡_pÜt +), + +463 + `¹e_bsw32 +( +thdr +-> +£Á_£q +) - 1, 0, + +464 +RTE_TCP_SYN +, + +465 & +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_ÝtiÚs +, 1); + +467 ià( +_hdr_size_bys + =ð +IP_V4_HEADER_SIZE +) { + +468 +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +470 + `¹e_syÅroxy_bud_v4_hd +( +ihdr4 +, + +471 + `¹e_bsw32 +( +ihdr4 +-> +¤c_addr +), + +472 + `¹e_bsw32 +( +ihdr4 +-> +d¡_addr +), +tý_hd_size +); + +473 } ià( +_hdr_size_bys + =ð +IP_V6_HEADER_SIZE +) { + +474 +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +476 + `¹e_syÅroxy_bud_v6_hd +( +ihdr6 +, + +477 ( +ut8_t + *) +ihdr6 +-> +¤c_addr +, + +478 ( +ut8_t + *) +ihdr6 +-> +d¡_addr +, +tý_hd_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_bys + = + `¹e_ù_g_IP_hdr_size +( +Þd_pkt +); + +496 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START +); + +497 +tý_hdr + * +thdr + = (tcp_hdr *) + +498 + `RTE_MBUF_METADATA_UINT32_PTR +( +Þd_pkt +, +IP_START + + + +499 +_hdr_size_bys +); + +504 +ut32_t + +»®_£q + = + `¹e_bsw32 +( +thdr +-> +£Á_£q +); + +505 +ut16_t + +tý_hd_size +; + +507 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff + = + +508 +»®_£q + - +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +Üig®_¥ooãd_£q +; + +511 +tý_hd_size + = + `¹e_syÅroxy_bud_tý_hd +( +Þd_pkt +, +thdr +, + +512 + `¹e_bsw16 +( +thdr +-> +d¡_pÜt +), + +513 + `¹e_bsw16 +( +thdr +-> +¤c_pÜt +), + +514 + `¹e_bsw32 +( +thdr +-> +»cv_ack +), + +515 + `¹e_bsw32 +( +thdr +-> +£Á_£q +è+ 1, +RTE_TCP_ACK +, + +516 & +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +úxn_ÝtiÚs +, 0); + +519 ià( +_hdr_size_bys + =ð +IP_V4_HEADER_SIZE +) { + +520 +v4_hdr + * +ihdr4 + = (v4_hd¸*) +hdr +; + +522 + `¹e_syÅroxy_bud_v4_hd +( +ihdr4 +, + +523 + `¹e_bsw32 +( +ihdr4 +-> +d¡_addr +), + +524 + `¹e_bsw32 +( +ihdr4 +-> +¤c_addr +), +tý_hd_size +); + +526 } ià( +_hdr_size_bys + =ð +IP_V6_HEADER_SIZE +) { + +527 +v6_hdr + * +ihdr6 + = (v6_hd¸*) +hdr +; + +529 + `¹e_syÅroxy_bud_v6_hd +( +ihdr6 +, + +530 ( +ut8_t + *) +ihdr6 +-> +d¡_addr +, + +531 ( +ut8_t + *) +ihdr6 +-> +¤c_addr +, +tý_hd_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á_wdow_check +( + +552 +¹e_ù_úxn_d©a + * +cd +, + +553 +__¹e_unu£d + * +i_hdr +, + +554 +tý_hdr + * +thdr +, + +555 +¹e_ù_pkt_deùiÚ + +d +) + +557 +ut32_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_bsw32 +( +thdr +-> +£Á_£q +); + +568 +num_aá + = +num_befÜe + - +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff +; + +569 +thdr +-> +£Á_£q + = + `¹e_bsw32 +( +num_aá +); + +571 + `¹e_¥_üeml_tý_chksum_upd©e_32 +( +num_befÜe +, +num_aá +, + +572 & +thdr +-> +cksum +); + +573 + } +} + +577 + $¹e_¥_adju¡_þÁ_§ck_s +( + +578 +tý_hdr + * +thdr +, + +579 +ut32_t + +diff +) + +581 +ut32_t + +num_befÜe +, +num_aá +; + +582 +ut32_t + * +§ck_±r +; + +583 +ut8_t + +§ck_blk_size +; + +584 +ut16_t + +d©aoff__bys + = ( +thdr +-> +d©a_off + & 0xf0) >> 2; + +585 +ut16_t + +Ëngth + = +d©aoff__bys + - ( +tý_hdr +); + +587 ià(! +Ëngth +) + +590 +ut8_t + * +ÝtiÚs_±r + = (ut8_*)( +thdr + + 1); + +592 +Ëngth + > 0) { + +593 +ut8_t + +Ýcode + = * +ÝtiÚs_±r +; + +594 +ut8_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 + = ( +ut32_t + *)( +ÝtiÚs_±r + + 2); + +620 +num_acks + = +§ck_blk_size + >> 2; + +622 ià( + `uÆiky +( +§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_bsw32 +(* +§ck_±r +); + +630 +num_aá + = +num_befÜe + + +diff +; + +631 * +§ck_±r + = + `¹e_bsw32 +( +num_aá +); + +632 +§ck_±r +++; + +633 + `¹e_¥_üeml_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_wdow_check +( + +656 +¹e_ù_úxn_d©a + * +cd +, + +657 +__¹e_unu£d + * +i_hdr +, + +658 +tý_hdr + * +thdr +, + +659 +¹e_ù_pkt_deùiÚ + +d +) + +661 +ut32_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_bsw32 +( +thdr +-> +»cv_ack +); + +672 +num_aá + = +num_befÜe + + +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +£q_diff +; + +673 +thdr +-> +»cv_ack + = + `¹e_bsw32 +( +num_aá +); + +674 + `¹e_¥_üeml_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 +ut8_t + * +ÝtiÚs_±r +, + +695 +ut16_t + +Ëngth +, + +696 +¹e_syÅroxy_ÝtiÚs + * +t_Ýts +) + +698 +Ýsize +; + +700 +t_Ýts +-> +ÝtiÚs + = 0; + +702 +Ëngth + > 0) { + +703 +ut8_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Æiky +( +Ýsize + < 2 || opsiz> +Ëngth +)) { + +717 + `´tf +("parsingrror, opsize: %i,ength: %i\n", + +718 +Ýsize +, +Ëngth +); + +722 +Ýcode +) { + +724 +RTE_CT_TCPOPT_MSS +: + +725 ià( +Ýsize + =ð +RTE_CT_TCPOLEN_MSS +) { + +726 +ut16_t + * +mss_±r + = (ut16_*) +ÝtiÚs_±r +; + +728 +t_Ýts +-> +mss + = + `¹e_bsw16 +(* +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 +-> +wdow_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 +ut32_t + * +ts_v®_±r + = (ut32_*) +ÝtiÚs_±r +; + +744 +ut32_t + * +ts_eü_±r + = + +745 ( +ut32_t + *)( +ÝtiÚs_±r + + 4); + +746 +t_Ýts +-> +ts_v® + = + `¹e_bsw32 +(* +ts_v®_±r +); + +747 +t_Ýts +-> +ts_echo_»¶y + = + +748 + `¹e_bsw32 +(* +ts_eü_±r +); + +749 +t_Ýts +-> +Ý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 +ut8_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__bys + = + +784 (( +thdr +-> +d©a_off + & 0xf0è>> 2è- ( +tý_hdr +); + +786 + `¹e_¥_·r£_tý_ÝtiÚs +( +Ýt_±r +, +Ëngth__bys +, +t_Ýts +); + +787 +t_Ýts +-> +l_wdow + = +thdr +-> +rx_w +; + +788 + } +} + +793 +¹e_mbuf + * + +794 + $¹e_ù_g_bufã»d_syÅroxy_·cks +( + +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 +ù +-> +por_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_·cks +( + +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 +ù +-> +por_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 + ~<¡rg.h +> + +19 + ~<imm.h +> + +20 + ~<y³s.h +> + +21 + ~"¹e_ù_tý.h +" + +22 + ~"¹e_úxn_ackg.h +" + +25 + #CT_DEBUG + 0 + + ) + +26 + #STATE_TRACKING + 0 + + ) + +27 + #RTE_CT_ASSERT + 0 + + ) + +30 + #META_DATA_OFFSET + 128 + + ) + +31 + #RTE_PKTMBUF_HEADROOM + 128 + + ) + +32 + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +33 + #ETH_HDR_SIZE + 14 + + ) + +34 + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +36 + #IPv4_HEADER_SIZE + 20 + + ) + +37 + #IPv6_HEADER_SIZE + 40 + + ) + +39 + #IP_VERSION_4 + 4 + + ) + +40 + #IP_VERSION_6 + 6 + + ) + +42 + #¹e_aá +( +£q2 +, +£q1 +è + `¹e_befÜe +(£q1, seq2) + + ) + +43 +le + +ut8_t + + $¹e_befÜe +( +ut32_t + +£q1 +, ut32_ +£q2 +) + +45 ( +t32_t +è( +£q1 + - +£q2 +) < 0; + +46 + } +} + +50 + #ùNO + +RTE_CT_TCP_NONE + + + ) + +51 + #ùSS + +RTE_CT_TCP_SYN_SENT + + + ) + +52 + #ùSR + +RTE_CT_TCP_SYN_RECV + + + ) + +53 + #ùES + +RTE_CT_TCP_ESTABLISHED + + + ) + +54 + #ùFW + +RTE_CT_TCP_FIN_WAIT + + + ) + +55 + #ùCW + +RTE_CT_TCP_CLOSE_WAIT + + + ) + +56 + #ùLA + +RTE_CT_TCP_LAST_ACK + + + ) + +57 + #ùTW + +RTE_CT_TCP_TIME_WAIT + + + ) + +58 + #ùCL + +RTE_CT_TCP_CLOSE + + + ) + +59 + #ùS2 + +RTE_CT_TCP_SYN_SENT_2 + + + ) + +60 + #ùIV + +RTE_CT_TCP_MAX + + + ) + +61 + #ùIG + +RTE_CT_TCP_IGNORE + + + ) + +63 cÚ¡ +ut8_t + + 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 +ut8_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 +le + +ut8_t + + +142 + $¹e_ù_g_dex +( +ut8_t + +tý_æags +) + +144 +ut8_t + +impÜÁ_æags +; + +146 +tý_æags + &= 0x3f; + +147 +impÜÁ_æags + = (( +tý_æags + & 0x10) >> 1) | (tcp_flags & 7); + +150 ià( + `uÆiky +(( +tý_æags + == 0) || (tcp_flags == 0x3f))) + +152 +RTE_CT_TCP_ILL_FLAG +; + +154 +¹e_ù_tý_æags_to_¡©e_bË_dex +[ +impÜÁ_æags +]; + +156 + } +} + +158 +le + + +159 + $¹e_ù_eh_deùiÚ_has_æags +( +¹e_ù_úxn_d©a + * +cd +, +ut8_t + +æags +) + +161 (( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£ +[0]. +æags + | cd-> + +162 +ù_´ÙocÞ +. +tý_ù_d©a +. +£ +[1]. +æags +) & flags) != 0; + +163 + } +} + +165 +le + +ut32_t + + $¹e_ù_£q_¶us_Ëngth +( +¹e_mbuf + * +pkt +, + +166 +ut8_t + +_hdr_size +) + +168 +ut16_t + +pkt_Ëngth + = 0; + +169 +tý_hdr + * +týhd + = + +170 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +171 ( +IP_START + + + +172 +_hdr_size +)); + +173 +ut32_t + +tý_hdr_size + = ( +týhd +-> +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_bsw16 +( +ihdr +-> +tÙ®_Ëngth +); + +182 ià( +_hdr_size + =ð +IPv6_HEADER_SIZE +) { + +183 +v6_hdr + * +ihdr + = (v6_hd¸*) +_hdr +; + +185 +pkt_Ëngth + = + `¹e_bsw16 +( +ihdr +-> +·ylßd_Ën +è+ +IPv6_HEADER_SIZE +; + +195 + `¹e_bsw32 +( +týhd +-> +£Á_£q +) + + +196 +pkt_Ëngth + - +_hdr_size + - +tý_hdr_size + + + +197 (( +týhd +-> +tý_æags + & ( +RTE_CT_TCPHDR_SYN + | +RTE_CT_TCPHDR_FIN +)) != + +200 + } +} + +203 + $¹e_ù_check_fÜ_sÿlg_ªd_§ck_³rm +( + +204 +¹e_mbuf + * +pkt +, + +205 +¹e_ù_tý_¡©e + * +¡©e +, + +206 +ut8_t + +_hdr_size +) + +209 +tý_hdr + * +týhd + = + +210 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +211 ( +IP_START + + + +212 +_hdr_size +)); + +213 +ut32_t + +d©aoff__bys + = ( +týhd +-> +d©a_off + & 0xf0) >> 2; + +214 +ut32_t + +Ëngth + = +d©aoff__bys + - ( +tý_hdr +); + +216 +¡©e +-> +sÿË + = 0; + +217 +¡©e +-> +æags + = 0; + +219 ià( +Ëngth + == 0) + +222 +ut8_t + * +ÝtiÚs_±r + = + +223 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +224 ( +IP_START + + +_hdr_size + + + +225 ( +tý_hdr +))); + +227 +Ëngth + > 0) { + +228 +ut8_t + +ÝtiÚ + = * +ÝtiÚs_±r +; + +229 +ut8_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ýhd +) + +276 + `´tf +("Tý hd: src_pÜt=%d", + `¹e_bsw16 +( +týhd +-> +¤c_pÜt +)); + +277 + `´tf +(", d¡_pÜt=%d", + `¹e_bsw16 +( +týhd +-> +d¡_pÜt +)); + +278 + `´tf +(", st_£q=%u", + `¹e_bsw32 +( +týhd +-> +£Á_£q +)); + +279 + `´tf +(",ecv_ack=%u", + `¹e_bsw32 +( +týhd +-> +»cv_ack +)); + +280 + `´tf +(",d©a_off=%d", +týhd +-> +d©a_off + / 16); + +281 + `´tf +(",tý_æags=%02x", +týhd +-> +tý_æags +); + +282 + `´tf +(",x_w=%d\n", + `¹e_bsw16 +( +týhd +-> +rx_w +)); + +284 + } +} + +286 +le + + +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 +ut8_t + +_hdr_size +) + +307 +tý_hdr + * +týhd + = + +308 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +309 ( +IP_START + + +_hdr_size +)); + +311 +¹e_ù_tý_¡©es + +Ãw_¡©e +; + +312 +ut8_t + +dex +; + +313 +¹e_ù_tý_¡©e + * +£nd + = + +314 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£ +[ +RTE_CT_DIR_ORIGINAL +]; + +315 +¹e_ù_tý_¡©e + * +»ûiv + = + +316 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +£ +[ +RTE_CT_DIR_REPLY +]; + +317 +ut16_t + +w +; + +319 ià( +CT_DEBUG +) + +320 + `¹e_ù_týdi¥Ïy_hdr +( +týhd +); + +322 +dex + = + `¹e_ù_g_dex +( +týhd +-> +tý_æags +); + +323 +Ãw_¡©e + = +¹e_ù_tý_¡©e_bË +[0][ +dex +][ +RTE_CT_TCP_NONE +]; + +325 ià( + `uÆiky +( +Ãw_¡©e + >ð +RTE_CT_TCP_MAX +)) { + +326 ià( +CT_DEBUG +) + +327 + `´tf +("invalidew state with flags %02x\n", + +328 +týhd +-> +tý_æags +); + +329 +RTE_CT_DROP_PACKET +; + +337 ià( + `uÆiky +(( +Ã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 + = sd-> +maxd + = + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +353 +w + = + `¹e_bsw16 +( +týhd +-> +rx_w +); + +354 +£nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +356 ià( + `liky +( +Ãw_¡©e + =ð +RTE_CT_TCP_SYN_SENT +)) { + +358 + `¹e_ù_check_fÜ_sÿlg_ªd_§ck_³rm +( +pkt +, +£nd +, + +359 +_hdr_size +); + +361 +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅroxd + = +u£_syÅroxy +; + +363 ià( +u£_syÅroxy +) { + +370 ià( +CT_DEBUG + > 2) + +371 + `´tf +("synproxy sending SYN-ACKo client\n"); + +373 +RTE_CT_SEND_CLIENT_SYNACK +; + +382 +£nd +-> +maxd + +ð£nd-> +maxw +; + +383 +£nd +-> +æags + = +»ûiv +->flags = + +384 ( +RTE_CT_TCP_FLAG_SACK_PERM + | +RTE_CT_TCP_FLAG_BE_LIBERAL +); + +387 ià( +CT_DEBUG + > 0) { + +388 + `´tf +("tcp_new: sendernd=%u maxend=%u maxwin=%u scale=%i", + +389 +£nd +-> +d +, sd-> +maxd +, sd-> +maxw +, + +390 +£nd +-> +sÿË +); + +391 + `´tf +("eceivernd=%u maxend=%u maxwin=%u scale=%i\n", + +392 +»ûiv +-> +d +,eûiv-> +maxd +, + +393 +»ûiv +-> +maxw +, + +394 +»ûiv +-> +sÿË +); + +397 +RTE_CT_OPEN_CONNECTION +; + +398 + } +} + +400 +ut32_t + + +401 + $¹e_ù_tý_§ck +( +¹e_mbuf + * +pkt +, +ut8_t + +_hdr_size +) + +403 +tý_hdr + * +týhd + = + +404 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +405 ( +IP_START + + + +406 +_hdr_size +)); + +407 +ut16_t + +d©aoff__bys + = ( +týhd +-> +d©a_off + & 0xf0) >> 2; + +408 +ut16_t + +Ëngth + = +d©aoff__bys + - ( +tý_hdr +); + +409 +ut32_t + +§ck + = + `¹e_bsw32 +( +týhd +-> +»cv_ack +); + +411 ià( + `uÆiky +(! +Ëngth +)) + +412 +§ck +; + +414 +ut8_t + * +ÝtiÚs_±r + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +415 ( +IP_START + + +_hdr_size + + ( +tý_hdr +))); + +417 +Ëngth + > 0) { + +418 +ut8_t + +Ýcode + = * +ÝtiÚs_±r +; + +419 +ut8_t + +Ýsize + = +ÝtiÚs_±r +[1]; + +420 +i +; + +421 +ut32_t + * +§ck_±r +; + +423 +Ýcode +) { + +424 +RTE_CT_TCPOPT_TIMESTAMP +: + +428 +RTE_CT_TCPOPT_EOL +: + +429 +§ck +; + +431 +RTE_CT_TCPOPT_NOP +: + +432 +Ëngth +--; + +433 +Ý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 ( +ut32_t + *è& +ÝtiÚs_±r +[ +i +]; + +456 +ut32_t + +ack + = + `¹e_bsw32 +(* +§ck_±r +); + +458 ià( + `¹e_aá +( +ack +, +§ck +)) + +459 +§ck + = +ack +; + +461 +§ck +; + +467 ià(( +Ýsize + < 2è|| (Ýsiz> +Ëngth +)) { + +468 + `´tf +("rte_ct_tcp_sack: something wrong, opsize %i,", + +469 +Ýsize +); + +470 + `´tf +("gth %i\n", +Ëngth +); + +471 +§ck +; + +473 +ÝtiÚs_±r + +ð +Ýsize +; + +474 +Ëngth + -ð +Ýsize +; + +476 +§ck +; + +477 + } +} + +483 +le + + +484 + $¹e_ù_check_fÜ_»ªsmissiÚs +( + +485 +¹e_ù_tý + * +¡©e +, + +486 +ut8_t + +d +, + +487 +ut32_t + +£q +, + +488 +ut32_t + +ack +, + +489 +ut32_t + +d +, + +490 +ut16_t + +w +) + +492 ià( +¡©e +-> +Ï¡_d + =ð +d + + +493 && +¡©e +-> +Ï¡_£q + =ð +£q + + +494 && +¡©e +-> +Ï¡_ack + =ð +ack + + +495 && +¡©e +-> +Ï¡_d + =ð +d + && s-> +Ï¡_w + =ð +w +) + +496 +¡©e +-> +»ªs +++; + +498 +¡©e +-> +Ï¡_d + = +d +; + +499 +¡©e +-> +Ï¡_£q + = +£q +; + +500 +¡©e +-> +Ï¡_ack + = +ack +; + +501 +¡©e +-> +Ï¡_d + = +d +; + +502 +¡©e +-> +Ï¡_w + = +w +; + +503 +¡©e +-> +»ªs + = 0; + +505 + } +} + +511 +ut8_t + + +512 + $¹e_ù_tý__wdow +( + +513 +¹e_ù_úxn_d©a + * +cd +, + +514 +¹e_ù_úxn_ack + * +ù +, + +515 +¹e_ù_tý + * +¡©e +, + +516 +¹e_ù_pkt_deùiÚ + +d +, + +517 +ut8_t + +dex +, + +518 +¹e_mbuf + * +pkt +, + +519 +ut8_t + +_hdr_size +) + +521 +¹e_ù_tý_¡©e + * +£nd + = & +¡©e +-> +£ +[ +d +]; + +522 +¹e_ù_tý_¡©e + * +»ûiv + = & +¡©e +-> +£ +[! +d +]; + +523 +ut32_t + +£q +, +ack +, +§ck +, +d +, +w +, +sw +; + +524 +ut8_t + +_»cv_w +, +tý_æags +; + +525 +¹e_ù_·ck_aùiÚ + +»s +; + +527 * +hdr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +IP_START +); + +528 +tý_hdr + * +týhd + = + +529 ( +tý_hdr + *) + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +530 ( +IP_START + + +_hdr_size +)); + +532 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅroxd +) + +533 + `¹e_¥_adju¡_þÁ_ack_befÜe_wdow_check +( +cd +, +hdr +, + +534 +týhd +, +d +); + +537 +£q + = + `¹e_bsw32 +( +týhd +-> +£Á_£q +); + +538 +ack + = +§ck + = + `¹e_bsw32 +( +týhd +-> +»cv_ack +); + +539 +w + = + `¹e_bsw16 +( +týhd +-> +rx_w +); + +540 +d + = + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +541 +tý_æags + = +týhd +->tcp_flags; + +543 ià( +»ûiv +-> +æags + & +RTE_CT_TCP_FLAG_SACK_PERM +) + +544 +§ck + = + `¹e_ù_tý_§ck +( +pkt +, +_hdr_size +); + +546 ià( + `uÆiky +( +£nd +-> +maxw + == 0)) { + +548 ià( +tý_æags + & +RTE_CT_TCPHDR_SYN +) { + +553 +£nd +-> +d + = sd-> +maxd + =nd; + +554 +£nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +556 + `¹e_ù_check_fÜ_sÿlg_ªd_§ck_³rm +( +pkt +, +£nd +, + +557 +_hdr_size +); + +563 ià(( +£nd +-> + +564 +æags + & +»ûiv +->flags & + +565 +RTE_CT_TCP_FLAG_WINDOW_SCALE +) == 0) + +566 +£nd +-> +sÿË + = +»ûiv +->scale = 0; + +568 ià(!( +tý_æags + & +RTE_CT_TCPHDR_ACK +)) + +576 +£nd +-> +d + =nd; + +577 +sw + = +w + << +£nd +-> +sÿË +; + +578 +£nd +-> +maxw + = ( +sw + == 0 ? 1 : swin); + +579 +£nd +-> +maxd + = +d + + sd-> +maxw +; + +585 ià( +»ûiv +-> +maxw + == 0) + +586 +»ûiv +-> +d + =eûiv-> +maxd + = +§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 + = sd-> +maxd + =nd; + +600 +£nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +602 + `¹e_ù_check_fÜ_sÿlg_ª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 +-> +maxd + + 1è&& +_»cv_w + && + +623 + `¹e_befÜe +( +§ck +, +»ûiv +-> +d + + 1) && + +624 + `¹e_aá +( +§ck +, + +625 +»ûiv +-> +d + - + `RTE_MAX +( +£nd +-> +maxw +, + +626 ( +ut32_t +) +RTE_MAX_ACKWIN_CONST +) - 1)) { + +633 ià(!( +tý_æags + & +RTE_CT_TCPHDR_SYN +)) + +634 +w + <<ð +£nd +-> +sÿË +; + +637 +sw + = +w + + ( +§ck + - +ack +); + +638 +£nd +-> +maxw + = + `RTE_MAX +(£nd->maxw, +sw +); + +640 ià( + `¹e_aá +( +d +, +£nd +->end)) { + +641 +£nd +-> +d + =nd; + +642 +£nd +-> +æags + |ð +RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED +; + +645 ià( +tý_æags + & +RTE_CT_TCPHDR_ACK +) { + +646 ià(!( +£nd +-> +æags + & +RTE_CT_TCP_FLAG_MAXACK_SET +)) { + +647 +£nd +-> +maxack + = +ack +; + +648 +£nd +-> +æags + |ð +RTE_CT_TCP_FLAG_MAXACK_SET +; + +649 } ià( + `¹e_aá +( +ack +, +£nd +-> +maxack +)) + +650 +£nd +-> +maxack + = +ack +; + +654 ià( +»ûiv +-> +maxw + !ð0 && + `¹e_aá +( +d +, +£nd +-> +maxd +)) + +655 +»ûiv +-> +maxw + +ð +d + - +£nd +-> +maxd +; + +657 ià( + `¹e_aá +( +§ck + + +w +, +»ûiv +-> +maxd + - 1)) + +658 +»ûiv +-> +maxd + = +§ck + + + `RTE_MAX +( +w +, ( +ut32_t +)1); + +660 ià( +ack + =ð +»ûiv +-> +d +) + +661 +»ûiv +-> +æags + &ð~ +RTE_CT_TCP_FLAG_DATA_UNACKNOWLEDGED +; + +664 ià( +dex + =ð +RTE_CT_TCP_ACK_FLAG +) + +665 + `¹e_ù_check_fÜ_»ª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ý__wdow FAILED fÜ %p\n", +cd +); + +677 + `´tf +("rte_before(%u, %u + 1) is %d\n", + +678 +£q +, +£nd +-> +maxd + + 1, + +679 + `¹e_befÜe +( +£q +, +£nd +-> +maxd + + 1)); + +680 + `´tf +("!%u ||te_after(%u, %u - %u - 1) is %d\n", + +681 +»ûiv +-> +maxw +, +d +, +£nd +->end, + +682 +»ûiv +-> +maxw +, +_»cv_w +); + +683 + `´tf +("¹e_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 ( +ut32_t +) +RTE_MAX_ACKWIN_CONST +) + +696 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅroxd +) + +697 + `¹e_¥_adju¡_£rv_£q_aá_wdow_check +( +cd +, +hdr +, + +698 +týhd +, +d +); + +699 +»s +; + +700 + } +} + +703 +le + +ut8_t + + +704 + $¹e_ù_choo£_m_timeout_¡©e +( + +705 +¹e_ù_úxn_ack + * +ù +, + +706 +ut8_t + +¡©e1 +, + +707 +ut8_t + +¡©e2 +) + +709 ià( +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +¡©e1 +] < + +710 +ù +-> +ù_timeout +. +týtimeout +. +tý_timeouts +[ +¡©e2 +]) + +711 +¡©e1 +; + +713 +¡©e2 +; + +714 + } +} + +718 +¹e_ù_·ck_aùiÚ + + +719 + $¹e_ù_vify_tý_·ck +( + +720 +¹e_ù_úxn_ack + * +ù +, + +721 +¹e_ù_úxn_d©a + * +cd +, + +722 +¹e_mbuf + * +pkt +, + +723 +ut8_t + +key_was_æ³d +, + +724 +ut8_t + +_hdr_size +) + +726 +tý_hdr + * +týhd + = (tcp_hdr *) + +727 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, ( +IP_START + + +_hdr_size +)); + +729 +¹e_ù_tý_¡©es + +Ãw_¡©e +, +Þd_¡©e +; + +730 +¹e_ù_pkt_deùiÚ + +d +; + +731 +ut8_t + +dex +; + +735 +ut8_t + +timeout_¡©e +; + +737 +d + = ( +cd +-> +key_is_þÁ_Üd + =ð! +key_was_æ³d +); + +739 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅroxd + && + +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 +ut32_t + +»cv_ack + = + `¹e_bsw32 +( +týhd +->recv_ack); + +753 +ut32_t + +£Á_£q + = + `¹e_bsw32 +( +týhd +->sent_seq); + +755 +check_wdow + = 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ýhd +-> +tý_æags +); + +762 +Ãw_¡©e + = +¹e_ù_tý_¡©e_bË +[ +d +][ +dex +][ +Þd_¡©e +]; + +764 ià( +Ãw_¡©e + =ð +RTE_CT_TCP_MAX +) { + +765 ià( +CT_DEBUG +) { + +766 + `´tf +("!!!!invalid stateransition from %s ", + +767 +¹e_ù_tý_Çmes +[ +Þd_¡©e +]); + +768 + `´tf +("with flags 0x%02x\n", + +769 +týhd +-> +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Åroxd + && + +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 +ut16_t + +w + = + `¹e_bsw16 +( +týhd +-> +rx_w +); + +809 +£nd +-> +d + = sd-> +maxd + = + +810 + `¹e_ù_£q_¶us_Ëngth +( +pkt +, +_hdr_size +); + +811 +£nd +-> +maxw + = + `RTE_MAX +( +w +, ( +ut32_t +)1); + +812 + `¹e_ù_check_fÜ_sÿlg_ª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Åroxd + && + +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ý__wdow +( +cd +, +ù +, + +834 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +835 +d +, +dex +, +pkt +, +_hdr_size +)) { + +836 +ù +-> +couÁs +-> +pkts_drÝ_outof_wdow +++; + +837 +RTE_CT_DROP_PACKET +; + +840 ià( +STATE_TRACKING +) { + +841 + `´tf +("synproxy full cnxn complete,"); + +842 + `´tf +("ew s %s\n", +¹e_ù_tý_Çmes + + +843 [ +RTE_CT_TCP_ESTABLISHED +]); + +852 + `¹e_¥_cvt_to_¥ooãd_£rv_ack +( +cd +, +pkt +); + +854 +dex + = + `¹e_ù_g_dex +( +týhd +-> +tý_æags +); + +856 ià(! + `¹e_ù_tý__wdow +( +cd +, +ù +, + +857 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +858 ! +d +, +dex +, +pkt +, +_hdr_size +)) { + +859 +ù +-> +couÁs +-> +pkts_drÝ_outof_wdow +++; + +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_·cks +( +ù +, +cd +); + +876 +RTE_CT_SEND_SERVER_ACK +; + +879 +RTE_CT_TCP_SYN_SENT +: + +886 ià( +Þd_¡©e + < +RTE_CT_TCP_TIME_WAIT +) + +894 +RTE_CT_REOPEN_CNXN_AND_FORWARD_PACKET +; + +896 +RTE_CT_TCP_IGNORE +: + +912 ià( +cd +-> +ù_´ÙocÞ +. +syÅroxy_d©a +. +syÅroxd + && + +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 +Ï¡_£ +-> +maxd + = + +940 +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_d +; + +941 +Ï¡_£ +-> +maxw + = + +942 + `RTE_MAX +( +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +. +Ï¡_w +, + +943 ( +ut32_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_bsw16 +( +týhd +-> +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ÿlg_ª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_wdow + = 0; + +1054 ià( + `liky +( +check_wdow +)) { + +1055 ià( + `uÆiky +(! + `¹e_ù_tý__wdow +( +cd +, +ù +, + +1056 & +cd +-> +ù_´ÙocÞ +. +tý_ù_d©a +, + +1057 +d +, +dex +, + +1058 +pkt +, +_hdr_size +))) { + +1059 +ù +-> +couÁs +-> +pkts_drÝ_outof_wdow +++; + +1060 +RTE_CT_DROP_PACKET +; + +1064 ià( +Ãw_¡©e + =ð +RTE_CT_TCP_ESTABLISHED + && + +1065 +Þd_¡©e + !ð +RTE_CT_TCP_ESTABLISHED +) + +1068 +ù +-> +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_ù_eh_deù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ýhd +-> +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 + ~<¡rg.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_ackg.h +" + +37 + #RTE_CT_TCPOPT_EOL + 0 + + ) + +38 + #RTE_CT_TCPOPT_NOP + 1 + + ) + +39 + #RTE_CT_TCPOPT_MSS + 2 + + ) + +40 + #RTE_CT_TCPOPT_WINDOW + 3 + + ) + +41 + #RTE_CT_TCPOPT_SACK_PERM + 4 + + ) + +42 + #RTE_CT_TCPOPT_SACK + 5 + + ) + +43 + #RTE_CT_TCPOPT_TIMESTAMP + 8 + + ) + +45 + #RTE_CT_TCPOLEN_MSS + 4 + + ) + +46 + #RTE_CT_TCPOLEN_WINDOW + 3 + + ) + +47 + #RTE_CT_TCPOLEN_SACK_PERM + 2 + + ) + +48 + #RTE_CT_TCPOLEN_TIMESTAMP + 10 + + ) + +49 + #RTE_CT_TCPOLEN_PER_SACK_ENTRY + 8 + + ) + +51 + #RTE_CT_TCPOLEN_MSS_ALIGNED + 4 + + ) + +52 + #RTE_CT_TCPOLEN_WINDOW_ALIGNED + 4 + + ) + +53 + #RTE_CT_TCPOLEN_SACK_PERM_ALIGNED + 4 + + ) + +54 + #RTE_CT_TCPOLEN_TIMESTAMP_ALIGNED + 12 + + ) + +56 + #RTE_CT_MAX_TCP_WINDOW_SCALE + 14 + + ) + +58 + #RTE_SP_OPTIONS_MSS + 1 + + ) + +59 + #RTE_SP_OPTIONS_WINDOW_SCALE + 2 + + ) + +60 + #RTE_SP_OPTIONS_TIMESTAMP + 4 + + ) + +61 + #RTE_SP_OPTIONS_SACK_PERM + 8 + + ) + +64 + 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_deùiÚ + { + +170 + mRTE_CT_DIR_ORIGINAL +, + +171 + mRTE_CT_DIR_REPLY + + +174 + s¹e_ù_tý_¡©e + { + +175 +ut32_t + + md +; + +176 +ut32_t + + mmaxd +; + +177 +ut32_t + + mmaxw +; + +178 +ut32_t + + mmaxack +; + +179 +ut8_t + + msÿË +; + +180 +ut8_t + + mæags +; + +183 + s¹e_syÅroxy_ÝtiÚs + { + +184 +ut8_t + + mÝtiÚs +; + +185 +ut8_t + + mwdow_sÿË +; + +186 +ut16_t + + mmss +; + +187 +ut32_t + + mts_v® +; + +188 +ut32_t + + mts_echo_»¶y +; + +189 +ut16_t + + ml_wdow +; + +192 + sù_¥_úxn_d©a + { + +196 +¹e_mbuf + * + mbufã»d_pkt_li¡ +; + +197 +ut32_t + + mÜig®_¥ooãd_£q +; + +199 +ut32_t + + m£q_diff +; + +200 +¹e_syÅroxy_ÝtiÚs + + múxn_ÝtiÚs +; + +202 +ut8_t + + msyÅroxd +; + +203 +boÞ + + mh®f_e¡ablished +; + +205 +boÞ + + múxn_e¡ablished +; + +208 + s¹e_ù_tý + { + +209 +¹e_ù_tý_¡©e + + m£ +[2]; + +210 +ut8_t + + m¡©e +; + +211 +ut8_t + + mÏ¡_d +; + +214 +ut8_t + + m»ªs +; + +215 +ut8_t + + mÏ¡_dex +; + +216 +ut32_t + + mÏ¡_£q +; + +217 +ut32_t + + mÏ¡_ack +; + +218 +ut32_t + + mÏ¡_d +; + +219 +ut16_t + + mÏ¡_w +; + +221 +ut8_t + + mÏ¡_wsÿË +; + +222 +ut8_t + + mÏ¡_æags +; + +230 + s¹e_ù_úxn_couÁs + { + +231 +ut64_t + + m·cks_»ûived +; + +232 +ut64_t + + m·cks_fÜw¬ded +; + +233 +ut64_t + + m·cks_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 +ut32_t + + mkey +[10]; + +260 +¹e_ù_´Ùo + + mù_´ÙocÞ +; + +263 +ut64_t + + mex³ùed_timeout +; + +266 +ut8_t + + m¡©e_u£d_fÜ_tim +; + +269 +ut8_t + + mkey_is_þÁ_Üd +; + +270 +ut8_t + + mcÚn¡©us +; + +271 +ut8_t + + m´ÙocÞ +; + +273 +ut8_t + + mty³ +; + +276 +ut8_t + + m®g_by·ss_æag +; + +278 +ut8_t + + m£rv_deùiÚ +; + +279 +t16_t + + mtýSeqdiff +; + +281 +ut8_t + + máp_£ssiÚ_ty³ +; + +282 +ut32_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 +ut64_t + + mtý_timeouts +[ +RTE_CT_TCP_MAX + + 1]; + +299 + s¹e_ù_misc_ÝtiÚs + { + +300 +ut8_t + + msyÅroxy_abËd +; + +301 +ut32_t + + mtý_loo£ +; + +302 +ut32_t + + mtý_be_lib® +; + +303 +ut32_t + + mtý_max_»ªs +; + +306 + s¹e_ù_ud±imeout + { + +307 +ut64_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 +ut32_t + + mhash_keys +[ +RTE_HASH_LOOKUP_BULK_MAX +][10]; + +325 * + mhash_key_±rs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +326 #ifdeà +CT_CGNAT + + +327 +ut32_t + + mposiÚs +[ +RTE_HASH_LOOKUP_BULK_MAX +]; + +330 +ut32_t + + mnum_úxn_s +; + +336 +¹e_ù_úxn_d©a + * + mhash_bË_s +; + +337 +¹e_CT_couÁ_block + * + mcouÁs +; + +339 +ut64_t + + mhtz +; + +340 +ut64_t + + mtimg_cyþes_³r_timg_¡ +; + +341 +ut64_t + + mtimg_100ms_¡s +; + +342 +ut64_t + + mtimg_100ms_¡s_´evious +; + +343 +ut64_t + + mtimg_Ï¡_time +; + +344 +¹e_ù_timeout + + mù_timeout +; + +345 +¹e_ù_misc_Ý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 +ut16_t + + mpor_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 +ut8_t + +_hdr_size +); + +373 +¹e_ù_·ck_aùiÚ + + +374 +¹e_ù_vify_tý_·ck +( + +375 +¹e_ù_úxn_ack + * +¡ +, + +376 +¹e_ù_úxn_d©a + * +úxn +, + +377 +¹e_mbuf + * +pkt +, + +378 +ut8_t + +key_was_æ³d +, + +379 +ut8_t + +_hdr_size +); + +386 +ut8_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 +ut8_t + +key_was_æ³d +); + +411 +¹e_ù_£t_úxn_tim_fÜ_tý +( + +412 +¹e_ù_úxn_ack + * +ù +, + +413 +¹e_ù_úxn_d©a + * +cd +, + +414 +ut8_t + +tý_¡©e +); + +417 +¹e_ù_£t_úxn_tim_fÜ_udp +( + +418 +¹e_ù_úxn_ack + * +ù +, + +419 +¹e_ù_úxn_d©a + * +cd +, + +420 +ut8_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_wdow_check +( + +452 +¹e_ù_úxn_d©a + * +cd +, + +453 * +i_hdr +, + +454 +tý_hdr + * +thdr +, + +455 +¹e_ù_pkt_deùiÚ + +d +); + +458 +¹e_¥_adju¡_£rv_£q_aá_wdow_check +( + +459 +¹e_ù_úxn_d©a + * +cd +, + +460 * +i_hdr +, + +461 +tý_hdr + * +thdr +, + +462 +¹e_ù_pkt_deù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_·cks +( + +481 +¹e_ù_úxn_ack + * +ù +, + +482 +¹e_ù_úxn_d©a + * +cd +); + + @VIL/conntrack/rte_ct_udp.c + +17 + ~<¡dlib.h +> + +18 + ~<¡rg.h +> + +19 + ~"¹e_ù_tý.h +" + +20 + ~"¹e_úxn_ackg.h +" + +22 +ut8_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 +ut8_t + +key_was_æ³d +) + +35 +¹e_ù_pkt_deù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 +ut8_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: Paramame cannot be NULL\n\r", + +33 +__FUNCTION__ +); + +34 +IFM_FAILURE +; + +36 ià( +mode + < 0 || mode > 6) { + +37 + `RTE_LOG +( +ERR +, +IFM +, "%s: Param mode should be withing 0o 6\n\r", + +38 +__FUNCTION__ +); + +39 +IFM_FAILURE +; + +41 ià( +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 %slreadyxists inhe" + +92 " Üli¡\n\r", +__FUNCTION__ +, +Çme +); + +93 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +94 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiringock @ %d\n\r", + +95 +__FUNCTION__ +, +__LINE__ +); + +96 ià( +USE_RTM_LOCKS +) + +97 + `¹m_lock +(); + +99 + `¹e_rwlock_wre_lock +(& +rwlock +); + +101 ià(!( +bÚd_pÜt +-> +æags + & +IFM_MASTER +)) { + +102 + `RTE_LOG +( +ERR +, +IFM +, "%s: Previously ort %s wasot " + +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_wre_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_wre_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: Acquiringock @ %d\n\r", + +145 +__FUNCTION__ +, +__LINE__ +); + +146 ià( +USE_RTM_LOCKS +) + +147 + `¹m_uÆock +(); + +149 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +151 +pÜt_id +; + +152 + } +} + +154 + $ifm_bÚd_pÜt_de +(cÚ¡ * +Çme +) + +156 +l2_phy_rçû_t + * +bÚd_pÜt +; + +157 ià( +Çme + =ð +NULL +) { + +158 + `RTE_LOG +( +ERR +, +IFM +, "%s: Paramame 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 WRock @ %d\n\r", + +165 +__FUNCTION__ +, +__LINE__ +); + +166 ià( +USE_RTM_LOCKS +) + +167 + `¹m_lock +(); + +169 + `¹e_rwlock_wre_lock +(& +rwlock +); + +170 ià( +bÚd_pÜt + =ð +NULL +) { + +171 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort withame %sot" + +172 " found iÀthli¡\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 isot " + +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 WRock @ %d\n\r", + +180 +__FUNCTION__ +, +__LINE__ +); + +181 ià( +USE_RTM_LOCKS +) { + +182 + `¹m_uÆock +(); + +184 + `¹e_rwlock_wre_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 unbindll slave " + +190 "pÜt äomhbÚd Ü%s\n\r", +__FUNCTION__ +, +Çme +); + +191 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +192 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +193 +__FUNCTION__ +, +__LINE__ +); + +194 ià( +USE_RTM_LOCKS +) { + +195 + `¹m_uÆock +(); + +197 + `¹e_rwlock_wre_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: Failedo delete " + +205 "bÚd Ü%s\n\r", +__FUNCTION__ +, +Çme +); + +206 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +207 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +208 +__FUNCTION__ +, +__LINE__ +); + +209 ià( +USE_RTM_LOCKS +) { + +210 + `¹m_uÆock +(); + +212 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +226 +__FUNCTION__ +, +__LINE__ +); + +227 ià( +USE_RTM_LOCKS +) + +228 + `¹m_uÆock +(); + +230 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +231 + `ifm_»move_pÜt_das +( +bÚd_pÜt +-> +pmdid +); + +233 +IFM_SUCCESS +; + +234 + } +} + +236 + $ifm_add_¦ave_pÜt +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦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 WRock @ %d\n\r", + +248 +__FUNCTION__ +, +__LINE__ +); + +249 ià( +USE_RTM_LOCKS +) { + +250 + `¹m_lock +(); + +252 + `¹e_rwlock_wre_lock +(& +rwlock +); + +254 ià( +bÚd_pÜt + =ð +NULL +) { + +255 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +259 +__FUNCTION__ +, +__LINE__ +); + +260 ià( +USE_RTM_LOCKS +) { + +261 + `¹m_uÆock +(); + +263 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +265 +IFM_FAILURE +; + +267 ià( +¦ave_pÜt + =ð +NULL +) { + +268 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave ort %u isotvailable 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 WRock @ %d\n\r", + +272 +__FUNCTION__ +, +__LINE__ +); + +273 ià( +USE_RTM_LOCKS +) { + +274 + `¹m_uÆock +(); + +276 + `¹e_rwlock_wre_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 isot 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 WRock @ %d\n\r", + +286 +__FUNCTION__ +, +__LINE__ +); + +287 ià( +USE_RTM_LOCKS +) { + +288 + `¹m_uÆock +(); + +290 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +301 +__FUNCTION__ +, +__LINE__ +); + +302 ià( +USE_RTM_LOCKS +) { + +303 + `¹m_uÆock +(); + +305 + `¹e_rwlock_wre_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_wre_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_wre_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 +-> +lk_¥d + !ð +¦ave_pÜt +->link_speed + +350 && +bÚd_pÜt +-> +lk_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 WRock @ %d\n\r", + +356 +__FUNCTION__ +, +__LINE__ +); + +357 ià( +USE_RTM_LOCKS +) { + +358 + `¹m_uÆock +(); + +360 + `¹e_rwlock_wre_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: Failedodd slave ort %uo 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 WRock @ %d\n\r", + +375 +__FUNCTION__ +, +__LINE__ +); + +376 ià( +USE_RTM_LOCKS +) { + +377 + `¹m_uÆock +(); + +379 + `¹e_rwlock_wre_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_lk_mÚÜg_g +( +bÚd_pÜt +-> +pmdid +); + +390 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_up_day_ms + = + +391 + `¹e_h_bÚd_lk_up_´Ý_day_g +( +bÚd_pÜt +-> +pmdid +); + +392 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_down_day_ms + = + +393 + `¹e_h_bÚd_lk_down_´Ý_day_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_wre_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 WRock @ %d\n\r", + +437 +__FUNCTION__ +, +__LINE__ +); + +438 ià( +USE_RTM_LOCKS +) { + +439 + `¹m_uÆock +(); + +441 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +443 +IFM_SUCCESS +; + +444 + } +} + +446 + $ifm_»move_¦ave_pÜt +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦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 WRock @ %d\n\r", + +457 +__FUNCTION__ +, +__LINE__ +); + +458 ià( +USE_RTM_LOCKS +) { + +459 + `¹m_lock +(); + +461 + `¹e_rwlock_wre_lock +(& +rwlock +); + +463 ià( +bÚd_pÜt + =ð +NULL +) { + +464 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable " + +465 " Üli¡.\n\r", +__FUNCTION__ +, +bÚded_pÜt_id +); + +466 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +467 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +468 +__FUNCTION__ +, +__LINE__ +); + +469 ià( +USE_RTM_LOCKS +) + +470 + `¹m_uÆock +(); + +472 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +473 +IFM_FAILURE +; + +475 ià( +¦ave_pÜt + =ð +NULL +) { + +476 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave ort %u isotvailable " + +477 " Üli¡.\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +); + +478 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +479 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +480 +__FUNCTION__ +, +__LINE__ +); + +481 ià( +USE_RTM_LOCKS +) + +482 + `¹m_uÆock +(); + +484 + `¹e_rwlock_wre_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 isot 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 WRock @ %d\n\r", + +492 +__FUNCTION__ +, +__LINE__ +); + +493 ià( +USE_RTM_LOCKS +) + +494 + `¹m_uÆock +(); + +496 + `¹e_rwlock_wre_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 isot configured" + +501 " ¦avpÜt.\n\r", +__FUNCTION__ +, +¦ave_pÜt_id +); + +502 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +503 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +504 +__FUNCTION__ +, +__LINE__ +); + +505 ià( +USE_RTM_LOCKS +) + +506 + `¹m_uÆock +(); + +508 + `¹e_rwlock_wre_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 isot binded " + +521 "wh 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 WRock @ %d\n\r", + +525 +__FUNCTION__ +, +__LINE__ +); + +526 ià( +USE_RTM_LOCKS +) + +527 + `¹m_uÆock +(); + +529 + `¹e_rwlock_wre_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: Failedo 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 WRock @ %d\n\r", + +538 +__FUNCTION__ +, +__LINE__ +); + +539 ià( +USE_RTM_LOCKS +) + +540 + `¹m_uÆock +(); + +542 + `¹e_rwlock_wre_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 fromhe 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 WRock @ %d\n\r", + +565 +__FUNCTION__ +, +__LINE__ +); + +566 ià( +USE_RTM_LOCKS +) + +567 + `¹m_uÆock +(); + +569 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +570 +IFM_SUCCESS +; + +571 + } +} + +573 + $£t_bÚd_mode +( +ut8_t + +bÚded_pÜt_id +, ut8_ +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 WRock @ %d\n\r", + +581 +__FUNCTION__ +, +__LINE__ +); + +582 ià( +USE_RTM_LOCKS +) + +583 + `¹m_lock +(); + +585 + `¹e_rwlock_wre_lock +(& +rwlock +); + +586 if( +bÚd_pÜt +) + +587 + `ifm_»move_pÜt_das +( +bÚd_pÜt +-> +pmdid +); + +588 ià( +bÚd_pÜt + =ð +NULL +) { + +589 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +600 +__FUNCTION__ +, +__LINE__ +); + +601 ià( +USE_RTM_LOCKS +) + +602 + `¹m_uÆock +(); + +604 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +605 + `ifm_»move_pÜt_das +( +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 WRock @ %d\n\r", + +615 +__FUNCTION__ +, +__LINE__ +); + +616 ià( +USE_RTM_LOCKS +) + +617 + `¹m_uÆock +(); + +619 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +620 + `ifm_»move_pÜt_das +( +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 WRock @ %d\n\r", + +636 +__FUNCTION__ +, +__LINE__ +); + +637 ià( +USE_RTM_LOCKS +) + +638 + `¹m_uÆock +(); + +640 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +641 + `ifm_»move_pÜt_das +( +bÚd_pÜt +-> +pmdid +); + +642 +IFM_SUCCESS +; + +643 + } +} + +645 + $g_bÚd_mode +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut8_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 RDock @ %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 +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦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 WRock @ %d\n\r", + +695 +__FUNCTION__ +, +__LINE__ +); + +696 ià( +USE_RTM_LOCKS +) + +697 + `¹m_lock +(); + +699 + `¹e_rwlock_wre_lock +(& +rwlock +); + +700 ià( +bÚd_pÜt + =ð +NULL +) { + +701 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +705 +__FUNCTION__ +, +__LINE__ +); + +706 ià( +USE_RTM_LOCKS +) + +707 + `¹m_uÆock +(); + +709 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +710 +IFM_FAILURE +; + +712 ià( +¦ave_pÜt + =ð +NULL +) { + +713 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given slave ort %u isotvailable 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 WRock @ %d\n\r", + +717 +__FUNCTION__ +, +__LINE__ +); + +718 ià( +USE_RTM_LOCKS +) + +719 + `¹m_uÆock +(); + +721 + `¹e_rwlock_wre_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 isot 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 WRock @ %d\n\r", + +738 +__FUNCTION__ +, +__LINE__ +); + +739 ià( +USE_RTM_LOCKS +) + +740 + `¹m_uÆock +(); + +742 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +754 +__FUNCTION__ +, +__LINE__ +); + +755 ià( +USE_RTM_LOCKS +) + +756 + `¹m_uÆock +(); + +758 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +768 +__FUNCTION__ +, +__LINE__ +); + +769 ià( +USE_RTM_LOCKS +) + +770 + `¹m_uÆock +(); + +772 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +785 +__FUNCTION__ +, +__LINE__ +); + +786 ià( +USE_RTM_LOCKS +) + +787 + `¹m_uÆock +(); + +789 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +790 +IFM_SUCCESS +; + +791 + } +} + +793 + $g_bÚd_´im¬y_pÜt +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut8_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 RDock @ %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Á +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut32_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 RDock @ %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Á +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut32_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 RDock @ %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 +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦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 RDock @ %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 isotvailable 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 RDock @ %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 +( +ut8_t + +bÚded_pÜt_id +, + +943 +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +( +ut8_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 WRock @ %d\n\r", + +983 +__FUNCTION__ +, +__LINE__ +); + +984 ià( +USE_RTM_LOCKS +) { + +985 + `¹m_lock +(); + +987 + `¹e_rwlock_wre_lock +(& +rwlock +); + +989 ià( +mac_addr + =ð +NULL +) { + +990 + `RTE_LOG +( +ERR +, +IFM +, "%s: MACddress cannot be NULL.\n\r", + +991 +__FUNCTION__ +); + +992 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +993 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +994 +__FUNCTION__ +, +__LINE__ +); + +995 ià( +USE_RTM_LOCKS +) { + +996 + `¹m_uÆock +(); + +998 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1000 +IFM_FAILURE +; + +1003 ià( +bÚd_pÜt + =ð +NULL +) { + +1004 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +1008 +__FUNCTION__ +, +__LINE__ +); + +1009 ià( +USE_RTM_LOCKS +) { + +1010 + `¹m_uÆock +(); + +1012 + `¹e_rwlock_wre_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: Failedo set MACddr 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 WRock @ %d\n\r", + +1021 +__FUNCTION__ +, +__LINE__ +); + +1022 ià( +USE_RTM_LOCKS +) { + +1023 + `¹m_uÆock +(); + +1025 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1033 +__FUNCTION__ +, +__LINE__ +); + +1034 ià( +USE_RTM_LOCKS +) { + +1035 + `¹m_uÆock +(); + +1037 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1039 +IFM_SUCCESS +; + +1040 + } +} + +1042 + $»£t_bÚd_mac_addr +( +ut8_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 WRock @ %d\n\r", + +1050 +__FUNCTION__ +, +__LINE__ +); + +1051 ià( +USE_RTM_LOCKS +) { + +1052 + `¹m_lock +(); + +1054 + `¹e_rwlock_wre_lock +(& +rwlock +); + +1056 ià( +bÚd_pÜt + =ð +NULL +) { + +1057 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +1061 +__FUNCTION__ +, +__LINE__ +); + +1062 ià( +USE_RTM_LOCKS +) { + +1063 + `¹m_uÆock +(); + +1065 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1075 +__FUNCTION__ +, +__LINE__ +); + +1076 ià( +USE_RTM_LOCKS +) { + +1077 + `¹m_uÆock +(); + +1079 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1087 +__FUNCTION__ +, +__LINE__ +); + +1088 ià( +USE_RTM_LOCKS +) { + +1089 + `¹m_uÆock +(); + +1091 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1093 +IFM_FAILURE +; + +1094 + } +} + +1096 + $£t_bÚd_xmpÞicy +( +ut8_t + +bÚded_pÜt_id +, ut8_ +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 WRock @ %d\n\r", + +1106 +__FUNCTION__ +, +__LINE__ +); + +1107 ià( +USE_RTM_LOCKS +) { + +1108 + `¹m_lock +(); + +1110 + `¹e_rwlock_wre_lock +(& +rwlock +); + +1112 ià( +bÚd_pÜt + =ð +NULL +) { + +1113 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +1117 +__FUNCTION__ +, +__LINE__ +); + +1118 ià( +USE_RTM_LOCKS +) { + +1119 + `¹m_uÆock +(); + +1121 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1132 +__FUNCTION__ +, +__LINE__ +); + +1133 ià( +USE_RTM_LOCKS +) { + +1134 + `¹m_uÆock +(); + +1136 + `¹e_rwlock_wre_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: Failedo 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 WRock @ %d\n\r", + +1145 +__FUNCTION__ +, +__LINE__ +); + +1146 ià( +USE_RTM_LOCKS +) { + +1147 + `¹m_uÆock +(); + +1149 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1161 +__FUNCTION__ +, +__LINE__ +); + +1162 ià( +USE_RTM_LOCKS +) { + +1163 + `¹m_uÆock +(); + +1165 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1172 +__FUNCTION__ +, +__LINE__ +); + +1173 ià( +USE_RTM_LOCKS +) { + +1174 + `¹m_uÆock +(); + +1176 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1178 +IFM_SUCCESS +; + +1179 + } +} + +1181 + $g_bÚd_xmpÞicy +( +ut8_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 Acquiringock @ %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 isotvailable 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 RDock @ %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 +ut8_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 RDock @ %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_lk_mÚtÜ_äequcy +( +ut8_t + +bÚded_pÜt_id +, + +1221 +ut32_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 WRock @ %d\n\r", + +1226 +__FUNCTION__ +, +__LINE__ +); + +1227 ià( +USE_RTM_LOCKS +) { + +1228 + `¹m_lock +(); + +1230 + `¹e_rwlock_wre_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 isotvailable 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 WRock @ %d\n\r", + +1241 +__FUNCTION__ +, +__LINE__ +); + +1242 ià( +USE_RTM_LOCKS +) { + +1243 + `¹m_uÆock +(); + +1245 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1256 +__FUNCTION__ +, +__LINE__ +); + +1257 ià( +USE_RTM_LOCKS +) { + +1258 + `¹m_uÆock +(); + +1260 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1262 +IFM_SUCCESS +; + +1264 ià( + `¹e_h_bÚd_lk_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 WRock @ %d\n\r", + +1270 +__FUNCTION__ +, +__LINE__ +); + +1271 ià( +USE_RTM_LOCKS +) { + +1272 + `¹m_uÆock +(); + +1274 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1276 +IFM_FAILURE +; + +1278 +»t + = + `¹e_h_bÚd_lk_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 WRock @ %d\n\r", + +1286 +__FUNCTION__ +, +__LINE__ +); + +1287 ià( +USE_RTM_LOCKS +) { + +1288 + `¹m_uÆock +(); + +1290 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +1297 +__FUNCTION__ +, +__LINE__ +); + +1298 ià( +USE_RTM_LOCKS +) { + +1299 + `¹m_uÆock +(); + +1301 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1303 +IFM_SUCCESS +; + +1304 + } +} + +1306 + $g_bÚd_lk_mÚÜ_äequcy +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut32_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 RDock @ %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_lkdown_day +( +ut8_t + +bÚded_pÜt_id +, +ut32_t + +day_ms +) + +1347 +l2_phy_rçû_t + * +bÚd_pÜt +; + +1348 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1349 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +1350 +__FUNCTION__ +, +__LINE__ +); + +1352 ià( +USE_RTM_LOCKS +) { + +1353 + `¹m_lock +(); + +1355 + `¹e_rwlock_wre_lock +(& +rwlock +); + +1358 +bÚd_pÜt + = + `ifm_g_pÜt +( +bÚded_pÜt_id +); + +1359 +day + = 0; + +1361 ià( +bÚd_pÜt + =ð +NULL +) { + +1362 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +1366 +__FUNCTION__ +, +__LINE__ +); + +1368 ià( +USE_RTM_LOCKS +) { + +1369 + `¹m_uÆock +(); + +1371 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1373 +IFM_FAILURE +; + +1375 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_down_day_ms + =ð +day_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 WRock @ %d\n\r", + +1382 +__FUNCTION__ +, +__LINE__ +); + +1384 ià( +USE_RTM_LOCKS +) { + +1385 + `¹m_uÆock +(); + +1387 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1389 +IFM_SUCCESS +; + +1391 ià( + `¹e_h_bÚd_lk_down_´Ý_day_£t +( +bÚd_pÜt +-> +pmdid +, +day_ms +) < + +1393 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo 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 WRock @ %d\n\r", + +1397 +__FUNCTION__ +, +__LINE__ +); + +1399 ià( +USE_RTM_LOCKS +) { + +1400 + `¹m_uÆock +(); + +1402 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1404 +IFM_FAILURE +; + +1406 +day + = + `¹e_h_bÚd_lk_down_´Ý_day_g +( +bÚd_pÜt +-> +pmdid +); + +1407 ià( +day + < 0) { + +1408 ià( +ifm_debug + & +IFM_DEBUG +) + +1409 + `RTE_LOG +( +INFO +, +IFM +, + +1411 +__FUNCTION__ +); + +1412 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1413 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1414 +__FUNCTION__ +, +__LINE__ +); + +1416 ià( +USE_RTM_LOCKS +) { + +1417 + `¹m_uÆock +(); + +1419 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1421 +IFM_FAILURE +; + +1423 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_down_day_ms + = +day +; + +1424 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1425 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1426 +__FUNCTION__ +, +__LINE__ +); + +1428 ià( +USE_RTM_LOCKS +) { + +1429 + `¹m_uÆock +(); + +1431 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1433 +IFM_SUCCESS +; + +1434 + } +} + +1436 + $g_bÚd_lk_down_day +( +ut8_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 RDock @ %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 isotvailable 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 RDock @ %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 +ut32_t + +day_ms + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_down_day_ms +; + +1463 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1464 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1465 +__FUNCTION__ +, +__LINE__ +); + +1466 ià( +USE_RTM_LOCKS +) { + +1467 + `¹m_uÆock +(); + +1469 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1471 +day_ms +; + +1473 + } +} + +1475 + $£t_bÚd_lkup_day +( +ut8_t + +bÚded_pÜt_id +, +ut32_t + +day_ms +) + +1477 +l2_phy_rçû_t + * +bÚd_pÜt +; + +1478 +day + = 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 WRock @ %d\n\r", + +1483 +__FUNCTION__ +, +__LINE__ +); + +1484 ià( +USE_RTM_LOCKS +) + +1485 + `¹m_uÆock +(); + +1487 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1489 ià( +bÚd_pÜt + =ð +NULL +) { + +1490 + `RTE_LOG +( +ERR +, +IFM +, "%s: Given bond ort %u isotvailable 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 WRock @ %d\n\r", + +1494 +__FUNCTION__ +, +__LINE__ +); + +1495 ià( +USE_RTM_LOCKS +) + +1496 + `¹m_uÆock +(); + +1498 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1499 +IFM_FAILURE +; + +1501 ià( +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_up_day_ms + =ð +day_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 WRock @ %d\n\r", + +1508 +__FUNCTION__ +, +__LINE__ +); + +1509 ià( +USE_RTM_LOCKS +) + +1510 + `¹m_uÆock +(); + +1512 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1513 +IFM_SUCCESS +; + +1515 ià( + `¹e_h_bÚd_lk_up_´Ý_day_£t +( +bÚd_pÜt +-> +pmdid +, +day_ms +) < 0) { + +1516 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo 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 WRock @ %d\n\r", + +1520 +__FUNCTION__ +, +__LINE__ +); + +1522 ià( +USE_RTM_LOCKS +) + +1523 + `¹m_uÆock +(); + +1525 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1526 +IFM_FAILURE +; + +1528 +day + = + `¹e_h_bÚd_lk_up_´Ý_day_g +( +bÚd_pÜt +-> +pmdid +); + +1529 ià( +day + < 0) { + +1530 + `RTE_LOG +( +INFO +, +IFM +, + +1532 +__FUNCTION__ +); + +1533 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1534 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1535 +__FUNCTION__ +, +__LINE__ +); + +1537 ià( +USE_RTM_LOCKS +) + +1538 + `¹m_uÆock +(); + +1540 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1541 +IFM_FAILURE +; + +1543 +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_up_day_ms + = +day +; + +1544 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1545 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +1546 +__FUNCTION__ +, +__LINE__ +); + +1548 ià( +USE_RTM_LOCKS +) + +1549 + `¹m_uÆock +(); + +1551 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1552 +IFM_SUCCESS +; + +1553 + } +} + +1555 + $g_bÚd_lk_up_day +( +ut8_t + +bÚded_pÜt_id +) + +1557 +l2_phy_rçû_t + * +bÚd_pÜt +; + +1558 +ut32_t + +day_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 RDock @ %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 RDock @ %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 +day_ms + = +bÚd_pÜt +-> +bÚd_cÚfig +-> +lk_up_day_ms +; + +1587 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1588 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1589 +__FUNCTION__ +, +__LINE__ +); + +1590 ià( +USE_RTM_LOCKS +) + +1591 + `¹m_uÆock +(); + +1593 + `¹e_rwlock_»ad_uÆock +(& +rwlock +); + +1594 +day_ms +; + +1595 + } +} + + @VIL/l2l3_stack/hle.c + +16 + ~"tsx.h +" + +18 + ~<xmm.h +> + +20 + $hË_ +() + +22 +mux_v® + = 0; + +23 + } +} + +25 + $hË_lock +() + +27 +__©omic_exchªge_n + + +28 (& +mux_v® +, 1, +__ATOMIC_ACQUIRE + | +__ATOMIC_HLE_ACQUIRE +)) + +29 + `_mm_·u£ +(); + +30 +TRUE +; + +31 + } +} + +33 + $hË_»Ëa£ +() + +35 + `__©omic_¡Üe_n +(& +mux_v® +, 0, + +36 +__ATOMIC_RELEASE + | +__ATOMIC_HLE_RELEASE +); + +37 +TRUE +; + +38 + } +} + +40 + $is_hË_locked +() + +42 ( +mux_v® + =ð0è? +FALSE + : +TRUE +; + +43 + } +} + + @VIL/l2l3_stack/hle.h + +17 + #HLE_TRUE + 1 + + ) + +18 + #HLE_FALSE + 0 + + ) + +20 vÞ© + gmux_v® +; + +25 +hË_mux +(); + +30 +hË_lock +(); + +35 +hË_»Ëa£ +(); + +40 +is_locked +(); + + @VIL/l2l3_stack/interface.c + +16 + ~<rçû.h +> + +17 + ~<¹e_byÜd.h +> + +18 + ~<lib_¬p.h +> + +19 + ~<tsx.h +> + +21 +rçû_ma_t + + gifm +; + +22 + gUSE_RTM_LOCKS + = 0; + +23 +¹e_rwlock_t + + grwlock +; + +24 +ut8_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 +, "TSXot currently supported...\n\r"); + +68 +USE_RTM_LOCKS + = 0; + +70 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +71 + `RTE_LOG +( +INFO +, +IFM +, "TSXot supported\n\r"); + +72 +USE_RTM_LOCKS + = 0; + +74 ià( +USE_RTM_LOCKS +) + +75 + `¹m_ +(); + +77 + `¹e_rwlock_ +(& +rwlock +); + +79 +i + = 0; i < +IFM_MAX_PORTARR_SZ +; i++) { + +80 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +81 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +82 +__FUNCTION__ +, +__LINE__ +); + +83 ià( +USE_RTM_LOCKS +) + +84 + `¹m_lock +(); + +86 + `¹e_rwlock_wre_lock +(& +rwlock +); + +88 +ifm +. +pÜt_li¡ +[ +i +] = +NULL +; + +89 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +90 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock @ %d\n\r", + +91 +__FUNCTION__ +, +__LINE__ +); + +92 ià( +USE_RTM_LOCKS +) + +93 + `¹m_uÆock +(); + +95 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +97 +ifm +. +ÅÜt_tlized + = + `¹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 robg %u.\n\r", +ifm +. +ÅÜt_tlized +); + +101 + } +} + +103 + $ifm_»move_pÜt_das +( +ut8_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: Acquiringock %d\n\r", + +108 +__FUNCTION__ +, +__LINE__ +); + +109 ià( +USE_RTM_LOCKS +) + +110 + `¹m_lock +(); + +112 + `¹e_rwlock_wre_lock +(& +rwlock +); + +113 +l2_phy_rçû_t + * +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: Releasingock @ %d\n\r", + +121 +__FUNCTION__ +, +__LINE__ +); + +123 ià( +USE_RTM_LOCKS +) + +124 + `¹m_uÆock +(); + +126 + `¹e_rwlock_wre_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 +( +ut8_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: Acqugock @ %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 RDock @ %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: Releasingock @ %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: Rsgock @ %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: Acqugock @ %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: Releasingock @ %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: Rsgock @ %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 +( +ut8_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: Acqugock @ %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: Releasingock @ %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: Rsgock @ %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: Acqugock @ %d\n\r", +__FUNCTION__ +, + +266 +__LINE__ +); + +268 ià( +USE_RTM_LOCKS +) + +269 + `¹m_lock +(); + +271 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +272 +i + = 0; i < +RTE_MAX_ETHPORTS + && +ifm +. +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: Rsgock @ %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_evt_ÿÎback +( +ut8_t + +pÜt_id +, +¹e_h_evt_ty³ + +ty³ +, + +300 * +·¿m +) + +302 +¹e_h_lk + +lk +; + +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 WRock @ %d\n\r", + +312 +__FUNCTION__ +, +__LINE__ +); + +313 ià( +USE_RTM_LOCKS +) { + +314 + `¹m_lock +(); + +316 + `¹e_rwlock_wre_lock +(& +rwlock +); + +318 + `¹e_h_lk_g +( +pÜt_id +, & +lk +); + +319 +i + = 0; i < +nþÁs +; i++) + +320 +ifm +. +if_þÁ +[ +i +]. + `cb_lkupd©e +( +pÜt_id +, +lk +. +lk_¡©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à( +lk +. +lk_¡©us +) { + +329 +pÜt +-> +lk_¡©us + = +IFM_ETH_LINK_UP +; + +330 +pÜt +-> +lk_¥d + = +lk +.link_speed; + +331 +pÜt +-> +lk_du¶ex + = +lk +.link_duplex; + +332 + `RTE_LOG +( +INFO +, +IFM +, + +334 +pÜt_id +, () +lk +. +lk_¥d +, + +335 ( +lk +. +lk_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 +ut8_t + +ma¡_pÜtid + = + +364 +pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +; + +365 +¹e_h_lk + +lk¡©us +; + +366 + `¹e_h_lk_g +( +ma¡_pÜtid +, & +lk¡©us +); + +367 + `RTE_LOG +( +INFO +, +IFM +, "PÜ%u ' Ma¡(%uè¡©u i %u\n\r", +pÜt_id +, + +368 +ma¡_pÜtid +, +lk¡©us +. +lk_¡©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_wre_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¿tuous_¬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 +-> +lk_¡©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_lk + +lk¡©us +; + +408 +ut8_t + +ma¡_pÜtid + = + +409 +pÜt +-> +bÚd_cÚfig +-> +bÚd_pÜtid +; + +410 + `¹e_h_lk_g_nowa +( +ma¡_pÜtid +, + +411 & +lk¡©us +); + +412 + `RTE_LOG +( +INFO +, +IFM +, + +414 +pÜt_id +, +ma¡_pÜtid +, + +415 +lk¡©us +. +lk_¡©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_wre_uÆock +(& +rwlock +); + +426 +´ev_¡©e + = 0; + +430 + } +} + +432 + $ifm_upd©e_lk¡©us +( +ut8_t + +pÜt_id +, +ut16_t + +lk¡©us +) + +434 +¹e_h_lk + +lk +; + +435 +l2_phy_rçû_t + * +pÜt +; + +436 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +437 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +438 +__LINE__ +); + +440 ià( +USE_RTM_LOCKS +) { + +441 + `¹m_lock +(); + +443 + `¹e_rwlock_wre_lock +(& +rwlock +); + +445 +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_lk_g +( +pÜt_id +, & +lk +); + +454 ià( +lk¡©us + =ð +IFM_ETH_LINK_UP +) { + +455 +pÜt +-> +adm_¡©us + = +IFM_ETH_LINK_UP +; + +456 if(! +lk +. +lk_¡©us +) { + +457 ià( + `¹e_h_dev_£t_lk_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_wre_uÆock +(& +rwlock +); + +472 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) + +473 + `RTE_LOG +( +INFO +, +IFM +, + +475 +__FUNCTION__ +, +pÜt +-> +pmdid +); + +476 + `£nd_g¿tuous_¬p +( +pÜt +); + +480 } ià( +lk¡©us + =ð +IFM_ETH_LINK_DOWN +) + +482 +¡©us +; + +483 +pÜt +-> +adm_¡©us + = +IFM_ETH_LINK_DOWN +; + +485 if( +lk +. +lk_¡©us +) { + +486 +¡©us + = + `¹e_h_dev_£t_lk_down +( +pÜt_id +); + +487 ià( +¡©us + < 0) + +489 + `´tf +("(%" +PRIu32 + "): PMD setink down... continuing...%" + +490 +PRId32 + "\n", +pÜt_id +, +¡©us +); + +495 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +496 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +497 +__LINE__ +); + +499 ià( +USE_RTM_LOCKS +) { + +500 + `¹m_uÆock +(); + +502 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +504 + } +} + +506 + $ifm_£t_l2_rçû_mtu +( +ut8_t + +pÜt_id +, +ut16_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_wre_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_wre_uÆock +(& +rwlock +); + +548 + } +} + +550 + $ifm_£t_pÜt_´omisc +( +ut8_t + +pÜt_id +, ut8_ +abË +) + +552 +l2_phy_rçû_t + * +pÜt +; + +553 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +554 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock @ %d\n\r", + +555 +__FUNCTION__ +, +__LINE__ +); + +556 ià( +USE_RTM_LOCKS +) { + +557 + `¹m_lock +(); + +559 + `¹e_rwlock_wre_lock +(& +rwlock +); + +561 +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 WRock @ %d\n\r", + +578 +__FUNCTION__ +, +__LINE__ +); + +579 ià( +USE_RTM_LOCKS +) { + +580 + `¹m_uÆock +(); + +582 + `¹e_rwlock_wre_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_tlized +; + +594 + } +} + +596 +ut16_t + + $ifm_»ûive_bulk_pkts +( +ut8_t + +pÜt_id +, +ut16_t + +qid +, + +597 +¹e_mbuf + ** +rx_pkts +) + +599 +ut64_t + +no_of_rcvd_pkt +; + +600 +no_of_rcvd_pkt + = + +601 + `¹e_h_rx_bur¡ +( +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 +ut16_t + + $ifm_ªsm_bulk_pkts +( +l2_phy_rçû_t + * +pÜt +, + +610 +¹e_mbuf + ** +tx_pkts +, +ut64_t + +Åkts +) + +612 +ut32_t + +bur¡_tx_day_time + = +IFM_BURST_TX_WAIT_US +; + +613 +ut32_t + +bur¡_tx_»y_num + = +IFM_BURST_TX_RETRIES +; + +614 +ut32_t + +»y +; + +615 +ut32_t + +no_of_tx_pkt +; + +616 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +617 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring RDock @ %d\n\r", + +618 +__FUNCTION__ +, +__LINE__ +); + +619 ià( +USE_RTM_LOCKS +) { + +620 + `¹m_lock +(); + +622 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +624 +no_of_tx_pkt + = + `¹e_h_tx_bur¡ +( +pÜt +-> +pmdid +, +IFM_TX_DEFAULT_Q +, +tx_pkts +, + +625 +Åkts +); + +626 ià( + `uÆiky +( +no_of_tx_pkt + < +Åkts +)) { + +627 +»y + = 0; + +628 +no_of_tx_pkt + < +IFM_BURST_SIZE + + +629 && +»y +++ < +bur¡_tx_»y_num +) { + +630 + `¹e_day_us +( +bur¡_tx_day_time +); + +631 +no_of_tx_pkt + = + +632 + `¹e_h_tx_bur¡ +( +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 RDock @ %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_sgË_pkt +( +l2_phy_rçû_t + * +pÜt +, +¹e_mbuf + * +tx_pkts +) + +654 +ut64_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 RDock @ %d\n\r", + +666 +__FUNCTION__ +, +__LINE__ +); + +668 ià( +USE_RTM_LOCKS +) { + +669 + `¹m_lock +(); + +671 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +673 +tx_Åkts + = + +674 + `¹e_h_tx_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 RWock @ %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 WRock @ %d\n\r", + +691 +__FUNCTION__ +, +__LINE__ +); + +693 ià( +USE_RTM_LOCKS +) { + +694 + `¹m_lock +(); + +696 + `¹e_rwlock_wre_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 WRock @ %d\n\r", + +703 +__FUNCTION__ +, +__LINE__ +); + +705 ià( +USE_RTM_LOCKS +) { + +706 + `¹m_uÆock +(); + +708 + `¹e_rwlock_wre_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 +( +ut8_t + +pÜt_id +, +ut32_t + +addr +, ut32_ +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: Acqugock @ %d\n\r", +__FUNCTION__ +, + +723 +__LINE__ +); + +725 ià( +USE_RTM_LOCKS +) { + +726 + `¹m_lock +(); + +728 + `¹e_rwlock_wre_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_wre_uÆock +(& +rwlock +); + +762 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +763 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +764 +__LINE__ +); + +766 ià( +USE_RTM_LOCKS +) { + +767 + `¹m_uÆock +(); + +769 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +772 + } +} + +774 +t16_t + + $ifm_»move_v4_pÜt +( +ut8_t + +pÜt_id +, +ut32_t + +addr +, + +775 +ut32_t + +add¾ +) + +777 +l2_phy_rçû_t + * +pÜt +; + +778 +v4li¡_t + * +li¡ +, * +´evli¡ + = +NULL +; + +779 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +780 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +781 +__LINE__ +); + +783 ià( +USE_RTM_LOCKS +) { + +784 + `¹m_lock +(); + +786 + `¹e_rwlock_wre_lock +(& +rwlock +); + +788 +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_wre_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à( +´evli¡ + !ð +NULL +) + +816 +´evli¡ +-> +Ã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_wre_uÆock +(& +rwlock +); + +832 +´evli¡ + = +li¡ +; + +833 +li¡ + = i¶i¡-> +Ãxt +; + +837 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +838 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +839 +__LINE__ +); + +841 ià( +USE_RTM_LOCKS +) { + +842 + `¹m_uÆock +(); + +844 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +847 + } +} + +849 +t8_t + + $ifm_add_v6_pÜt +( +ut8_t + +pÜt_id +, ut8_ +6addr +[], +ut32_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: Acqugock @ %d\n\r", +__FUNCTION__ +, + +855 +__LINE__ +); + +857 ià( +USE_RTM_LOCKS +) { + +858 + `¹m_lock +(); + +860 + `¹e_rwlock_wre_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_wre_uÆock +(& +rwlock +); + +895 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +896 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +897 +__LINE__ +); + +899 ià( +USE_RTM_LOCKS +) { + +900 + `¹m_uÆock +(); + +902 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +905 + } +} + +907 +t16_t + + $ifm_»move_v6_pÜt +( +ut8_t + +pÜt_id +, +ut32_t + +6addr +, + +908 +ut32_t + +add¾ +) + +910 +l2_phy_rçû_t + * +pÜt +; + +911 +v6li¡_t + * +6li¡ +, * +´ev6li¡ + = +NULL +; + +913 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +914 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acqugock @ %d\n\r", +__FUNCTION__ +, + +915 +__LINE__ +); + +916 ià( +USE_RTM_LOCKS +) + +917 + `¹m_lock +(); + +919 + `¹e_rwlock_wre_lock +(& +rwlock +); + +920 +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: Releasingock @ %d\n\r", + +924 +__FUNCTION__ +, +__LINE__ +); + +925 ià( +USE_RTM_LOCKS +) { + +926 + `¹m_uÆock +(); + +928 + `¹e_rwlock_wre_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_wre_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à( +´ev6li¡ + !ð +NULL +) + +956 +´ev6li¡ +-> +Ã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_wre_uÆock +(& +rwlock +); + +973 +´ev6li¡ + = +6li¡ +; + +974 +6li¡ + = ip6li¡-> +Ãxt +; + +978 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +979 + `RTE_LOG +( +INFO +, +IFM +, "%s: Rsgock @ %d\n\r", +__FUNCTION__ +, + +980 +__LINE__ +); + +981 ià( +USE_RTM_LOCKS +) + +982 + `¹m_uÆock +(); + +984 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +986 + } +} + +988 +t32_t + + $ifm_chk_pÜt_v4_abËd +( +ut8_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 RDock @ %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: Releasingock @ %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: Releasingock @ %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: Releasingock @ %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 +( +ut8_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 RDock @ %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 infoot found..." + +1051 +__FUNCTION__ +, +pÜt_id +); + +1052 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1053 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing RDock @ %d\n\r", + +1054 +__FUNCTION__ +, +__LINE__ +); + +1055 ià( +USE_RTM_LOCKS +) + +1056 + `¹m_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 RDock @ %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 RDock @ %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Ü_lkupd©e +( +ut32_t + +þÁid +, + +1083 (* +cb_lkupd©e +è( +ut8_t +, )) + +1085 +ifm +. +if_þÁ +[ifm. +nþÁ +]. +cb_lkupd©e + = cb_linkupdate; + +1086 +ifm +. +if_þÁ +[ifm. +nþÁ +]. +þÁid + = clientid; + +1087 +ifm +. +nþÁ +++; + +1088 + } +} + +1090 + $ifm_pÜt_£tup +( +ut8_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_lk + +lk¡©us +; + +1096 +l2_phy_rçû_t + * +pÜt + = +NULL +; + +1098 ià(! +ifm +. +ÅÜt_tlized +) { + +1099 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedo 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 WRock1 @ %d\n\r", + +1110 +__FUNCTION__ +, +__LINE__ +); + +1111 ià( +USE_RTM_LOCKS +) + +1112 + `¹m_lock +(); + +1114 + `¹e_rwlock_wre_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 WRock1 @ %d\n\r", + +1126 +__FUNCTION__ +, +__LINE__ +); + +1127 ià( +USE_RTM_LOCKS +) + +1128 + `¹m_uÆock +(); + +1130 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1132 + `¹e_h_lk_g +( +pÜt_id +, & +lk¡©us +); + +1133 ià( +lk¡©us +. +lk_¡©us +) { + +1134 ià( +ifm_debug + & +IFM_DEBUG_CONFIG +) { + +1135 + `RTE_LOG +( +INFO +, +IFM +, "%s: %u is up.Stop it before" + +1136 "ecÚfigurg.\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_das +( +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_evt_ÿÎback +, +NULL +); + +1152 ià( +¡©us + < 0) { + +1153 + `ifm_»move_pÜt_das +( +pÜt_id +); + +1154 + `RTE_LOG +( +ERR +, +IFM +, "%s:te_eth_dev_callback_register()" + +1155 " faed 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 "ouoà¿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_das +( +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 WRock 2 @ %d\n\r", + +1189 +__FUNCTION__ +, +__LINE__ +); + +1190 ià( +USE_RTM_LOCKS +) + +1191 + `¹m_lock +(); + +1193 + `¹e_rwlock_wre_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_das +( +pÜt_id +); + +1203 + `RTE_LOG +( +ERR +, +IFM +, "%s: Failedollocatex buffers for" + +1204 " Ü%u\n\r", +__FUNCTION__ +, +pÜt_id +); + +1205 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1206 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock2 %d\n\r", + +1207 +__FUNCTION__ +, +__LINE__ +); + +1208 ià( +USE_RTM_LOCKS +) + +1209 + `¹m_uÆock +(); + +1211 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1212 +IFM_FAILURE +; + +1214 + `¹e_h_tx_bufãr_ +( +pÜt +-> +tx_bufãr +, +IFM_BURST_SIZE +); + +1216 + `¥rtf +( +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_das +( +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 WRock2 %d\n\r", + +1232 +__FUNCTION__ +, +__LINE__ +); + +1233 ià( +USE_RTM_LOCKS +) + +1234 + `¹m_uÆock +(); + +1236 + `¹e_rwlock_wre_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_das +( +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_wre_uÆock +(& +rwlock +); + +1260 +IFM_FAILURE +; + +1264 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1265 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WRock2 @ %d\n\r", + +1266 +__FUNCTION__ +, +__LINE__ +); + +1267 ià( +USE_RTM_LOCKS +) + +1268 + `¹m_uÆock +(); + +1270 + `¹e_rwlock_wre_uÆock +(& +rwlock +); + +1271 +¡©us + = + `¹e_h_dev_¡¬t +( +pÜt_id +); + +1272 ià( +¡©us + < 0) { + +1273 + `ifm_»move_pÜt_das +( +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_day_ms +(5000); + +1280 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1281 + `RTE_LOG +( +INFO +, +IFM +, "%s: Acquiring WRock3 @ %d\n\r", + +1282 +__FUNCTION__ +, +__LINE__ +); + +1283 ià( +USE_RTM_LOCKS +) + +1284 + `¹m_lock +(); + +1286 + `¹e_rwlock_wre_lock +(& +rwlock +); + +1287 + `¹e_h_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_lk_g +( +pÜt_id +, & +lk¡©us +); + +1292 +pÜt +-> +lk_du¶ex + = +lk¡©us +.link_duplex; + +1293 +pÜt +-> +lk_autÚeg + = +lk¡©us +.link_autoneg; + +1294 +pÜt +-> +lk_¥d + = +lk¡©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_sgË_pkt + = & +ifm_ªsm_sgË_pkt +; + +1310 ià( +ifm_debug + & +IFM_DEBUG_LOCKS +) + +1311 + `RTE_LOG +( +INFO +, +IFM +, "%s: Releasing WR3ock @ %d\n\r", + +1312 +__FUNCTION__ +, +__LINE__ +); + +1313 ià( +USE_RTM_LOCKS +) + +1314 + `¹m_uÆock +(); + +1316 + `¹e_rwlock_wre_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 +ut8_t + +pÜt_id +; + +1325 +¡©us + = 0; + +1326 ià(! +ifm +. +ÅÜt_tlized +) { + +1327 + `RTE_LOG +( +ERR +, +IFM +, "%s, Configuring orts failed. Zero orts " + +1328 "¬tlized durg 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_tlized +; 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 ortsre 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çû_das +() + +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 RWock @ %d\n\r", + +1366 +__FUNCTION__ +, +__LINE__ +); + +1367 ià( +USE_RTM_LOCKS +) + +1368 + `¹m_lock +(); + +1370 + `¹e_rwlock_»ad_lock +(& +rwlock +); + +1372 +i + = 0; i < +RTE_MAX_ETHPORTS + && +ifm +. +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 +-> +lk_¡©us + ? "UP" : "DOWN"); + +1386 + `´tf +("\t\t"); + +1387 + `´tf +("S³ed: %u, %s-du¶ex\n\r", +pÜt +-> +lk_¥d +, + +1388 +pÜt +-> +lk_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 +ut8_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 +-> +lk_up_day_ms +); + +1447 + `´tf +(" Link_down_prop_delay: %u ms ", + +1448 +pÜt +-> +bÚd_cÚfig +-> +lk_down_day_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 +. +acks +); + +1461 + `´tf +("pkts_out: %" +PRIu64 + " ", +h_¡©s +. +Ýacks +); + +1462 + `´tf +("\n\r"); + +1463 + `´tf +("\t\t"); + +1464 + `´tf +("_rs: %" +PRIu64 + " ,", +h_¡©s +. +¼Üs +); + +1465 + `´tf +("_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 RWock @ %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 + ~<¡rg.h +> + +22 + ~<¡dt.h +> + +23 + ~<y³s.h +> + +24 + ~<sys/ty³s.h +> + +25 + ~<sys/queue.h +> + +26 + ~<Ãt/.h +> + +27 + ~<£tjmp.h +> + +28 + ~<¡d¬g.h +> + +29 + ~<ùy³.h +> + +30 + ~<ºo.h +> + +31 + ~<gÝt.h +> + +32 + ~<sigÇl.h +> + +33 + ~<¡dboÞ.h +> + +34 + ~<sys/sock.h +> + +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_rg.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 +ut32_t + + mpoÞ_size +; + +134 +ut32_t + + mbufãr_size +; + +136 +ut32_t + + mÿche_size +; + +138 +ut32_t + + mýu_sock_id +; + +140 } + g__¹e_ÿche_®igÃd +; + +147 + s_pÜt_cÚfig_ + { + +148 +ut8_t + + mpÜt_id +; + +149 + mÄx_queue +; + +150 + mÁx_queue +; + +151 +ut32_t + + mtx_buf_size +; + +152 +ut32_t + + m¡©e +; + +153 +ut32_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 +ut64_t + + mrx_Åkts +; + +171 +ut64_t + + mtx_Åkts +; + +172 +ut64_t + + mrx_bys +; + +173 +ut64_t + + mtx_bys +; + +174 +ut64_t + + mrx_mis£d_pkts +; + +176 +ut64_t + + mrx_r_pkts +; + +177 +ut64_t + + mrx_nobuf_ç +; + +178 +ut64_t + + mtx_çed_pkts +; + +179 +ut64_t + + mq_rxpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +180 +ut64_t + + mq_txpkts +[ +IFM_QUEUE_STAT_CNTRS +]; + +181 +ut64_t + + mq_rx_bys +[ +IFM_QUEUE_STAT_CNTRS +]; + +183 +ut64_t + + mq_tx_bys +[ +IFM_QUEUE_STAT_CNTRS +]; + +185 +ut64_t + + mq_rx_pkt_drÝ +[ +IFM_QUEUE_STAT_CNTRS +]; + +187 } + t__¹e_ÿche_®igÃd + + tif_¡©s +; + +191 + sbÚd_pÜt + { + +192 +ut8_t + + mbÚd_pÜtid +; + +194 +ut8_t + + msock_id +; + +196 +ut8_t + + mmode +; + +198 +ut8_t + + mxm_pÞicy +; + +200 +ut32_t + + mº®_ms +; + +202 +ut32_t + + mlk_up_day_ms +; + +204 +ut32_t + + mlk_down_day_ms +; + +206 +ut8_t + + m´im¬y +; + +208 +ut8_t + + m¦aves +[ +RTE_MAX_ETHPORTS +]; + +210 + m¦ave_couÁ +; + +212 +ut8_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 +ut8_t + + mpmdid +; + +227 + mif_dex +; + +228 + miâame +[ +IFM_IFNAME_LEN +]; + +229 +ut16_t + + mmtu +; + +230 +ut8_t + + mmaÿddr +[ +IFM_ETHER_ADDR_SIZE +]; + +231 +ut32_t + + m´omisc +; + +232 +ut32_t + + mæags +; + +234 +ut32_t + + mlk_¥d +; + +235 +ut16_t + + mlk_du¶ex +:1; + +236 +ut16_t + + mlk_autÚeg +:1; + +237 +ut16_t + + mlk_¡©us +:1; + +238 +ut16_t + + madm_¡©us +:1; + +240 +¹e_mempoÞ + * + mmempoÞ +; + +241 +ut32_t + + mm_rx_bufsize +; + +242 +ut32_t + + mmax_rx_pk +; + +243 +ut16_t + + mmax_rx_queues +; + +244 +ut16_t + + mmax_tx_queues +; + +245 +ut64_t + + mn_rxpkts +; + +246 +ut64_t + + mn_txpkts +; + +247 +if_¡©s + + m¡©s +; + +248 +ut16_t +(* +»ve_bulk_pkts +è( + mut8_t +, + mut16_t +, + m¹e_mbuf + **); + +250 +ut16_t +(* +ªsm_bulk_pkts +è( + m_l2_phy_rçû_ + *, + m¹e_mbuf + **, + mut64_t +); + +252 (* + mªsm_sgË_pkt +è( + m_l2_phy_rçû_ + *, + m¹e_mbuf + *); + +254 +¹e_h_dev_tx_bufãr + * + mtx_bufãr +; + +255 +ut64_t + + mtx_buf_Ën +; + +256 * + mv4_li¡ +; + +257 * + mv6_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 +ut32_t + + maddr +; + +269 + madd¾ +; + +270 + mmtu +; + +271 +l2_phy_rçû_t + * + mpÜt +; + +273 } + tv4li¡_t +; + +279 + s_v6li¡_ + { + +280 +_v6li¡_ + * + mÃxt +; + +281 +ut8_t + + maddr +[ +IFM_IPV6_ADDR_SIZE +]; + +282 + madd¾ +; + +283 + mmtu +; + +284 +l2_phy_rçû_t + * + mpÜt +; + +285 } + tv6li¡_t +; + +292 + s_ifm_þÁ_ + { + +293 +ut32_t + + mþÁid +; + +294 (* + mcb_lkupd©e +è( + mut8_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 +ut32_t + + mÅÜt_cÚfigu»d +; + +305 +ut32_t + + mÅÜt_tlized +; + +306 +ut8_t + + mnþÁ +; + +307 +ifm_þÁ + + mif_þÁ +[ +IFM_MAX_CLIENT +]; + +308 } + t__¹e_ÿche_®igÃd + + trçû_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 +( +ut8_t + +pÜt_id +); + +359 +l2_phy_rçû_t + * +ifm_g_pÜt +( +ut8_t +); + +371 +l2_phy_rçû_t + * +ifm_g_pÜt_by_Çme +(cÚ¡ * +Çme +); + +380 +ifm_»move_pÜt_das +( +ut8_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 +( +ut8_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 +( +ut8_t + +pÜt_id +); + +469 +t32_t + +ifm_chk_pÜt_v6_abËd +( +ut8_t + +pÜt_id +); + +485 +t16_t + +ifm_»move_v4_pÜt +( +ut8_t + +pÜt_id +, +ut32_t + +addr +, + +486 +ut32_t + +add¾ +); + +502 +t16_t + +ifm_»move_v6_pÜt +( +ut8_t + +pÜt_id +, +ut32_t + +6addr +, + +503 +ut32_t + +add¾ +); + +519 +t16_t + +ifm_add_v4_pÜt +( +ut8_t + +pÜt_id +, +ut32_t + +addr +, ut32_ +add¾ +); + +535 +t8_t + +ifm_add_v6_pÜt +( +ut8_t + +pÜt_id +, ut8_ +6addr +[], +ut32_t + +add¾ +); + +548 +ifm_ªsm_sgË_pkt +( +l2_phy_rçû_t + * +pÜt +, + +549 +¹e_mbuf + * +tx_pkts +); + +564 +ut16_t + +ifm_ªsm_bulk_pkts +( +l2_phy_rçû_t + *, +¹e_mbuf + ** +tx_pkts +, + +565 +ut64_t + +Åkts +); + +580 +ut16_t + +ifm_»ûive_bulk_pkts +( +ut8_t + +pÜt_id +, ut16_ +qid +, + +581 +¹e_mbuf + ** +rx_pkts +); + +594 +ifm_£t_pÜt_´omisc +( +ut8_t + +pÜt_id +, ut8_ +abË +); + +607 +ifm_£t_l2_rçû_mtu +( +ut8_t + +pÜt_id +, +ut16_t + +mtu +); + +620 +ifm_upd©e_lk¡©us +( +ut8_t + +pÜt_id +, +ut16_t + +lk¡©us +); + +633 +ifm_»gi¡_fÜ_lkupd©e +( +ut32_t + +þÁid +, + +634 (* +cb_lkupd©e +è( +ut8_t +, )); + +650 + `lsi_evt_ÿÎback +( +ut8_t + +pÜt_id +, +¹e_h_evt_ty³ + +ty³ +, + +651 * +·¿m +); + +656 + `´t_rçû_das +(); + +667 + `ifm_bÚd_pÜt_ü +(cÚ¡ * +Çme +, +mode +, +pÜt_cÚfig_t + * +pÜtcÚf +); + +674 + `ifm_bÚd_pÜt_de +(cÚ¡ * +Çme +); + +683 + `ifm_add_¦ave_pÜt +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦ave_pÜt_id +); + +692 + `ifm_»move_¦ave_pÜt +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦ave_pÜt_id +); + +701 + `£t_bÚd_mode +( +ut8_t + +bÚded_pÜt_id +, ut8_ +mode +); + +708 + `g_bÚd_mode +( +ut8_t + +bÚded_pÜt_id +); + +717 + `£t_bÚd_´im¬y +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦ave_pÜt_id +); + +724 + `g_bÚd_´im¬y_pÜt +( +ut8_t + +bÚded_pÜt_id +); + +731 + `g_bÚd_¦ave_couÁ +( +ut8_t + +bÚded_pÜt_id +); + +738 + `g_bÚd_aùive_¦ave_couÁ +( +ut8_t + +bÚded_pÜt_id +); + +747 + `g_bÚd_¦aves +( +ut8_t + +bÚded_pÜt_id +, ut8_ +¦aves +[ +RTE_MAX_ETHPORTS +]); + +756 + `g_bÚd_aùive_¦aves +( +ut8_t + +bÚded_pÜt_id +, + +757 +ut8_t + +¦aves +[ +RTE_MAX_ETHPORTS +]); + +766 + `£t_bÚd_mac_add»ss +( +ut8_t + +bÚded_pÜt_id +, +h_addr + * +mac_addr +); + +773 + `»£t_bÚd_mac_addr +( +ut8_t + +bÚded_pÜt_id +); + +774 + `g_bÚd_mac +( +ut8_t + +bÚded_pÜt_id +, +h_addr + * +maÿddr +); + +783 + `£t_bÚd_xmpÞicy +( +ut8_t + +bÚded_pÜt_id +, ut8_ +pÞicy +); + +790 + `g_bÚd_xmpÞicy +( +ut8_t + +bÚded_pÜt_id +); + +799 + `£t_bÚd_lk_mÚtÜ_äequcy +( +ut8_t + +bÚded_pÜt_id +, + +800 +ut32_t + +º®_ms +); + +807 + `g_bÚd_lk_mÚÜ_äequcy +( +ut8_t + +bÚded_pÜt_id +); + +816 + `£t_bÚd_lkdown_day +( +ut8_t + +bÚded_pÜt_id +, +ut32_t + +day_ms +); + +823 + `g_bÚd_lk_down_day +( +ut8_t + +bÚded_pÜt_id +); + +832 + `£t_bÚd_lkup_day +( +ut8_t + +bÚded_pÜt_id +, +ut32_t + +day_ms +); + +839 + `g_bÚd_lk_up_day +( +ut8_t + +bÚded_pÜt_id +); + +845 + `´t_¡©s +(); + +854 + `ifm_g_pÜt_fo +( +ut8_t + +pÜt_id +, +l2_phy_rçû_t + * +pÜt_fo +); + +863 + `ifm_g_Ãxt_pÜt_fo +( +ut8_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³ +( +ut16_t + +ty³ +, + +30 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +31 +l2_phy_rçû_t + *)) + +33 ià( +ty³ + =ð +ETHER_TYPE_IPv4 +) { + +34 +´Ùo_li¡ +[ +IPv4_VAL +] = + +35 + `¹e_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 +ut8_t + +i +, +ut64_t + * +pkts_mask +, ut64_* +¬p_pkts_mask +, + +66 +ut64_t + * +v4_pkts_mask +, ut64_* +v6_pkts_mask +) + +68 +h_hdr + * +h += +NULL +; + +69 +ut16_t + +§me_mac +=0; + +70 +ut16_t + +hty³ + = 0; + +72 ià( +m +[ +i +] !ð +NULL +) { + +73 +h + = + `¹e_pktmbuf_mtod +( +m +[ +i +], +h_hdr + *); + +74 if( +h +) + +75 +hty³ + = + `¹e_be_to_ýu_16 +( +h +-> +h_ty³ +); + +76 ià( +h + =ð +NULL +) { + +78 + `´tf +("l2_check_mac: Ethernet Dest Addr NULL !!!\n"); + +81 +hty³ + = + `¹e_be_to_ýu_16 +( +h +-> +h_ty³ +); + +82 #ià +L2_PROTO_DBG + + +83 + `´tf +("%s => mbuf kt dest macddr: %x:%x:%x:%x:%x:%x\n", + +84 +__FUNCTION__ +, +h +-> +d_addr +. +addr_bys +[0], + +85 +h +-> +d_addr +. +addr_bys +[1],th->d_addr.addr_bytes[2], + +86 +h +-> +d_addr +. +addr_bys +[3],th->d_addr.addr_bytes[4], + +87 +h +-> +d_addr +. +addr_bys +[5]); + +88 + `´tf +("% => Ü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_bys +[0] == 0x33 + +103 && +h +-> +d_addr +. +addr_bys +[1] == 0x33)); + +105 ià(! +§me_mac +) { + +106 +ut64_t + +mp_mask + = 1LLU << +i +; + +107 * +pkts_mask + ^ð +mp_mask +; + +108 + `¹e_pktmbuf_ä +( +m +[ +i +]); + +109 +m +[ +i +] = +NULL +; + +110 } ià(( +hty³ + =ð +ETHER_TYPE_IPv4 +è&& +§me_mac +) { + +111 +ut64_t + +mp_mask + = 1LLU << +i +; + +112 * +v4_pkts_mask + ^ð +mp_mask +; + +113 } ià(( +hty³ + =ð +ETHER_TYPE_ARP +è&& +§me_mac +) { + +114 +ut64_t + +mp_mask + = 1LLU << +i +; + +115 * +¬p_pkts_mask + ^ð +mp_mask +; + +116 } ià(( +hty³ + =ð +ETHER_TYPE_IPv6 +è&& +§me_mac +) { + +117 +ut64_t + +mp_mask + = 1LLU << +i +; + +118 * +v6_pkts_mask + ^ð +mp_mask +; + +121 + `´tf +("\n%s:½_pkts_mask = %" +PRIu64 + ", ipv4_pkts_mask = %" PRIu64 + +122 ", ipv6_pkts_mask =%" +PRIu64 + ", kt-type = %x, sam_mac = %d\n", + +123 +__FUNCTION__ +, * +¬p_pkts_mask +, * +v4_pkts_mask +, * +v6_pkts_mask +, + +124 +hty³ +, +§me_mac +); + +125 + } +} + +128 + $´ÙocÞ_hªdËr_»cv +( +¹e_mbuf + ** +pkts_bur¡ +, +ut16_t + +nb_rx +, + +129 +l2_phy_rçû_t + * +pÜt +) + +131 +ut8_t + +i +; + +132 +ut64_t + +pkts_mask + = 0; + +133 +ut64_t + +¬p_pkts_mask + = 0; + +134 +ut64_t + +v4_pkts_mask + = 0; + +135 +ut64_t + +v6_pkts_mask + = 0; + +140 +i + = 0; i < +nb_rx +; i++) { + +141 + `l2_check_mac +( +pkts_bur¡ +, +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 +, "Ethertypeot 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 + ~<¡rg.h +> + +32 + ~<¡dt.h +> + +33 + ~<y³s.h +> + +34 + ~<sys/ty³s.h +> + +35 + ~<sys/queue.h +> + +36 + ~<Ãt/.h +> + +37 + ~<£tjmp.h +> + +38 + ~<¡d¬g.h +> + +39 + ~<ùy³.h +> + +40 + ~<ºo.h +> + +41 + ~<gÝt.h +> + +42 + ~<sigÇl.h +> + +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_rg.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 +ut16_t + + mty³ +; + +86 (* + mfunc +è( +¹e_mbuf + ** + mm +, +ut16_t + + mnb_pkts +, +ut64_t + + mpkt_mask +, +l2_phy_rçû_t + * + mpÜt +); + +87 } + g__¹e_ÿche_®igÃd +; + +98 +li¡_add_ty³ +( +ut16_t + +ty³ +, + +99 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +100 +l2_phy_rçû_t + *)); + +130 + `l2_check_mac +( +¹e_mbuf + * +m +[ +IFM_BURST_SIZE +], +l2_phy_rçû_t + * +pÜt +, + +131 +ut8_t + +pos +, +ut64_t + * +pkts_mask +, ut64_* +¬p_pkts_mask +, + +132 +ut64_t + * +v4_pkts_mask +, ut64_* +v6_pkts_mask +); + +147 + `´ÙocÞ_hªdËr_»cv +( +¹e_mbuf + * +m +[ +IFM_BURST_SIZE +], +ut16_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 + ~<¡dt.h +> + +29 + ~<y³s.h +> + +30 + ~<sys/ty³s.h +> + +31 + ~<sys/queue.h +> + +32 + ~<sys/·¿m.h +> + +33 + ~<¡rg.h +> + +34 + ~<¡d¬g.h +> + +35 + ~<ºo.h +> + +36 + ~<sigÇl.h +> + +37 + ~<¡dboÞ.h +> + +38 + ~<gÝt.h +> + +39 + ~<uni¡d.h +> + +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_rg.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_¡rg_âs.h +> + +77 + ~<¹e_ýuæags.h +> + +78 + ~<l3fwd_Ím4.h +> + +79 + ~<l3fwd_Ím6.h +> + +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Ë_rous +(); + +104 +pÝuÏ_Ím6_bË_rous +(); + +109 +pÝuÏ_Ím_rous +(); + + @VIL/l2l3_stack/l3fwd_lpm4.c + +17 + ~"l3fwd_commÚ.h +" + +18 + ~"rçû.h +" + +19 + ~"l2_´Ùo.h +" + +20 + ~"l3fwd_Ím4.h +" + +21 + ~"l3fwd_Ím6.h +" + +22 + ~"lib_¬p.h +" + +23 + ~"lib_icmpv6.h +" + +24 + ~<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 +ut8_t + + gnh_lks +[ +MAX_SUPPORTED_FIB_PATHS +][ +HASH_BUCKET_SIZE +] = + +87 + #META_DATA_OFFSET + 128 + + ) + +89 + #RTE_PKTMBUF_HEADROOM + 128 + + ) + +90 + #ETHERNET_START + ( +META_DATA_OFFSET + + +RTE_PKTMBUF_HEADROOM +) + + ) + +91 + #ETH_HDR_SIZE + 14 + + ) + +92 + #IP_START + ( +ETHERNET_START + + +ETH_HDR_SIZE +) + + ) + +93 + #TCP_START + ( +IP_START + + 20) + + ) + +95 + $´t_pkt +( +¹e_mbuf + * +pkt +) + +97 +i +; + +98 +size + = 14; + +99 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +ETHERNET_START +); + +101 + `´tf +("Meta-data:\n"); + +102 +i + = 0; i < +size +; i++) { + +103 + `´tf +("%02x ", +rd +[ +i +]); + +104 ià(( +i + & 3) == 3) + +105 + `´tf +("\n"); + +107 + `´tf +("\n"); + +108 + `´tf +("IPnd TCP/UDP headers:\n"); + +109 +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +IP_START +); + +110 +i + = 0; i < 40; i++) { + +111 + `´tf +("%02x ", +rd +[ +i +]); + +112 ià(( +i + & 3) == 3) + +113 + `´tf +("\n"); + +116 + } +} + +118 +_´ÙocÞ_ty³ + * + 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 +("Failedo create LPM IPV4able\n"); + +142 +¹e_hash_·¿ms + +l2_adj_v4_·¿ms + = { + +143 . +Çme + = "l2_ADJ_HASH", + +144 . +s + = 64, + +145 . +key_Ën + = ( +l2_adj_key_v4 +), + +146 . +hash_func + = +¹e_jhash +, + +147 . +hash_func__v® + = 0, + +151 +l2_adj_hash_hªdË + = + `¹e_hash_ü +(& +l2_adj_v4_·¿ms +); + +153 ià( +l2_adj_hash_hªdË + =ð +NULL +) { + +154 + `´tf +("L2 ADJte_hash_create failed\n"); + +157 + `´tf +("l2_adj_hash_hªdË %p\n\n", (*) +l2_adj_hash_hªdË +); + +161 +¹e_hash_·¿ms + +fib_·th_v4_·¿ms + = { + +162 . +Çme + = "FIB_PATH_HASH", + +163 . +s + = 64, + +164 . +key_Ën + = ( +fib_·th_key_v4 +), + +165 . +hash_func + = +¹e_jhash +, + +166 . +hash_func__v® + = 0, + +170 +fib_·th_hash_hªdË + = + `¹e_hash_ü +(& +fib_·th_v4_·¿ms +); + +172 ià( +fib_·th_hash_hªdË + =ð +NULL +) { + +173 + `´tf +("FIB athte_hash_create failed\n"); + +177 + } +} + +179 + $Ím4_bË_rou_add +( +routg_fo + * +d©a +) + +182 +routg_fo + * +fib + = +d©a +; + +183 +¹e_bË_Ím_key + +Ím_key + = { + +184 . + + = +fib +-> +d¡__addr +, + +185 . +dth + = +fib +->depth, + +187 +ut8_t + +i +; + +188 +TÙ®_rou_couÁ +; + +189 +fib_fo + +y +; + +190 +y +. +d¡__addr + = + `¹e_bsw32 +( +fib +->dst_ip_addr); + +191 +y +. +dth + = +fib +->depth; + +192 +y +. +fib_nh_size + = +fib +->fib_nh_size; + +194 #ià +MULTIPATH_FEAT + + +195 ià( +y +. +fib_nh_size + =ð0 ||Áry.fib_nh_siz> +MAX_FIB_PATHS +) + +197 ià( +y +. +fib_nh_size + != 1) + +200 + `´tf +("Route can't be configured!!,ntry.fib_nh_size = %d\n", + +201 +y +. +fib_nh_size +); + +205 #ià +MULTIPATH_FEAT + + +206 +i + = 0; i < +y +. +fib_nh_size +; i++) + +208 +i + = 0; i < 1; i++) + +211 +fib_·th + * +fib_·th_addr + = +NULL +; + +213 +fib_·th_addr + = + +214 + `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 forhe Dest IP"); + +219 + `´tf +(" : %" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +220 "/%" +PRIu8 + + +222 ( +fib +-> +d¡__addr + & 0xFF000000) >> 24, + +223 ( +fib +-> +d¡__addr + & 0x00FF0000) >> 16, + +224 ( +fib +-> +d¡__addr + & 0x0000FF00) >> 8, + +225 ( +fib +-> +d¡__addr + & 0x000000FF), fib-> +dth +, + +226 +fib_·th_addr +, + +227 (*) +y +. +·th +[ +i +]-> +l2_adj_±r +); + +229 + `´tf +("Fib infØfÜhDe¡ IP :\ +%" +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 "/%" +PRIu8 + " => fib_·th Addr: NULL \n", ( +fib +-> +d¡__addr + & 0xFF000000è>> 24, (fib->d¡__add¸& 0x00FF0000è>> 16, (fib->d¡__add¸& 0x0000FF00è>> 8, (fib->d¡__add¸& 0x000000FF), fib-> +dth +); + +231 +y +. +·th +[ +i +] = +NULL +; + +235 +key_found +, +»t +; + +236 * +y_±r +; + +237 +»t + = + +238 +¹e_bË_Ím_Ýs +. + `f_add +( +Ím4_bË +, (*)& +Ím_key +, & +y +, + +239 & +key_found +, & +y_±r +); + +241 ià( +»t + != 0) { + +242 + `´tf +("Failedo Add IPoute\n"); + +245 +TÙ®_rou_couÁ +++; + +246 + `´tf +("TÙ® Roud Added : %u, Key_found: %d\n", +TÙ®_rou_couÁ +, + +247 +key_found +); + +248 + `´tf +("Adding Routeo LPMable...\n"); + +250 + `´tf +("Iterate with Cuckoo Hashable\n"); + +251 + `©e_cuckoo_hash_bË +(); + +253 + } +} + +255 + $Ím4_bË_rou_de +( +ut32_t + +d¡_ +, +ut8_t + +dth +) + +258 +¹e_bË_Ím_key + +Ím_key + = { + +259 . + + = +d¡_ +, + +260 . +dth + = depth, + +263 +key_found +, +»t +; + +264 * +y + = +NULL +; + +266 +y + = + `¹e_zm®loc +( +NULL +, 512, +RTE_CACHE_LINE_SIZE +); + +269 +»t + = + +270 +¹e_bË_Ím_Ýs +. + `f_de +( +Ím4_bË +, & +Ím_key +, & +key_found +, +y +); + +272 ià( +»t +) { + +273 + `´tf +("Failedo Delete IPoute from LPMv4able\n"); + +277 + `´tf +("Deletedoute from LPMable (IPv4 Address = %" + +278 +PRIu32 + ".%" PRIu32 ".%" PRIu32 ".%" PRIu32 + +279 "/%u , key_found = %d\n", ( +Ím_key +. + + & 0xFF000000) >> 24, + +280 ( +Ím_key +. + + & 0x00FF0000) >> 16, (lpm_key.ip & 0x0000FF00) >> 8, + +281 ( +Ím_key +. + + & 0x000000FF),pm_key. +dth +, +key_found +); + +284 + `»move_fib_l2_adj_y +( +y +); + +285 + `¹e_ä +( +y +); + +286 + `´tf +("Iterate with Cuckoo Hashable\n"); + +287 + `©e_cuckoo_hash_bË +(); + +289 + } +} + +292 + $Ím4_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ut16_t + +nb_pkts +, + +293 +ut64_t + +pkts_mask +, + +294 +l2_phy_rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +295 +ut64_t + * +h_mask +) + +298 +routg_bË_y + * +v4_s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +299 +ut64_t + +lookup_h_mask_v4 + = 0; + +300 +¡©us +; + +301 +ut64_t + +pkts_key_mask + = +pkts_mask +; + +302 +ut64_t + +lookup_miss_mask_v4 + = +pkts_mask +; + +304 +ut64_t + +£Á_couÁ +; + +305 +ut64_t + +rcvd_couÁ +; + +306 +rcvd_couÁ + +ð +nb_pkts +; + +307 ià( +L3FWD_DEBUG +) { + +308 +´tf + + +310 +nb_pkts +, +rcvd_couÁ +, (*) +pkts_mask +); + +312 +ut32_t + +d¡_addr_off£t + = + +313 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +315 ; +pkts_key_mask +;) { + +317 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_key_mask +); + +318 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +319 +pkts_key_mask + &ð~ +pkt_mask +; + +320 +¹e_mbuf + * +mbuf + = +pkts_bur¡ +[ +pos +]; + +321 +ut32_t + * +Ím_key + = +NULL +; + +322 +ut32_t + * +d¡_addr + = +NULL +; + +323 +Ím_key + = ( +ut32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, 128); + +324 +d¡_addr + = + +325 ( +ut32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, + +326 +d¡_addr_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 IPoute\n"); + +353 +lookup_miss_mask_v4 + =ookup_miss_mask_v4 & (~ +lookup_h_mask_v4 +); + +354 ià( +L3FWD_DEBUG +) { + +355 +´tf + + +357 (*) +lookup_h_mask_v4 +, + +358 (*) +lookup_miss_mask_v4 +); + +361 ; +lookup_miss_mask_v4 +;) { + +363 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +lookup_miss_mask_v4 +); + +364 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +365 +lookup_miss_mask_v4 + &ð~ +pkt_mask +; + +366 + `¹e_pktmbuf_ä +( +pkts_bur¡ +[ +pos +]); + +367 +pkts_bur¡ +[ +pos +] = +NULL +; + +368 +¡©s +. +nb_l3_drÝ_pkt +++; + +369 ià( +L3FWD_DEBUG +) + +370 + `´tf +("\n DROP PKT IPV4 Lookup_miss_Mask = %p\n", + +371 (*) +lookup_miss_mask_v4 +); + +374 * +h_mask + = +lookup_h_mask_v4 +; + +375 ; +lookup_h_mask_v4 +;) { + +377 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +lookup_h_mask_v4 +); + +378 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +379 +lookup_h_mask_v4 + &ð~ +pkt_mask +; + +380 +¹e_mbuf + * +pkt + = +pkts_bur¡ +[ +pos +]; + +382 +fib_fo + * +y + = (fib_fØ*) +v4_s +[ +pos +]; + +384 #ià +MULTIPATH_FEAT + + +386 +ut8_t + +ecmp_·th + = 0; + +387 +ecmp_·th + = + `_hash_lßd_b®ªû +( +pkts_bur¡ +[ +pos +]); + +388 +ut8_t + +£Ëùed_·th + = 0; + +389 +fib_·th + *fib_·th = +NULL +; + +390 ià((( +y +-> +fib_nh_size + != 0) + +391 && ( +y +-> +fib_nh_size + - 1è< +MAX_SUPPORTED_FIB_PATHS +) + +392 && (( +ecmp_·th + !ð0è&& (ecmp_·th - 1è< +HASH_BUCKET_SIZE +)) + +393 +£Ëùed_·th + = + +394 +nh_lks +[ +y +-> +fib_nh_size + - 1][ +ecmp_·th + - 1]; + +395 ià( +£Ëùed_·th + < +MAX_FIB_PATHS +) + +396 +fib_·th + = +y +-> +·th +[ +£Ëùed_·th +]; + +397 ià( +L3FWD_DEBUG +) { + +398 +´tf + + +400 +y +-> +fib_nh_size +, +ecmp_·th +, +£Ëùed_·th +); + +403 +fib_·th + *fib_·th = +y +-> +·th +[0]; + +406 ià( +fib_·th + =ð +NULL +) { + +407 + `¹e_pktmbuf_ä +( +pkt +); + +408 +pkts_bur¡ +[ +pos +] = +NULL +; + +409 +¡©s +. +nb_l3_drÝ_pkt +++; + +410 * +h_mask + &ð~ +pkt_mask +; + +411 ià( +L3FWD_DEBUG +) + +412 +´tf + + +417 ià( +fib_·th +-> +l2_adj_±r +-> +æags + =ð +L2_ADJ_UNRESOLVED +) { + +418 ià( +fib_·th +-> +l2_adj_±r +-> +phy_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 +ut8_t + * +h_de¡ + = + +433 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +434 +ut8_t + * +h_¤c + = + +435 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM + + 6); + +436 ià( +L3FWD_DEBUG +) { + +437 +´tf + + +440 +h_de¡ +[0],th_de¡[1],th_de¡[2],th_de¡[3],th_de¡[4],th_de¡[5], +h_¤c +[0],th_src[1], + +441 +h_¤c +[2],th_src[3],th_src[4],th_src[5]); + +444 + `memýy +( +h_de¡ +, +fib_·th +-> +l2_adj_±r +-> +l2_¡rg +, ( +h_addr +) * 2); + +445 ià( +L3FWD_DEBUG +) { + +446 +k + = 0; + +447 +k + = 0; k < 14; k++) { + +448 + `´tf +("%02x ", + +449 +fib_·th +-> +l2_adj_±r +-> +l2_¡rg +[ +k +]); + +450 + `´tf +("\n"); + +452 +´tf + + +453 ("MAC AFTER DST MAC %02x:%02x:%02x:%02x:%02x:%02x, \ + MAC %02x:%02x:%02x:%02x:%02x:%02x\n", +h_de¡ +[0],th_de¡[1],th_de¡[2],th_de¡[3],th_de¡[4],th_de¡[5], +h_¤c +[0],th_src[1],th_src[2],th_src[3],th_src[4],th_src[5]); + +456 +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 +, +ut32_t + +lk_Ën +) + +474 ià( +lk_Ën + < ( +v4_hdr +)) + +476 ià((( +pkt +-> +vsiÚ_ihl +) >> 4) != 4) + +478 ià(( +pkt +-> +vsiÚ_ihl + & 0xf) < 5) + +480 ià( + `¹e_ýu_to_be_16 +( +pkt +-> +tÙ®_Ëngth +è< ( +v4_hdr +)) + +483 + } +} + +486 + $g_de¡_mac_fÜ_ÃxthÝ +( +ut32_t + +Ãxt_hÝ_ +, + +487 +ut8_t + +out_phy_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 +("ARPntry isot 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_pathntry,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 +( +ut32_t + +addr +, +ut8_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_bys +; + +624 + `´tf +("S-MAC %x:%x:%x:%x:%x:%x\n\r", +p +[0], [1], [2], [3], + +625 +p +[4], [5]); + +627 +ut32_t + +size + = + +628 + `RTE_CACHE_LINE_ROUNDUP +(( +l2_adj_y +)); + +629 +adj_d©a + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +630 ià( +adj_d©a + =ð +NULL +) { + +631 + `´tf +("L2 Adjacency memoryllocation 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_¡rg +, 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_bys +; + +660 +´tf + + +662 +p +[0], [1], [2], [3], [4], [5]); + +664 + `memýy +( +adj_d©a +-> +l2_¡rg +, & +h_d¡ +, ( +h_addr +)); + +665 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 +( +ut32_t + +nh_ +, +ut8_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_pathntry 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 +ut32_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 Üda %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 +ut32_t + + + = 0; + +786 + `´tf +("\n\t\t\t FIB_path Cacheable...."); + +787 +´tf + + +789 + `´tf +("\n\tNextHop IP Port Refcount2_adj_ptr_addrress\n"); + +790 +´tf + + +793 +¹e_hash_©e + + +794 ( +fib_·th_hash_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 Cacheable....."); + +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_¡rg +[0], + +829 +l2_d©a +-> +l2_¡rg +[1],2_data->l2_string[2], + +830 +l2_d©a +-> +l2_¡rg +[3],2_data->l2_string[4], + +831 +l2_d©a +-> +l2_¡rg +[5],2_data->l2_string[6], + +832 +l2_d©a +-> +l2_¡rg +[7],2_data->l2_string[8], + +833 +l2_d©a +-> +l2_¡rg +[9],2_data->l2_string[10], + +834 +l2_d©a +-> +l2_¡rg +[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¿nsmd L3 Pkt : %lu\n", +¡©s +. +nb_tx_l3_pkt +); + +846 + `´tf +(" Num oàICMP Pkt RcvdL3 : %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 + = sts. +nb_rx_l3_icmp_pkt + + sts. +nb_rx_l3_pkt +; + +849 +¡©s +. +tÙ®_nb_tx_l3_pkt + = sts. +nb_tx_l3_icmp_pkt + + sts. +nb_tx_l3_pkt +; + +850 + `´tf +(" Total Num of Rcvd ktst L3: %lu\n", + +851 +¡©s +. +tÙ®_nb_rx_l3_pkt +); + +852 + `´tf +(" Total Num of Sent ktst L3: %lu\n", + +853 +¡©s +. +tÙ®_nb_tx_l3_pkt +); + +854 + } +} + +857 + $_loÿl_·cks_´oûss +( +¹e_mbuf + ** +pkt_bur¡ +, +ut16_t + +nb_rx +, + +858 +ut64_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_div +( +¹e_mbuf + ** +pkt_bur¡ +, +ut16_t + +nb_pkts +, + +865 +ut64_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 +ut64_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 +ut64_t + +h_mask + = 0; + +878 ; +pkts_fÜ_´oûss +;) { + +880 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_fÜ_´oûss +); + +881 +ut64_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 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +h_mask +); + +909 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +910 +h_mask + &ð~ +pkt_mask +; + +912 +pÜt_±r +[ +pos +]-> + `ªsm_sgË_pkt +(port_ptr[pos], + +913 +pkt_bur¡ +[ +pos +]); + +916 + } +} + +919 + $l3_´ÙocÞ_ty³_add +( +ut8_t + +´ÙocÞ_ty³ +, + +920 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +921 +l2_phy_rçû_t + * +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_·cks +( +¹e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +946 +ut64_t + +v®id_pkts_mask +, +l2_phy_rçû_t + * +pÜt +) + +948 ià( +L3FWD_DEBUG +) { + +949 +´tf + + +951 +nb_pkts +, +pÜt +-> +pmdid +); + +953 +ut64_t + +pkts_fÜ_´oûss + = +v®id_pkts_mask +; + +955 +v4_hdr + *ipv4_hdr; + +956 +ut32_t + +cÚfigu»_pÜt_ + = 0; + +957 +ut64_t + +icmp_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +958 +ut64_t + +v4_fÜw¬d_pkts_mask + = + `RTE_LEN2MASK +( +nb_pkts +, uint64_t); + +959 +ut16_t + +nb_icmp_pkt + = 0; + +960 +ut16_t + +nb_l3_pkt + = 0; + +962 ià( +pÜt +-> +v4_li¡ + !ð +NULL +) + +963 +cÚfigu»_pÜt_ + = + +964 ( +ut32_t +è((( +v4li¡_t + *è( +pÜt +-> +v4_li¡ +))-> +addr +); + +966 ; +pkts_fÜ_´oûss +;) { + +968 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_fÜ_´oûss +); + +969 +ut64_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 +( +ut32_t + +ÃxthÝ_ +, +ut8_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_¡rg +, +hw_addr +, ( +h_addr +)); + +1027 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 +ut32_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 memoryllocation 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_¡rg +, +hw_addr +, ( +h_addr +)); + +1056 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 +ut8_t + + $_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +) + +1076 +ut32_t + +¤c_addr_off£t + = + +1077 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST +; + +1078 +ut32_t + +d¡_addr_off£t + = + +1079 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +1080 +ut32_t + * +d¡_addr + = +NULL +; + +1081 +ut32_t + * +¤c_addr + = +NULL +; + +1082 +¤c_addr + = + +1083 ( +ut32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +¤c_addr_off£t +); + +1084 +d¡_addr + = + +1085 ( +ut32_t + *è + `RTE_MBUF_METADATA_UINT8_PTR +( +mbuf +, +d¡_addr_off£t +); + +1087 +ut32_t + +hash_key1 + = * +¤c_addr +; + +1088 +ut32_t + +hash_key2 + = * +d¡_addr +; + +1090 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +1091 +hash_key2 + = +hash_key1 +; + +1093 +hash_key1 + = + `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 +ut32_t + + $rÙr32 +( +ut32_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_div +( +¹e_mbuf + ** +pkt_bur¡ +, +ut16_t + +nb_rx +, + +1116 +ut64_t + +v4_pkts_mask +, +l2_phy_rçû_t + * +pÜt +) + +1118 + `_fÜw¬d_div +( +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 + ~<¡dt.h +> + +27 + ~<y³s.h +> + +28 + ~<sys/ty³s.h +> + +29 + ~<¡rg.h +> + +30 + ~<sys/queue.h +> + +31 + ~<¡d¬g.h +> + +32 + ~<ºo.h +> + +33 + ~<gÝt.h +> + +34 + ~<¡dboÞ.h +> + +36 + ~<¹e_debug.h +> + +37 + ~<¹e_memÜy.h +> + +38 + ~<¹e_h.h +> + +39 + ~<¹e_hdev.h +> + +40 + ~<¹e_rg.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 + sroutg_fo + { + +84 +ut32_t + + md¡__addr +; + +85 +ut8_t + + mdth +; + +86 +ut32_t + + mmric +; + +87 +ut32_t + + mfib_nh_size +; + +88 +ut32_t + + mnh__addr +[ +MAX_FIB_PATHS +]; + +89 +ut8_t + + mout_pÜt +[ +MAX_FIB_PATHS +]; + +90 } + g__¹e_ÿche_®igÃd +; + +96 + sfib_·th + { + +97 +ut32_t + + mnh_ +; + +98 +ut8_t + + mout_pÜt +; + +99 +ut32_t + + m»fcouÁ +; + +100 +l2_adj_y + * + ml2_adj_±r +; + +101 } + g__¹e_ÿche_®igÃd +; + +107 + sfib_fo + { + +108 +ut32_t + + md¡__addr +; + +109 +ut32_t + + mmric +; + +110 +ut32_t + + mfib_nh_size +; + +111 +ut8_t + + mdth +; + +112 +fib_·th + * + m·th +[ +MAX_FIB_PATHS +]; + +113 } + g__¹e_ÿche_®igÃd +; + +118 + sl2_adj_y + { + +119 +h_addr + + mh_addr +; + +120 +ut32_t + + mNext_hÝ_ +; + +121 +ut8_t + + mout_pÜt_id +; + +122 +ut32_t + + m»fcouÁ +; + +123 +ut8_t + + ml2_¡rg +[256]; + +124 +l2_phy_rçû_t + * + mphy_pÜt +; + +125 +ut8_t + + mæags +; + +126 } + g__¹e_ÿche_®igÃd +; + +131 + sfib_·th_key_v4 + { + +132 +ut32_t + + mnh_ +; + +133 +ut8_t + + mout_pÜt +; + +134 +ut8_t + + mfËr1 +; + +135 +ut8_t + + mfËr2 +; + +136 +ut8_t + + mfËr3 +; + +142 + sl2_adj_key_v4 + { + +143 +ut32_t + + mNext_hÝ_ +; + +144 +ut8_t + + mout_pÜt_id +; + +145 +ut8_t + + mfËr1 +; + +146 +ut8_t + + mfËr2 +; + +147 +ut8_t + + mfËr3 +; + +153 + sroutg_bË_y + { + +154 +ut32_t + + m +; + +155 +ut8_t + + mpÜt_id +; + +156 +l2_adj_y + * + ml2_adj_±r +; + +157 } + g__¹e_ÿche_®igÃd +; + +162 + sl3fwd_¡©s + { + +163 +ut64_t + + mnb_rx_l3_pkt +; + +164 +ut64_t + + mnb_tx_l3_pkt +; + +165 +ut64_t + + mnb_rx_l3_icmp_pkt +; + +167 +ut64_t + + mnb_tx_l3_icmp_pkt +; + +169 +ut64_t + + mnb_l3_drÝ_pkt +; + +170 +ut64_t + + mtÙ®_nb_rx_l3_pkt +; + +172 +ut64_t + + mtÙ®_nb_tx_l3_pkt +; + +174 } + tl3_¡©s_t +; + +176 + s_´ÙocÞ_ty³ + { + +177 +ut8_t + + m´ÙocÞ_ty³ +; + +178 (* + mfunc +è( + m¹e_mbuf + **, + mut16_t +, + mut64_t +, + +179 + ml2_phy_rçû_t + *); + +180 } + g__¹e_ÿche_®igÃd +; + +189 +Ím_ +(); + +198 +Ím4_bË_rou_add +( +routg_fo + * +put_¬¿y +); + +209 +Ím4_bË_rou_de +( +ut32_t + + +, +ut8_t + +dth +); + +222 +Ím4_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ut16_t + +nb_pkts +, + +223 +ut64_t + +v®id_pkts_mask +, + +224 +l2_phy_rçû_t + * +pÜt +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +225 +ut64_t + * +h_mask +); + +236 +is_v®id_v4_pkt +( +v4_hdr + * +pkt +, +ut32_t + +lk_Ën +); + +251 +l3fwd_rx_v4_·cks +( +¹e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +252 +ut64_t + +pkt_mask +, +l2_phy_rçû_t + * +pÜt +); + +265 +g_de¡_mac_fÜ_ÃxthÝ +( +ut32_t + +Ãxt_hÝ_ +, + +266 +ut8_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 +( +ut32_t + +addr +, +ut8_t + +pÜtid +); + +299 +fib_·th + * +pÝuÏ_fib_·th +( +ut32_t + +nh_ +, +ut8_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 +ut8_t + +_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +); + +353 +ut32_t + +rÙr32 +(ut32_ +v®ue +, +couÁ +); + +356 +»sÞve_l2_adj +( +ut32_t + +ÃxthÝ_ +, +ut8_t + +out_pÜt_id +, + +357 cÚ¡ +h_addr + * +hw_addr +); + +360 +l3_´ÙocÞ_ty³_add +( +ut8_t + +´ÙocÞ_ty³ +, + +361 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +362 +l2_phy_rçû_t + *)); + +365 + `_loÿl_·cks_´oûss +( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +366 +l2_phy_rçû_t + *); + +367 + `_loÿl_out_div +( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +368 +l2_phy_rçû_t + *); + +371 + `_fÜw¬d_div +( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +372 +l2_phy_rçû_t + *); + + @VIL/l2l3_stack/l3fwd_lpm6.c + +17 + ~"l3fwd_commÚ.h +" + +18 + ~"l3fwd_Ím4.h +" + +19 + ~"l3fwd_Ím6.h +" + +20 + ~"l3fwd_commÚ.h +" + +21 + ~"rçû.h +" + +22 + ~"l2_´Ùo.h +" + +23 + ~"lib_¬p.h +" + +24 + ~"lib_icmpv6.h +" + +29 * + gÍm6_bË +; + +30 +¹e_hash + * + gl2_adj_v6_hash_hªdË +; + +31 +¹e_hash + * + gfib_·th_v6_hash_hªdË +; + +32 +ut8_t + +nh_lks +[ +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 +("Failedo create LPM IPV6able\n"); + +60 +¹e_hash_·¿ms + +l2_adj_v6_·¿ms + = { + +61 . +Çme + = "l2_ADJ_IPV6_HASH", + +62 . +s + = 64, + +63 . +key_Ën + = ( +l2_adj_key_v6 +), + +64 . +hash_func + = +¹e_jhash +, + +65 . +hash_func__v® + = 0, + +68 +l2_adj_v6_hash_hªdË + = + `¹e_hash_ü +(& +l2_adj_v6_·¿ms +); + +69 ià( +l2_adj_v6_hash_hªdË + =ð +NULL +) { + +70 + `´tf +("ND for IPV6te_hash_create failed.\n"); + +73 + `´tf +("ND IPV6_hash_handle %p\n\n", + +74 (*) +l2_adj_v6_hash_hªdË +); + +78 +¹e_hash_·¿ms + +fib_·th_v6_·¿ms + = { + +79 . +Çme + = "FIB_PATH_IPV6_HASH", + +80 . +s + = 64, + +81 . +key_Ën + = ( +fib_·th_key_v6 +), + +82 . +hash_func + = +¹e_jhash +, + +83 . +hash_func__v® + = 0, + +84 . +exa_æag + = 1, + +88 +fib_·th_v6_hash_hªdË + = + `¹e_hash_ü +(& +fib_·th_v6_·¿ms +); + +90 ià( +fib_·th_v6_hash_hªdË + =ð +NULL +) { + +91 + `´tf +("FIB athte_hash_create failed\n"); + +95 + } +} + +97 + $Ím6_bË_rou_add +( +v6_routg_fo + * +d©a +) + +100 +v6_routg_fo + * +fib + = +d©a +; + +102 +¹e_bË_Ím_v6_key + +Ím6_key +; + +103 +ut8_t + +i +; + +104 +i + = 0; i < 16; i++) { + +105 +Ím6_key +. + +[ +i +] = +fib +-> +d¡_v6 +[i]; + +107 +Ím6_key +. +dth + = +fib +->depth; + +109 +TÙ®_rou_couÁ +; + +110 +v6_fib_fo + +y +; + +111 +i + = 0; i < 16; i++) { + +112 +y +. +d¡_v6 +[ +i +] = +fib +->dst_ipv6[i]; + +114 +y +. +dth + = +fib +->depth; + +115 +y +. +fib_nh_size + = +fib +->fib_nh_size; + +117 #ià +MULTIPATH_FEAT + + +118 ià( +y +. +fib_nh_size + =ð0 ||Áry.fib_nh_siz> +MAX_FIB_PATHS +) + +120 ià( +y +. +fib_nh_size + != 1) + +123 +´tf + + +125 +y +. +fib_nh_size +); + +130 #ià +MULTIPATH_FEAT + + +131 +i + = 0; i < +y +. +fib_nh_size +; i++) + +133 +i + = 0; i < 1; i++) + +136 +v6_fib_·th + * +v6_fib_·th_addr + = +NULL +; + +137 +v6_fib_·th_addr + = + +138 + `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 +-> +dth +, + +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 +-> +dth +); + +163 +y +. +·th +[ +i +] = +NULL +; + +167 +key_found +, +»t +; + +168 * +y_±r +; + +171 + `´tf +("%s, L%u \n", +__FUNCTION__ +, +__LINE__ +); + +173 +»t + = + +174 +¹e_bË_Ím_v6_Ýs +. + `f_add +( +Ím6_bË +, (*)& +Ím6_key +, & +y +, + +175 & +key_found +, & +y_±r +); + +176 + `´tf +("%s, L%u \n", +__FUNCTION__ +, +__LINE__ +); + +178 ià( +»t +) { + +179 + `´tf +("Failedo Add IPoute in LPMv6\n"); + +182 + `´tf +("Addedouteo IPv6 LPMable (IPv6 destination = " + +185 +Ím6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2],pm6_key.ip[3], + +186 +Ím6_key +. + +[4],pm6_key.ip[5],pm6_key.ip[6],pm6_key.ip[7], + +187 +Ím6_key +. + +[8],pm6_key.ip[9],pm6_key.ip[10],pm6_key.ip[11], + +188 +Ím6_key +. + +[12],pm6_key.ip[13],pm6_key.ip[14], + +189 +Ím6_key +. + +[15], +fib +-> +dth +); + +191 +TÙ®_rou_couÁ +++; + +192 + `´tf +("TÙ® Roud Added : %u, Key_found: %d\n", +TÙ®_rou_couÁ +, + +193 +key_found +); + +195 ià( +TÙ®_rou_couÁ + == 2) + +196 + `v6_©e__hash_bË +(); + +199 + } +} + +202 + $Ím6_bË_rou_de +( +ut8_t + +d¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +dth +) + +206 +¹e_bË_Ím_v6_key + +Ím6_key +; + +207 + `memýy +(& +Ím6_key +. + +, & +d¡_v6 +, ( +RTE_LPM_IPV6_ADDR_SIZE +)); + +208 +Ím6_key +. +dth + = 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_de +( +Ím6_bË +, & +Ím6_key +, & +key_found +, + +215 +y +); + +217 ià( +»t +) { + +218 + `´tf +("Failedo Delete IPoute from LPMv6able\n"); + +222 + `´tf +("Deletedoute from IPv6 LPMable (IPv6 destination = " + +225 +Ím6_key +. + +[0],pm6_key.ip[1],pm6_key.ip[2],pm6_key.ip[3], + +226 +Ím6_key +. + +[4],pm6_key.ip[5],pm6_key.ip[6],pm6_key.ip[7], + +227 +Ím6_key +. + +[8],pm6_key.ip[9],pm6_key.ip[10],pm6_key.ip[11], + +228 +Ím6_key +. + +[12],pm6_key.ip[13],pm6_key.ip[14], + +229 +Ím6_key +. + +[15],pm6_key. +dth +, +key_found +); + +232 + `»move_v6_fib_l2_adj_y +( +y +); + +233 + `¹e_ä +( +y +); + +235 + } +} + +238 + $Ím6_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, + +239 +ut16_t + +nb_pkts +, + +240 +ut64_t + +pkts_mask +, + +241 +l2_phy_rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +242 +ut64_t + * +h_mask +) + +244 +v6_routg_bË_y + + +245 * +v6_s +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +246 +ut64_t + +lookup_h_mask_v6 + = 0; + +247 +¡©us +; + +248 +ut64_t + +lookup_miss_mask + = +pkts_mask +; + +250 +ut32_t + +d¡_addr_off£t + = + +251 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +252 +ut64_t + +pkts_key_mask + = +pkts_mask +; + +255 ; +pkts_key_mask +;) { + +257 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_key_mask +); + +258 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +259 +pkts_key_mask + &ð~ +pkt_mask +; + +261 +ut8_t + * +Ím6_key +; + +262 +ut8_t + +d¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +263 + `memýy +( +d¡_addr +, + +264 ( +ut8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts_bur¡ +[ +pos +], + +265 +d¡_addr_off£t +), + +266 +RTE_LPM_IPV6_ADDR_SIZE +); + +267 +Ím6_key + = + +268 ( +ut8_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 IPoute\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 +("AFTERookup_hit_mask = %p,ookup_miss_mask =%p\n", + +287 (*) +lookup_h_mask_v6 +, (*) +lookup_miss_mask +); + +290 ; +lookup_miss_mask +;) { + +292 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +lookup_miss_mask +); + +293 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +294 +lookup_miss_mask + &ð~ +pkt_mask +; + +295 + `¹e_pktmbuf_ä +( +pkts_bur¡ +[ +pos +]); + +296 +pkts_bur¡ +[ +pos +] = +NULL +; + +297 ià( +L3FWD_DEBUG +) + +298 + `´tf +("\n DROP PKT IPV4 Lookup_miss_Mask = %p\n", + +299 (*) +lookup_miss_mask +); + +302 * +h_mask + = +lookup_h_mask_v6 +; + +303 ; +lookup_h_mask_v6 +;) { + +304 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +lookup_h_mask_v6 +); + +305 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +306 +lookup_h_mask_v6 + &ð~ +pkt_mask +; + +307 +¹e_mbuf + * +pkt + = +pkts_bur¡ +[ +pos +]; + +309 +v6_fib_fo + * +y + = + +310 ( +v6_fib_fo + *) +v6_s +[ +pos +]; + +312 #ià +MULTIPATH_FEAT + + +314 +ut8_t + +ecmp_·th + = + `v6_hash_lßd_b®ªû +( +pkts_bur¡ +[ +pos +]); + +315 +ut8_t + +£Ëùed_·th + = 0; + +316 +v6_fib_·th + * +fib_·th + = +NULL +; + +317 ià((( +y +-> +fib_nh_size + != 0) + +318 && ( +y +-> +fib_nh_size + - 1è< +MAX_SUPPORTED_FIB_PATHS +) + +319 && (( +ecmp_·th + !ð0è&& (ecmp_·th - 1è< +HASH_BUCKET_SIZE +)) + +320 +£Ëùed_·th + = + +321 +nh_lks +[ +y +-> +fib_nh_size + - 1][ +ecmp_·th + - 1]; + +322 ià( +£Ëùed_·th + < +MAX_FIB_PATHS +) + +323 +fib_·th + = +y +-> +·th +[ +£Ëùed_·th +]; + +324 +´tf + + +326 +y +-> +fib_nh_size +, +ecmp_·th +, +£Ëùed_·th +); + +328 +v6_fib_·th + * +fib_·th + = +y +-> +·th +[0]; + +330 ià( +fib_·th + =ð +NULL +) { + +331 + `´tf +("Fib_path is NULL, ND hasotesolved\n"); + +332 + `¹e_pktmbuf_ä +( +pkt +); + +333 +pkts_bur¡ +[ +pos +] = +NULL +; + +334 +¡©s +. +nb_l3_drÝ_pkt +++; + +335 * +h_mask + &ð~ +pkt_mask +; + +336 +´tf + + +341 ià( +fib_·th +-> +l2_adj_v6_±r +-> +æags + =ð +L2_ADJ_UNRESOLVED +) { + +342 + `¹e_pktmbuf_ä +( +pkts_bur¡ +[ +pos +]); + +343 +pkts_bur¡ +[ +pos +] = +NULL +; + +344 * +h_mask + &ð~ +pkt_mask +; + +345 ià( +L3FWD_DEBUG +) + +346 +´tf + + +351 +ut8_t + * +h_de¡ + = + +352 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +353 +ut8_t + * +h_¤c + = + +354 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM + + 6); + +355 ià( +L3FWD_DEBUG +) { + +356 +´tf + + +361 +h_de¡ +[0],th_dest[1],th_dest[2], + +362 +h_de¡ +[3], + +363 +h_de¡ +[4],th_de¡[5], +h_¤c +[0], + +364 +h_¤c +[1], + +365 +h_¤c +[2],th_src[3], + +366 +h_¤c +[4],th_src[5]); + +370 + `memýy +( +h_de¡ +, +fib_·th +-> +l2_adj_v6_±r +-> +l2_¡rg +, + +371 ( +h_addr +) * 2 + 2); + +373 ià( +L3FWD_DEBUG +) { + +374 +´tf + + +377 "%02x:%02x\n", +h_de¡ +[0], + +378 +h_de¡ +[1],th_dest[2],th_dest[3], + +379 +h_de¡ +[4], + +380 +h_de¡ +[5], +h_¤c +[0],th_src[1], + +381 +h_¤c +[2], + +382 +h_¤c +[3],th_src[4],th_src[5]); + +384 +pÜt_±r +[ +pos +] = +fib_·th +-> +l2_adj_v6_±r +-> +phy_pÜt +; + +387 ià( +L3FWD_DEBUG +) + +388 + `´tf +("Successfully sento ort %u \n\r", + +389 +fib_·th +-> +out_pÜt +); + +392 + } +} + +394 + $l3fwd_rx_v6_·cks +( +¹e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +395 +ut64_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 +ut64_t + +pkts_fÜ_´oûss + = +v®id_pkts_mask +; + +406 +v6_hdr + *ipv6_hdr; + +408 +ut64_t + +icmp_pkts_mask + = +v®id_pkts_mask +; + +409 +ut64_t + +v6_fÜw¬d_pkts_mask + = +v®id_pkts_mask +; + +410 +ut16_t + +nb_icmpv6_pkt + = 0; + +411 +ut16_t + +nb_l3_pkt + = 0; + +413 +ut8_t + +cÚfigu»d_pÜt_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { 0 }; + +414 +t8_t + +sÞiced_node_muÉiÿ¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +] = { + +417 +ut8_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 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_fÜ_´oûss +); + +449 +ut64_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Þiced_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 +( +ut8_t + + +518 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +519 +ut8_t + +pÜtid +) + +522 +fib_·th_key_v6 + +·th_key +; + +523 +ut8_t + +i +; + +524 +i + = 0; i < 16; i++) { + +525 +·th_key +. +nh_v6 +[ +i +] =h_ipv6[i]; + +527 +·th_key +. +out_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 athntryxists 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_pathntry 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 +ut32_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 +( +ut8_t + + +589 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +590 +ut8_t + +pÜtid +) + +593 +l2_adj_key_v6 + +l2_adj_key +; + +594 +ut8_t + +i +; + +595 +i + = 0; i < 16; i++) { + +596 +l2_adj_key +. +nh_v6 +[ +i +] =h_ipv6[i]; + +598 +l2_adj_key +. +out_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_entryxists for Next Hop IPv6 = " + +613 +nh_v6 +[0],h_ipv6[1],h_ipv6[2],h_ipv6[3], + +614 +nh_v6 +[4],h_ipv6[5],h_ipv6[6],h_ipv6[7], + +615 +nh_v6 +[8],h_ipv6[9],h_ipv6[10],h_ipv6[11], + +616 +nh_v6 +[12],h_ipv6[13],h_ipv6[14],h_ipv6[15], + +617 +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 +ut16_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 +ut32_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 memoryllocation 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_¡rg +, & +h_d¡ +, + +658 ( +h_addr +)); + +659 + `memýy +(& +adj_d©a +-> +l2_¡rg +[6], & +h_¤c +, + +660 ( +h_addr +)); + +661 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 hashookup Successful..!!!\n"); + +691 +»t_l2_adj_d©a +; + +693 +NULL +; + +694 + } +} + +696 + $g_de¡_mac_fÜ_ÃxthÝ_v6 +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +697 +ut32_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 +ut8_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 +("NDntry isot 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_pathntry isot Removed!h_iPv6 = " + +746 +fib_·th_addr +-> +nh_v6 +[0], fib_path_addr->nh_ipv6[1], + +747 +fib_·th_addr +-> +nh_v6 +[2], fib_path_addr->nh_ipv6[3], + +748 +fib_·th_addr +-> +nh_v6 +[4], fib_path_addr->nh_ipv6[5], + +749 +fib_·th_addr +-> +nh_v6 +[6], fib_path_addr->nh_ipv6[7], + +750 +fib_·th_addr +-> +nh_v6 +[8], fib_path_addr->nh_ipv6[9], + +751 +fib_·th_addr +-> +nh_v6 +[10], fib_path_addr->nh_ipv6[11], + +752 +fib_·th_addr +-> +nh_v6 +[12], fib_path_addr->nh_ipv6[13], + +753 +fib_·th_addr +-> +nh_v6 +[14], fib_path_addr->nh_ipv6[15], + +754 +fib_·th_addr +-> +out_pÜt +, fib_·th_addr-> +»fcouÁ +); + +755 +fib_·th_addr +-> +»fcouÁ +--; + +756 + `´tf +("AFTER fib_pathntry isot Removed!h_iPv6 = " + +759 +fib_·th_addr +-> +nh_v6 +[0], fib_path_addr->nh_ipv6[1], + +760 +fib_·th_addr +-> +nh_v6 +[2], fib_path_addr->nh_ipv6[3], + +761 +fib_·th_addr +-> +nh_v6 +[4], fib_path_addr->nh_ipv6[5], + +762 +fib_·th_addr +-> +nh_v6 +[6], fib_path_addr->nh_ipv6[7], + +763 +fib_·th_addr +-> +nh_v6 +[8], fib_path_addr->nh_ipv6[9], + +764 +fib_·th_addr +-> +nh_v6 +[10], fib_path_addr->nh_ipv6[11], + +765 +fib_·th_addr +-> +nh_v6 +[12], fib_path_addr->nh_ipv6[13], + +766 +fib_·th_addr +-> +nh_v6 +[14], fib_path_addr->nh_ipv6[15], + +767 +fib_·th_addr +-> +out_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 +, +ut32_t + +lk_Ën +) + +798 ià( +lk_Ën + < ( +v4_hdr +)) + +800 ià( + `¹e_ýu_to_be_16 +( +pkt +-> +·ylßd_Ën +è< ( +v6_hdr +)) + +804 + } +} + +807 + $v6_l3_´ÙocÞ_ty³_add +( +ut8_t + +´ÙocÞ_ty³ +, + +808 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +809 +l2_phy_rçû_t + *)) + +811 +´ÙocÞ_ty³ +) { + +812 +IPPROTO_ICMPV6 +: + +813 +´Ùo_ty³ +[ +IP_LOCAL +] = + +814 + `¹e_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_div +( +¹e_mbuf + ** +pkt_bur¡ +, +__¹e_unu£d + +ut16_t + +nb_rx +, + +833 +ut64_t + +icmp_pkt_mask +, +l2_phy_rçû_t + * +pÜt +) + +835 ; +icmp_pkt_mask +;) { + +837 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +icmp_pkt_mask +); + +838 +ut64_t + +pkt_mask + = 1LLU << +pos +; + +839 +icmp_pkt_mask + &ð~ +pkt_mask +; + +841 + `´oûss_icmpv6_pkt +( +pkt_bur¡ +[ +pos +], +pÜt +); + +843 + } +} + +846 + $v6_fÜw¬d_div +( +¹e_mbuf + ** +pkt_bur¡ +, +ut16_t + +nb_pkts +, + +847 +ut64_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 +ut64_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 +ut64_t + +h_mask + = 0; + +860 ; +pkts_fÜ_´oûss +;) { + +862 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_fÜ_´oûss +); + +863 +ut64_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 +ut8_t + + $v6_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +) + +892 +ut32_t + +¤c_addr_off£t + = + +893 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_SRC_ADR_OFST_IPV6 +; + +894 +ut32_t + +d¡_addr_off£t + = + +895 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST_IPV6 +; + +896 +ut8_t + +¤c_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +897 +ut8_t + +d¡_addr +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +899 + `memýy +(& +¤c_addr +, + +900 ( +ut8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +¤c_addr_off£t +), + +901 +RTE_LPM_IPV6_ADDR_SIZE +); + +902 + `memýy +(& +d¡_addr +, + +903 ( +ut8_t + *è + `RTE_MBUF_METADATA_UINT32_PTR +( +mbuf +, +d¡_addr_off£t +), + +904 +RTE_LPM_IPV6_ADDR_SIZE +); + +905 +ut32_t + +hash_key1 + = 0; + +906 +ut32_t + +hash_key2 + = 0; + +907 +ut8_t + +i +; + +908 +i + = 0; i < +RTE_LPM_IPV6_ADDR_SIZE +; i++) { + +909 +hash_key1 + +ð +¤c_addr +[ +i +]; + +910 +hash_key2 + +ð +d¡_addr +[ +i +]; + +912 +hash_key1 + = hash_key1 ^ +hash_key2 +; + +913 +hash_key2 + = +hash_key1 +; + +914 +hash_key1 + = + `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 +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +pÜtid +, + +930 +h_addr + * +hw_addr +) + +932 +l2_adj_v6_y + * +adj_d©a + = +NULL +; + +933 +h_addr + +h_d¡ +; + +934 +ut16_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_¡rg +, +hw_addr +, + +948 ( +h_addr +)); + +949 + `memýy +(& +adj_d©a +-> +l2_¡rg +[6], + +950 & +adj_d©a +-> +phy_pÜt +-> +maÿddr +, + +951 ( +h_addr +)); + +952 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 +ut32_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 memoryllocation 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_¡rg +, +hw_addr +, ( +h_addr +)); + +982 + `memýy +(& +adj_d©a +-> +l2_¡rg +[6], & +pÜt +-> +maÿddr +, + +983 ( +h_addr +)); + +984 + `memýy +(& +adj_d©a +-> +l2_¡rg +[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 +(" NDesolution successfulnd 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 +ut32_t + + + = 0; + +1000 +ut8_t + +ii +; + +1001 + `´tf +("\n\t\t\t IPv6 FIB_path Cacheable...."); + +1002 +´tf + + +1004 +´tf + + +1006 +´tf + + +1009 +¹e_hash_©e + + +1010 ( +fib_·th_v6_hash_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 Cacheable....."); + +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_¡rg +[0], + +1046 +l2_d©a +-> +l2_¡rg +[1], + +1047 +l2_d©a +-> +l2_¡rg +[2], + +1048 +l2_d©a +-> +l2_¡rg +[3], + +1049 +l2_d©a +-> +l2_¡rg +[4], + +1050 +l2_d©a +-> +l2_¡rg +[5], + +1051 +l2_d©a +-> +l2_¡rg +[6], + +1052 +l2_d©a +-> +l2_¡rg +[7], + +1053 +l2_d©a +-> +l2_¡rg +[8], + +1054 +l2_d©a +-> +l2_¡rg +[9], + +1055 +l2_d©a +-> +l2_¡rg +[10], + +1056 +l2_d©a +-> +l2_¡rg +[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 + ~<¡dt.h +> + +28 + ~<y³s.h +> + +29 + ~<sys/ty³s.h +> + +30 + ~<¡rg.h +> + +31 + ~<sys/queue.h +> + +32 + ~<¡d¬g.h +> + +33 + ~<ºo.h +> + +34 + ~<gÝt.h +> + +35 + ~<¡dboÞ.h +> + +37 + ~<¹e_debug.h +> + +38 + ~<¹e_h.h +> + +39 + ~<¹e_hdev.h +> + +40 + ~<¹e_rg.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 + sv6_routg_fo + { + +75 +ut8_t + + md¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +76 +ut8_t + + mdth +; + +77 +ut32_t + + mmric +; + +78 +ut32_t + + mfib_nh_size +; + +79 +ut8_t + + mnh_v6 +[ +MAX_FIB_PATHS +][ +RTE_LPM_IPV6_ADDR_SIZE +]; + +80 +ut8_t + + mout_pÜt +[ +MAX_FIB_PATHS +]; + +81 } + g__¹e_ÿche_®igÃd +; + +87 + sv6_fib_·th + { + +88 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +89 +ut32_t + + m»fcouÁ +; + +90 +ut8_t + + mout_pÜt +; + +91 +l2_adj_v6_y + * + ml2_adj_v6_±r +; + +92 } + g__¹e_ÿche_®igÃd +; + +98 + sv6_fib_fo + { + +99 +ut8_t + + md¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +100 +ut8_t + + mdth +; + +101 +ut32_t + + mmric +; + +102 +ut32_t + + mfib_nh_size +; + +103 +v6_fib_·th + * + m·th +[ +MAX_FIB_PATHS +]; + +104 } + g__¹e_ÿche_®igÃd +; + +109 + sl2_adj_v6_y + { + +110 +h_addr + + mh_addr +; + +111 +ut8_t + + mout_pÜt_id +; + +112 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +113 +ut32_t + + m»fcouÁ +; + +114 +ut8_t + + ml2_¡rg +[256]; + +115 +l2_phy_rçû_t + * + mphy_pÜt +; + +116 +ut8_t + + mæags +; + +117 } + g__¹e_ÿche_®igÃd +; + +122 + sl2_adj_key_v6 + { + +125 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +126 +ut8_t + + mout_pÜt_id +; + +127 +ut8_t + + mfËr1 +; + +128 +ut8_t + + mfËr2 +; + +129 +ut8_t + + mfËr3 +; + +135 + sfib_·th_key_v6 + { + +138 +ut8_t + + mnh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +]; + +139 +ut8_t + + mout_pÜt +; + +140 +ut8_t + + mfËr1 +; + +141 +ut8_t + + mfËr2 +; + +142 +ut8_t + + mfËr3 +; + +145 + sv6_´ÙocÞ_ty³ + { + +146 +ut8_t + + m´ÙocÞ_ty³ +; + +147 (* + mfunc +è( + m¹e_mbuf + **, + mut16_t +, + mut64_t +, + +148 + ml2_phy_rçû_t + *); + +149 } + g__¹e_ÿche_®igÃd +; + +157 +Ím6_ +(); + +166 +Ím6_bË_rou_add +( +v6_routg_fo + * +d©a +); + +177 +Ím6_bË_rou_de +( +ut8_t + +d¡_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +178 +ut8_t + +dth +); + +191 +Ím6_bË_lookup +( +¹e_mbuf + ** +pkts_bur¡ +, +ut16_t + +nb_pkts +, + +192 +ut64_t + +pkts_mask +, + +193 +l2_phy_rçû_t + * +pÜt_±r +[ +RTE_PORT_IN_BURST_SIZE_MAX +], + +194 +ut64_t + * +h_mask +); + +209 +l3fwd_rx_v6_·cks +( +¹e_mbuf + ** +m +, +ut16_t + +nb_pkts +, + +210 +ut64_t + +v®id_pkts_mask +, + +211 +l2_phy_rçû_t + * +_pÜt +); + +222 +v6_fib_·th + * +pÝuÏ_v6_fib_·th +( +ut8_t + + +223 +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +224 +ut8_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 +( +ut8_t + + +258 +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +259 +ut8_t + +pÜtid +); + +272 +g_de¡_mac_fÜ_ÃxthÝ_v6 +( +ut8_t + +nh_v6 +[ +RTE_LPM_IPV6_ADDR_SIZE +], + +273 +ut32_t + +out_phy_pÜt +, + +274 +h_addr + * +hw_addr +); + +281 +»move_v6_fib_l2_adj_y +(* +y +); + +284 +v6_l3_´ÙocÞ_ty³_add +( +ut8_t + +´ÙocÞ_ty³ +, + +285 (* +func +è( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +286 +l2_phy_rçû_t + *)); + +289 + `v6_loÿl_div +( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +290 +l2_phy_rçû_t + *); + +293 + `v6_fÜw¬d_div +( +¹e_mbuf + **, +ut16_t +, +ut64_t +, + +294 +l2_phy_rçû_t + *); + +296 + `is_v®id_v6_pkt +( +v6_hdr + * +pkt +, +ut32_t + +lk_Ën +); + +297 +ut8_t + + `v6_hash_lßd_b®ªû +( +¹e_mbuf + * +mbuf +); + +311 + `»sÞve_v6_l2_adj +( +ut8_t + +nh_ +[ +RTE_LPM_IPV6_ADDR_SIZE +], ut8_ +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 +routg_fo + + gput_¬¿y +[] = { + +33 #ià +MULTIPATH_FEAT + + +34 { +IPv4 +(30, 12, 0, 1), 24, 0, 4, + +35 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +36 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +38 { +IPv4 +(40, 12, 0, 1), 24, 0, 4, + +39 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +40 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +42 { +IPv4 +(50, 12, 0, 1), 24, 0, 4, + +43 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +44 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +46 { +IPv4 +(60, 12, 0, 1), 24, 0, 4, + +47 { +IPv4 +(192, 168, 0, 2), IPv4(1, 1, 1, 7), IPv4(120, 0, 0, 2), + +48 +IPv4 +(30, 40, 50, 60)}, {1, 1, 1, 1} }, + +50 { +IPv4 +(100, 100, 100, 100), 24, 0, 2, + +51 { +IPv4 +(120, 0, 0, 2), IPv4(120, 0, 0, 2)}, {1, 1} }, + +53 { +IPv4 +(200, 100, 100, 100), 24, 0, 2, + +54 { +IPv4 +(80, 0, 0, 2), IPv4(80, 40, 50, 60)}, {1, 1} }, + +56 { +IPv4 +(30, 12, 0, 1), 24, 0, 1, + +57 { +IPv4 +(192, 168, 0, 2)}, {1} }, + +59 { +IPv4 +(20, 12, 0, 1), 24, 0, 1, + +60 { +IPv4 +(120, 0, 0, 2)}, {1} }, + +64 +v6_routg_fo + + gv6_put_¬¿y +[] = { + +81 + $l3fwd_ +() + +83 + `´tf +(" *********** L3 Initialization START ************\n"); + +84 ià( + `Ím_ +() == 0) { + +85 + `¹e_ex +( +EXIT_FAILURE +, "L3 Initialization IPv4 Failed\n"); + +87 ià( + `Ím6_ +() == 0) { + +88 + `¹e_ex +( +EXIT_FAILURE +, "L3 Initialization for IPV6 Failed\n"); + +91 + `li¡_add_ty³ +( +ETHER_TYPE_IPv4 +, +l3fwd_rx_v4_·cks +); + +92 + `li¡_add_ty³ +( +ETHER_TYPE_IPv6 +, +l3fwd_rx_v6_·cks +); + +94 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_ICMP +, +_loÿl_·cks_´oûss +); + +95 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_TCP +, +_fÜw¬d_div +); + +96 + `l3_´ÙocÞ_ty³_add +( +IPPROTO_UDP +, +_fÜw¬d_div +); + +98 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_ICMPV6 +, +v6_loÿl_div +); + +99 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_TCP +, +v6_fÜw¬d_div +); + +100 + `v6_l3_´ÙocÞ_ty³_add +( +IPPROTO_UDP +, +v6_fÜw¬d_div +); + +102 + } +} + +104 + $pÝuÏ_Ím_rous +() + +106 + `pÝuÏ_Ím4_bË_rous +(); + +108 + } +} + +110 + $pÝuÏ_Ím4_bË_rous +() + +112 +ut8_t + +i +; + +113 +´tf + + +115 +i + = 0; i < +MAX_ROUTES +; i++) { + +116 ià( + `Ím4_bË_rou_add +(& +put_¬¿y +[ +i +])) { + +118 + `´tf +("TÙ®ou Added# %d\n", +i + + 1); + +120 + `¹e_ex +( +EXIT_FAILURE +, + +122 +i +); + +125 +´tf + + +127 + } +} + +129 + $pÝuÏ_Ím6_bË_rous +() + +131 +ut8_t + +i +; + +132 +´tf + + +134 +i + = 0; i < 2; i++) { + +135 ià( + `Ím6_bË_rou_add +(& +v6_put_¬¿y +[ +i +])) { + +137 + `´tf +("Addedou # %d\n", +i +); + +139 + `¹e_ex +( +EXIT_FAILURE +, + +141 +i +); + +144 + `´tf +(" *********** L3 IPV6 Route Initialization END ************\n"); + +145 + } +} + + @VIL/l2l3_stack/lib_arp.c + +17 + ~<execfo.h +> + +18 + ~<¡dio.h +> + +19 + ~<¡dlib.h +> + +20 + ~<¡dt.h +> + +21 + ~<¡rg.h +> + +22 + ~<uni¡d.h +> + +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_pe.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 +ut8_t + +´v__pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +61 +ut32_t + +tim_lcÜe +; + +62 +ut32_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Úvt_´efixËn_to_Ãtmask_v6 +( +ut32_t + +dth +, + +71 +ut8_t + +Ãtmask_v6 +[]); + +73 +ut8_t + + gvnf_commÚ_¬p_lib_ +; + +74 +ut8_t + + gvnf_commÚ_nd_lib_ +; + +75 +ut8_t + + glßdb_pe_couÁ +; + +77 +ut32_t + + gARPICMP_DEBUG +; + +78 +ut32_t + + gNDIPV6_DEBUG +; + +80 +ut32_t + + g¬p_rou_tbl_dex +; + +81 +ut32_t + + gnd_rou_tbl_dex +; + +82 +ut32_t + + glk_hw_addr_¬¿y_idx +; + +84 +ut32_t + + glib_¬p_g_mac_»q +; + +85 +ut32_t + + glib_¬p_nh_found +; + +86 +ut32_t + + glib_¬p_no_nh_found +; + +87 +ut32_t + + glib_¬p_¬p_y_found +; + +88 +ut32_t + + glib_¬p_no_¬p_y_found +; + +89 +ut32_t + + glib_¬p_pÝuÏ_ÿÎed +; + +90 +ut32_t + + glib_¬p_de_ÿÎed +; + +91 +ut32_t + + glib_¬p_du¶iÿ_found +; + +93 +ut32_t + + glib_nd_g_mac_»q +; + +94 +ut32_t + + glib_nd_nh_found +; + +95 +ut32_t + + glib_nd_no_nh_found +; + +96 +ut32_t + + glib_nd_nd_y_found +; + +97 +ut32_t + + glib_nd_no_¬p_y_found +; + +98 +ut32_t + + glib_nd_pÝuÏ_ÿÎed +; + +99 +ut32_t + + glib_nd_de_ÿÎed +; + +100 +ut32_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 +ut8_t + + gdeçuÉ_h_addr +[6] = { 0, 0, 0, 0, 1, 1 }; + +108 +ut8_t + + gdeçuÉ_ +[4] = { 0, 0, 1, 1 }; + +110 +¹e_hash_·¿ms + + g¬p_hash_·¿ms + = { + +111 . +Çme + = "ARP", + +112 . + gs + = 64, + +113 . + g»£rved + = 0, + +114 . + gkey_Ën + = ( +¬p_key_v4 +), + +115 . + ghash_func + = +¹e_jhash +, + +116 . + ghash_func__v® + = 0, + +119 +¹e_hash_·¿ms + + gnd_hash_·¿ms + = { + +120 . +Çme + = "ND", + +121 . + gs + = 64, + +122 . + 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_pe + * + gmyP +; + +135 +ut8_t + + gnum_vnf_th»ads +; + +140 + s¬p_pÜt_add»ss + { + +141 +ut32_t + + m +; + +142 +ut8_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 +ut32_t + +g_nh +(uint32_t, uint32_t *); + +154 +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pÜt +, ut8_ +nhv6 +[]); + +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 ** +¡rgs +; + +249 +size_t + +i +; + +251 +size + = + `backaû +( +¬¿y +, 10); + +252 +¡rgs + = + `backaû_symbÞs +( +¬¿y +, +size +); + +254 + `RTE_LOG +( +INFO +, +LIBARP +, "Obed %zd sck f¿mes.\n", +size +); + +256 +i + = 0; i < +size +; i++) + +257 + `RTE_LOG +( +INFO +, +LIBARP +, "%s\n", +¡rgs +[ +i +]); + +259 + `ä +( +¡rgs +); + +260 + } +} + +262 +ut32_t + + $g_nh +( +ut32_t + + +, ut32_* +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 +("Noh 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 +( +ut8_t + +v6 +[], +ut32_t + * +pÜt +, ut8_ +nhv6 +[]) + +293 +i + = 0; + +294 +ut8_t + +Ãtmask_v6 +[16], +Ãt_nd +[16], +Ãt_ +[16]; + +295 +ut8_t + +k + = 0, +l + = 0, +dthæags + = 0, +dthæ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Úvt_´efixËn_to_Ãtmask_v6 +( +lib_nd_rou_bË +[ +i +]. +dth +, + +304 +Ãtmask_v6 +); + +306 +k + = 0; k < 16; k++) { + +307 ià( +lib_nd_rou_bË +[ +i +]. +v6 +[ +k +] & +Ãtmask_v6 +[k]) { + +308 +dthæags +++; + +309 +Ãt_nd +[ +k +] = +lib_nd_rou_bË +[ +i +]. +v6 +[k]; + +313 +l + = 0; < 16;++) { + +314 ià( +v6 +[ +l +] & +Ãtmask_v6 +[l]) { + +315 +dthæags1 +++; + +316 +Ãt_ +[ +l +] = +v6 +[l]; + +319 +j + = 0; + +320 ià(( +dthæags + =ð +dthæ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 +nhv6 +[ +j +] = +lib_nd_rou_bË +[ +i +].nhipv6[j]; + +332 ià( +NDIPV6_DEBUG +) + +333 + `´tf +("Noh match\n"); + +334 +dthæags + = 0; + +335 +dthæ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Ú¡ +ut32_t + +addr +, + +344 +ut32_t + * +phy_pÜt +, +h_addr + * +hw_addr +) + +346 +lib_¬p_g_mac_»q +++; + +347 +ut32_t + +nh + = 0; + +349 +nh + = + `g_nh +( +addr +, +phy_pÜt +); + +350 ià( +nh + == 0) { + +351 ià( +ARPICMP_DEBUG +) + +352 + `´tf +("ARPICMPoh 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-NAPTequesting 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Ú¡ +ut32_t + +addr +, ut32_* +phy_pÜt +, + +393 +h_addr + * +hw_addr +, +ut32_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Ú¡ +ut32_t + +addr +, + +429 +ut32_t + * +phy_pÜt +, +h_addr + * +hw_addr +) + +431 +lib_¬p_g_mac_»q +++; + +432 +ut32_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 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +481 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +483 +i + = 0, +j + = 0, +æag + = 0; + +484 +lib_nd_g_mac_»q +++; + +486 + `g_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +487 +j + = 0; j < 16; j++) { + +488 ià( +nhv6 +[ +j +]) + +489 +æag +++; + +491 ià( +æag + == 0) { + +492 ià( +NDIPV6_DEBUG +) + +493 + `´tf +("NDIPV6oh found for ipv6 " + +496 +v6addr +[0], ipv6addr[1], ipv6addr[2], + +497 +v6addr +[3], ipv6addr[4], ipv6addr[5], + +498 +v6addr +[6], ipv6addr[7], ipv6addr[8], + +499 +v6addr +[9], ipv6addr[10], ipv6addr[11], + +500 +v6addr +[12], ipv6addr[13], ipv6addr[14], + +501 +v6addr +[15], * +phy_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 +] = +nhv6 +[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 +("NDIPV6odntry 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 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +527 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +529 +i + = 0, +j + = 0, +æag + = 0; + +530 +lib_nd_g_mac_»q +++; + +532 + `g_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +533 +j + = 0; j < 16; j++) { + +534 ià( +nhv6 +[ +j +]) { + +535 +æag +++; + +538 ià( +æag + == 0) { + +539 ià( +NDIPV6_DEBUG + && +v6addr +) + +540 + `RTE_LOG +( +INFO +, +LIBARP +, + +542 +v6addr +[0], * +phy_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 +] = +nhv6 +[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 +(& +nhv6 +[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_pe_bË_y + + mhd +; + +584 +ut64_t + + mmaÿddr +; + +587 cÚ¡ * + $¬p_Ý_Çme +( +ut16_t + +¬p_Ý +) + +589 + `CHECK_ENDIAN_16 +( +¬p_Ý +)) { + +590 ( +ARP_OP_REQUEST +): + +592 ( +ARP_OP_REPLY +): + +594 ( +ARP_OP_REVREQUEST +): + +596 ( +ARP_OP_REVREPLY +): + +598 ( +ARP_OP_INVREQUEST +): + +600 ( +ARP_OP_INVREPLY +): + +606 + } +} + +608 + $´t_icmp_·ck +( +icmp_hdr + * +icmp_h +) + +610 + `RTE_LOG +( +INFO +, +LIBARP +, " ICMP:ype=%d (%s) code=%d id=%d seqnum=%d\n", + +611 +icmp_h +-> +icmp_ty³ +, + +612 ( +icmp_h +-> +icmp_ty³ + =ð +IP_ICMP_ECHO_REPLY + ? "Reply" : + +613 ( +icmp_h +-> +icmp_ty³ + == + +614 +IP_ICMP_ECHO_REQUEST + ? "Reqest" : "Undef")), + +615 +icmp_h +-> +icmp_code +, + `CHECK_ENDIAN_16 +(icmp_h-> +icmp_idt +), + +616 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_£q_nb +)); + +617 + } +} + +619 + $´t_v4_h +( +v4_hdr + * +_h +) + +621 +icmp_hdr + * +icmp_h + = + +622 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +623 + `RTE_LOG +( +INFO +, +LIBARP +, " IPv4: Version=%d HLEN=%d Type=%d Length=%d\n", + +624 ( +_h +-> +vsiÚ_ihl + & 0xf0) >> 4, (ip_h->version_ihl & 0x0f), + +625 +_h +-> +ty³_of_£rviû +, + `¹e_ýu_to_be_16 +(_h-> +tÙ®_Ëngth +)); + +626 ià( +_h +-> +Ãxt_´Ùo_id + =ð +IPPROTO_ICMP +) { + +627 + `´t_icmp_·ck +( +icmp_h +); + +629 + } +} + +631 + $´t_¬p_·ck +( +¬p_hdr + * +¬p_h +) + +633 + `RTE_LOG +( +INFO +, +LIBARP +, " ARP: hrd=%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_bys +[0], + +660 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[1], + +661 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[2], + +662 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[3], + +663 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[4], + +664 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[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_bys +[0], + +673 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[1], + +674 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[2], + +675 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[3], + +676 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[4], + +677 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[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_bys +[0], + +690 +h_h +-> +s_addr +. +addr_bys +[1], + +691 +h_h +-> +s_addr +. +addr_bys +[2], + +692 +h_h +-> +s_addr +. +addr_bys +[3], + +693 +h_h +-> +s_addr +. +addr_bys +[4],th_h->s_addr.addr_bytes[5]); + +694 + `RTE_LOG +( +INFO +, +LIBARP +, " dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + +695 +h_h +-> +d_addr +. +addr_bys +[0], + +696 +h_h +-> +d_addr +. +addr_bys +[1], + +697 +h_h +-> +d_addr +. +addr_bys +[2], + +698 +h_h +-> +d_addr +. +addr_bys +[3], + +699 +h_h +-> +d_addr +. +addr_bys +[4],th_h->d_addr.addr_bytes[5]); + +701 + } +} + +704 + $´t_mbuf +(cÚ¡ * +rx_tx +, +ut8_t + +pÜtid +, +¹e_mbuf + * +mbuf +, + +705 +le +) + +707 +h_hdr + * +h_h + = + `¹e_pktmbuf_mtod +( +mbuf +, ether_hdr *); + +708 +¬p_hdr + * +¬p_h + = + +709 ( +¬p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +710 +v4_hdr + * +v4_h + = + +711 ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +713 + `RTE_LOG +( +INFO +, +LIBARP +, "%s(%d): on ort %d kt-len=%ub-segs=%u\n", + +714 +rx_tx +, +le +, +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 acketype\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 +ut32_t + + + = 0; + +808 +´tf + + +810 +´tf + + +812 + `´tf +("\tport hwddr status ipddr\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_bys +[0], + +826 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[1], + +827 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[2], + +828 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[3], + +829 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[4], + +830 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[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 +ut32_t + +i + = 0; + +840 + `´tf +("\nARPoutgabË ha %dÁrs\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_de_ÿÎed +, + +854 +lib_¬p_du¶iÿ_found +); + +856 + `´tf +("ARPabË key i %lu\n", ( +¬p_key_v4 +)); + +857 + } +} + +860 + $´t_nd_bË +() + +862 cÚ¡ * +Ãxt_key +; + +863 * +Ãxt_d©a +; + +864 +ut32_t + + + = 0; + +865 +ut8_t + +ii + = 0, +j + = 0, +k + = 0; + +866 +´tf + + +868 + `´tf +("\tport hwddr status ipddr\n"); + +870 +´tf + + +872 + `¹e_hash_©e +( +nd_hash_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_bys +[0], + +882 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[1], + +883 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[2], + +884 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[3], + +885 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[4], + +886 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[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 +ut32_t + +i + = 0; + +898 + `´tf +("\n\nND IPV6outingable has %dntries\n", + +899 +nd_rou_tbl_dex +); + +900 +´tf + + +902 +i + = 0; i < +nd_rou_tbl_dex +; i++) { + +903 + `´tf +("\n"); + +905 +j + = 0; j < +ND_IPV6_ADDR_SIZE +; j += 2) { + +906 + `RTE_LOG +( +INFO +, +LIBARP +, "%02X%02X ", + +907 +lib_nd_rou_bË +[ +i +]. +v6 +[ +j +], + +908 +lib_nd_rou_bË +[ +i +]. +v6 +[ +j + + 1]); + +911 +´tf + + +913 +lib_nd_rou_bË +[ +i +]. +dth +,ib_nd_rou_bË[i]. +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 +]. +nhv6 +[ +k +], + +917 +lib_nd_rou_bË +[ +i +]. +v6 +[ +k + + 1]); + +920 +´tf + + +922 +lib_nd_g_mac_»q +, +lib_nd_nh_found +, +lib_nd_no_nh_found +, + +923 +lib_nd_nd_y_found +, +lib_nd_no_¬p_y_found +, + +924 +lib_nd_pÝuÏ_ÿÎed +, +lib_nd_de_ÿÎed +, + +925 +lib_nd_du¶iÿ_found +); + +926 + `´tf +("NDabË key i %lu\n\n", ( +nd_key_v6 +)); + +927 + } +} + +929 + $»move_¬p_y +( +ut32_t + +addr +, +ut8_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_de_ÿÎ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 +( +ut8_t + +v6addr +[], ut8_ +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_de_ÿÎ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 +, +ut32_t + +addr +, + +1054 +ut8_t + +pÜtid +, ut8_ +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: ARPntrylreadyxists(%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 +ut32_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 +ut32_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_bys +[0], + +1197 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[1], + +1198 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[2], + +1199 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[3], + +1200 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[4], + +1201 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[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 +, +ut8_t + +v6 +[], + +1217 +ut8_t + +pÜtid +, ut8_ +mode +) + +1222 +ut8_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_entryxists\n"); + +1259 +ut32_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 : Timerlreadyunning\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 +ut32_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_bys +[0], + +1358 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[1], + +1359 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[2], + +1360 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[3], + +1361 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[4], + +1362 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[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 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, 0); + +1379 +i + = 0, +j + = 0; + +1380 + `RTE_LOG +( +INFO +, +LIBARP +, "\nPacket Contents...\n"); + +1381 +i + = 0; i < 20; i++) { + +1382 +j + = 0; j < 20; j++) + +1383 + `RTE_LOG +( +INFO +, +LIBARP +, "%02x ", +rd +[(20 * +i +è+ +j +]); + +1384 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +1386 + } +} + +1388 +h_addr + + gbrßdÿ¡_h_addr + = { + +1389 . +addr_bys +[0] = 0xFF, + +1390 . + gaddr_bys +[1] = 0xFF, + +1391 . + gaddr_bys +[2] = 0xFF, + +1392 . + gaddr_bys +[3] = 0xFF, + +1393 . + gaddr_bys +[4] = 0xFF, + +1394 . + gaddr_bys +[5] = 0xFF, + +1397 cÚ¡ +h_addr + + gnuÎ_h_addr + = { + +1398 . +addr_bys +[0] = 0x00, + +1399 . + gaddr_bys +[1] = 0x00, + +1400 . + gaddr_bys +[2] = 0x00, + +1401 . + gaddr_bys +[3] = 0x00, + +1402 . + gaddr_bys +[4] = 0x00, + +1403 . + gaddr_bys +[5] = 0x00, + +1406 + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1407 +h_addr + + glk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1408 {. +addr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1409 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1410 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1411 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1412 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1413 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1414 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1415 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1416 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1417 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1418 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1419 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1420 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1421 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1422 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1423 {. + gaddr_bys + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1426 +h_addr + * + $g_lk_hw_addr +( +ut8_t + +out_pÜt +) + +1428 & +lk_hw_addr +[ +out_pÜt +]; + +1429 + } +} + +1431 + $»que¡_¬p +( +ut8_t + +pÜt_id +, +ut32_t + + +) + +1434 +h_hdr + * +h_h +; + +1435 +¬p_hdr + * +¬p_h +; + +1437 +l2_phy_rçû_t + * +lk +; + +1438 +lk + = + `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 & +lk +-> +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 + = ( +ut32_t +); + +1460 +¬p_h +-> +¬p_Ý + = + `CHECK_ENDIAN_16 +( +ARP_OP_REQUEST +); + +1462 + `h_addr_cÝy +(( +h_addr + *) + +1463 & +lk +-> +maÿddr +[0], & +¬p_h +-> +¬p_d©a +. +¬p_sha +); + +1464 ià( +lk + &&k-> +v4_li¡ +) { + +1465 +¬p_h +-> +¬p_d©a +. +¬p_s + = + +1466 ((( +v4li¡_t + *è( +lk +-> +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 +, "arpip:%xrp 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 +, "Sendingrpequest\n"); + +1479 + `´t_mbuf +("TX", +pÜt_id +, +¬p_pkt +, +__LINE__ +); + +1481 ià( +lk +) + +1482 +lk +-> + `ªsm_sgË_pkt +Ök, +¬p_pkt +); + +1483 + } +} + +1485 +¹e_mbuf + * + $»que¡_echo +( +ut32_t + +pÜt_id +, ut32_ + +) + +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 +-> +vsiÚ_ihl + = +IP_VHL_DEF +; + +1506 +_h +-> +ty³_of_£rviû + = 0; + +1507 +_h +-> +tÙ®_Ëngth + = + +1508 + `¹e_ýu_to_be_16 +(( +v4_hdr +è+ ( +icmp_hdr +)); + +1509 +_h +-> +·ck_id + = 0xaabb; + +1510 +_h +-> +äagmt_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_idt + = 0xdead; + +1524 +icmp_h +-> +icmp_£q_nb + = 0xbeef; + +1526 +icmp_h +-> +icmp_cksum + = ~ + `¹e_¿w_cksum +(icmp_h, ( +icmp_hdr +)); + +1528 +icmp_pkt +-> +pkt_Ën + = + +1529 ( +h_hdr +è+ ( +v4_hdr +) + + +1530 ( +icmp_hdr +); + +1531 +icmp_pkt +-> +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 +( +ut32_t + +¤c_ +, + +1544 +ut32_t + +de¡_ +) + +1546 +h_hdr + * +h_h +; + +1547 +v4_hdr + * +_h +; + +1548 +icmp_hdr + * +icmp_h +; + +1549 +¹e_mbuf + * +icmp_pkt + = +lib_¬p_pkt +; + +1551 ià( +icmp_pkt + =ð +NULL +) { + +1552 ià( +ARPICMP_DEBUG +) + +1553 + `RTE_LOG +( +INFO +, +LIBARP +, + +1555 +NULL +; + +1558 +h_h + = + `¹e_pktmbuf_mtod +( +icmp_pkt +, +h_hdr + *); + +1559 +_h + = ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +1560 +icmp_h + = ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1562 +_h +-> +vsiÚ_ihl + = +IP_VHL_DEF +; + +1563 +_h +-> +ty³_of_£rviû + = 0; + +1564 +_h +-> +tÙ®_Ëngth + = + +1565 + `¹e_ýu_to_be_16 +(( +v4_hdr +è+ ( +icmp_hdr +)); + +1566 +_h +-> +·ck_id + = 0xaabb; + +1567 +_h +-> +äagmt_off£t + = 0x0000; + +1568 +_h +-> +time_to_live + = 64; + +1569 +_h +-> +Ãxt_´Ùo_id + = 1; + +1571 +_h +-> +d¡_addr + = + `¹e_bsw32 +( +de¡_ +); + +1572 +_h +-> +¤c_addr + = + `¹e_bsw32 +( +¤c_ +); + +1574 +_h +-> +hdr_checksum + = 0; + +1575 +_h +-> +hdr_checksum + = + `¹e_v4_cksum +(ip_h); + +1577 +icmp_h +-> +icmp_ty³ + = 3; + +1578 +icmp_h +-> +icmp_code + = 13; + +1580 +icmp_h +-> +icmp_cksum + = ~ + `¹e_¿w_cksum +(icmp_h, ( +icmp_hdr +)); + +1582 +icmp_pkt +-> +pkt_Ën + = ( +h_hdr +è+ ( +v4_hdr +) + + +1583 ( +icmp_hdr +); + +1584 +icmp_pkt +-> +d©a_Ën + = icmp_pkt-> +pkt_Ën +; + +1586 +icmp_pkt +; + +1587 + } +} + +1590 + $´oûss_¬picmp_pkt_·r£ +( +¹e_mbuf + ** +pkt +, +ut16_t + +pkt_num +, + +1591 +ut64_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 +ut64_t + +pkts_fÜ_´oûss + = +pkt_mask +; + +1604 ; +pkts_fÜ_´oûss +;) { + +1606 +ut8_t + +pos + = (ut8_tè + `__but_ùzÎ +( +pkts_fÜ_´oûss +); + +1607 +ut64_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 +ut8_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 +ut32_t + +cksum +; + +1623 +ut32_t + +_addr +; + +1625 +ut32_t + +»q_t +; + +1627 +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, +h_hdr + *); + +1629 ià( +h_h +-> +h_ty³ + =ð + `¹e_ýu_to_be_16 +( +ETHER_TYPE_ARP +)) { + +1630 ià( +ARPICMP_DEBUG +) + +1631 + `RTE_LOG +( +INFO +, +LIBARP +, "%s, ortid %u. Line %d\n\r", + +1632 +__FUNCTION__ +, +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 +,"ARPequested IPddress mismatches interface IP - discarding\n"); + +1670 ià( +¬p_h +-> +¬p_Ý + == + +1671 + `¹e_ýu_to_be_16 +( +ARP_OP_REQUEST +)) { + +1672 ià( +ARPICMP_DEBUG +) { + +1673 + `RTE_LOG +( +INFO +, +LIBARP +, + +1675 +__FUNCTION__ +, +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_bsw32 +( +¬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 +-> +vsiÚ_ihl + & 0xf0è!ð +IP_VERSION_4 +) { + +1754 ià( +ARPICMP_DEBUG +) { + +1755 + `RTE_LOG +( +INFO +, +LIBARP +, + +1758 } ià(( +_h +-> +vsiÚ_ihl + & 0x0fè!ð +IP_HDRLEN +) { + +1759 ià( +ARPICMP_DEBUG +) { + +1760 + `RTE_LOG +( +INFO +, +LIBARP +, + +1764 ià( +icmp_h +-> +icmp_ty³ + =ð +IP_ICMP_ECHO_REQUEST + + +1765 && +icmp_h +-> +icmp_code + == 0) { + +1766 ià( +ARPICMP_DEBUG +) + +1767 + `´t_mbuf +("RX", +_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 +ut32_t + +_¤c +; + +1786 +_¤c + = + +1787 + `¹e_be_to_ýu_32 +( +_addr +); + +1788 ià(( +_¤c + & 0x00000003) == 1) + +1789 +_¤c + = + +1790 ( +_¤c + & + +1794 +_¤c + = + +1795 ( +_¤c + & + +1798 +_h +-> +¤c_addr + = + +1799 + `¹e_ýu_to_be_32 +( +_¤c +); + +1800 +_h +-> +d¡_addr + = +_addr +; + +1802 +_h +-> +hdr_checksum + = 0; + +1803 +_h +-> +hdr_checksum + = + +1804 ~ + `¹e_¿w_cksum +( +_h +, + +1806 +v4_hdr +)); + +1808 ià( +ARPICMP_DEBUG +) + +1809 + `RTE_LOG +( +INFO +, +LIBARP +, + +1811 +__FUNCTION__ +, + +1812 +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_bsw32 +( +_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Ú¡ +digs +[] = "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 +( +digs +, +ch +); + +1922 ià( +pch + !ð +NULL +) { + +1923 +Ãw + = * + + * 10 + ( +pch + - +digs +); + +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Ú¡ +xdigs_l +[] = "0123456789abcdef", + +1964 +xdigs_u +[] = "0123456789ABCDEF"; + +1965 +tmp +[ +IN6ADDRSZ +], * + + = 0, * +dp + = 0, * +cÞÚp + = 0; + +1966 cÚ¡ * +xdigs + = 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 +(( +xdigs + = +xdigs_l +), +ch +); + +1986 ià( +pch + =ð +NULL +) + +1987 +pch + = + `¡rchr +(( +xdigs + = +xdigs_u +), +ch +); + +1988 ià( +pch + !ð +NULL +) { + +1989 ià( +couÁ_xdig + >= 4) + +1991 +v® + <<= 4; + +1992 +v® + |ð( +pch + - +xdigs +); + +1993 ià( +v® + > 0xffff) + +1995 +§w_xdig + = 1; + +1996 +couÁ_xdig +++; + +1999 ià( +ch + == ':') { + +2000 +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 +( +pe_·¿ms + * +·¿ms +) + +2061 +ut32_t + +¬p_rou_tbl_´e£Á + = 0; + +2062 +ut32_t + +nd_rou_tbl_´e£Á + = 0; + +2063 +ut32_t + +pÜts_mac_li¡_´e£Á + = 0; + +2064 +ut32_t + +numArg +; + +2065 +ut32_t + +n_vnf_th»ads_´e£Á + = 0; + +2067 +ut32_t + +pktq__´v_´e£Á + = 0; + +2068 +ut32_t + +´v_to_pub_m_´e£Á + = 0; + +2070 +ut8_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 +ut32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2217 +byS +[ +MAC_NUM_BYTES +][3]; + +2218 +ut32_t + +by +[ +MAC_NUM_BYTES +]; + +2220 * +tok + = + `¡¹ok +( +¬g_v®ue +, " "); + +2221 +tok +) { + +2222 +k + = 0; + +2223 +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2224 +j + = 0; j < 2; j++) { + +2225 +byS +[ +i +][ +j +] = +tok +[ +k +++]; + +2227 +byS +[ +i +][ +j +] = '\0'; + +2228 +k +++; + +2231 +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2232 +by +[ +i +] = + `¡¹oul +( +byS +[i], +NULL +, 16); + +2235 ià( +ARPICMP_DEBUG +) { + +2236 + `RTE_LOG +( +INFO +, +LIBARP +, "token: %s", + +2237 +tok +); + +2238 +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2239 + `RTE_LOG +( +INFO +, +LIBARP +, + +2240 ", by[%u] %u", +i +, + +2241 +by +[ +i +]); + +2242 + `RTE_LOG +( +INFO +, +LIBARP +, "\n"); + +2245 +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2246 +lk_hw_addr + + +2247 [ +lk_hw_addr_¬¿y_idx +]. +addr_bys + + +2248 [ +i +] = +by +[i]; + +2250 +lk_hw_addr_¬¿y_idx +++; + +2251 +tok + = + `¡¹ok +( +NULL +, " "); + +2258 ià( + `¡rcmp +( +¬g_Çme +, "arp_route_tbl") == 0) { + +2259 +¬p_rou_tbl_´e£Á + = 1; + +2261 +ut32_t + +de¡_ + = 0, +mask + = 0, +tx_pÜt + = 0, +nh_ + = + +2262 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2263 +ut32_t + +¬p_rou_tbl_¡r_max_Ën + = 10; + +2264 +de¡__¡r +[ +¬p_rou_tbl_¡r_max_Ën +]; + +2265 +mask_¡r +[ +¬p_rou_tbl_¡r_max_Ën +]; + +2266 +tx_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 +ut8_t + +de¡_v6 +[16], +dth + = 0, +tx_pÜt + = + +2348 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2349 +ut8_t + +nd_rou_tbl_¡r_max_Ën + = 128; + +2350 +de¡_v6_¡r +[ +nd_rou_tbl_¡r_max_Ën +]; + +2351 +dth_¡r +[ +nd_rou_tbl_¡r_max_Ën +]; + +2352 +tx_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 +dth_¡r +[ +j +] = +tok +[ +i + + j]; + +2371 +j +++; + +2373 +dth_¡r +[ +j +] = '\0'; + +2375 +s +; + +2376 +s + = 0; +dth_¡r +[s] != '\0'; ++s) + +2377 +dth + = dth * 10 + +dth_¡r +[ +s +] - '0'; + +2379 +j +++; + +2380 +k + = 0; + +2381 ( +k + < ( +nd_rou_tbl_¡r_max_Ën + - 1)) + +2382 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2383 +tx_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 +]. +nhv6 +[ +i +] = + +2407 +nh_v6 +[ +i +]; + +2409 +lib_nd_rou_bË +[ +nd_rou_tbl_dex +]. +dth + = + +2410 +dth +; + +2411 +lib_nd_rou_bË +[ +nd_rou_tbl_dex +]. +pÜt + = + +2412 +tx_pÜt +; + +2414 +nd_rou_tbl_dex +++; + +2415 +tok + = + `¡¹ok +( +NULL +, "("); + +2434 + } +} + +2436 + $lib_¬p_ +( +pe_·¿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 +, "ARPib_arp_pktlloc failed.\n"); + +2465 +¬p_hash_·¿ms +. +sock_id + = + `¹e_sock_id +(); + +2466 +¬p_hash_·¿ms +. +s + = +MAX_NUM_ARP_ENTRIES +; + +2467 +¬p_hash_·¿ms +. +key_Ën + = ( +¬p_key_v4 +); + +2468 +¬p_hash_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 createrror\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 +-> +expe +); + +2516 ià( +ARPICMP_DEBUG +) + +2517 + `RTE_LOG +( +INFO +, +LIBARP +, + +2519 ( +»move_key +-> + + >> 24), + +2520 (( +»move_key +-> + + & 0x00ff0000) >> 16), + +2521 (( +»move_key +-> + + & 0x0000ff00) >> 8), + +2522 (( +»move_key +-> + + & 0x000000ff)),emove_key-> +pÜt_id +); + +2523 + `»move_¬p_y +(( +ut32_t +è +»move_key +-> + +, + +2524 ( +ut8_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 +, "ndime callback :xpire :%d\n", + +2533 () +tim +-> +expe +); + +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 ( +ut8_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 ( +ut8_t +è +nd_y_d©a_bË +[ +i +]. +pÜt +, + +2562 +STATIC_ND +); + +2564 + `´t_nd_bË +(); + +2566 + } +} + +2568 + $£nd_g¿tuous_¬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 + = ( +ut32_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_sgË_pkt +ÕÜt, +¬p_pkt +); + +2625 + } +} + +2627 + $£t_¬pdebug +( +æag +) + +2629 ià( +æag +) { + +2630 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned on\n\r"); + +2631 +ARPICMP_DEBUG + = 1; + +2632 +NDIPV6_DEBUG + = 1; + +2635 + `RTE_LOG +( +INFO +, +LIBARP +, "Debugsurned off\n\r"); + +2636 +ARPICMP_DEBUG + = 0; + +2637 +NDIPV6_DEBUG + = 0; + +2639 + } +} + +2641 + $£t_¬±imeout +( +ut32_t + +timeout_v® +) + +2643 ià( +timeout_v® + == 0) { + +2644 + `RTE_LOG +( +INFO +, +LIBARP +, "Cannot be zero...\n\r"); + +2647 ià( +ARPICMP_DEBUG +) + +2648 + `RTE_LOG +( +INFO +, +LIBARP +, + +2650 +¬p_timeout +, +timeout_v® +); + +2651 +¬p_timeout + = +timeout_v® +; + +2652 ià( +ARPICMP_DEBUG +) + +2653 + `RTE_LOG +( +INFO +, +LIBARP +, "set_arptimeout:rp_timeout %u\n\r", + +2654 +¬p_timeout +); + +2655 + } +} + + @VIL/l2l3_stack/lib_arp.h + +17 #iâdeà +__INCLUDE_LIB_ARP_H__ + + +18 + #__INCLUDE_LIB_ARP_H__ + + + ) + +20 + ~<¹e_pe.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 +ut32_t + + m +; + +39 +ut32_t + + mmask +; + +40 +ut32_t + + mpÜt +; + +41 +ut32_t + + mnh +; + +48 + slib_nd_rou_bË_y + { + +49 +ut8_t + + mv6 +[16]; + +50 +ut8_t + + mdth +; + +51 +ut32_t + + mpÜt +; + +52 +ut8_t + + mnhv6 +[16]; + +55 +lib_nd_rou_bË_y + +lib_nd_rou_bË +[ +MAX_ND_RT_ENTRY +]; + +56 +lib_¬p_rou_bË_y + +lib_¬p_rou_bË +[ +MAX_ARP_RT_ENTRY +]; + +59 + mARP_FOUND +, + +60 + mARP_NOT_FOUND +, + +61 + mNH_NOT_FOUND +, + +64 + e¬p_key_ty³ + { + +65 + mARP_IPV4 +, + +66 + mND_IPV6 +, + +69 + s¬p_key_v4 + { + +70 +ut32_t + + m +; + +71 +ut8_t + + mpÜt_id +; + +72 +ut8_t + + mfËr1 +; + +73 +ut8_t + + mfËr2 +; + +74 +ut8_t + + mfËr3 +; + +80 + snd_key_v6 + { + +81 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +82 +ut8_t + + mpÜt_id +; + +83 +ut8_t + + mfËr1 +; + +84 +ut8_t + + mfËr2 +; + +85 +ut8_t + + mfËr3 +; + +91 + s¬p_key + { + +92 +¬p_key_ty³ + + mty³ +; + +94 +¬p_key_v4 + + mv4 +; + +95 } + mkey +; + +103 + snd_tim_key + { + +104 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +105 +ut8_t + + mpÜt_id +; + +106 } + g__¹e_ÿche_®igÃd +; + +112 + s¬p_tim_key + { + +113 +ut32_t + + m +; + +114 +ut8_t + + mpÜt_id +; + +115 } + g__¹e_ÿche_®igÃd +; + +117 +ut32_t + +ARPICMP_DEBUG +; + +119 + #COMPLETE + 1 + + ) + +120 + #INCOMPLETE + 0 + + ) + +122 +ut32_t + +NDIPV6_DEBUG +; + +124 + #ICMPv6_COMPLETE + 1 + + ) + +125 + #ICMPv6_INCOMPLETE + 0 + + ) + +126 + #STATIC_ARP + 1 + + ) + +127 + #DYNAMIC_ARP + 0 + + ) + +128 + #STATIC_ND + 1 + + ) + +129 + #DYNAMIC_ND + 0 + + ) + +136 + s¬p_y_d©a + { + +137 +h_addr + + mh_addr +; + +138 +ut32_t + + m +; + +139 +ut8_t + + mpÜt +; + +140 +ut8_t + + m¡©us +; + +141 +ut8_t + + mmode +; + +142 +ut8_t + + m»y_couÁ +; + +143 +¹e_tim + * + mtim +; + +144 +¬p_tim_key + * + mtim_key +; + +145 } +__©ibu__ + (( +·cked +)); + +152 + sbË_¬p_y_d©a + { + +153 +ut8_t + + mh_addr +[6]; + +154 +ut8_t + + mpÜt +; + +155 +ut8_t + + m¡©us +; + +156 +ut32_t + + m +; + +157 } +__©ibu__ + (( +·cked +)); + +164 + snd_y_d©a + { + +165 +h_addr + + mh_addr +; + +166 +ut8_t + + mpÜt +; + +167 +ut8_t + + m¡©us +; + +168 +ut8_t + + mmode +; + +169 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +170 +¹e_tim + * + mtim +; + +171 } +__©ibu__ + (( +·cked +)); + +179 + sbË_nd_y_d©a + { + +180 +ut8_t + + mh_addr +[6]; + +181 +ut8_t + + mpÜt +; + +182 +ut8_t + + m¡©us +; + +183 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +184 +¹e_tim + * + mtim +; + +185 } +__©ibu__ + (( +·cked +)); + +201 +g_de¡_mac_add»ss +(cÚ¡ +ut32_t + +addr +, ut32_* +phy_pÜt +, + +202 +h_addr + * +hw_addr +, +ut32_t + * +nh +); + +216 +g_de¡_mac_addr_pÜt +(cÚ¡ +ut32_t + +addr +, + +217 +ut32_t + * +phy_pÜt +, +h_addr + * +hw_addr +); + +230 +g_de¡_mac_addr +(cÚ¡ +ut32_t + +addr +, ut32_* +phy_pÜt +, + +231 +h_addr + * +hw_addr +); + +246 +g_de¡_mac_add»ss_v6 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +247 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + +262 +g_de¡_mac_add»ss_v6_pÜt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +263 +h_addr + * +hw_addr +, + +264 +ut8_t + +nhv6 +[]); + +272 +h_addr + * +g_lk_hw_addr +( +ut8_t + +out_pÜt +); + +279 +´t_¬p_bË +(); + +286 +´t_nd_bË +(); + +295 +»move_¬p_y +( +ut32_t + +addr +, +ut8_t + +pÜtid +, * +¬g +); + +305 +»move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +pÜtid +); + +318 +pÝuÏ_¬p_y +(cÚ¡ +h_addr + * +hw_addr +, +ut32_t + +addr +, + +319 +ut8_t + +pÜtid +, ut8_ +mode +); + +333 +pÝuÏ_nd_y +(cÚ¡ +h_addr + * +hw_addr +, +ut8_t + + +[], + +334 +ut8_t + +pÜtid +, ut8_ +mode +); + +344 +»que¡_¬p +( +ut8_t + +pÜt_id +, +ut32_t + + +); + +353 +¹e_mbuf + * +»que¡_echo +( +ut32_t + +pÜt_id +, ut32_ + +); + +362 +¹e_mbuf + * +»que¡_icmpv6_echo +( +ut8_t + +v6 +[], +l2_phy_rçû_t + * +pÜt +); + +371 +¹e_mbuf + * +»que¡_nd +( +ut8_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_ +( +pe_·¿ms + * +·¿ms +, +p_·¿ms + * +p +); + +407 +£t_pÜt_to_lßdb_m +( +ut8_t + +pe_num +); + +412 +ut8_t + +g_pÜt_to_lßdb_m +(ut8_ +phy_pÜt_id +); + +414 +£t_phy_pÜt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +415 +£t_phy_ouÜt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +421 +ut8_t + +g_lßdb_ouÜt_id +(ut8_ +aùu®_phy_pÜt +); + +422 +ut8_t + +g_vnf_£t_num +(ut8_ +pe_num +); + +424 +pes_pÜt_fo +(); + +425 +pes_m_fo +(); + +434 +¬p_tim_ÿÎback +( +¹e_tim + *, * +¬g +); + +443 +nd_tim_ÿÎback +( +¹e_tim + * +tim +, * +¬g +); + +449 +ü_¬p_bË +(); + +454 +ü_nd_bË +(); + +467 +´oûss_¬picmp_pkt_·r£ +( +¹e_mbuf + ** +pkt +, +ut16_t + +pkt_num +, + +468 +ut64_t + +pkt_mask +, +l2_phy_rçû_t + * +pÜt +); + +475 +£nd_g¿tuous_¬p +( +l2_phy_rçû_t + * +pÜt +); + +481 +£t_¬pdebug +( +æag +); + +487 +£t_¬±imeout +( +ut32_t + +timeout_v® +); + +495 +ut32_t + +g_nh +(uint32_t, uint32_t *); + +505 +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pÜt +, ut8_ +nhv6 +[]); + + @VIL/l2l3_stack/lib_icmpv6.c + +18 + ~"lib_icmpv6.h +" + +20 + $´t_pkt +( +ut8_t + * +rd +) + +22 +i + = 0, +j + = 0; + +24 + `´tf +("Packet Contents:\n"); + +26 +i + = 0; i < 20; i++) { + +27 +j + = 0; j < 20; j++) + +28 + `´tf +("%02x ", +rd +[(20 * +i +è+ +j +]); + +30 + `´tf +("\n"); + +32 + } +} + +34 +ut16_t + + $icmpv6_v6_nd_checksum +( +¹e_mbuf + * +pkt +) + +36 +h_hdr + * +h_h +; + +37 +v6_hdr + * +v6_h +; + +38 +icmpv6_hdr + * +icmpv6_h +; + +40 +size_t + +tm¶ +, +off£t +; + +41 +ut8_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 +ut32_t + +·ylßdËn + = 0x20; + +49 +·ylßdËn + = + `¹e_bsw32 +(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 +ut16_t + + $icmpv6_v6_echo_checksum +( +¹e_mbuf + * +pkt +) + +82 +h_hdr + * +h_h +; + +83 +v6_hdr + * +v6_h +; + +84 +icmpv6_hdr + * +icmpv6_h +; + +86 +size_t + +tm¶ +, +off£t +; + +87 +ut8_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 +ut32_t + +·ylßdËn + = + `¹e_bsw16 +( +v6_h +-> +·ylßd_Ën +); + +95 +ut32_t + +·ylßdËn_sw + = + `¹e_bsw32 +( +·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 +ut8_t + +v6_addr +[16]; + +136 +ut8_t + +i + = 0; + +137 +ut8_t + +»q_tv6 +[16]; + +140 ià( +pÜt + =ð +NULL +) { + +141 + `´tf +("port is NULL"); + +143 } ià( +pÜt +-> +v6_li¡ + =ð +NULL +) { + +144 + `´tf +("IPV6ddressot configured onink\n"); + +148 +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, +h_hdr + *); + +149 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +150 +icmpv6_h + = + +151 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +153 ià(( +icmpv6_h +-> +icmpv6_ty³ + =ð +ICMPV6_ECHO_REQUEST +) + +154 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +155 +i + = 0; i < 16; i++) { + +156 +v6_addr +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +159 + `h_addr_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 +ut8_t + +¤c_v6 +[16], +d¡_v6 +[16]; + +208 +ut16_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_tv6 +[ +i +] = +icmpv6_nd_h +-> +rg_v6 +[i]; + +227 ià(! +memcmp + + +228 (& +»q_tv6 +[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_tv6 +[i]; + +242 +icmpv6_h +-> +icmpv6_ty³ + = + +243 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +244 +icmpv6_nd_h +-> +ty³ + = +e_T¬g_Lk_Lay_Add»ss +; + +245 +icmpv6_nd_h +-> +Ëngth + = 1; + +246 + `memýy +(& +icmpv6_nd_h +-> +lk_Ï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 +ut8_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 +( +ut8_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 +ut8_t + * +icmp_d©a +; + +300 +¹e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +301 ià( +icmpv6_pkt + =ð +NULL +) { + +302 ià( +ARPICMP_DEBUG +) + +303 + `´tf +("Errorllocating icmpv6_pktte_mbuf\n"); + +304 +NULL +; + +307 +h_h + = + `¹e_pktmbuf_mtod +( +icmpv6_pkt +, +h_hdr + *); + +309 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +310 +icmpv6_h + = + +311 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +312 +icmpv6_fo_h + = + +313 ( +icmpv6_fo_hdr + *)((*) +icmpv6_h + + + +314 ( +icmpv6_hdr +)); + +316 + `h_addr_cÝy +(( +h_addr + *)& +pÜt +-> +maÿddr +[0], & +h_h +-> +s_addr +); + +317 +h_h +-> +h_ty³ + = + `¹e_bsw16 +(0x86dd); + +318 +i + = 0; i < 6; i++) { + +319 +h_h +-> +d_addr +. +addr_bys +[ +i +] = 0; + +322 +v6_h +-> +vtc_æow + = + `¹e_bsw32 +(0x60000000); + +323 +v6_h +-> +·ylßd_Ën + = + `¹e_bsw16 +(64); + +324 +v6_h +-> +´Ùo + = 58; + +325 +v6_h +-> +hÝ_lims + = 64; + +327 +i + = 0; i < 16; i++) { + +328 +v6_h +-> +¤c_addr +[ +i +] = 0x0; + +329 +v6_h +-> +d¡_addr +[ +i +] = +v6 +[i]; + +332 +icmpv6_h +-> +icmpv6_ty³ + = +ICMPV6_ECHO_REQUEST +; + +333 +icmpv6_h +-> +icmpv6_code + = 0; + +334 +icmpv6_fo_h +-> +icmpv6_idt + = + `¹e_bsw16 +(0x5151); + +335 +icmpv6_fo_h +-> +icmpv6_£q_nb + = + `¹e_bsw16 +(0x1); + +337 +icmp_d©a + = ( +ut8_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 +( +ut8_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 +("Errorllocating icmpv6_pktte_mbuf\n"); + +364 +NULL +; + +367 +h_h + = + `¹e_pktmbuf_mtod +( +icmpv6_pkt +, +h_hdr + *); + +369 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +370 +icmpv6_h + = + +371 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +372 +icmpv6_nd_h + = + +373 ( +icmpv6_nd_hdr + *)((*) +icmpv6_h + + + +374 ( +icmpv6_hdr +)); + +376 + `h_addr_cÝy +(( +h_addr + *)& +pÜt +-> +maÿddr +[0], & +h_h +-> +s_addr +); + +377 +h_h +-> +h_ty³ + = + `¹e_bsw16 +(0x86dd); + +378 +i + = 0; i < 6; i++) { + +379 +h_h +-> +d_addr +. +addr_bys +[ +i +] = 0; + +382 +v6_h +-> +vtc_æow + = 0x60000000; + +383 +v6_h +-> +·ylßd_Ën + = + `¹e_bsw16 +(32); + +384 +v6_h +-> +´Ùo + = 58; + +385 +v6_h +-> +hÝ_lims + = 64; + +387 +i + = 0; i < 16; i++) { + +388 +v6_h +-> +¤c_addr +[ +i +] = 0x0; + +389 +v6_h +-> +d¡_addr +[ +i +] = +v6 +[i]; + +392 +icmpv6_h +-> +icmpv6_ty³ + = +ICMPV6_NEIGHBOR_SOLICITATION +; + +393 +icmpv6_h +-> +icmpv6_code + = 0; + +395 +icmpv6_nd_h +-> +icmpv6_»£rved + = 0x0; + +396 +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +397 +icmpv6_nd_h +-> +rg_v6 +[ +i +] = +v6 +[i]; + +398 +icmpv6_nd_h +-> +ty³ + = +e_Sourû_Lk_Lay_Add»ss +; + +399 +icmpv6_nd_h +-> +Ëngth + = 1; + +400 + `memýy +(& +icmpv6_nd_h +-> +lk_Ï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 + ~<¡dt.h +> + +20 + ~<¡rg.h +> + +21 + ~<uni¡d.h +> + +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_pe.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_pe.h +> + +36 + ~"¹e_h.h +" + +42 + sicmpv6_hdr + { + +43 +ut8_t + + micmpv6_ty³ +; + +44 +ut8_t + + micmpv6_code +; + +45 +ut16_t + + micmpv6_cksum +; + +46 } +__©ibu__ + (( +__·cked__ +)); + +51 + sicmpv6_fo_hdr + { + +52 +ut16_t + + micmpv6_idt +; + +53 +ut16_t + + micmpv6_£q_nb +; + +54 } +__©ibu__ + (( +__·cked__ +)); + +59 + sicmpv6_nd_hdr + { + +61 +ut32_t + + micmpv6_»£rved +; + +63 +ut8_t + + mrg_v6 +[16]; + +64 +ut8_t + + mty³ +; + +65 +ut8_t + + mËngth +; + +66 +ut8_t + + mlk_Ïy_addr +[6]; + +67 } +__©ibu__ + (( +__·cked__ +)); + +70 + #ICMPV6_PROTOCOL_ID + 58 + + ) + +71 + #ICMPV6_ECHO_REQUEST + 0x0080 + + ) + +72 + #ICMPV6_ECHO_REPLY + 0x0081 + + ) + +73 + #ICMPV6_NEIGHBOR_SOLICITATION + 0x0087 + + ) + +74 + #ICMPV6_NEIGHBOR_ADVERTISEMENT + 0x0088 + + ) + +75 + #IPV6_MULTICAST + 0xFF02 + + ) + +77 + #NEIGHBOR_SOLICITATION_SET + 0x40000000 + + ) + +78 + #NEIGHBOR_ROUTER_OVERRIDE_SET + 0xa0000000 + + ) + +79 + eicmpv6_lk_Ïy_Add»ss_ty³ + { + +80 + me_Sourû_Lk_Lay_Add»ss + = 1, + +81 + me_T¬g_Lk_Lay_Add»ss +, + +82 + me_Lk_Lay_Add»ss + + +88 +ut8_t + +is_muÉiÿ¡_v6_addr +(ut8_ +v6 +[]); + +93 + sicmpv6_pÜt_add»ss + { + +94 +ut32_t + + mv6 +[16]; + +95 +ut64_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 + ~<¡dt.h +> + +23 + ~<y³s.h +> + +24 + ~<sys/ty³s.h +> + +25 + ~<¡rg.h +> + +26 + ~<sys/queue.h +> + +27 + ~<¡d¬g.h +> + +28 + ~<ºo.h +> + +29 + ~<gÝt.h +> + +30 + ~<sigÇl.h +> + +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_rg.h +> + +56 + ~<¹e_mempoÞ.h +> + +57 + ~<¹e_mbuf.h +> + +58 + ~<¹e_.h +> + +59 + ~<¹e_tý.h +> + +60 + ~<¹e_udp.h +> + +61 + ~<¹e_¡rg_â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Úvt_¡r_to_numic +(); + +73 +sockaddr_ + + gaddr1 +, + gaddr2 +, + gaddr3 +, + gaddr4 +; + +74 +ut8_t + + gv6_addr0 +[16] = { + +78 +ut8_t + + gv6_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 . +lk_¥ds + = 0, + +99 . + grxmode + = { + +100 . +mq_mode + = +ETH_MQ_RX_NONE +, + +101 . + ghd_¥l + = 0, + +102 . + ghw__checksum + = 0, + +103 . + ghw_vÏn_fr + = 0, + +104 . + ghw_vÏn_¡r + = 0, + +105 . + ghw_vÏn_exnd + = 0, + +106 . + gjumbo_äame + = 0, + +107 . + ghw_¡r_üc + = 0, + +108 . + gabË_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 . +lk_¥ds + = 0, + +164 . + grxmode + = { + +165 . +mq_mode + = +ETH_MQ_RX_NONE +, + +166 . + ghd_¥l + = 0, + +167 . + ghw__checksum + = 0, + +168 . + ghw_vÏn_fr + = 0, + +169 . + ghw_vÏn_¡r + = 0, + +170 . + ghw_vÏn_exnd + = 0, + +171 . + gjumbo_äame + = 0, + +172 . + ghw_¡r_üc + = 0, + +173 . + gabË_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_maloÝ + ( +__©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 +ut32_t + + gnb_tx +, + gnb_rx +; + +224 cÚ¡ +ut64_t + + gd¿_tsc + = + +225 ( +¹e_g_tsc_hz +(è+ +US_PER_S + - 1è/ US_PER_S * +BURST_TX_DRAIN_US +; + +226 +ut64_t + + 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Æiky +( +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Úvt_¡r_to_numic +() + +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çû_das +(); + +283 + `l3fwd_ +(); + +284 + `ü_¬p_bË +(); + +285 + `ü_nd_bË +(); + +286 + `pÝuÏ_Ím_rous +(); + +289 +ii +; + +290 +ii + = 0; ii < 16; ii += 2) { + +291 + `´tf +("%02X%02X ", +v6_addr0 +[ +ii +], ipv6_addr0[ii + 1]); + +293 + `´tf +("\n"); + +294 +ii + = 0; ii < 16; ii += 2) { + +295 + `´tf +("%02X%02X ", +v6_addr1 +[ +ii +], ipv6_addr1[ii + 1]); + +297 + `´tf +("REMOTE LAUNCH STARTED........\n"); + +298 + `¹e_l_»mÙe_Ïunch +( +lcÜe_maloÝ +, +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 + ~<imm.h +> + +18 + ~<¡dlib.h +> + +19 + ~<¡dio.h +> + +20 + ~<time.h +> + +21 + ~<¡dt.h +> + +22 + ~"¹e_©omic.h +" + +23 + ~"tsx.h +" + +24 + gmax_»s + = 3; + +27 + $run_ýuid + ( +ut32_t + +x +, ut32_ +ecx +, ut32_* +abcd +) + +29 +ut32_t + +ebx + = 0, +edx + = 0; + +31 #ià + `defed +( +__i386__ +è&& defed ( +__PIC__ +) + +33 + `__asm__ + ("movÈ%%ebx, %%ed\n\ýuid \n\xchgÈ%%ebx, %%edi":"=D" ( +ebx +), + +35 + `__asm__ + ("ýuid":"+b" ( +ebx +), + +37 "+a" ( +x +), "+c" ( +ecx +), "=d" ( +edx +)); + +38 +abcd +[0] = +x +; + +39 +abcd +[1] = +ebx +; + +40 +abcd +[2] = +ecx +; + +41 +abcd +[3] = +edx +; + +42 + } +} + +45 + $check_xü0_ymm + () + +47 +ut32_t + +xü0 +; + +48 + `__asm__ + ("xgbv" : "÷" ( +xü0 +) : "c" (0) : "%edx"); + +49 (( +xü0 + & 6) == 6); + +50 + } +} + +53 + $check_4th_g_l_cÜe_ã©u»s + () + +55 +ut32_t + +abcd +[4]; + +56 +ut32_t + +fma_movbe_osx§ve_mask + = ((1 << 12) | (1 << 22) | (1 << 27)); + +57 +ut32_t + +avx2_bmi12_mask + = (1 << 5) | (1 << 3) | (1 << 8); + +62 + `run_ýuid + (1, 0, +abcd +); + +63 ià(( +abcd +[2] & +fma_movbe_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_avaabË + = -1; + +106 ià( +the_4th_g_ã©u»s_avaabË + < 0) + +107 +the_4th_g_ã©u»s_avaabË + = + `check_4th_g_l_cÜe_ã©u»s + (); + +108 +the_4th_g_ã©u»s_avaabË +; + +109 + } +} + +112 + $¹m_ + () + +114 +ÇbÜd + = ( +¹e_©omic64_t +è + `RTE_ATOMIC64_INIT + (0); + +117 + } +} + +119 + $¹m_lock + () + +121 +Ärs + = 0; + +123 ++ +Ärs +; + +124 +¡©us + = + `_xbeg + (); + +125 ià( +¡©us + =ð +_XBEGIN_STARTED +) { + +126 ià(! + `is_hË_locked + ()) + +130 + `_xabÜt + (0xff); + +133 + `¹e_©omic64_c + (& +ÇbÜd +); + +134 +´tf + + +136 +Ärs +, +¡©us +); + +138 ià(( +¡©us + & +_XABORT_EXPLICIT +) + +139 && + `_XABORT_CODE + ( +¡©us +è=ð0xfà&& !(¡©u & +_XABORT_NESTED +)) { + +140 + `is_hË_locked + ()) + +141 + `_mm_·u£ + (); + +143 ià(!( +¡©us + & +_XABORT_RETRY +)) + +145 ià( +Ärs + >ð +max_»s +) + +148 + `hË_lock + (); + +150 + } +} + +153 + $¹m_uÆock + () + +155 ià( + `is_hË_locked + ()) + +156 + `hË_»Ëa£ + (); + +159 + `_xd + (); + +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Þ© + gmux_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 + ~<cmdle_·r£.h +> + +18 + ~<cmdle_·r£_num.h +> + +19 + ~<cmdle_·r£_¡rg.h +> + +20 + ~<cmdle_·r£_addr.h +> + +21 + ~<cmdle_·r£_haddr.h +> + +23 + ~"p.h +" + +24 + ~"pe_commÚ_ã.h +" + +25 + ~"pe_¬picmp_be.h +" + +26 + ~"pe_¬picmp.h +" + +27 + ~"vnf_commÚ.h +" + +29 + ~"p.h +" + +30 + ~"vnf_commÚ.h +" + +31 #iâdeà +VNF_ACL + + +32 + ~"lib_¬p.h +" + +35 + ~<¹e_.h +> + +36 + ~<¹e_udp.h +> + +37 + ~<¹e_¡rg_âs.h +> + +39 +ut16_t + + gvbo£_Ëv + = 1; + +40 +ut16_t + + gnb_pkt_³r_bur¡ + = +DEF_PKT_BURST +; + +46 #ifdeà +__GCC__ + + +47 + #RTE_BE_TO_CPU_16 +( +be_16_v +è + `¹e_be_to_ýu_16 +((be_16_v)) + + ) + +48 + #RTE_CPU_TO_BE_16 +( +ýu_16_v +è + `¹e_ýu_to_be_16 +((ýu_16_v)) + + ) + +50 #ià +RTE_BYTE_ORDER + =ð +RTE_BIG_ENDIAN + + +51 + #RTE_BE_TO_CPU_16 +( +be_16_v +è(be_16_v) + + ) + +52 + #RTE_CPU_TO_BE_16 +( +ýu_16_v +è(ýu_16_v) + + ) + +54 + #RTE_BE_TO_CPU_16 +( +be_16_v +) \ + +55 (( +ut16_t +è(((( +be_16_v +è& 0xFFè<< 8è| ((be_16_vè>> 8))) + + ) + +56 + #RTE_CPU_TO_BE_16 +( +ýu_16_v +) \ + +57 (( +ut16_t +è(((( +ýu_16_v +è& 0xFFè<< 8è| ((ýu_16_vè>> 8))) + + ) + +65 + scmd_¬p_add_»suÉ + { + +66 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +67 +ut32_t + + mp +; + +68 +cmdle_fixed_¡rg_t + + m¬·dd_¡rg +; + +69 +ut32_t + + mpÜt_id +; + +70 +cmdle_addr_t + + m +; + +71 +h_addr + + mmaÿddr +; + +76 + $cmd_¬p_add_·r£d +(* +·r£d_»suÉ +, + +77 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +79 +cmd_¬p_add_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +80 +ut8_t + +v6 +[16]; + +83 +pe_¬p_icmp_¬p_key + +key +; + +84 +key +. +ty³ + = +PIPELINE_ARP_ICMP_ARP_IPV4 +; + +85 +key +.key. +v4 +. +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_bsw32 +Ôeq-> +key +.key. +v4 +. + +), + +88 +»q +-> +key +.key. +v4 +. +pÜt_id +); + +90 ià( +·¿ms +-> + +. +çmy + =ð +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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_add_p_¡rg + = + +110 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p_¡rg +, + +113 +cmdle_·r£_tok_num_t + + gcmd_¬p_add_p + = + +114 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p +, +UINT32 +); + +116 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_add_¬p_¡rg + = + +117 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +¬·dd_¡rg +, "arpadd"); + +119 +cmdle_·r£_tok_num_t + + gcmd_¬p_add_pÜt_id + = + +120 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +pÜt_id +, +UINT32 +); + +122 +cmdle_·r£_tok_addr_t + + gcmd_¬p_add_ + = + +123 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, + +); + +125 +cmdle_·r£_tok_haddr_t + + gcmd_¬p_add_maÿddr + = + +126 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, +maÿddr +); + +128 +cmdle_·r£_¡_t + + gcmd_¬p_add + = { + +129 . +f + = +cmd_¬p_add_·r£d +, + +130 . + gd©a + = +NULL +, + +131 . + ghp_¡r + = "ARPdd", + +132 . + gtoks + = { + +133 (*)& +cmd_¬p_add_p_¡rg +, + +134 (*)& +cmd_¬p_add_p +, + +135 (*)& +cmd_¬p_add_¬p_¡rg +, + +136 (*)& +cmd_¬p_add_pÜt_id +, + +137 (*)& +cmd_¬p_add_ +, + +138 (*)& +cmd_¬p_add_maÿddr +, + +139 +NULL +, + +147 + scmd_¬p_d_»suÉ + { + +148 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +149 +ut32_t + + mp +; + +150 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +151 +ut32_t + + mpÜt_id +; + +152 +cmdle_addr_t + + m +; + +156 + $cmd_¬p_d_·r£d +(* +·r£d_»suÉ +, + +157 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +159 +cmd_¬p_d_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +160 +ut8_t + +v6 +[16]; + +163 +pe_¬p_icmp_¬p_key + +key +; + +164 +key +. +ty³ + = +PIPELINE_ARP_ICMP_ARP_IPV4 +; + +165 +key +.key. +v4 +. + + = + `¹e_ýu_to_be_32 +( +·¿ms +->. +addr +.v4. +s_addr +); + +166 +key +.key. +v4 +. +pÜt_id + = +·¿ms +->port_id; + +167 + `»move_¬p_y +( + `¹e_bsw32 +( +»q +-> +key +.key. +v4 +. + +), + +168 +»q +-> +key +.key. +v4 +. +pÜt_id +); + +170 ià( +·¿ms +-> + +. +çmy + =ð +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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_d_p_¡rg + = + +184 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +p_¡rg +, + +187 +cmdle_·r£_tok_num_t + + gcmd_¬p_d_p + = + +188 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d_»suÉ +, +p +, +UINT32 +); + +190 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_d_¬p_¡rg + = + +191 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "arpdel"); + +193 +cmdle_·r£_tok_num_t + + gcmd_¬p_d_pÜt_id + = + +194 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d_»suÉ +, +pÜt_id +, +UINT32 +); + +196 +cmdle_·r£_tok_addr_t + + gcmd_¬p_d_ + = + +197 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_d_»suÉ +, + +); + +199 +cmdle_·r£_¡_t + + gcmd_¬p_d + = { + +200 . +f + = +cmd_¬p_d_·r£d +, + +201 . + gd©a + = +NULL +, + +202 . + ghp_¡r + = "ARP delete", + +203 . + gtoks + = { + +204 (*)& +cmd_¬p_d_p_¡rg +, + +205 (*)& +cmd_¬p_d_p +, + +206 (*)& +cmd_¬p_d_¬p_¡rg +, + +207 (*)& +cmd_¬p_d_pÜt_id +, + +208 (*)& +cmd_¬p_d_ +, + +209 +NULL +, + +220 + $cmd_¬p_»q_·r£d +(* +·r£d_»suÉ +, + +221 +__¹e_unu£d + +cmdle + * +þ +, __¹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 +("ARPntryxists for ip 0x%x, ort %d\n", + +243 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +, ¬ams-> +pÜt_id +); + +247 ià( +ARPICMP_DEBUG +) + +248 + `´tf +("ARP -equestingrp 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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_»q_¡rg + = + +260 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "arpreq"); + +262 +cmdle_·r£_¡_t + + gcmd_¬p_»q + = { + +263 . +f + = +cmd_¬p_»q_·r£d +, + +264 . + gd©a + = +NULL +, + +265 . + ghp_¡r + = "ARPequest", + +266 . + gtoks + = { + +267 (*)& +cmd_¬p_d_p_¡rg +, + +268 (*)& +cmd_¬p_d_p +, + +269 (*)& +cmd_¬p_»q_¡rg +, + +270 (*)& +cmd_¬p_d_pÜt_id +, + +271 (*)& +cmd_¬p_d_ +, + +272 +NULL +, + +283 + $cmd_icmp_echo_»q_·r£d +(* +·r£d_»suÉ +, + +284 +__¹e_unu£d + +cmdle + * +þ +, + +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 +cmdle_·r£_tok_¡rg_t + + gcmd_icmp_echo_»q_¡rg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "icmpecho"); + +299 +cmdle_·r£_¡_t + + gcmd_icmp_echo_»q + = { + +300 . +f + = +cmd_icmp_echo_»q_·r£d +, + +301 . + gd©a + = +NULL +, + +302 . + ghp_¡r + = "ICMPchoequest", + +303 . + gtoks + = { + +304 (*)& +cmd_¬p_d_p_¡rg +, + +305 (*)& +cmd_¬p_d_p +, + +306 (*)& +cmd_icmp_echo_»q_¡rg +, + +307 (*)& +cmd_¬p_d_pÜt_id +, + +308 (*)& +cmd_¬p_d_ +, + +309 +NULL +, + +317 + scmd_¬p_ls_»suÉ + { + +318 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +319 +ut32_t + + mp +; + +320 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +324 + $cmd_¬p_ls_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +325 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +327 + `´tf +("\nARPable ...\n"); + +328 + `´tf +("-------------\n"); + +329 + `´t_¬p_bË +(); + +331 +´tf + + +334 + `´tf +("\nND IPv6able:\n"); + +335 + `´tf +("--------------\n"); + +336 + `´t_nd_bË +(); + +337 + } +} + +339 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_ls_p_¡rg + = + +340 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p_¡rg +, + +343 +cmdle_·r£_tok_num_t + + gcmd_¬p_ls_p + = + +344 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p +, +UINT32 +); + +346 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_ls_¬p_¡rg + = + +347 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡rg +, + +350 +cmdle_·r£_¡_t + + gcmd_¬p_ls + = { + +351 . +f + = +cmd_¬p_ls_·r£d +, + +352 . + gd©a + = +NULL +, + +353 . + ghp_¡r + = "ARPist", + +354 . + gtoks + = { + +355 (*)& +cmd_¬p_ls_p_¡rg +, + +356 (*)& +cmd_¬p_ls_p +, + +357 (*)& +cmd_¬p_ls_¬p_¡rg +, + +358 +NULL +, + +366 + scmd_show_pÜts_fo_»suÉ + { + +367 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +368 +ut32_t + + mp +; + +369 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +373 + $cmd_show_pÜts_fo_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +374 +__¹e_unu£d + +cmdle + * +þ +, + +375 +__¹e_unu£d + * +d©a +) + +377 + `show_pÜts_fo +(); + +378 + } +} + +380 +cmdle_·r£_tok_¡rg_t + + gcmd_show_pÜts_fo_¡rg + = + +381 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡rg +, + +384 +cmdle_·r£_¡_t + + gcmd_show_pÜts_fo + = { + +385 . +f + = +cmd_show_pÜts_fo_·r£d +, + +386 . + gd©a + = +NULL +, + +387 . + ghp_¡r + = "show orts info", + +388 . + gtoks + = { + +389 (*)& +cmd_¬p_ls_p_¡rg +, + +390 (*)& +cmd_¬p_ls_p +, + +391 (*)& +cmd_show_pÜts_fo_¡rg +, + +392 +NULL +, + +396 #iâdeà +VNF_ACL + + +397 + scmd_¬p_dbg_»suÉ + { + +398 +cmdle_fixed_¡rg_t + + m¬pdbg_¡r +; + +399 +ut32_t + + mæag +; + +402 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_dbg_¡rg + = + +403 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_dbg_»suÉ +, +¬pdbg_¡r +, + +405 +cmdle_·r£_tok_num_t + + gcmd_¬p_dbg_æag + = + +406 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_dbg_»suÉ +, +æag +, +UINT32 +); + +409 +cmd_¬p_dbg_·r£ +( + +410 * +·r£d_»suÉ +, + +411 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +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 +cmdle_·r£_¡_t + + gcmd_¬p_dbg + = { + +426 . +f + = +cmd_¬p_dbg_·r£ +, + +427 . + gd©a + = +NULL +, + +428 . + ghp_¡r + = "Turn on/off(1/0)rp debug", + +429 . + gtoks + = { + +430 (*)& +cmd_¬p_dbg_¡rg +, + +431 (*)& +cmd_¬p_dbg_æag +, + +432 +NULL +, + +436 + scmd_¬p_tim_»suÉ + { + +437 +cmdle_fixed_¡rg_t + + m¬±im_¡r +; + +438 +ut32_t + + m¬±im_v® +; + +441 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_tim_¡rg + = + +442 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_tim_»suÉ +, +¬±im_¡r +, + +444 +cmdle_·r£_tok_num_t + + gcmd_¬p_tim_v® + = + +445 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_tim_»suÉ +, +¬±im_v® +, +UINT32 +); + +448 +cmd_¬p_tim_·r£ +( + +449 * +·r£d_»suÉ +, + +450 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +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 +cmdle_·r£_¡_t + + gcmd_¬p_tim + = { + +465 . +f + = +cmd_¬p_tim_·r£ +, + +466 . + gd©a + = +NULL +, + +467 . + ghp_¡r + = "Timerxpiry val by def 10 sec", + +468 . + gtoks + = { + +469 (*)& +cmd_¬p_tim_¡rg +, + +470 (*)& +cmd_¬p_tim_v® +, + +471 +NULL +, + +483 + $pkt_bur¡_io_fÜw¬d +( +fwd_¡»am + * +fs +) + +485 +¹e_mbuf + * +pkts_bur¡ +[ +MAX_PKT_BURST +]; + +486 +ut16_t + +nb_rx +; + +487 +ut16_t + +nb_tx +; + +489 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +490 +ut64_t + +¡¬t_tsc +; + +491 +ut64_t + +d_tsc +; + +492 +ut64_t + +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Æiky +( +nb_rx + == 0)) + +507 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +508 +fs +-> +rx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_rx +]++; + +511 +fs +-> +rx_·cks + +ð +nb_rx +; + +512 +nb_tx + = + `¹e_h_tx_bur¡ +( +fs +-> +tx_pÜt +, fs-> +tx_queue +, +pkts_bur¡ +, +nb_rx +); + +513 +fs +-> +tx_·cks + +ð +nb_tx +; + +515 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +516 +fs +-> +tx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_tx +]++; + +519 ià( + `uÆiky +( +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 + = ( +ut64_t +) (fs->core_cycles + core_cycles); + +531 + } +} + +534 +fwd_ge + + gio_fwd_ge + = { + +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 +le + + $´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 +ut16_t + +h_ty³ +; + +560 +ut64_t + +Þ_æags +; + +561 +ut16_t + +nb_rx +; + +562 +ut16_t + +i +, +·ck_ty³ +; + +563 +ut16_t + +is_ÿpsuÏtiÚ +; + +565 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +566 +ut64_t + +¡¬t_tsc +; + +567 +ut64_t + +d_tsc +; + +568 +ut64_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Æiky +( +nb_rx + == 0)) + +583 #ifdeà +RTE_TEST_PMD_RECORD_BURST_STATS + + +584 +fs +-> +rx_bur¡_¡©s +. +pkt_bur¡_¥»ad +[ +nb_rx +]++; + +587 +fs +-> +rx_·cks + +ð +nb_rx +; + +592 ià( +vbo£_Ëv + > 0) + +593 + `´tf +("port %u/queue %u:eceived %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à( +vbo£_Ëv + == 0) { + +600 + `¹e_pktmbuf_ä +( +mb +); + +603 +h_hdr + = + `¹e_pktmbuf_mtod +( +mb +, +h_hdr + *); + +604 +h_ty³ + = + `RTE_BE_TO_CPU_16 +( +h_hdr +-> +h_ty³ +); + +605 +Þ_æags + = +mb +->ol_flags; + +606 +·ck_ty³ + = +mb +->packet_type; + +607 +is_ÿ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 +(" - VLANci=0x%x", +mb +-> +vÏn_tci +); + +633 ià( +Þ_æags + & +PKT_RX_QINQ_PKT +) + +634 + `´tf +(" - QinQ VLANci=0x%x, VLANci outer=0x%x", + +635 +mb +-> +vÏn_tci +, mb-> +vÏn_tci_our +); + +636 ià( +mb +-> +·ck_ty³ +) { + +637 +ut32_t + +±y³ +; + +640 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_L2_MASK +; + +641 +±y³ +) { + +642 +RTE_PTYPE_L2_ETHER +: + +643 + `´tf +(" - (outer) L2ype: ETHER"); + +645 +RTE_PTYPE_L2_ETHER_TIMESYNC +: + +646 + `´tf +(" - (outer) L2ype: ETHER_Timesync"); + +648 +RTE_PTYPE_L2_ETHER_ARP +: + +649 + `´tf +(" - (outer) L2ype: ETHER_ARP"); + +651 +RTE_PTYPE_L2_ETHER_LLDP +: + +652 + `´tf +(" - (outer) L2ype: ETHER_LLDP"); + +655 + `´tf +(" - (outer) L2ype: Unknown"); + +660 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_L3_MASK +; + +661 +±y³ +) { + +662 +RTE_PTYPE_L3_IPV4 +: + +663 + `´tf +(" - (outer) L3ype: IPV4"); + +665 +RTE_PTYPE_L3_IPV4_EXT +: + +666 + `´tf +(" - (outer) L3ype: IPV4_EXT"); + +668 +RTE_PTYPE_L3_IPV6 +: + +669 + `´tf +(" - (outer) L3ype: IPV6"); + +671 +RTE_PTYPE_L3_IPV4_EXT_UNKNOWN +: + +672 + `´tf +(" - (outer) L3ype: IPV4_EXT_UNKNOWN"); + +674 +RTE_PTYPE_L3_IPV6_EXT +: + +675 + `´tf +(" - (outer) L3ype: IPV6_EXT"); + +677 +RTE_PTYPE_L3_IPV6_EXT_UNKNOWN +: + +678 + `´tf +(" - (outer) L3ype: IPV6_EXT_UNKNOWN"); + +681 + `´tf +(" - (outer) L3ype: Unknown"); + +686 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_L4_MASK +; + +687 +±y³ +) { + +688 +RTE_PTYPE_L4_TCP +: + +689 + `´tf +(" - (outer) L4ype: TCP"); + +691 +RTE_PTYPE_L4_UDP +: + +692 + `´tf +(" - (outer) L4ype: UDP"); + +694 +RTE_PTYPE_L4_FRAG +: + +695 + `´tf +(" - (outer) L4ype: L4_FRAG"); + +697 +RTE_PTYPE_L4_SCTP +: + +698 + `´tf +(" - (outer) L4ype: SCTP"); + +700 +RTE_PTYPE_L4_ICMP +: + +701 + `´tf +(" - (outer) L4ype: ICMP"); + +703 +RTE_PTYPE_L4_NONFRAG +: + +704 + `´tf +(" - (outer) L4ype: L4_NONFRAG"); + +707 + `´tf +(" - (outer) L4ype: Unknown"); + +712 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_TUNNEL_MASK +; + +713 +±y³ +) { + +714 +RTE_PTYPE_TUNNEL_IP +: + +715 + `´tf +(" - Tunnelype: IP"); + +717 +RTE_PTYPE_TUNNEL_GRE +: + +718 + `´tf +(" - Tunnelype: GRE"); + +720 +RTE_PTYPE_TUNNEL_VXLAN +: + +721 + `´tf +(" - Tunnelype: VXLAN"); + +723 +RTE_PTYPE_TUNNEL_NVGRE +: + +724 + `´tf +(" - Tunnelype: NVGRE"); + +726 +RTE_PTYPE_TUNNEL_GENEVE +: + +727 + `´tf +(" - Tunnelype: GENEVE"); + +729 +RTE_PTYPE_TUNNEL_GRENAT +: + +730 + `´tf +(" - Tunnelype: GRENAT"); + +733 + `´tf +(" - Tunnelype: Unknown"); + +738 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_INNER_L2_MASK +; + +739 +±y³ +) { + +740 +RTE_PTYPE_INNER_L2_ETHER +: + +741 + `´tf +(" - Inner L2ype: ETHER"); + +743 +RTE_PTYPE_INNER_L2_ETHER_VLAN +: + +744 + `´tf +(" - Inner L2ype: ETHER_VLAN"); + +747 + `´tf +(" - Inner L2ype: Unknown"); + +751 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_INNER_L3_MASK +; + +752 +±y³ +) { + +753 +RTE_PTYPE_INNER_L3_IPV4 +: + +754 + `´tf +(" - Inner L3ype: IPV4"); + +756 +RTE_PTYPE_INNER_L3_IPV4_EXT +: + +757 + `´tf +(" - Inner L3ype: IPV4_EXT"); + +759 +RTE_PTYPE_INNER_L3_IPV6 +: + +760 + `´tf +(" - Inner L3ype: IPV6"); + +762 +RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN +: + +763 + `´tf +(" - Inner L3ype: " + +766 +RTE_PTYPE_INNER_L3_IPV6_EXT +: + +767 + `´tf +(" - Inner L3ype: IPV6_EXT"); + +769 +RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN +: + +770 + `´tf +(" - Inner L3ype: " + +774 + `´tf +(" - Inner L3ype: Unknown"); + +779 +±y³ + = +mb +-> +·ck_ty³ + & +RTE_PTYPE_INNER_L4_MASK +; + +780 +±y³ +) { + +781 +RTE_PTYPE_INNER_L4_TCP +: + +782 + `´tf +(" - Inner L4ype: TCP"); + +784 +RTE_PTYPE_INNER_L4_UDP +: + +785 + `´tf +(" - Inner L4ype: UDP"); + +787 +RTE_PTYPE_INNER_L4_FRAG +: + +788 + `´tf +(" - Inner L4ype: L4_FRAG"); + +790 +RTE_PTYPE_INNER_L4_SCTP +: + +791 + `´tf +(" - Inner L4ype: SCTP"); + +793 +RTE_PTYPE_INNER_L4_ICMP +: + +794 + `´tf +(" - Inner L4ype: ICMP"); + +796 +RTE_PTYPE_INNER_L4_NONFRAG +: + +797 + `´tf +(" - Inner L4ype: L4_NONFRAG"); + +800 + `´tf +(" - Inner L4ype: Unknown"); + +803 + `´tf +("\n"); + +805 + `´tf +("Unknown acketype\n"); + +806 ià( +is_ÿpsuÏtiÚ +) { + +807 +v4_hdr + *ipv4_hdr; + +808 +v6_hdr + *ipv6_hdr; + +809 +udp_hdr + *udp_hdr; + +810 +ut8_t + +l2_Ën +; + +811 +ut8_t + +l3_Ën +; + +812 +ut8_t + +l4_Ën +; + +813 +ut8_t + +l4_´Ùo +; + +814 +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: acketype =%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ûivqueue=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 + = ( +ut64_t +) (fs->core_cycles + core_cycles); + +872 + } +} + +874 +fwd_ge + + grx_Úly_ge + = { + +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 +cmdle_fixed_¡rg_t + + m£t +; + +884 +cmdle_fixed_¡rg_t + + mfwd +; + +885 +cmdle_fixed_¡rg_t + + mmode +; + +891 +fwd_ge + * + gfwd_ges +[] = { + +892 & +io_fwd_ge +, + +894 & +mac_fwd_ge +, + +895 & +mac_»y_fwd_ge +, + +896 & +mac_sw_ge +, + +897 & +æow_g_ge +, + +899 & +rx_Úly_ge +, + +901 & +tx_Úly_ge +, + +902 & +csum_fwd_ge +, + +903 & +icmp_echo_ge +, + +904 #ifdeà +RTE_LIBRTE_IEEE1588 + + +905 & +1588_fwd_ge +, + +908 +NULL +, + +911 +fwd_ge + * + gcur_fwd_g + = & +io_fwd_ge +; + +913 + $£t_pkt_fÜw¬dg_mode +(cÚ¡ * +fwd_mode_Çme +) + +915 +fwd_ge + * +fwd_g +; + +916 +i +; + +918 +i + = 0; + +919 ( +fwd_g + = +fwd_ges +[ +i +]è!ð +NULL +) { + +920 ià(! + `¡rcmp +( +fwd_g +-> +fwd_mode_Çme +, fwd_mode_name)) { + +921 + `´tf +("Set %s acket forwarding mode\n", + +922 +fwd_mode_Çme +); + +923 +cur_fwd_g + = +fwd_g +; + +926 +i +++; + +928 + `´tf +("Inv®id % ·ck fÜw¬dg mode\n", +fwd_mode_Çme +); + +929 + } +} + +931 +cmd_£t_fwd_mode_·r£d +(* +·r£d_»suÉ +, + +932 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +933 +__©ibu__ +(( +unu£d +)è* +d©a +) + +935 +cmd_£t_fwd_mode_»suÉ + * + g»s + = +·r£d_»suÉ +; + +937 +£t_pkt_fÜw¬dg_mode +( +»s +-> +mode +); + +940 +cmdle_·r£_tok_¡rg_t + + gcmd_£tfwd_£t + = + +941 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +£t +, "set"); + +942 +cmdle_·r£_tok_¡rg_t + + gcmd_£tfwd_fwd + = + +943 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +fwd +, "fwd"); + +944 +cmdle_·r£_tok_¡rg_t + + gcmd_£tfwd_mode + = + +945 +TOKEN_STRING_INITIALIZER +( +cmd_£t_fwd_mode_»suÉ +, +mode +, + +948 +cmdle_·r£_¡_t + + gcmd_£t_fwd_mode + = { + +949 . +f + = +cmd_£t_fwd_mode_·r£d +, + +950 . + gd©a + = +NULL +, + +951 . + ghp_¡r + = +NULL +, + +952 . + gtoks + = { + +953 (*)& +cmd_£tfwd_£t +, + +954 (*)& +cmd_£tfwd_fwd +, + +955 (*)& +cmd_£tfwd_mode +, + +956 +NULL +, + +962 +ut16_t + + +963 + $¡r2æowty³ +(* +¡rg +) + +965 +ut8_t + +i + = 0; + +967 +¡r +[32]; + +968 +ut16_t + +ty³ +; + +969 } +æowty³_¡r +[] = { + +970 {"¿w", +RTE_ETH_FLOW_RAW +}, + +971 {"v4", +RTE_ETH_FLOW_IPV4 +}, + +972 {"v4-äag", +RTE_ETH_FLOW_FRAG_IPV4 +}, + +973 {"v4-tý", +RTE_ETH_FLOW_NONFRAG_IPV4_TCP +}, + +974 {"v4-udp", +RTE_ETH_FLOW_NONFRAG_IPV4_UDP +}, + +975 {"v4-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 +, +¡rg +)) + +988 +æowty³_¡r +[ +i +]. +ty³ +; + +990 +RTE_ETH_FLOW_UNKNOWN +; + +991 + } +} + +993 +le + + +994 + $·r£_æexbys +(cÚ¡ * +q_¬g +, +ut8_t + * +æexbys +, +ut16_t + +max_num +) + +996 +s +[256]; + +997 cÚ¡ * +p +, * +p0 + = +q_¬g +; + +998 * +d +; + +999 +t_æd +; + +1000 * +¡r_æd +[ +max_num +]; + +1001 +i +; + +1002 +size +; + +1003 +»t + = -1; + +1005 +p + = + `¡rchr +( +p0 +, '('); + +1006 ià( +p + =ð +NULL +) + +1008 ++ +p +; + +1009 +p0 + = + `¡rchr +( +p +, ')'); + +1010 ià( +p0 + =ð +NULL +) + +1013 +size + = +p0 + - +p +; + +1014 ià( +size + >ð( +s +)) + +1017 + `¢´tf +( +s +, (s), "%.*s", +size +, +p +); + +1018 +»t + = + `¹e_¡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 +æexbys +[ +i +] = ( +ut8_t +) +t_æd +; + +1028 +»t +; + +1029 + } +} + +1032 + scmd_æow_deùÜ_»suÉ + { + +1033 +cmdle_fixed_¡rg_t + + mæow_deùÜ_fr +; + +1034 +ut8_t + + mpÜt_id +; + +1035 +cmdle_fixed_¡rg_t + + mmode +; + +1036 +cmdle_fixed_¡rg_t + + mmode_v®ue +; + +1037 +cmdle_fixed_¡rg_t + + mÝs +; + +1038 +cmdle_fixed_¡rg_t + + mæow +; + +1039 +cmdle_fixed_¡rg_t + + mæow_ty³ +; + +1040 +cmdle_fixed_¡rg_t + + mh +; + +1041 +ut16_t + + mh_ty³ +; + +1042 +cmdle_fixed_¡rg_t + + m¤c +; + +1043 +cmdle_addr_t + + m_¤c +; + +1044 +ut16_t + + mpÜt_¤c +; + +1045 +cmdle_fixed_¡rg_t + + md¡ +; + +1046 +cmdle_addr_t + + m_d¡ +; + +1047 +ut16_t + + mpÜt_d¡ +; + +1048 +cmdle_fixed_¡rg_t + + mvify_g +; + +1049 +ut32_t + + mvify_g_v®ue +; + +1050 +cmdle_addr_t + + mtos +; + +1051 +ut8_t + + mtos_v®ue +; + +1052 +cmdle_addr_t + + m´Ùo +; + +1053 +ut8_t + + m´Ùo_v®ue +; + +1054 +cmdle_addr_t + + ml +; + +1055 +ut8_t + + ml_v®ue +; + +1056 +cmdle_fixed_¡rg_t + + mvÏn +; + +1057 +ut16_t + + mvÏn_v®ue +; + +1058 +cmdle_fixed_¡rg_t + + mæexbys +; + +1059 +cmdle_fixed_¡rg_t + + mæexbys_v®ue +; + +1060 +cmdle_fixed_¡rg_t + + mpf_vf +; + +1061 +cmdle_fixed_¡rg_t + + mdrÝ +; + +1062 +cmdle_fixed_¡rg_t + + mqueue +; + +1063 +ut16_t + + mqueue_id +; + +1064 +cmdle_fixed_¡rg_t + + mfd_id +; + +1065 +ut32_t + + mfd_id_v®ue +; + +1066 +cmdle_fixed_¡rg_t + + mmac +; + +1067 +h_addr + + mmac_addr +; + +1068 +cmdle_fixed_¡rg_t + + mtu +; + +1069 +cmdle_fixed_¡rg_t + + mtuÂ_ty³ +; + +1070 +cmdle_fixed_¡rg_t + + mtuÂ_id +; + +1071 +ut32_t + + mtuÂ_id_v®ue +; + +1075 +cmd_æow_deùÜ_fr_·r£d +(* +·r£d_»suÉ +, + +1076 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +1077 +__©ibu__ +(( +unu£d +)è* +d©a +) + +1079 +cmd_æow_deùÜ_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1080 +¹e_h_fd_fr + + gy +; + +1081 +ut8_t + + gæexbys +[ +RTE_ETH_FDIR_MAX_FLEXLEN +]; + +1082 * + gd +; + +1083 + gvf_id +; + +1084 + g»t + = 0; + +1086 ià( + gabË_hwlb +) { + +1087 +´tf +("Hash Filter islready Defined !\n"); + +1088 +´tf +("Please undefine HWLD flagnd define " + +1093 + g»t + = +¹e_h_dev_fr_suµÜd +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +); + +1094 ià( + g»t + < 0) { + +1095 +´tf +("flow director isot supported on ort %u.\n", + +1096 +»s +-> +pÜt_id +); + +1099 +mem£t +( +æexbys +, 0, (flexbytes)); + +1100 +mem£t +(& +y +, 0, ( +¹e_h_fd_fr +)); + +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 modeo 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 modeo Tunnel.\n"); + +1113 ià( +¡rcmp +( +»s +-> +mode_v®ue +, "IP")) { + +1114 +´tf +("Please set modeo IP.\n"); + +1119 + gy +. + gput +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1122 + g»t + = +·r£_æexbys +( +»s +-> +æexbys_v®ue +, + +1123 +æexbys +, + +1124 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1125 ià( + g»t + < 0) { + +1126 +´tf +("error: Cannot arse flexbytes input.\n"); + +1130 + gy +. + gput +. + 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 + gy +. + gput +. + gæow +. + g4_æow +. + gtos + = +»s +-> +tos_v®ue +; + +1141 + gy +. + gput +. + gæow +. + g4_æow +. + gl + = +»s +-> +l_v®ue +; + +1143 + gy +. + gput +. + gæow +. + gudp4_æow +. + gd¡_pÜt + = + +1144 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1145 + gy +. + gput +. + 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 + gy +. + gput +. + gæow +. + g4_æow +. + gtos + = +»s +-> +tos_v®ue +; + +1155 + gy +. + gput +. + gæow +. + g4_æow +. + gl + = +»s +-> +l_v®ue +; + +1157 + gy +. + gput +. + gæow +. + gsùp4_æow +. + gd¡_pÜt + = + +1158 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1159 + gy +. + gput +. + gæow +. + gsùp4_æow +. + g¤c_pÜt + = + +1160 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1161 + gy +. + gput +. + gæow +. + gsùp4_æow +. + gvify_g + = + +1162 +¹e_ýu_to_be_32 +( +»s +-> +vify_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 + gy +. + gput +. + gæow +. + gv6_æow +. + gtc + = +»s +-> +tos_v®ue +; + +1175 + gy +. + gput +. + gæow +. + gv6_æow +. + ghÝ_lims + = +»s +-> +l_v®ue +; + +1177 + gy +. + gput +. + gæow +. + gudp6_æow +. + gd¡_pÜt + = + +1178 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1179 + gy +. + gput +. + 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 + gy +. + gput +. + gæow +. + gv6_æow +. + gtc + = +»s +-> +tos_v®ue +; + +1189 + gy +. + gput +. + gæow +. + gv6_æow +. + ghÝ_lims + = +»s +-> +l_v®ue +; + +1191 + gy +. + gput +. + gæow +. + gsùp6_æow +. + gd¡_pÜt + = + +1192 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_d¡ +); + +1193 + gy +. + gput +. + gæow +. + gsùp6_æow +. + g¤c_pÜt + = + +1194 +¹e_ýu_to_be_16 +( +»s +-> +pÜt_¤c +); + +1195 + gy +. + gput +. + gæow +. + gsùp6_æow +. + gvify_g + = + +1196 +¹e_ýu_to_be_32 +( +»s +-> +vify_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 + gy +. + gput +. + gæow +. + gtuÂ_æow +. + gtuÂ_ty³ + = + +1216 +¡r2fd_tuÂty³ +( +»s +-> +tuÂ_ty³ +); + +1217 + gy +. + gput +. + 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 +. +æexbys +, + +1223 +æexbys +, + +1224 +RTE_ETH_FDIR_MAX_FLEXLEN +); + +1226 + gy +. + gput +. + gæow_ext +. + gvÏn_tci + = +¹e_ýu_to_be_16 +( +»s +-> +vÏn_v®ue +); + +1228 + gy +. + gaùiÚ +. + gæex_off + = 0; + +1229 ià(! +¡rcmp +( +»s +-> +drÝ +, "drop")) + +1230 + gy +. + gaùiÚ +. + gbehaviÜ + = +RTE_ETH_FDIR_REJECT +; + +1232 + gy +. + gaùiÚ +. + gbehaviÜ + = +RTE_ETH_FDIR_ACCEPT +; + +1234 ià(! +¡rcmp +( +»s +-> +pf_vf +, "pf")) + +1235 + gy +. + gput +. + 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 + gy +. + gput +. + gæow_ext +. + gis_vf + = 1; + +1248 + gy +. + gput +. + gæow_ext +. + gd¡_id + = ( +ut16_t +) +vf_id +; + +1250 +´tf +("v®id ¬am %s.\n", +»s +-> +pf_vf +); + +1254 + gy +. + gaùiÚ +. + g»pÜt_¡©us + = +RTE_ETH_FDIR_REPORT_ID +; + +1255 + gy +. + gaùiÚ +. + grx_queue + = +»s +-> +queue_id +; + +1256 + gy +. + gsoá_id + = +»s +-> +fd_id_v®ue +; + +1257 ià(! +¡rcmp +( +»s +-> +Ýs +, "add")) + +1258 + g»t + = +¹e_h_dev_fr_ù¾ +( +»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_fr_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +, + +1262 +RTE_ETH_FILTER_DELETE +, & +y +); + +1264 + g»t + = +¹e_h_dev_fr_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_FDIR +, + +1265 +RTE_ETH_FILTER_UPDATE +, & +y +); + +1266 ià( + g»t + < 0) + +1267 +´tf +("flow director rogrammingrror: (%s)\n", + +1268 +¡»¼Ü +(- +»t +)); + +1274 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_fr + = + +1275 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1276 +æow_deùÜ_fr +, "flow_director_filter"); + +1278 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_pÜt_id + = + +1279 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1280 +pÜt_id +, +UINT8 +); + +1283 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_mode + = + +1284 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1285 +mode +, "mode"); + +1287 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_mode_ + = + +1288 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1289 +mode_v®ue +, "IP"); + +1291 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_Ýs + = + +1292 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1293 +Ýs +, "add#del#update"); + +1295 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_æow + = + +1296 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1297 +æow +, "flow"); + +1299 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_æow_ty³ + = + +1300 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1301 +æow_ty³ +, "ipv4-other#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#" + +1304 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_¤c + = + +1305 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1306 +¤c +, "src"); + +1307 +cmdle_·r£_tok_addr_t + + gcmd_æow_deùÜ__¤c + = + +1308 +TOKEN_IPADDR_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1309 +_¤c +); + +1310 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_pÜt_¤c + = + +1311 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1312 +pÜt_¤c +, +UINT16 +); + +1313 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_d¡ + = + +1314 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1315 +d¡ +, "dst"); + +1316 +cmdle_·r£_tok_addr_t + + gcmd_æow_deùÜ__d¡ + = + +1317 +TOKEN_IPADDR_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1318 +_d¡ +); + +1319 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_pÜt_d¡ + = + +1320 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1321 +pÜt_d¡ +, +UINT16 +); + +1323 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_tos + = + +1324 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1325 +tos +, "tos"); + +1326 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_tos_v®ue + = + +1327 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1328 +tos_v®ue +, +UINT8 +); + +1330 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_l + = + +1331 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1332 +l +, "ttl"); + +1333 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_l_v®ue + = + +1334 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1335 +l_v®ue +, +UINT8 +); + +1337 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_vÏn + = + +1338 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1339 +vÏn +, "vlan"); + +1340 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_vÏn_v®ue + = + +1341 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1342 +vÏn_v®ue +, +UINT16 +); + +1343 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_æexbys + = + +1344 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1345 +æexbys +, "flexbytes"); + +1346 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_æexbys_v®ue + = + +1347 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1348 +æexbys_v®ue +, +NULL +); + +1349 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_drÝ + = + +1350 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1351 +drÝ +, "drop#fwd"); + +1352 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_pf_vf + = + +1353 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1354 +pf_vf +, +NULL +); + +1355 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_queue + = + +1356 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1357 +queue +, "queue"); + +1358 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_queue_id + = + +1359 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1360 +queue_id +, +UINT16 +); + +1361 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_fd_id + = + +1362 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1363 +fd_id +, "fd_id"); + +1364 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_fd_id_v®ue + = + +1365 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1366 +fd_id_v®ue +, +UINT32 +); + +1369 +cmdle_·r£_¡_t + + gcmd_add_d_udp_æow_deùÜ + = { + +1370 . +f + = +cmd_æow_deùÜ_fr_·r£d +, + +1371 . + gd©a + = +NULL +, + +1372 . + ghp_¡r + = "add or deleten udp/tcp flow directorntry on NIC", + +1373 . + gtoks + = { + +1374 (*)& +cmd_æow_deùÜ_fr +, + +1375 (*)& +cmd_æow_deùÜ_pÜt_id +, + +1376 (*)& +cmd_æow_deùÜ_mode +, + +1377 (*)& +cmd_æow_deùÜ_mode_ +, + +1378 (*)& +cmd_æow_deùÜ_Ýs +, + +1379 (*)& +cmd_æow_deùÜ_æow +, + +1380 (*)& +cmd_æow_deùÜ_æow_ty³ +, + +1381 (*)& +cmd_æow_deùÜ_¤c +, + +1382 (*)& +cmd_æow_deùÜ__¤c +, + +1383 (*)& +cmd_æow_deùÜ_pÜt_¤c +, + +1384 (*)& +cmd_æow_deùÜ_d¡ +, + +1385 (*)& +cmd_æow_deùÜ__d¡ +, + +1386 (*)& +cmd_æow_deùÜ_pÜt_d¡ +, + +1387 (*)& +cmd_æow_deùÜ_tos +, + +1388 (*)& +cmd_æow_deùÜ_tos_v®ue +, + +1389 (*)& +cmd_æow_deùÜ_l +, + +1390 (*)& +cmd_æow_deùÜ_l_v®ue +, + +1391 (*)& +cmd_æow_deùÜ_vÏn +, + +1392 (*)& +cmd_æow_deùÜ_vÏn_v®ue +, + +1393 (*)& +cmd_æow_deùÜ_æexbys +, + +1394 (*)& +cmd_æow_deùÜ_æexbys_v®ue +, + +1395 (*)& +cmd_æow_deùÜ_drÝ +, + +1396 (*)& +cmd_æow_deùÜ_pf_vf +, + +1397 (*)& +cmd_æow_deùÜ_queue +, + +1398 (*)& +cmd_æow_deùÜ_queue_id +, + +1399 (*)& +cmd_æow_deùÜ_fd_id +, + +1400 (*)& +cmd_æow_deùÜ_fd_id_v®ue +, + +1401 +NULL +, + +1405 +cmdle_·r£_tok_¡rg_t + + gcmd_æow_deùÜ_h + = + +1406 +TOKEN_STRING_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1407 +h +, "ether"); + +1408 +cmdle_·r£_tok_num_t + + gcmd_æow_deùÜ_h_ty³ + = + +1409 +TOKEN_NUM_INITIALIZER +( +cmd_æow_deùÜ_»suÉ +, + +1410 +h_ty³ +, +UINT16 +); + +1412 +cmdle_·r£_¡_t + + gcmd_add_d_l2_æow_deùÜ + = { + +1413 . +f + = +cmd_æow_deùÜ_fr_·r£d +, + +1414 . + gd©a + = +NULL +, + +1415 . + ghp_¡r + = "add or delete L2 flow directorntry on NIC", + +1416 . + gtoks + = { + +1417 (*)& +cmd_æow_deùÜ_fr +, + +1418 (*)& +cmd_æow_deùÜ_pÜt_id +, + +1419 (*)& +cmd_æow_deùÜ_mode +, + +1420 (*)& +cmd_æow_deùÜ_mode_ +, + +1421 (*)& +cmd_æow_deùÜ_Ýs +, + +1422 (*)& +cmd_æow_deùÜ_æow +, + +1423 (*)& +cmd_æow_deùÜ_æow_ty³ +, + +1424 (*)& +cmd_æow_deùÜ_h +, + +1425 (*)& +cmd_æow_deùÜ_h_ty³ +, + +1426 (*)& +cmd_æow_deùÜ_æexbys +, + +1427 (*)& +cmd_æow_deùÜ_æexbys_v®ue +, + +1428 (*)& +cmd_æow_deùÜ_drÝ +, + +1429 (*)& +cmd_æow_deùÜ_pf_vf +, + +1430 (*)& +cmd_æow_deùÜ_queue +, + +1431 (*)& +cmd_æow_deùÜ_queue_id +, + +1432 (*)& +cmd_æow_deùÜ_fd_id +, + +1433 (*)& +cmd_æow_deùÜ_fd_id_v®ue +, + +1434 +NULL +, + +1440 + scmd_£t_hash_put_£t_»suÉ + { + +1441 +cmdle_fixed_¡rg_t + + g£t_hash_put_£t +; + +1442 +ut8_t + + gpÜt_id +; + +1443 +cmdle_fixed_¡rg_t + + gæow_ty³ +; + +1444 +cmdle_fixed_¡rg_t + + g£t_fld0 +; + +1445 +cmdle_fixed_¡rg_t + + g£t_fld1 +; + +1446 +cmdle_fixed_¡rg_t + + g£t_fld2 +; + +1447 +cmdle_fixed_¡rg_t + + g£t_fld3 +; + +1448 +cmdle_fixed_¡rg_t + + g£t_fld4 +; + +1449 +cmdle_fixed_¡rg_t + + g£Ëù +; + +1452 +¹e_h_put_£t_fld + + +1453 +¡r2£t +(* +¡rg +) + +1455 +ut16_t + + gi +; + +1458 + g¡r +[32]; + +1459 +¹e_h_put_£t_fld + + g£t +; + +1460 } + g£t_bË +[] = { + +1461 {"hty³", +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-hd", +RTE_ETH_INPUT_SET_L3_IP6_NEXT_HEADER +}, + +1473 {"v6-hÝ-lims", +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-vi-g", +RTE_ETH_INPUT_SET_L4_SCTP_VERIFICATION_TAG +}, + +1481 {"udp-key", +RTE_ETH_INPUT_SET_TUNNEL_L4_UDP_KEY +}, + +1482 {"g»-key", +RTE_ETH_INPUT_SET_TUNNEL_GRE_KEY +}, + +1483 {"æd-1¡", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_1ST_WORD +}, + +1484 {"æd-2nd", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_2ND_WORD +}, + +1485 {"æd-3rd", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_3RD_WORD +}, + +1486 {"æd-4th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_4TH_WORD +}, + +1487 {"æd-5th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_5TH_WORD +}, + +1488 {"æd-6th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_6TH_WORD +}, + +1489 {"æd-7th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_7TH_WORD +}, + +1490 {"æd-8th", +RTE_ETH_INPUT_SET_FLEX_PAYLOAD_8TH_WORD +}, + +1491 {"nÚe", +RTE_ETH_INPUT_SET_NONE +}, + +1493 + gi + = 0; i < +RTE_DIM +( +£t_bË +); i++) { + +1494 ià(! +¡rcmp +( +¡rg +, +£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 + +cmdle + * +þ +, + +1504 +__¹e_unu£d + * +d©a +) + +1506 +cmd_£t_hash_put_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1507 +¹e_h_hash_fr_fo + + gfo +; + +1509 ià( + gabË_æow_d +) { + +1510 +´tf +("FDIR Filter is Defined!\n"); + +1511 +´tf +("Please undefine FDIR_FILTER flagnd define " + +1516 +mem£t +(& +fo +, 0, (info)); + +1517 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1518 + gfo +.fo. + gput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1520 + gfo +.fo. + gput_£t_cÚf +. + gfld +[0] = +¡r2£t +( +»s +-> +£t_fld0 +); + +1521 + gfo +.fo. + gput_£t_cÚf +. + g£t_size + = 1; + +1523 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1524 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1525 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1526 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1528 +¹e_h_dev_fr_ù¾ +( +»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 + +cmdle + * +þ +, + +1537 +__¹e_unu£d + * +d©a +) + +1539 +cmd_£t_hash_put_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1540 +¹e_h_hash_fr_fo + + gfo +; + +1542 ià( + gabË_æow_d +) { + +1543 +´tf +("FDIR Filter is Defined!\n"); + +1544 +´tf +("Please undefine FDIR_FILTER flagnd define " + +1549 +mem£t +(& +fo +, 0, (info)); + +1550 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1551 + gfo +.fo. + gput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1553 + gfo +.fo. + gput_£t_cÚf +. + gfld +[0] = +¡r2£t +( +»s +-> +£t_fld0 +); + +1554 + gfo +.fo. + gput_£t_cÚf +. + gfld +[1] = +¡r2£t +( +»s +-> +£t_fld1 +); + +1556 + gfo +.fo. + gput_£t_cÚf +. + g£t_size + = 2; + +1558 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1559 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1560 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1561 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1563 +¹e_h_dev_fr_ù¾ +( +»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 + +cmdle + * +þ +, + +1573 +__¹e_unu£d + * +d©a +) + +1575 +cmd_£t_hash_put_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1576 +¹e_h_hash_fr_fo + + gfo +; + +1578 +mem£t +(& +fo +, 0, (info)); + +1579 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1580 + gfo +.fo. + gput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1582 + gfo +.fo. + gput_£t_cÚf +. + gfld +[0] = +¡r2£t +( +»s +-> +£t_fld0 +); + +1583 + gfo +.fo. + gput_£t_cÚf +. + gfld +[1] = +¡r2£t +( +»s +-> +£t_fld1 +); + +1584 + gfo +.fo. + gput_£t_cÚf +. + gfld +[2] = +¡r2£t +( +»s +-> +£t_fld2 +); + +1585 + gfo +.fo. + gput_£t_cÚf +. + g£t_size + = 3; + +1587 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1588 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1589 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1590 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1592 +¹e_h_dev_fr_ù¾ +( +»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 + +cmdle + * +þ +, + +1599 +__¹e_unu£d + * +d©a +) + +1601 +cmd_£t_hash_put_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1602 +¹e_h_hash_fr_fo + + gfo +; + +1604 ià( + gabË_æow_d +) { + +1605 +´tf +("FDIR Filter is Defined!\n"); + +1606 +´tf +("Please undefine FDIR_FILTER flagnd define " + +1611 +mem£t +(& +fo +, 0, (info)); + +1612 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1613 + gfo +.fo. + gput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1615 + gfo +.fo. + gput_£t_cÚf +. + gfld +[0] = +¡r2£t +( +»s +-> +£t_fld0 +); + +1616 + gfo +.fo. + gput_£t_cÚf +. + gfld +[1] = +¡r2£t +( +»s +-> +£t_fld1 +); + +1617 + gfo +.fo. + gput_£t_cÚf +. + gfld +[2] = +¡r2£t +( +»s +-> +£t_fld2 +); + +1618 + gfo +.fo. + gput_£t_cÚf +. + gfld +[3] = +¡r2£t +( +»s +-> +£t_fld3 +); + +1620 + gfo +.fo. + gput_£t_cÚf +. + g£t_size + = 4; + +1621 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1622 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1623 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1624 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1626 +¹e_h_dev_fr_ù¾ +( +»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 + +cmdle + * +þ +, + +1635 +__¹e_unu£d + * +d©a +) + +1637 +cmd_£t_hash_put_£t_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1638 +¹e_h_hash_fr_fo + + gfo +; + +1640 +mem£t +(& +fo +, 0, (info)); + +1641 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_INPUT_SET_SELECT +; + +1642 + gfo +.fo. + gput_£t_cÚf +. + gæow_ty³ + = +¡r2æowty³ +( +»s +-> +æow_ty³ +); + +1644 + gfo +.fo. + gput_£t_cÚf +. + gfld +[0] = +¡r2£t +( +»s +-> +£t_fld0 +); + +1645 + gfo +.fo. + gput_£t_cÚf +. + gfld +[1] = +¡r2£t +( +»s +-> +£t_fld1 +); + +1646 + gfo +.fo. + gput_£t_cÚf +. + gfld +[2] = +¡r2£t +( +»s +-> +£t_fld2 +); + +1647 + gfo +.fo. + gput_£t_cÚf +. + gfld +[3] = +¡r2£t +( +»s +-> +£t_fld3 +); + +1648 + gfo +.fo. + gput_£t_cÚf +. + gfld +[4] = +¡r2£t +( +»s +-> +£t_fld4 +); + +1650 + gfo +.fo. + gput_£t_cÚf +. + g£t_size + = 5; + +1651 ià(! +¡rcmp +( +»s +-> +£Ëù +, "select")) + +1652 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_SELECT +; + +1653 ià(! +¡rcmp +( +»s +-> +£Ëù +, "add")) + +1654 + gfo +.fo. + gput_£t_cÚf +. + gÝ + = +RTE_ETH_INPUT_SET_ADD +; + +1655 +¹e_h_dev_fr_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1656 +RTE_ETH_FILTER_SET +, & +fo +); + +1660 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_cmd + = + +1661 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1662 +£t_hash_put_£t +, "set_hash_input_set"); + +1663 +cmdle_·r£_tok_num_t + + gcmd_£t_hash_put_£t_pÜt_id + = + +1664 +TOKEN_NUM_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1665 +pÜt_id +, +UINT8 +); + +1666 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_æow_ty³ + = + +1667 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1668 +æow_ty³ +, + +1672 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_fld0 + = + +1673 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1674 +£t_fld0 +, + +1678 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_fld1 + = + +1679 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1680 +£t_fld1 +, + +1684 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_fld2 + = + +1685 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1686 +£t_fld2 +, + +1689 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_fld3 + = + +1690 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1691 +£t_fld3 +, + +1694 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_fld4 + = + +1695 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1696 +£t_fld4 +, "ipv4-proto#ipv6-next-header#none"); + +1699 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_put_£t_£Ëù + = + +1700 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_put_£t_»suÉ +, + +1701 +£Ëù +, "select#add"); + +1703 +cmdle_·r£_¡_t + + gcmd_£t_hash_put_£t_1 + = { + +1704 . +f + = +cmd_£t_hash_put_£t_1_·r£d +, + +1705 . + gd©a + = +NULL +, + +1706 . + ghp_¡r + = "set_hash_input_set_1 <port_id> " + +1712 . + gtoks + = { + +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_fld0 +, + +1717 (*)& +cmd_£t_hash_put_£t_£Ëù +, + +1718 +NULL +, + +1722 +cmdle_·r£_¡_t + + gcmd_£t_hash_put_£t_2 + = { + +1723 . +f + = +cmd_£t_hash_put_£t_2_·r£d +, + +1724 . + gd©a + = +NULL +, + +1725 . + ghp_¡r + = "set_hash_input_set_2 <port_id> " + +1732 . + gtoks + = { + +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_fld0 +, + +1737 (*)& +cmd_£t_hash_put_£t_fld1 +, + +1738 (*)& +cmd_£t_hash_put_£t_£Ëù +, + +1739 +NULL +, + +1744 +cmdle_·r£_¡_t + + gcmd_£t_hash_put_£t_3 + = { + +1745 . +f + = +cmd_£t_hash_put_£t_3_·r£d +, + +1746 . + gd©a + = +NULL +, + +1747 . + ghp_¡r + = "set_hash_input_set_3 <port_id> " + +1757 . + gtoks + = { + +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_fld0 +, + +1762 (*)& +cmd_£t_hash_put_£t_fld1 +, + +1763 (*)& +cmd_£t_hash_put_£t_fld2 +, + +1764 (*)& +cmd_£t_hash_put_£t_£Ëù +, + +1765 +NULL +, + +1770 +cmdle_·r£_¡_t + + gcmd_£t_hash_put_£t_4 + = { + +1771 . +f + = +cmd_£t_hash_put_£t_4_·r£d +, + +1772 . + gd©a + = +NULL +, + +1773 . + ghp_¡r + = "set_hash_input_set_4 <port_id> " + +1782 . + gtoks + = { + +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_fld0 +, + +1787 (*)& +cmd_£t_hash_put_£t_fld1 +, + +1788 (*)& +cmd_£t_hash_put_£t_fld2 +, + +1789 (*)& +cmd_£t_hash_put_£t_fld3 +, + +1790 (*)& +cmd_£t_hash_put_£t_£Ëù +, + +1791 +NULL +, + +1795 +cmdle_·r£_¡_t + + gcmd_£t_hash_put_£t_5 + = { + +1796 . +f + = +cmd_£t_hash_put_£t_5_·r£d +, + +1797 . + gd©a + = +NULL +, + +1798 . + ghp_¡r + = "set_hash_input_set_5 <port_id> " + +1808 . + gtoks + = { + +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_fld0 +, + +1813 (*)& +cmd_£t_hash_put_£t_fld1 +, + +1814 (*)& +cmd_£t_hash_put_£t_fld2 +, + +1815 (*)& +cmd_£t_hash_put_£t_fld3 +, + +1816 (*)& +cmd_£t_hash_put_£t_fld4 +, + +1817 (*)& +cmd_£t_hash_put_£t_£Ëù +, + +1818 +NULL +, + +1824 + scmd_£t_hash_glob®_cÚfig_»suÉ + { + +1825 +cmdle_fixed_¡rg_t + + g£t_hash_glob®_cÚfig +; + +1826 +ut8_t + + gpÜt_id +; + +1827 +cmdle_fixed_¡rg_t + + ghash_func +; + +1828 +cmdle_fixed_¡rg_t + + gæow_ty³ +; + +1829 +cmdle_fixed_¡rg_t + + gabË +; + +1833 +cmd_£t_hash_glob®_cÚfig_·r£d +(* +·r£d_»suÉ +, + +1834 +__¹e_unu£d + +cmdle + * +þ +, + +1835 +__¹e_unu£d + * +d©a +) + +1837 +cmd_£t_hash_glob®_cÚfig_»suÉ + * + g»s + = +·r£d_»suÉ +; + +1838 +¹e_h_hash_fr_fo + + gfo +; + +1839 +ut32_t + + gáy³ +, + gidx +, + goff£t +; + +1840 + g»t +; + +1842 ià( +¹e_h_dev_fr_suµÜd +( +»s +-> +pÜt_id +, + +1843 +RTE_ETH_FILTER_HASH +) < 0) { + +1844 +´tf +("RTE_ETH_FILTER_HASHot supported on ort %d\n", + +1845 +»s +-> +pÜt_id +); + +1848 +mem£t +(& +fo +, 0, (info)); + +1849 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_GLOBAL_CONFIG +; + +1850 ià(! +¡rcmp +( +»s +-> +hash_func +, "toeplitz")) + +1851 + gfo +.fo. + gglob®_cÚf +. + ghash_func + = + +1852 +RTE_ETH_HASH_FUNCTION_TOEPLITZ +; + +1853 ià(! +¡rcmp +( +»s +-> +hash_func +, "simple_xor")) + +1854 + gfo +.fo. + gglob®_cÚf +. + ghash_func + = + +1855 +RTE_ETH_HASH_FUNCTION_SIMPLE_XOR +; + +1856 ià(! +¡rcmp +( +»s +-> +hash_func +, "default")) + +1857 + gfo +.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 + * ( +ut32_t +)); + +1862 + goff£t + = +áy³ + % ( +CHAR_BIT + * ( +ut32_t +)); + +1863 + gfo +.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 + gfo +.fo. + gglob®_cÚf +. + gsym_hash_abË_mask +[ +idx +] |= + +1867 (1UL << +off£t +); + +1868 + g»t + = +¹e_h_dev_fr_ù¾ +( +»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 +cmdle_·r£_tok_¡rg_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 +cmdle_·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 +cmdle_·r£_tok_¡rg_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 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_glob®_cÚfig_æow_ty³ + = + +1887 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1888 +æow_ty³ +, + +1891 +cmdle_·r£_tok_¡rg_t + + gcmd_£t_hash_glob®_cÚfig_abË + = + +1892 +TOKEN_STRING_INITIALIZER +( +cmd_£t_hash_glob®_cÚfig_»suÉ +, + +1893 +abË +, "enable#disable"); + +1895 +cmdle_·r£_¡_t + + gcmd_£t_hash_glob®_cÚfig + = { + +1896 . +f + = +cmd_£t_hash_glob®_cÚfig_·r£d +, + +1897 . + gd©a + = +NULL +, + +1898 . + ghp_¡r + = "set_hash_global_config ort_id " + +1903 . + gtoks + = { + +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 +cmdle_fixed_¡rg_t + + g£t_sym_hash_a_³r_pÜt +; + +1916 +cmdle_fixed_¡rg_t + + gabË +; + +1917 +ut8_t + + gpÜt_id +; + +1921 +cmd_£t_sym_hash_³r_pÜt_·r£d +(* +·r£d_»suÉ +, + +1922 +__¹e_unu£d + +cmdle + * +þ +, + +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_fr_fo + + gfo +; + +1927 + g»t +; + +1929 ià( +¹e_h_dev_fr_suµÜd +( +»s +-> +pÜt_id +, + +1930 +RTE_ETH_FILTER_HASH +) < 0) { + +1931 +´tf +("RTE_ETH_FILTER_HASHot supported on ort: %d\n", + +1932 +»s +-> +pÜt_id +); + +1936 +mem£t +(& +fo +, 0, (info)); + +1937 + gfo +. + gfo_ty³ + = +RTE_ETH_HASH_FILTER_SYM_HASH_ENA_PER_PORT +; + +1939 ià(! +¡rcmp +( +»s +-> +abË +, "enable")) + +1940 + gfo +.fo. + gabË + = 1; + +1942 + g»t + = +¹e_h_dev_fr_ù¾ +( +»s +-> +pÜt_id +, +RTE_ETH_FILTER_HASH +, + +1943 +RTE_ETH_FILTER_SET +, & +fo +); + +1944 ià( + g»t + < 0) { + +1945 +´tf +("Cannot set symmetric hashnable er ort on " + +1946 "pÜ%u\n", +»s +-> +pÜt_id +); + +1949 +´tf +("Symmetric hash has been seto %s on ort %u\n", + +1950 +»s +-> +abË +,es-> +pÜt_id +); + +1953 +cmdle_·r£_tok_¡rg_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 +cmdle_·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 +cmdle_·r£_tok_¡rg_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 +cmdle_·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 . + ghp_¡r + = "set_sym_hash_ena_per_port ort_idnable|disable", + +1967 . + gtoks + = { + +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_pe_¬picmp_y_dbg +( +p_·¿ms + * +p +, + +1978 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +1980 +pe_¬picmp_y_dbg_msg_»q + * + g»q +; + +1981 +pe_¬picmp_y_dbg_msg_r¥ + * + gr¥ +; + +1984 ià( + gp + =ð +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 +, +pe_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 +cmdle_fixed_¡rg_t + + gp_¡rg +; + +2021 +ut32_t + + gp +; + +2022 +cmdle_fixed_¡rg_t + + gy_¡rg +; + +2023 +cmdle_fixed_¡rg_t + + gdbg_¡rg +; + +2024 +ut8_t + + gcmd +; + +2025 +ut8_t + + gd1 +; + +2029 +cmd_y_dbg_·r£d +(* +·r£d_»suÉ +, + +2030 +__¹e_unu£d + +cmdle + * +þ +, * +d©a +) + +2032 +cmd_y_dbg_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +2033 +p_·¿ms + * + gp + = +d©a +; + +2034 +ut8_t + + gmsg +[2]; + +2035 + g¡©us +; + +2037 + gmsg +[0] = +·¿ms +-> +cmd +; + +2038 + gmsg +[1] = +·¿ms +-> +d1 +; + +2039 + g¡©us + = +p_pe_¬picmp_y_dbg +( +p +, +·¿ms +-> +p +, +msg +); + +2041 ià( + g¡©us + != 0) { + +2042 +´tf +("Dbg Command failed\n"); + +2047 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_p_¡rg + = + +2048 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p_¡rg +, "p"); + +2050 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_p + = + +2051 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p +, +UINT32 +); + +2053 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_y_¡rg + = + +2054 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, + +2055 +y_¡rg +, "txrx"); + +2057 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_dbg_¡rg + = + +2058 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +dbg_¡rg +, + +2061 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_cmd + = + +2062 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +cmd +, +UINT8 +); + +2064 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_d1 + = + +2065 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +d1 +, +UINT8 +); + +2067 +cmdle_·r£_¡_t + + glb_cmd_y_dbg + = { + +2068 . +f + = +cmd_y_dbg_·r£d +, + +2069 . + gd©a + = +NULL +, + +2070 . + ghp_¡r + = "ARPICMP dbg cmd", + +2071 . + gtoks + = { + +2072 (*)& +lb_cmd_y_dbg_p_¡rg +, + +2073 (*)& +lb_cmd_y_dbg_p +, + +2074 (*)& +lb_cmd_y_dbg_y_¡rg +, + +2075 (*)& +lb_cmd_y_dbg_dbg_¡rg +, + +2076 (*)& +lb_cmd_y_dbg_cmd +, + +2077 (*)& +lb_cmd_y_dbg_d1 +, + +2078 +NULL +, + +2082 +cmdle_·r£_ùx_t + + gpe_cmds +[] = { + +2083 ( +cmdle_·r£_¡_t + *è& +lb_cmd_y_dbg +, + +2084 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_add +, + +2085 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_d +, + +2086 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_»q +, + +2087 ( +cmdle_·r£_¡_t + *è& +cmd_icmp_echo_»q +, + +2088 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_ls +, + +2089 ( +cmdle_·r£_¡_t + *è& +cmd_show_pÜts_fo +, + +2091 ( +cmdle_·r£_¡_t + *è& +cmd_£t_fwd_mode +, + +2092 ( +cmdle_·r£_¡_t + *è& +cmd_add_d_udp_æow_deùÜ +, + +2093 ( +cmdle_·r£_¡_t + *è& +cmd_add_d_l2_æow_deùÜ +, + +2094 ( +cmdle_·r£_¡_t + *è& +cmd_£t_hash_put_£t_1 +, + +2095 ( +cmdle_·r£_¡_t + *è& +cmd_£t_hash_put_£t_2 +, + +2097 ( +cmdle_·r£_¡_t + *è& +cmd_£t_hash_put_£t_4 +, + +2099 ( +cmdle_·r£_¡_t + *è& +cmd_£t_hash_glob®_cÚfig +, + +2100 ( +cmdle_·r£_¡_t + *è& +cmd_£t_sym_hash_a_³r_pÜt +, + +2101 #iâdeà +VNF_ACL + + +2102 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_dbg +, + +2103 ( +cmdle_·r£_¡_t + *è& +cmd_¬p_tim +, + +2105 +NULL +, + +2108 +pe_ã_Ýs + + gpe_¬picmp_ã_Ýs + = { + +2109 . +f_ + = +NULL +, + +2110 . + gf_ä + = +NULL +, + +2111 . + gcmds + = +pe_cmds +, + +2114 +pe_ty³ + + gpe_¬picmp + = { + +2115 . +Çme + = "ARPICMP", + +2116 . + gbe_Ýs + = & +pe_¬picmp_be_Ýs +, + +2117 . + gã_Ýs + = & +pe_¬picmp_ã_Ýs +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp.h + +17 #iâdeà +__INCLUDE_PIPELINE_ARPICMP_H__ + + +18 + #__INCLUDE_PIPELINE_ARPICMP_H__ + + + ) + +20 + ~"pe.h +" + +21 + ~"pe_¬picmp_be.h +" + +26 +pe_ty³ + +pe_¬picmp +; + +28 + #MAX_PKT_BURST + 512 + + ) + +29 + #DEF_PKT_BURST + 32 + + ) + +32 +ut8_t + + tpÜtid_t +; + +33 +ut16_t + + tqueueid_t +; + +34 +ut16_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_·cks +; + +56 + mtx_·cks +; + +58 + mfwd_drݳd +; + +60 + mrx_bad__csum +; + +62 + mrx_bad_l4_csum +; + +63 #ifdeà +RTE_TEST_PMD_RECORD_CORE_CYCLES + + +64 +ut64_t + + 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_ge + { + +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 +). +çmy + =ð +AF_INET +) \ + +102 ( + +èð( +_addr +). +addr +. +v4 +. +s_addr +; \ + +104 + `´tf +("invalid arameter.\n"); \ + +107 + } +} 0) + + ) + +109 + #IPV6_ADDR_TO_ARRAY +( +_addr +, + +) \ + +111 ià(( +_addr +). +çmy + =ð +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¬dg_mode +(cÚ¡ * +fwd_mode_Çme +); + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.c + +17 + ~<¡rg.h +> + +19 + ~<¡dio.h +> + +20 + ~<¡dlib.h +> + +21 + ~<¡dt.h +> + +22 + ~<¡rg.h +> + +23 + ~<uni¡d.h +> + +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_pe.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 + ~"pe_aùiÚs_commÚ.h +" + +40 + ~"hash_func.h +" + +41 + ~"vnf_commÚ.h +" + +42 + ~"pe_commÚ_be.h +" + +43 + ~"pe_¬picmp_be.h +" + +44 + ~"·r£r.h +" + +45 + ~"hash_func.h +" + +46 + ~"vnf_commÚ.h +" + +47 + ~"p.h +" + +49 + ~"pe_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 +ut8_t + + gvnf_commÚ_¬p_lib_ +; + +77 +ut8_t + + gvnf_commÚ_nd_lib_ +; + +78 +ut8_t + + glßdb_pe_couÁ +; + +80 +ut32_t + + gARPICMP_DEBUG +; + +81 +ut32_t + + gNDIPV6_DEBUG +; + +83 +ut32_t + + g¬p_rou_tbl_dex +; + +84 +ut32_t + + gnd_rou_tbl_dex +; + +85 +ut32_t + + glk_hw_addr_¬¿y_idx +; + +87 +ut32_t + + glib_¬p_g_mac_»q +; + +88 +ut32_t + + glib_¬p_nh_found +; + +89 +ut32_t + + glib_¬p_no_nh_found +; + +90 +ut32_t + + glib_¬p_¬p_y_found +; + +91 +ut32_t + + glib_¬p_no_¬p_y_found +; + +92 +ut32_t + + glib_¬p_pÝuÏ_ÿÎed +; + +93 +ut32_t + + glib_¬p_de_ÿÎed +; + +94 +ut32_t + + glib_¬p_du¶iÿ_found +; + +96 +ut32_t + + glib_nd_g_mac_»q +; + +97 +ut32_t + + glib_nd_nh_found +; + +98 +ut32_t + + glib_nd_no_nh_found +; + +99 +ut32_t + + glib_nd_nd_y_found +; + +100 +ut32_t + + glib_nd_no_¬p_y_found +; + +101 +ut32_t + + glib_nd_pÝuÏ_ÿÎed +; + +102 +ut32_t + + glib_nd_de_ÿÎed +; + +103 +ut32_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_·¿ms + + g¬p_hash_·¿ms + = { + +112 . +Çme + = "ARP", + +113 . + gs + = 64, + +114 . + g»£rved + = 0, + +115 . + gkey_Ën + = ( +¬p_key_v4 +), + +116 . + ghash_func + = +¹e_jhash +, + +117 . + ghash_func__v® + = 0, + +120 +¹e_hash_·¿ms + + gnd_hash_·¿ms + = { + +121 . +Çme + = "ND", + +122 . + gs + = 64, + +123 . + 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_pe + * + gmyP +; + +136 +pe_¬picmp + * + ggp_¬p +; + +137 +ut8_t + + gnum_vnf_th»ads +; + +139 #ifdeà +VNF_ACL + + +141 + s¬p_pÜt_add»ss + { + +142 +ut32_t + + m +; + +143 +ut64_t + + mmac_addr +; + +146 +¬p_pÜt_add»ss + + g¬p_pÜt_add»s£s +[ +RTE_MAX_ETHPORTS +]; + +148 +ut16_t + + g¬p_ma_off£t +; + +151 + spe_¬picmp + { + +152 +pe + + mp +; + +153 +pe_msg_»q_hªdËr + + +154 + mcu¡om_hªdËrs +[ +PIPELINE_ARPICMP_MSG_REQS +]; + +155 +ut64_t + + m»ûivedPktCouÁ +; + +156 +ut64_t + + mdrݳdPktCouÁ +; + +157 +ut64_t + + m£ÁPktCouÁ +; + +158 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +159 +ut8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +160 +ut8_t + + mpe_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 + $pes_pÜt_fo +() + +229 +p_·¿ms + * +p + = +myAµ +; + +230 +ut8_t + +i +, +pe +; + +231 +pe + = 0; < +p +-> +n_pes +; ipeline++) { + +232 + `´tf +("*** PIPELINE %d ***\n\n", +pe +); + +234 + `´tf +("*** OUTPORTs ***\n"); + +235 +i + = 1; i < +p +-> +pe_·¿ms +[ +pe +]. +n_pktq_out +; + +236 +i +++) { + +237 +p +-> +pe_·¿ms +[ +pe +]. +pktq_out +[ +i +]. + +238 +ty³ +) { + +239 +APP_PKTQ_OUT_SWQ +: + +240 + `´tf +("pktq_out[%d]:%s\n", +i +, + +241 +p +-> +swq_·¿ms +[p-> +pe_·¿ms + + +242 [ +pe +]. + +243 +pktq_out +[ +i +]. +id +]. +Çme +); + +245 +APP_PKTQ_OUT_HWQ +: + +246 + `´tf +("pktq_out[%d]:%s\n", +i +, + +247 +p +-> +hwq_out_·¿ms +[p-> +pe_·¿ms + + +248 [ +pe +]. +pktq_out + + +249 [ +i +]. +id +]. +Çme +); + +252 + `´tf +("Not OUT SWQ or HWQ\n"); + +255 + `´tf +("*** INPORTs ***\n"); + +256 +i + = 0; i < +p +-> +pe_·¿ms +[ +pe +]. +n_pktq_ +; i++) { + +257 +p +-> +pe_·¿ms +[ +pe +]. +pktq_ +[ +i +] + +258 . +ty³ +) { + +259 +APP_PKTQ_IN_SWQ +: + +260 + `´tf +("pktq_[%d]:%s\n", +i +, + +261 +p +-> +swq_·¿ms +[p-> +pe_·¿ms + + +262 [ +pe +]. + +263 +pktq_ +[ +i +]. +id +]. +Çme +); + +265 +APP_PKTQ_IN_HWQ +: + +266 + `´tf +("pktq_[%d]:%s\n", +i +, + +267 +p +-> +hwq__·¿ms +[p-> +pe_·¿ms + + +268 [ +pe +]. + +269 +pktq_ +[ +i +]. +id +]. +Çme +); + +272 + `´tf +("Not IN SWQ or HWQ\n"); + +276 + } +} + +278 + $pes_m_fo +() + +280 +i + = 0; + +282 + `´tf +("PIPELINE_MAX_PORT_IN %d\n", +PIPELINE_MAX_PORT_IN +); + +283 + `´tf +("lb_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_pe_nums[%d", +lßdb_pe_nums +[0]); + +299 +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +300 + `´tf +(",%d", +lßdb_pe_nums +[ +i +]); + +301 + `´tf +("]\n"); + +303 + `´tf +("lßdb_pe[%p", +lßdb_pe +[0]); + +304 +i + = 1; i < +PIPELINE_MAX_PORT_IN +; i++) + +305 + `´tf +(",%p", +lßdb_pe +[ +i +]); + +306 + `´tf +("]\n"); + +307 + } +} + +309 + $»gi¡_pe_Qs +( +ut8_t + +pe_num +, +pe + * +p +) + +311 +¹e_pÜt_hdev_»ad + * +hwq +; + +312 +¹e_pÜt_rg_wr + * +out_swq +; + +313 +¹e_pÜt_rg_»ad + * +_swq +; + +314 +¹e_pe + * +¹e + = +p +->p; + +315 +ut8_t + +pÜt_couÁ + = 0; + +316 +queue_out + = 0xff, +queue_ + = 0xff; + +318 + `´tf +("C®lgegi¡_pe_Q PIPELINE%d\n", +pe_num +); + +319 +pÜt_couÁ + = 0; Üt_couÁ < +¹e +-> +num_pÜts_out +; ort_count++) { + +321 +myAµ +-> +pe_·¿ms +[ +pe_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 +-> +rg +-> +Çme +); + +339 +¡©us + = + +340 + `ssÿnf +( +_swq +-> +rg +-> +Çme +, "SWQ%d", + +341 & +queue_ +); + +342 ià( +¡©us + < 0) { + +343 + `´tf +("Unableoead SWQumber\n"); + +346 + `´tf +("out_swq: %s\n", + +347 +out_swq +-> +rg +-> +Çme +); + +348 +¡©us + = + +349 + `ssÿnf +( +out_swq +-> +rg +-> +Çme +, "SWQ%d", + +350 & +queue_out +); + +351 ià( +¡©us + < 0) { + +352 + `´tf +("Unableoead SWQumber\n"); + +355 ià( +queue_ + < 128 && +queue_out + < 128) { + +356 +SWQ_to_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µ +-> +pe_·¿ms +[ +pe_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 +-> +rg +-> +Çme +); + +372 +¡©us + = + +373 + `ssÿnf +( +out_swq +-> +rg +-> +Çme +, "SWQ%d", + +374 & +queue_out +); + +376 ià( +¡©us + < 0) { + +377 + `´tf +("Unableoead SWQumber\n"); + +380 ià( +queue_out + < 128) { + +381 +SWQ_to_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 +-> +rg +-> +Çme +); + +392 +¡©us + = + +393 + `ssÿnf +( +_swq +-> +rg +-> +Çme +, "SWQ%d", + +394 & +queue_ +); + +395 ià( +¡©us + < 0) { + +396 + `´tf +("Unableoead SWQumber\n"); + +399 + `´tf +("out_swq: %s\n", + +400 +out_swq +-> +rg +-> +Çme +); + +401 +¡©us + = + +402 + `ssÿnf +( +out_swq +-> +rg +-> +Çme +, "SWQ%d", + +403 & +queue_out +); + +404 ià( +¡©us + < 0) { + +405 + `´tf +("Unableoead SWQumber\n"); + +408 ià( +queue_ + < 128 && +queue_out + < 128){ + +409 +SWQ_to_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 +("Thisever hits\n"); + +422 +APP_PKTQ_OUT_HWQ +: + +423 + `´tf +("This is HWQ\n"); + +427 + `´tf +("set_phy_outport_map: Thisever hits\n"); + +430 + } +} + +432 + $£t_lk_m +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +) + +434 +¹e_pÜt_hdev_wr + * +hwq +; + +435 +¹e_pÜt_rg_wr + * +out_swq +; + +436 +¹e_pe + * +¹e + = +p +->p; + +438 +ut8_t + +pÜt_couÁ + = 0; + +439 +dex + = 0, +queue_out + = 0xff; + +441 + `´tf +("C®lg s_lk_m iÀPIPELINE%d\n", +pe_num +); + +442 +pÜt_couÁ + = 0; Üt_couÁ < +¹e +-> +num_pÜts_out +; ort_count++) { + +444 +myAµ +-> +pe_·¿ms +[ +pe_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 +("lks_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 +-> +rg +-> +Çme +); + +457 +¡©us + = + `ssÿnf +( +out_swq +-> +rg +-> +Çme +, "SWQ%d", + +458 & +queue_out +); + +459 ià( +¡©us + < 0) { + +460 + `´tf +("Unableoead SWQumber\n"); + +464 ià( +queue_out + < 128) { + +465 +m +[ +dex +++] = +SWQ_to_PÜt_m +[ +queue_out +]; + +466 + `´tf +("lks_m[%s]:%d\n", +out_swq +-> +rg +-> +Çme +, + +467 +m +[ +dex + - 1]); + +472 + `´tf +("set_phy_outport_map: Thisever hits\n"); + +475 + } +} + +477 + $£t_ouÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +) + +479 +ut8_t + +pÜt_couÁ + = 0; + +480 +queue_out + = 0xff, +dex + = 0; + +482 +¹e_pÜt_hdev_wr + * +hwq +; + +483 +¹e_pÜt_rg_wr + * +out_swq +; + +484 +¹e_pe + * +¹e + = +p +->p; + +486 + `´tf +("\n**** set_outport_id() with ipeline_num:%d ****\n\n", + +487 +pe_num +); + +488 +pÜt_couÁ + = 0; + +489 +pÜt_couÁ + < +¹e +-> +num_pÜts_out +; + +490 +pÜt_couÁ +++) { + +492 +myAµ +-> +pe_·¿ms +[ +pe_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 +-> +rg +-> +Çme +); + +520 +mp + = + `ssÿnf +( +out_swq +-> +rg +-> +Çme +, "SWQ%d", + +521 & +queue_out +); + +522 ià( +mp + < 0) { + +523 + `´tf +("Unableoead SWQumber\n"); + +527 ià( +queue_out + < 128 && +dex + >= 0) { + +528 +m +[ +SWQ_to_PÜt_m +[ +queue_out +]] = +dex +++; + +529 + `´tf +("ouÜt_id[%s]:%d\n", +out_swq +-> +rg +-> +Çme +, + +530 +m +[ +SWQ_to_PÜt_m +[ +queue_out +]]); + +535 + `´tf +(" "); + +539 + } +} + +541 + $£t_phy_ouÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +) + +543 +ut8_t + +pÜt_couÁ + = 0; + +544 +dex + = 0; + +546 +¹e_pÜt_hdev_wr + * +hwq +; + +547 +¹e_pe + * +¹e + = +p +->p; + +549 + `´tf +("\n**** set_phy_outport_id() with ipeline_num:%d ****\n\n", + +550 +pe_num +); + +551 +pÜt_couÁ + = 0; + +552 +pÜt_couÁ + < +myAµ +-> +pe_·¿ms +[ +pe_num +]. +n_pktq_out +; + +553 +pÜt_couÁ +++) { + +555 +myAµ +-> +pe_·¿ms +[ +pe_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 +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +) + +574 +ut8_t + +pÜt_couÁ + = 0; + +575 +dex + = 0; + +577 +¹e_pÜt_hdev_»ad + * +hwq +; + +578 +¹e_pe + * +¹e + = +p +->p; + +580 + `´tf +("\n**** set_phy_inport_id() with ipeline_num:%d ****\n\n", + +581 +pe_num +); + +582 +pÜt_couÁ + = 0; + +583 +pÜt_couÁ + < +myAµ +-> +pe_·¿ms +[ +pe_num +]. +n_pktq_ +; + +584 +pÜt_couÁ +++) { + +586 +myAµ +-> +pe_·¿ms +[ +pe_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 +ut32_t + + $g_nh +( +ut32_t + + +, ut32_* +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 +("Noh 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 +( +ut8_t + +v6 +[], +ut32_t + * +pÜt +, ut8_ +nhv6 +[]) + +636 +i + = 0; + +637 +ut8_t + +Ãtmask_v6 +[16], +Ãt_nd +[16], +Ãt_ +[16]; + +638 +ut8_t + +k + = 0, +l + = 0, +dthæags + = 0, +dthæ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Úvt_´efixËn_to_Ãtmask_v6 +( + +647 +lib_nd_rou_bË +[ +i +]. +dth +, + +648 +Ãtmask_v6 +); + +650 +k + = 0; k < 16; k++) { + +651 ià( +lib_nd_rou_bË +[ +i +]. +v6 +[ +k +] & +Ãtmask_v6 +[k]) { + +652 +dthæags +++; + +653 +Ãt_nd +[ +k +] = +lib_nd_rou_bË +[ +i +]. +v6 +[k]; + +657 +l + = 0; < 16;++) { + +658 ià( +v6 +[ +l +] & +Ãtmask_v6 +[l]) { + +659 +dthæags1 +++; + +660 +Ãt_ +[ +l +] = +v6 +[l]; + +663 +j + = 0; + +664 ià(( +dthæags + =ð +dthæ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 +nhv6 +[ +j +] = +lib_nd_rou_bË +[ +i +].nhipv6[j]; + +677 ià( +NDIPV6_DEBUG + > 1) + +678 + `´tf +("Noh match\n"); + +679 +dthæags + = 0; + +680 +dthæ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Ú¡ +ut32_t + +addr +, + +689 +ut32_t + * +phy_pÜt +, +h_addr + * +hw_addr +) + +691 +lib_¬p_g_mac_»q +++; + +692 +ut32_t + +nh + = 0; + +694 +nh + = + `g_nh +( +addr +, +phy_pÜt +); + +695 ià( +nh + == 0) { + +696 ià( +ARPICMP_DEBUG + && +addr +) + +697 + `´tf +("ARPICMPoh 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 +( +ut8_t + +v6addr +[], +ut32_t + +phy_pÜt +, + +726 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +728 +i + = 0, +j + = 0, +æag + = 0; + +729 +lib_nd_g_mac_»q +++; + +731 ià( +v6addr +) + +732 + `g_nh_v6 +( +v6addr +, & +phy_pÜt +, +nhv6 +); + +733 +j + = 0; j < 16; j++) { + +734 ià( +nhv6 +[ +j +]) + +735 +æag +++; + +737 ià( +æag + == 0) { + +738 ià( +v6addr +) { + +739 ià( +NDIPV6_DEBUG + && +v6addr +) + +740 + `´tf +("NDIPV6oh found for ipv6 " + +743 +v6addr +[0], ipv6addr[1], ipv6addr[2], ipv6addr[3], + +744 +v6addr +[4], ipv6addr[5], ipv6addr[6], ipv6addr[7], + +745 +v6addr +[8], ipv6addr[9], ipv6addr[10], + +746 +v6addr +[11], ipv6addr[12], ipv6addr[13], + +747 +v6addr +[14], ipv6addr[15], +phy_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 +] = +nhv6 +[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 +("NDIPV6odntry 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 +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +776 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]) + +778 +i + = 0, +j + = 0, +æag + = 0; + +779 +lib_nd_g_mac_»q +++; + +781 + `g_nh_v6 +( +v6addr +, +phy_pÜt +, +nhv6 +); + +782 +j + = 0; j < 16; j++) { + +783 ià( +nhv6 +[ +j +]) + +784 +æag +++; + +786 ià( +æag + == 0) { + +787 ià( +NDIPV6_DEBUG + && +v6addr +) + +788 + `´tf +("NDIPV6oh found for ipv6 " + +791 +v6addr +[0], ipv6addr[1], ipv6addr[2], ipv6addr[3], + +792 +v6addr +[4], ipv6addr[5], ipv6addr[6], ipv6addr[7], + +793 +v6addr +[8], ipv6addr[9], ipv6addr[10], + +794 +v6addr +[11], ipv6addr[12], ipv6addr[13], + +795 +v6addr +[14], ipv6addr[15], * +phy_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 +] = +nhv6 +[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 +("NDIPV6odntry 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_pe_bË_y + + mhd +; + +826 +ut64_t + + mmaÿddr +; + +829 cÚ¡ * + $¬p_Ý_Çme +( +ut16_t + +¬p_Ý +) + +831 + `CHECK_ENDIAN_16 +( +¬p_Ý +)) { + +832 ( +ARP_OP_REQUEST +): + +834 ( +ARP_OP_REPLY +): + +836 ( +ARP_OP_REVREQUEST +): + +838 ( +ARP_OP_REVREPLY +): + +840 ( +ARP_OP_INVREQUEST +): + +842 ( +ARP_OP_INVREPLY +): + +848 + } +} + +850 + $´t_icmp_·ck +( +icmp_hdr + * +icmp_h +) + +852 + `´tf +(" ICMP:ype=%d (%s) code=%d id=%d seqnum=%d\n", + +853 +icmp_h +-> +icmp_ty³ +, + +854 ( +icmp_h +-> +icmp_ty³ + =ð +IP_ICMP_ECHO_REPLY + ? "Reply" : + +855 ( +icmp_h +-> +icmp_ty³ + == + +856 +IP_ICMP_ECHO_REQUEST + ? "Reqe¡" : "Undef")), +icmp_h +-> +icmp_code +, + +857 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_idt +), + +858 + `CHECK_ENDIAN_16 +( +icmp_h +-> +icmp_£q_nb +)); + +859 + } +} + +861 + $´t_v4_h +( +v4_hdr + * +_h +) + +863 +icmp_hdr + * +icmp_h + = + +864 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +865 + `´tf +(" IPv4: Version=%d HLEN=%d Type=%d Length=%d\n", + +866 ( +_h +-> +vsiÚ_ihl + & 0xf0) >> 4, (ip_h->version_ihl & 0x0f), + +867 +_h +-> +ty³_of_£rviû +, + `¹e_ýu_to_be_16 +(_h-> +tÙ®_Ëngth +)); + +868 ià( +_h +-> +Ãxt_´Ùo_id + =ð +IPPROTO_ICMP +) + +869 + `´t_icmp_·ck +( +icmp_h +); + +870 + } +} + +872 + $´t_¬p_·ck +( +¬p_hdr + * +¬p_h +) + +874 + `´tf +(" ARP: hrd=%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 +("incorrectrp_hrd format for IPv4 ARP (%d)\n", + +883 ( +¬p_h +-> +¬p_hrd +)); + +884 } ià( + `CHECK_ENDIAN_16 +( +¬p_h +-> +¬p_´o +è!ð +ETHER_TYPE_IPv4 +) { + +885 + `´tf +("incorrectrp_pro format for IPv4 ARP (%d)\n", + +886 ( +¬p_h +-> +¬p_´o +)); + +887 } ià( +¬p_h +-> +¬p_hÊ + != 6) { + +888 + `´tf +("incorrectrp_hln format for IPv4 ARP (%d)\n", + +889 +¬p_h +-> +¬p_hÊ +); + +890 } ià( +¬p_h +-> +¬p_¶n + != 4) { + +891 + `´tf +("incorrectrp_pln format for IPv4 ARP (%d)\n", + +892 +¬p_h +-> +¬p_¶n +); + +895 + `´tf +(" sha=%02X:%02X:%02X:%02X:%02X:%02X", + +896 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[0], + +897 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[1], + +898 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[2], + +899 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[3], + +900 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[4], + +901 +¬p_h +-> +¬p_d©a +. +¬p_sha +. +addr_bys +[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_bys +[0], + +909 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[1], + +910 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[2], + +911 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[3], + +912 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[4], + +913 +¬p_h +-> +¬p_d©a +. +¬p_tha +. +addr_bys +[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_bys +[0], + +926 +h_h +-> +s_addr +. +addr_bys +[1], + +927 +h_h +-> +s_addr +. +addr_bys +[2], + +928 +h_h +-> +s_addr +. +addr_bys +[3], + +929 +h_h +-> +s_addr +. +addr_bys +[4],th_h->s_addr.addr_bytes[5]); + +930 + `´tf +(" dst=%02X:%02X:%02X:%02X:%02X:%02X\n", + +931 +h_h +-> +d_addr +. +addr_bys +[0], + +932 +h_h +-> +d_addr +. +addr_bys +[1], + +933 +h_h +-> +d_addr +. +addr_bys +[2], + +934 +h_h +-> +d_addr +. +addr_bys +[3], + +935 +h_h +-> +d_addr +. +addr_bys +[4],th_h->d_addr.addr_bytes[5]); + +937 + } +} + +940 + $´t_mbuf +(cÚ¡ * +rx_tx +, +pÜtid +, +¹e_mbuf + * +mbuf +, + +941 +le +) + +943 +h_hdr + * +h_h + = + `¹e_pktmbuf_mtod +( +mbuf +, ether_hdr *); + +944 +¬p_hdr + * +¬p_h + = + +945 ( +¬p_hdr + *)((*) +h_h + + ( +h_hdr +)); + +946 +v4_hdr + * +v4_h + = + +947 ( +v4_hdr + *)((*) +h_h + + ( +h_hdr +)); + +949 + `´tf +("%s(%d): on ort %d kt-len=%ub-segs=%u\n", + +950 +rx_tx +, +le +, +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 acketype\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-hashookup failedet %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:oookup 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 +ut32_t + + + = 0; + +1021 + `´tf +("\tport hwddr status ipddr\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_bys +[0], + +1033 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[1], + +1034 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[2], + +1035 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[3], + +1036 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[4], + +1037 +tmp_¬p_d©a +-> +h_addr +. +addr_bys +[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 +ut32_t + +i + = 0; + +1047 + `´tf +("\nARPoutgabË ha %dÁrs\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_de_ÿÎed +, + +1061 +lib_¬p_du¶iÿ_found +); + +1063 + `´tf +("ARPabË key i %lu\n", ( +¬p_key_v4 +)); + +1064 + } +} + +1067 + $´t_nd_bË +() + +1069 cÚ¡ * +Ãxt_key +; + +1070 * +Ãxt_d©a +; + +1071 +ut32_t + + + = 0; + +1072 +ut8_t + +ii + = 0, +j + = 0, +k + = 0; + +1074 + `´tf +("\tport hwddr status ipddr\n"); + +1076 + `¹e_hash_©e +( +nd_hash_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_bys +[0], + +1086 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[1], + +1087 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[2], + +1088 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[3], + +1089 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[4], + +1090 +tmp_nd_d©a +-> +h_addr +. +addr_bys +[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 +ut32_t + +i + = 0; + +1102 + `´tf +("\n\nND IPV6outingable has %dntries\n", + +1103 +nd_rou_tbl_dex +); + +1104 + `´tf +("\nIP_Address Depth Port NH_IP_Address\n"); + +1105 +i + = 0; i < +nd_rou_tbl_dex +; i++) { + +1106 + `´tf +("\n"); + +1108 +j + = 0; j < +ND_IPV6_ADDR_SIZE +; j += 2) { + +1109 + `´tf +("%02X%02X ", +lib_nd_rou_bË +[ +i +]. +v6 +[ +j +], + +1110 +lib_nd_rou_bË +[ +i +]. +v6 +[ +j + + 1]); + +1113 +´tf + + +1115 +lib_nd_rou_bË +[ +i +]. +dth +,ib_nd_rou_bË[i]. +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 +]. +nhv6 +[ +k +], + +1119 +lib_nd_rou_bË +[ +i +]. +v6 +[ +k + + 1]); + +1122 + `´tf +("\nND IPV6 Stats:\nTotal Queries %u, ok_NH %u,o_NH %u," + +1124 +lib_nd_g_mac_»q +, +lib_nd_nh_found +, +lib_nd_no_nh_found +, + +1125 +lib_nd_nd_y_found +, +lib_nd_no_¬p_y_found +, + +1126 +lib_nd_pÝuÏ_ÿÎed +, +lib_nd_de_ÿÎed +, + +1127 +lib_nd_du¶iÿ_found +); + +1128 + `´tf +("NDabË key i %lu\n\n", ( +nd_key_v6 +)); + +1129 + } +} + +1131 + $»move_¬p_y +( +ut32_t + +addr +, +ut8_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_de_ÿÎ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 +( +ut8_t + +v6addr +[], ut8_ +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_de_ÿÎed +++; + +1170 ià( +NDIPV6_DEBUG +) { + +1171 + `´tf +("Deleteste hashabledntry 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 +, +ut32_t + +addr +, + +1181 +ut8_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_yxi¡ %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_bys +[0], + +1224 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[1], + +1225 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[2], + +1226 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[3], + +1227 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[4], + +1228 +Ãw_¬p_d©a +-> +h_addr +. +addr_bys +[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 +, +ut8_t + +v6 +[], + +1246 +ut8_t + +pÜtid +) + +1251 +ut8_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_entryxists 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_entryxists\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 airtte hashable " + +1320 ià( +NDIPV6_DEBUG +) { + +1322 + `´tf +("\tND:able update - hwaddr= " + +1324 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[0], + +1325 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[1], + +1326 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[2], + +1327 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[3], + +1328 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[4], + +1329 +Ãw_nd_d©a +-> +h_addr +. +addr_bys +[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 +ut8_t + * +rd + = + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, 0); + +1347 +i + = 0, +j + = 0; + +1348 + `´tf +("\nPacket Contents...\n"); + +1349 +i + = 0; i < 20; i++) { + +1350 +j + = 0; j < 20; j++) + +1351 + `´tf +("%02x ", +rd +[(20 * +i +è+ +j +]); + +1352 + `´tf +("\n"); + +1354 + } +} + +1356 +h_addr + + gbrßdÿ¡_h_addr + = { + +1357 . +addr_bys +[0] = 0xFF, + +1358 . + gaddr_bys +[1] = 0xFF, + +1359 . + gaddr_bys +[2] = 0xFF, + +1360 . + gaddr_bys +[3] = 0xFF, + +1361 . + gaddr_bys +[4] = 0xFF, + +1362 . + gaddr_bys +[5] = 0xFF, + +1365 cÚ¡ +h_addr + + gnuÎ_h_addr + = { + +1366 . +addr_bys +[0] = 0x00, + +1367 . + gaddr_bys +[1] = 0x00, + +1368 . + gaddr_bys +[2] = 0x00, + +1369 . + gaddr_bys +[3] = 0x00, + +1370 . + gaddr_bys +[4] = 0x00, + +1371 . + gaddr_bys +[5] = 0x00, + +1374 + #MAX_NUM_MAC_ADDRESS + 16 + + ) + +1375 +h_addr + + glk_hw_addr +[ +MAX_NUM_MAC_ADDRESS +] = { + +1376 {. +addr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc8} }, + +1377 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1378 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1379 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1380 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1381 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1382 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1383 {. + gaddr_bys + = {0x90, 0xe2, 0xba, 0x54, 0x67, 0xc9} }, + +1384 {. + gaddr_bys + = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11} }, + +1385 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1386 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1387 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1388 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1389 {. + gaddr_bys + = {0x12, 0x13, 0x14, 0x15, 0x16, 0x17} }, + +1390 {. + gaddr_bys + = {0x22, 0x33, 0x44, 0x55, 0x66, 0x77} }, + +1391 {. + gaddr_bys + = {0x18, 0x19, 0x1a, 0x1b, 0xcd, 0xef} } + +1394 +h_addr + * + $g_lk_hw_addr +( +ut8_t + +out_pÜt +) + +1396 & +lk_hw_addr +[ +out_pÜt +]; + +1397 + } +} + +1400 + $»que¡_icmp_echo +( +pÜt_id +, +ut32_t + + +, +h_addr + * +gw_addr +) + +1402 +h_hdr + * +h_h +; + +1403 +v4_hdr + * +_h +; + +1404 +icmp_hdr + * +icmp_h +; + +1406 +p_lk_·¿ms + * +lk +; + +1407 +lk + = & +myAµ +-> +lk_·¿ms +[ +pÜt_id +]; + +1408 +¬p_pÜt_add»s£s +[ +pÜt_id +]. + + = +lk +->ip; + +1409 +¬p_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lk +->mac_addr; + +1411 +¹e_mbuf + * +icmp_pkt + = +lib_¬p_pkt +; + +1412 ià( +icmp_pkt + =ð +NULL +) { + +1413 ià( +ARPICMP_DEBUG +) + +1414 + `´tf +("Errorllocating icmp_pktte_mbuf\n"); + +1418 +h_h + = + `¹e_pktmbuf_mtod +( +icmp_pkt +, +h_hdr + *); + +1419 + `h_addr_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 +-> +vsiÚ_ihl + = +IP_VHL_DEF +; + +1428 +_h +-> +ty³_of_£rviû + = 0; + +1429 +_h +-> +tÙ®_Ëngth + = + +1430 + `¹e_ýu_to_be_16 +(( +v4_hdr +è+ ( +icmp_hdr +)); + +1431 +_h +-> +·ck_id + = 0xaabb; + +1432 +_h +-> +äagmt_off£t + = 0x0000; + +1433 +_h +-> +time_to_live + = 64; + +1434 +_h +-> +Ãxt_´Ùo_id + = +IPPROTO_ICMP +; + +1435 +_h +-> +¤c_addr + = + `¹e_bsw32 +( +¬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_idt + = 0xdead; + +1444 +icmp_h +-> +icmp_£q_nb + = 0xbeef; + +1446 +icmp_h +-> +icmp_cksum + = ~ + `¹e_¿w_cksum +(icmp_h, ( +icmp_hdr +)); + +1448 +icmp_pkt +-> +pkt_Ën + = + +1449 ( +h_hdr +è+ ( +v4_hdr +) + + +1450 ( +icmp_hdr +); + +1451 +icmp_pkt +-> +d©a_Ën + = icmp_pkt-> +pkt_Ën +; + +1453 ià( +ARPICMP_DEBUG +) { + +1454 + `´tf +("Sendingchoequest\n"); + +1455 + `´t_mbuf +("TX", +pÜt_id +, +icmp_pkt +, +__LINE__ +); + +1458 + `¹e_pe_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 +, +ut32_t + + +) + +1465 () +pÜt_id +; + +1466 () + +; + +1468 +h_addr + +gw_addr +; + +1469 +ut32_t + +de¡_ + = + `¹e_bsw32 +( + +); + +1470 +ut32_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 +("Sendingchoequest ... get mac failed.\n"); + +1479 + } +} + +1481 + $»que¡_¬p +( +ut8_t + +pÜt_id +, +ut32_t + + +, +¹e_pe + * +¹e_p +) + +1483 () +pÜt_id +; + +1484 () + +; + +1486 +h_hdr + * +h_h +; + +1487 +¬p_hdr + * +¬p_h +; + +1489 +p_lk_·¿ms + * +lk +; + +1490 +lk + = & +myAµ +-> +lk_·¿ms +[ +pÜt_id +]; + +1491 +¬p_pÜt_add»s£s +[ +pÜt_id +]. + + = +lk +->ip; + +1492 +¬p_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lk +->mac_addr; + +1494 +¹e_mbuf + * +¬p_pkt + = +lib_¬p_pkt +; + +1496 ià( +¬p_pkt + =ð +NULL +) { + +1497 ià( +ARPICMP_DEBUG +) + +1498 + `´tf +("Errorllocatingrp_pktte_mbuf\n"); + +1502 +h_h + = + `¹e_pktmbuf_mtod +( +¬p_pkt +, +h_hdr + *); + +1504 + `h_addr_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 + = ( +ut32_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 +("Sendingrpequest\n"); + +1535 + `´t_mbuf +("TX", +pÜt_id +, +¬p_pkt +, +__LINE__ +); + +1538 + `¹e_pe_pÜt_out_·ck_£¹ +( +¹e_p +, +pÜt_id +, +¬p_pkt +); + +1539 +gp_¬p +-> +£ÁPktCouÁ +++; + +1541 + } +} + +1543 + $»que¡_¬p_w¿p +( +ut8_t + +pÜt_id +, +ut32_t + + +) + +1545 + `»que¡_¬p +( +pÜt_id +, + +, +gp_¬p +-> +p +.p); + +1546 + } +} + +1548 + $´oûss_¬picmp_pkt +( + +1549 +¹e_mbuf + * +pkt +, + +1550 +ut32_t + +out_pÜt +, + +1551 +ut32_t + +pkt_mask +) + +1553 +ut8_t + +_pÜt_id + = +pkt +-> +pÜt +; + +1554 +p_lk_·¿ms + * +lk +; + +1555 +h_hdr + * +h_h +; + +1556 +¬p_hdr + * +¬p_h +; + +1557 +v4_hdr + * +_h +; + +1558 +icmp_hdr + * +icmp_h +; + +1559 +ut32_t + +cksum +; + +1560 +ut32_t + +_addr +; + +1561 +ut32_t + +»q_t +; + +1564 +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, +h_hdr + *); + +1566 ià( +h_h +-> +h_ty³ + =ð + `¹e_ýu_to_be_16 +( +ETHER_TYPE_ARP +)) { + +1567 +¬p_h + = + +1568 ( +¬p_hdr + *)((*) +h_h + + + +1569 ( +h_hdr +)); + +1570 ià( + `CHECK_ENDIAN_16 +( +¬p_h +-> +¬p_hrd +è!ð +ARP_HRD_ETHER +) + +1571 +´tf + + +1574 ià( + `CHECK_ENDIAN_16 +( +¬p_h +-> +¬p_´o +è!ð +ETHER_TYPE_IPv4 +) + +1575 +´tf + + +1578 ià( +¬p_h +-> +¬p_hÊ + != 6) + +1579 +´tf + + +1582 ià( +¬p_h +-> +¬p_¶n + != 4) + +1583 +´tf + + +1587 +lk + = & +myAµ +-> +lk_·¿ms +[ +_pÜt_id +]; + +1588 +¬p_pÜt_add»s£s +[ +_pÜt_id +]. + + = +lk +->ip; + +1589 +¬p_pÜt_add»s£s +[ +_pÜt_id +]. +mac_addr + = + +1590 +lk +-> +mac_addr +; + +1592 ià( +¬p_h +-> +¬p_d©a +. +¬p_t + != + +1593 + `¹e_bsw32 +( +¬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_pe_ah_·ck_drÝ +( +gp_¬p +-> +p +.p, + +1606 +pkt_mask +); + +1607 +gp_¬p +-> +drݳdPktCouÁ +++; + +1614 ià( +¬p_h +-> +¬p_Ý + == + +1615 + `¹e_ýu_to_be_16 +( +ARP_OP_REQUEST +)) { + +1617 ià( +ARPICMP_DEBUG +) { + +1618 + `´tf +("arp_op %d, ARP_OP_REQUEST %d\n", + +1619 +¬p_h +-> +¬p_Ý +, + +1620 + `¹e_ýu_to_be_16 +( +ARP_OP_REQUEST +)); + +1621 + `´t_mbuf +("RX", +_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_pe_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_REPLYeceived"); + +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_bsw32 +( +¬p_h +-> + +1664 +¬p_d©a +. +¬p_s +), + +1665 +_pÜt_id +); + +1668 + `¹e_pe_ah_·ck_drÝ +( +gp_¬p +-> +p +.p, + +1669 +pkt_mask +); + +1670 +gp_¬p +-> +drݳdPktCouÁ +++; + +1673 ià( +ARPICMP_DEBUG +) + +1674 + `´tf +("Invalid ARP opcode -ot " + +1676 +¬p_h +-> +¬p_Ý +); + +1680 +_h + = + +1681 ( +v4_hdr + *)((*) +h_h + + + +1682 ( +h_hdr +)); + +1683 +icmp_h + = + +1684 ( +icmp_hdr + *)((*) +_h + + ( +v4_hdr +)); + +1686 ià( +h_h +-> +h_ty³ + =ð + `¹e_ýu_to_be_16 +( +ETHER_TYPE_IPv4 +)) { + +1688 +lk + = & +myAµ +-> +lk_·¿ms +[ +_pÜt_id +]; + +1689 +¬p_pÜt_add»s£s +[ +_pÜt_id +]. + + = +lk +->ip; + +1690 +¬p_pÜt_add»s£s +[ +_pÜt_id +]. +mac_addr + = + +1691 +lk +-> +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 frameot destined " + +1702 } ià( +_h +-> +Ãxt_´Ùo_id + !ð +IPPROTO_ICMP +) { + +1703 ià( +ARPICMP_DEBUG +) + +1704 + `´tf +("IP rotocol ID isot seto " + +1707 } ià(( +_h +-> +vsiÚ_ihl + & 0xf0è!ð +IP_VERSION_4 +) { + +1708 ià( +ARPICMP_DEBUG +) + +1709 + `´tf +("IP version otherhan 4 - " + +1712 } ià(( +_h +-> +vsiÚ_ihl + & 0x0fè!ð +IP_HDRLEN +) { + +1713 ià( +ARPICMP_DEBUG +) + +1714 + `´tf +("Unknown IHL - discarding\n"); + +1717 ià( +icmp_h +-> +icmp_ty³ + =ð +IP_ICMP_ECHO_REQUEST + + +1718 && +icmp_h +-> +icmp_code + == 0) { + +1719 ià( +ARPICMP_DEBUG +) + +1720 + `´t_mbuf +("RX", +_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_bsw32 +( +¬p_pÜt_add»s£s + + +1733 [ +_pÜt_id +]. + +)) { + +1734 ià( +ARPICMP_DEBUG +) { + +1735 + `´tf +("IPv4 acketot 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 +ut32_t + +_¤c +; + +1750 +_¤c + = +¹e_be_to_ýu_32 + + +1751 ( +_addr +); + +1752 ià(( +_¤c + & 0x00000003) == 1) + +1753 +_¤c + = (ip_src & + +1757 +_¤c + = (ip_src & + +1761 +_h +-> +¤c_addr + = + +1762 + `¹e_ýu_to_be_32 +( +_¤c +); + +1763 +_h +-> +d¡_addr + = +_addr +; + +1765 +_h +-> +hdr_checksum + = 0; + +1766 +_h +-> +hdr_checksum + = ~ + `¹e_¿w_cksum +( + +1767 +_h +, ( + +1768 +v4_hdr +)); + +1770 +_h +-> +¤c_addr + = ip_h-> +d¡_addr +; + +1771 +_h +-> +d¡_addr + = +_addr +; + +1774 +icmp_h +-> +icmp_ty³ + = + +1775 +IP_ICMP_ECHO_REPLY +; + +1776 +cksum + = ~ +icmp_h +-> +icmp_cksum + & 0xffff; + +1777 +cksum + +ð~ + `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_pe_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_bsw32 +( +_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_pe_ah_·ck_drÝ +( +gp_¬p +-> +p +.p, + +1820 +pkt_mask +); + +1821 +gp_¬p +-> +drݳdPktCouÁ +++; + +1826 + } +} + +1841 + $my__±Ú_v6 +( +af +, cÚ¡ * +¤c +, * +d¡ +) + +1843 +af +) { + +1844 +AF_INET +: + +1845 + `_±Ú_v4 +( +¤c +, +d¡ +); + +1846 +AF_INET6 +: + +1847 + `_±Ú_v6 +( +¤c +, +d¡ +); + +1849 +ºo + = +EAFNOSUPPORT +; + +1853 + } +} + +1865 + $_±Ú_v4 +(cÚ¡ * +¤c +, * +d¡ +) + +1867 cÚ¡ +digs +[] = "0123456789"; + +1868 +§w_dig +, +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 +( +digs +, +ch +); + +1878 ià( +pch + !ð +NULL +) { + +1879 +Ãw + = * + + * 10 + ( +pch + - +digs +); + +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Ú¡ +xdigs_l +[] = "0123456789abcdef", + +1920 +xdigs_u +[] = "0123456789ABCDEF"; + +1921 +tmp +[ +IN6ADDRSZ +], * + + = 0, * +dp + = 0, * +cÞÚp + = 0; + +1922 cÚ¡ * +xdigs + = 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 +(( +xdigs + = +xdigs_l +), +ch +); + +1942 ià( +pch + =ð +NULL +) + +1943 +pch + = + `¡rchr +(( +xdigs + = +xdigs_u +), +ch +); + +1944 ià( +pch + !ð +NULL +) { + +1945 ià( +couÁ_xdig + >= 4) + +1947 +v® + <<= 4; + +1948 +v® + |ð( +pch + - +xdigs +); + +1949 ià( +v® + > 0xffff) + +1951 +§w_xdig + = 1; + +1952 +couÁ_xdig +++; + +1955 ià( +ch + == ':') { + +1956 +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 +ut32_t + +out_pÜt +, + +2037 +__¹e_unu£d + +ut32_t + +pkt_num +) + +2040 +ut8_t + +_pÜt_id + = +pkt +-> +pÜt +; + +2041 +p_lk_·¿ms + * +lk +; + +2042 +h_hdr + * +h_h +; + +2043 +v6_hdr + * +v6_h +; + +2044 +icmpv6_hdr + * +icmpv6_h +; + +2045 +icmpv6_nd_hdr + * +icmpv6_nd_h +; + +2046 +ut8_t + +v6_addr +[16]; + +2047 +ut8_t + +i + = 0, +æag + = 1; + +2048 +ut8_t + +»q_tv6 +[16]; + +2050 +h_h + = + `¹e_pktmbuf_mtod +( +pkt +, +h_hdr + *); + +2051 +v6_h + = ( +v6_hdr + *)((*) +h_h + + ( +h_hdr +)); + +2052 +icmpv6_h + = + +2053 ( +icmpv6_hdr + *)((*) +v6_h + + ( +v6_hdr +)); + +2054 +¹e_mbuf + * +icmpv6_pkt + = +pkt +; + +2056 +lk + = & +myAµ +-> +lk_·¿ms +[ +_pÜt_id +]; + +2057 +icmpv6_pÜt_add»s£s +[ +_pÜt_id +]. +mac_addr + = +lk +->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 frameot destined for MACddress " + +2067 ià(( +icmpv6_h +-> +icmpv6_ty³ + =ð +ICMPV6_ECHO_REQUEST +) + +2068 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2069 +i + = 0; i < 16; i++) + +2070 +v6_addr +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +2072 +i + = 0; i < 16; i++) { + +2073 ià( +v6_h +-> +d¡_addr +[ +i +] != + +2074 +icmpv6_pÜt_add»s£s +[ +_pÜt_id +]. +v6 +[ +i +]) { + +2075 +æag +++; + +2078 ià(! +æag +) { + +2079 + `´tf +("IPv6 acketot 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_pe_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 ICMPv6cho " + +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 +ut8_t + +¤c_v6 +[16], +d¡_v6 +[16]; + +2148 +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2149 +¤c_v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +2150 +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2151 +d¡_v6 +[ +i +] = +v6_h +-> +d¡_addr +[i]; + +2154 ià(( +IPV6_MULTICAST + + +2155 && (( +d¡_v6 +[0] << 8) | dst_ipv6[1]))) { + +2156 ià( +pÝuÏ_nd_y + + +2157 ( +¤c_hw_addr +, +¤c_v6 +, +_pÜt_id +)) { + +2160 +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2161 +»q_tv6 +[ +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 +lk_Ï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_tv6 +[ +i +]; + +2181 +icmpv6_h +-> +icmpv6_ty³ + = + +2182 +ICMPV6_NEIGHBOR_ADVERTISEMENT +; + +2183 +icmpv6_nd_h +-> +ty³ + = + +2184 +e_T¬g_Lk_Lay_Add»ss +; + +2185 +icmpv6_nd_h +-> +icmpv6_»£rved + |= + +2186 +¹e_ýu_to_be_32 + + +2187 ( +NEIGHBOR_SOLICITATION_SET +); + +2189 +¹e_pe_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 onelse " + +2204 ià(( +icmpv6_h +-> +icmpv6_ty³ + =ð +ICMPV6_NEIGHBOR_ADVERTISEMENT +) + +2205 && ( +icmpv6_h +-> +icmpv6_code + == 0)) { + +2206 +h_addr + * +¤c_hw_addr + = & +h_h +-> +s_addr +; + +2207 +ut8_t + +v6 +[16]; + +2208 +i + = 0; i < +ND_IPV6_ADDR_SIZE +; i++) + +2209 +v6 +[ +i +] = +v6_h +-> +¤c_addr +[i]; + +2211 ià( + `pÝuÏ_nd_y +( +¤c_hw_addr +, +v6 +, +_pÜt_id +)) + +2212 ià( +ARPICMP_DEBUG +) + +2213 + `´tf +("Now on, unicast IPv6raffic " + +2217 ià( +ARPICMP_DEBUG +) { + +2218 + `´tf +("ICMPv6 Type %d Not Supported yet !!!\n", + +2219 +icmpv6_h +-> +icmpv6_ty³ +); + +2225 + } +} + +2227 + $»que¡_icmpv6_echo +( +ut32_t + +pÜt_id +, +ut8_t + +v6 +[]) + +2229 () +pÜt_id +; + +2230 () +v6 +; + +2231 +i +; + +2233 +h_addr + +gw_addr +; + +2234 +ut8_t + +nhv6 +[16]; + +2235 +ut8_t + +de¡_v6 +[16]; + +2236 +ut32_t + +phy_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 +, +nhv6 +)) { + +2243 + `»que¡_icmpv6_echo_mes§ge +( +phy_pÜt +, +v6 +, & +gw_addr +); + +2247 ià( +ARPICMP_DEBUG +) + +2248 + `´tf +("Sending icmpv6choequest ... get mac failed.\n"); + +2249 + } +} + +2252 + $»que¡_icmpv6_echo_mes§ge +( +ut16_t + +pÜt_id +, +ut8_t + +v6 +[], + +2253 +h_addr + * +gw_addr +) + +2255 +h_hdr + * +h_h +; + +2256 +v6_hdr + * +v6_h +; + +2257 +icmpv6_hdr + * +icmpv6_h +; + +2258 +icmpv6_fo_hdr + * +icmpv6_fo_h +; + +2259 +i +; + +2260 +p_lk_·¿ms + * +lk +; + +2261 +lk + = & +mylk +[ +pÜt_id +]; + +2263 +i + = 0; i < 16; i++) + +2264 +icmpv6_pÜt_add»s£s +[ +pÜt_id +]. +v6 +[ +i +] = +lk +->ipv6[i]; + +2266 +icmpv6_pÜt_add»s£s +[ +pÜt_id +]. +mac_addr + = +lk +->mac_addr; + +2268 +¹e_mbuf + * +icmpv6_pkt + = +lib_icmpv6_pkt +; + +2269 ià( +icmpv6_pkt + =ð +NULL +) { + +2270 ià( +ARPICMP_DEBUG +) + +2271 + `´tf +("Errorllocating icmpv6_pktte_mbuf\n"); + +2275 +h_h + = + `¹e_pktmbuf_mtod +( +icmpv6_pkt +, +h_hdr + *); + +2276 + `h_addr_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Ý_lims + = 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_idt + = 0x5151; + +2301 +icmpv6_fo_h +-> +icmpv6_£q_nb + = 0x1; + +2303 +icmpv6_h +-> +icmpv6_cksum + = + +2304 ~ + `¹e_¿w_cksum +( +icmpv6_h +, ( +icmpv6_hdr +)); + +2306 +icmpv6_pkt +-> +pkt_Ën + = + +2307 ( +h_hdr +è+ ( +v6_hdr +) + + +2308 ( +icmpv6_hdr +); + +2309 +icmpv6_pkt +-> +d©a_Ën + = icmpv6_pkt-> +pkt_Ën +; + +2311 ià( +ARPICMP_DEBUG +) + +2312 + `´tf +("Sending icmpv6choequest\n"); + +2314 + `¹e_pe_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 * +pe_¬picmp_msg_»q_cu¡om_hªdËr +( +pe + * +p +, + +2325 * +msg +); + +2327 +pe_msg_»q_hªdËr + + ghªdËrs +[] = { + +2328 [ +PIPELINE_MSG_REQ_PING +] = + +2329 +pe_msg_»q_pg_hªdËr +, + +2330 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +2331 +pe_msg_»q_¡©s_pÜt__hªdËr +, + +2332 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +2333 +pe_msg_»q_¡©s_pÜt_out_hªdËr +, + +2334 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +2335 +pe_msg_»q_¡©s_bË_hªdËr +, + +2336 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +2337 +pe_msg_»q_pÜt__abË_hªdËr +, + +2338 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +2339 +pe_msg_»q_pÜt__di§bË_hªdËr +, + +2340 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +2341 +pe_¬picmp_msg_»q_cu¡om_hªdËr +, + +2345 * +pe_¬picmp_msg_»q_y_dbg_hªdËr +( +pe + * +p +, + +2346 * +msg +); + +2347 * + $pe_¬picmp_msg_»q_y_dbg_hªdËr +( + +2348 +__¹e_unu£d + +pe + * +p +, + +2349 +__¹e_unu£d + * +msg +) + +2352 +NULL +; + +2353 + } +} + +2355 +__¹e_unu£d + +pe_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +2356 [ +PIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +] = + +2357 +pe_¬picmp_msg_»q_y_dbg_hªdËr +, + +2371 * + $pe_¬picmp_msg_»q_cu¡om_hªdËr +( +pe + * +p +, * +msg +) + +2373 +pe_¬picmp + * +p_¬p + = (pe_¬picm°*) +p +; + +2374 +pe_cu¡om_msg_»q + * +»q + = +msg +; + +2375 +pe_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 +pe_msg_»q_v®id_hªdËr +; + +2381 ià( +f_hªdË + =ð +NULL +) + +2382 +f_hªdË + = +pe_msg_»q_v®id_hªdËr +; + +2384 + `f_hªdË +( +p +, +»q +); + +2385 + } +} + +2387 #ifdeà +VNF_ACL + + +2393 +pe_¬picmp_·r£_¬gs +( +pe_¬picmp + * +p +, + +2394 +pe_·¿ms + * +·¿ms +); + +2396 + $pe_¬picmp_·r£_¬gs +( + +2397 +__¹e_unu£d + +pe_¬picmp + * +p +, + +2398 +pe_·¿ms + * +·¿ms +) + +2401 +ut32_t + +i +; + +2402 +ut32_t + +¬p_ma_off£t_´e£Á + = 0; + +2404 +ut32_t + +¬p_rou_tbl_´e£Á + = 0; + +2405 +ut32_t + +nd_rou_tbl_´e£Á + = 0; + +2406 +ut32_t + +pÜts_mac_li¡_´e£Á + = 0; + +2407 +ut32_t + +pktq__´v_´e£Á + = 0; + +2408 +ut32_t + +´v_to_pub_m_´e£Á + = 0; + +2410 +ut8_t + +n_´v__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 +("ARPrgs[%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_ma_off£t_´e£Á +) { + +2427 + `´tf +("arp_meta_offset " + +2431 +¬p_ma_off£t_´e£Á + = 1; + +2432 +¬p_ma_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 arserror - " + +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 +ut32_t + +i + = 0, +j + = 0, +k + = 0, +MAC_NUM_BYTES + = 6; + +2546 +byS +[ +MAC_NUM_BYTES +][3]; + +2547 +ut32_t + +by +[ +MAC_NUM_BYTES +]; + +2549 * +tok + = + `¡¹ok +( +¬g_v®ue +, " "); + +2550 +tok +) { + +2551 +k + = 0; + +2552 +i + = 0; i < +MAC_NUM_BYTES +; i++) { + +2553 +j + = 0; j < 2; j++) + +2554 +byS +[ +i +][ +j +] = +tok +[ +k +++]; + +2555 +byS +[ +i +][ +j +] = '\0'; + +2556 +k +++; + +2559 +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2560 +by +[ +i +] = + `¡¹oul +( +byS +[i], +NULL +, 16); + +2562 ià( +ARPICMP_DEBUG +) { + +2563 + `´tf +("tok: %s", +tok +); + +2564 +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2565 + `´tf +(", by[%u] %u", +i +, + +2566 +by +[ +i +]); + +2567 + `´tf +("\n"); + +2570 +i + = 0; i < +MAC_NUM_BYTES +; i++) + +2571 +lk_hw_addr + + +2572 [ +lk_hw_addr_¬¿y_idx +]. +addr_bys + + +2573 [ +i +] = +by +[i]; + +2575 +lk_hw_addr_¬¿y_idx +++; + +2576 +tok + = + `¡¹ok +( +NULL +, " "); + +2583 ià( + `¡rcmp +( +¬g_Çme +, "arp_route_tbl") == 0) { + +2584 +¬p_rou_tbl_´e£Á + = 1; + +2586 +ut32_t + +de¡_ + = 0, +mask + = 0, +tx_pÜt + = 0, +nh_ + = + +2587 0, +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2588 +ut32_t + +¬p_rou_tbl_¡r_max_Ën + = 10; + +2589 +de¡__¡r +[ +¬p_rou_tbl_¡r_max_Ën +]; + +2590 +mask_¡r +[ +¬p_rou_tbl_¡r_max_Ën +]; + +2591 +tx_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 arserror - " + +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 +ut8_t + +de¡_v6 +[16], +dth + = 0, +tx_pÜt + = + +2676 0, +nh_v6 +[16], +i + = 0, +j + = 0, +k + = 0, +l + = 0; + +2677 +ut8_t + +nd_rou_tbl_¡r_max_Ën + = 128; + +2678 +de¡_v6_¡r +[ +nd_rou_tbl_¡r_max_Ën +]; + +2679 +dth_¡r +[ +nd_rou_tbl_¡r_max_Ën +]; + +2680 +tx_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 +dth_¡r +[ +j +] = +tok +[ +i + + j]; + +2699 +j +++; + +2701 +dth_¡r +[ +j +] = '\0'; + +2703 +s +; + +2704 +s + = 0; +dth_¡r +[s] != '\0'; ++s) + +2705 +dth + = dth * 10 + +dth_¡r +[ +s +] - '0'; + +2707 +j +++; + +2708 +k + = 0; + +2709 ( +k + < ( +nd_rou_tbl_¡r_max_Ën + - 1)) + +2710 && ( +tok +[ +i + + +j + + +k +] != ',')) { + +2711 +tx_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 +]. +nhv6 +[ +i +] = + +2736 +nh_v6 +[ +i +]; + +2738 +lib_nd_rou_bË +[ +nd_rou_tbl_dex +]. +dth + = + +2739 +dth +; + +2740 +lib_nd_rou_bË +[ +nd_rou_tbl_dex +]. +pÜt + = + +2741 +tx_pÜt +; + +2743 +nd_rou_tbl_dex +++; + +2744 +tok + = + `¡¹ok +( +NULL +, "("); + +2754 ià(! +¬p_ma_off£t_´e£Á +) { + +2755 + `´tf +("ARPICMP:rp_meta_offsetot initialized\n"); + +2760 ià(! +¬p_rou_tbl_´e£Á + && ! +nd_rou_tbl_´e£Á +) { + +2761 + `´tf +("Neitherrp_route_tbl_presentor " + +2766 ià(! +pktq__´v_´e£Á +) { + +2767 + `´tf +("pktq_in_prvot declared\n"); + +2771 ià(! +pÜts_mac_li¡_´e£Á +) { + +2772 + `´tf +("ports_mac_listot declared\n"); + +2777 + } +} + +2781 +ut32_t + + g¬picmp_pkt_´t_couÁ +; + +2782 +le + + +2783 + $pkt_key_¬picmp +( +¹e_mbuf + * +pkt +, +ut32_t + +pkt_num +, * +¬g +) + +2786 +pe_¬picmp__pÜt_h_¬g + * + + = +¬g +; + +2787 +pe_¬picmp + * +p_¬p + = (pe_¬picm°*) + +-> +p +; + +2789 +p_¬p +-> +»ûivedPktCouÁ +++; + +2791 +ut8_t + +_pÜt_id + = +pkt +-> +pÜt +; + +2792 #ifdeà +VNF_ACL + + +2793 +p_lk_·¿ms + * +lk +; + +2795 +ut8_t + * +´ÙocÞ +; + +2796 +ut32_t + +pkt_mask + = 1 << +pkt_num +; + +2797 +ut32_t + +h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +2799 +ut32_t + +´Ù_off£t + = + +2800 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2802 #ifdeà +VNF_ACL + + +2803 +ut32_t + +out_pÜt +; + +2806 +ut16_t + * +h_´Ùo + = + +2807 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +h_´Ùo_off£t +); + +2810 #ifdeà +VNF_ACL + + +2811 +ut32_t + +d¡_addr_off£t + = + +2812 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2813 +ut32_t + * +d¡_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_off£t +); + +2816 #ifdeà +IPV6 + + +2817 +ut32_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 +lk + = & +myAµ +-> +lk_·¿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 && ( +lk +-> + + =ð + `¹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_pe_ah_·ck_drÝ +( +p_¬p +-> +p +.p, +pkt_mask +); + +2875 +p_¬p +-> +drݳdPktCouÁ +++; + +2877 + } +} + +2879 +le + + +2880 + $pkt4_key_¬picmp +( +¹e_mbuf + ** +pkt +, +ut32_t + +pkt_num +, * +¬g +) + +2883 +pe_¬picmp__pÜt_h_¬g + * + + = +¬g +; + +2884 +pe_¬picmp + * +p_¬p + = (pe_¬picm°*) + +-> +p +; + +2886 +p_¬p +-> +»ûivedPktCouÁ + += 4; + +2888 +ut32_t + +h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +2889 +ut8_t + +_pÜt_id + = +pkt +[0]-> +pÜt +; + +2891 +ut32_t + +´Ù_off£t + = + +2892 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_PROTOCOL_OFST +; + +2895 #ifdeà +VNF_ACL + + +2896 +ut32_t + +d¡_addr_off£t + = + +2897 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +2900 +ut32_t + +pkt_mask0 + = 1 << +pkt_num +; + +2901 +ut32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +2902 +ut32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +2903 +ut32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +2905 #ifdeà +VNF_ACL + + +2906 +ut32_t + +out_pÜt0 +; + +2907 +ut32_t + +out_pÜt1 +; + +2908 +ut32_t + +out_pÜt2 +; + +2909 +ut32_t + +out_pÜt3 +; + +2912 +ut16_t + * +h_´Ùo0 + = + +2913 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +h_´Ùo_off£t +); + +2914 +ut16_t + * +h_´Ùo1 + = + +2915 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +h_´Ùo_off£t +); + +2916 +ut16_t + * +h_´Ùo2 + = + +2917 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +h_´Ùo_off£t +); + +2918 +ut16_t + * +h_´Ùo3 + = + +2919 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +h_´Ùo_off£t +); + +2921 +ut8_t + * +´ÙocÞ0 +; + +2922 +ut8_t + * +´ÙocÞ1 +; + +2923 +ut8_t + * +´ÙocÞ2 +; + +2924 +ut8_t + * +´ÙocÞ3 +; + +2926 #ifdeà +VNF_ACL + + +2927 +ut32_t + * +d¡_addr0 + = + +2928 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d¡_addr_off£t +); + +2929 +ut32_t + * +d¡_addr1 + = + +2930 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d¡_addr_off£t +); + +2931 +ut32_t + * +d¡_addr2 + = + +2932 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d¡_addr_off£t +); + +2933 +ut32_t + * +d¡_addr3 + = + +2934 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[3], +d¡_addr_off£t +); + +2936 +p_lk_·¿ms + * +lk0 +; + +2937 +p_lk_·¿ms + * +lk1 +; + +2938 +p_lk_·¿ms + * +lk2 +; + +2939 +p_lk_·¿ms + * +lk3 +; + +2941 +lk0 + = & +myAµ +-> +lk_·¿ms +[ +pkt +[0]-> +pÜt +]; + +2942 +lk1 + = & +myAµ +-> +lk_·¿ms +[ +pkt +[1]-> +pÜt +]; + +2943 +lk2 + = & +myAµ +-> +lk_·¿ms +[ +pkt +[2]-> +pÜt +]; + +2944 +lk3 + = & +myAµ +-> +lk_·¿ms +[ +pkt +[3]-> +pÜt +]; + +2947 #ifdeà +IPV6 + + +2948 +ut32_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 && ( +lk0 +-> + + =ð + `¹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_pe_ah_·ck_drÝ +( +p_¬p +-> +p +.p, +pkt_mask0 +); + +3032 +p_¬p +-> +drݳdPktCouÁ +++; + +3034 +PKT1 +: + +3035 ià(( +ARPICMP_DEBUG + > 2è&& ( +¬picmp_pkt_´t_couÁ + < 10)) { + +3036 + `´t_pkt1 +( +pkt +[1]); + +3037 +¬picmp_pkt_´t_couÁ +++; + +3038 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3040 + `¹e_be_to_ýu_16 +(* +h_´Ùo1 +), * +´Ù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 && ( +lk1 +-> + + =ð + `¹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_pe_ah_·ck_drÝ +( +p_¬p +-> +p +.p, +pkt_mask1 +); + +3077 +p_¬p +-> +drݳdPktCouÁ +++; + +3079 +PKT2 +: + +3080 ià(( +ARPICMP_DEBUG + > 2è&& ( +¬picmp_pkt_´t_couÁ + < 10)) { + +3081 + `´t_pkt1 +( +pkt +[2]); + +3082 +¬picmp_pkt_´t_couÁ +++; + +3083 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3085 + `¹e_be_to_ýu_16 +(* +h_´Ùo2 +), * +´Ù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 && ( +lk2 +-> + + =ð + `¹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_pe_ah_·ck_drÝ +( +p_¬p +-> +p +.p, +pkt_mask2 +); + +3123 +p_¬p +-> +drݳdPktCouÁ +++; + +3125 +PKT3 +: + +3126 ià(( +ARPICMP_DEBUG + > 2è&& ( +¬picmp_pkt_´t_couÁ + < 10)) { + +3127 + `´t_pkt1 +( +pkt +[3]); + +3128 +¬picmp_pkt_´t_couÁ +++; + +3129 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +3131 + `¹e_be_to_ýu_16 +(* +h_´Ùo3 +), * +´Ù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 && ( +lk3 +-> + + =ð + `¹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_pe_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 * + $pe_¬picmp_ +( +pe_·¿ms + * +·¿ms +, + +3180 +__¹e_unu£d + * +¬g +) + +3182 +pe + * +p +; + +3183 +pe_¬picmp + * +p_¬p +; + +3184 +ut32_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 +(( +pe_¬picmp +)); + +3196 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +3197 +p_¬p + = ( +pe_¬picmp + *) +p +; + +3198 ià( +p + =ð +NULL +) + +3199 +NULL +; + +3202 +p_·¿ms + * +p + = (p_·¿m *) +¬g +; + +3203 +myAµ + = +¬g +; + +3205 + `PLOG +( +p +, +HIGH +, "ARPICMP"); + +3206 + `¡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 +-> +lks_m +[ +i +] = 0xff; + +3216 +p_¬p +-> +pe_num + = 0; + +3219 ià( + `pe_¬picmp_·r£_¬gs +( +p_¬p +, +·¿ms +)) + +3220 +NULL +; + +3222 #iâdeà +VNF_ACL + + +3223 + `lib_¬p_ +( +·¿ms +, +p +); + +3228 +¹e_pe_·¿ms + +pe_·¿ms + = { + +3229 . +Çme + = "ARPICMP", + +3230 . +sock_id + = +·¿ms +->socket_id, + +3231 . +off£t_pÜt_id + = 0, + +3235 +p +->°ð + `¹e_pe_ü +(& +pe_·¿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 (( +pe_¬picmp__pÜt_h_¬g +)) * + +3249 ( +·¿ms +-> +n_pÜts_ +)); + +3250 +pe_¬picmp__pÜt_h_¬g + * + + = + +3251 ( +pe_¬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_pe_pÜt__·¿ms + +pÜt_·¿ms + = { + +3263 . +Ýs + = + +3264 + `pe_pÜt__·¿ms_g_Ýs +(& +·¿ms +-> + +3265 +pÜt_ +[ +i +]), + +3266 . +¬g_ü + = + +3267 + `pe_pÜt__·¿ms_cÚvt +(& +·¿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_pe_pÜt__ü +( +p +->p, + +3277 & +pÜt_·¿ms +, + +3278 & +p +-> +pÜt__id +[ +i +]); + +3280 ià( +¡©us +) { + +3281 + `¹e_pe_ä +( +p +->p); + +3282 + `¹e_ä +( +p +); + +3283 +NULL +; + +3288 +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +3289 +¹e_pe_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +3290 . +Ýs + = + +3291 + `pe_pÜt_out_·¿ms_g_Ýs +(& +·¿ms +-> + +3292 +pÜt_out +[ +i +]), + +3293 . +¬g_ü + = + +3294 + `pe_pÜt_out_·¿ms_cÚvt +(& +·¿ms +-> + +3295 +pÜt_out +[ +i +]), + +3296 . +f_aùiÚ + = +NULL +, + +3297 . +¬g_ah + = +NULL +, + +3300 +¡©us + = + `¹e_pe_pÜt_out_ü +( +p +->p, + +3301 & +pÜt_·¿ms +, + +3302 & +p +-> +pÜt_out_id +[ +i +]); + +3304 ià( +¡©us +) { + +3305 + `¹e_pe_ä +( +p +->p); + +3306 + `¹e_ä +( +p +); + +3307 +NULL +; + +3310 +pe_num + = 0; + +3312 +¡©us + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +pe_num +); + +3314 ià( +¡©us + < 0) { + +3315 +NULL +; + +3316 + `´tf +("Unableoead ipelineumber\n"); + +3319 +p_¬p +-> +pe_num + = ( +ut8_t +) ipeline_num; + +3321 + `»gi¡_pe_Qs +( +p_¬p +-> +pe_num +, +p +); + +3322 + `£t_phy_ouÜt_id +( +p_¬p +-> +pe_num +, +p +, _¬p-> +ouÜt_id +); + +3326 +¹e_pe_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_pe_bË_ü +( +p +->p, + +3336 & +bË_·¿ms +, + +3337 & +p +-> +bË_id +[0]); + +3339 ià( +¡©us +) { + +3340 + `¹e_pe_ä +( +p +->p); + +3341 + `¹e_ä +( +p +); + +3342 +NULL +; + +3347 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +3349 +¡©us + = + `¹e_pe_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_pe_ä +( +p +->p); + +3358 + `¹e_ä +( +p +); + +3359 +NULL +; + +3365 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +3366 +¡©us + = + `¹e_pe_pÜt__abË +( +p +->p, + +3367 +p +-> +pÜt__id +[ +i +]); + +3369 ià( +¡©us +) { + +3370 + `¹e_pe_ä +( +p +->p); + +3371 + `¹e_ä +( +p +); + +3372 +NULL +; + +3377 ià( + `¹e_pe_check +( +p +->p) < 0) { + +3378 + `¹e_pe_ä +( +p +->p); + +3379 + `¹e_ä +( +p +); + +3380 +NULL +; + +3384 +p +-> +n_msgq + = +·¿ms +->n_msgq; + +3385 +i + = 0; i < +p +-> +n_msgq +; i++) + +3386 +p +-> +msgq_ +[ +i +] = +·¿ms +->msgq_in[i]; + +3387 +i + = 0; i < +p +-> +n_msgq +; i++) + +3388 +p +-> +msgq_out +[ +i +] = +·¿ms +->msgq_out[i]; + +3391 + `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 +("ARPib_arp_pktlloc failed.\n"); + +3410 +NULL +; + +3414 +¬p_hash_·¿ms +. +sock_id + = + `¹e_sock_id +(); + +3415 +¬p_hash_·¿ms +. +s + = +MAX_NUM_ARP_ENTRIES +; + +3416 +¬p_hash_hªdË + = + `¹e_hash_ü +(& +¬p_hash_·¿ms +); + +3418 ià( +¬p_hash_hªdË + =ð +NULL +) { + +3419 + `´tf +("ARPte_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 +("NDte_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 + $pe_¬picmp_ä +(* +pe +) + +3443 +pe + * +p + = (pipeline *)pipeline; + +3446 ià( +p + =ð +NULL +) + +3450 + `¹e_pe_ä +( +p +->p); + +3451 + `¹e_ä +( +p +); + +3453 + } +} + +3455 + $pe_¬picmp_tim +(* +pe +) + +3457 +pe + * +p + = (pipeline *)pipeline; + +3459 + `pe_msg_»q_hªdË +( +p +); + +3460 + `¹e_pe_æush +( +p +->p); + +3463 + } +} + +3466 + $pe_¬picmp_ack +(* +pe +, +ut32_t + +pÜt_ +, ut32_* +pÜt_out +) + +3468 +pe + * +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 +pe_be_Ýs + + gpe_¬picmp_be_Ýs + = { + +3479 . +f_ + = +pe_¬picmp_ +, + +3480 . + gf_ä + = +pe_¬picmp_ä +, + +3481 . + gf_run + = +NULL +, + +3482 . + gf_tim + = +pe_¬picmp_tim +, + +3483 . + gf_ack + = +pe_¬picmp_ack +, + + @VIL/pipeline_arpicmp/pipeline_arpicmp_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + +18 + #__INCLUDE_PIPELINE_ARPICMP_BE_H__ + + + ) + +20 + ~"pe_commÚ_be.h +" + +21 + #PIPELINE_ARPICMP_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +23 + `f_ah +( \ + +24 +__¹e_unu£d + +¹e_pe + * +¹e_p +, \ + +25 +¹e_mbuf + ** +pkts +, \ + +26 +ut32_t + +n_pkts +, \ + +27 * +¬g +) \ + +29 +ut32_t + +i +, +j +; \ + +31 +j + = 0; j < +n_pkts +; j++) \ + +32 + `¹e_´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_lk_hw_addr +( +ut8_t + +out_pÜt +); + +47 #ifdeà +VNF_ACL + + +49 + ~<¹e_pe.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 +ut32_t + + m +; + +83 +ut8_t + + mpÜt_id +; + +84 +ut8_t + + mfËr1 +; + +85 +ut8_t + + mfËr2 +; + +86 +ut8_t + + mfËr3 +; + +90 + snd_key_v6 + { + +93 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +94 +ut8_t + + mpÜt_id +; + +95 +ut8_t + + mfËr1 +; + +96 +ut8_t + + mfËr2 +; + +97 +ut8_t + + mfËr3 +; + +100 + s¬p_key + { + +101 +¬p_key_ty³ + + mty³ +; + +103 +¬p_key_v4 + + mv4 +; + +104 } + mkey +; + +107 + slib_¬p_rou_bË_y + { + +108 +ut32_t + + m +; + +109 +ut32_t + + mmask +; + +110 +ut32_t + + mpÜt +; + +111 +ut32_t + + mnh +; + +114 + slib_nd_rou_bË_y + { + +115 +ut8_t + + mv6 +[16]; + +116 +ut8_t + + mdth +; + +117 +ut32_t + + mpÜt +; + +118 +ut8_t + + mnhv6 +[16]; + +120 +lib_¬p_rou_bË_y + +lib_¬p_rou_bË +[ +MAX_ARP_RT_ENTRY +]; + +121 +lib_nd_rou_bË_y + +lib_nd_rou_bË +[ +MAX_ND_RT_ENTRY +]; + +123 +ut8_t + +´v__pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +124 +cÚvt_´efixËn_to_Ãtmask_v6 +( +ut32_t + +dth +, + +125 +ut8_t + +Ãtmask_v6 +[]); + +126 +ut32_t + +g_nh +(uint32_t, uint32_t*); + +127 +g_nh_v6 +( +ut8_t + +v6 +[], +ut32_t + * +pÜt +, ut8_ +nhv6 +[]); + +129 +ut32_t + +ARPICMP_DEBUG +; + +133 + #COMPLETE + 1 + + ) + +135 + #INCOMPLETE + 0 + + ) + +138 +ut32_t + +NDIPV6_DEBUG +; + +141 + #ICMPv6_COMPLETE + 1 + + ) + +143 + #ICMPv6_INCOMPLETE + 0 + + ) + +145 + s¬p_y_d©a + { + +146 +h_addr + + mh_addr +; + +147 +ut8_t + + mpÜt +; + +148 +ut8_t + + m¡©us +; + +149 +ut32_t + + m +; + +150 } +__©ibu__ + (( +__·cked__ +)); + +153 + snd_y_d©a + { + +154 +h_addr + + mh_addr +; + +155 +ut8_t + + mpÜt +; + +156 +ut8_t + + m¡©us +; + +157 +ut8_t + + mv6 +[ +ND_IPV6_ADDR_SIZE +]; + +158 } +__©ibu__ + (( +__·cked__ +)); + +160 +g_de¡_mac_add»ss +(cÚ¡ +ut32_t + +addr +, cÚ¡ ut32_ +phy_pÜt +, + +161 +h_addr + * +hw_addr +, +ut32_t + * +nh +); + +162 +g_de¡_mac_addr +(cÚ¡ +ut32_t + +addr +, cÚ¡ ut32_ +phy_pÜt +, + +163 +h_addr + * +hw_addr +); + +165 +g_de¡_mac_add»ss_v6 +( +ut8_t + +v6addr +[], +ut32_t + +phy_pÜt +, + +166 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + +168 +lib_¬p_»que¡_¬p +( + +169 cÚ¡ +ut32_t + +addr +, + +170 cÚ¡ +ut32_t + +phy_pÜt +, + +171 +¹e_pe + * +¹e_p +); + +173 +´t_¬p_bË +(); + +174 +´t_nd_bË +(); + +175 +»move_¬p_y +( +ut32_t + +addr +, +ut8_t + +pÜtid +); + +176 +»move_nd_y_v6 +( +ut8_t + +v6addr +[], ut8_ +pÜtid +); + +177 +pÝuÏ_¬p_y +(cÚ¡ +h_addr + * +hw_addr +, +ut32_t + +addr +, + +178 +ut8_t + +pÜtid +); + +180 +pÝuÏ_nd_y +(cÚ¡ +h_addr + * +hw_addr +, +ut8_t + + +[], + +181 +ut8_t + +pÜtid +); + +182 +»que¡_¬p +( +ut8_t + +pÜt_id +, +ut32_t + + +, +¹e_pe + * +¹e_p +); + +183 +»que¡_¬p_w¿p +( +ut8_t + +pÜt_id +, +ut32_t + + +); + +184 +»que¡_echo +( +pÜt_id +, +ut32_t + + +); + +186 +´oûss_¬picmp_pkt +( +¹e_mbuf + * +pkt +, +ut32_t + +out_pÜt +, + +187 +ut32_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 +ut8_t + + glb_ouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +200 +pe + * + glßdb_pe +[ +PIPELINE_MAX_PORT_IN +]; + +201 +pe + * + g®l_pe +[ +PIPELINE_MAX_PORT_IN +]; + +202 +ut8_t + + gvnf_to_lßdb_m +[ +PIPELINE_MAX_PORT_IN +]; + +203 +ut8_t + + gpÜt_to_lßdb_m +[ +PIPELINE_MAX_PORT_IN +]; + +204 +ut8_t + + glßdb_pe_nums +[ +PIPELINE_MAX_PORT_IN +]; + +207 +ut8_t + + glb_ouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +208 +pe + * + g¬p_pe +[ +PIPELINE_MAX_PORT_IN +]; + +209 +ut8_t + + gvnf_to_¬p_m +[ +PIPELINE_MAX_PORT_IN +]; + +210 +ut8_t + + gpÜt_to_¬p_m +[ +PIPELINE_MAX_PORT_IN +]; + +211 +ut8_t + + g¬p_pe_nums +[ +PIPELINE_MAX_PORT_IN +]; + +214 +£t_pÜt_to_lßdb_m +( +ut8_t + +pe_num +); + +215 +ut8_t + +g_pÜt_to_lßdb_m +(ut8_ +phy_pÜt_id +); + +218 +£t_phy_pÜt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +219 +£t_phy_ouÜt_m +( +ut8_t + +pe_num +, ut8_* +m +); + +221 +£t_ouÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +); + +223 +ut8_t + +g_lßdb_ouÜt_id +(ut8_ +aùu®_phy_pÜt +); + +225 +ut8_t + +g_vnf_£t_num +(ut8_ +pe_num +); + +227 +pes_pÜt_fo +(); + +228 +pes_m_fo +(); + +229 +»gi¡_lßdb_to_¬p +( +ut8_t + +pe_num +, +pe + * +p +, + +230 +__¹e_unu£d + +p_·¿ms + * +p +); + +232 +ut8_t + + gSWQ_to_PÜt_m +[128]; + +234 +pe_be_Ýs + +pe_¬picmp_be_Ýs +; + +235 +»gi¡_pe_Qs +( +ut8_t + +pe_num +, +pe + * +p +); + +236 +£t_lk_m +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +); + +237 +£t_ouÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +); + +238 +£t_phy_ouÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +); + +239 +£t_phy_pÜt_id +( +ut8_t + +pe_num +, +pe + * +p +, ut8_* +m +); + +244 + epe_¬picmp_msg_»q_ty³ + { + +245 + mPIPELINE_ARPICMP_MSG_REQ_ENTRY_DBG +, + +246 + mPIPELINE_ARPICMP_MSG_REQS + + +252 + spe_¬picmp_y_dbg_msg_»q + { + +253 +pe_msg_»q_ty³ + + mty³ +; + +254 +pe_¬picmp_msg_»q_ty³ + + msubty³ +; + +257 +ut8_t + + md©a +[2]; + +264 + spe_¬picmp__pÜt_h_¬g + { + +265 +pe_¬picmp + * + mp +; + +266 +ut8_t + + m_pÜt_id +; + +269 + spe_¬picmp_y_dbg_msg_r¥ + { + +270 + m¡©us +; + +273 #ifdeà +VNF_ACL + + +276 + sicmpv6_hdr + { + +277 +ut8_t + + micmpv6_ty³ +; + +278 +ut8_t + + micmpv6_code +; + +279 +ut16_t + + micmpv6_cksum +; + +280 } +__©ibu__ + (( +__·cked__ +)); + +285 + sicmpv6_fo_hdr + { + +286 +ut16_t + + micmpv6_idt +; + +287 +ut16_t + + micmpv6_£q_nb +; + +288 } +__©ibu__ + (( +__·cked__ +)); + +293 + sicmpv6_nd_hdr + { + +295 +ut32_t + + micmpv6_»£rved +; + +298 +ut8_t + + mrg_v6 +[16]; + +300 +ut8_t + + mty³ +; + +301 +ut8_t + + mËngth +; + +302 +h_addr + + mlk_Ï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_lk_Ïy_Add»ss_ty³ + { + +315 + me_Sourû_Lk_Lay_Add»ss + = 1, + +316 + me_T¬g_Lk_Lay_Add»ss +, + +317 + me_Lk_Lay_Add»ss + + +320 +ut8_t + +is_muÉiÿ¡_v6_addr +(ut8_ +v6 +[]); + +321 + sicmpv6_pÜt_add»ss + { + +322 +ut32_t + + mv6 +[16]; + +323 +ut64_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 +( +ut32_t + +pÜt_id +, +ut8_t + +v6 +[]); + +332 +»que¡_icmpv6_echo_mes§ge +( +ut16_t + +pÜt_id +, +ut8_t + +v6 +[], + +333 +h_addr + * +gw_addr +); + +335 +´oûss_icmpv6_pkt +( +¹e_mbuf + * +pkt +, +ut32_t + +out_pÜt +, ut32_ +pkt_num +); + +337 +g_de¡_mac_addr_pÜt +(cÚ¡ +ut32_t + +addr +, + +338 +ut32_t + * +phy_pÜt +, +h_addr + * +hw_addr +); + +340 +g_de¡_mac_add»ss_v6_pÜt +( +ut8_t + +v6addr +[], +ut32_t + * +phy_pÜt +, + +341 +h_addr + * +hw_addr +, +ut8_t + +nhv6 +[]); + + @VIL/pipeline_common/pipeline_common_be.c + +17 + ~<¹e_commÚ.h +> + +18 + ~<¹e_rg.h +> + +19 + ~<¹e_m®loc.h +> + +21 + ~"pe_commÚ_be.h +" + +24 + $pe_msg_»q_pg_hªdËr +( +__¹e_unu£d + +pe + * +p +, + +25 * +msg +) + +27 +pe_msg_r¥ + * +r¥ + = +msg +; + +29 +r¥ +-> +¡©us + = 0; + +31 +r¥ +; + +32 + } +} + +35 + $pe_msg_»q_¡©s_pÜt__hªdËr +( +pe + * +p +, + +36 * +msg +) + +38 +pe_¡©s_msg_»q + * +»q + = +msg +; + +39 +pe_¡©s_pÜt__msg_r¥ + * +r¥ + = +msg +; + +40 +ut32_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_pe_pÜt__¡©s_»ad +( +p +->p, + +51 +pÜt_id +, + +52 & +r¥ +-> +¡©s +, + +55 +r¥ +; + +56 + } +} + +59 + $pe_msg_»q_¡©s_pÜt_out_hªdËr +( +pe + * +p +, + +60 * +msg +) + +62 +pe_¡©s_msg_»q + * +»q + = +msg +; + +63 +pe_¡©s_pÜt_out_msg_r¥ + * +r¥ + = +msg +; + +64 +ut32_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_pe_pÜt_out_¡©s_»ad +( +p +->p, + +75 +pÜt_id +, + +76 & +r¥ +-> +¡©s +, + +79 +r¥ +; + +80 + } +} + +83 + $pe_msg_»q_¡©s_bË_hªdËr +( +pe + * +p +, + +84 * +msg +) + +86 +pe_¡©s_msg_»q + * +»q + = +msg +; + +87 +pe_¡©s_bË_msg_r¥ + * +r¥ + = +msg +; + +88 +ut32_t + +bË_id +; + +91 ià( +»q +-> +id + >ð +p +-> +n_bËs +) { + +92 +r¥ +-> +¡©us + = -1; + +93 +r¥ +; + +95 +bË_id + = +p +->bË_id[ +»q +-> +id +]; + +98 +r¥ +-> +¡©us + = + `¹e_pe_bË_¡©s_»ad +( +p +->p, + +99 +bË_id +, + +100 & +r¥ +-> +¡©s +, + +103 +r¥ +; + +104 + } +} + +107 + $pe_msg_»q_pÜt__abË_hªdËr +( +pe + * +p +, + +108 * +msg +) + +110 +pe_pÜt__msg_»q + * +»q + = +msg +; + +111 +pe_msg_r¥ + * +r¥ + = +msg +; + +112 +ut32_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_pe_pÜt__abË +( +p +->p, + +123 +pÜt_id +); + +125 +r¥ +; + +126 + } +} + +129 + $pe_msg_»q_pÜt__di§bË_hªdËr +( +pe + * +p +, + +130 * +msg +) + +132 +pe_pÜt__msg_»q + * +»q + = +msg +; + +133 +pe_msg_r¥ + * +r¥ + = +msg +; + +134 +ut32_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_pe_pÜt__di§bË +( +p +->p, + +145 +pÜt_id +); + +147 +r¥ +; + +148 + } +} + +151 + $pe_msg_»q_v®id_hªdËr +( +__¹e_unu£d + +pe + * +p +, + +152 * +msg +) + +154 +pe_msg_r¥ + * +r¥ + = +msg +; + +156 +r¥ +-> +¡©us + = -1; + +158 +r¥ +; + +159 + } +} + +162 + $pe_msg_»q_hªdË +( +pe + * +p +) + +164 +ut32_t + +msgq_id +; + +166 +msgq_id + = 0; msgq_id < +p +-> +n_msgq +; msgq_id++) { + +168 +pe_msg_»q + * +»q +; + +169 +pe_msg_»q_hªdËr + +f_hªdË +; + +171 +»q + = + `pe_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 +pe_msg_»q_v®id_hªdËr +; + +179 ià( +f_hªdË + =ð +NULL +) + +180 +f_hªdË + = +pe_msg_»q_v®id_hªdËr +; + +182 + `pe_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_rg.h +> + +22 + ~<¹e_pe.h +> + +24 + ~"pe_be.h +" + +26 + gpe +; + +28 + epe_msg_»q_ty³ + { + +29 + mPIPELINE_MSG_REQ_PING + = 0, + +30 + mPIPELINE_MSG_REQ_STATS_PORT_IN +, + +31 + mPIPELINE_MSG_REQ_STATS_PORT_OUT +, + +32 + mPIPELINE_MSG_REQ_STATS_TABLE +, + +33 + mPIPELINE_MSG_REQ_PORT_IN_ENABLE +, + +34 + mPIPELINE_MSG_REQ_PORT_IN_DISABLE +, + +35 + mPIPELINE_MSG_REQ_CUSTOM +, + +36 + mPIPELINE_MSG_REQS + + +39 *(* + tpe_msg_»q_hªdËr +)( + tpe + * + tp +, * + tmsg +); + +41 + spe + { + +42 +¹e_pe + * + mp +; + +43 +ut32_t + + mpÜt__id +[ +PIPELINE_MAX_PORT_IN +]; + +44 +ut32_t + + mpÜt_out_id +[ +PIPELINE_MAX_PORT_OUT +]; + +45 +ut32_t + + mbË_id +[ +PIPELINE_MAX_TABLES +]; + +46 +¹e_rg + * + mmsgq_ +[ +PIPELINE_MAX_MSGQ_IN +]; + +47 +¹e_rg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +49 +ut32_t + + mn_pÜts_ +; + +50 +ut32_t + + mn_pÜts_out +; + +51 +ut32_t + + mn_bËs +; + +52 +ut32_t + + mn_msgq +; + +54 +pe_msg_»q_hªdËr + + mhªdËrs +[ +PIPELINE_MSG_REQS +]; + +55 + mÇme +[ +PIPELINE_NAME_SIZE +]; + +56 +ut32_t + + mlog_Ëv +; + +59 + epe_log_Ëv + { + +60 + mPIPELINE_LOG_LEVEL_HIGH + = 1, + +61 + mPIPELINE_LOG_LEVEL_LOW +, + +62 + mPIPELINE_LOG_LEVELS + + +65 + #PLOG +( +p +, +Ëv +, +fmt +, ...) \ + +67 ià( +p +-> +log_Ëv + >ð +PIPELINE_LOG_LEVEL_ + ## +Ëv +) \ + +68 + `årtf +( +¡dout +, "[%s] " +fmt + "\n", +p +-> +Çme +, ## +__VA_ARGS__ +);\ + +69 } 0) + + ) + +71 +le + * + +72 + $pe_msg_»cv +( +pe + * +p +, + +73 +ut32_t + +msgq_id +) + +75 +¹e_rg + * +r + = +p +-> +msgq_ +[ +msgq_id +]; + +76 * +msg +; + +77 +¡©us + = + `¹e_rg_sc_dequeue +( +r +, & +msg +); + +79 ià( +¡©us + != 0) + +80 +NULL +; + +82 +msg +; + +83 + } +} + +85 +le + + +86 + $pe_msg_£nd +( +pe + * +p +, + +87 +ut32_t + +msgq_id +, + +88 * +msg +) + +90 +¹e_rg + * +r + = +p +-> +msgq_out +[ +msgq_id +]; + +91 +¡©us +; + +94 +¡©us + = + `¹e_rg_¥_queue +( +r +, +msg +); + +95 } +¡©us + =ð- +ENOBUFS +); + +96 + } +} + +98 + spe_msg_»q + { + +99 +pe_msg_»q_ty³ + + mty³ +; + +102 + spe_¡©s_msg_»q + { + +103 +pe_msg_»q_ty³ + + mty³ +; + +104 +ut32_t + + mid +; + +107 + spe_pÜt__msg_»q + { + +108 +pe_msg_»q_ty³ + + mty³ +; + +109 +ut32_t + + mpÜt_id +; + +112 + spe_cu¡om_msg_»q + { + +113 +pe_msg_»q_ty³ + + mty³ +; + +114 +ut32_t + + msubty³ +; + +117 + spe_msg_r¥ + { + +118 + m¡©us +; + +121 + spe_¡©s_pÜt__msg_r¥ + { + +122 + m¡©us +; + +123 +¹e_pe_pÜt__¡©s + + m¡©s +; + +126 + spe_¡©s_pÜt_out_msg_r¥ + { + +127 + m¡©us +; + +128 +¹e_pe_pÜt_out_¡©s + + m¡©s +; + +131 + spe_¡©s_bË_msg_r¥ + { + +132 + m¡©us +; + +133 +¹e_pe_bË_¡©s + + m¡©s +; + +136 * +pe_msg_»q_pg_hªdËr +( +pe + * +p +, * +msg +); + +137 * +pe_msg_»q_¡©s_pÜt__hªdËr +( +pe + * +p +, * +msg +); + +138 * +pe_msg_»q_¡©s_pÜt_out_hªdËr +( +pe + * +p +, * +msg +); + +139 * +pe_msg_»q_¡©s_bË_hªdËr +( +pe + * +p +, * +msg +); + +140 * +pe_msg_»q_pÜt__abË_hªdËr +( +pe + * +p +, * +msg +); + +141 * +pe_msg_»q_pÜt__di§bË_hªdËr +( +pe + * +p +, * +msg +); + +142 * +pe_msg_»q_v®id_hªdËr +( +pe + * +p +, * +msg +); + +144 +pe_msg_»q_hªdË +( +pe + * +p +); + + @VIL/pipeline_common/pipeline_common_fe.c + +17 + ~<¡dio.h +> + +18 + ~<fú.h +> + +19 + ~<uni¡d.h +> + +21 + ~<¹e_commÚ.h +> + +22 + ~<¹e_rg.h +> + +23 + ~<¹e_m®loc.h +> + +24 + ~<cmdle_rdle.h +> + +25 + ~<cmdle_·r£.h +> + +26 + ~<cmdle_·r£_num.h +> + +27 + ~<cmdle_·r£_¡rg.h +> + +28 + ~<cmdle_·r£_addr.h +> + +29 + ~<cmdle_·r£_haddr.h +> + +30 + ~<cmdle_sock.h +> + +31 + ~<cmdle.h +> + +33 + ~"pe_commÚ_ã.h +" + +34 #iâdeà +VNF_ACL + + +35 + ~"rçû.h +" + +39 + $p_pe_pg +( +p_·¿ms + * +p +, + +40 +ut32_t + +pe_id +) + +42 +p_pe_·¿ms + * +p +; + +43 +pe_msg_»q + * +»q +; + +44 +pe_msg_r¥ + * +r¥ +; + +45 +¡©us + = 0; + +48 ià( +p + =ð +NULL +) + +51 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +52 ià( +p + =ð +NULL +) + +56 +»q + = + `p_msg_®loc +( +p +); + +57 ià( +»q + =ð +NULL +) + +61 +»q +-> +ty³ + = +PIPELINE_MSG_REQ_PING +; + +64 +r¥ + = + `p_msg_£nd_»cv +( +p +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +65 ià( +r¥ + =ð +NULL +) + +69 +¡©us + = +r¥ +->status; + +72 + `p_msg_ä +( +p +, +r¥ +); + +74 +¡©us +; + +75 + } +} + +78 + $p_pe_¡©s_pÜt_ +( +p_·¿ms + * +p +, + +79 +ut32_t + +pe_id +, + +80 +ut32_t + +pÜt_id +, + +81 +¹e_pe_pÜt__¡©s + * +¡©s +) + +83 +p_pe_·¿ms + * +p +; + +84 +pe_¡©s_msg_»q + * +»q +; + +85 +pe_¡©s_pÜt__msg_r¥ + * +r¥ +; + +86 +¡©us + = 0; + +89 ià(( +p + =ð +NULL +) || + +90 ( +¡©s + =ð +NULL +)) + +93 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +94 ià(( +p + =ð +NULL +) || + +95 ( +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¥ + = ( +pe_¡©s_pÜt__msg_r¥ + *) + +109 + `p_msg_£nd_»cv +( +p +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +110 ià( +r¥ + =ð +NULL +) + +114 +¡©us + = +r¥ +->status; + +115 ià( +¡©us + == 0) + +116 + `memýy +( +¡©s +, & +r¥ +->stats, (rsp->stats)); + +119 + `p_msg_ä +( +p +, +r¥ +); + +121 +¡©us +; + +122 + } +} + +125 + $p_pe_¡©s_pÜt_out +( +p_·¿ms + * +p +, + +126 +ut32_t + +pe_id +, + +127 +ut32_t + +pÜt_id +, + +128 +¹e_pe_pÜt_out_¡©s + * +¡©s +) + +130 +p_pe_·¿ms + * +p +; + +131 +pe_¡©s_msg_»q + * +»q +; + +132 +pe_¡©s_pÜt_out_msg_r¥ + * +r¥ +; + +133 +¡©us + = 0; + +136 ià(( +p + =ð +NULL +) || + +137 ( +pe_id + >ð +p +-> +n_pes +) || + +138 ( +¡©s + =ð +NULL +)) + +141 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +142 ià(( +p + =ð +NULL +) || + +143 ( +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 +, +pe_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_pe_¡©s_bË +( +p_·¿ms + * +p +, + +173 +ut32_t + +pe_id +, + +174 +ut32_t + +bË_id +, + +175 +¹e_pe_bË_¡©s + * +¡©s +) + +177 +p_pe_·¿ms + * +p +; + +178 +pe_¡©s_msg_»q + * +»q +; + +179 +pe_¡©s_bË_msg_r¥ + * +r¥ +; + +180 +¡©us + = 0; + +183 ià(( +p + =ð +NULL +) || + +184 ( +¡©s + =ð +NULL +)) + +187 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +188 ià( +p + =ð +NULL +) + +192 +»q + = + `p_msg_®loc +( +p +); + +193 ià( +»q + =ð +NULL +) + +197 +»q +-> +ty³ + = +PIPELINE_MSG_REQ_STATS_TABLE +; + +198 +»q +-> +id + = +bË_id +; + +201 +r¥ + = + `p_msg_£nd_»cv +( +p +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +202 ià( +r¥ + =ð +NULL +) + +206 +¡©us + = +r¥ +->status; + +207 ià( +¡©us + == 0) + +208 + `memýy +( +¡©s +, & +r¥ +->stats, (rsp->stats)); + +211 + `p_msg_ä +( +p +, +r¥ +); + +213 +¡©us +; + +214 + } +} + +217 + $p_pe_pÜt__abË +( +p_·¿ms + * +p +, + +218 +ut32_t + +pe_id +, + +219 +ut32_t + +pÜt_id +) + +221 +p_pe_·¿ms + * +p +; + +222 +pe_pÜt__msg_»q + * +»q +; + +223 +pe_msg_r¥ + * +r¥ +; + +224 +¡©us + = 0; + +227 ià( +p + =ð +NULL +) + +230 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +231 ià(( +p + =ð +NULL +) || + +232 ( +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 +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +246 ià( +r¥ + =ð +NULL +) + +250 +¡©us + = +r¥ +->status; + +253 + `p_msg_ä +( +p +, +r¥ +); + +255 +¡©us +; + +256 + } +} + +259 + $p_pe_pÜt__di§bË +( +p_·¿ms + * +p +, + +260 +ut32_t + +pe_id +, + +261 +ut32_t + +pÜt_id +) + +263 +p_pe_·¿ms + * +p +; + +264 +pe_pÜt__msg_»q + * +»q +; + +265 +pe_msg_r¥ + * +r¥ +; + +266 +¡©us + = 0; + +269 ià( +p + =ð +NULL +) + +272 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +pe_id +, +p +); + +273 ià(( +p + =ð +NULL +) || + +274 ( +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 +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +288 ià( +r¥ + =ð +NULL +) + +292 +¡©us + = +r¥ +->status; + +295 + `p_msg_ä +( +p +, +r¥ +); + +297 +¡©us +; + +298 + } +} + +301 + $p_lk_cÚfig +( +p_·¿ms + * +p +, + +302 +ut32_t + +lk_id +, + +303 +ut32_t + + +, + +304 +ut32_t + +dth +) + +306 +p_lk_·¿ms + * +p +; + +307 +ut32_t + +i +, +Ãtmask +, +ho¡ +, +bÿ¡ +; + +310 ià( +p + =ð +NULL +) + +313 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +314 ià( +p + =ð +NULL +) { + +315 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +316 +lk_id +); + +320 ià( +p +-> +¡©e +) { + +321 + `APP_LOG +( +p +, +HIGH +, "%s is UP, lease bring it DOWN first", + +322 +p +-> +Çme +); + +326 +Ãtmask + = (~0Uè<< (32 - +dth +); + +327 +ho¡ + = + + & +Ãtmask +; + +328 +bÿ¡ + = +ho¡ + | (~ +Ãtmask +); + +330 ià(( + + == 0) || + +331 ( + + =ð +UINT32_MAX +) || + +332 ( + + =ð +ho¡ +) || + +333 ( + + =ð +bÿ¡ +)) { + +334 + `APP_LOG +( +p +, +HIGH +, "Illegal IPddress"); + +338 +i + = 0; i < +p +-> +n_lks +; i++) { + +339 +p_lk_·¿ms + * +lk + = & +p +-> +lk_·¿ms +[ +i +]; + +340 +mylk +[ +i +] = * +lk +; + +341 ià( + `¡rcmp +( +p +-> +Çme +, +lk +->name) == 0) + +344 ià( +lk +-> + + == ip) { + +345 + `APP_LOG +( +p +, +HIGH +, + +347 +lk +-> +Çme +); + +352 ià(( +dth + == 0) || (depth > 32)) { + +353 + `APP_LOG +( +p +, +HIGH +, "Illegal value for depth arameter " + +354 "(%" +PRIu32 + ")", + +355 +dth +); + +360 +p +-> + + = ip; + +361 +p +-> +dth + = depth; + +362 #iâdeà +VNF_ACL + + +363 ià( + `ifm_add_v4_pÜt +( +lk_id +, + `¹e_bsw32 +( + +), +dth +è=ð +IFM_FAILURE +) + +368 + } +} + +371 + $cÚvt_´efixËn_to_Ãtmask_v6 +( +ut32_t + +dth +, +ut8_t + +Ãtmask_v6 +[]) + +373 +mod +, +div +, +i +; + +375 + `mem£t +( +Ãtmask_v6 +, 0, 16); + +377 +mod + = +dth + % 8; + +378 +div + = +dth + / 8; + +380 +i + = 0; i < +div +; i++) + +381 +Ãtmask_v6 +[ +i +] = 0xff; + +383 +Ãtmask_v6 +[ +i +] = (~0 << (8 - +mod +)); + +386 + } +} + +389 + $g_ho¡_pÜtiÚ_v6 +( +ut8_t + +v6 +[], ut8_ +Ãtmask +[], ut8_ +ho¡_v6 +[]) + +391 +i +; + +393 +i + = 0; i < 16; i++) { + +394 +ho¡_v6 +[ +i +] = +v6 +[i] & +Ãtmask +[i]; + +398 + } +} + +401 + $g_bÿ¡_pÜtiÚ_v6 +( +ut8_t + +ho¡ +[], ut8_ +Ãtmask +[], ut8_ +bÿ¡_v6 +[]) + +403 +i +; + +405 +i + = 0; i < 16; i++) { + +406 +bÿ¡_v6 +[ +i +] = +ho¡ +[i] | ~ +Ãtmask +[i]; + +410 + } +} + +413 + $p_lk_cÚfig_v6 +( +p_·¿ms + * +p +, + +414 +ut32_t + +lk_id +, +ut8_t + +v6 +[], ut32_ +dth +) + +416 +p_lk_·¿ms + * +p +; + +417 +ut32_t + +i +; + +418 +ut8_t + +Ãtmask_v6 +[16], +ho¡ +[16], +bÿ¡ +[16]; + +421 ià( +p + =ð +NULL +) + +424 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +425 ià( +p + =ð +NULL +) { + +426 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +427 +lk_id +); + +431 ià( +p +-> +¡©e +) { + +432 + `APP_LOG +( +p +, +HIGH +, "%s is UP, lease bring it DOWN first", + +433 +p +-> +Çme +); + +437 + `cÚvt_´efixËn_to_Ãtmask_v6 +( +dth +, +Ã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_lks +; i++) { + +442 +p_lk_·¿ms + * +lk + = & +p +-> +lk_·¿ms +[ +i +]; + +444 ià( + `¡rcmp +( +p +-> +Çme +, +lk +->name) == 0) + +447 ià(! + `memcmp +( +lk +-> +v6 +, ipv6, 16)) { + +448 + `APP_LOG +( +p +, +HIGH +, + +450 +lk +-> +Çme +); + +455 ià(( +dth + == 0) || (depth > 128)) { + +456 + `APP_LOG +( +p +, +HIGH +, "Illegal value for depth arameter " + +457 "(%" +PRIu32 + ")", +dth +); + +462 + `memýy +( +p +-> +v6 +, ipv6, 16); + +464 +p +-> +dth_v6 + = +dth +; + +471 #iâdeà +VNF_ACL + + +472 ià( + `ifm_add_v6_pÜt +( +lk_id +, +v6 +, +dth +è=ð +IFM_FAILURE +) + +476 + } +} + +479 + $p_lk_up +( +p_·¿ms + * +p +, + +480 +ut32_t + +lk_id +) + +482 +p_lk_·¿ms + * +p +; + +485 ià( +p + =ð +NULL +) + +488 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +489 ià( +p + =ð +NULL +) { + +490 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +491 +lk_id +); + +496 ià( +p +-> +¡©e +) { + +497 + `APP_LOG +( +p +, +HIGH +, "% i ®»ady UP", +p +-> +Çme +); + +502 +ut8_t + +mp +[16]; + +504 + `mem£t +( +mp +, 0, 16); + +506 ià(( +p +-> + + || + `memcmp +Õ-> +v6 +, +mp +, 16)) == 0) { + +507 + `APP_LOG +( +p +, +HIGH +, "% IPdd»s i nÙ s", +p +-> +Çme +); + +511 + `p_lk_up_º® +( +p +, +p +); + +514 + } +} + +517 + $p_lk_down +( +p_·¿ms + * +p +, + +518 +ut32_t + +lk_id +) + +520 +p_lk_·¿ms + * +p +; + +523 ià( +p + =ð +NULL +) + +526 + `APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +527 ià( +p + =ð +NULL +) { + +528 + `APP_LOG +( +p +, +HIGH +, "LINK%" +PRIu32 + " isot validink", + +529 +lk_id +); + +534 ià( +p +-> +¡©e + == 0) { + +535 + `APP_LOG +( +p +, +HIGH +, "% i ®»ady DOWN", +p +-> +Çme +); + +539 + `p_lk_down_º® +( +p +, +p +); + +542 + } +} + +548 + scmd_pg_»suÉ + { + +549 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +550 +ut32_t + + mpe_id +; + +551 +cmdle_fixed_¡rg_t + + mpg_¡rg +; + +555 + $cmd_pg_·r£d +( + +556 * +·r£d_»suÉ +, + +557 +__¹e_unu£d + +cmdle + * +þ +, + +558 * +d©a +) + +560 +cmd_pg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +561 +p_·¿ms + * +p + = +d©a +; + +562 +¡©us +; + +564 +¡©us + = + `p_pe_pg +( +p +, +·¿ms +-> +pe_id +); + +565 ià( +¡©us + != 0) + +566 + `´tf +("Command failed\n"); + +567 + } +} + +569 +cmdle_·r£_tok_¡rg_t + + gcmd_pg_p_¡rg + = + +570 +TOKEN_STRING_INITIALIZER +( +cmd_pg_»suÉ +, +p_¡rg +, "p"); + +572 +cmdle_·r£_tok_num_t + + gcmd_pg_pe_id + = + +573 +TOKEN_NUM_INITIALIZER +( +cmd_pg_»suÉ +, +pe_id +, +UINT32 +); + +575 +cmdle_·r£_tok_¡rg_t + + gcmd_pg_pg_¡rg + = + +576 +TOKEN_STRING_INITIALIZER +( +cmd_pg_»suÉ +, +pg_¡rg +, "ping"); + +578 +cmdle_·r£_¡_t + + gcmd_pg + = { + +579 . +f + = +cmd_pg_·r£d +, + +580 . + gd©a + = +NULL +, + +581 . + ghp_¡r + = "Pipeline ing", + +582 . + gtoks + = { + +583 (*è& +cmd_pg_p_¡rg +, + +584 (*è& +cmd_pg_pe_id +, + +585 (*è& +cmd_pg_pg_¡rg +, + +586 +NULL +, + +594 + scmd_¡©s_pÜt__»suÉ + { + +595 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +596 +ut32_t + + mpe_id +; + +597 +cmdle_fixed_¡rg_t + + m¡©s_¡rg +; + +598 +cmdle_fixed_¡rg_t + + mpÜt_¡rg +; + +599 +cmdle_fixed_¡rg_t + + m_¡rg +; + +600 +ut32_t + + mpÜt__id +; + +604 + $cmd_¡©s_pÜt__·r£d +( + +605 * +·r£d_»suÉ +, + +606 +__¹e_unu£d + +cmdle + * +þ +, + +607 * +d©a +) + +609 +cmd_¡©s_pÜt__»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +610 +p_·¿ms + * +p + = +d©a +; + +611 +¹e_pe_pÜt__¡©s + +¡©s +; + +612 +¡©us +; + +614 +¡©us + = + `p_pe_¡©s_pÜt_ +( +p +, + +615 +·¿ms +-> +pe_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 +-> +pe_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 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt__p_¡rg + = + +637 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt__»suÉ +, +p_¡rg +, + +640 +cmdle_·r£_tok_num_t + + gcmd_¡©s_pÜt__pe_id + = + +641 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt__»suÉ +, +pe_id +, + +642 +UINT32 +); + +644 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt__¡©s_¡rg + = + +645 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt__»suÉ +, +¡©s_¡rg +, + +648 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt__pÜt_¡rg + = + +649 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt__»suÉ +, +pÜt_¡rg +, + +652 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt___¡rg + = + +653 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt__»suÉ +, +_¡rg +, + +656 +cmdle_·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 +cmdle_·r£_¡_t + + gcmd_¡©s_pÜt_ + = { + +661 . +f + = +cmd_¡©s_pÜt__·r£d +, + +662 . + gd©a + = +NULL +, + +663 . + ghp_¡r + = "Pipeline input ort stats", + +664 . + gtoks + = { + +665 (*è& +cmd_¡©s_pÜt__p_¡rg +, + +666 (*è& +cmd_¡©s_pÜt__pe_id +, + +667 (*è& +cmd_¡©s_pÜt__¡©s_¡rg +, + +668 (*è& +cmd_¡©s_pÜt__pÜt_¡rg +, + +669 (*è& +cmd_¡©s_pÜt___¡rg +, + +670 (*è& +cmd_¡©s_pÜt__pÜt__id +, + +671 +NULL +, + +679 + scmd_¡©s_pÜt_out_»suÉ + { + +680 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +681 +ut32_t + + mpe_id +; + +682 +cmdle_fixed_¡rg_t + + m¡©s_¡rg +; + +683 +cmdle_fixed_¡rg_t + + mpÜt_¡rg +; + +684 +cmdle_fixed_¡rg_t + + mout_¡rg +; + +685 +ut32_t + + mpÜt_out_id +; + +689 + $cmd_¡©s_pÜt_out_·r£d +( + +690 * +·r£d_»suÉ +, + +691 +__¹e_unu£d + +cmdle + * +þ +, + +692 * +d©a +) + +695 +cmd_¡©s_pÜt_out_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +696 +p_·¿ms + * +p + = +d©a +; + +697 +¹e_pe_pÜt_out_¡©s + +¡©s +; + +698 +¡©us +; + +700 +¡©us + = + `p_pe_¡©s_pÜt_out +( +p +, + +701 +·¿ms +-> +pe_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 +-> +pe_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 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt_out_p_¡rg + = + +723 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +p_¡rg +, + +726 +cmdle_·r£_tok_num_t + + gcmd_¡©s_pÜt_out_pe_id + = + +727 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +pe_id +, + +728 +UINT32 +); + +730 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt_out_¡©s_¡rg + = + +731 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +¡©s_¡rg +, + +734 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt_out_pÜt_¡rg + = + +735 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +pÜt_¡rg +, + +738 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_pÜt_out_out_¡rg + = + +739 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_pÜt_out_»suÉ +, +out_¡rg +, + +742 +cmdle_·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 +cmdle_·r£_¡_t + + gcmd_¡©s_pÜt_out + = { + +747 . +f + = +cmd_¡©s_pÜt_out_·r£d +, + +748 . + gd©a + = +NULL +, + +749 . + ghp_¡r + = "Pipeline output ort stats", + +750 . + gtoks + = { + +751 (*è& +cmd_¡©s_pÜt_out_p_¡rg +, + +752 (*è& +cmd_¡©s_pÜt_out_pe_id +, + +753 (*è& +cmd_¡©s_pÜt_out_¡©s_¡rg +, + +754 (*è& +cmd_¡©s_pÜt_out_pÜt_¡rg +, + +755 (*è& +cmd_¡©s_pÜt_out_out_¡rg +, + +756 (*è& +cmd_¡©s_pÜt_out_pÜt_out_id +, + +757 +NULL +, + +765 + scmd_¡©s_bË_»suÉ + { + +766 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +767 +ut32_t + + mpe_id +; + +768 +cmdle_fixed_¡rg_t + + m¡©s_¡rg +; + +769 +cmdle_fixed_¡rg_t + + mbË_¡rg +; + +770 +ut32_t + + mbË_id +; + +774 + $cmd_¡©s_bË_·r£d +( + +775 * +·r£d_»suÉ +, + +776 +__¹e_unu£d + +cmdle + * +þ +, + +777 * +d©a +) + +779 +cmd_¡©s_bË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +780 +p_·¿ms + * +p + = +d©a +; + +781 +¹e_pe_bË_¡©s + +¡©s +; + +782 +¡©us +; + +784 +¡©us + = + `p_pe_¡©s_bË +( +p +, + +785 +·¿ms +-> +pe_id +, + +786 +·¿ms +-> +bË_id +, + +787 & +¡©s +); + +789 ià( +¡©us + != 0) { + +790 + `´tf +("Command failed\n"); + +795 + `´tf +("P%" +PRIu32 + " - stats forable %" PRIu32 ":\n" + +796 "\tPkt : %" +PRIu64 + "\n" + +797 "\tPkt whooku°miss: %" +PRIu64 + "\n" + +798 "\tPkt whooku°h drݳd by AH: %" +PRIu64 + "\n" + +799 "\tPkt whooku°h drݳd by oths: %" +PRIu64 + "\n" + +800 "\tPkt whooku°mis drݳd by AH: %" +PRIu64 + "\n" + +801 "\tPkt whooku°mis drݳd by oths: %" +PRIu64 + "\n", + +802 +·¿ms +-> +pe_id +, + +803 +·¿ms +-> +bË_id +, + +804 +¡©s +.¡©s. +n_pkts_ +, + +805 +¡©s +.¡©s. +n_pkts_lookup_miss +, + +806 +¡©s +. +n_pkts_drݳd_by_lkp_h_ah +, + +807 +¡©s +. +n_pkts_drݳd_lkp_h +, + +808 +¡©s +. +n_pkts_drݳd_by_lkp_miss_ah +, + +809 +¡©s +. +n_pkts_drݳd_lkp_miss +); + +810 + } +} + +812 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_bË_p_¡rg + = + +813 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +p_¡rg +, + +816 +cmdle_·r£_tok_num_t + + gcmd_¡©s_bË_pe_id + = + +817 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +pe_id +, + +818 +UINT32 +); + +820 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_bË_¡©s_¡rg + = + +821 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +¡©s_¡rg +, + +824 +cmdle_·r£_tok_¡rg_t + + gcmd_¡©s_bË_bË_¡rg + = + +825 +TOKEN_STRING_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +bË_¡rg +, + +828 +cmdle_·r£_tok_num_t + + gcmd_¡©s_bË_bË_id + = + +829 +TOKEN_NUM_INITIALIZER +( +cmd_¡©s_bË_»suÉ +, +bË_id +, +UINT32 +); + +831 +cmdle_·r£_¡_t + + gcmd_¡©s_bË + = { + +832 . +f + = +cmd_¡©s_bË_·r£d +, + +833 . + gd©a + = +NULL +, + +834 . + ghp_¡r + = "Pipelineable stats", + +835 . + gtoks + = { + +836 (*è& +cmd_¡©s_bË_p_¡rg +, + +837 (*è& +cmd_¡©s_bË_pe_id +, + +838 (*è& +cmd_¡©s_bË_¡©s_¡rg +, + +839 (*è& +cmd_¡©s_bË_bË_¡rg +, + +840 (*è& +cmd_¡©s_bË_bË_id +, + +841 +NULL +, + +849 + scmd_pÜt__abË_»suÉ + { + +850 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +851 +ut32_t + + mpe_id +; + +852 +cmdle_fixed_¡rg_t + + mpÜt_¡rg +; + +853 +cmdle_fixed_¡rg_t + + m_¡rg +; + +854 +ut32_t + + mpÜt__id +; + +855 +cmdle_fixed_¡rg_t + + mabË_¡rg +; + +859 + $cmd_pÜt__abË_·r£d +( + +860 * +·r£d_»suÉ +, + +861 +__¹e_unu£d + +cmdle + * +þ +, + +862 * +d©a +) + +864 +cmd_pÜt__abË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +865 +p_·¿ms + * +p + = +d©a +; + +866 +¡©us +; + +868 +¡©us + = + `p_pe_pÜt__abË +( +p +, + +869 +·¿ms +-> +pe_id +, + +870 +·¿ms +-> +pÜt__id +); + +872 ià( +¡©us + != 0) + +873 + `´tf +("Command failed\n"); + +874 + } +} + +876 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__abË_p_¡rg + = + +877 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__abË_»suÉ +, +p_¡rg +, + +880 +cmdle_·r£_tok_num_t + + gcmd_pÜt__abË_pe_id + = + +881 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt__abË_»suÉ +, +pe_id +, + +882 +UINT32 +); + +884 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__abË_pÜt_¡rg + = + +885 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__abË_»suÉ +, +pÜt_¡rg +, + +888 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__abË__¡rg + = + +889 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__abË_»suÉ +, +_¡rg +, + +892 +cmdle_·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 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__abË_abË_¡rg + = + +897 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__abË_»suÉ +, + +898 +abË_¡rg +, "enable"); + +900 +cmdle_·r£_¡_t + + gcmd_pÜt__abË + = { + +901 . +f + = +cmd_pÜt__abË_·r£d +, + +902 . + gd©a + = +NULL +, + +903 . + ghp_¡r + = "Pipeline input ortnable", + +904 . + gtoks + = { + +905 (*è& +cmd_pÜt__abË_p_¡rg +, + +906 (*è& +cmd_pÜt__abË_pe_id +, + +907 (*è& +cmd_pÜt__abË_pÜt_¡rg +, + +908 (*è& +cmd_pÜt__abË__¡rg +, + +909 (*è& +cmd_pÜt__abË_pÜt__id +, + +910 (*è& +cmd_pÜt__abË_abË_¡rg +, + +911 +NULL +, + +919 + scmd_pÜt__di§bË_»suÉ + { + +920 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +921 +ut32_t + + mpe_id +; + +922 +cmdle_fixed_¡rg_t + + mpÜt_¡rg +; + +923 +cmdle_fixed_¡rg_t + + m_¡rg +; + +924 +ut32_t + + mpÜt__id +; + +925 +cmdle_fixed_¡rg_t + + mdi§bË_¡rg +; + +929 + $cmd_pÜt__di§bË_·r£d +( + +930 * +·r£d_»suÉ +, + +931 +__¹e_unu£d + +cmdle + * +þ +, + +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_pe_pÜt__di§bË +( +p +, + +939 +·¿ms +-> +pe_id +, + +940 +·¿ms +-> +pÜt__id +); + +942 ià( +¡©us + != 0) + +943 + `´tf +("Command failed\n"); + +944 + } +} + +946 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__di§bË_p_¡rg + = + +947 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__di§bË_»suÉ +, +p_¡rg +, + +950 +cmdle_·r£_tok_num_t + + gcmd_pÜt__di§bË_pe_id + = + +951 +TOKEN_NUM_INITIALIZER +( +cmd_pÜt__di§bË_»suÉ +, +pe_id +, + +952 +UINT32 +); + +954 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__di§bË_pÜt_¡rg + = + +955 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__di§bË_»suÉ +, +pÜt_¡rg +, + +958 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__di§bË__¡rg + = + +959 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__di§bË_»suÉ +, +_¡rg +, + +962 +cmdle_·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 +cmdle_·r£_tok_¡rg_t + + gcmd_pÜt__di§bË_di§bË_¡rg + = + +967 +TOKEN_STRING_INITIALIZER +( +cmd_pÜt__di§bË_»suÉ +, + +968 +di§bË_¡rg +, "disable"); + +970 +cmdle_·r£_¡_t + + gcmd_pÜt__di§bË + = { + +971 . +f + = +cmd_pÜt__di§bË_·r£d +, + +972 . + gd©a + = +NULL +, + +973 . + ghp_¡r + = "Pipeline input ort disable", + +974 . + gtoks + = { + +975 (*è& +cmd_pÜt__di§bË_p_¡rg +, + +976 (*è& +cmd_pÜt__di§bË_pe_id +, + +977 (*è& +cmd_pÜt__di§bË_pÜt_¡rg +, + +978 (*è& +cmd_pÜt__di§bË__¡rg +, + +979 (*è& +cmd_pÜt__di§bË_pÜt__id +, + +980 (*è& +cmd_pÜt__di§bË_di§bË_¡rg +, + +981 +NULL +, + +990 + $´t_lk_fo +( +p_lk_·¿ms + * +p +) + +992 +¹e_h_¡©s + +¡©s +; + +993 +h_addr + * +mac_addr +; + +994 +ut32_t + +Ãtmask + = (~0Uè<< (32 - +p +-> +dth +); + +995 +ut32_t + +ho¡ + = +p +-> + + & +Ãtmask +; + +996 +ut32_t + +bÿ¡ + = +ho¡ + | (~ +Ãtmask +); + +998 + `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_bys +[0], + +1036 +mac_addr +-> +addr_bys +[1], + +1037 +mac_addr +-> +addr_bys +[2], + +1038 +mac_addr +-> +addr_bys +[3], + +1039 +mac_addr +-> +addr_bys +[4], + +1040 +mac_addr +-> +addr_bys +[5]); + +1042 + `´tf +("\tRX ack %" +PRIu64 + + +1043 " by %" +PRIu64 + + +1045 +¡©s +. +acks +, + +1046 +¡©s +. +ibys +); + +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 +. +Ýacks +, + +1059 +¡©s +. +obys +); + +1061 + `´tf +("\tTX¼Ü %" +PRIu64 + + +1063 +¡©s +. +Û¼Üs +); + +1065 + `´tf +("\n"); + +1066 + } +} + +1068 + scmd_lk_cÚfig_»suÉ + { + +1069 +cmdle_fixed_¡rg_t + + mlk_¡rg +; + +1070 +ut32_t + + mlk_id +; + +1071 +cmdle_fixed_¡rg_t + + mcÚfig_¡rg +; + +1072 +cmdle_addr_t + + m +; + +1073 +ut32_t + + mdth +; + +1077 +cmd_lk_cÚfig_·r£d +( + +1078 * +·r£d_»suÉ +, + +1079 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +1080 * +d©a +) + +1082 +cmd_lk_cÚfig_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1083 +p_·¿ms + * + gp + = +d©a +; + +1084 + g¡©us +; + +1086 +ut32_t + + glk_id + = +·¿ms +-> +lk_id +; + +1087 +ut32_t + + g +; + +1088 +ut8_t + + gv6 +[16]; + +1089 ià( + g·¿ms +-> + g +. + gçmy + =ð +AF_INET +) + +1090 + + = +¹e_bsw32 +(( +ut32_t +è +·¿ms +->. +addr +. +v4 +. +s_addr +); + +1092 +memýy +( +v6 +, +·¿ms +-> + +. +addr +.v6. +s6_addr +, 16); + +1094 +ut32_t + + gdth + = +·¿ms +-> +dth +; + +1096 ià( + g·¿ms +-> + g +. + gçmy + =ð +AF_INET +) + +1097 +¡©us + = +p_lk_cÚfig +( +p +, +lk_id +, + +, +dth +); + +1099 + g¡©us + = +p_lk_cÚfig_v6 +( +p +, +lk_id +, +v6 +, +dth +); + +1101 ià( + g¡©us +) + +1102 +´tf +("Command failed\n"); + +1104 +p_lk_·¿ms + * + gp +; + +1106 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +1107 ià( + gp +) + +1108 +´t_lk_fo +( +p +); + +1112 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_cÚfig_lk_¡rg + = + +1113 +TOKEN_STRING_INITIALIZER +( +cmd_lk_cÚfig_»suÉ +, +lk_¡rg +, + +1116 +cmdle_·r£_tok_num_t + + gcmd_lk_cÚfig_lk_id + = + +1117 +TOKEN_NUM_INITIALIZER +( +cmd_lk_cÚfig_»suÉ +, +lk_id +, +UINT32 +); + +1119 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_cÚfig_cÚfig_¡rg + = + +1120 +TOKEN_STRING_INITIALIZER +( +cmd_lk_cÚfig_»suÉ +, +cÚfig_¡rg +, + +1123 +cmdle_·r£_tok_addr_t + + gcmd_lk_cÚfig_ + = + +1124 +TOKEN_IPADDR_INITIALIZER +( +cmd_lk_cÚfig_»suÉ +, + +); + +1126 +cmdle_·r£_tok_num_t + + gcmd_lk_cÚfig_dth + = + +1127 +TOKEN_NUM_INITIALIZER +( +cmd_lk_cÚfig_»suÉ +, +dth +, +UINT32 +); + +1129 +cmdle_·r£_¡_t + + gcmd_lk_cÚfig + = { + +1130 . +f + = +cmd_lk_cÚfig_·r£d +, + +1131 . + gd©a + = +NULL +, + +1132 . + ghp_¡r + = "Link configuration", + +1133 . + gtoks + = { + +1134 (*)& +cmd_lk_cÚfig_lk_¡rg +, + +1135 (*)& +cmd_lk_cÚfig_lk_id +, + +1136 (*)& +cmd_lk_cÚfig_cÚfig_¡rg +, + +1137 (*)& +cmd_lk_cÚfig_ +, + +1138 (*)& +cmd_lk_cÚfig_dth +, + +1139 +NULL +, + +1147 + scmd_lk_up_»suÉ + { + +1148 +cmdle_fixed_¡rg_t + + mlk_¡rg +; + +1149 +ut32_t + + mlk_id +; + +1150 +cmdle_fixed_¡rg_t + + mup_¡rg +; + +1154 +cmd_lk_up_·r£d +( + +1155 * +·r£d_»suÉ +, + +1156 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +1157 * +d©a +) + +1159 +cmd_lk_up_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1160 +p_·¿ms + * + gp + = +d©a +; + +1161 + g¡©us +; + +1163 + g¡©us + = +p_lk_up +( +p +, +·¿ms +-> +lk_id +); + +1164 ià( + g¡©us + != 0) + +1165 +´tf +("Command failed\n"); + +1167 +p_lk_·¿ms + * + gp +; + +1169 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +·¿ms +-> +lk_id +, + +1170 +p +); + +1171 ià( + gp +) + +1172 +´t_lk_fo +( +p +); + +1176 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_up_lk_¡rg + = + +1177 +TOKEN_STRING_INITIALIZER +( +cmd_lk_up_»suÉ +, +lk_¡rg +, + +1180 +cmdle_·r£_tok_num_t + + gcmd_lk_up_lk_id + = + +1181 +TOKEN_NUM_INITIALIZER +( +cmd_lk_up_»suÉ +, +lk_id +, +UINT32 +); + +1183 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_up_up_¡rg + = + +1184 +TOKEN_STRING_INITIALIZER +( +cmd_lk_up_»suÉ +, +up_¡rg +, "up"); + +1186 +cmdle_·r£_¡_t + + gcmd_lk_up + = { + +1187 . +f + = +cmd_lk_up_·r£d +, + +1188 . + gd©a + = +NULL +, + +1189 . + ghp_¡r + = "Link UP", + +1190 . + gtoks + = { + +1191 (*)& +cmd_lk_up_lk_¡rg +, + +1192 (*)& +cmd_lk_up_lk_id +, + +1193 (*)& +cmd_lk_up_up_¡rg +, + +1194 +NULL +, + +1202 + scmd_lk_down_»suÉ + { + +1203 +cmdle_fixed_¡rg_t + + mlk_¡rg +; + +1204 +ut32_t + + mlk_id +; + +1205 +cmdle_fixed_¡rg_t + + mdown_¡rg +; + +1209 +cmd_lk_down_·r£d +( + +1210 * +·r£d_»suÉ +, + +1211 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +1212 * +d©a +) + +1214 +cmd_lk_down_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1215 +p_·¿ms + * + gp + = +d©a +; + +1216 + g¡©us +; + +1218 + g¡©us + = +p_lk_down +( +p +, +·¿ms +-> +lk_id +); + +1219 ià( + g¡©us + != 0) + +1220 +´tf +("Command failed\n"); + +1222 +p_lk_·¿ms + * + gp +; + +1224 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +·¿ms +-> +lk_id +, + +1225 +p +); + +1226 ià( + gp +) + +1227 +´t_lk_fo +( +p +); + +1231 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_down_lk_¡rg + = + +1232 +TOKEN_STRING_INITIALIZER +( +cmd_lk_down_»suÉ +, +lk_¡rg +, + +1235 +cmdle_·r£_tok_num_t + + gcmd_lk_down_lk_id + = + +1236 +TOKEN_NUM_INITIALIZER +( +cmd_lk_down_»suÉ +, +lk_id +, +UINT32 +); + +1238 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_down_down_¡rg + = + +1239 +TOKEN_STRING_INITIALIZER +( +cmd_lk_down_»suÉ +, +down_¡rg +, + +1242 +cmdle_·r£_¡_t + + gcmd_lk_down + = { + +1243 . +f + = +cmd_lk_down_·r£d +, + +1244 . + gd©a + = +NULL +, + +1245 . + ghp_¡r + = "Link DOWN", + +1246 . + gtoks + = { + +1247 (*è& +cmd_lk_down_lk_¡rg +, + +1248 (*è& +cmd_lk_down_lk_id +, + +1249 (*è& +cmd_lk_down_down_¡rg +, + +1250 +NULL +, + +1258 + scmd_lk_ls_»suÉ + { + +1259 +cmdle_fixed_¡rg_t + + mlk_¡rg +; + +1260 +cmdle_fixed_¡rg_t + + mls_¡rg +; + +1264 +cmd_lk_ls_·r£d +( + +1265 +__©ibu__ +(( +unu£d +)è* +·r£d_»suÉ +, + +1266 +__©ibu__ +(( +unu£d +)è +cmdle + * +þ +, + +1267 * +d©a +) + +1269 +p_·¿ms + * + gp + = +d©a +; + +1270 +ut32_t + + glk_id +; + +1272 + glk_id + = 0;k_id < + gp +-> + gn_lks +;ink_id++) { + +1273 +p_lk_·¿ms + * + gp +; + +1275 +APP_PARAM_FIND_BY_ID +( +p +-> +lk_·¿ms +, "LINK", +lk_id +, +p +); + +1276 ià( + gp +) + +1277 +´t_lk_fo +( +p +); + +1279 #iâdeà +VNF_ACL + + +1280 +´t_rçû_das +(); + +1284 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_ls_lk_¡rg + = + +1285 +TOKEN_STRING_INITIALIZER +( +cmd_lk_ls_»suÉ +, +lk_¡rg +, + +1288 +cmdle_·r£_tok_¡rg_t + + gcmd_lk_ls_ls_¡rg + = + +1289 +TOKEN_STRING_INITIALIZER +( +cmd_lk_ls_»suÉ +, +ls_¡rg +, "ls"); + +1291 +cmdle_·r£_¡_t + + gcmd_lk_ls + = { + +1292 . +f + = +cmd_lk_ls_·r£d +, + +1293 . + gd©a + = +NULL +, + +1294 . + ghp_¡r + = "Linkist", + +1295 . + gtoks + = { + +1296 (*)& +cmd_lk_ls_lk_¡rg +, + +1297 (*)& +cmd_lk_ls_ls_¡rg +, + +1298 +NULL +, + +1306 + scmd_qu_»suÉ + { + +1307 +cmdle_fixed_¡rg_t + + mqu +; + +1311 + $cmd_qu_·r£d +( + +1312 +__¹e_unu£d + * +·r£d_»suÉ +, + +1313 +cmdle + * +þ +, + +1314 +__¹e_unu£d + * +d©a +) + +1316 + `cmdle_qu +( +þ +); + +1317 + } +} + +1319 +cmdle_·r£_tok_¡rg_t + + gcmd_qu_qu + = + +1320 +TOKEN_STRING_INITIALIZER +( +cmd_qu_»suÉ +, +qu +, "quit"); + +1322 +cmdle_·r£_¡_t + + gcmd_qu + = { + +1323 . +f + = +cmd_qu_·r£d +, + +1324 . + gd©a + = +NULL +, + +1325 . + ghp_¡r + = "Quit", + +1326 . + gtoks + = { + +1327 (*è& +cmd_qu_qu +, + +1328 +NULL +, + +1337 + $p_run_fe +( + +1338 +cmdle_·r£_ùx_t + * +ùx +, + +1339 cÚ¡ * +fe_Çme +) + +1341 +cmdle + * +fe_þ +; + +1342 +fd +; + +1344 +fd + = + `Ý +( +fe_Çme +, +O_RDONLY +); + +1345 ià( +fd + < 0) { + +1346 + `´tf +("CªnÙ o³Àf\"%s\"\n", +fe_Çme +); + +1350 +fe_þ + = + `cmdle_Ãw +( +ùx +, "", +fd +, 1); + +1351 + `cmdle_¿ù +( +fe_þ +); + +1352 + `þo£ +( +fd +); + +1353 + } +} + +1355 + scmd_run_fe_»suÉ + { + +1356 +cmdle_fixed_¡rg_t + + mrun_¡rg +; + +1357 + mfe_Çme +[ +APP_FILE_NAME_SIZE +]; + +1361 +cmd_run_·r£d +( + +1362 * +·r£d_»suÉ +, + +1363 +cmdle + * +þ +, + +1364 +__©ibu__ +(( +unu£d +)è* +d©a +) + +1366 +cmd_run_fe_»suÉ + * + g·¿ms + = +·r£d_»suÉ +; + +1368 +p_run_fe +( +þ +-> +ùx +, +·¿ms +-> +fe_Çme +); + +1371 +cmdle_·r£_tok_¡rg_t + + gcmd_run_run_¡rg + = + +1372 +TOKEN_STRING_INITIALIZER +( +cmd_run_fe_»suÉ +, +run_¡rg +, + +1375 +cmdle_·r£_tok_¡rg_t + + gcmd_run_fe_Çme + = + +1376 +TOKEN_STRING_INITIALIZER +( +cmd_run_fe_»suÉ +, +fe_Çme +, +NULL +); + +1378 +cmdle_·r£_¡_t + + gcmd_run + = { + +1379 . +f + = +cmd_run_·r£d +, + +1380 . + gd©a + = +NULL +, + +1381 . + ghp_¡r + = "Run CLI script file", + +1382 . + gtoks + = { + +1383 (*è& +cmd_run_run_¡rg +, + +1384 (*è& +cmd_run_fe_Çme +, + +1385 +NULL +, + +1389 +cmdle_·r£_ùx_t + + gpe_commÚ_cmds +[] = { + +1390 ( +cmdle_·r£_¡_t + *è& +cmd_qu +, + +1391 ( +cmdle_·r£_¡_t + *è& +cmd_run +, + +1393 ( +cmdle_·r£_¡_t + *è& +cmd_lk_cÚfig +, + +1394 ( +cmdle_·r£_¡_t + *è& +cmd_lk_up +, + +1395 ( +cmdle_·r£_¡_t + *è& +cmd_lk_down +, + +1396 ( +cmdle_·r£_¡_t + *è& +cmd_lk_ls +, + +1398 ( +cmdle_·r£_¡_t + *è& +cmd_pg +, + +1399 ( +cmdle_·r£_¡_t + *è& +cmd_¡©s_pÜt_ +, + +1400 ( +cmdle_·r£_¡_t + *è& +cmd_¡©s_pÜt_out +, + +1401 ( +cmdle_·r£_¡_t + *è& +cmd_¡©s_bË +, + +1402 ( +cmdle_·r£_¡_t + *è& +cmd_pÜt__abË +, + +1403 ( +cmdle_·r£_¡_t + *è& +cmd_pÜt__di§bË +, + +1404 +NULL +, + +1408 + $p_pe_commÚ_cmd_push +( +p_·¿ms + * +p +) + +1410 +ut32_t + +n_cmds +, +i +; + +1413 +n_cmds + = + `RTE_DIM +( +pe_commÚ_cmds +) - 1; + +1414 ià( +n_cmds + > +APP_MAX_CMDS + - +p +->n_cmds) + +1415 - +ENOMEM +; + +1418 + `memýy +(& +p +-> +cmds +[p-> +n_cmds +], + +1419 +pe_commÚ_cmds +, + +1420 +n_cmds + * ( +cmdle_·r£_ùx_t +)); + +1422 +i + = 0; i < +n_cmds +; i++) + +1423 +p +-> +cmds +[p-> +n_cmds + + +i +]-> +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 + ~<cmdle_·r£.h +> + +25 + ~"pe_commÚ_be.h +" + +26 + ~"pe.h +" + +27 + ~"p.h +" + +29 #iâdeà +MSG_TIMEOUT_DEFAULT + + +30 + #MSG_TIMEOUT_DEFAULT + 1000 + + ) + +32 +p_lk_·¿ms + + gmylk +[ +APP_MAX_LINKS +]; + +33 +le + +p_pe_d©a + * + +34 + $p_pe_d©a +( +p_·¿ms + * +p +, +ut32_t + +id +) + +36 +p_pe_·¿ms + * +·¿ms +; + +38 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, "PIPELINE", +id +, +·¿ms +); + +39 ià( +·¿ms + =ð +NULL +) + +40 +NULL +; + +42 & +p +-> +pe_d©a +[ +·¿ms + -µ-> +pe_·¿ms +]; + +43 + } +} + +45 +le + * + +46 + $p_pe_d©a_ã +( +p_·¿ms + * +p +, +ut32_t + +id +, +pe_ty³ + * +±y³ +) + +48 +p_pe_d©a + * +pe_d©a +; + +50 +pe_d©a + = + `p_pe_d©a +( +p +, +id +); + +51 ià( +pe_d©a + =ð +NULL +) + +52 +NULL +; + +54 ià( + `¡rcmp +( +pe_d©a +-> +±y³ +-> +Çme +, type->name) != 0) + +55 +NULL +; + +57 ià( +pe_d©a +-> +abËd + == 0) + +58 +NULL +; + +60 +pe_d©a +-> +ã +; + +61 + } +} + +63 +le + +¹e_rg + * + +64 + $p_pe_msgq__g +( +p_·¿ms + * +p +, + +65 +ut32_t + +pe_id +) + +67 +p_msgq_·¿ms + * +p +; + +69 + `APP_PARAM_FIND_BY_ID +( +p +-> +msgq_·¿ms +, + +71 +pe_id +, + +72 +p +); + +73 ià( +p + =ð +NULL +) + +74 +NULL +; + +76 +p +-> +msgq +[ +p + -µ-> +msgq_·¿ms +]; + +77 + } +} + +79 +le + +¹e_rg + * + +80 + $p_pe_msgq_out_g +( +p_·¿ms + * +p +, + +81 +ut32_t + +pe_id +) + +83 +p_msgq_·¿ms + * +p +; + +85 + `APP_PARAM_FIND_BY_ID +( +p +-> +msgq_·¿ms +, + +87 +pe_id +, + +88 +p +); + +89 ià( +p + =ð +NULL +) + +90 +NULL +; + +92 +p +-> +msgq +[ +p + -µ-> +msgq_·¿ms +]; + +93 + } +} + +95 +le + * + +96 + $p_msg_®loc +( +__¹e_unu£d + +p_·¿ms + * +p +) + +98 + `¹e_m®loc +( +NULL +, 2048, +RTE_CACHE_LINE_SIZE +); + +99 + } +} + +101 +le + + +102 + $p_msg_ä +( +__¹e_unu£d + +p_·¿ms + * +p +, + +103 * +msg +) + +105 + `¹e_ä +( +msg +); + +106 + } +} + +108 +le + + +109 + $p_msg_£nd +( +p_·¿ms + * +p +, + +110 +ut32_t + +pe_id +, + +111 * +msg +) + +113 +¹e_rg + * +r + = + `p_pe_msgq__g +( +p +, +pe_id +); + +114 +¡©us +; + +117 +¡©us + = + `¹e_rg_¥_queue +( +r +, +msg +); + +118 } +¡©us + =ð- +ENOBUFS +); + +119 + } +} + +121 +le + * + +122 + $p_msg_»cv +( +p_·¿ms + * +p +, + +123 +ut32_t + +pe_id +) + +125 +¹e_rg + * +r + = + `p_pe_msgq_out_g +( +p +, +pe_id +); + +126 * +msg +; + +127 +¡©us + = + `¹e_rg_sc_dequeue +( +r +, & +msg +); + +129 ià( +¡©us + != 0) + +130 +NULL +; + +132 +msg +; + +133 + } +} + +135 +le + * + +136 + $p_msg_£nd_»cv +( +p_·¿ms + * +p +, + +137 +ut32_t + +pe_id +, + +138 * +msg +, + +139 +ut32_t + +timeout_ms +) + +141 +¹e_rg + * +r_»q + = + `p_pe_msgq__g +( +p +, +pe_id +); + +142 +¹e_rg + * +r_r¥ + = + `p_pe_msgq_out_g +( +p +, +pe_id +); + +143 +ut64_t + +hz + = + `¹e_g_tsc_hz +(); + +144 * +msg_»cv + = +NULL +; + +145 +ut64_t + +ddle +; + +146 +¡©us + = 0; + +150 if( +r_»q +) + +151 +¡©us + = + `¹e_rg_¥_queue +( +r_»q +, (*è +msg +); + +152 } +¡©us + =ð- +ENOBUFS +); + +155 +ddle + = ( +timeout_ms +) ? + +156 ( + `¹e_rdtsc +(è+ (( +hz + * +timeout_ms +) / 1000)) : + +157 +UINT64_MAX +; + +160 ià( + `¹e_rdtsc +(è> +ddle +) + +161 +NULL +; + +162 ià( +r_r¥ +) + +163 +¡©us + = + `¹e_rg_sc_dequeue +( +r_r¥ +, & +msg_»cv +); + +164 } +¡©us + != 0); + +166 +msg_»cv +; + +167 + } +} + +170 +p_pe_pg +( +p_·¿ms + * +p +, + +171 +ut32_t + +pe_id +); + +174 +p_pe_¡©s_pÜt_ +( +p_·¿ms + * +p +, + +175 +ut32_t + +pe_id +, + +176 +ut32_t + +pÜt_id +, + +177 +¹e_pe_pÜt__¡©s + * +¡©s +); + +180 +p_pe_¡©s_pÜt_out +( +p_·¿ms + * +p +, + +181 +ut32_t + +pe_id +, + +182 +ut32_t + +pÜt_id +, + +183 +¹e_pe_pÜt_out_¡©s + * +¡©s +); + +186 +p_pe_¡©s_bË +( +p_·¿ms + * +p +, + +187 +ut32_t + +pe_id +, + +188 +ut32_t + +bË_id +, + +189 +¹e_pe_bË_¡©s + * +¡©s +); + +192 +p_pe_pÜt__abË +( +p_·¿ms + * +p +, + +193 +ut32_t + +pe_id +, + +194 +ut32_t + +pÜt_id +); + +197 +p_pe_pÜt__di§bË +( +p_·¿ms + * +p +, + +198 +ut32_t + +pe_id +, + +199 +ut32_t + +pÜt_id +); + +202 +p_lk_cÚfig +( +p_·¿ms + * +p +, + +203 +ut32_t + +lk_id +, + +204 +ut32_t + + +, + +205 +ut32_t + +dth +); + +208 +p_lk_up +( +p_·¿ms + * +p +, + +209 +ut32_t + +lk_id +); + +212 +p_lk_down +( +p_·¿ms + * +p +, + +213 +ut32_t + +lk_id +); + +216 +p_pe_commÚ_cmd_push +( +p_·¿ms + * +p +); + +219 +cÚvt_´efixËn_to_Ãtmask_v6 +( +ut32_t + +dth +, +ut8_t + +Ãtmask_v6 +[]); + +222 +g_ho¡_pÜtiÚ_v6 +( +ut8_t + +v6 +[], ut8_ +Ãtmask +[], ut8_ +ho¡_v6 +[]); + +225 +g_bÿ¡_pÜtiÚ_v6 +( +ut8_t + +ho¡ +[], ut8_ +Ãtmask +[], ut8_ +bÿ¡_v6 +[]); + +228 +p_lk_cÚfig_v6 +( +p_·¿ms + * +p +, + +229 +ut32_t + +lk_id +, +ut8_t + +v6 +[], ut32_ +dth +); + + @VIL/pipeline_loadb/pipeline_loadb.c + +17 + ~<cmdle_·r£.h +> + +18 + ~<cmdle_·r£_num.h +> + +19 + ~<cmdle_·r£_¡rg.h +> + +20 + ~<cmdle_·r£_addr.h +> + +21 + ~<cmdle_·r£_haddr.h +> + +23 + ~"p.h +" + +24 + ~"pe_commÚ_ã.h +" + +25 + ~"pe_lßdb.h +" + +26 + ~"vnf_commÚ.h +" + +28 + ~"pe_¬picmp_be.h +" + +32 + $p_pe_lßdb_y_dbg +( +p_·¿ms + * +p +, + +33 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +35 +pe_lßdb_y_dbg_msg_»q + * +»q +; + +36 +pe_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 +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +53 ià( +r¥ + =ð +NULL +) + +57 ià( +r¥ +-> +¡©us +) { + +58 + `p_msg_ä +( +p +, +r¥ +); + +59 + `´tf +("E¼Ü¥->¡©u %d\n", +r¥ +-> +¡©us +); + +64 + `p_msg_ä +( +p +, +r¥ +); + +67 + } +} + +73 + scmd_y_dbg_»suÉ + { + +74 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +75 +ut32_t + + mp +; + +76 +cmdle_fixed_¡rg_t + + my_¡rg +; + +77 +cmdle_fixed_¡rg_t + + mdbg_¡rg +; + +78 +ut8_t + + mcmd +; + +79 +ut8_t + + md1 +; + +83 + $cmd_y_dbg_·r£d +(* +·r£d_»suÉ +, + +84 +__¹e_unu£d + +cmdle + * +þ +, * +d©a +) + +86 +cmd_y_dbg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +87 +p_·¿ms + * +p + = +d©a +; + +88 +ut8_t + +msg +[2]; + +89 +¡©us +; + +91 +msg +[0] = +·¿ms +-> +cmd +; + +92 +msg +[1] = +·¿ms +-> +d1 +; + +93 +¡©us + = + `p_pe_lßdb_y_dbg +( +p +, +·¿ms +-> +p +, +msg +); + +95 ià( +¡©us + != 0) { + +96 + `´tf +("Dbg Command failed\n"); + +99 + } +} + +101 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_p_¡rg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p_¡rg +, "p"); + +104 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p +, +UINT32 +); + +107 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_y_¡rg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, + +109 +y_¡rg +, "lbentry"); + +111 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_dbg_¡rg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +dbg_¡rg +, + +115 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +cmd +, +UINT8 +); + +118 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +d1 +, +UINT8 +); + +121 +cmdle_·r£_¡_t + + glb_cmd_y_dbg + = { + +122 . +f + = +cmd_y_dbg_·r£d +, + +123 . + gd©a + = +NULL +, + +124 . + ghp_¡r + = "LOADB dbg cmd", + +125 . + gtoks + = { + +126 (*)& +lb_cmd_y_dbg_p_¡rg +, + +127 (*)& +lb_cmd_y_dbg_p +, + +128 (*)& +lb_cmd_y_dbg_y_¡rg +, + +129 (*)& +lb_cmd_y_dbg_dbg_¡rg +, + +130 (*)& +lb_cmd_y_dbg_cmd +, + +131 (*)& +lb_cmd_y_dbg_d1 +, + +132 +NULL +, + +162 + scmd_¬p_add_»suÉ + { + +163 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +164 +ut32_t + + mp +; + +165 +cmdle_fixed_¡rg_t + + m¬·dd_¡rg +; + +166 +ut32_t + + mpÜt_id +; + +167 +cmdle_addr_t + + m +; + +168 +h_addr + + mmaÿddr +; + +173 + $cmd_¬p_add_·r£d +(* +·r£d_»suÉ +, + +174 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +176 +cmd_¬p_add_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +177 +ut8_t + +v6 +[16]; + +186 ià( +·¿ms +-> + +. +çmy + =ð +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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_add_p_¡rg + = + +198 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p_¡rg +, + +201 +cmdle_·r£_tok_num_t + + gcmd_¬p_add_p + = + +202 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +p +, +UINT32 +); + +204 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_add_¬p_¡rg + = + +205 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_add_»suÉ +, +¬·dd_¡rg +, "arpadd"); + +207 +cmdle_·r£_tok_num_t + + gcmd_¬p_add_pÜt_id + = + +208 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_add_»suÉ +, +pÜt_id +, +UINT32 +); + +210 +cmdle_·r£_tok_addr_t + + gcmd_¬p_add_ + = + +211 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, + +); + +213 +cmdle_·r£_tok_haddr_t + + gcmd_¬p_add_maÿddr + = + +214 +TOKEN_ETHERADDR_INITIALIZER +( +cmd_¬p_add_»suÉ +, +maÿddr +); + +216 +cmdle_·r£_¡_t + + gcmd_¬p_add + = { + +217 . +f + = +cmd_¬p_add_·r£d +, + +218 . + gd©a + = +NULL +, + +219 . + ghp_¡r + = "ARPdd", + +220 . + gtoks + = { + +221 (*)& +cmd_¬p_add_p_¡rg +, + +222 (*)& +cmd_¬p_add_p +, + +223 (*)& +cmd_¬p_add_¬p_¡rg +, + +224 (*)& +cmd_¬p_add_pÜt_id +, + +225 (*)& +cmd_¬p_add_ +, + +226 (*)& +cmd_¬p_add_maÿddr +, + +227 +NULL +, + +235 + scmd_¬p_d_»suÉ + { + +236 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +237 +ut32_t + + mp +; + +238 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +239 +ut32_t + + mpÜt_id +; + +240 +cmdle_addr_t + + m +; + +244 + $cmd_¬p_d_·r£d +(* +·r£d_»suÉ +, + +245 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +247 +cmd_¬p_d_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +248 +ut8_t + +v6 +[16]; + +257 ià( +·¿ms +-> + +. +çmy + =ð +AF_INET +) { + +258 + `»move_¬p_y +( + `¹e_ýu_to_be_32 +( +·¿ms +-> + +. +addr +. +v4 +. +s_addr +), + +259 +·¿ms +-> +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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_d_p_¡rg + = + +267 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +p_¡rg +, + +270 +cmdle_·r£_tok_num_t + + gcmd_¬p_d_p + = + +271 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d_»suÉ +, +p +, +UINT32 +); + +273 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_d_¬p_¡rg + = + +274 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "arpdel"); + +276 +cmdle_·r£_tok_num_t + + gcmd_¬p_d_pÜt_id + = + +277 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_d_»suÉ +, +pÜt_id +, +UINT32 +); + +279 +cmdle_·r£_tok_addr_t + + gcmd_¬p_d_ + = + +280 +TOKEN_IPADDR_INITIALIZER +( +cmd_¬p_d_»suÉ +, + +); + +282 +cmdle_·r£_¡_t + + gcmd_¬p_d + = { + +283 . +f + = +cmd_¬p_d_·r£d +, + +284 . + gd©a + = +NULL +, + +285 . + ghp_¡r + = "ARP delete", + +286 . + gtoks + = { + +287 (*)& +cmd_¬p_d_p_¡rg +, + +288 (*)& +cmd_¬p_d_p +, + +289 (*)& +cmd_¬p_d_¬p_¡rg +, + +290 (*)& +cmd_¬p_d_pÜt_id +, + +291 (*)& +cmd_¬p_d_ +, + +292 +NULL +, + +303 + $cmd_¬p_»q_·r£d +(* +·r£d_»suÉ +, + +304 +__¹e_unu£d + +cmdle + * +þ +, __¹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 +("ARPntryxists for ip 0x%x, ort %d\n", + +326 +·¿ms +-> + +. +addr +. +v4 +. +s_addr +, ¬ams-> +pÜt_id +); + +330 ià( +ARPICMP_DEBUG +) + +331 + `´tf +("ARP -equestingrp 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 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_»q_¡rg + = + +338 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "arpreq"); + +340 +cmdle_·r£_¡_t + + gcmd_¬p_»q + = { + +341 . +f + = +cmd_¬p_»q_·r£d +, + +342 . + gd©a + = +NULL +, + +343 . + ghp_¡r + = "ARPequest", + +344 . + gtoks + = { + +345 (*)& +cmd_¬p_d_p_¡rg +, + +346 (*)& +cmd_¬p_d_p +, + +347 (*)& +cmd_¬p_»q_¡rg +, + +348 (*)& +cmd_¬p_d_pÜt_id +, + +349 (*)& +cmd_¬p_d_ +, + +350 +NULL +, + +361 + $cmd_icmp_echo_»q_·r£d +(* +·r£d_»suÉ +, + +362 +__¹e_unu£d + +cmdle + * +þ +, + +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 +(( +ut8_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_sgË_pkt +ÕÜt, +pkt +); + +375 + } +} + +377 +cmdle_·r£_tok_¡rg_t + + gcmd_icmp_echo_»q_¡rg + = + +378 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_d_»suÉ +, +¬p_¡rg +, "icmpecho"); + +380 +cmdle_·r£_¡_t + + gcmd_icmp_echo_»q + = { + +381 . +f + = +cmd_icmp_echo_»q_·r£d +, + +382 . + gd©a + = +NULL +, + +383 . + ghp_¡r + = "ICMPchoequest", + +384 . + gtoks + = { + +385 (*)& +cmd_¬p_d_p_¡rg +, + +386 (*)& +cmd_¬p_d_p +, + +387 (*)& +cmd_icmp_echo_»q_¡rg +, + +388 (*)& +cmd_¬p_d_pÜt_id +, + +389 (*)& +cmd_¬p_d_ +, + +390 +NULL +, + +398 + scmd_¬p_ls_»suÉ + { + +399 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +400 +ut32_t + + mp +; + +401 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +405 + $cmd_¬p_ls_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +406 +__¹e_unu£d + +cmdle + * +þ +, __¹e_unu£d * +d©a +) + +408 + `´tf +("\nARPable ...\n"); + +409 + `´tf +("-------------\n"); + +410 + `´t_¬p_bË +(); + +412 +´tf + + +415 + `´tf +("\nND IPv6able:\n"); + +416 + `´tf +("--------------\n"); + +417 + `´t_nd_bË +(); + +418 + } +} + +420 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_ls_p_¡rg + = + +421 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p_¡rg +, + +424 +cmdle_·r£_tok_num_t + + gcmd_¬p_ls_p + = + +425 +TOKEN_NUM_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +p +, +UINT32 +); + +427 +cmdle_·r£_tok_¡rg_t + + gcmd_¬p_ls_¬p_¡rg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡rg +, + +431 +cmdle_·r£_¡_t + + gcmd_¬p_ls + = { + +432 . +f + = +cmd_¬p_ls_·r£d +, + +433 . + gd©a + = +NULL +, + +434 . + ghp_¡r + = "ARPist", + +435 . + gtoks + = { + +436 (*)& +cmd_¬p_ls_p_¡rg +, + +437 (*)& +cmd_¬p_ls_p +, + +438 (*)& +cmd_¬p_ls_¬p_¡rg +, + +439 +NULL +, + +447 + scmd_show_pÜts_fo_»suÉ + { + +448 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +449 +ut32_t + + mp +; + +450 +cmdle_fixed_¡rg_t + + m¬p_¡rg +; + +454 + $cmd_show_pÜts_fo_·r£d +( +__¹e_unu£d + * +·r£d_»suÉ +, + +455 +__¹e_unu£d + +cmdle + * +þ +, + +456 +__¹e_unu£d + * +d©a +) + +458 + `show_pÜts_fo +(); + +459 + } +} + +461 +cmdle_·r£_tok_¡rg_t + + gcmd_show_pÜts_fo_¡rg + = + +462 +TOKEN_STRING_INITIALIZER +( +cmd_¬p_ls_»suÉ +, +¬p_¡rg +, + +465 +cmdle_·r£_¡_t + + gcmd_show_pÜts_fo + = { + +466 . +f + = +cmd_show_pÜts_fo_·r£d +, + +467 . + gd©a + = +NULL +, + +468 . + ghp_¡r + = "show orts info", + +469 . + gtoks + = { + +470 (*)& +cmd_¬p_ls_p_¡rg +, + +471 (*)& +cmd_¬p_ls_p +, + +472 (*)& +cmd_show_pÜts_fo_¡rg +, + +473 +NULL +, + +478 +cmdle_·r£_ùx_t + + gpe_cmds +[] = { + +479 ( +cmdle_·r£_¡_t + *è& +lb_cmd_y_dbg +, + +480 +NULL +, + +483 +pe_ã_Ýs + + gpe_lßdb_ã_Ýs + = { + +484 . +f_ + = +NULL +, + +485 . + gf_ä + = +NULL +, + +486 . + gcmds + = +pe_cmds +, + +489 +pe_ty³ + + gpe_lßdb + = { + +490 . +Çme + = "LOADB", + +491 . + gbe_Ýs + = & +pe_lßdb_be_Ýs +, + +492 . + gã_Ýs + = & +pe_lßdb_ã_Ýs +, + + @VIL/pipeline_loadb/pipeline_loadb.h + +17 #iâdeà +__INCLUDE_PIPELINE_LOADB_H__ + + +18 + #__INCLUDE_PIPELINE_LOADB_H__ + + + ) + +20 + ~"pe.h +" + +21 + ~"pe_lßdb_be.h +" + +27 +pe_ty³ + +pe_lßdb +; + + @VIL/pipeline_loadb/pipeline_loadb_be.c + +17 + ~<¡dio.h +> + +18 + ~<¡dlib.h +> + +19 + ~<¡dt.h +> + +20 + ~<¡rg.h +> + +21 + ~<uni¡d.h +> + +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 + ~"pe_lßdb_be.h +" + +37 + ~"pe_aùiÚs_commÚ.h +" + +38 + ~"hash_func.h +" + +39 + ~"pe_¬picmp_be.h +" + +40 + ~"vnf_commÚ.h +" + +41 + ~"p.h +" + +43 + #BYTES_TO_BITS + 8 + + ) + +44 + #ROTATE_15_BITS + 15 + + ) + +46 + #MAX_VNF_THREADS + 16 + + ) + +48 + gpkt_bur¡_út +; + +50 +ut8_t + + gLOADB_DEBUG +; + +51 +ut8_t + + gtÙ®_vnf_th»ads +; + +52 +ut32_t + + gphypÜt_off£t +; + +54 + spe_lßdb + { + +55 +pe + + mp +; + +56 +pe_msg_»q_hªdËr + + mcu¡om_hªdËrs +[ +PIPELINE_LOADB_MSG_REQS +]; + +58 +ut8_t + + mn_vnf_th»ads +; + +59 +ut8_t + + mn_lb_tu¶es +; + +60 +ut32_t + + mouÜt_off£t +; + +61 +ut64_t + + m»ûivedLBPktCouÁ +; + +62 +ut64_t + + mdrݳdLBPktCouÁ +; + +63 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +64 +ut8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +65 +ut8_t + + mn_´v_Q +; + +66 +ut8_t + + mn_pub_Q +; + +67 +ut8_t + + mpe_num +; + +68 } + g__¹e_ÿche_®igÃd +; + +70 +ut8_t + + gdeçuÉ_rss_key +[] = { + +78 * +pe_lßdb_msg_»q_cu¡om_hªdËr +( +pe + * +p +, + +79 * +msg +); + +81 +pe_msg_»q_hªdËr + + ghªdËrs +[] = { + +82 [ +PIPELINE_MSG_REQ_PING +] = + +83 +pe_msg_»q_pg_hªdËr +, + +84 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +85 +pe_msg_»q_¡©s_pÜt__hªdËr +, + +86 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +87 +pe_msg_»q_¡©s_pÜt_out_hªdËr +, + +88 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +89 +pe_msg_»q_¡©s_bË_hªdËr +, + +90 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +91 +pe_msg_»q_pÜt__abË_hªdËr +, + +92 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +93 +pe_msg_»q_pÜt__di§bË_hªdËr +, + +94 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +95 +pe_lßdb_msg_»q_cu¡om_hªdËr +, + +99 * +pe_lßdb_msg_»q_y_dbg_hªdËr +( +pe + *, + +100 * +msg +); + +102 +pe_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +103 [ +PIPELINE_LOADB_MSG_REQ_ENTRY_DBG +] = + +104 +pe_lßdb_msg_»q_y_dbg_hªdËr +, + +110 + slßdb_bË_y + { + +111 +¹e_pe_bË_y + + mhd +; + +112 } + g__¹e_ÿche_®igÃd +; + +114 * + $pe_lßdb_msg_»q_cu¡om_hªdËr +( +pe + * +p +, * +msg +) + +116 +pe_lßdb + * +p_lb + = (pe_lßdb *) +p +; + +117 +pe_cu¡om_msg_»q + * +»q + = +msg +; + +118 +pe_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 +pe_msg_»q_v®id_hªdËr +; + +124 ià( +f_hªdË + =ð +NULL +) + +125 +f_hªdË + = +pe_msg_»q_v®id_hªdËr +; + +127 + `f_hªdË +( +p +, +»q +); + +128 + } +} + +130 +ut32_t + + glb_pkt_´t_couÁ +; + +132 +ut8_t + + $ÿlcuÏ_lb_th»ad_´v +( +¹e_mbuf + * +pkt +, * +¬g +) + +134 +ut32_t + +hash_key +[2], +hash_v4 +; + +135 +ut32_t + +mp1 +, +mp2 +, +mp3 +; + +136 +ut8_t + +th»ad +; + +137 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +138 +pe_lßdb + * +p_lßdb + = (pe_lßdb *è + +-> +p +; + +139 +ut8_t + +Áh»ads + = +p_lßdb +-> +n_vnf_th»ads +; + +140 +¹e_thash_tu¶e + +tu¶e +; + +142 +ut32_t + * +¤c_addr +; + +143 +ut32_t + * +d¡_addr +; + +144 +ut16_t + * +¤c_pÜt +; + +145 +ut16_t + * +d¡_pÜt +; + +146 +ut8_t + * +´ÙocÞ +; + +147 +lb_pkt + *lb_pkt = (lb_pkt *) + +148 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, +MBUF_HDR_ROOM +); + +150 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +h +. +h_ty³ +è=ð +ETHER_TYPE_IPv6 +) { + +151 +¤c_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.src_addr; + +152 +d¡_addr + = ( +ut32_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_bsw32 +( +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_bsw32 +( +d¡_addr +[3]); + +192 +hash_key +[0] = + `¹e_bsw32 +(* +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_bsw32 +( +d¡_addr +[3]); + +215 +hash_key +[1] = * +d¡_pÜt + << 16; + +217 +hash_key +[0] = + `¹e_bsw32 +(* +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_bsw32 +(src_addr[3]); + +248 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw32 +(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_bsw32 +(*src_addr); + +253 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw32 +(*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 +(( +ut32_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: %uemp1: %xemp2: %xemp3: %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 +ut8_t + + $ÿlcuÏ_lb_th»ad_pub +( +¹e_mbuf + * +pkt +, * +¬g +) + +322 +ut32_t + +hash_key +[2], +hash_v4 +; + +323 +ut32_t + +mp1 +, +mp2 +, +mp3 +; + +324 +ut8_t + +th»ad +; + +325 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +326 +pe_lßdb + * +p_lßdb + = (pe_lßdb *è + +-> +p +; + +327 +ut8_t + +Áh»ads + = +p_lßdb +-> +n_vnf_th»ads +; + +328 +¹e_thash_tu¶e + +tu¶e +; + +330 +ut32_t + * +¤c_addr +; + +331 +ut32_t + * +d¡_addr +; + +332 +ut16_t + * +¤c_pÜt +; + +333 +ut16_t + * +d¡_pÜt +; + +334 +ut8_t + * +´ÙocÞ +; + +335 +lb_pkt + *lb_pkt = (lb_pkt *) + +336 + `RTE_MBUF_METADATA_UINT8_PTR +( +pkt +, + +337 +MBUF_HDR_ROOM +); + +339 ià( + `¹e_be_to_ýu_16 +( +lb_pkt +-> +h +. +h_ty³ +è=ð +ETHER_TYPE_IPv6 +) { + +340 +¤c_addr + = ( +ut32_t + *)& +lb_pkt +-> +v6_pÜt +. +v6 +.src_addr; + +341 +d¡_addr + = ( +ut32_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_bsw32 +(* +¤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_bsw32 +(* +¤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_bsw32 +(*src_addr); + +421 +tu¶e +. +v4 +. +d¡_addr + = + `¹e_bsw32 +(*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 +(( +ut32_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: %uemp1: %xemp2: %xemp3: %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 +le + + +486 + $pkt_wÜk_lßdb_key_´v +( + +487 +¹e_mbuf + * +pkt +, + +488 +__¹e_unu£d + +ut32_t + +pkt_num +, + +489 * +¬g +) + +491 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +492 +pe_lßdb + * +p_lßdb + = (pe_lßdb *) + +-> +p +; + +493 +ut32_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 +ut32_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 +le + + +528 + $pkt_wÜk_lßdb_key_pub +( + +529 +¹e_mbuf + * +pkt +, + +530 +__¹e_unu£d + +ut32_t + +pkt_num +, + +531 * +¬g +) + +533 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +534 +pe_lßdb + * +p_lßdb + = (pe_lßdb *) + +-> +p +; + +535 +ut32_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 +ut32_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 +le + + +569 + $pkt4_wÜk_lßdb_key_´v +( + +570 +¹e_mbuf + ** +pkt +, + +571 +__¹e_unu£d + +ut32_t + +pkt_num +, + +572 * +¬g +) + +574 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +575 +pe_lßdb + * +p_lßdb + = (pe_lßdb *) + +-> +p +; + +576 +ut32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +578 +ut32_t + * +out_pÜt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +579 +ouÜt_off£t +); + +580 +ut32_t + * +out_pÜt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +581 +ouÜt_off£t +); + +582 +ut32_t + * +out_pÜt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +583 +ouÜt_off£t +); + +584 +ut32_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 +le + + +649 + $pkt4_wÜk_lßdb_key_pub +( + +650 +¹e_mbuf + ** +pkt +, + +651 +__¹e_unu£d + +ut32_t + +pkt_num +, + +652 * +¬g +) + +654 +pe_lßdb__pÜt_h_¬g + * + + = +¬g +; + +655 +pe_lßdb + * +p_lßdb + = (pe_lßdb *) + +-> +p +; + +656 +ut32_t + +ouÜt_off£t + = +p_lßdb +->outport_offset; + +658 +ut32_t + * +out_pÜt0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], + +659 +ouÜt_off£t +); + +660 +ut32_t + * +out_pÜt1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], + +661 +ouÜt_off£t +); + +662 +ut32_t + * +out_pÜt2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], + +663 +ouÜt_off£t +); + +664 +ut32_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 + $pe_lßdb_·r£_¬gs +( +pe_lßdb + * +p +, + +737 +pe_·¿ms + * +·¿ms +) + +739 +ut32_t + +ouÜt_off£t_´e£Á + = 0; + +740 +ut32_t + +n_vnf_th»ads_´e£Á + = 0; + +741 +ut32_t + +pktq__´v_´e£Á + = 0; + +742 +ut32_t + +´v_que_hªdËr_´e£Á + = 0; + +743 +ut32_t + +´v_to_pub_m_´e£Á + = 0; + +744 +ut8_t + +n_´v__pÜt + = 0; + +745 +ut32_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 +("LOADBrgs[%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 arserror - " + +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 +("¡rg i :%s\n", +tok +); + +857 ià( +tok +) + +859 + `´tf +("¡rg 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 arserr -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 arserror - " + +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 +pe_·¿ms + * +·¿ms +, + +965 +t32_t + +n_vnf_th»ads +) + +967 +ut32_t + +i +; + +968 +pe_num + = 0; + +969 +couÁ + = 0; + +970 +dÚt_ÿ» + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +pe_num +); + +971 ià( +dÚt_ÿ» + != 1) + +974 +i + = +pe_num + + 2; i < +p +-> +n_pes +; i++) { + +975 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +976 ià(! + `¡ºcmp +( +p +-> +ty³ +, "LOADB", + `¡¾ +(p->type))) + +978 +couÁ +++; + +980 ià( +n_vnf_th»ads + !ð +couÁ +) + +984 + } +} + +986 * + $pe_lßdb_ +( + +987 +pe_·¿ms + * +·¿ms +, + +988 +__¹e_unu£d + * +¬g +) + +992 +pe + * +p +; + +993 +pe_lßdb + * +p_lßdb +; + +994 +ut32_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 +(( +pe_lßdb +)); + +1003 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +1004 +p_lßdb + = ( +pe_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 +-> +lks_m +[ +i +] = 0xff; + +1020 +p_lßdb +-> +pe_num + = 0xff; + +1021 +p_lßdb +-> +n_´v_Q + = 0; + +1022 +p_lßdb +-> +n_pub_Q + = 0; + +1026 ià( + `pe_lßdb_·r£_¬gs +( +p_lßdb +, +·¿ms +)) + +1027 +NULL +; + +1031 +¹e_pe_·¿ms + +pe_·¿ms + = { + +1032 . +Çme + = "LOADB", + +1033 . +sock_id + = +·¿ms +->socket_id, + +1034 . +off£t_pÜt_id + = 0, + +1037 +p +->°ð + `¹e_pe_ü +(& +pe_·¿ms +); + +1038 ià( +p +->°=ð +NULL +) { + +1039 + `¹e_ä +( +p +); + +1040 +NULL +; + +1043 + `´tf +("Lßdb ->°%p, sock %d\n", +p +->p, + +1044 +pe_·¿ms +. +sock_id +); + +1048 +_pÜts_¬g_size + = + +1049 + `RTE_CACHE_LINE_ROUNDUP +((( +pe_lßdb__pÜt_h_¬g +)) + +1050 * ( +·¿ms +-> +n_pÜts_ +)); + +1051 +pe_lßdb__pÜt_h_¬g + * + + = + +1052 ( +pe_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_pe_pÜt__·¿ms + +pÜt_·¿ms + = { + +1069 . +Ýs + = + +1070 + `pe_pÜt__·¿ms_g_Ýs +(& +·¿ms +-> +pÜt_ + + +1071 [ +i +]), + +1072 . +¬g_ü + = + +1073 + `pe_pÜt__·¿ms_cÚvt +(& +·¿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_pe_pÜt__ü +( +p +->p, + +1091 & +pÜt_·¿ms +, + +1092 & +p +-> +pÜt__id +[ +i +]); + +1094 ià( +¡©us +) { + +1095 + `¹e_pe_ä +( +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_pe_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +1119 . +Ýs + = + +1120 + `pe_pÜt_out_·¿ms_g_Ýs +(& +·¿ms +-> +pÜt_out + + +1121 [ +i +]), + +1122 . +¬g_ü + = + +1123 + `pe_pÜt_out_·¿ms_cÚvt +(& +·¿ms +-> +pÜt_out + + +1124 [ +i +]), + +1125 . +f_aùiÚ + = +NULL +, + +1126 . +¬g_ah + = +NULL +, + +1129 +¡©us + = + `¹e_pe_pÜt_out_ü +( +p +->p, + +1130 & +pÜt_·¿ms +, + +1131 & +p +-> +pÜt_out_id +[ +i +]); + +1133 ià( +¡©us +) { + +1134 + `¹e_pe_ä +( +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 +pe_num + = 0; + +1144 +dÚt_ÿ» + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +pe_num +); + +1145 ià( +dÚt_ÿ» + != 1) { + +1146 + `´tf +("Unableoead ipelineumber\n"); + +1147 +NULL +; + +1149 +p_lßdb +-> +pe_num + = ipeline_num; + +1151 + `£t_ouÜt_id +( +pe_num +, +p +, +lb_ouÜt_id +); + +1152 + `£t_phy_ouÜt_m +( +pe_num +, +p_lßdb +-> +lks_m +); + +1154 + `£t_pÜt_to_lßdb_m +( +pe_num +); + +1156 + `»gi¡_lßdb_to_¬p +( +pe_num +, +p +, +p +); + +1158 + `»gi¡_pe_Qs +( +p_lßdb +-> +pe_num +, +p +); + +1159 + `£t_lk_m +( +p_lßdb +-> +pe_num +, +p +, _lßdb-> +lks_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_pe_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_pe_bË_ü +( +p +->p, + +1182 & +bË_·¿ms +, + +1183 & +p +-> +bË_id +[0]); + +1185 ià( +¡©us +) { + +1186 + `¹e_pe_ä +( +p +->p); + +1187 + `¹e_ä +( +p +); + +1188 +NULL +; + +1193 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +1194 +¡©us + = + `¹e_pe_pÜt__cÚÃù_to_bË +( + +1195 +p +->p, + +1196 +p +-> +pÜt__id +[ +i +], + +1197 +p +-> +bË_id +[0]); + +1199 ià( +¡©us +) { + +1200 + `¹e_pe_ä +( +p +->p); + +1201 + `¹e_ä +( +p +); + +1202 +NULL +; + +1207 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +1208 +¡©us + = + `¹e_pe_pÜt__abË +( +p +->p, + +1209 +p +-> +pÜt__id +[ +i +]); + +1211 ià( +¡©us +) { + +1212 + `¹e_pe_ä +( +p +->p); + +1213 + `¹e_ä +( +p +); + +1214 +NULL +; + +1220 +i + = 0; i < +MAX_VNF_THREADS +; i++) { + +1221 +¹e_bË_¬¿y_key + +key + = { + +1222 . +pos + = +i +, + +1224 +lßdb_bË_y + +y +; + +1225 +y +. +hd +. +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +; + +1227 ià( +i + < +p +-> +n_pÜts_out +) { + +1228 +y +. +hd +. +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 +. +hd +. +pÜt_id + = +p +-> +pÜt_out_id +[0]; + +1234 +y +. +hd +. +aùiÚ + = +RTE_PIPELINE_ACTION_DROP +; + +1237 +¹e_pe_bË_y + * +y_±r +; + +1238 +key_found +, +¡©us +; + +1239 +¡©us + = + `¹e_pe_bË_y_add +( + +1240 +p +->p, + +1241 +p +-> +bË_id +[0], + +1242 & +key +, + +1243 ( +¹e_pe_bË_y + *) + +1244 & +y +, + +1245 & +key_found +, + +1246 & +y_±r +); + +1247 ià( +¡©us +) { + +1248 + `¹e_pe_ä +( +p +->p); + +1249 + `¹e_ä +( +p +); + +1250 +NULL +; + +1256 +¹e_pe_bË_y + +deçuÉ_y + = { + +1257 . +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +, + +1259 . +pÜt_id + = +p +-> +pÜt_out_id +[0], + +1262 +¹e_pe_bË_y + * +deçuÉ_y_±r +; + +1264 +¡©us + = + `¹e_pe_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_pe_ä +( +p +->p); + +1272 + `¹e_ä +( +p +); + +1273 +NULL +; + +1279 ià( + `¹e_pe_check +( +p +->p) < 0) { + +1280 + `¹e_pe_ä +( +p +->p); + +1281 + `¹e_ä +( +p +); + +1282 +NULL +; + +1286 +p +-> +n_msgq + = +·¿ms +->n_msgq; + +1287 +i + = 0; i < +p +-> +n_msgq +; i++) + +1288 +p +-> +msgq_ +[ +i +] = +·¿ms +->msgq_in[i]; + +1289 +i + = 0; i < +p +-> +n_msgq +; i++) + +1290 +p +-> +msgq_out +[ +i +] = +·¿ms +->msgq_out[i]; + +1293 + `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 + $pe_lßdb_ä +(* +pe +) + +1302 +pe + * +p + = (pipeline *)pipeline; + +1305 ià( +p + =ð +NULL +) + +1309 + `¹e_pe_ä +( +p +->p); + +1310 + `¹e_ä +( +p +); + +1312 + } +} + +1315 + $pe_lßdb_ack +(* +pe +, + +1316 +__¹e_unu£d + +ut32_t + +pÜt_ +, ut32_* +pÜt_out +) + +1318 +pe + * +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 + $pe_lßdb_tim +(* +pe +) + +1334 +pe + * +p + = (pipeline *)pipeline; + +1336 + `pe_msg_»q_hªdË +( +p +); + +1337 + `¹e_pe_æush +( +p +->p); + +1340 + } +} + +1342 * + $pe_lßdb_msg_»q_y_dbg_hªdËr +( +pe + * +p +, * +msg +) + +1344 +pe_lßdb_y_dbg_msg_r¥ + * +r¥ + = +msg +; + +1345 +ut8_t + * +Msg + = +msg +; + +1346 +pe_lßdb + * +p_lßdb + = (pe_lßdb *) +p +; + +1348 +r¥ +-> +¡©us + = 0; + +1350 + `´tf +("LoadB debug handler called withrgs %x %x, offset %d\n", + +1351 +Msg +[ +LOADB_DBG_CMD_OFST +], Msg[LOADB_DBG_CMD_OFST + 1], + +1352 +LOADB_DBG_CMD_OFST +); + +1354 ià( +Msg +[ +LOADB_DBG_CMD_OFST +] =ð +LOADB_DBG_CMD_STATS_SHOW +) { + +1355 + `´tf +("\nLßdB Pack Sts: 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 Sts: 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 Debugev sØ%d\n", +LOADB_DEBUG +); + +1369 +lb_pkt_´t_couÁ + = 0; + +1370 +r¥ +; + +1372 ià( +Msg +[ +LOADB_DBG_CMD_OFST +] =ð +LOADB_DBG_CMD_DBG_SHOW +) { + +1373 + `´tf +("\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 +ut8_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 +-> +lks_m +[ +i +], & +¡©s +); + +1383 ià( + `is_phy_pÜt_´iv +( +i +)) + +1384 + `´tf +("Priv©PÜSt %d\n", +i +); + +1386 + `´tf +("PubliøPÜSt %d\n", +i +); + +1387 + `´tf +("\n\tack : %" +PRIu64 + "\n\topackets : %" + +1388 +PRIu64 + "\n\tierrors : %" PRIu64 + +1389 "\n\tÛ¼Ü : %" +PRIu64 + "\n\trx_nombuf: %" + +1390 +PRIu64 + "\n", +¡©s +. +acks +, sts. +Ýacks +, + +1391 +¡©s +. +¼Üs +, sts. +Û¼Üs +, sts. +rx_nombuf +); + +1392 ià( + `is_phy_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_acks +[ +j +], + +1399 +¡©s +. +q_Ýacks +[ +j +]); + +1401 + `´tf +("\n\n"); + +1404 +r¥ +; + +1407 +r¥ +; + +1409 + } +} + +1411 +pe_be_Ýs + + gpe_lßdb_be_Ýs + = { + +1412 . +f_ + = +pe_lßdb_ +, + +1413 . + gf_ä + = +pe_lßdb_ä +, + +1414 . + gf_run + = +NULL +, + +1415 . + gf_tim + = +pe_lßdb_tim +, + +1416 . + gf_ack + = +pe_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 + ~"pe_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_pe + * +¹e_p +, \ + +53 +¹e_mbuf + ** +pkts +, \ + +54 +ut32_t + +n_pkts +, \ + +55 * +¬g +) \ + +57 +ut32_t + +i +, +j +; \ + +59 +j + = 0; j < +n_pkts +; j++) \ + +60 + `¹e_´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 +ut8_t + +LOADB_DEBUG +; + +73 +ut8_t + +_pÜt_eg»ss_´v +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ut8_t + +´v_que_pÜt_dex +[ +PIPELINE_MAX_PORT_IN +]; + +75 +ut8_t + +_pÜt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +77 +ut8_t + +g__pÜt_d +(uint8_t); + +78 +ut8_t + +is_pÜt_dex_´iv +( +ut16_t +); + +79 +ut8_t + +is_phy_pÜt_´iv +( +ut16_t +); + +80 +ut32_t + +g_´v_to_pub_pÜt +(ut32_* +_addr +, +ut8_t + +ty³ +); + +81 +ut32_t + +g_pub_to_´v_pÜt +(ut32_* +_addr +, +ut8_t + +ty³ +); + +82 +ut8_t + +´v_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +90 + spe_lßdb__pÜt_h_¬g + { + +91 +pe_lßdb + * + mp +; + +92 +ut8_t + + m_pÜt_id +; + +98 + epe_lßdb_msg_»q_ty³ + { + +100 + mPIPELINE_LOADB_MSG_REQ_ENTRY_DBG +, + +101 + mPIPELINE_LOADB_MSG_REQS + + +107 + spe_lßdb_y_dbg_msg_»q + { + +108 +pe_msg_»q_ty³ + + mty³ +; + +109 +pe_lßdb_msg_»q_ty³ + + msubty³ +; + +112 +ut8_t + + md©a +[5]; + +115 + spe_lßdb_y_dbg_msg_r¥ + { + +116 + m¡©us +; + +117 * + my_±r +; + +120 +pe_be_Ýs + +pe_lßdb_be_Ýs +; + +121 + sv4_hdr_pÜt + { + +122 +v4_hdr + + mv4 +; + +123 +ut16_t + + m¤c_pÜt +; + +124 +ut16_t + + md¡_pÜt +; + +126 } +__©ibu__ +(( +__·cked__ +)); + +127 + sv6_hdr_pÜt + { + +128 +v6_hdr + + mv6 +; + +129 +ut16_t + + m¤c_pÜt +; + +130 +ut16_t + + md¡_pÜt +; + +132 } +__©ibu__ +(( +__·cked__ +)); + +134 + slb_pkt + { + +135 +h_hdr + + mh +; + +137 +v4_hdr_pÜt + + mv4_pÜt +; + +138 +v6_hdr_pÜt + + mv6_pÜt +; + +140 } +__©ibu__ +(( +__·cked__ +)); + +142 +ut8_t + +ÿlcuÏ_lb_th»ad_´v +( +¹e_mbuf + * +pkt +, * +¬g +); + +143 +ut8_t + +ÿlcuÏ_lb_th»ad_pub +( +¹e_mbuf + * +pkt +, * +¬g +); + +144 +check_lßdb_th»ad +( + +145 +p_·¿ms + * +p +, + +146 +pe_·¿ms + * +·¿ms +, + +147 +t32_t + +n_vnf_th»ads +); + + @VIL/pipeline_master/pipeline_master.c + +17 + ~"pe_ma¡.h +" + +18 + ~"pe_ma¡_be.h +" + +20 +pe_ã_Ýs + + gpe_ma¡_ã_Ýs + = { + +21 . +f_ + = +NULL +, + +22 . + gf_ä + = +NULL +, + +23 . + gcmds + = +NULL +, + +26 +pe_ty³ + + gpe_ma¡ + = { + +27 . +Çme + = "MASTER", + +28 . + gbe_Ýs + = & +pe_ma¡_be_Ýs +, + +29 . + gã_Ýs + = & +pe_ma¡_ã_Ýs +, + + @VIL/pipeline_master/pipeline_master.h + +17 #iâdeà +__INCLUDE_PIPELINE_MASTER_H__ + + +18 + #__INCLUDE_PIPELINE_MASTER_H__ + + + ) + +20 + ~"pe.h +" + +22 +pe_ty³ + +pe_ma¡ +; + + @VIL/pipeline_master/pipeline_master_be.c + +17 + ~<fú.h +> + +18 + ~<uni¡d.h +> + +20 + ~<¹e_commÚ.h +> + +21 + ~<¹e_m®loc.h +> + +23 + ~<cmdle_·r£.h +> + +24 + ~<cmdle_·r£_¡rg.h +> + +25 + ~<cmdle_sock.h +> + +26 + ~<cmdle.h +> + +28 + ~"p.h +" + +29 + ~"pe_ma¡_be.h +" + +31 + spe_ma¡ + { + +32 +p_·¿ms + * + mp +; + +33 +cmdle + * + mþ +; + +34 + msüt_fe_dÚe +; + +35 } + g__¹e_ÿche_®igÃd +; + +38 + $pe_ +( +__¹e_unu£d + +pe_·¿ms + * +·¿ms +, * +¬g +) + +40 +p_·¿ms + * +p + = (p_·¿m *è +¬g +; + +41 +pe_ma¡ + * +p +; + +42 +ut32_t + +size +; + +45 ià( +p + =ð +NULL +) + +46 +NULL +; + +49 +size + = + `RTE_CACHE_LINE_ROUNDUP +(( +pe_ma¡ +)); + +50 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +51 ià( +p + =ð +NULL +) + +52 +NULL +; + +55 +p +-> +p + =pp; + +57 +p +-> +þ + = + `cmdle_¡d_Ãw +( +p +-> +cmds +, "pipeline> "); + +58 ià( +p +-> +þ + =ð +NULL +) { + +59 + `¹e_ä +( +p +); + +60 +NULL +; + +63 +p +-> +süt_fe_dÚe + = 0; + +64 ià( +p +-> +süt_fe + =ð +NULL +) + +65 +p +-> +süt_fe_dÚe + = 1; + +67 (*è +p +; + +68 + } +} + +71 + $pe_ä +(* +pe +) + +73 +pe_ma¡ + * +p + = (pe_ma¡ *è +pe +; + +75 ià( +p + =ð +NULL +) + +76 - +EINVAL +; + +78 + `cmdle_¡d_ex +( +p +-> +þ +); + +79 + `¹e_ä +( +p +); + +82 + } +} + +85 + $pe_run +(* +pe +) + +87 +pe_ma¡ + * +p + = (pe_ma¡ *è +pe +; + +88 +¡©us +; + +90 ià( +p +-> +süt_fe_dÚe + == 0) { + +91 +p_·¿ms + * +p + = +p +->app; + +92 +fd + = + `Ý +( +p +-> +süt_fe +, +O_RDONLY +); + +94 ià( +fd + < 0) + +95 + `´tf +("Cannot open CLI script file \"%s\"\n", + +96 +p +-> +süt_fe +); + +98 +cmdle + * +fe_þ +; + +100 + `´tf +("Running CLI script file \"%s\" ...\n", + +101 +p +-> +süt_fe +); + +102 +fe_þ + = + `cmdle_Ãw +( +p +-> +þ +-> +ùx +, "", +fd +, 1); + +103 + `cmdle_¿ù +( +fe_þ +); + +104 + `þo£ +( +fd +); + +107 +p +-> +süt_fe_dÚe + = 1; + +110 +¡©us + = + `cmdle_pÞl +( +p +-> +þ +); + +111 ià( +¡©us + < 0) + +112 + `¹e_·nic +("CLI ÞÈrÜ (%" +PRId32 + ")\n", +¡©us +); + +113 ià( +¡©us + =ð +RDLINE_EXITED +) { + +114 + `cmdle_¡d_ex +( +p +-> +þ +); + +115 + `¹e_ex +(0, "Bye!\n"); + +119 + } +} + +122 + $pe_tim +( +__¹e_unu£d + * +pe +) + +124 + `¹e_tim_mªage +(); + +126 + } +} + +128 +pe_be_Ýs + + gpe_ma¡_be_Ýs + = { + +129 . +f_ + = +pe_ +, + +130 . + gf_ä + = +pe_ä +, + +131 . + gf_run + = +pe_run +, + +132 . + gf_tim + = +pe_tim +, + +133 . + gf_ack + = +NULL +, + + @VIL/pipeline_master/pipeline_master_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_MASTER_BE_H__ + + +18 + #__INCLUDE_PIPELINE_MASTER_BE_H__ + + + ) + +20 + ~"pe_commÚ_be.h +" + +22 +pe_be_Ýs + +pe_ma¡_be_Ýs +; + + @VIL/pipeline_passthrough/pipeline_passthrough.c + +17 + ~"pe_·s¡hrough.h +" + +18 + ~"pe_·s¡hrough_be.h +" + +20 +pe_ã_Ýs + + gpe_·s¡hrough_ã_Ýs + = { + +21 . +f_ + = +NULL +, + +22 . + gf_ä + = +NULL +, + +23 . + gcmds + = +NULL +, + +26 +pe_ty³ + + gpe_·s¡hrough + = { + +27 . +Çme + = "PASS-THROUGH", + +28 . + gbe_Ýs + = & +pe_·s¡hrough_be_Ýs +, + +29 . + gã_Ýs + = & +pe_·s¡hrough_ã_Ýs +, + + @VIL/pipeline_passthrough/pipeline_passthrough.h + +17 #iâdeà +__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + +18 + #__INCLUDE_PIPELINE_PASSTHROUGH_H__ + + + ) + +20 + ~"pe.h +" + +22 +pe_ty³ + +pe_·s¡hrough +; + + @VIL/pipeline_passthrough/pipeline_passthrough_be.c + +17 + ~<¡rg.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_pe.h +> + +26 + ~"pe_·s¡hrough_be.h +" + +27 + ~"pe_aùiÚs_commÚ.h +" + +28 + ~"·r£r.h +" + +29 + ~"hash_func.h +" + +31 + spe_·s¡hrough + { + +32 +pe + + mp +; + +33 +pe_·s¡hrough_·¿ms + + m·¿ms +; + +34 +¹e_bË_hash_Ý_hash + + mf_hash +; + +35 } + g__¹e_ÿche_®igÃd +; + +37 +pe_msg_»q_hªdËr + + ghªdËrs +[] = { + +38 [ +PIPELINE_MSG_REQ_PING +] = + +39 +pe_msg_»q_pg_hªdËr +, + +40 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +41 +pe_msg_»q_¡©s_pÜt__hªdËr +, + +42 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +43 +pe_msg_»q_¡©s_pÜt_out_hªdËr +, + +44 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +45 +pe_msg_»q_¡©s_bË_hªdËr +, + +46 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +47 +pe_msg_»q_pÜt__abË_hªdËr +, + +48 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +49 +pe_msg_»q_pÜt__di§bË_hªdËr +, + +50 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +51 +pe_msg_»q_v®id_hªdËr +, + +54 +le + +__©ibu__ +(( +®ways_le +)) + +55 + $pkt_wÜk +( + +56 +¹e_mbuf + * +pkt +, + +57 * +¬g +, + +58 +ut32_t + +dma_size +, + +59 +ut32_t + +hash_abËd +, + +60 +ut32_t + +lb_hash +, + +61 +ut32_t + +pÜt_out_pow2 +) + +63 +pe_·s¡hrough + * +p + = +¬g +; + +65 +ut64_t + * +dma_d¡ + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +66 +p +-> +·¿ms +. +dma_d¡_off£t +); + +67 +ut64_t + * +dma_¤c + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkt +, + +68 +p +-> +·¿ms +. +dma_¤c_off£t +); + +69 +ut64_t + * +dma_mask + = (ut64_*è +p +-> +·¿ms +. +dma_¤c_mask +; + +70 +ut32_t + * +dma_hash + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, + +71 +p +-> +·¿ms +. +dma_hash_off£t +); + +72 +ut32_t + +i +; + +75 +i + = 0; i < ( +dma_size + / 8); i++) + +76 +dma_d¡ +[ +i +] = +dma_¤c +[i] & +dma_mask +[i]; + +79 ià( +hash_abËd +) { + +80 +ut32_t + +hash + = +p +-> + `f_hash +( +dma_d¡ +, +dma_size +, 0); + +81 * +dma_hash + = +hash +; + +83 ià( +lb_hash +) { + +84 +ut32_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_pe_pÜt_out_·ck_£¹ +( +p +->p.p, + +94 +pÜt_out +, +pkt +); + +97 + } +} + +99 +le + +__©ibu__ +(( +®ways_le +)) + +100 + $pkt4_wÜk +( + +101 +¹e_mbuf + ** +pkts +, + +102 * +¬g +, + +103 +ut32_t + +dma_size +, + +104 +ut32_t + +hash_abËd +, + +105 +ut32_t + +lb_hash +, + +106 +ut32_t + +pÜt_out_pow2 +) + +108 +pe_·s¡hrough + * +p + = +¬g +; + +110 +ut64_t + * +dma_d¡0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +111 +p +-> +·¿ms +. +dma_d¡_off£t +); + +112 +ut64_t + * +dma_d¡1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +113 +p +-> +·¿ms +. +dma_d¡_off£t +); + +114 +ut64_t + * +dma_d¡2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +115 +p +-> +·¿ms +. +dma_d¡_off£t +); + +116 +ut64_t + * +dma_d¡3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +117 +p +-> +·¿ms +. +dma_d¡_off£t +); + +119 +ut64_t + * +dma_¤c0 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[0], + +120 +p +-> +·¿ms +. +dma_¤c_off£t +); + +121 +ut64_t + * +dma_¤c1 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[1], + +122 +p +-> +·¿ms +. +dma_¤c_off£t +); + +123 +ut64_t + * +dma_¤c2 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[2], + +124 +p +-> +·¿ms +. +dma_¤c_off£t +); + +125 +ut64_t + * +dma_¤c3 + = + `RTE_MBUF_METADATA_UINT64_PTR +( +pkts +[3], + +126 +p +-> +·¿ms +. +dma_¤c_off£t +); + +128 +ut64_t + * +dma_mask + = (ut64_*è +p +-> +·¿ms +. +dma_¤c_mask +; + +130 +ut32_t + * +dma_hash0 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[0], + +131 +p +-> +·¿ms +. +dma_hash_off£t +); + +132 +ut32_t + * +dma_hash1 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[1], + +133 +p +-> +·¿ms +. +dma_hash_off£t +); + +134 +ut32_t + * +dma_hash2 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[2], + +135 +p +-> +·¿ms +. +dma_hash_off£t +); + +136 +ut32_t + * +dma_hash3 + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkts +[3], + +137 +p +-> +·¿ms +. +dma_hash_off£t +); + +139 +ut32_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 +ut32_t + +hash0 + = +p +-> + `f_hash +( +dma_d¡0 +, +dma_size +, 0); + +152 +ut32_t + +hash1 + = +p +-> + `f_hash +( +dma_d¡1 +, +dma_size +, 0); + +153 +ut32_t + +hash2 + = +p +-> + `f_hash +( +dma_d¡2 +, +dma_size +, 0); + +154 +ut32_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 +ut32_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_pe_pÜt_out_·ck_£¹ +( +p +->p.p, + +184 +pÜt_out0 +, +pkts +[0]); + +185 + `¹e_pe_pÜt_out_·ck_£¹ +( +p +->p.p, + +186 +pÜt_out1 +, +pkts +[1]); + +187 + `¹e_pe_pÜt_out_·ck_£¹ +( +p +->p.p, + +188 +pÜt_out2 +, +pkts +[2]); + +189 + `¹e_pe_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 +le + \ + +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 +le + \ + +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_pe_pÜt__aùiÚ_hªdËr + + +280 + $g_pÜt__ah +( +pe_·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 + $pe_·s¡hrough_·r£_¬gs +( +pe_·s¡hrough_·¿ms + * +p +, + +343 +pe_·¿ms + * +·¿ms +) + +345 +ut32_t + +dma_d¡_off£t_´e£Á + = 0; + +346 +ut32_t + +dma_¤c_off£t_´e£Á + = 0; + +347 +ut32_t + +dma_¤c_mask_´e£Á + = 0; + +348 +ut32_t + +dma_size_´e£Á + = 0; + +349 +ut32_t + +dma_hash_off£t_´e£Á + = 0; + +350 +ut32_t + +lb_´e£Á + = 0; + +351 +ut32_t + +i +; + +352 +dma_mask_¡r +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + * 2]; + +355 +p +-> +dma_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_ut32 +(& +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_ut32 +(& +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_ut32 +(& +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_ut32 +(& +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 +ut32_t + +dma_size + = +p +->dma_size; + +518 +¡©us +; + +520 + `PIPELINE_ARG_CHECK +(( + `¡¾ +( +dma_mask_¡r +) == + +521 ( +dma_size + * 2)), "Parserror in section " + +523 "digs", +·¿ms +-> +Çme +, ( +dma_size + * 2)); + +525 +¡©us + = + `·r£_hex_¡rg +( +dma_mask_¡r +, +p +-> +dma_¤c_mask +, + +526 & +p +-> +dma_size +); + +528 + `PIPELINE_PARSE_ERR_INV_VAL +((( +¡©us + == 0) && + +529 ( +dma_size + =ð +p +->dma_size)), +·¿ms +-> +Çme +, + +530 "dma_¤c_mask", +dma_mask_¡r +); + +534 + } +} + +537 +¹e_bË_hash_Ý_hash + + +538 + $g_hash_funùiÚ +( +pe_·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 + $pe_·s¡hrough_ +( +pe_·¿ms + * +·¿ms +, + +556 +__¹e_unu£d + * +¬g +) + +558 +pe + * +p +; + +559 +pe_·s¡hrough + * +p_± +; + +560 +ut32_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 +(( +pe_·s¡hrough +)); + +572 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +573 +p_± + = ( +pe_·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à( + `pe_·s¡hrough_·r£_¬gs +(& +p_± +-> +·¿ms +, arams)) + +584 +NULL +; + +585 +p_± +-> +f_hash + = + `g_hash_funùiÚ +(p_pt); + +589 +¹e_pe_·¿ms + +pe_·¿ms + = { + +590 . +Çme + = "PASS-THROUGH", + +591 . +sock_id + = +·¿ms +->socket_id, + +592 . +off£t_pÜt_id + = 0, + +595 +p +->°ð + `¹e_pe_ü +(& +pe_·¿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_pe_pÜt__·¿ms + +pÜt_·¿ms + = { + +609 . +Ýs + = + `pe_pÜt__·¿ms_g_Ýs +( + +610 & +·¿ms +-> +pÜt_ +[ +i +]), + +611 . +¬g_ü + = + `pe_pÜt__·¿ms_cÚvt +( + +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_pe_pÜt__ü +( +p +->p, + +619 & +pÜt_·¿ms +, + +620 & +p +-> +pÜt__id +[ +i +]); + +622 ià( +¡©us +) { + +623 + `¹e_pe_ä +( +p +->p); + +624 + `¹e_ä +( +p +); + +625 +NULL +; + +630 +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +631 +¹e_pe_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +632 . +Ýs + = + `pe_pÜt_out_·¿ms_g_Ýs +( + +633 & +·¿ms +-> +pÜt_out +[ +i +]), + +634 . +¬g_ü + = + `pe_pÜt_out_·¿ms_cÚvt +( + +635 & +·¿ms +-> +pÜt_out +[ +i +]), + +636 . +f_aùiÚ + = +NULL +, + +637 . +¬g_ah + = +NULL +, + +640 +¡©us + = + `¹e_pe_pÜt_out_ü +( +p +->p, + +641 & +pÜt_·¿ms +, + +642 & +p +-> +pÜt_out_id +[ +i +]); + +644 ià( +¡©us +) { + +645 + `¹e_pe_ä +( +p +->p); + +646 + `¹e_ä +( +p +); + +647 +NULL +; + +652 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +653 +¹e_pe_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_pe_bË_ü +( +p +->p, + +663 & +bË_·¿ms +, + +664 & +p +-> +bË_id +[ +i +]); + +666 ià( +¡©us +) { + +667 + `¹e_pe_ä +( +p +->p); + +668 + `¹e_ä +( +p +); + +669 +NULL +; + +674 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +675 +¡©us + = + `¹e_pe_pÜt__cÚÃù_to_bË +( +p +->p, + +676 +p +-> +pÜt__id +[ +i +], + +677 +p +-> +bË_id +[ +i +]); + +679 ià( +¡©us +) { + +680 + `¹e_pe_ä +( +p +->p); + +681 + `¹e_ä +( +p +); + +682 +NULL +; + +687 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +688 +¹e_pe_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_pe_bË_y + * +deçuÉ_y_±r +; + +696 +¡©us + = + `¹e_pe_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_pe_ä +( +p +->p); + +703 + `¹e_ä +( +p +); + +704 +NULL +; + +709 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +710 +¡©us + = + `¹e_pe_pÜt__abË +( +p +->p, + +711 +p +-> +pÜt__id +[ +i +]); + +713 ià( +¡©us +) { + +714 + `¹e_pe_ä +( +p +->p); + +715 + `¹e_ä +( +p +); + +716 +NULL +; + +721 ià( + `¹e_pe_check +( +p +->p) < 0) { + +722 + `¹e_pe_ä +( +p +->p); + +723 + `¹e_ä +( +p +); + +724 +NULL +; + +728 +p +-> +n_msgq + = +·¿ms +->n_msgq; + +729 +i + = 0; i < +p +-> +n_msgq +; i++) + +730 +p +-> +msgq_ +[ +i +] = +·¿ms +->msgq_in[i]; + +731 +i + = 0; i < +p +-> +n_msgq +; i++) + +732 +p +-> +msgq_out +[ +i +] = +·¿ms +->msgq_out[i]; + +735 + `memýy +( +p +-> +hªdËrs +, handlers, (p->handlers)); + +737 +p +; + +738 + } +} + +741 + $pe_·s¡hrough_ä +(* +pe +) + +743 +pe + * +p + = (pipeline *) ipeline; + +746 ià( +p + =ð +NULL +) + +750 + `¹e_pe_ä +( +p +->p); + +751 + `¹e_ä +( +p +); + +753 + } +} + +756 + $pe_·s¡hrough_tim +(* +pe +) + +758 +pe + * +p + = (pipeline *) ipeline; + +760 + `pe_msg_»q_hªdË +( +p +); + +761 + `¹e_pe_æush +( +p +->p); + +764 + } +} + +767 + $pe_·s¡hrough_ack +(* +pe +, +ut32_t + +pÜt_ +, ut32_* +pÜt_out +) + +769 +pe + * +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 +pe_be_Ýs + + gpe_·s¡hrough_be_Ýs + = { + +782 . +f_ + = +pe_·s¡hrough_ +, + +783 . + gf_ä + = +pe_·s¡hrough_ä +, + +784 . + gf_run + = +NULL +, + +785 . + gf_tim + = +pe_·s¡hrough_tim +, + +786 . + gf_ack + = +pe_·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 + ~"pe_commÚ_be.h +" + +22 + #PIPELINE_PASSTHROUGH_DMA_SIZE_MAX + 64 + + ) + +24 + spe_·s¡hrough_·¿ms + { + +25 +ut32_t + + mdma_abËd +; + +26 +ut32_t + + mdma_d¡_off£t +; + +27 +ut32_t + + mdma_¤c_off£t +; + +28 +ut8_t + + mdma_¤c_mask +[ +PIPELINE_PASSTHROUGH_DMA_SIZE_MAX +]; + +29 +ut32_t + + mdma_size +; + +31 +ut32_t + + mdma_hash_abËd +; + +32 +ut32_t + + mdma_hash_off£t +; + +33 +ut32_t + + mlb_hash_abËd +; + +37 +pe_·s¡hrough_·r£_¬gs +( +pe_·s¡hrough_·¿ms + * +p +, + +38 +pe_·¿ms + * +·¿ms +); + +40 +pe_be_Ýs + +pe_·s¡hrough_be_Ýs +; + + @VIL/pipeline_txrx/pipeline_txrx.c + +17 + ~<cmdle_·r£.h +> + +18 + ~<cmdle_·r£_num.h +> + +19 + ~<cmdle_·r£_¡rg.h +> + +20 + ~<cmdle_·r£_addr.h +> + +21 + ~<cmdle_·r£_haddr.h +> + +23 + ~"p.h +" + +24 + ~"pe_commÚ_ã.h +" + +25 + ~"pe_txrx.h +" + +26 + ~"vnf_commÚ.h +" + +28 + ~"pe_¬picmp_be.h +" + +31 + $p_pe_txrx_y_dbg +( +p_·¿ms + * +p +, + +32 +ut32_t + +pe_id +, +ut8_t + * +msg +) + +34 +pe_txrx_y_dbg_msg_»q + * +»q +; + +35 +pe_txrx_y_dbg_msg_r¥ + * +r¥ +; + +38 ià( +p + =ð +NULL +) + +42 +»q + = + `p_msg_®loc +( +p +); + +43 ià( +»q + =ð +NULL +) + +46 +»q +-> +ty³ + = +PIPELINE_MSG_REQ_CUSTOM +; + +47 +»q +-> +subty³ + = +PIPELINE_TXRX_MSG_REQ_ENTRY_DBG +; + +48 +»q +-> +d©a +[0] = +msg +[0]; + +49 +»q +-> +d©a +[1] = +msg +[1]; + +51 +r¥ + = + `p_msg_£nd_»cv +( +p +, +pe_id +, +»q +, +MSG_TIMEOUT_DEFAULT +); + +52 ià( +r¥ + =ð +NULL +) + +56 ià( +r¥ +-> +¡©us +) { + +57 + `p_msg_ä +( +p +, +r¥ +); + +58 + `´tf +("E¼Ü¥->¡©u %d\n", +r¥ +-> +¡©us +); + +63 + `p_msg_ä +( +p +, +r¥ +); + +66 + } +} + +73 + scmd_y_dbg_»suÉ + { + +74 +cmdle_fixed_¡rg_t + + mp_¡rg +; + +75 +ut32_t + + mp +; + +76 +cmdle_fixed_¡rg_t + + my_¡rg +; + +77 +cmdle_fixed_¡rg_t + + mdbg_¡rg +; + +78 +ut8_t + + mcmd +; + +79 +ut8_t + + md1 +; + +83 + $cmd_y_dbg_·r£d +(* +·r£d_»suÉ +, + +84 +__¹e_unu£d + +cmdle + * +þ +, * +d©a +) + +86 +cmd_y_dbg_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +87 +p_·¿ms + * +p + = +d©a +; + +88 +ut8_t + +msg +[2]; + +89 +¡©us +; + +91 +msg +[0] = +·¿ms +-> +cmd +; + +92 +msg +[1] = +·¿ms +-> +d1 +; + +93 +¡©us + = + `p_pe_txrx_y_dbg +( +p +, +·¿ms +-> +p +, +msg +); + +95 ià( +¡©us + != 0) { + +96 + `´tf +("Dbg Command failed\n"); + +99 + } +} + +101 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_p_¡rg + = + +102 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p_¡rg +, "p"); + +104 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_p + = + +105 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +p +, +UINT32 +); + +107 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_y_¡rg + = + +108 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, + +109 +y_¡rg +, "txrx"); + +111 +cmdle_·r£_tok_¡rg_t + + glb_cmd_y_dbg_dbg_¡rg + = + +112 +TOKEN_STRING_INITIALIZER +( +cmd_y_dbg_»suÉ +, +dbg_¡rg +, + +115 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_cmd + = + +116 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +cmd +, +UINT8 +); + +118 +cmdle_·r£_tok_num_t + + glb_cmd_y_dbg_d1 + = + +119 +TOKEN_NUM_INITIALIZER +( +cmd_y_dbg_»suÉ +, +d1 +, +UINT8 +); + +121 +cmdle_·r£_¡_t + + glb_cmd_y_dbg + = { + +122 . +f + = +cmd_y_dbg_·r£d +, + +123 . + gd©a + = +NULL +, + +124 . + ghp_¡r + = "TXRX dbg cmd", + +125 . + gtoks + = { + +126 (*)& +lb_cmd_y_dbg_p_¡rg +, + +127 (*)& +lb_cmd_y_dbg_p +, + +128 (*)& +lb_cmd_y_dbg_y_¡rg +, + +129 (*)& +lb_cmd_y_dbg_dbg_¡rg +, + +130 (*)& +lb_cmd_y_dbg_cmd +, + +131 (*)& +lb_cmd_y_dbg_d1 +, + +132 +NULL +, + +136 +cmdle_·r£_ùx_t + + gpe_cmds +[] = { + +137 ( +cmdle_·r£_¡_t + *è& +lb_cmd_y_dbg +, + +138 +NULL +, + +141 +pe_ã_Ýs + + gpe_txrx_ã_Ýs + = { + +142 . +f_ + = +NULL +, + +143 . + gf_ä + = +NULL +, + +144 . + gcmds + = +pe_cmds +, + +147 +pe_ty³ + + gpe_txrx + = { + +148 . +Çme + = "TXRX", + +149 . + gbe_Ýs + = & +pe_txrx_be_Ýs +, + +150 . + gã_Ýs + = & +pe_txrx_ã_Ýs +, + + @VIL/pipeline_txrx/pipeline_txrx.h + +17 #iâdeà +__INCLUDE_PIPELINE_TXRX_H__ + + +18 + #__INCLUDE_PIPELINE_TXRX_H__ + + + ) + +20 + ~"pe.h +" + +21 + ~"pe_txrx_be.h +" + +26 +pe_ty³ + +pe_txrx +; + + @VIL/pipeline_txrx/pipeline_txrx_be.c + +17 + ~<¡rg.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_pe.h +> + +26 + ~"pe_txrx_be.h +" + +27 + ~"pe_aùiÚs_commÚ.h +" + +28 + ~"·r£r.h +" + +29 + ~"hash_func.h +" + +30 + ~"pe_¬picmp_be.h +" + +31 + ~"vnf_commÚ.h +" + +32 + ~"p.h +" + +33 #iâdeà +VNF_ACL + + +34 + ~"lib_icmpv6.h +" + +37 +ut8_t + + gTXRX_DEBUG +; + +38 + gpkt_bur¡_út +; + +40 + spe_txrx + { + +41 +pe + + mp +; + +42 +pe_msg_»q_hªdËr + + +43 + mcu¡om_hªdËrs +[ +PIPELINE_TXRX_MSG_REQS +]; + +44 +ut64_t + + m»ûivedPktCouÁ +; + +45 +ut64_t + + mdrݳdPktCouÁ +; + +46 +ut8_t + + mlks_m +[ +PIPELINE_MAX_PORT_IN +]; + +47 +ut8_t + + mouÜt_id +[ +PIPELINE_MAX_PORT_IN +]; + +48 +ut8_t + + mpe_num +; + +49 +ut8_t + + mtxrx_ty³ +; + +50 } + g__¹e_ÿche_®igÃd +; + +53 + mTYPE_TXTX +, + +54 + mTYPE_RXRX +, + +56 * +pe_txrx_msg_»q_cu¡om_hªdËr +( +pe + * +p +, + +57 * +msg +); + +59 +pe_msg_»q_hªdËr + + ghªdËrs +[] = { + +60 [ +PIPELINE_MSG_REQ_PING +] = + +61 +pe_msg_»q_pg_hªdËr +, + +62 [ +PIPELINE_MSG_REQ_STATS_PORT_IN +] = + +63 +pe_msg_»q_¡©s_pÜt__hªdËr +, + +64 [ +PIPELINE_MSG_REQ_STATS_PORT_OUT +] = + +65 +pe_msg_»q_¡©s_pÜt_out_hªdËr +, + +66 [ +PIPELINE_MSG_REQ_STATS_TABLE +] = + +67 +pe_msg_»q_¡©s_bË_hªdËr +, + +68 [ +PIPELINE_MSG_REQ_PORT_IN_ENABLE +] = + +69 +pe_msg_»q_pÜt__abË_hªdËr +, + +70 [ +PIPELINE_MSG_REQ_PORT_IN_DISABLE +] = + +71 +pe_msg_»q_pÜt__di§bË_hªdËr +, + +72 [ +PIPELINE_MSG_REQ_CUSTOM +] = + +73 +pe_txrx_msg_»q_cu¡om_hªdËr +, + +77 * +pe_txrx_msg_»q_y_dbg_hªdËr +( +pe + * +p +, + +78 * +msg +); + +79 * + $pe_txrx_msg_»q_y_dbg_hªdËr +( + +80 +__¹e_unu£d + +pe + * +p +, + +81 +__¹e_unu£d + * +msg +) + +84 +NULL +; + +85 + } +} + +87 +__¹e_unu£d + +pe_msg_»q_hªdËr + + gcu¡om_hªdËrs +[] = { + +88 [ +PIPELINE_TXRX_MSG_REQ_ENTRY_DBG +] = + +89 +pe_txrx_msg_»q_y_dbg_hªdËr +, + +103 * + $pe_txrx_msg_»q_cu¡om_hªdËr +( +pe + * +p +, * +msg +) + +105 +pe_txrx + * +p_txrx + = (pe_txrx *) +p +; + +106 +pe_cu¡om_msg_»q + * +»q + = +msg +; + +107 +pe_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 +pe_msg_»q_v®id_hªdËr +; + +113 ià( +f_hªdË + =ð +NULL +) + +114 +f_hªdË + = +pe_msg_»q_v®id_hªdËr +; + +116 + `f_hªdË +( +p +, +»q +); + +117 + } +} + +123 +pe_txrx_·r£_¬gs +( +pe_txrx + * +p +, + +124 +pe_·¿ms + * +·¿ms +); + +126 + $pe_txrx_·r£_¬gs +( +pe_txrx + * +p +, + +127 +pe_·¿ms + * +·¿ms +) + +129 +ut32_t + +i +; + +130 +ut8_t + +txrx_ty³_´e£Á + = 0; + +132 ià( +TXRX_DEBUG + > 2) + +133 + `´tf +("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 +("TXRXrgs[%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 +("TXRXypeot specified\n"); + +170 + } +} + +172 +ut32_t + + gtxrx_pkt_´t_couÁ +; + +173 +le + + +174 + $pkt_wÜk_txrx +( +¹e_mbuf + * +pkt +, +ut32_t + +pkt_num +, * +¬g +) + +177 +pe_txrx__pÜt_h_¬g + * + + = +¬g +; + +178 +pe_txrx + * +p_txrx + = (pe_txrx *) + +-> +p +; + +179 +ut8_t + +sÞiced_node_muÉiÿ¡_addr +[16] = + +182 +p_txrx +-> +»ûivedPktCouÁ +++; + +184 ià( +p_txrx +-> +txrx_ty³ + =ð +TYPE_TXTX +) + +187 +ut8_t + +_pÜt_id + = +pkt +-> +pÜt +; + +188 +ut32_t + +h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +190 +ut32_t + +pkt_mask + = 1 << +pkt_num +; + +192 +ut32_t + +out_pÜt + = +p_txrx +-> +p +. +n_pÜts_out + - 1; + +194 +ut16_t + * +h_´Ùo + = + +195 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +, +h_´Ùo_off£t +); + +197 +ut8_t + * +´ÙocÞ +; + +198 +ut32_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 +ut32_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_lk_·¿ms + * +lk +; + +227 +lk + = & +myAµ +-> +lk_·¿ms +[ +_pÜt_id +]; + +230 +ut32_t + +d¡_addr_off£t + = + +231 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +232 +ut32_t + * +d¡_addr + = + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_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__ +, +lk +-> + +, * +d¡_addr +); + +239 + `¹e_be_to_ýu_16 +(* +h_´Ùo +)) { + +240 +ETH_TYPE_ARP +: + +241 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +242 +out_pÜt +, +pkt +); + +243 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +246 +ETH_TYPE_IPV4 +: + +247 ià((* +´ÙocÞ + =ð +IP_PROTOCOL_ICMP +) && + +248 ( +lk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr +))) { + +249 ià( + `is_phy_pÜt_´iv +( +pkt +-> +pÜt +)) { + +250 + `¹e_pe_pÜt_out_·ck_£¹ +( + +251 +p_txrx +-> +p +.p, + +252 +out_pÜt +, +pkt +); + +253 + `¹e_pe_ah_·ck_drÝ +( + +254 +p_txrx +-> +p +.p, + +255 +pkt_mask +); + +261 #ifdeà +IPV6 + + +262 +ETH_TYPE_IPV6 +: + +263 ià(* +´ÙocÞ + =ð +ICMPV6_PROTOCOL_ID +) { + +264 #iâdeà +VNF_ACL + + +265 ià(! + `memcmp +( +v6_h +-> +d¡_addr +, +lk +-> +v6 +, 16) + +266 || ! + `memcmp +( +v6_h +-> +d¡_addr +, +sÞiced_node_muÉiÿ¡_addr +, 13)) { + +268 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +269 +out_pÜt +, +pkt +); + +270 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +271 #iâdeà +VNF_ACL + + +273 + `´tf +("Droppinghe IPv6 kt\n"); + +274 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +282 + `´tf +("Droppinghe kt\n"); + +283 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask +); + +288 + } +} + +290 +le + + +291 + $pkt4_wÜk_txrx +( +¹e_mbuf + ** +pkt +, +ut32_t + +pkt_num +, * +¬g +) + +293 +pe_txrx__pÜt_h_¬g + * + + = +¬g +; + +294 +pe_txrx + * +p_txrx + = (pe_txrx *) + +-> +p +; + +295 +ut8_t + +sÞiced_node_muÉiÿ¡_addr +[16] = + +299 ià( +p_txrx +-> +txrx_ty³ + =ð +TYPE_TXTX +) + +302 +ut16_t + +_pÜt_id + = (* +pkt +)-> +pÜt +; + +303 +ut32_t + +h_´Ùo_off£t + = +MBUF_HDR_ROOM + + 12; + +306 +ut32_t + +pkt_mask0 + = 1 << +pkt_num +; + +307 +ut32_t + +pkt_mask1 + = 1 << ( +pkt_num + + 1); + +308 +ut32_t + +pkt_mask2 + = 1 << ( +pkt_num + + 2); + +309 +ut32_t + +pkt_mask3 + = 1 << ( +pkt_num + + 3); + +312 +ut32_t + +out_pÜt + = +p_txrx +-> +p +. +n_pÜts_out + - 1; + +314 +ut16_t + * +h_´Ùo0 + = + +315 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[0], +h_´Ùo_off£t +); + +316 +ut16_t + * +h_´Ùo1 + = + +317 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[1], +h_´Ùo_off£t +); + +318 +ut16_t + * +h_´Ùo2 + = + +319 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[2], +h_´Ùo_off£t +); + +320 +ut16_t + * +h_´Ùo3 + = + +321 + `RTE_MBUF_METADATA_UINT16_PTR +( +pkt +[3], +h_´Ùo_off£t +); + +323 +ut8_t + * +´ÙocÞ0 +, * +´ÙocÞ1 +, * +´ÙocÞ2 +, * +´ÙocÞ3 +; + +324 +ut32_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 +ut32_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_lk_·¿ms + * +lk +; + +381 +lk + = & +myAµ +-> +lk_·¿ms +[ +_pÜt_id +]; + +384 +ut32_t + +d¡_addr_off£t0 + = + +385 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +386 +ut32_t + * +d¡_addr0 + = + +387 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[0], +d¡_addr_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__ +, +lk +-> + +, * +d¡_addr0 +); + +394 + `¹e_be_to_ýu_16 +(* +h_´Ùo0 +)) { + +395 +ETH_TYPE_ARP +: + +396 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +397 +out_pÜt +, +pkt +[0]); + +398 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +401 +ETH_TYPE_IPV4 +: + +402 ià((* +´ÙocÞ0 + =ð +IP_PROTOCOL_ICMP +) && + +403 ( +lk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr0 +))) { + +404 ià( + `is_phy_pÜt_´iv +( +pkt +[0]-> +pÜt +)) { + +405 + `¹e_pe_pÜt_out_·ck_£¹ +( + +406 +p_txrx +-> +p +.p, +out_pÜt +, +pkt +[0]); + +407 + `¹e_pe_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 +, +lk +-> +v6 +, 16) + +419 || ! + `memcmp +( +v6_h0 +-> +d¡_addr +, +sÞiced_node_muÉiÿ¡_addr +, 13)) { + +421 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +422 +out_pÜt +, +pkt +[0]); + +423 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +425 #iâdeà +VNF_ACL + + +427 + `´tf +("Droppinghe IPv6 kt\n"); + +428 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +436 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask0 +); + +441 ià(( +TXRX_DEBUG + > 2è&& ( +txrx_pkt_´t_couÁ + < 10)) { + +442 + `´t_pkt1 +( +pkt +[1]); + +443 +txrx_pkt_´t_couÁ +++; + +444 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +446 + `¹e_be_to_ýu_16 +(* +h_´Ùo1 +), * +´ÙocÞ1 +, +ETH_TYPE_ARP +, + +447 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +451 +ut32_t + +d¡_addr_off£t1 + = + +452 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +453 +ut32_t + * +d¡_addr1 + = + +454 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[1], +d¡_addr_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__ +, +lk +-> + +, * +d¡_addr1 +); + +460 + `¹e_be_to_ýu_16 +(* +h_´Ùo1 +)) { + +461 +ETH_TYPE_ARP +: + +462 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +463 +out_pÜt +, +pkt +[1]); + +464 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +467 +ETH_TYPE_IPV4 +: + +468 ià((* +´ÙocÞ1 + =ð +IP_PROTOCOL_ICMP +) && + +469 ( +lk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr1 +))) { + +470 ià( + `is_phy_pÜt_´iv +( +pkt +[1]-> +pÜt +)) { + +471 + `¹e_pe_pÜt_out_·ck_£¹ +( + +472 +p_txrx +-> +p +.p, + +473 +out_pÜt +, +pkt +[1]); + +474 + `¹e_pe_ah_·ck_drÝ +( + +475 +p_txrx +-> +p +.p, + +476 +pkt_mask1 +); + +482 #ifdeà +IPV6 + + +483 +ETH_TYPE_IPV6 +: + +484 ià(* +´ÙocÞ1 + =ð +ICMPV6_PROTOCOL_ID +) { + +485 #iâdeà +VNF_ACL + + +486 ià(! + `memcmp +( +v6_h1 +-> +d¡_addr +, +lk +-> +v6 +, 16) + +487 || ! + `memcmp +( +v6_h1 +-> +d¡_addr +, +sÞiced_node_muÉiÿ¡_addr +, 13)) { + +489 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +490 +out_pÜt +, +pkt +[1]); + +491 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +492 #iâdeà +VNF_ACL + + +494 + `´tf +("Droppinghe IPv6 kt\n"); + +495 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +503 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask1 +); + +507 ià(( +TXRX_DEBUG + > 2è&& ( +txrx_pkt_´t_couÁ + < 10)) { + +508 + `´t_pkt1 +( +pkt +[2]); + +509 +txrx_pkt_´t_couÁ +++; + +510 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +512 + `¹e_be_to_ýu_16 +(* +h_´Ùo2 +), * +´ÙocÞ2 +, +ETH_TYPE_ARP +, + +513 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +517 +ut32_t + +d¡_addr_off£t2 + = + +518 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +519 +ut32_t + * +d¡_addr2 + = + +520 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +[2], +d¡_addr_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__ +, +lk +-> + +, * +d¡_addr2 +); + +526 + `¹e_be_to_ýu_16 +(* +h_´Ùo2 +)) { + +527 +ETH_TYPE_ARP +: + +528 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +529 +out_pÜt +, +pkt +[2]); + +530 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +533 +ETH_TYPE_IPV4 +: + +534 ià((* +´ÙocÞ2 + =ð +IP_PROTOCOL_ICMP +) && + +535 ( +lk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr2 +))) { + +536 ià( + `is_phy_pÜt_´iv +( +pkt +[2]-> +pÜt +)) { + +537 + `¹e_pe_pÜt_out_·ck_£¹ +( + +538 +p_txrx +-> +p +.p, + +539 +out_pÜt +, +pkt +[2]); + +540 + `¹e_pe_ah_·ck_drÝ +( + +541 +p_txrx +-> +p +.p, + +542 +pkt_mask2 +); + +548 #ifdeà +IPV6 + + +549 +ETH_TYPE_IPV6 +: + +550 ià(* +´ÙocÞ2 + =ð +ICMPV6_PROTOCOL_ID +) { + +551 #iâdeà +VNF_ACL + + +552 ià(! + `memcmp +( +v6_h2 +-> +d¡_addr +, +lk +-> +v6 +, 16) + +553 || ! + `memcmp +( +v6_h2 +-> +d¡_addr +, +sÞiced_node_muÉiÿ¡_addr +, 13)) { + +555 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +556 +out_pÜt +, +pkt +[2]); + +557 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +558 #iâdeà +VNF_ACL + + +560 + `´tf +("Droppinghe IPv6 kt\n"); + +561 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +569 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask2 +); + +573 ià(( +TXRX_DEBUG + > 2è&& ( +txrx_pkt_´t_couÁ + < 10)) { + +574 + `´t_pkt1 +( +pkt +[3]); + +575 +txrx_pkt_´t_couÁ +++; + +576 + `´tf +("\nEth Typ %x, Prot %x, ETH_TYPE_ARP %x, " + +578 + `¹e_be_to_ýu_16 +(* +h_´Ùo3 +), * +´ÙocÞ3 +, +ETH_TYPE_ARP +, + +579 +ETH_TYPE_IPV4 +, +IP_PROTOCOL_ICMP +); + +583 +ut32_t + +d¡_addr_off£t3 + = + +584 +MBUF_HDR_ROOM + + +ETH_HDR_SIZE + + +IP_HDR_DST_ADR_OFST +; + +585 +ut32_t + * +d¡_addr3 + = + +586 + `RTE_MBUF_METADATA_UINT32_PTR +( +pkt +, +d¡_addr_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__ +, +lk +-> + +, * +d¡_addr3 +); + +592 + `¹e_be_to_ýu_16 +(* +h_´Ùo3 +)) { + +593 +ETH_TYPE_ARP +: + +594 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +595 +out_pÜt +, +pkt +[3]); + +596 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +599 +ETH_TYPE_IPV4 +: + +600 ià((* +´ÙocÞ3 + =ð +IP_PROTOCOL_ICMP +) && + +601 ( +lk +-> + + =ð + `¹e_be_to_ýu_32 +(* +d¡_addr3 +))) { + +602 ià( + `is_phy_pÜt_´iv +( +pkt +[3]-> +pÜt +)) { + +603 + `¹e_pe_pÜt_out_·ck_£¹ +( + +604 +p_txrx +-> +p +.p, + +605 +out_pÜt +, +pkt +[3]); + +606 + `¹e_pe_ah_·ck_drÝ +( + +607 +p_txrx +-> +p +.p, + +608 +pkt_mask3 +); + +614 #ifdeà +IPV6 + + +615 +ETH_TYPE_IPV6 +: + +616 ià(* +´ÙocÞ3 + =ð +ICMPV6_PROTOCOL_ID +) { + +617 #iâdeà +VNF_ACL + + +618 ià(! + `memcmp +( +v6_h3 +-> +d¡_addr +, +lk +-> +v6 +, 16) + +619 || ! + `memcmp +( +v6_h3 +-> +d¡_addr +, +sÞiced_node_muÉiÿ¡_addr +, 13)) { + +621 + `¹e_pe_pÜt_out_·ck_£¹ +( +p_txrx +-> +p +.p, + +622 +out_pÜt +, +pkt +[3]); + +623 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +624 #iâdeà +VNF_ACL + + +626 + `´tf +("Droppinghe IPv6 kt\n"); + +627 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +635 + `¹e_pe_ah_·ck_drÝ +( +p_txrx +-> +p +.p, +pkt_mask3 +); + +639 +p_txrx +-> +»ûivedPktCouÁ + += 4; + +641 + } +} + +643 +PIPELINE_TXRX_KEY_PORT_IN_AH +( +pÜt__ah_txrx +, +pkt_wÜk_txrx +, +pkt4_wÜk_txrx +); + +645 * + $pe_txrx_ +( +pe_·¿ms + * +·¿ms +, + +646 +__¹e_unu£d + * +¬g +) + +648 +pe + * +p +; + +649 +pe_txrx + * +p_± +; + +650 +ut32_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 +(( +pe_txrx +)); + +662 +p + = + `¹e_zm®loc +( +NULL +, +size +, +RTE_CACHE_LINE_SIZE +); + +663 +p_± + = ( +pe_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_± +-> +lks_m +[ +i +] = 0xff; + +676 +p_± +-> +pe_num + = 0; + +677 + `´tf +("txrx initialization of variables done\n"); + +680 ià( + `pe_txrx_·r£_¬gs +( +p_± +, +·¿ms +)) + +681 +NULL +; + +685 +¹e_pe_·¿ms + +pe_·¿ms + = { + +686 . +Çme + = "TXRX", + +687 . +sock_id + = +·¿ms +->socket_id, + +688 . +off£t_pÜt_id + = 0, + +691 +p +->°ð + `¹e_pe_ü +(& +pe_·¿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 ( +pe_txrx__pÜt_h_¬g +)) * + +706 ( +·¿ms +-> +n_pÜts_ +)); + +707 +pe_txrx__pÜt_h_¬g + * + + = + +708 ( +pe_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_pe_pÜt__·¿ms + +pÜt_·¿ms + = { + +719 . +Ýs + = + +720 + `pe_pÜt__·¿ms_g_Ýs +(& +·¿ms +-> + +721 +pÜt_ +[ +i +]), + +722 . +¬g_ü + = + +723 + `pe_pÜt__·¿ms_cÚvt +(& +·¿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_pe_pÜt__ü +( +p +->p, + +733 & +pÜt_·¿ms +, + +734 & +p +-> +pÜt__id +[ +i +]); + +736 ià( +¡©us +) { + +737 + `¹e_pe_ä +( +p +->p); + +738 + `¹e_ä +( +p +); + +739 +NULL +; + +744 +i + = 0; i < +p +-> +n_pÜts_out +; i++) { + +745 +¹e_pe_pÜt_out_·¿ms + +pÜt_·¿ms + = { + +746 . +Ýs + = + +747 + `pe_pÜt_out_·¿ms_g_Ýs +(& +·¿ms +-> + +748 +pÜt_out +[ +i +]), + +749 . +¬g_ü + = + +750 + `pe_pÜt_out_·¿ms_cÚvt +(& +·¿ms +-> + +751 +pÜt_out +[ +i +]), + +752 . +f_aùiÚ + = +NULL +, + +753 . +¬g_ah + = +NULL +, + +756 +¡©us + = + `¹e_pe_pÜt_out_ü +( +p +->p, + +757 & +pÜt_·¿ms +, + +758 & +p +-> +pÜt_out_id +[ +i +]); + +760 ià( +¡©us +) { + +761 + `¹e_pe_ä +( +p +->p); + +762 + `¹e_ä +( +p +); + +763 +NULL +; + +767 +pe_num + = 0; + +768 +¡©us + = + `ssÿnf +( +·¿ms +-> +Çme +, "PIPELINE%d", & +pe_num +); + +769 ià( +¡©us + < 0) { + +770 + `´tf +("Unableoead ipelineumber\n"); + +771 +NULL +; + +773 +p_± +-> +pe_num + = ( +ut8_t +) ipeline_num; + +775 + `»gi¡_pe_Qs +( +p_± +-> +pe_num +, +p +); + +776 + `£t_lk_m +( +p_± +-> +pe_num +, +p +, _±-> +lks_m +); + +777 + `£t_ouÜt_id +( +p_± +-> +pe_num +, +p +, _±-> +ouÜt_id +); + +780 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +781 +¹e_pe_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_pe_bË_ü +( +p +->p, + +791 & +bË_·¿ms +, + +792 & +p +-> +bË_id +[ +i +]); + +794 ià( +¡©us +) { + +795 + `¹e_pe_ä +( +p +->p); + +796 + `¹e_ä +( +p +); + +797 +NULL +; + +802 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +803 +¡©us + = + `¹e_pe_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_pe_ä +( +p +->p); + +812 + `¹e_ä +( +p +); + +813 +NULL +; + +818 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +819 +¹e_pe_bË_y + +deçuÉ_y + = { + +820 . +aùiÚ + = +RTE_PIPELINE_ACTION_PORT +, + +821 . +pÜt_id + = +p +-> +pÜt_out_id +[ +i +], + +824 +¹e_pe_bË_y + * +deçuÉ_y_±r +; + +826 +¡©us + = + `¹e_pe_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_pe_ä +( +p +->p); + +835 + `¹e_ä +( +p +); + +836 +NULL +; + +841 +i + = 0; i < +p +-> +n_pÜts_ +; i++) { + +842 +¡©us + = + `¹e_pe_pÜt__abË +( +p +->p, + +843 +p +-> +pÜt__id +[ +i +]); + +845 ià( +¡©us +) { + +846 + `¹e_pe_ä +( +p +->p); + +847 + `¹e_ä +( +p +); + +848 +NULL +; + +853 ià( + `¹e_pe_check +( +p +->p) < 0) { + +854 + `¹e_pe_ä +( +p +->p); + +855 + `¹e_ä +( +p +); + +856 +NULL +; + +860 +p +-> +n_msgq + = +·¿ms +->n_msgq; + +861 +i + = 0; i < +p +-> +n_msgq +; i++) + +862 +p +-> +msgq_ +[ +i +] = +·¿ms +->msgq_in[i]; + +863 +i + = 0; i < +p +-> +n_msgq +; i++) + +864 +p +-> +msgq_out +[ +i +] = +·¿ms +->msgq_out[i]; + +867 + `memýy +( +p +-> +hªdËrs +, handlers, (p->handlers)); + +869 +p +; + +870 + } +} + +872 + $pe_txrx_ä +(* +pe +) + +874 +pe + * +p + = (pipeline *)pipeline; + +877 ià( +p + =ð +NULL +) + +881 + `¹e_pe_ä +( +p +->p); + +882 + `¹e_ä +( +p +); + +884 + } +} + +886 + $pe_txrx_tim +(* +pe +) + +888 +pe + * +p + = (pipeline *)pipeline; + +890 + `pe_msg_»q_hªdË +( +p +); + +891 + `¹e_pe_æush +( +p +->p); + +894 + } +} + +897 + $pe_txrx_ack +(* +pe +, +ut32_t + +pÜt_ +, ut32_* +pÜt_out +) + +899 +pe + * +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 +pe_be_Ýs + + gpe_txrx_be_Ýs + = { + +910 . +f_ + = +pe_txrx_ +, + +911 . + gf_ä + = +pe_txrx_ä +, + +912 . + gf_run + = +NULL +, + +913 . + gf_tim + = +pe_txrx_tim +, + +914 . + gf_ack + = +pe_txrx_ack +, + + @VIL/pipeline_txrx/pipeline_txrx_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_TXRX_BE_H__ + + +18 + #__INCLUDE_PIPELINE_TXRX_BE_H__ + + + ) + +20 + ~"pe_commÚ_be.h +" + +21 + #PIPELINE_TXRX_KEY_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +23 + `f_ah +( \ + +24 +__¹e_unu£d + +¹e_pe + * +¹e_p +, \ + +25 +¹e_mbuf + ** +pkts +, \ + +26 +ut32_t + +n_pkts +, \ + +27 * +¬g +) \ + +29 +ut32_t + +i +, +j +; \ + +31 +j + = 0; j < +n_pkts +; j++) \ + +32 + `¹e_´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 +pe_be_Ýs + +pe_txrx_be_Ýs +; + +49 + epe_txrx_msg_»q_ty³ + { + +50 + mPIPELINE_TXRX_MSG_REQ_ENTRY_DBG +, + +51 + mPIPELINE_TXRX_MSG_REQS + + +56 + spe_txrx_y_dbg_msg_»q + { + +57 +pe_msg_»q_ty³ + + mty³ +; + +58 +pe_txrx_msg_»q_ty³ + + msubty³ +; + +61 +ut8_t + + md©a +[5]; + +67 + spe_txrx__pÜt_h_¬g + { + +68 +pe_txrx + * + mp +; + +69 +ut8_t + + m_pÜt_id +; + +72 + spe_txrx_y_dbg_msg_r¥ + { + +73 + m¡©us +; + + @vnf_common/app.h + +17 #iâdeà +__INCLUDE_APP_H__ + + +18 + #__INCLUDE_APP_H__ + + + ) + +20 + ~<¡dt.h +> + +21 + ~<¡rg.h +> + +23 + ~<¹e_commÚ.h +> + +24 + ~<¹e_mempoÞ.h +> + +25 + ~<¹e_rg.h +> + +26 + ~<¹e_sched.h +> + +27 + ~<¹e_tim.h +> + +28 + ~<cmdle_·r£.h +> + +30 + ~<¹e_hdev.h +> + +32 + ~"ýu_cÜe_m.h +" + +33 + ~"pe.h +" + +35 + #APP_PARAM_NAME_SIZE + +PIPELINE_NAME_SIZE + + + ) + +36 + #APP_LINK_PCI_BDF_SIZE + 32 + + ) + +37 +p_lk_·¿ms + * + gfd_p_lk +; + +38 + sp_mempoÞ_·¿ms + { + +39 * + mÇme +; + +40 +ut32_t + + m·r£d +; + +41 +ut32_t + + mbufãr_size +; + +42 +ut32_t + + mpoÞ_size +; + +43 +ut32_t + + mÿche_size +; + +44 +ut32_t + + mýu_sock_id +; + +47 + sp_lk_·¿ms + { + +48 * + mÇme +; + +49 +ut32_t + + m·r£d +; + +50 +ut32_t + + mpmd_id +; + +51 +ut32_t + + m¬p_q +; + +52 +ut32_t + + mtý_syn_q +; + +53 +ut32_t + + m_loÿl_q +; + +54 +ut32_t + + mtý_loÿl_q +; + +55 +ut32_t + + mudp_loÿl_q +; + +56 +ut32_t + + msùp_loÿl_q +; + +57 +ut32_t + + m¡©e +; + +58 +ut32_t + + m +; + +59 +ut8_t + + mv6 +[16]; + +60 +ut32_t + + mdth +; + +61 +ut32_t + + mdth_v6 +; + +62 +ut64_t + + mmac_addr +; + +63 + mpci_bdf +[ +APP_LINK_PCI_BDF_SIZE +]; + +65 +¹e_h_cÚf + + mcÚf +; + +66 +ut8_t + + m´omisc +; + +69 + sp_pktq_hwq__·¿ms + { + +70 * + mÇme +; + +71 +ut32_t + + m·r£d +; + +72 +ut32_t + + mmempoÞ_id +; + +73 +ut32_t + + msize +; + +74 +ut32_t + + mbur¡ +; + +76 +¹e_h_rxcÚf + + mcÚf +; + +79 + sp_pktq_hwq_out_·¿ms + { + +80 * + mÇme +; + +81 +ut32_t + + m·r£d +; + +82 +ut32_t + + msize +; + +83 +ut32_t + + mbur¡ +; + +84 +ut32_t + + mdrÝËss +; + +85 +ut64_t + + mn_»s +; + +86 +¹e_h_txcÚf + + mcÚf +; + +89 + sp_pktq_swq_·¿ms + { + +90 * + mÇme +; + +91 +ut32_t + + m·r£d +; + +92 +ut32_t + + msize +; + +93 +ut32_t + + mbur¡_»ad +; + +94 +ut32_t + + mbur¡_wre +; + +95 +ut32_t + + mdrÝËss +; + +96 +ut64_t + + mn_»s +; + +97 +ut32_t + + mýu_sock_id +; + +98 +ut32_t + + mv4_äag +; + +99 +ut32_t + + mv6_äag +; + +100 +ut32_t + + mv4_¿s +; + +101 +ut32_t + + mv6_¿s +; + +102 +ut32_t + + mmtu +; + +103 +ut32_t + + mmad©a_size +; + +104 +ut32_t + + mmempoÞ_deù_id +; + +105 +ut32_t + + mmempoÞ_deù_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 + sp_pktq_tm_·¿ms + { + +121 * + mÇme +; + +122 +ut32_t + + m·r£d +; + +123 cÚ¡ * + mfe_Ç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_pe_·¿ms + + +128 + msched_pe_´ofes +[ +RTE_SCHED_PIPE_PROFILES_PER_PORT +]; + +129 + msched_pe_to_´ofe +[ +APP_MAX_SCHED_SUBPORTS + * +APP_MAX_SCHED_PIPES +]; + +130 +ut32_t + + mbur¡_»ad +; + +131 +ut32_t + + mbur¡_wre +; + +134 + sp_pktq_sourû_·¿ms + { + +135 * + mÇme +; + +136 +ut32_t + + m·r£d +; + +137 +ut32_t + + mmempoÞ_id +; + +138 +ut32_t + + mbur¡ +; + +139 * + mfe_Çme +; + +140 +ut32_t + + mn_bys_³r_pkt +; + +143 + sp_pktq_sk_·¿ms + { + +144 * + mÇme +; + +145 +ut8_t + + m·r£d +; + +146 * + mfe_Çme +; + +147 +ut32_t + + mn_pkts_to_dump +; + +150 + sp_msgq_·¿ms + { + +151 * + mÇme +; + +152 +ut32_t + + m·r£d +; + +153 +ut32_t + + msize +; + +154 +ut32_t + + mýu_sock_id +; + +157 + ep_pktq__ty³ + { + +158 + mAPP_PKTQ_IN_HWQ +, + +159 + mAPP_PKTQ_IN_SWQ +, + +160 + mAPP_PKTQ_IN_TM +, + +161 + mAPP_PKTQ_IN_SOURCE +, + +164 + sp_pktq__·¿ms + { + +165 +p_pktq__ty³ + + mty³ +; + +166 +ut32_t + + mid +; + +169 + ep_pktq_out_ty³ + { + +170 + mAPP_PKTQ_OUT_HWQ +, + +171 + mAPP_PKTQ_OUT_SWQ +, + +172 + mAPP_PKTQ_OUT_TM +, + +173 + mAPP_PKTQ_OUT_SINK +, + +176 + sp_pktq_out_·¿ms + { + +177 +p_pktq_out_ty³ + + mty³ +; + +178 +ut32_t + + mid +; + +181 #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 + sp_pe_·¿ms + { + +193 * + mÇme +; + +194 +ut8_t + + m·r£d +; + +196 + mty³ +[ +APP_PIPELINE_TYPE_SIZE +]; + +198 +ut32_t + + msock_id +; + +199 +ut32_t + + mcÜe_id +; + +200 +ut32_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 +ut32_t + + mmsgq_ +[ +APP_MAX_PIPELINE_MSGQ_IN +]; + +205 +ut32_t + + mmsgq_out +[ +APP_MAX_PIPELINE_MSGQ_OUT +]; + +207 +ut32_t + + mn_pktq_ +; + +208 +ut32_t + + mn_pktq_out +; + +209 +ut32_t + + mn_msgq_ +; + +210 +ut32_t + + mn_msgq_out +; + +212 +ut32_t + + mtim_³riod +; + +214 * + m¬gs_Çme +[ +APP_MAX_PIPELINE_ARGS +]; + +215 * + m¬gs_v®ue +[ +APP_MAX_PIPELINE_ARGS +]; + +216 +ut32_t + + mn_¬gs +; + +219 + sp_pe_d©a + { + +220 * + mbe +; + +221 * + mã +; + +222 +pe_ty³ + * + m±y³ +; + +223 +ut64_t + + mtim_³riod +; + +224 +ut32_t + + mabËd +; + +227 + sp_th»ad_pe_d©a + { + +228 +ut32_t + + mpe_id +; + +229 * + mbe +; + +230 +pe_be_Ý_run + + mf_run +; + +231 +pe_be_Ý_tim + + mf_tim +; + +232 +ut64_t + + mtim_³riod +; + +233 +ut64_t + + mddle +; + +236 #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 + sp_th»ad_d©a + { + +245 +p_th»ad_pe_d©a + + m»guÏr +[ +APP_MAX_THREAD_PIPELINES +]; + +246 +p_th»ad_pe_d©a + + mcu¡om +[ +APP_MAX_THREAD_PIPELINES +]; + +248 +ut32_t + + mn_»guÏr +; + +249 +ut32_t + + mn_cu¡om +; + +251 +ut64_t + + mtim_³riod +; + +252 +ut64_t + + mth»ad_»q_ddle +; + +254 +ut64_t + + mddle +; + +256 +¹e_rg + * + mmsgq_ +; + +257 +¹e_rg + * + mmsgq_out +; + +259 +ut64_t + + mhdroom_time +; + +260 +ut64_t + + mhdroom_cyþes +; + +261 + mhdroom_¿tio +; + +264 #iâdeà +APP_MAX_LINKS + + +265 + #APP_MAX_LINKS + 32 + + ) + +268 + sp_l_·¿ms + { + +270 * + mcÜem +; + +273 +ut32_t + + mma¡_lcÜe_´e£Á +; + +274 +ut32_t + + mma¡_lcÜe +; + +277 +ut32_t + + mchªÃls_´e£Á +; + +278 +ut32_t + + mchªÃls +; + +281 +ut32_t + + mmemÜy_´e£Á +; + +282 +ut32_t + + mmemÜy +; + +285 +ut32_t + + m¿nks_´e£Á +; + +286 +ut32_t + + m¿nks +; + +289 * + mpci_bÏckli¡ +[ +APP_MAX_LINKS +]; + +292 * + mpci_whi¡ +[ +APP_MAX_LINKS +]; + +295 * + mvdev +[ +APP_MAX_LINKS +]; + +298 +ut32_t + + mvmw¬e_tsc_m_´e£Á +; + +299 + mvmw¬e_tsc_m +; + +302 * + m´oc_ty³ +; + +305 * + msy¦og +; + +308 +ut32_t + + mlog_Ëv_´e£Á +; + +309 +ut32_t + + mlog_Ëv +; + +312 +ut32_t + + mvsiÚ_´e£Á +; + +313 + mvsiÚ +; + +316 +ut32_t + + mhp_´e£Á +; + +317 + mhp +; + +320 +ut32_t + + mno_huge_´e£Á +; + +321 + mno_huge +; + +324 +ut32_t + + mno_pci_´e£Á +; + +325 + mno_pci +; + +328 +ut32_t + + mno_h³t_´e£Á +; + +329 + mno_h³t +; + +332 +ut32_t + + mno_shcÚf_´e£Á +; + +333 + mno_shcÚf +; + +336 * + madd_driv +; + +339 * + msock_mem +; + +342 * + mhuge_d +; + +345 * + mfe_´efix +; + +348 * + mba£_vddr +; + +351 +ut32_t + + mü_uio_dev_´e£Á +; + +352 + mü_uio_dev +; + +355 * + mvfio_ +; + +358 +ut32_t + + mx_dom0_´e£Á +; + +359 + mx_dom0 +; + +362 #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 +ut8_t + + gabË_hwlb +; + +425 +ut8_t + + gabË_æow_d +; + +427 + #APP_CORE_MASK_SIZE + \ + +428 ( +RTE_MAX_LCORE + / 64 + ((RTE_MAX_LCORE % 64è? 1 : 0)) + + ) + +430 + sp_·¿ms + { + +432 + mp_Çme +[ +APP_APPNAME_SIZE +]; + +433 cÚ¡ * + mcÚfig_fe +; + +434 cÚ¡ * + msüt_fe +; + +435 cÚ¡ * + m·r£r_fe +; + +436 cÚ¡ * + mouut_fe +; + +437 cÚ¡ * + m´roc +; + +438 cÚ¡ * + m´roc_¬gs +; + +439 +ut64_t + + mpÜt_mask +; + +440 +ut32_t + + mlog_Ëv +; + +442 +p_l_·¿ms + + ml_·¿ms +; + +443 +p_mempoÞ_·¿ms + + mmempoÞ_·¿ms +[ +APP_MAX_MEMPOOLS +]; + +444 +p_lk_·¿ms + + mlk_·¿ms +[ +APP_MAX_LINKS +]; + +445 +p_pktq_hwq__·¿ms + + mhwq__·¿ms +[ +APP_MAX_HWQ_IN +]; + +446 +p_pktq_hwq_out_·¿ms + + mhwq_out_·¿ms +[ +APP_MAX_HWQ_OUT +]; + +447 +p_pktq_swq_·¿ms + + mswq_·¿ms +[ +APP_MAX_PKTQ_SWQ +]; + +448 +p_pktq_tm_·¿ms + + mtm_·¿ms +[ +APP_MAX_PKTQ_TM +]; + +449 +p_pktq_sourû_·¿ms + + msourû_·¿ms +[ +APP_MAX_PKTQ_SOURCE +]; + +450 +p_pktq_sk_·¿ms + + msk_·¿ms +[ +APP_MAX_PKTQ_SINK +]; + +451 +p_msgq_·¿ms + + mmsgq_·¿ms +[ +APP_MAX_MSGQ +]; + +452 +p_pe_·¿ms + + mpe_·¿ms +[ +APP_MAX_PIPELINES +]; + +454 +ut32_t + + mn_mempoÞs +; + +455 +ut32_t + + mn_lks +; + +456 +ut32_t + + mn_pktq_hwq_ +; + +457 +ut32_t + + mn_pktq_hwq_out +; + +458 +ut32_t + + mn_pktq_swq +; + +459 +ut32_t + + mn_pktq_tm +; + +460 +ut32_t + + mn_pktq_sourû +; + +461 +ut32_t + + mn_pktq_sk +; + +462 +ut32_t + + mn_msgq +; + +463 +ut32_t + + mn_pes +; + +465 +ut32_t + + mhd_csum_»q +; + +466 +ut32_t + + mn_hwlb_q +; + +468 * + ml_¬gv +[1 + +APP_EAL_ARGC +]; + +469 +ýu_cÜe_m + * + mcÜe_m +; + +470 +ut64_t + + mcÜe_mask +[ +APP_CORE_MASK_SIZE +]; + +471 +¹e_mempoÞ + * + mmempoÞ +[ +APP_MAX_MEMPOOLS +]; + +472 +¹e_rg + * + mswq +[ +APP_MAX_PKTQ_SWQ +]; + +473 +¹e_sched_pÜt + * + mtm +[ +APP_MAX_PKTQ_TM +]; + +474 +¹e_rg + * + mmsgq +[ +APP_MAX_MSGQ +]; + +475 +pe_ty³ + + mpe_ty³ +[ +APP_MAX_PIPELINE_TYPES +]; + +476 +p_pe_d©a + + mpe_d©a +[ +APP_MAX_PIPELINES +]; + +477 +p_th»ad_d©a + + mth»ad_d©a +[ +APP_MAX_THREADS +]; + +478 +cmdle_·r£_ùx_t + + mcmds +[ +APP_MAX_CMDS + + 1]; + +480 + ml_¬gc +; + +481 +ut32_t + + mn_pe_ty³s +; + +482 +ut32_t + + mn_cmds +; + +485 + #APP_PARAM_VALID +( +obj +è((obj)-> +Çme + !ð +NULL +) + + ) + +487 + #APP_PARAM_COUNT +( +obj_¬¿y +, +n_objs +) \ + +489 +size_t + +i +; \ + +491 +n_objs + = 0; \ + +492 +i + = 0; i < + `RTE_DIM +( +obj_¬¿y +); i++) \ + +493 ià( + `APP_PARAM_VALID +(&(( +obj_¬¿y +)[ +i +]))) \ + +494 +n_objs +++; \ + +495 } + + ) + +497 + #APP_PARAM_FIND +( +obj_¬¿y +, +key +) \ + +499 +ssize_t + +obj_idx +; \ + +500 cÚ¡ +ssize_t + +obj_couÁ + = + `RTE_DIM +( +obj_¬¿y +); \ + +502 +obj_idx + = 0; obj_idx < +obj_couÁ +; obj_idx++) { \ + +503 ià(! + `APP_PARAM_VALID +(&(( +obj_¬¿y +)[ +obj_idx +]))) \ + +506 ià( + `¡rcmp +( +key +, ( +obj_¬¿y +)[ +obj_idx +]. +Çme +) == 0) \ + +509 +obj_idx + < +obj_couÁ + ? obj_idx : - +ENOENT +; \ + +510 }) + + ) + +512 + #APP_PARAM_FIND_BY_ID +( +obj_¬¿y +, +´efix +, +id +, +obj +) \ + +514 +Çme +[ +APP_PARAM_NAME_SIZE +]; \ + +515 +ssize_t + +pos +; \ + +517 + `¥rtf +( +Çme +, +´efix + "%" +PRIu32 +, +id +); \ + +518 +pos + = + `APP_PARAM_FIND +( +obj_¬¿y +, +Çme +); \ + +519 +obj + = ( +pos + < 0è? +NULL + : &(( +obj_¬¿y +)[pos]); \ + +520 } 0) + + ) + +522 + #APP_PARAM_GET_ID +( +obj +, +´efix +, +id +) \ + +524 + `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 + `årtf +( +¡dr +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +553 + `abÜt +(); \ + +555 } 0) + + ) + +557 + ep_log_Ëv + { + +558 + mAPP_LOG_LEVEL_HIGH + = 1, + +559 + mAPP_LOG_LEVEL_LOW +, + +560 + mAPP_LOG_LEVELS + + +563 + #APP_LOG +( +p +, +Ëv +, +fmt +, ...) \ + +565 ià( +p +-> +log_Ëv + >ð +APP_LOG_LEVEL_ + ## +Ëv +) \ + +566 + `årtf +( +¡dout +, "[APP] " +fmt + "\n", ## +__VA_ARGS__ +); \ + +567 } 0) + + ) + +569 +le + +ut32_t + + +570 + $p_lk_g_n_rxq +( +p_·¿ms + * +p +, +p_lk_·¿ms + * +lk +) + +572 +ut32_t + +n_rxq + = 0, +lk_id +, +i +; + +573 +ut32_t + +n_pktq_hwq_ + = + `RTE_MIN +( +p +->n_pktq_hwq_in, + +574 + `RTE_DIM +( +p +-> +hwq__·¿ms +)); + +576 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +578 +i + = 0; i < +n_pktq_hwq_ +; i++) { + +579 +p_pktq_hwq__·¿ms + * +p + = & +p +-> +hwq__·¿ms +[ +i +]; + +580 +ut32_t + +rxq_lk_id +, +rxq_queue_id +; + +582 + `ssÿnf +( +p +-> +Çme +, "RXQ%" +SCNu32 + ".%" SCNu32, + +583 & +rxq_lk_id +, & +rxq_queue_id +); + +584 ià( +rxq_lk_id + =ð +lk_id +) + +585 +n_rxq +++; + +588 +n_rxq +; + +589 + } +} + +591 +le + +ut32_t + + +592 + $p_lk_g_n_txq +( +p_·¿ms + * +p +, +p_lk_·¿ms + * +lk +) + +594 +ut32_t + +n_txq + = 0, +lk_id +, +i +; + +595 +ut32_t + +n_pktq_hwq_out + = + `RTE_MIN +( +p +->n_pktq_hwq_out, + +596 + `RTE_DIM +( +p +-> +hwq_out_·¿ms +)); + +598 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +600 +i + = 0; i < +n_pktq_hwq_out +; i++) { + +601 +p_pktq_hwq_out_·¿ms + * +p + = & +p +-> +hwq_out_·¿ms +[ +i +]; + +602 +ut32_t + +txq_lk_id +, +txq_queue_id +; + +604 + `ssÿnf +( +p +-> +Çme +, "TXQ%" +SCNu32 + ".%" SCNu32, + +605 & +txq_lk_id +, & +txq_queue_id +); + +606 ià( +txq_lk_id + =ð +lk_id +) + +607 +n_txq +++; + +610 +n_txq +; + +611 + } +} + +613 +le + +ut32_t + + +614 + $p_rxq_g_»ads +( +p_·¿ms + * +p +, +p_pktq_hwq__·¿ms + * +rxq +) + +616 +ut32_t + +pos + = +rxq + - +p +-> +hwq__·¿ms +; + +617 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +618 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +619 +ut32_t + +n_»ads + = 0, +i +; + +621 +i + = 0; i < +n_pes +; i++) { + +622 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +623 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +Õ-> +pktq_ +)); + +624 +ut32_t + +j +; + +626 +j + = 0; j < +n_pktq_ +; j++) { + +627 +p_pktq__·¿ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +629 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_IN_HWQ +) && + +630 ( +pktq +-> +id + =ð +pos +)) + +631 +n_»ads +++; + +635 +n_»ads +; + +636 + } +} + +638 +le + +ut32_t + + +639 + $p_swq_g_»ads +( +p_·¿ms + * +p +, +p_pktq_swq_·¿ms + * +swq +) + +641 +ut32_t + +pos + = +swq + - +p +-> +swq_·¿ms +; + +642 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +643 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +644 +ut32_t + +n_»ads + = 0, +i +; + +646 +i + = 0; i < +n_pes +; i++) { + +647 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +648 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +Õ-> +pktq_ +)); + +649 +ut32_t + +j +; + +651 +j + = 0; j < +n_pktq_ +; j++) { + +652 +p_pktq__·¿ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +654 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_IN_SWQ +) && + +655 ( +pktq +-> +id + =ð +pos +)) + +656 +n_»ads +++; + +660 +n_»ads +; + +661 + } +} + +663 +le + +ut32_t + + +664 + $p_tm_g_»ads +( +p_·¿ms + * +p +, +p_pktq_tm_·¿ms + * +tm +) + +666 +ut32_t + +pos + = +tm + - +p +-> +tm_·¿ms +; + +667 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +668 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +669 +ut32_t + +n_»ads + = 0, +i +; + +671 +i + = 0; i < +n_pes +; i++) { + +672 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +673 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +Õ-> +pktq_ +)); + +674 +ut32_t + +j +; + +676 +j + = 0; j < +n_pktq_ +; j++) { + +677 +p_pktq__·¿ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +679 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_IN_TM +) && + +680 ( +pktq +-> +id + =ð +pos +)) + +681 +n_»ads +++; + +685 +n_»ads +; + +686 + } +} + +688 +le + +ut32_t + + +689 + $p_sourû_g_»ads +( +p_·¿ms + * +p +, + +690 +p_pktq_sourû_·¿ms + * +sourû +) + +692 +ut32_t + +pos + = +sourû + - +p +-> +sourû_·¿ms +; + +693 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +694 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +695 +ut32_t + +n_»ads + = 0, +i +; + +697 +i + = 0; i < +n_pes +; i++) { + +698 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +699 +ut32_t + +n_pktq_ + = + `RTE_MIN +( +p +->n_pktq_, + `RTE_DIM +Õ-> +pktq_ +)); + +700 +ut32_t + +j +; + +702 +j + = 0; j < +n_pktq_ +; j++) { + +703 +p_pktq__·¿ms + * +pktq + = & +p +-> +pktq_ +[ +j +]; + +705 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_IN_SOURCE +) && + +706 ( +pktq +-> +id + =ð +pos +)) + +707 +n_»ads +++; + +711 +n_»ads +; + +712 + } +} + +714 +le + +ut32_t + + +715 + $p_msgq_g_»ads +( +p_·¿ms + * +p +, +p_msgq_·¿ms + * +msgq +) + +717 +ut32_t + +pos + = +msgq + - +p +-> +msgq_·¿ms +; + +718 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +719 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +720 +ut32_t + +n_»ads + = 0, +i +; + +722 +i + = 0; i < +n_pes +; i++) { + +723 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +724 +ut32_t + +n_msgq_ + = + `RTE_MIN +( +p +->n_msgq_, + `RTE_DIM +Õ-> +msgq_ +)); + +725 +ut32_t + +j +; + +727 +j + = 0; j < +n_msgq_ +; j++) + +728 ià( +p +-> +msgq_ +[ +j +] =ð +pos +) + +729 +n_»ads +++; + +732 +n_»ads +; + +733 + } +} + +735 +le + +ut32_t + + +736 + $p_txq_g_wrs +( +p_·¿ms + * +p +, +p_pktq_hwq_out_·¿ms + * +txq +) + +738 +ut32_t + +pos + = +txq + - +p +-> +hwq_out_·¿ms +; + +739 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +740 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +741 +ut32_t + +n_wrs + = 0, +i +; + +743 +i + = 0; i < +n_pes +; i++) { + +744 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +745 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +746 + `RTE_DIM +( +p +-> +pktq_out +)); + +747 +ut32_t + +j +; + +749 +j + = 0; j < +n_pktq_out +; j++) { + +750 +p_pktq_out_·¿ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +752 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_OUT_HWQ +) && + +753 ( +pktq +-> +id + =ð +pos +)) + +754 +n_wrs +++; + +758 +n_wrs +; + +759 + } +} + +761 +le + +ut32_t + + +762 + $p_swq_g_wrs +( +p_·¿ms + * +p +, +p_pktq_swq_·¿ms + * +swq +) + +764 +ut32_t + +pos + = +swq + - +p +-> +swq_·¿ms +; + +765 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +766 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +767 +ut32_t + +n_wrs + = 0, +i +; + +769 +i + = 0; i < +n_pes +; i++) { + +770 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +771 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +772 + `RTE_DIM +( +p +-> +pktq_out +)); + +773 +ut32_t + +j +; + +775 +j + = 0; j < +n_pktq_out +; j++) { + +776 +p_pktq_out_·¿ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +778 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_OUT_SWQ +) && + +779 ( +pktq +-> +id + =ð +pos +)) + +780 +n_wrs +++; + +784 +n_wrs +; + +785 + } +} + +787 +le + +ut32_t + + +788 + $p_tm_g_wrs +( +p_·¿ms + * +p +, +p_pktq_tm_·¿ms + * +tm +) + +790 +ut32_t + +pos + = +tm + - +p +-> +tm_·¿ms +; + +791 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +792 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +793 +ut32_t + +n_wrs + = 0, +i +; + +795 +i + = 0; i < +n_pes +; i++) { + +796 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +797 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +798 + `RTE_DIM +( +p +-> +pktq_out +)); + +799 +ut32_t + +j +; + +801 +j + = 0; j < +n_pktq_out +; j++) { + +802 +p_pktq_out_·¿ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +804 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_OUT_TM +) && + +805 ( +pktq +-> +id + =ð +pos +)) + +806 +n_wrs +++; + +810 +n_wrs +; + +811 + } +} + +813 +le + +ut32_t + + +814 + $p_sk_g_wrs +( +p_·¿ms + * +p +, +p_pktq_sk_·¿ms + * +sk +) + +816 +ut32_t + +pos + = +sk + - +p +-> +sk_·¿ms +; + +817 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +818 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +819 +ut32_t + +n_wrs + = 0, +i +; + +821 +i + = 0; i < +n_pes +; i++) { + +822 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +823 +ut32_t + +n_pktq_out + = + `RTE_MIN +( +p +->n_pktq_out, + +824 + `RTE_DIM +( +p +-> +pktq_out +)); + +825 +ut32_t + +j +; + +827 +j + = 0; j < +n_pktq_out +; j++) { + +828 +p_pktq_out_·¿ms + * +pktq + = & +p +-> +pktq_out +[ +j +]; + +830 ià(( +pktq +-> +ty³ + =ð +APP_PKTQ_OUT_SINK +) && + +831 ( +pktq +-> +id + =ð +pos +)) + +832 +n_wrs +++; + +836 +n_wrs +; + +837 + } +} + +839 +le + +ut32_t + + +840 + $p_cÜe_is_abËd +( +p_·¿ms + * +p +, +ut32_t + +lcÜe_id +) { + +841 ( +p +-> +cÜe_mask +[ +lcÜe_id + / 64] & + +842 (1LLU << ( +lcÜe_id + % 64))); + +843 + } +} + +845 +le + + +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 +le + + +852 + $p_cÜe_bud_cÜe_mask_¡rg +( +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 +le + +ut32_t + + +868 + $p_msgq_g_wrs +( +p_·¿ms + * +p +, +p_msgq_·¿ms + * +msgq +) + +870 +ut32_t + +pos + = +msgq + - +p +-> +msgq_·¿ms +; + +871 +ut32_t + +n_pes + = + `RTE_MIN +( +p +->n_pipelines, + +872 + `RTE_DIM +( +p +-> +pe_·¿ms +)); + +873 +ut32_t + +n_wrs + = 0, +i +; + +875 +i + = 0; i < +n_pes +; i++) { + +876 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +877 +ut32_t + +n_msgq_out + = + `RTE_MIN +( +p +->n_msgq_out, + +878 + `RTE_DIM +( +p +-> +msgq_out +)); + +879 +ut32_t + +j +; + +881 +j + = 0; j < +n_msgq_out +; j++) + +882 ià( +p +-> +msgq_out +[ +j +] =ð +pos +) + +883 +n_wrs +++; + +886 +n_wrs +; + +887 + } +} + +889 +le + +p_lk_·¿ms + * + +890 + $p_g_lk_fÜ_rxq +( +p_·¿ms + * +p +, +p_pktq_hwq__·¿ms + * +p +) + +892 +lk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +893 +ssize_t + +lk_·¿m_idx +; + +894 +ut32_t + +rxq_lk_id +, +rxq_queue_id +; + +896 + `ssÿnf +( +p +-> +Çme +, "RXQ%" +SCNu32 + ".%" SCNu32, + +897 & +rxq_lk_id +, & +rxq_queue_id +); + +898 + `¥rtf +( +lk_Çme +, "LINK%" +PRIu32 +, +rxq_lk_id +); + +899 +lk_·¿m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_·¿ms +, +lk_Çme +); + +900 + `APP_CHECK +(( +lk_·¿m_idx + >= 0), + +901 "CªnÙ fd % fÜ %s", +lk_Çme +, +p +-> +Çme +); + +903 & +p +-> +lk_·¿ms +[ +lk_·¿m_idx +]; + +904 + } +} + +906 +le + +p_lk_·¿ms + * + +907 + $p_g_lk_fÜ_txq +( +p_·¿ms + * +p +, +p_pktq_hwq_out_·¿ms + * +p +) + +909 +lk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +910 +ssize_t + +lk_·¿m_idx +; + +911 +ut32_t + +txq_lk_id +, +txq_queue_id +; + +913 + `ssÿnf +( +p +-> +Çme +, "TXQ%" +SCNu32 + ".%" SCNu32, + +914 & +txq_lk_id +, & +txq_queue_id +); + +915 + `¥rtf +( +lk_Çme +, "LINK%" +PRIu32 +, +txq_lk_id +); + +916 +lk_·¿m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_·¿ms +, +lk_Çme +); + +917 + `APP_CHECK +(( +lk_·¿m_idx + >= 0), + +918 "CªnÙ fd % fÜ %s", +lk_Çme +, +p +-> +Çme +); + +920 & +p +-> +lk_·¿ms +[ +lk_·¿m_idx +]; + +921 + } +} + +923 +le + +p_lk_·¿ms + * + +924 + $p_g_lk_fÜ_tm +( +p_·¿ms + * +p +, +p_pktq_tm_·¿ms + * +p_tm +) + +926 +lk_Çme +[ +APP_PARAM_NAME_SIZE +]; + +927 +ut32_t + +lk_id +; + +928 +ssize_t + +lk_·¿m_idx +; + +930 + `ssÿnf +( +p_tm +-> +Çme +, "TM%" +PRIu32 +, & +lk_id +); + +931 + `¥rtf +( +lk_Çme +, "LINK%" +PRIu32 +, +lk_id +); + +932 +lk_·¿m_idx + = + `APP_PARAM_FIND +( +p +-> +lk_·¿ms +, +lk_Çme +); + +933 + `APP_CHECK +(( +lk_·¿m_idx + >= 0), + +934 "CªnÙ fd % fÜ %s", +lk_Çme +, +p_tm +-> +Çme +); + +936 & +p +-> +lk_·¿ms +[ +lk_·¿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Ú¡ * +fe_Çme +); + +949 +p_cÚfig_·r£_tm +( +p_·¿ms + * +p +); + +951 +p_cÚfig_§ve +( +p_·¿ms + * +p +, + +952 cÚ¡ * +fe_Çme +); + +954 +p_cÚfig_check +( +p_·¿ms + * +p +); + +956 +p_ +( +p_·¿ms + * +p +); + +958 +p_th»ad +(* +¬g +); + +960 +p_pe_ty³_»gi¡ +( +p_·¿ms + * +p +, + +961 +pe_ty³ + * +±y³ +); + +963 +pe_ty³ + * +p_pe_ty³_fd +( +p_·¿ms + * +p +, + +964 * +Çme +); + +966 +p_lk_up_º® +( +p_·¿ms + * +p +, + +967 +p_lk_·¿ms + * +ý +); + +969 +p_lk_down_º® +( +p_·¿ms + * +p +, + +970 +p_lk_·¿ms + * +ý +); + + @vnf_common/config_check.c + +17 + ~<¡dio.h +> + +19 + ~<¹e_.h +> + +21 + ~"p.h +" + +23 +ut8_t + + gg_n_hwq_ +; + +25 + $check_mempoÞs +( +p_·¿ms + * +p +) + +27 +ut32_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Þ % sizi 0\n", +p +-> +Çme +); + +35 + `APP_CHECK +(( +p +-> +ÿche_size + > 0), + +36 "MempoÞ % ÿchsizi 0\n", +p +-> +Çme +); + +38 + `APP_CHECK +( + `¹e_is_pow_of_2 +( +p +-> +ÿche_size +), + +39 "MempoÞ % ÿchsiznÙ ow oà2\n", +p +-> +Çme +); + +41 + } +} + +44 + $check_lks +( +p_·¿ms + * +p +) + +46 +ut32_t + +i +; + +49 ià( +p +-> +pÜt_mask +) { + +50 +ut32_t + +n_lks_pÜt_mask + = + +51 + `__but_pÝcouÁÎ +( +p +-> +pÜt_mask +); + +53 + `APP_CHECK +(( +p +-> +n_lks + =ð +n_lks_pÜt_mask +), + +57 +i + = 0; i < +p +-> +n_lks +; i++) { + +58 +p_lk_·¿ms + * +lk + = & +p +-> +lk_·¿ms +[ +i +]; + +59 +ut32_t + +rxq_max +, +n_rxq +, +n_txq +, +lk_id +, +i +; + +61 + `APP_PARAM_GET_ID +( +lk +, "LINK", +lk_id +); + +64 +rxq_max + = 0; + +65 ià( +lk +-> +¬p_q + > +rxq_max +) + +66 +rxq_max + = +lk +-> +¬p_q +; + +67 ià( +lk +-> +tý_syn_q + > +rxq_max +) + +68 +rxq_max + = +lk +-> +tý_syn_q +; + +69 ià( +lk +-> +_loÿl_q + > +rxq_max +) + +70 +rxq_max + = +lk +-> +_loÿl_q +; + +71 ià( +lk +-> +tý_loÿl_q + > +rxq_max +) + +72 +rxq_max + = +lk +-> +tý_loÿl_q +; + +73 ià( +lk +-> +udp_loÿl_q + > +rxq_max +) + +74 +rxq_max + = +lk +-> +udp_loÿl_q +; + +75 ià( +lk +-> +sùp_loÿl_q + > +rxq_max +) + +76 +rxq_max + = +lk +-> +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 +((( +lk +-> +¬p_q + =ð +i +) || + +83 ( +lk +-> +tý_syn_q + =ð +i +) || + +84 ( +lk +-> +_loÿl_q + =ð +i +) || + +85 ( +lk +-> +tý_loÿl_q + =ð +i +) || + +86 ( +lk +-> +udp_loÿl_q + =ð +i +) || + +87 ( +lk +-> +sùp_loÿl_q + =ð +i +)), + +88 "% RXQ ¬nÙ cÚtiguou (A)\n", +lk +-> +Çme +); + +92 +i + = 1; i <ð +rxq_max +; i++) + +93 + `APP_CHECK +((( +lk +-> +¬p_q + =ð +i +) || + +94 ( +lk +-> +tý_syn_q + =ð +i +) || + +95 ( +lk +-> +_loÿl_q + =ð +i +) || + +96 ( +lk +-> +tý_loÿl_q + =ð +i +) || + +97 ( +lk +-> +udp_loÿl_q + =ð +i +) || + +98 ( +lk +-> +sùp_loÿl_q + =ð +i +)), + +99 "% RXQ ¬nÙ cÚtiguou (A)\n", +lk +-> +Çme +); + +101 +n_rxq + = + `p_lk_g_n_rxq +( +p +, +lk +); + +103 + `APP_CHECK +(( +n_rxq +), "% dÛ nÙ havªy RXQ\n", +lk +-> +Çme +); + +104 + `´tf +("n_rxq = %d\n", +n_rxq +); + +105 + `´tf +("rxq_max = %d\n", +rxq_max +); + +109 +i + = 0; i < +n_rxq +; i++) { + +110 +Çme +[ +APP_PARAM_NAME_SIZE +]; + +111 +pos +; + +113 + `¥rtf +( +Çme +, "RXQ%" +PRIu32 + ".%" PRIu32, + +114 +lk_id +, +i +); + +115 +pos + = + `APP_PARAM_FIND +( +p +-> +hwq__·¿ms +, +Çme +); + +116 + `APP_CHECK +(( +pos + >= 0), + +117 "% RXQ ¬nÙ cÚtiguou (C)\n", +lk +-> +Çme +); + +121 +n_txq + = + `p_lk_g_n_txq +( +p +, +lk +); + +123 + `APP_CHECK +(( +n_txq +), "% dÛ nÙ havªy TXQ\n", +lk +-> +Çme +); + +125 +i + = 0; i < +n_txq +; i++) { + +126 +Çme +[ +APP_PARAM_NAME_SIZE +]; + +127 +pos +; + +129 + `¥rtf +( +Çme +, "TXQ%" +PRIu32 + ".%" PRIu32, + +130 +lk_id +, +i +); + +131 +pos + = + `APP_PARAM_FIND +( +p +-> +hwq_out_·¿ms +, +Çme +); + +132 + `APP_CHECK +(( +pos + >= 0), + +133 "% TXQ ¬nÙ cÚtiguous\n", +lk +-> +Çme +); + +136 + } +} + +139 + $check_rxqs +( +p_·¿ms + * +p +) + +141 +ut32_t + +i +; + +143 +i + = 0; i < +p +-> +n_pktq_hwq_ +; i++) { + +144 +p_pktq_hwq__·¿ms + * +p + = & +p +-> +hwq__·¿ms +[ +i +]; + +145 +ut32_t + +n_»ads + = + `p_rxq_g_»ads +( +p +, +p +); + +147 + `APP_CHECK +(( +p +-> +size + > 0), + +148 "% sizi 0\n", +p +-> +Çme +); + +150 + `APP_CHECK +(( + `¹e_is_pow_of_2 +( +p +-> +size +)), + +151 "% sizi nÙ ow oà2\n", +p +-> +Çme +); + +153 + `APP_CHECK +(( +p +-> +bur¡ + > 0), + +154 "% bur¡ sizi 0\n", +p +-> +Çme +); + +156 + `APP_CHECK +(( +p +-> +bur¡ + <ðp-> +size +), + +157 "% bur¡ sizi bigghª it size\n", +p +-> +Çme +); + +159 + `APP_CHECK +(( +n_»ads + != 0), + +160 "% ha nØ»ad\n", +p +-> +Çme +); + +162 + `APP_CHECK +(( +n_»ads + == 1), + +163 "% ha mÜthª oÃd\n", +p +-> +Çme +); + +165 + } +} + +168 + $check_txqs +( +p_·¿ms + * +p +) + +170 +ut32_t + +i +; + +172 +i + = 0; i < +p +-> +n_pktq_hwq_out +; i++) { + +173 +p_pktq_hwq_out_·¿ms + * +p + = & +p +-> +hwq_out_·¿ms +[ +i +]; + +174 +ut32_t + +n_wrs + = + `p_txq_g_wrs +( +p +, +p +); + +176 + `APP_CHECK +(( +p +-> +size + > 0), + +177 "% sizi 0\n", +p +-> +Çme +); + +179 + `APP_CHECK +(( + `¹e_is_pow_of_2 +( +p +-> +size +)), + +180 "% sizi nÙ ow oà2\n", +p +-> +Çme +); + +182 + `APP_CHECK +(( +p +-> +bur¡ + > 0), + +183 "% bur¡ sizi 0\n", +p +-> +Çme +); + +185 + `APP_CHECK +(( +p +-> +bur¡ + <ðp-> +size +), + +186 "% bur¡ sizi bigghª it size\n", +p +-> +Çme +); + +188 + `APP_CHECK +(( +n_wrs + != 0), + +189 "% ha nØwr\n", +p +-> +Çme +); + +191 + `APP_CHECK +(( +n_wrs + == 1), + +192 "% ha mÜthª oà wr\n", +p +-> +Çme +); + +194 + } +} + +197 + $check_swqs +( +p_·¿ms + * +p +) + +199 +ut32_t + +i +; + +201 +i + = 0; i < +p +-> +n_pktq_swq +; i++) { + +202 +p_pktq_swq_·¿ms + * +p + = & +p +-> +swq_·¿ms +[ +i +]; + +203 +ut32_t + +n_»ads + = + `p_swq_g_»ads +( +p +, +p +); + +204 +ut32_t + +n_wrs + = + `p_swq_g_wrs +( +p +, +p +); + +205 +ut32_t + +n_æags +; + +207 + `APP_CHECK +(( +p +-> +size + > 0), + +208 "% sizi 0\n", +p +-> +Çme +); + +210 + `APP_CHECK +(( + `¹e_is_pow_of_2 +( +p +-> +size +)), + +211 "% sizi nÙ ow oà2\n", +p +-> +Çme +); + +213 + `APP_CHECK +(( +p +-> +bur¡_»ad + > 0), + +214 "% »ad bur¡ sizi 0\n", +p +-> +Çme +); + +216 + `APP_CHECK +(( +p +-> +bur¡_»ad + <ðp-> +size +), + +218 +p +-> +Çme +); + +220 + `APP_CHECK +(( +p +-> +bur¡_wre + > 0), + +221 "% wrbur¡ sizi 0\n", +p +-> +Çme +); + +223 + `APP_CHECK +(( +p +-> +bur¡_wre + <ðp-> +size +), + +225 +p +-> +Çme +); + +227 + `APP_CHECK +(( +n_»ads + != 0), + +228 "% ha nØ»ad\n", +p +-> +Çme +); + +230 ià( +n_»ads + > 1) + +231 + `APP_LOG +( +p +, +LOW +, "% ha mÜthª oÃd", +p +-> +Çme +); + +233 + `APP_CHECK +(( +n_wrs + != 0), + +234 "% ha nØwr\n", +p +-> +Çme +); + +236 ià( +n_wrs + > 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_»ads + > 1è&& ( +n_æags + == 1))), + +248 +p +-> +Çme +); + +250 + `APP_CHECK +((!(( +n_wrs + > 1è&& ( +n_æags + == 1))), + +253 +p +-> +Çme +); + +255 +n_æags + = +p +-> +v4_¿s + + -> +v6_¿s +; + +257 + `APP_CHECK +((!(( +p +-> +drÝËss + =ð1è&& ( +n_æags + == 1))), + +258 "% ha drÝËs whs£mbly modabËd\n", +p +-> +Çme +); + +260 +n_æags + = +p +-> +v4_äag + + -> +v6_äag +; + +262 ià( +n_æags + == 1) { + +263 +ut16_t + +_hdr_size + = ( +p +-> +v4_äag +è? ( +v4_hdr +) : + +264 ( +v6_hdr +); + +266 + `APP_CHECK +(( +p +-> +mtu + > +_hdr_size +), + +267 "% mtu sizi sm®Ë¸thª i°hd\n", +p +-> +Çme +); + +269 + `APP_CHECK +((!(( +p +-> +mtu + - +_hdr_size +) % 8)), + +270 "% mtu sizi cÜ»ù\n", +p +-> +Çme +); + +273 + } +} + +276 + $check_tms +( +p_·¿ms + * +p +) + +278 +ut32_t + +i +; + +280 +i + = 0; i < +p +-> +n_pktq_tm +; i++) { + +281 +p_pktq_tm_·¿ms + * +p + = & +p +-> +tm_·¿ms +[ +i +]; + +282 +ut32_t + +n_»ads + = + `p_tm_g_»ads +( +p +, +p +); + +283 +ut32_t + +n_wrs + = + `p_tm_g_wrs +( +p +, +p +); + +285 + `APP_CHECK +(( +n_»ads + != 0), + +286 "% ha nØ»ad\n", +p +-> +Çme +); + +288 + `APP_CHECK +(( +n_»ads + == 1), + +289 "% ha mÜthª oÃd\n", +p +-> +Çme +); + +291 + `APP_CHECK +(( +n_wrs + != 0), + +292 "% ha nØwr\n", +p +-> +Çme +); + +294 + `APP_CHECK +(( +n_wrs + == 1), + +295 "% ha mÜthª oà wr\n", +p +-> +Çme +); + +297 + } +} + +300 + $check_sourûs +( +p_·¿ms + * +p +) + +302 +ut32_t + +i +; + +304 +i + = 0; i < +p +-> +n_pktq_sourû +; i++) { + +305 +p_pktq_sourû_·¿ms + * +p + = & +p +-> +sourû_·¿ms +[ +i +]; + +306 +ut32_t + +n_»ads + = + `p_sourû_g_»ads +( +p +, +p +); + +308 + `APP_CHECK +(( +n_»ads + != 0), + +309 "% ha nØ»ad\n", +p +-> +Çme +); + +311 + `APP_CHECK +(( +n_»ads + == 1), + +312 "% ha mÜthª oÃd\n", +p +-> +Çme +); + +314 + } +} + +317 + $check_sks +( +p_·¿ms + * +p +) + +319 +ut32_t + +i +; + +321 +i + = 0; i < +p +-> +n_pktq_sk +; i++) { + +322 +p_pktq_sk_·¿ms + * +p + = & +p +-> +sk_·¿ms +[ +i +]; + +323 +ut32_t + +n_wrs + = + `p_sk_g_wrs +( +p +, +p +); + +325 + `APP_CHECK +(( +n_wrs + != 0), + +326 "% ha nØwr\n", +p +-> +Çme +); + +328 + `APP_CHECK +(( +n_wrs + == 1), + +329 "% ha mÜthª oà wr\n", +p +-> +Çme +); + +331 + } +} + +334 + $check_msgqs +( +p_·¿ms + * +p +) + +336 +ut32_t + +i +; + +338 +i + = 0; i < +p +-> +n_msgq +; i++) { + +339 +p_msgq_·¿ms + * +p + = & +p +-> +msgq_·¿ms +[ +i +]; + +340 +ut32_t + +n_»ads + = + `p_msgq_g_»ads +( +p +, +p +); + +341 +ut32_t + +n_wrs + = + `p_msgq_g_wrs +( +p +, +p +); + +342 +ut32_t + +msgq_»q_pe +, +msgq_r¥_pe +; + +343 +ut32_t + +msgq_»q_cÜe +, +msgq_r¥_cÜe +; + +345 + `APP_CHECK +(( +p +-> +size + > 0), + +346 "% sizi 0\n", +p +-> +Çme +); + +348 + `APP_CHECK +(( + `¹e_is_pow_of_2 +( +p +-> +size +)), + +349 "% sizi nÙ ow oà2\n", +p +-> +Çme +); + +351 +msgq_»q_pe + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-REQ-PIPELINE", + +352 + `¡¾ +("MSGQ-REQ-PIPELINE")) == 0); + +354 +msgq_r¥_pe + = ( + `¡ºcmp +( +p +-> +Çme +, "MSGQ-RSP-PIPELINE", + +355 + `¡¾ +("MSGQ-RSP-PIPELINE")) == 0); + +357 +msgq_»q_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_pe + == 0) && + +364 ( +msgq_r¥_pe + == 0) && + +365 ( +msgq_»q_cÜe + == 0) && + +366 ( +msgq_r¥_cÜe + == 0)) { + +367 + `APP_CHECK +(( +n_»ads + != 0), + +368 "% ha nØ»ad\n", +p +-> +Çme +); + +370 + `APP_CHECK +(( +n_»ads + == 1), + +371 "% ha mÜthª oÃd\n", +p +-> +Çme +); + +373 + `APP_CHECK +(( +n_wrs + != 0), + +374 "% ha nØwr\n", +p +-> +Çme +); + +376 + `APP_CHECK +(( +n_wrs + == 1), + +377 "% ha mÜthª oà wr\n", +p +-> +Çme +); + +380 ià( +msgq_»q_pe +) { + +381 +p_pe_·¿ms + * +pe +; + +382 +ut32_t + +pe_id +; + +384 + `APP_PARAM_GET_ID +( +p +, "MSGQ-REQ-PIPELINE", +pe_id +); + +386 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, + +388 +pe_id +, + +389 +pe +); + +391 + `APP_CHECK +(( +pe + !ð +NULL +), + +393 +p +-> +Çme +); + +396 ià( +msgq_r¥_pe +) { + +397 +p_pe_·¿ms + * +pe +; + +398 +ut32_t + +pe_id +; + +400 + `APP_PARAM_GET_ID +( +p +, "MSGQ-RSP-PIPELINE", +pe_id +); + +402 + `APP_PARAM_FIND_BY_ID +( +p +-> +pe_·¿ms +, + +404 +pe_id +, + +405 +pe +); + +407 + `APP_CHECK +(( +pe + !ð +NULL +), + +409 +p +-> +Çme +); + +412 + } +} + +415 + $check_pes +( +p_·¿ms + * +p +) + +417 +ut32_t + +i +; + +419 +i + = 0; i < +p +-> +n_pes +; i++) { + +420 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +422 + `APP_CHECK +(( +p +-> +n_msgq_ + =ðp-> +n_msgq_out +), + +424 "thnumb oàouuMSGQs\n", +p +-> +Çme +); + +426 + } +} + +429 + $p_cÚfig_check +( +p_·¿ms + * +p +) + +431 + `check_mempoÞs +( +p +); + +432 + `check_lks +( +p +); + +433 + `check_rxqs +( +p +); + +434 + `check_txqs +( +p +); + +435 + `check_swqs +( +p +); + +436 + `check_tms +( +p +); + +437 + `check_sourûs +( +p +); + +438 + `check_sks +( +p +); + +439 + `check_msgqs +( +p +); + +440 + `check_pes +( +p +); + +443 + } +} + + @vnf_common/config_parse.c + +16 + ~<¡dt.h +> + +17 + ~<¡dlib.h +> + +18 + ~<¡dio.h +> + +19 + ~<ùy³.h +> + +20 + ~<gÝt.h +> + +21 + ~<ºo.h +> + +22 + ~<¡d¬g.h +> + +23 + ~<¡rg.h +> + +24 + ~<libg.h +> + +25 + ~<uni¡d.h +> + +26 + ~<sys/wa.h +> + +28 + ~<¹e_ºo.h +> + +29 + ~<¹e_cfgfe.h +> + +30 + ~<¹e_¡rg_âs.h +> + +32 + ~"p.h +" + +33 + ~"·r£r.h +" + +39 +p_·¿ms + + gp_·¿ms_deçuÉ + = { + +40 . +cÚfig_fe + = "./config/ip_pipeline.cfg", + +41 . + glog_Ëv + = +APP_LOG_LEVEL_HIGH +, + +42 . + gpÜt_mask + = 0, + +44 . + gl_·¿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_lk_·¿ms + + glk_·¿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 . + gv6 + = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + +69 . + gdth + = 0, + +70 . + gdth_v6 + = 0, + +71 . + gmac_addr + = 0, + +72 . + gpci_bdf + = {0}, + +74 . + gcÚf + = { + +75 . +lk_¥ds + = 0, + +76 . + grxmode + = { + +77 . +mq_mode + = +ETH_MQ_RX_NONE +, + +79 . + ghd_¥l + = 0, + +80 . + ghw__checksum + = 0, + +81 . + ghw_vÏn_fr + = 0, + +82 . + ghw_vÏn_¡r + = 0, + +83 . + ghw_vÏn_exnd + = 0, + +84 . + gjumbo_äame + = 0, + +85 . + ghw_¡r_üc + = 0, + +86 . + gabË_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¡_wre + = 32, + +151 . + gdrÝËss + = 0, + +152 . + gn_»s + = 0, + +153 . + gýu_sock_id + = 0, + +154 . + gv4_äag + = 0, + +155 . + gv6_äag + = 0, + +156 . + gv4_¿s + = 0, + +157 . + gv6_¿s + = 0, + +158 . + gmtu + = 0, + +159 . + gmad©a_size + = 0, + +160 . + gmempoÞ_deù_id + = 0, + +161 . + gmempoÞ_deù_id + = 0, + +164 +p_pktq_tm_·¿ms + + gdeçuÉ_tm_·¿ms + = { + +165 . +·r£d + = 0, + +166 . + gfe_Çme + = "./config/tm_profile.cfg", + +167 . + gbur¡_»ad + = 64, + +168 . + gbur¡_wre + = 32, + +171 +p_pktq_sourû_·¿ms + + gdeçuÉ_sourû_·¿ms + = { + +172 . +·r£d + = 0, + +173 . + gmempoÞ_id + = 0, + +174 . + gbur¡ + = 32, + +175 . + gfe_Çme + = +NULL +, + +176 . + gn_bys_³r_pkt + = 0, + +179 +p_pktq_sk_·¿ms + + gdeçuÉ_sk_·¿ms + = { + +180 . +·r£d + = 0, + +181 . + gfe_Ç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_pe_·¿ms + + gdeçuÉ_pe_·¿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Ú¡ + gp_u§ge +[] = + +220 + $p_´t_u§ge +(* +´gÇme +) + +222 + `¹e_ex +(0, +p_u§ge +, +´gÇme +, +p_·¿ms_deçuÉ +. +cÚfig_fe +); + +223 + } +} + +225 + #sk_whe_¥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_whe_¥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_whe_¥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 +, "Parserror 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 + `årtf +( +¡dr +, "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 +, "Parserror in section \"%s\": unrecognizedntry \"%s\"\n",\ + +308 +£ùiÚ +, +y +) + + ) + +310 + #PARSE_ERROR_DUPLICATE +( +exp +, +£ùiÚ +, +y +) \ + +311 + `APP_CHECK +( +exp +, "Parserror in section \"%s\": duplicatentry \"%s\"\n",\ + +312 +£ùiÚ +, +y +) + + ) + +315 + $·r£r_»ad_ut64 +( +ut64_t + * +v®ue +, cÚ¡ * +p +) + +317 * +Ãxt +; + +318 +ut64_t + +v® +; + +320 +p + = + `sk_whe_¥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_whe_¥aûs +(p); + +347 ià(* +p + != '\0') + +348 - +EINVAL +; + +350 * +v®ue + = +v® +; + +352 + } +} + +355 + $·r£r_»ad_ut32 +( +ut32_t + * +v®ue +, cÚ¡ * +p +) + +357 +ut64_t + +v® + = 0; + +358 +»t + = + `·r£r_»ad_ut64 +(& +v® +, +p +); + +360 ià( +»t + < 0) + +361 +»t +; + +363 ià( +v® + > +UINT32_MAX +) + +364 - +ERANGE +; + +366 * +v®ue + = +v® +; + +368 + } +} + +371 + $·r£_pe_cÜe +( +ut32_t + * +sock +, + +372 +ut32_t + * +cÜe +, + +373 +ut32_t + * +ht +, + +374 cÚ¡ * +y +) + +376 +size_t + +num_Ën +; + +377 +num +[8]; + +379 +ut32_t + +s + = 0, +c + = 0, +h + = 0, +v® +; + +380 +ut8_t + +s_·r£d + = 0, +c_·r£d + = 0, +h_·r£d + = 0; + +381 cÚ¡ * +Ãxt + = + `sk_whe_¥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 +ut32_t + + +464 + $g_hex_v® +( +c +) + +466 +c +) { + +469 +c + - '0'; + +471 +c + - 'A' + 10; + +473 +c + - 'a' + 10; + +477 + } +} + +480 + $·r£_hex_¡rg +(* +¤c +, +ut8_t + * +d¡ +, +ut32_t + * +size +) + +482 * +c +; + +483 +ut32_t + +Ën +, +i +; + +486 ià(( +¤c + =ð +NULL +) || + +487 ( +d¡ + =ð +NULL +) || + +488 ( +size + =ð +NULL +) || + +489 (* +size + == 0)) + +492 +Ën + = + `¡¾ +( +¤c +); + +493 ià((( +Ën + & 3) != 0) || + +494 ( +Ën + > (* +size +) * 2)) + +496 * +size + = +Ën + / 2; + +498 +c + = +¤c +; *c != 0; c++) { + +499 ià((((* +c +) >= '0') && ((*c) <= '9')) || + +500 (((* +c +) >= 'A') && ((*c) <= 'F')) || + +501 (((* +c +) >= 'a') && ((*c) <= 'f'))) + +508 +i + = 0; i < * +size +; i++) + +509 +d¡ +[ +i +] = + `g_hex_v® +( +¤c +[2 * i]) * 16 + + +510 + `g_hex_v® +( +¤c +[2 * +i + + 1]); + +513 + } +} + +515 +size_t + + +516 + $sk_digs +(cÚ¡ * +¤c +) + +518 +size_t + +i +; + +520 +i + = 0; + `isdig +( +¤c +[i]); i++); + +522 +i +; + +523 + } +} + +526 + $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_digs +(& +Çme +[ +i +]); + +547 +i + +ð +j +; + +548 ià(( +j + =ð0è|| ( +Çme +[ +i +] != '.')) + +550 +i +++; + +553 ià( +num + == 1) { + +554 +j + = + `sk_digs +(& +Çme +[ +i +]); + +555 +i + +ð +j +; + +556 ià(( +j + =ð0è|| ( +Çme +[ +i +] != '\0')) + +561 + } +} + +564 + $·r£_l +( +p_·¿ms + * +p +, + +565 cÚ¡ * +£ùiÚ_Çme +, + +566 +¹e_cfgfe + * +cfg +) + +568 +p_l_·¿ms + * +p + = & +p +-> +l_·¿ms +; + +569 +¹e_cfgfe_y + * +s +; + +570 +n_s +, +i +; + +572 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +573 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +575 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +576 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +578 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +580 +i + = 0; i < +n_s +; i++) { + +581 +¹e_cfgfe_y + * +y + = & +s +[ +i +]; + +584 ià( + `¡rcmp +( +y +-> +Çme +, "c") == 0) { + +585 + `PARSE_WARNING_IGNORED +(0, +£ùiÚ_Çme +, +y +-> +Çme +); + +590 ià( + `¡rcmp +( +y +-> +Çme +, "l") == 0) { + +591 + `PARSE_WARNING_IGNORED +(0, +£ùiÚ_Çme +, +y +-> +Çme +); + +596 ià( + `¡rcmp +( +y +-> +Çme +, "lcores") == 0) { + +597 + `PARSE_ERROR_DUPLICATE +(( +p +-> +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_ut32 +(& +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_ut32 +(& +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_ut32 +(& +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_ut32 +(& +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 +ut32_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 +ut32_t + +i +; + +688 + `PARSE_ERROR_MESSAGE +(( +p +-> +pÜt_mask + != 0), + +689 +£ùiÚ_Çme +, +y +-> +Çme +, "entryo be " + +693 +i + = 0; i < +APP_MAX_LINKS +; i++) { + +694 ià( +p +-> +pci_whi¡ +[ +i +]) + +697 +p +-> +pci_whi¡ +[ +i +] = + `¡rdup +( +y +-> +v®ue +); + +698 + `PARSE_ERROR_MALLOC +( +p +-> +pci_whi¡ +[ +i +]); + +703 + `PARSE_ERROR_MESSAGE +(( +i + < +APP_MAX_LINKS +), + +704 +£ùiÚ_Çme +, +y +-> +Çme +, + +710 ià( + `¡rcmp +( +y +-> +Çme +, "vdev") == 0) { + +711 +ut32_t + +i +; + +713 +i + = 0; i < +APP_MAX_LINKS +; i++) { + +714 ià( +p +-> +vdev +[ +i +]) + +717 +p +-> +vdev +[ +i +] = + `¡rdup +( +y +-> +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_ut32 +(& +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 +-> +vsiÚ_´e£Á + == 0), + +782 +£ùiÚ_Çme +, + +783 +y +-> +Çme +); + +784 +p +-> +vsiÚ_´e£Á + = 1; + +786 +v® + = + `·r£r_»ad_¬g_boÞ +( +y +-> +v®ue +); + +787 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +y +-> +Çme +); + +788 +p +-> +vsiÚ + = +v® +; + +793 ià(( + `¡rcmp +( +y +-> +Çme +, "help") == 0) || + +794 ( + `¡rcmp +( +y +-> +Çme +, "h") == 0)) { + +795 +v® +; + +797 + `PARSE_ERROR_DUPLICATE +(( +p +-> +hp_´e£Á + == 0), + +798 +£ùiÚ_Çme +, + +799 +y +-> +Çme +); + +800 +p +-> +hp_´e£Á + = 1; + +802 +v® + = + `·r£r_»ad_¬g_boÞ +( +y +-> +v®ue +); + +803 + `PARSE_ERROR +(( +v® + >ð0), +£ùiÚ_Çme +, +y +-> +Çme +); + +804 +p +-> +hp + = +v® +; + +809 ià( + `¡rcmp +( +y +-> +Çme +, "no_huge") == 0) { + +810 +v® +; + +812 + `PARSE_ERROR_DUPLICATE +(( +p +-> +no_huge_´e£Á + == 0), + +813 +£ùiÚ_Çme +, + +814 +y +-> +Çme +); + +815 +p +-> +no_huge_´e£Á + = 1; + +817 +v® + = + `·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 +-> +fe_´efix + =ð +NULL +), + +898 +£ùiÚ_Çme +, + +899 +y +-> +Çme +); + +900 +p +-> +fe_´efix + = + `¡rdup +( +y +-> +v®ue +); + +905 ià( + `¡rcmp +( +y +-> +Çme +, "base_virtaddr") == 0) { + +906 + `PARSE_ERROR_DUPLICATE +(( +p +-> +ba£_vddr + =ð +NULL +), + +907 +£ùiÚ_Çme +, + +908 +y +-> +Çme +); + +909 +p +-> +ba£_vddr + = + `¡rdup +( +y +-> +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£_pe_pÿp_sourû +( +p_·¿ms + * +p +, + +961 +p_pe_·¿ms + * +p +, + +962 cÚ¡ * +fe_Çme +, cÚ¡ * +ý_size +) + +964 cÚ¡ * +Ãxt + = +NULL +; + +965 * +d +; + +966 +ut32_t + +i +; + +967 +·r£_fe + = 0; + +969 ià( +fe_Çme + && ! +ý_size +) { + +970 +Ãxt + = +fe_Çme +; + +971 +·r£_fe + = 1; + +972 } ià( +ý_size + && ! +fe_Çme +) { + +973 +Ãxt + = +ý_size +; + +974 +·r£_fe + = 0; + +976 - +EINVAL +; + +978 +Çme +[ +APP_PARAM_NAME_SIZE +]; + +979 +size_t + +Çme_Ën +; + +981 ià( +p +-> +n_pktq_ + == 0) + +982 - +EINVAL +; + +984 +i + = 0; + +985 * +Ãxt + != '\0') { + +986 +ut32_t + +id +; + +988 ià( +i + >ð +p +-> +n_pktq_ +) + +989 - +EINVAL +; + +991 +id + = +p +-> +pktq_ +[ +i +].id; + +993 +d + = + `¡rchr +( +Ãxt +, ' '); + +994 ià(! +d +) + +995 +Çme_Ën + = + `¡¾ +( +Ãxt +); + +997 +Çme_Ën + = +d + - +Ãxt +; + +999 ià( +Çme_Ën + =ð0 ||ame_ËÀ=ð( +Çme +)) + +1000 - +EINVAL +; + +1002 + `¡ºýy +( +Çme +, +Ãxt +, +Çme_Ën +); + +1003 +Çme +[ +Çme_Ën +] = '\0'; + +1004 +Ãxt + +ð +Çme_Ën +; + +1005 ià(* +Ãxt + != '\0') + +1006 +Ãxt +++; + +1008 ià( +·r£_fe +) { + +1009 +p +-> +sourû_·¿ms +[ +id +]. +fe_Çme + = + `¡rdup +( +Çme +); + +1010 ià( +p +-> +sourû_·¿ms +[ +id +]. +fe_Çme + =ð +NULL +) + +1011 - +ENOMEM +; + +1013 ià( + `·r£r_»ad_ut32 +( + +1014 & +p +-> +sourû_·¿ms +[ +id +]. +n_bys_³r_pkt +, + +1015 +Çme +) != 0) { + +1016 ià( +p +-> +sourû_·¿ms +[ +id +]. + +1017 +fe_Çme + !ð +NULL +) + +1018 + `ä +( +p +-> +sourû_·¿ms +[ +id +]. + +1019 +fe_Çme +); + +1020 - +EINVAL +; + +1024 +i +++; + +1026 ià( +i + =ð +p +-> +n_pktq_ +) + +1030 - +EINVAL +; + +1031 + } +} + +1034 + $·r£_pe_pÿp_sk +( +p_·¿ms + * +p +, + +1035 +p_pe_·¿ms + * +p +, + +1036 cÚ¡ * +fe_Çme +, cÚ¡ * +n_pkts_to_dump +) + +1038 cÚ¡ * +Ãxt + = +NULL +; + +1039 * +d +; + +1040 +ut32_t + +i +; + +1041 +·r£_fe + = 0; + +1043 ià( +fe_Çme + && ! +n_pkts_to_dump +) { + +1044 +Ãxt + = +fe_Çme +; + +1045 +·r£_fe + = 1; + +1046 } ià( +n_pkts_to_dump + && ! +fe_Çme +) { + +1047 +Ãxt + = +n_pkts_to_dump +; + +1048 +·r£_fe + = 0; + +1050 - +EINVAL +; + +1052 +Çme +[ +APP_PARAM_NAME_SIZE +]; + +1053 +size_t + +Çme_Ën +; + +1055 ià( +p +-> +n_pktq_out + == 0) + +1056 - +EINVAL +; + +1058 +i + = 0; + +1059 * +Ãxt + != '\0') { + +1060 +ut32_t + +id +; + +1062 ià( +i + >ð +p +-> +n_pktq_out +) + +1063 - +EINVAL +; + +1065 +id + = +p +-> +pktq_out +[ +i +].id; + +1067 +d + = + `¡rchr +( +Ãxt +, ' '); + +1068 ià(! +d +) + +1069 +Çme_Ën + = + `¡¾ +( +Ãxt +); + +1071 +Çme_Ën + = +d + - +Ãxt +; + +1073 ià( +Çme_Ën + =ð0 ||ame_ËÀ=ð( +Çme +)) + +1074 - +EINVAL +; + +1076 + `¡ºýy +( +Çme +, +Ãxt +, +Çme_Ën +); + +1077 +Çme +[ +Çme_Ën +] = '\0'; + +1078 +Ãxt + +ð +Çme_Ën +; + +1079 ià(* +Ãxt + != '\0') + +1080 +Ãxt +++; + +1082 ià( +·r£_fe +) { + +1083 +p +-> +sk_·¿ms +[ +id +]. +fe_Çme + = + `¡rdup +( +Çme +); + +1084 ià( +p +-> +sk_·¿ms +[ +id +]. +fe_Çme + =ð +NULL +) + +1085 - +ENOMEM +; + +1087 ià( + `·r£r_»ad_ut32 +( + +1088 & +p +-> +sk_·¿ms +[ +id +]. +n_pkts_to_dump +, + +1089 +Çme +) != 0) { + +1090 ià( +p +-> +sk_·¿ms +[ +id +]. +fe_Çme + != + +1091 +NULL +) + +1092 + `ä +( +p +-> +sk_·¿ms +[ +id +]. + +1093 +fe_Çme +); + +1094 - +EINVAL +; + +1098 +i +++; + +1100 ià( +i + =ð +p +-> +n_pktq_out +) + +1104 - +EINVAL +; + +1105 + } +} + +1108 + $·r£_pe_pktq_ +( +p_·¿ms + * +p +, + +1109 +p_pe_·¿ms + * +p +, + +1110 cÚ¡ * +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_whe_¥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 + = ( +ut32_t +) id; + +1175 +p +-> +n_pktq_ +++; + +1179 + } +} + +1182 + $·r£_pe_pktq_out +( +p_·¿ms + * +p +, + +1183 +p_pe_·¿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_whe_¥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 +-> +sk_·¿ms +, +Çme +); + +1241 - +EINVAL +; + +1243 ià( +id + < 0) + +1244 +id +; + +1246 +p +-> +pktq_out +[p-> +n_pktq_out +]. +ty³ + =ype; + +1247 +p +-> +pktq_out +[p-> +n_pktq_out +]. +id + = id; + +1248 +p +-> +n_pktq_out +++; + +1252 + } +} + +1255 + $·r£_pe_msgq_ +( +p_·¿ms + * +p +, + +1256 +p_pe_·¿ms + * +p +, + +1257 cÚ¡ * +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_whe_¥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£_pe_msgq_out +( +p_·¿ms + * +p +, + +1317 +p_pe_·¿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_whe_¥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£_pe +( +p_·¿ms + * +p +, + +1378 cÚ¡ * +£ùiÚ_Çme +, + +1379 +¹e_cfgfe + * +cfg +) + +1381 +Çme +[ +CFG_NAME_LEN +]; + +1382 +p_pe_·¿ms + * +·¿m +; + +1383 +¹e_cfgfe_y + * +s +; + +1384 +ssize_t + +·¿m_idx +; + +1385 +n_s +, +i +; + +1387 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1388 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1390 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1391 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1393 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1395 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +pe_·¿ms +, +£ùiÚ_Çme +); + +1396 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +pe_·¿ms +, +£ùiÚ_Çme +); + +1398 +·¿m + = & +p +-> +pe_·¿ms +[ +·¿m_idx +]; + +1400 +i + = 0; i < +n_s +; i++) { + +1401 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1403 ià( + `¡rcmp +( +t +-> +Çme +, "type") == 0) { + +1404 +w_size + = + `¢´tf +( +·¿m +-> +ty³ +, + `RTE_DIM +(param->type), + +1405 "%s", +t +-> +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£_pe_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£_pe_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£_pe_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£_pe_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£_pe_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_ut32 +( + +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£_pe_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£_pe_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£_pe_pÿp_sk +( +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£_pe_pÿp_sk +( +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¥ecifd ¬ams", +£ù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_cfgfe + * +cfg +) + +1583 +p_mempoÞ_·¿ms + * +·¿m +; + +1584 +¹e_cfgfe_y + * +s +; + +1585 +ssize_t + +·¿m_idx +; + +1586 +n_s +, +i +; + +1588 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1589 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1591 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1592 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1594 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1596 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +mempoÞ_·¿ms +, +£ùiÚ_Çme +); + +1597 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +mempoÞ_·¿ms +, +£ùiÚ_Çme +); + +1599 +·¿m + = & +p +-> +mempoÞ_·¿ms +[ +·¿m_idx +]; + +1601 +i + = 0; i < +n_s +; i++) { + +1602 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1604 ià( + `¡rcmp +( +t +-> +Çme +, "buffer_size") == 0) { + +1605 +¡©us + = + `·r£r_»ad_ut32 +( + +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_ut32 +( + +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_ut32 +( + +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_ut32 +( + +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£_lk +( +p_·¿ms + * +p +, + +1651 cÚ¡ * +£ùiÚ_Çme +, + +1652 +¹e_cfgfe + * +cfg +) + +1654 +p_lk_·¿ms + * +·¿m +; + +1655 +¹e_cfgfe_y + * +s +; + +1656 +n_s +, +i +; + +1657 +pci_bdf_´e£Á + = 0; + +1658 +ssize_t + +·¿m_idx +; + +1660 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1661 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1663 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1664 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1666 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1668 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +lk_·¿ms +, +£ùiÚ_Çme +); + +1669 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +lk_·¿ms +, +£ùiÚ_Çme +); + +1671 +·¿m + = & +p +-> +lk_·¿ms +[ +·¿m_idx +]; + +1673 +i + = 0; i < +n_s +; i++) { + +1674 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1676 ià( + `¡rcmp +( +t +-> +Çme +, "promisc") == 0) { + +1677 +¡©us + = + `·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_ut32 +(& +·¿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_ut32 +( + +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_ut32 +( + +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_ut32 +( + +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_ut32 +( + +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_ut32 +( + +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_cfgfe + * +cfg +) + +1774 +p_pktq_hwq__·¿ms + * +·¿m +; + +1775 +¹e_cfgfe_y + * +s +; + +1776 +n_s +, +i +; + +1777 +ssize_t + +·¿m_idx +; + +1779 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1780 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1782 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1783 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1785 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1787 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +hwq__·¿ms +, +£ùiÚ_Çme +); + +1788 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +hwq__·¿ms +, +£ùiÚ_Çme +); + +1790 +·¿m + = & +p +-> +hwq__·¿ms +[ +·¿m_idx +]; + +1792 +i + = 0; i < +n_s +; i++) { + +1793 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1795 ià( + `¡rcmp +( +t +-> +Çme +, "mempool") == 0) { + +1796 +¡©us + = + `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_ut32 +(& +·¿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_ut32 +(& +·¿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_cfgfe + * +cfg +) + +1842 +p_pktq_hwq_out_·¿ms + * +·¿m +; + +1843 +¹e_cfgfe_y + * +s +; + +1844 +n_s +, +i +; + +1845 +ssize_t + +·¿m_idx +; + +1847 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1848 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1850 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1851 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1853 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1855 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +hwq_out_·¿ms +, +£ùiÚ_Çme +); + +1856 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +hwq_out_·¿ms +, +£ùiÚ_Çme +); + +1858 +·¿m + = & +p +-> +hwq_out_·¿ms +[ +·¿m_idx +]; + +1860 +i + = 0; i < +n_s +; i++) { + +1861 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1863 ià( + `¡rcmp +( +t +-> +Çme +, "size") == 0) { + +1864 +¡©us + = + `·r£r_»ad_ut32 +(& +·¿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_ut32 +(& +·¿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_cfgfe + * +cfg +) + +1905 +p_pktq_swq_·¿ms + * +·¿m +; + +1906 +¹e_cfgfe_y + * +s +; + +1907 +n_s +, +i +; + +1908 +ut32_t + +mtu_´e£Á + = 0; + +1909 +ut32_t + +mad©a_size_´e£Á + = 0; + +1910 +ut32_t + +mempoÞ_deù_´e£Á + = 0; + +1911 +ut32_t + +mempoÞ_deù_´e£Á + = 0; + +1913 +ssize_t + +·¿m_idx +; + +1915 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +1916 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +1918 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +1919 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +1921 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +1923 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +swq_·¿ms +, +£ùiÚ_Çme +); + +1924 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +swq_·¿ms +, +£ùiÚ_Çme +); + +1926 +·¿m + = & +p +-> +swq_·¿ms +[ +·¿m_idx +]; + +1928 +i + = 0; i < +n_s +; i++) { + +1929 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +1931 ià( + `¡rcmp +( +t +-> +Çme +, "size") == 0) { + +1932 +¡©us + = + `·r£r_»ad_ut32 +(& +·¿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_ut32 +(& + +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_ut32 +( + +1951 & +·¿m +-> +bur¡_wre +, +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_ut64 +(& +·¿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_ut32 +( + +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_ut32 +(& +·¿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_ut32 +( + +2038 & +·¿m +-> +mad©a_size +, +t +-> +v®ue +); + +2040 + `PARSE_ERROR +(( +¡©us + =ð0), +£ùiÚ_Çme +, + +2041 +t +-> +Çme +); + +2042 +mad©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Þ_deù_id + = +idx +; + +2059 +mempoÞ_deù_´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Þ_deù_id + = +idx +; + +2075 +mempoÞ_deù_´e£Á + = 1; + +2080 + `PARSE_ERROR_INVALID +(0, +£ùiÚ_Çme +, +t +-> +Çme +); + +2083 + `APP_CHECK +((( +mtu_´e£Á +) && + +2084 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2087 +£ùiÚ_Çme +); + +2089 + `APP_CHECK +((( +mad©a_size_´e£Á +) && + +2090 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2093 "nÙÎowed", +£ùiÚ_Çme +); + +2095 + `APP_CHECK +((( +mempoÞ_deù_´e£Á +) && + +2096 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2099 "nÙÎowed", +£ùiÚ_Çme +); + +2101 + `APP_CHECK +((( +mempoÞ_deù_´e£Á +) && + +2102 (( +·¿m +-> +v4_äag + =ð1è|| (·¿m-> +v6_äag + == 1))), + +2105 "nÙÎowed", +£ùiÚ_Çme +); + +2107 +·¿m +-> +·r£d + = 1; + +2109 + `ä +( +s +); + +2110 + } +} + +2113 + $·r£_tm +( +p_·¿ms + * +p +, + +2114 cÚ¡ * +£ùiÚ_Çme +, + +2115 +¹e_cfgfe + * +cfg +) + +2117 +p_pktq_tm_·¿ms + * +·¿m +; + +2118 +¹e_cfgfe_y + * +s +; + +2119 +n_s +, +i +; + +2120 +ssize_t + +·¿m_idx +; + +2122 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2123 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2125 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2126 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2128 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2130 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +tm_·¿ms +, +£ùiÚ_Çme +); + +2131 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +tm_·¿ms +, +£ùiÚ_Çme +); + +2133 +·¿m + = & +p +-> +tm_·¿ms +[ +·¿m_idx +]; + +2135 +i + = 0; i < +n_s +; i++) { + +2136 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2138 ià( + `¡rcmp +( +t +-> +Çme +, "cfg") == 0) { + +2139 +·¿m +-> +fe_Çme + = + `¡rdup +( +t +-> +v®ue +); + +2140 + `PARSE_ERROR_MALLOC +( +·¿m +-> +fe_Çme + !ð +NULL +); + +2144 ià( + `¡rcmp +( +t +-> +Çme +, "burst_read") == 0) { + +2145 +¡©us + = + `·r£r_»ad_ut32 +( + +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_ut32 +( + +2155 & +·¿m +-> +bur¡_wre +, +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_cfgfe + * +cfg +) + +2176 +p_pktq_sourû_·¿ms + * +·¿m +; + +2177 +¹e_cfgfe_y + * +s +; + +2178 +n_s +, +i +; + +2179 +ssize_t + +·¿m_idx +; + +2180 +ut32_t + +pÿp_fe_´e£Á + = 0; + +2181 +ut32_t + +pÿp_size_´e£Á + = 0; + +2183 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2184 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2186 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2187 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2189 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2191 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +sourû_·¿ms +, +£ùiÚ_Çme +); + +2192 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +sourû_·¿ms +, +£ùiÚ_Çme +); + +2194 +·¿m + = & +p +-> +sourû_·¿ms +[ +·¿m_idx +]; + +2196 +i + = 0; i < +n_s +; i++) { + +2197 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2199 ià( + `¡rcmp +( +t +-> +Çme +, "mempool") == 0) { + +2200 +¡©us + = + `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_ut32 +(& +·¿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_fe_´e£Á + == 0), + +2225 +£ùiÚ_Çme +, +t +-> +Çme +); + +2227 +·¿m +-> +fe_Çme + = + `¡rdup +( +t +-> +v®ue +); + +2229 + `PARSE_ERROR_MALLOC +( +·¿m +-> +fe_Çme + !ð +NULL +); + +2230 +pÿp_fe_´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_ut32 +( + +2242 & +·¿m +-> +n_bys_³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£_sk +( +p_·¿ms + * +p +, + +2262 cÚ¡ * +£ùiÚ_Çme +, + +2263 +¹e_cfgfe + * +cfg +) + +2265 +p_pktq_sk_·¿ms + * +·¿m +; + +2266 +¹e_cfgfe_y + * +s +; + +2267 +n_s +, +i +; + +2268 +ssize_t + +·¿m_idx +; + +2269 +ut32_t + +pÿp_fe_´e£Á + = 0; + +2270 +ut32_t + +pÿp_n_pkt_´e£Á + = 0; + +2272 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2273 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2275 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2276 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2278 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2280 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +sk_·¿ms +, +£ùiÚ_Çme +); + +2281 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +sk_·¿ms +, +£ùiÚ_Çme +); + +2283 +·¿m + = & +p +-> +sk_·¿ms +[ +·¿m_idx +]; + +2285 +i + = 0; i < +n_s +; i++) { + +2286 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2288 ià( + `¡rcmp +( +t +-> +Çme +, "pcap_file_wr")) { + +2289 + `PARSE_ERROR_DUPLICATE +(( +pÿp_fe_´e£Á + == 0), + +2290 +£ùiÚ_Çme +, +t +-> +Çme +); + +2292 +·¿m +-> +fe_Çme + = + `¡rdup +( +t +-> +v®ue +); + +2294 + `PARSE_ERROR_MALLOC +(( +·¿m +-> +fe_Ç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_ut32 +( + +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_pe +( +p_·¿ms + * +p +, + +2325 cÚ¡ * +£ùiÚ_Çme +, + +2326 +¹e_cfgfe + * +cfg +) + +2328 +p_msgq_·¿ms + * +·¿m +; + +2329 +¹e_cfgfe_y + * +s +; + +2330 +n_s +, +i +; + +2331 +ssize_t + +·¿m_idx +; + +2333 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2334 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2336 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2337 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2339 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2341 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2342 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2344 +·¿m + = & +p +-> +msgq_·¿ms +[ +·¿m_idx +]; + +2346 +i + = 0; i < +n_s +; i++) { + +2347 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2349 ià( + `¡rcmp +( +t +-> +Çme +, "size") == 0) { + +2350 +¡©us + = + `·r£r_»ad_ut32 +(& +·¿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¥_pe +( +p_·¿ms + * +p +, + +2368 cÚ¡ * +£ùiÚ_Çme +, + +2369 +¹e_cfgfe + * +cfg +) + +2371 +p_msgq_·¿ms + * +·¿m +; + +2372 +¹e_cfgfe_y + * +s +; + +2373 +n_s +, +i +; + +2374 +ssize_t + +·¿m_idx +; + +2376 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2377 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2379 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2380 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2382 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2384 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2385 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2387 +·¿m + = & +p +-> +msgq_·¿ms +[ +·¿m_idx +]; + +2389 +i + = 0; i < +n_s +; i++) { + +2390 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2392 ià( + `¡rcmp +( +t +-> +Çme +, "size") == 0) { + +2393 +¡©us + = + `·r£r_»ad_ut32 +(& +·¿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_cfgfe + * +cfg +) + +2415 +p_msgq_·¿ms + * +·¿m +; + +2416 +¹e_cfgfe_y + * +s +; + +2417 +n_s +, +i +; + +2418 +ssize_t + +·¿m_idx +; + +2420 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +cfg +, +£ùiÚ_Çme +); + +2421 + `PARSE_ERROR_SECTION_NO_ENTRIES +(( +n_s + > 0), +£ùiÚ_Çme +); + +2423 +s + = + `m®loc +( +n_s + * ( +¹e_cfgfe_y +)); + +2424 + `PARSE_ERROR_MALLOC +( +s + !ð +NULL +); + +2426 + `¹e_cfgfe_£ùiÚ_s +( +cfg +, +£ùiÚ_Çme +, +s +, +n_s +); + +2428 +·¿m_idx + = + `APP_PARAM_ADD +( +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2429 + `PARSER_PARAM_ADD_CHECK +( +·¿m_idx +, +p +-> +msgq_·¿ms +, +£ùiÚ_Çme +); + +2431 +·¿m + = & +p +-> +msgq_·¿ms +[ +·¿m_idx +]; + +2433 +i + = 0; i < +n_s +; i++) { + +2434 +¹e_cfgfe_y + * +t + = & +s +[ +i +]; + +2436 ià( + `¡rcmp +( +t +-> +Çme +, "size") == 0) { + +2437 +¡©us + = + `·r£r_»ad_ut32 +(& +·¿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_ut32 +( + +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 +)( + tp_·¿ms + * + tp +, + +2464 cÚ¡ * + t£ùiÚ_Çme +, + +2465 + t¹e_cfgfe + * + tcfg +); + +2467 + scÚfig_£ùiÚ + { + +2468 cÚ¡ +´efix +[ +CFG_NAME_LEN +]; + +2469 +numbs +; + +2470 +cÚfig_£ùiÚ_lßd + +lßd +; + +2473 cÚ¡ +cÚfig_£ùiÚ + +cfg_fe_scheme +[] = { + +2474 {"EAL", 0, +·r£_l +}, + +2475 {"PIPELINE", 1, +·r£_pe +}, + +2476 {"MEMPOOL", 1, +·r£_mempoÞ +}, + +2477 {"LINK", 1, +·r£_lk +}, + +2478 {"RXQ", 2, +·r£_rxq +}, + +2479 {"TXQ", 2, +·r£_txq +}, + +2480 {"SWQ", 1, +·r£_swq +}, + +2481 {"TM", 1, +·r£_tm +}, + +2482 {"SOURCE", 1, +·r£_sourû +}, + +2483 {"SINK", 1, +·r£_sk +}, + +2484 {"MSGQ-REQ-PIPELINE", 1, +·r£_msgq_»q_pe +}, + +2485 {"MSGQ-RSP-PIPELINE", 1, +·r£_msgq_r¥_pe +}, + +2486 {"MSGQ", 1, +·r£_msgq +}, + +2487 + } +}; + +2490 + $ü_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_lks_äom_pÜt_mask +( +p_·¿ms + * +p +, + +2500 +ut64_t + +pÜt_mask +) + +2502 +ut32_t + +pmd_id +, +lk_id +; + +2504 +lk_id + = 0; + +2505 +pmd_id + = 0; md_id < +RTE_MAX_ETHPORTS +; md_id++) { + +2506 +Çme +[ +APP_PARAM_NAME_SIZE +]; + +2507 +ssize_t + +idx +; + +2509 ià(( +pÜt_mask + & (1LLU << +pmd_id +)) == 0) + +2512 + `¢´tf +( +Çme +, Òame), "LINK%" +PRIu32 +, +lk_id +); + +2513 +idx + = + `APP_PARAM_ADD +( +p +-> +lk_·¿ms +, +Çme +); + +2514 + `PARSER_PARAM_ADD_CHECK +( +idx +, +p +-> +lk_·¿ms +, +Çme +); + +2516 +p +-> +lk_·¿ms +[ +idx +]. +pmd_id + = md_id; + +2517 +lk_id +++; + +2519 + } +} + +2522 + $assign_lk_pmd_id_äom_pci_bdf +( +p_·¿ms + * +p +) + +2524 +ut32_t + +i +; + +2526 +i + = 0; i < +p +-> +n_lks +; i++) { + +2527 +p_lk_·¿ms + * +lk + = & +p +-> +lk_·¿ms +[ +i +]; + +2529 +lk +-> +pmd_id + = +i +; + +2531 + } +} + +2534 + $p_cÚfig_·r£ +( +p_·¿ms + * +p +, cÚ¡ * +fe_Çme +) + +2536 +¹e_cfgfe + * +cfg +; + +2537 ** +£ùiÚ_Çmes +; + +2538 +i +, +j +, +£ù_couÁ +; + +2541 + `ü_im¶ic_mempoÞs +( +p +); + +2544 ià( +p +-> +pÜt_mask +) + +2545 + `ü_im¶ic_lks_äom_pÜt_mask +( +p +,µ-> +pÜt_mask +); + +2548 +cfg + = + `¹e_cfgfe_lßd +( +fe_Çme +, 0); + +2549 + `APP_CHECK +(( +cfg + !ð +NULL +), "Parserror: Unableooad config " + +2550 "f%s", +fe_Çme +); + +2552 +£ù_couÁ + = + `¹e_cfgfe_num_£ùiÚs +( +cfg +, +NULL +, 0); + +2553 + `APP_CHECK +(( +£ù_couÁ + > 0), "Parserror:umber of sections " + +2554 " f\"%s\"uº %d", +fe_Ç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_cfgfe_£ù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_fe_scheme +); j++) { + +2573 +sch_s + = & +cfg_fe_scheme +[ +j +]; + +2574 +Ën + = + `¡¾ +( +sch_s +-> +´efix +); + +2576 ià( +cfg_Çme_Ën + < +Ën +) + +2585 ià(( +£ùiÚ_Çmes +[ +i +][ +Ën +] != '\0') && + +2586 ! + `isdig +( +£ùiÚ_Çmes +[ +i +][ +Ën +])) + +2589 ià( + `¡ºcmp +( +sch_s +-> +´efix +, +£ùiÚ_Çmes +[ +i +], +Ën +) == 0) + +2593 + `APP_CHECK +( +j + < () + `RTE_DIM +( +cfg_fe_scheme +), + +2595 +£ùiÚ_Çmes +[ +i +]); + +2597 + `APP_CHECK +( + `v®id©e_Çme +( +£ùiÚ_Çmes +[ +i +], + +2598 +sch_s +-> +´efix +, + +2599 +sch_s +-> +numbs +) == 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_cfgfe_þo£ +( +cfg +); + +2613 + `APP_PARAM_COUNT +( +p +-> +mempoÞ_·¿ms +,µ-> +n_mempoÞs +); + +2614 + `APP_PARAM_COUNT +( +p +-> +lk_·¿ms +,µ-> +n_lks +); + +2615 + `APP_PARAM_COUNT +( +p +-> +hwq__·¿ms +,µ-> +n_pktq_hwq_ +); + +2616 + `APP_PARAM_COUNT +( +p +-> +hwq_out_·¿ms +,µ-> +n_pktq_hwq_out +); + +2617 + `APP_PARAM_COUNT +( +p +-> +swq_·¿ms +,µ-> +n_pktq_swq +); + +2618 + `APP_PARAM_COUNT +( +p +-> +tm_·¿ms +,µ-> +n_pktq_tm +); + +2619 + `APP_PARAM_COUNT +( +p +-> +sourû_·¿ms +,µ-> +n_pktq_sourû +); + +2620 + `APP_PARAM_COUNT +( +p +-> +sk_·¿ms +,µ-> +n_pktq_sk +); + +2621 + `APP_PARAM_COUNT +( +p +-> +msgq_·¿ms +,µ-> +n_msgq +); + +2622 + `APP_PARAM_COUNT +( +p +-> +pe_·¿ms +,µ-> +n_pes +); + +2624 #ifdeà +RTE_PORT_PCAP + + +2625 +i + = 0; i < () +p +-> +n_pktq_sourû +; i++) { + +2626 +p_pktq_sourû_·¿ms + * +p + = & +p +-> +sourû_·¿ms +[ +i +]; + +2628 + `APP_CHECK +(( +p +-> +fe_Çme +), "Parserror: missing " + +2630 +p +-> +Çme +); + +2633 +i + = 0; i < () +p +-> +n_pktq_sourû +; i++) { + +2634 +p_pktq_sourû_·¿ms + * +p + = & +p +-> +sourû_·¿ms +[ +i +]; + +2636 + `APP_CHECK +((! +p +-> +fe_Çme +), "Parserror: invalid field " + +2637 "\"pÿp_fe_rd\" fÜ \"%s\"", +p +-> +Çme +); + +2641 ià( +p +-> +pÜt_mask + == 0) + +2642 + `assign_lk_pmd_id_äom_pci_bdf +( +p +); + +2645 + `p_cÚfig_§ve +( +p +,µ-> +ouut_fe +); + +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 +ut32_t + +i +; + +2659 + `årtf +( +f +, "[EAL]\n"); + +2661 ià( +p +-> +cÜem +) + +2662 + `årtf +( +f +, "% ð%s\n", "lcÜes", +p +-> +cÜem +); + +2664 ià( +p +-> +ma¡_lcÜe_´e£Á +) + +2665 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", + +2666 "ma¡_lcÜe", +p +-> +ma¡_lcÜe +); + +2668 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "n", +p +-> +chªÃls +); + +2670 ià( +p +-> +memÜy_´e£Á +) + +2671 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "m", +p +-> +memÜy +); + +2673 ià( +p +-> +¿nks_´e£Á +) + +2674 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "r", +p +-> +¿nks +); + +2676 +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2677 ià( +p +-> +pci_bÏckli¡ +[ +i +] =ð +NULL +) + +2680 + `årtf +( +f +, "%s = %s\n", "pci_blacklist", + +2681 +p +-> +pci_bÏckli¡ +[ +i +]); + +2684 +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2685 ià( +p +-> +pci_whi¡ +[ +i +] =ð +NULL +) + +2688 + `årtf +( +f +, "%s = %s\n", "pci_whitelist", + +2689 +p +-> +pci_whi¡ +[ +i +]); + +2692 +i + = 0; i < +APP_MAX_LINKS +; i++) { + +2693 ià( +p +-> +vdev +[ +i +] =ð +NULL +) + +2696 + `årtf +( +f +, "%s = %s\n", "vdev", + +2697 +p +-> +vdev +[ +i +]); + +2700 ià( +p +-> +vmw¬e_tsc_m_´e£Á +) + +2701 + `årtf +( +f +, "%s = %s\n", "vmware_tsc_map", + +2702 ( +p +-> +vmw¬e_tsc_m +) ? "yes" : "no"); + +2704 ià( +p +-> +´oc_ty³ +) + +2705 + `årtf +( +f +, "% ð%s\n", "´oc_ty³", +p +-> +´oc_ty³ +); + +2707 ià( +p +-> +sy¦og +) + +2708 + `årtf +( +f +, "% ð%s\n", "sy¦og", +p +-> +sy¦og +); + +2710 ià( +p +-> +log_Ëv_´e£Á +) + +2711 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "log_Ëv", +p +-> +log_Ëv +); + +2713 ià( +p +-> +vsiÚ_´e£Á +) + +2714 + `årtf +( +f +, "% ð%s\n", "v", ( +p +-> +vsiÚ +) ? "yes" : "no"); + +2716 ià( +p +-> +hp_´e£Á +) + +2717 + `årtf +( +f +, "% ð%s\n", "hp", ( +p +-> +hp +) ? "yes" : "no"); + +2719 ià( +p +-> +no_huge_´e£Á +) + +2720 + `årtf +( +f +, "% ð%s\n", "no_huge", ( +p +-> +no_huge +) ? "yes" : "no"); + +2722 ià( +p +-> +no_pci_´e£Á +) + +2723 + `årtf +( +f +, "% ð%s\n", "no_pci", ( +p +-> +no_pci +) ? "yes" : "no"); + +2725 ià( +p +-> +no_h³t_´e£Á +) + +2726 + `årtf +( +f +, "% ð%s\n", "no_h³t", ( +p +-> +no_h³t +) ? "yes" : "no"); + +2728 ià( +p +-> +no_shcÚf_´e£Á +) + +2729 + `årtf +( +f +, "%s = %s\n", "no_shconf", + +2730 ( +p +-> +no_shcÚf +) ? "yes" : "no"); + +2732 ià( +p +-> +add_driv +) + +2733 + `årtf +( +f +, "% ð%s\n", "d", +p +-> +add_driv +); + +2735 ià( +p +-> +sock_mem +) + +2736 + `årtf +( +f +, "% ð%s\n", "sock_mem", +p +-> +sock_mem +); + +2738 ià( +p +-> +huge_d +) + +2739 + `årtf +( +f +, "% ð%s\n", "huge_d", +p +-> +huge_d +); + +2741 ià( +p +-> +fe_´efix +) + +2742 + `årtf +( +f +, "% ð%s\n", "fe_´efix", +p +-> +fe_´efix +); + +2744 ià( +p +-> +ba£_vddr +) + +2745 + `årtf +( +f +, "% ð%s\n", "ba£_vddr", +p +-> +ba£_vddr +); + +2747 ià( +p +-> +ü_uio_dev_´e£Á +) + +2748 + `årtf +( +f +, "%s = %s\n", "create_uio_dev", + +2749 ( +p +-> +ü_uio_dev +) ? "yes" : "no"); + +2751 ià( +p +-> +vfio_ +) + +2752 + `årtf +( +f +, "% ð%s\n", "vfio_", +p +-> +vfio_ +); + +2754 ià( +p +-> +x_dom0_´e£Á +) + +2755 + `årtf +( +f +, "%s = %s\n", "xen_dom0", + +2756 ( +p +-> +x_dom0 +) ? "yes" : "no"); + +2758 + `åutc +('\n', +f +); + +2759 + } +} + +2762 + $§ve_mempoÞ_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2764 +p_mempoÞ_·¿ms + * +p +; + +2765 +size_t + +i +, +couÁ +; + +2767 +couÁ + = + `RTE_DIM +( +p +-> +mempoÞ_·¿ms +); + +2768 +i + = 0; i < +couÁ +; i++) { + +2769 +p + = & +p +-> +mempoÞ_·¿ms +[ +i +]; + +2770 ià(! + `APP_PARAM_VALID +( +p +)) + +2773 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2774 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bufãr_size", +p +-> +bufãr_size +); + +2775 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "poÞ_size", +p +-> +poÞ_size +); + +2776 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "ÿche_size", +p +-> +ÿche_size +); + +2777 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock_id +); + +2779 + `åutc +('\n', +f +); + +2781 + } +} + +2784 + $§ve_lks_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2786 +p_lk_·¿ms + * +p +; + +2787 +size_t + +i +, +couÁ +; + +2789 +couÁ + = + `RTE_DIM +( +p +-> +lk_·¿ms +); + +2790 +i + = 0; i < +couÁ +; i++) { + +2791 +p + = & +p +-> +lk_·¿ms +[ +i +]; + +2792 ià(! + `APP_PARAM_VALID +( +p +)) + +2795 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2796 + `årtf +( +f +, "; % ð%" +PRIu32 + "\n", "pmd_id", +p +-> +pmd_id +); + +2797 + `årtf +( +f +, "% ð%s\n", "´omisc", +p +-> +´omisc + ? "yes" : "no"); + +2798 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "¬p_q", +p +-> +¬p_q +); + +2799 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "tcp_syn_q", + +2800 +p +-> +tý_syn_q +); + +2801 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "_loÿl_q", +p +-> +_loÿl_q +); + +2802 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "tý_loÿl_q", +p +-> +tý_loÿl_q +); + +2803 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "udp_loÿl_q", +p +-> +udp_loÿl_q +); + +2804 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "sctp_local_q", + +2805 +p +-> +sùp_loÿl_q +); + +2807 ià( + `¡¾ +( +p +-> +pci_bdf +)) + +2808 + `årtf +( +f +, "% ð%s\n", "pci_bdf", +p +-> +pci_bdf +); + +2810 + `åutc +('\n', +f +); + +2812 + } +} + +2815 + $§ve_rxq_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2817 +p_pktq_hwq__·¿ms + * +p +; + +2818 +size_t + +i +, +couÁ +; + +2820 +couÁ + = + `RTE_DIM +( +p +-> +hwq__·¿ms +); + +2821 +i + = 0; i < +couÁ +; i++) { + +2822 +p + = & +p +-> +hwq__·¿ms +[ +i +]; + +2823 ià(! + `APP_PARAM_VALID +( +p +)) + +2826 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2827 + `årtf +( +f +, "%s = %s\n", + +2829 +p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_id +]. +Çme +); + +2830 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2831 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡", +p +-> +bur¡ +); + +2833 + `åutc +('\n', +f +); + +2835 + } +} + +2838 + $§ve_txq_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2840 +p_pktq_hwq_out_·¿ms + * +p +; + +2841 +size_t + +i +, +couÁ +; + +2843 +couÁ + = + `RTE_DIM +( +p +-> +hwq_out_·¿ms +); + +2844 +i + = 0; i < +couÁ +; i++) { + +2845 +p + = & +p +-> +hwq_out_·¿ms +[ +i +]; + +2846 ià(! + `APP_PARAM_VALID +( +p +)) + +2849 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2850 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2851 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡", +p +-> +bur¡ +); + +2852 + `årtf +( +f +, "%s = %s\n", + +2854 +p +-> +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 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2873 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2874 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_»ad", +p +-> +bur¡_»ad +); + +2875 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_wre", +p +-> +bur¡_wre +); + +2876 + `årtf +( +f +, "% ð%s\n", "drÝËss", +p +-> +drÝËss + ? "yes" : "no"); + +2877 + `årtf +( +f +, "% ð%" +PRIu64 + "\n", "n_»s", +p +-> +n_»s +); + +2878 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock_id +); + +2879 + `årtf +( +f +, "% ð%s\n", "v4_äag", +p +-> +v4_äag + ? "yes" : "no"); + +2880 + `årtf +( +f +, "% ð%s\n", "v6_äag", +p +-> +v6_äag + ? "yes" : "no"); + +2881 + `årtf +( +f +, "% ð%s\n", "v4_¿s", +p +-> +v4_¿s + ? "yes" : "no"); + +2882 + `årtf +( +f +, "% ð%s\n", "v6_¿s", +p +-> +v6_¿s + ? "yes" : "no"); + +2883 ià(( +p +-> +v4_äag + =ð1è|| (p-> +v6_äag + == 1)) { + +2884 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "mtu", +p +-> +mtu +); + +2885 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "mad©a_size", +p +-> +mad©a_size +); + +2886 + `årtf +( +f +, "%s = %s\n", + +2888 +p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_deù_id +]. +Çme +); + +2889 + `årtf +( +f +, "%s = %s\n", + +2891 +p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_deù_id +]. +Çme +); + +2894 + `åutc +('\n', +f +); + +2896 + } +} + +2899 + $§ve_tm_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2901 +p_pktq_tm_·¿ms + * +p +; + +2902 +size_t + +i +, +couÁ +; + +2904 +couÁ + = + `RTE_DIM +( +p +-> +tm_·¿ms +); + +2905 +i + = 0; i < +couÁ +; i++) { + +2906 +p + = & +p +-> +tm_·¿ms +[ +i +]; + +2907 ià(! + `APP_PARAM_VALID +( +p +)) + +2910 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2911 + `årtf +( +f +, "% ð%s\n", "cfg", +p +-> +fe_Çme +); + +2912 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_»ad", +p +-> +bur¡_»ad +); + +2913 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡_wre", +p +-> +bur¡_wre +); + +2915 + `åutc +('\n', +f +); + +2917 + } +} + +2920 + $§ve_sourû_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2922 +p_pktq_sourû_·¿ms + * +p +; + +2923 +size_t + +i +, +couÁ +; + +2925 +couÁ + = + `RTE_DIM +( +p +-> +sourû_·¿ms +); + +2926 +i + = 0; i < +couÁ +; i++) { + +2927 +p + = & +p +-> +sourû_·¿ms +[ +i +]; + +2928 ià(! + `APP_PARAM_VALID +( +p +)) + +2931 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2932 + `årtf +( +f +, "%s = %s\n", + +2934 +p +-> +mempoÞ_·¿ms +[ +p +-> +mempoÞ_id +]. +Çme +); + +2935 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "bur¡", +p +-> +bur¡ +); + +2936 + `årtf +( +f +, "% ð%s\n", "pÿp_fe_rd", +p +-> +fe_Çme +); + +2937 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "pcap_bytes_rd_per_pkt", + +2938 +p +-> +n_bys_³r_pkt +); + +2939 + `åutc +('\n', +f +); + +2941 + } +} + +2944 + $§ve_sk_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2946 +p_pktq_sk_·¿ms + * +p +; + +2947 +size_t + +i +, +couÁ +; + +2949 +couÁ + = + `RTE_DIM +( +p +-> +sk_·¿ms +); + +2950 +i + = 0; i < +couÁ +; i++) { + +2951 +p + = & +p +-> +sk_·¿ms +[ +i +]; + +2952 ià(! + `APP_PARAM_VALID +( +p +)) + +2955 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2956 + `årtf +( +f +, "% ð%s\n", "pÿp_fe_wr", +p +-> +fe_Çme +); + +2957 + `årtf +( +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 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2976 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "size", +p +-> +size +); + +2977 + `årtf +( +f +, "% ð%" +PRIu32 + "\n", "ýu", +p +-> +ýu_sock_id +); + +2979 + `åutc +('\n', +f +); + +2981 + } +} + +2984 + $§ve_pe_·¿ms +( +p_·¿ms + * +p +, +FILE + * +f +) + +2986 +size_t + +i +, +couÁ +; + +2988 +couÁ + = + `RTE_DIM +( +p +-> +pe_·¿ms +); + +2989 +i + = 0; i < +couÁ +; i++) { + +2990 +p_pe_·¿ms + * +p + = & +p +-> +pe_·¿ms +[ +i +]; + +2992 ià(! + `APP_PARAM_VALID +( +p +)) + +2996 + `årtf +( +f +, "[%s]\n", +p +-> +Çme +); + +2999 + `årtf +( +f +, "ty³ = %s\n", +p +-> +ty³ +); + +3002 + `årtf +( +f +, "cÜðs%" +PRIu32 + "c%" PRIu32 "%s\n", + +3003 +p +-> +sock_id +, + +3004 +p +-> +cÜe_id +, + +3005 ( +p +-> +hy³r_th_id +) ? "h" : ""); + +3008 ià( +p +-> +n_pktq_ +) { + +3009 +ut32_t + +j +; + +3011 + `årtf +( +f +, "pktq_in ="); + +3012 +j + = 0; j < +p +-> +n_pktq_ +; j++) { + +3013 +p_pktq__·¿ms + * +µ + = & +p +-> +pktq_ +[ +j +]; + +3014 * +Çme +; + +3016 +µ +-> +ty³ +) { + +3017 +APP_PKTQ_IN_HWQ +: + +3018 +Çme + = +p +-> +hwq__·¿ms +[ +µ +-> +id +].name; + +3020 +APP_PKTQ_IN_SWQ +: + +3021 +Çme + = +p +-> +swq_·¿ms +[ +µ +-> +id +].name; + +3023 +APP_PKTQ_IN_TM +: + +3024 +Çme + = +p +-> +tm_·¿ms +[ +µ +-> +id +].name; + +3026 +APP_PKTQ_IN_SOURCE +: + +3027 +Çme + = +p +-> +sourû_·¿ms +[ +µ +-> +id +].name; + +3030 + `APP_CHECK +(0, "Systemrror " + +3035 + `årtf +( +f +, " %s", +Çme +); + +3037 + `årtf +( +f +, "\n"); + +3041 ià( +p +-> +n_pktq_out +) { + +3042 +ut32_t + +j +; + +3044 + `årtf +( +f +, "pktq_out ="); + +3045 +j + = 0; j < +p +-> +n_pktq_out +; j++) { + +3046 +p_pktq_out_·¿ms + * +µ + = + +3047 & +p +-> +pktq_out +[ +j +]; + +3048 * +Çme +; + +3050 +µ +-> +ty³ +) { + +3051 +APP_PKTQ_OUT_HWQ +: + +3052 +Çme + = +p +-> +hwq_out_·¿ms +[ +µ +-> +id +].name; + +3054 +APP_PKTQ_OUT_SWQ +: + +3055 +Çme + = +p +-> +swq_·¿ms +[ +µ +-> +id +].name; + +3057 +APP_PKTQ_OUT_TM +: + +3058 +Çme + = +p +-> +tm_·¿ms +[ +µ +-> +id +].name; + +3060 +APP_PKTQ_OUT_SINK +: + +3061 +Çme + = +p +-> +sk_·¿ms +[ +µ +-> +id +].name; + +3064 + `APP_CHECK +(0, "Systemrror " + +3069 + `årtf +( +f +, " %s", +Çme +); + +3071 + `årtf +( +f +, "\n"); + +3075 ià( +p +-> +n_msgq_ +) { + +3076 +ut32_t + +j +; + +3078 + `årtf +( +f +, "msgq_in ="); + +3079 +j + = 0; j < +p +-> +n_msgq_ +; j++) { + +3080 +ut32_t + +id + = +p +-> +msgq_ +[ +j +]; + +3081 * +Çme + = +p +-> +msgq_·¿ms +[ +id +].name; + +3083 + `årtf +( +f +, " %s", +Çme +); + +3085 + `årtf +( +f +, "\n"); + +3089 ià( +p +-> +n_msgq_out +) { + +3090 +ut32_t + +j +; + +3092 + `årtf +( +f +, "msgq_out ="); + +3093 +j + = 0; j < +p +-> +n_msgq_out +; j++) { + +3094 +ut32_t + +id + = +p +-> +msgq_out +[ +j +]; + +3095 * +Çme + = +p +-> +msgq_·¿ms +[ +id +].name; + +3097 + `årtf +( +f +, " %s", +Çme +); + +3099 + `årtf +( +f +, "\n"); + +3103 + `årtf +( +f +, "tim_³riod = %" +PRIu32 + "\n", +p +-> +tim_³riod +); + +3106 ià( +p +-> +n_¬gs +) { + +3107 +ut32_t + +j +; + +3109 +j + = 0; j < +p +-> +n_¬gs +; j++) + +3110 + `årtf +( +f +, "% ð%s\n", +p +-> +¬gs_Çme +[ +j +], + +3111 +p +-> +¬gs_v®ue +[ +j +]); + +3114 + `årtf +( +f +, "\n"); + +3116 + } +} + +3119 + $p_cÚfig_§ve +( +p_·¿ms + * +p +, cÚ¡ * +fe_Çme +) + +3121 +FILE + * +fe +; + +3122 * +Çme +, * +d_Çme +; + +3123 +¡©us +; + +3125 +Çme + = + `¡rdup +( +fe_Çme +); + +3126 +d_Çme + = + `dÇme +( +Çme +); + +3127 +¡©us + = + `acûss +( +d_Çme +, +W_OK +); + +3128 + `APP_CHECK +(( +¡©us + == 0), + +3130 "\"%s\"اvcÚfigu¿tiÚ\n", +d_Çme +); + +3132 +fe + = + `fÝ +( +fe_Çme +, "w"); + +3133 + `APP_CHECK +(( +fe + !ð +NULL +), + +3135 +fe_Çme +); + +3137 + `§ve_l_·¿ms +( +p +, +fe +); + +3138 + `§ve_pe_·¿ms +( +p +, +fe +); + +3139 + `§ve_mempoÞ_·¿ms +( +p +, +fe +); + +3140 + `§ve_lks_·¿ms +( +p +, +fe +); + +3141 + `§ve_rxq_·¿ms +( +p +, +fe +); + +3142 + `§ve_txq_·¿ms +( +p +, +fe +); + +3143 + `§ve_swq_·¿ms +( +p +, +fe +); + +3144 + `§ve_tm_·¿ms +( +p +, +fe +); + +3145 + `§ve_sourû_·¿ms +( +p +, +fe +); + +3146 + `§ve_sk_·¿ms +( +p +, +fe +); + +3147 + `§ve_msgq_·¿ms +( +p +, +fe +); + +3149 + `fþo£ +( +fe +); + +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 +-> +lk_·¿ms +); i++) + +3166 + `memýy +(& +p +-> +lk_·¿ms +[ +i +], + +3167 & +lk_·¿ms_deçuÉ +, + +3168 ( +p_lk_·¿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 +-> +sk_·¿ms +); i++) + +3196 + `memýy +(& +p +-> +sk_·¿ms +[ +i +], + +3197 & +deçuÉ_sk_·¿ms +, + +3198 ( +deçuÉ_sk_·¿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 +-> +pe_·¿ms +); i++) + +3206 + `memýy +(& +p +-> +pe_·¿ms +[ +i +], + +3207 & +deçuÉ_pe_·¿ms +, + +3208 ( +deçuÉ_pe_·¿ms +)); + +3211 + } +} + +3214 + $famedup +(cÚ¡ * +fame +, cÚ¡ * +suffix +) + +3216 * +s + = + `m®loc +( + `¡¾ +( +fame +è+ sËn( +suffix +) + 1); + +3218 ià(! +s +) + +3219 +NULL +; + +3221 + `¥rtf +( +s +, "%s%s", +fame +, +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 +-> +hd_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 fileame isull\n"); + +3272 +p +-> +cÚfig_fe + = + `¡rdup +( +Ýrg +); + +3273 ià( +p +-> +cÚfig_fe + =ð +NULL +) + +3274 + `¹e_·nic +("Error: Memoryllocation 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 fileame isull\n"); + +3287 +p +-> +süt_fe + = + `¡rdup +( +Ýrg +); + +3288 ià( +p +-> +süt_fe + =ð +NULL +) + +3289 + `¹e_·nic +("Error: Memoryllocation 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 isot " + +3305 ià( +p +-> +pÜt_mask + == 0) + +3306 + `¹e_·nic +("Error: PORT_MASK isull\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: hwlbrgument " + +3331 +hwlb_´e£Á + = 1; + +3332 + `´tf +(" HWLB is configured\n"); + +3334 +p +-> +n_hwlb_q + = + `©oi +( +Ýrg +); + +3336 if(! +p +-> +n_hwlb_q +) + +3337 + `¹e_·nic +("HWQs for HWLB must betleast 1\n"); + +3339 + `´tf +("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_dirrgument " + +3348 +æow_d_´e£Á + = 1; + +3349 + `´tf +(" FLOW DIR is configured\n"); + +3351 +abË_æow_d + = 1; + +3356 ià( + `¡rcmp +( +Ýame +, "disable-hw-csum") == 0) { + +3357 ià( +di§bË_csum_´e£Á +) + +3358 + `¹e_·nic +("Error: disable-hw-csumrgument " + +3361 + `´tf +("Disable TCP/UDP HW checksumi\n"); + +3362 +p +-> +hd_csum_»q + = 0; + +3363 +di§bË_csum_´e£Á + = 1; + +3367 ià( + `¡rcmp +( +Ýame +, "preproc") == 0) { + +3368 ià( +´roc_´e£Á +) + +3369 + `¹e_·nic +("Error: Preprocessorrgument " + +3371 +´roc_´e£Á + = 1; + +3373 +p +-> +´roc + = + `¡rdup +( +Ýrg +); + +3377 ià( + `¡rcmp +( +Ýame +, "preproc-args") == 0) { + +3378 ià( +´roc_·¿ms_´e£Á +) + +3379 + `¹e_·nic +("Error: Preprocessorrgs " + +3381 +´roc_·¿ms_´e£Á + = 1; + +3383 +p +-> +´roc_¬gs + = + `¡rdup +( +Ýrg +); + +3387 + `p_´t_u§ge +( +¬gv +[0]); + +3391 + `p_´t_u§ge +( +¬gv +[0]); + +3394 +Ýtd + = 0; + +3397 ià( +´roc_·¿ms_´e£Á + && ( +´roc_´e£Á + == 0)) + +3398 + `¹e_·nic +("Error: Preprocessorrgs specified while " + +3401 +p +-> +·r£r_fe + = +´roc_´e£Á + ? + +3402 + `famedup +( +p +-> +cÚfig_fe +, ".preproc") : + +3403 + `¡rdup +( +p +-> +cÚfig_fe +); + +3404 +p +-> +ouut_fe + = + `famedup +×µ-> +cÚfig_fe +, ".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_fe +, +F_OK + | +R_OK +); + +3419 + `APP_CHECK +(( +¡©us + == 0), "Error: Unableo open file %s", + +3420 +p +-> +cÚfig_fe +); + +3422 + `¢´tf +( +bufãr +, (buffer), "%s %s %s > %s", + +3423 +p +-> +´roc +, + +3424 +p +-> +´roc_¬gs + ?pp->preproc_args : "", + +3425 +p +-> +cÚfig_fe +, + +3426 +p +-> +·r£r_fe +); + +3428 +¡©us + = + `sy¡em +( +bufãr +); + +3429 + `APP_CHECK +(( + `WIFEXITED +( +¡©us +è&& ( + `WEXITSTATUS +(status) == 0)), + +3431 +p +-> +cÚfig_fe +); + +3433 +¡©us +; + +3434 + } +} + + @vnf_common/config_parse_tm.c + +16 + ~<¡dt.h +> + +17 + ~<¡dlib.h +> + +18 + ~<¡dio.h +> + +19 + ~<ùy³.h +> + +20 + ~<gÝt.h +> + +21 + ~<ºo.h +> + +22 + ~<¡d¬g.h +> + +23 + ~<¡rg.h +> + +24 + ~<libg.h +> + +25 + ~<uni¡d.h +> + +27 + ~<¹e_ºo.h +> + +28 + ~<¹e_cfgfe.h +> + +29 + ~<¹e_¡rg_âs.h +> + +31 + ~"p.h +" + +34 + $tm_cfgfe_lßd_sched_pÜt +( + +35 +¹e_cfgfe + * +fe +, + +36 +¹e_sched_pÜt_·¿ms + * +pÜt_·¿ms +) + +38 cÚ¡ * +y +; + +39 +j +; + +41 +y + = + `¹e_cfgfe_g_y +( +fe +, "port", "frame overhead"); + +42 ià( +y +) + +43 +pÜt_·¿ms +-> +äame_ovhd + = ( +ut32_t +) + `©oi +( +y +); + +45 +y + = + `¹e_cfgfe_g_y +( +fe +, "port", "mtu"); + +46 ià( +y +) + +47 +pÜt_·¿ms +-> +mtu + = ( +ut32_t +) + `©oi +( +y +); + +49 +y + = + `¹e_cfgfe_g_y +( +fe +, + +52 ià( +y +) + +53 +pÜt_·¿ms +-> +n_subpÜts_³r_pÜt + = ( +ut32_t +è + `©oi +( +y +); + +55 +y + = + `¹e_cfgfe_g_y +( +fe +, + +58 ià( +y +) + +59 +pÜt_·¿ms +-> +n_pes_³r_subpÜt + = ( +ut32_t +è + `©oi +( +y +); + +61 +y + = + `¹e_cfgfe_g_y +( +fe +, "port", "queue sizes"); + +62 ià( +y +) { + +63 * +Ãxt +; + +65 +j + = 0; j < +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +; j++) { + +66 +pÜt_·¿ms +-> +qsize +[ +j +] = ( +ut16_t +) + +67 + `¡¹Þ +( +y +, & +Ãxt +, 10); + +68 ià( +Ãxt + =ð +NULL +) + +70 +y + = +Ãxt +; + +74 #ifdeà +RTE_SCHED_RED + + +75 +j + = 0; j < +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +; j++) { + +76 +¡r +[32]; + +79 + `¢´tf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d m", +j +); + +80 +y + = + `¹e_cfgfe_g_y +( +fe +, "»d", +¡r +); + +81 ià( +y +) { + +82 * +Ãxt +; + +83 +k +; + +86 +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +87 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +m_th + + +88 ð( +ut16_t +) + `¡¹Þ +( +y +, & +Ãxt +, 10); + +89 ià( +Ãxt + =ð +NULL +) + +91 +y + = +Ãxt +; + +96 + `¢´tf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d max", +j +); + +97 +y + = + `¹e_cfgfe_g_y +( +fe +, "»d", +¡r +); + +98 ià( +y +) { + +99 * +Ãxt +; + +100 +k +; + +103 +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +104 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +max_th + + +105 ð( +ut16_t +) + `¡¹Þ +( +y +, & +Ãxt +, 10); + +106 ià( +Ãxt + =ð +NULL +) + +108 +y + = +Ãxt +; + +113 + `¢´tf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d inv rob", +j +); + +114 +y + = + `¹e_cfgfe_g_y +( +fe +, "»d", +¡r +); + +115 ià( +y +) { + +116 * +Ãxt +; + +117 +k +; + +120 +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +121 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +maxp_v + + +122 ð( +ut8_t +) + `¡¹Þ +( +y +, & +Ãxt +, 10); + +124 ià( +Ãxt + =ð +NULL +) + +126 +y + = +Ãxt +; + +131 + `¢´tf +( +¡r +, (¡r), "tø%" +PRId32 + " w»d weight", +j +); + +132 +y + = + `¹e_cfgfe_g_y +( +fe +, "»d", +¡r +); + +133 ià( +y +) { + +134 * +Ãxt +; + +135 +k +; + +138 +k + = 0; k < +e_RTE_METER_COLORS +; k++) { + +139 +pÜt_·¿ms +-> +»d_·¿ms +[ +j +][ +k +]. +wq_log2 + + +140 ð( +ut8_t +) + `¡¹Þ +( +y +, & +Ãxt +, 10); + +141 ià( +Ãxt + =ð +NULL +) + +143 +y + = +Ãxt +; + +150 + } +} + +153 + $tm_cfgfe_lßd_sched_pe +( + +154 +¹e_cfgfe + * +fe +, + +155 +¹e_sched_pÜt_·¿ms + * +pÜt_·¿ms +, + +156 +¹e_sched_pe_·¿ms + * +pe_·¿ms +) + +158 +i +, +j +; + +159 * +Ãxt +; + +160 cÚ¡ * +y +; + +161 +´ofes +; + +163 +´ofes + = + `¹e_cfgfe_num_£ùiÚs +( +fe +, + +165 +pÜt_·¿ms +-> +n_pe_´ofes + = +´ofes +; + +167 +j + = 0; j < +´ofes +; j++) { + +168 +pe_Çme +[32]; + +170 + `¢´tf +( +pe_Çme +, (pipe_name), + +171 "p´of%" +PRId32 +, +j +); + +173 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tbate"); + +174 ià( +y +) + +175 +pe_·¿ms +[ +j +]. +tb_¿ + = ( +ut32_t +è + `©oi +( +y +); + +177 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tb size"); + +178 ià( +y +) + +179 +pe_·¿ms +[ +j +]. +tb_size + = ( +ut32_t +è + `©oi +( +y +); + +181 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc eriod"); + +182 ià( +y +) + +183 +pe_·¿ms +[ +j +]. +tc_³riod + = ( +ut32_t +è + `©oi +( +y +); + +185 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 0ate"); + +186 ià( +y +) + +187 +pe_·¿ms +[ +j +]. +tc_¿ +[0] = ( +ut32_t +è + `©oi +( +y +); + +189 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 1ate"); + +190 ià( +y +) + +191 +pe_·¿ms +[ +j +]. +tc_¿ +[1] = ( +ut32_t +è + `©oi +( +y +); + +193 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 2ate"); + +194 ià( +y +) + +195 +pe_·¿ms +[ +j +]. +tc_¿ +[2] = ( +ut32_t +è + `©oi +( +y +); + +197 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 3ate"); + +198 ià( +y +) + +199 +pe_·¿ms +[ +j +]. +tc_¿ +[3] = ( +ut32_t +è + `©oi +( +y +); + +201 #ifdeà +RTE_SCHED_SUBPORT_TC_OV + + +202 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, + +204 ià( +y +) + +205 +pe_·¿ms +[ +j +]. +tc_ov_weight + = ( +ut8_t +) + `©oi +( +y +); + +208 +y + = + `¹e_cfgfe_g_y +( +fe +, + +209 +pe_Çme +, + +211 ià( +y +) + +212 +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +213 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*0 + +i +] = + +214 ( +ut8_t +è + `¡¹Þ +( +y +, & +Ãxt +, 10); + +215 ià( +Ãxt + =ð +NULL +) + +217 +y + = +Ãxt +; + +220 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 1 wrr weights"); + +221 ià( +y +) + +222 +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +223 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*1 + +i +] = + +224 ( +ut8_t +è + `¡¹Þ +( +y +, & +Ãxt +, 10); + +225 ià( +Ãxt + =ð +NULL +) + +227 +y + = +Ãxt +; + +230 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 2 wrr weights"); + +231 ià( +y +) + +232 +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +233 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*2 + +i +] = + +234 ( +ut8_t +è + `¡¹Þ +( +y +, & +Ãxt +, 10); + +235 ià( +Ãxt + =ð +NULL +) + +237 +y + = +Ãxt +; + +240 +y + = + `¹e_cfgfe_g_y +( +fe +, +pe_Çme +, "tc 3 wrr weights"); + +241 ià( +y +) + +242 +i + = 0; i < +RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS +; i++) { + +243 +pe_·¿ms +[ +j +]. +w¼_weights +[ +RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE +*3 + +i +] = + +244 ( +ut8_t +è + `¡¹Þ +( +y +, & +Ãxt +, 10); + +245 ià( +Ãxt + =ð +NULL +) + +247 +y + = +Ãxt +; + +251 + } +} + +254 + $tm_cfgfe_lßd_sched_subpÜt +( + +255 +¹e_cfgfe + * +fe +, + +256 +¹e_sched_subpÜt_·¿ms + * +subpÜt_·¿ms +, + +257 * +pe_to_´ofe +) + +259 cÚ¡ * +y +; + +260 +i +, +j +, +k +; + +262 +i + = 0; i < +APP_MAX_SCHED_SUBPORTS +; i++) { + +263 +£c_Çme +[ +CFG_NAME_LEN +]; + +265 + `¢´tf +( +£c_Çme +, (sec_name), + +266 "subpÜ%" +PRId32 +, +i +); + +268 ià( + `¹e_cfgfe_has_£ùiÚ +( +fe +, +£c_Çme +)) { + +269 +y + = + `¹e_cfgfe_g_y +( +fe +, + +270 +£c_Çme +, + +272 ià( +y +) + +273 +subpÜt_·¿ms +[ +i +]. +tb_¿ + = + +274 ( +ut32_t +è + `©oi +( +y +); + +276 +y + = + `¹e_cfgfe_g_y +( +fe +, + +277 +£c_Çme +, + +279 ià( +y +) + +280 +subpÜt_·¿ms +[ +i +]. +tb_size + = + +281 ( +ut32_t +è + `©oi +( +y +); + +283 +y + = + `¹e_cfgfe_g_y +( +fe +, + +284 +£c_Çme +, + +286 ià( +y +) + +287 +subpÜt_·¿ms +[ +i +]. +tc_³riod + = + +288 ( +ut32_t +è + `©oi +( +y +); + +290 +y + = + `¹e_cfgfe_g_y +( +fe +, + +291 +£c_Çme +, + +293 ià( +y +) + +294 +subpÜt_·¿ms +[ +i +]. +tc_¿ +[0] = + +295 ( +ut32_t +è + `©oi +( +y +); + +297 +y + = + `¹e_cfgfe_g_y +( +fe +, + +298 +£c_Çme +, + +300 ià( +y +) + +301 +subpÜt_·¿ms +[ +i +]. +tc_¿ +[1] = + +302 ( +ut32_t +è + `©oi +( +y +); + +304 +y + = + `¹e_cfgfe_g_y +( +fe +, + +305 +£c_Çme +, + +307 ià( +y +) + +308 +subpÜt_·¿ms +[ +i +]. +tc_¿ +[2] = + +309 ( +ut32_t +è + `©oi +( +y +); + +311 +y + = + `¹e_cfgfe_g_y +( +fe +, + +312 +£c_Çme +, + +314 ià( +y +) + +315 +subpÜt_·¿ms +[ +i +]. +tc_¿ +[3] = + +316 ( +ut32_t +è + `©oi +( +y +); + +318 +n_s + = + `¹e_cfgfe_£ùiÚ_num_s +( +fe +, + +319 +£c_Çme +); + +320 +¹e_cfgfe_y + +s +[ +n_s +]; + +322 + `¹e_cfgfe_£ùiÚ_s +( +fe +, + +323 +£c_Çme +, + +324 +s +, + +325 +n_s +); + +327 +j + = 0; j < +n_s +; j++) + +328 ià( + `¡ºcmp +("pipe", + +329 +s +[ +j +]. +Çme +, + +331 +´ofe +; + +332 * +toks +[2] = { +NULL +, NULL}; + +333 +n_toks +; + +334 +beg +, +d +; + +335 +Çme +[ +CFG_NAME_LEN + + 1]; + +337 +´ofe + = + `©oi +( +s +[ +j +]. +v®ue +); + +338 + `¡ºýy +( +Çme +, + +339 +s +[ +j +]. +Çme +, + +340 ( +Çme +)); + +341 +n_toks + = + `¹e_¡r¥l +( + +342 & +Çme +[("pipe")], + +343 + `¡ºËn +( +Çme +, +CFG_NAME_LEN +), + +344 +toks +, 2, '-'); + +346 +beg + = + `©oi +( +toks +[0]); + +347 ià( +n_toks + == 2) + +348 +d + = + `©oi +( +toks +[1]); + +350 +d + = +beg +; + +352 ià(( +d + >ð +APP_MAX_SCHED_PIPES +) || + +353 ( +beg + > +d +)) + +356 +k + = +beg +; k <ð +d +; k++) { + +357 +´ofe_Çme +[ +CFG_NAME_LEN +]; + +359 + `¢´tf +( +´ofe_Çme +, + +360 ( +´ofe_Çme +), + +361 "p´of%" +PRId32 +, + +362 +´ofe +); + +363 ià( + `¹e_cfgfe_has_£ùiÚ +( +fe +, +´ofe_Çme +)) + +364 +pe_to_´ofe +[ +i + * +APP_MAX_SCHED_PIPES + + +k +] = +´ofe +; + +366 + `¹e_ex +( +EXIT_FAILURE +, + +368 +s +[ +j +]. +v®ue +); + +375 + } +} + +378 + $tm_cfgfe_lßd +( +p_pktq_tm_·¿ms + * +tm +) + +380 +¹e_cfgfe + * +fe +; + +381 +ut32_t + +i +; + +383 + `mem£t +( +tm +-> +sched_subpÜt_·¿ms +, 0, (tm->sched_subport_params)); + +384 + `mem£t +( +tm +-> +sched_pe_´ofes +, 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_pe_to_´ofe +[ +i +] = -1; + +389 +tm +-> +sched_pÜt_·¿ms +. +pe_´ofes + = &tm-> +sched_pe_´ofes +[0]; + +391 ià( +tm +-> +fe_Çme +[0] == '\0') + +394 +fe + = + `¹e_cfgfe_lßd +( +tm +-> +fe_Çme +, 0); + +395 ià( +fe + =ð +NULL +) + +398 + `tm_cfgfe_lßd_sched_pÜt +( +fe +, + +399 & +tm +-> +sched_pÜt_·¿ms +); + +400 + `tm_cfgfe_lßd_sched_subpÜt +( +fe +, + +401 +tm +-> +sched_subpÜt_·¿ms +, + +402 +tm +-> +sched_pe_to_´ofe +); + +403 + `tm_cfgfe_lßd_sched_pe +( +fe +, + +404 & +tm +-> +sched_pÜt_·¿ms +, + +405 +tm +-> +sched_pe_´ofes +); + +407 + `¹e_cfgfe_þo£ +( +fe +); + +409 + } +} + +412 + $p_cÚfig_·r£_tm +( +p_·¿ms + * +p +) + +414 +ut32_t + +i +; + +416 +i + = 0; i < + `RTE_DIM +( +p +-> +tm_·¿ms +); i++) { + +417 +p_pktq_tm_·¿ms + * +p + = & +p +-> +tm_·¿ms +[ +i +]; + +418 +¡©us +; + +420 ià(! + `APP_PARAM_VALID +( +p +)) + +423 +¡©us + = + `tm_cfgfe_lßd +( +p +); + +424 + `APP_CHECK +( +¡©us + == 0, + +426 +p +-> +Çme +, + +427 +p +-> +fe_Çme +); + +431 + } +} + + @vnf_common/cpu_core_map.c + +17 + ~<y³s.h +> + +18 + ~<¡dlib.h +> + +19 + ~<¡dio.h +> + +20 + ~<¡rg.h +> + +22 + ~<¹e_lcÜe.h +> + +24 + ~"ýu_cÜe_m.h +" + +26 + sýu_cÜe_m + { + +27 +ut32_t + + mn_max_socks +; + +28 +ut32_t + + mn_max_cÜes_³r_sock +; + +29 +ut32_t + + mn_max_ht_³r_cÜe +; + +30 +ut32_t + + mn_socks +; + +31 +ut32_t + + mn_cÜes_³r_sock +; + +32 +ut32_t + + mn_ht_³r_cÜe +; + +33 + mm +[0]; + +36 +le + +ut32_t + + +37 + $ýu_cÜe_m_pos +( +ýu_cÜe_m + * +m +, + +38 +ut32_t + +sock_id +, + +39 +ut32_t + +cÜe_id +, + +40 +ut32_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_lux +( +ý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_ +( +ut32_t + +n_max_socks +, + +57 +ut32_t + +n_max_cÜes_³r_sock +, + +58 +ut32_t + +n_max_ht_³r_cÜe +, + +59 +ut32_t + +l_lized +) + +61 +ut32_t + +m_size +, +m_mem_size +, +i +; + +62 +ýu_cÜe_m + * +m +; + +63 +¡©us +; + +66 ià(( +n_max_socks + == 0) || + +67 ( +n_max_cÜes_³r_sock + == 0) || + +68 ( +n_max_ht_³r_cÜe + == 0)) + +69 +NULL +; + +72 +m_size + = +n_max_socks + * +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_socks + =_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_socks + = 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_lux +( +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 +ut32_t + +sock_id +, +cÜe_id +, +ht_id +; + +113 +sock_id + = 0; sock_id < +m +-> +n_max_socks +; socket_id++) { + +114 +ut32_t + +n_deùed +, +cÜe_id_cÚtig +; + +115 +lcÜe_id +; + +117 +n_deù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 +-> +deùed +è&& (p-> +sock_id + == socket_id)) + +122 +n_deùed +++; + +125 +cÜe_id_cÚtig + = 0; + +127 +cÜe_id + = 0; +n_deù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 +-> +deùed +) && + +137 ( +p +-> +sock_id + == socket_id) && + +138 ( +p +-> +cÜe_id + == core_id)) { + +139 +ut32_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_deù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 +ut32_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 +ut32_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_socks +; socket_id++) { + +191 +ut32_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_socks +++; + +200 ià( +m +-> +n_socks + == 0) + +205 +sock_id + = 0; sock_id < +m +-> +n_socks +; 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 +ut32_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 +ut32_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_lux +() + +244 +bufãr +[64], * +¡rg +; + +245 +FILE + * +fd +; + +247 +fd + = + `fÝ +( +FILE_LINUX_CPU_N_LCORES +, "r"); + +248 ià( +fd + =ð +NULL +) + +251 ià( + `fgs +( +bufãr +, (bufãr), +fd +è=ð +NULL +) { + +252 + `fþo£ +( +fd +); + +256 + `fþo£ +( +fd +); + +258 +¡rg + = + `dex +( +bufãr +, '-'); + +259 ià( +¡rg + =ð +NULL +) + +262 + `©oi +(++ +¡rg +) + 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_lux +( +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à( + `fgs +( +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_lux +( +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à( + `fgs +( +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_lux +( +ýu_cÜe_m + * +m +) + +320 +ut32_t + +sock_id +, +cÜe_id +, +ht_id +; + +321 +n_lcÜes +; + +323 +n_lcÜes + = + `ýu_cÜe_m_g_n_lcÜes_lux +(); + +324 ià( +n_lcÜes + <= 0) + +328 +sock_id + = 0; sock_id < +m +-> +n_max_socks +; socket_id++) { + +329 +ut32_t + +n_deùed +, +cÜe_id_cÚtig +; + +330 +lcÜe_id +; + +332 +n_deù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_lux +( +lcÜe_id +); + +337 ià( +lcÜe_sock_id + < 0) + +340 ià((( +ut32_t +è +lcÜe_sock_id +è=ð +sock_id +) + +341 +n_deùed +++; + +344 +cÜe_id_cÚtig + = 0; + +346 +cÜe_id + = 0; +n_deù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_lux +( + +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_lux +( + +359 +lcÜe_id +); + +361 ià( +lcÜe_cÜe_id + < 0) + +364 ià((( +ut32_t +è +lcÜe_sock_id + =ð +sock_id +) && + +365 (( +ut32_t +è +lcÜe_cÜe_id + =ð +cÜe_id +)) { + +366 +ut32_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_deù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 +ut32_t + +sock_id +, +cÜe_id +, +ht_id +; + +394 ià( +m + =ð +NULL +) + +397 +sock_id + = 0; sock_id < +m +-> +n_socks +; socket_id++) { + +398 + `´tf +("Sock %" +PRIu32 + ":\n", +sock_id +); + +400 +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 +ut32_t + +cÜe_id_nÚcÚtig + = + +412 + `ýu_cÜe_m_g_cÜe_id_lux +( + +413 +lcÜe_id +); + +415 + `´tf +(" %" +PRId32 + " (%" +PRIu32 + ") ", + +416 +lcÜe_id +, + +417 +cÜe_id_nÚcÚtig +); + +420 + `´tf +("]\n"); + +423 + } +} + +425 +ut32_t + + +426 + $ýu_cÜe_m_g_n_socks +( +ýu_cÜe_m + * +m +) + +428 ià( +m + =ð +NULL +) + +431 +m +-> +n_socks +; + +432 + } +} + +434 +ut32_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 +ut32_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 +ut32_t + +sock_id +, + +455 +ut32_t + +cÜe_id +, + +456 +ut32_t + +ht_id +) + +458 +ut32_t + +pos +; + +460 ià(( +m + =ð +NULL +) || + +461 ( +sock_id + >ð +m +-> +n_socks +) || + +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_ +( +ut32_t + +n_max_socks +, + +28 +ut32_t + +n_max_cÜes_³r_sock +, + +29 +ut32_t + +n_max_ht_³r_cÜe +, + +30 +ut32_t + +l_lized +); + +32 +ut32_t + + +33 +ýu_cÜe_m_g_n_socks +( +ýu_cÜe_m + * +m +); + +35 +ut32_t + + +36 +ýu_cÜe_m_g_n_cÜes_³r_sock +( +ýu_cÜe_m + * +m +); + +38 +ut32_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 +ut32_t + +sock_id +, + +44 +ut32_t + +cÜe_id +, + +45 +ut32_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 +le + +ut64_t + + +20 + $hash_xÜ_key8 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +22 +ut64_t + * +k + = +key +; + +23 +ut64_t + +xÜ0 +; + +25 +xÜ0 + = +£ed + ^ +k +[0]; + +27 ( +xÜ0 + >> 32) ^ xor0; + +28 + } +} + +30 +le + +ut64_t + + +31 + $hash_xÜ_key16 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +33 +ut64_t + * +k + = +key +; + +34 +ut64_t + +xÜ0 +; + +36 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +38 ( +xÜ0 + >> 32) ^ xor0; + +39 + } +} + +41 +le + +ut64_t + + +42 + $hash_xÜ_key24 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +44 +ut64_t + * +k + = +key +; + +45 +ut64_t + +xÜ0 +; + +47 +xÜ0 + = ( +k +[0] ^ +£ed +) ^ k[1]; + +49 +xÜ0 + ^ð +k +[2]; + +51 ( +xÜ0 + >> 32) ^ xor0; + +52 + } +} + +54 +le + +ut64_t + + +55 + $hash_xÜ_key32 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +57 +ut64_t + * +k + = +key +; + +58 +ut64_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 +le + +ut64_t + + +69 + $hash_xÜ_key40 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +71 +ut64_t + * +k + = +key +; + +72 +ut64_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 +le + +ut64_t + + +85 + $hash_xÜ_key48 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +87 +ut64_t + * +k + = +key +; + +88 +ut64_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 +le + +ut64_t + + +102 + $hash_xÜ_key56 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +104 +ut64_t + * +k + = +key +; + +105 +ut64_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 +le + +ut64_t + + +120 + $hash_xÜ_key64 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +122 +ut64_t + * +k + = +key +; + +123 +ut64_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à +defed +( +RTE_ARCH_X86_64 +è&& defed( +RTE_MACHINE_CPUFLAG_SSE4_2 +) + +140 + ~<x86.h +> + +142 +le + +ut64_t + + +143 + $hash_üc_key8 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +145 +ut64_t + * +k + = +key +; + +146 +ut64_t + +üc0 +; + +148 +üc0 + = + `_mm_üc32_u64 +( +£ed +, +k +[0]); + +150 +üc0 +; + +151 + } +} + +153 +le + +ut64_t + + +154 + $hash_üc_key16 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +156 +ut64_t + * +k + = +key +; + +157 +ut64_t + +k0 +, +üc0 +, +üc1 +; + +159 +k0 + = +k +[0]; + +161 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +162 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +164 +üc0 + ^ð +üc1 +; + +166 +üc0 +; + +167 + } +} + +169 +le + +ut64_t + + +170 + $hash_üc_key24 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +172 +ut64_t + * +k + = +key +; + +173 +ut64_t + +k0 +, +k2 +, +üc0 +, +üc1 +; + +175 +k0 + = +k +[0]; + +176 +k2 + = +k +[2]; + +178 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +179 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +181 +üc0 + = + `_mm_üc32_u64 +(üc0, +k2 +); + +183 +üc0 + ^ð +üc1 +; + +185 +üc0 +; + +186 + } +} + +188 +le + +ut64_t + + +189 + $hash_üc_key32 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +191 +ut64_t + * +k + = +key +; + +192 +ut64_t + +k0 +, +k2 +, +üc0 +, +üc1 +, +üc2 +, +üc3 +; + +194 +k0 + = +k +[0]; + +195 +k2 + = +k +[2]; + +197 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +198 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +200 +üc2 + = + `_mm_üc32_u64 +( +k2 +, +k +[3]); + +201 +üc3 + = +k2 + >> 32; + +203 +üc0 + = + `_mm_üc32_u64 +(üc0, +üc1 +); + +204 +üc1 + = + `_mm_üc32_u64 +( +üc2 +, +üc3 +); + +206 +üc0 + ^ð +üc1 +; + +208 +üc0 +; + +209 + } +} + +211 +le + +ut64_t + + +212 + $hash_üc_key40 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +214 +ut64_t + * +k + = +key +; + +215 +ut64_t + +k0 +, +k2 +, +üc0 +, +üc1 +, +üc2 +, +üc3 +; + +217 +k0 + = +k +[0]; + +218 +k2 + = +k +[2]; + +220 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +221 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +223 +üc2 + = + `_mm_üc32_u64 +( +k2 +, +k +[3]); + +224 +üc3 + = + `_mm_üc32_u64 +( +k2 + >> 32, +k +[4]); + +226 +üc0 + = + `_mm_üc32_u64 +(üc0, +üc1 +); + +227 +üc1 + = + `_mm_üc32_u64 +( +üc2 +, +üc3 +); + +229 +üc0 + ^ð +üc1 +; + +231 +üc0 +; + +232 + } +} + +234 +le + +ut64_t + + +235 + $hash_üc_key48 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +237 +ut64_t + * +k + = +key +; + +238 +ut64_t + +k0 +, +k2 +, +k5 +, +üc0 +, +üc1 +, +üc2 +, +üc3 +; + +240 +k0 + = +k +[0]; + +241 +k2 + = +k +[2]; + +242 +k5 + = +k +[5]; + +244 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +245 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +247 +üc2 + = + `_mm_üc32_u64 +( +k2 +, +k +[3]); + +248 +üc3 + = + `_mm_üc32_u64 +( +k2 + >> 32, +k +[4]); + +250 +üc0 + = + `_mm_üc32_u64 +(üc0, ( +üc1 + << 32è^ +üc2 +); + +251 +üc1 + = + `_mm_üc32_u64 +( +üc3 +, +k5 +); + +253 +üc0 + ^ð +üc1 +; + +255 +üc0 +; + +256 + } +} + +258 +le + +ut64_t + + +259 + $hash_üc_key56 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +261 +ut64_t + * +k + = +key +; + +262 +ut64_t + +k0 +, +k2 +, +k5 +, +üc0 +, +üc1 +, +üc2 +, +üc3 +, +üc4 +, +üc5 +; + +264 +k0 + = +k +[0]; + +265 +k2 + = +k +[2]; + +266 +k5 + = +k +[5]; + +268 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +269 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +271 +üc2 + = + `_mm_üc32_u64 +( +k2 +, +k +[3]); + +272 +üc3 + = + `_mm_üc32_u64 +( +k2 + >> 32, +k +[4]); + +274 +üc4 + = + `_mm_üc32_u64 +( +k5 +, +k +[6]); + +275 +üc5 + = +k5 + >> 32; + +277 +üc0 + = + `_mm_üc32_u64 +(üc0, ( +üc1 + << 32è^ +üc2 +); + +278 +üc1 + = + `_mm_üc32_u64 +( +üc3 +, ( +üc4 + << 32è^ +üc5 +); + +280 +üc0 + ^ð +üc1 +; + +282 +üc0 +; + +283 + } +} + +285 +le + +ut64_t + + +286 + $hash_üc_key64 +(* +key +, +__¹e_unu£d + +ut32_t + +key_size +, +ut64_t + +£ed +) + +288 +ut64_t + * +k + = +key +; + +289 +ut64_t + +k0 +, +k2 +, +k5 +, +üc0 +, +üc1 +, +üc2 +, +üc3 +, +üc4 +, +üc5 +; + +291 +k0 + = +k +[0]; + +292 +k2 + = +k +[2]; + +293 +k5 + = +k +[5]; + +295 +üc0 + = + `_mm_üc32_u64 +( +k0 +, +£ed +); + +296 +üc1 + = + `_mm_üc32_u64 +( +k0 + >> 32, +k +[1]); + +298 +üc2 + = + `_mm_üc32_u64 +( +k2 +, +k +[3]); + +299 +üc3 + = + `_mm_üc32_u64 +( +k2 + >> 32, +k +[4]); + +301 +üc4 + = + `_mm_üc32_u64 +( +k5 +, +k +[6]); + +302 +üc5 + = + `_mm_üc32_u64 +( +k5 + >> 32, +k +[7]); + +304 +üc0 + = + `_mm_üc32_u64 +(üc0, ( +üc1 + << 32è^ +üc2 +); + +305 +üc1 + = + `_mm_üc32_u64 +( +üc3 +, ( +üc4 + << 32è^ +üc5 +); + +307 +üc0 + ^ð +üc1 +; + +309 +üc0 +; + +310 + } +} + +312 + #hash_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_ut64 +( +ut64_t + * +v®ue +, cÚ¡ * +p +); + +27 +·r£r_»ad_ut32 +( +ut32_t + * +v®ue +, cÚ¡ * +p +); + +30 +·r£_hex_¡rg +(* +¤c +, +ut8_t + * +d¡ +, +ut32_t + * +size +); + + @vnf_common/pipeline.h + +17 #iâdeà +__INCLUDE_PIPELINE_H__ + + +18 + #__INCLUDE_PIPELINE_H__ + + + ) + +20 + ~<cmdle_·r£.h +> + +22 + ~"pe_be.h +" + +28 * (* + tpe_ã_Ý_ +)( + tpe_·¿ms + * + t·¿ms +, * + t¬g +); + +30 (* + tpe_ã_Ý_ä +)(* + tpe +); + +32 + spe_ã_Ýs + { + +33 +pe_ã_Ý_ + +f_ +; + +34 +pe_ã_Ý_ä + +f_ä +; + +35 +cmdle_·r£_ùx_t + * +cmds +; + +42 + spe_ty³ + { + +43 cÚ¡ * +Çme +; + +46 +pe_be_Ýs + * +be_Ýs +; + +49 +pe_ã_Ýs + * +ã_Ýs +; + +52 +le + +ut32_t + + +53 + $pe_ty³_cmds_couÁ +( +pe_ty³ + * +±y³ +) + +55 +cmdle_·r£_ùx_t + * +cmds +; + +56 +ut32_t + +n_cmds +; + +58 ià( +±y³ +-> +ã_Ýs + =ð +NULL +) + +61 +cmds + = +±y³ +-> +ã_Ýs +->cmds; + +62 ià( +cmds + =ð +NULL +) + +65 +n_cmds + = 0; +cmds +[n_cmds];_cmds++); + +67 +n_cmds +; + +68 + } +} + +71 +·r£_pe_cÜe +( +ut32_t + * +sock +, + +72 +ut32_t + * +cÜe +, + +73 +ut32_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 + ~<¡dt.h +> + +21 + ~<¹e_commÚ.h +> + +22 + ~<¹e_cyþes.h +> + +23 + ~<¹e_mbuf.h +> + +24 + ~<¹e_pe.h +> + +26 + #PIPELINE_PORT_IN_AH +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +28 + `f_ah +( \ + +29 +__¹e_unu£d + +¹e_pe + * +p +, \ + +30 +¹e_mbuf + ** +pkts +, \ + +31 +ut32_t + +n_pkts +, \ + +32 * +¬g +) \ + +34 +ut32_t + +i +; \ + +36 +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +37 + `f_pkt4_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_pe + * +p +, \ + +49 +¹e_mbuf + ** +pkts +, \ + +50 +ut32_t + +n_pkts +, \ + +51 * +¬g +) \ + +53 +ut64_t + +pkt_mask + = + `RTE_LEN2MASK +( +n_pkts +, uint64_t); \ + +54 +ut32_t + +i +; \ + +56 + `¹e_pe_ah_·ck_hijack +( +p +, +pkt_mask +); \ + +58 +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) \ + +59 + `f_pkt4_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_pe + * +p +, \ + +71 +¹e_mbuf + ** +pkts +, \ + +72 +ut64_t + +pkts__mask +, \ + +73 +¹e_pe_bË_y + ** +s +, \ + +74 * +¬g +) \ + +76 ià(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +77 +ut64_t + +n_pkts + = + `__but_pÝcouÁÎ +( +pkts__mask +); \ + +78 +ut32_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 +ut32_t + +pos + = + `__but_ùzÎ +( +pkts__mask +); \ + +88 +ut64_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_pe + * +p +, \ + +101 +¹e_mbuf + ** +pkts +, \ + +102 +ut64_t + +pkts__mask +, \ + +103 +¹e_pe_bË_y + * +y +, \ + +104 * +¬g +) \ + +106 ià(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +107 +ut64_t + +n_pkts + = + `__but_pÝcouÁÎ +( +pkts__mask +); \ + +108 +ut32_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 +ut32_t + +pos + = + `__but_ùzÎ +( +pkts__mask +); \ + +118 +ut64_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_pe + * +p +, \ + +131 +¹e_mbuf + ** +pkts +, \ + +132 +ut64_t + +pkts_mask +, \ + +133 +¹e_pe_bË_y + ** +s +, \ + +134 * +¬g +) \ + +136 +ut64_t + +pkts__mask + = +pkts_mask +; \ + +137 +ut64_t + +pkts_out_mask + = +pkts_mask +; \ + +138 +ut64_t + +time + = + `¹e_rdtsc +(); \ + +140 ià(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +141 +ut64_t + +n_pkts + = + `__but_pÝcouÁÎ +( +pkts__mask +); \ + +142 +ut32_t + +i +; \ + +144 +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +145 +ut64_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 +ut64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +i +], \ + +152 +s +[ +i +], +¬g +, +time +); \ + +153 +pkts_out_mask + ^ð +mask + << +i +; \ + +156 ; +pkts__mask +; ) { \ + +157 +ut32_t + +pos + = + `__but_ùzÎ +( +pkts__mask +); \ + +158 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +159 +ut64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +pos +], \ + +160 +s +[ +pos +], +¬g +, +time +); \ + +162 +pkts__mask + &ð~ +pkt_mask +; \ + +163 +pkts_out_mask + ^ð +mask + << +pos +; \ + +166 + `¹e_pe_ah_·ck_drÝ +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +169 } + + ) + +171 + #PIPELINE_TABLE_AH_MISS_DROP_TIME +( +f_ah +, +f_pkt_wÜk +, +f_pkt4_wÜk +) \ + +173 + `f_ah +( \ + +174 +¹e_pe + * +p +, \ + +175 +¹e_mbuf + ** +pkts +, \ + +176 +ut64_t + +pkts_mask +, \ + +177 +¹e_pe_bË_y + * +y +, \ + +178 * +¬g +) \ + +180 +ut64_t + +pkts__mask + = +pkts_mask +; \ + +181 +ut64_t + +pkts_out_mask + = +pkts_mask +; \ + +182 +ut64_t + +time + = + `¹e_rdtsc +(); \ + +184 ià(( +pkts__mask + & (pkts_in_mask + 1)) == 0) { \ + +185 +ut64_t + +n_pkts + = + `__but_pÝcouÁÎ +( +pkts__mask +); \ + +186 +ut32_t + +i +; \ + +188 +i + = 0; i < ( +n_pkts + & (~0x3LLU)); i += 4) { \ + +189 +ut64_t + +mask + = + `f_pkt4_wÜk +(& +pkts +[ +i +], \ + +190 +y +, +¬g +, +time +); \ + +191 +pkts_out_mask + ^ð +mask + << +i +; \ + +194 ; +i + < +n_pkts +; i++) { \ + +195 +ut64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +i +], +y +, +¬g +, +time +);\ + +196 +pkts_out_mask + ^ð +mask + << +i +; \ + +199 ; +pkts__mask +; ) { \ + +200 +ut32_t + +pos + = + `__but_ùzÎ +( +pkts__mask +); \ + +201 +ut64_t + +pkt_mask + = 1LLU << +pos +; \ + +202 +ut64_t + +mask + = + `f_pkt_wÜk +( +pkts +[ +pos +], \ + +203 +y +, +¬g +, +time +); \ + +205 +pkts__mask + &ð~ +pkt_mask +; \ + +206 +pkts_out_mask + ^ð +mask + << +pos +; \ + +209 + `¹e_pe_ah_·ck_drÝ +( +p +, +pkts_out_mask + ^ +pkts_mask +); \ + +212 } + + ) + + @vnf_common/pipeline_be.h + +17 #iâdeà +__INCLUDE_PIPELINE_BE_H__ + + +18 + #__INCLUDE_PIPELINE_BE_H__ + + + ) + +20 + ~<¹e_pÜt_hdev.h +> + +21 + ~<¹e_pÜt_rg.h +> + +22 + ~<¹e_pÜt_äag.h +> + +23 + ~<¹e_pÜt_¿s.h +> + +24 + ~<¹e_pÜt_sched.h +> + +25 + ~<¹e_pÜt_sourû_sk.h +> + +26 + ~<¹e_pe.h +> + +28 + epe_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 + spe_pÜt__·¿ms + { + +39 +pe_pÜt__ty³ + + mty³ +; + +41 +¹e_pÜt_hdev_»ad_·¿ms + + mhdev +; + +42 +¹e_pÜt_rg_»ad_·¿ms + + mrg +; + +43 +¹e_pÜt_rg_muÉi_»ad_·¿ms + + mrg_muÉi +; + +44 +¹e_pÜt_rg_»ad_v4_äag_·¿ms + + mrg_v4_äag +; + +45 +¹e_pÜt_rg_»ad_v6_äag_·¿ms + + mrg_v6_äag +; + +46 +¹e_pÜt_sched_»ad_·¿ms + + msched +; + +47 +¹e_pÜt_sourû_·¿ms + + msourû +; + +48 } + m·¿ms +; + +49 +ut32_t + + mbur¡_size +; + +52 +le + * + +53 + $pe_pÜt__·¿ms_cÚvt +( +pe_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 +. +rg +; + +60 +PIPELINE_PORT_IN_RING_MULTI_READER +: + +61 (*è& +p +-> +·¿ms +. +rg_muÉi +; + +62 +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +63 (*è& +p +-> +·¿ms +. +rg_v4_äag +; + +64 +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +65 (*è& +p +-> +·¿ms +. +rg_v6_äag +; + +66 +PIPELINE_PORT_IN_SCHED_READER +: + +67 (*è& +p +-> +·¿ms +. +sched +; + +68 +PIPELINE_PORT_IN_SOURCE +: + +69 (*è& +p +-> +·¿ms +. +sourû +; + +71 +NULL +; + +73 + } +} + +75 +le + +¹e_pÜt__Ýs + * + +76 + $pe_pÜt__·¿ms_g_Ýs +( +pe_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_rg_»ad_Ýs +; + +83 +PIPELINE_PORT_IN_RING_MULTI_READER +: + +84 & +¹e_pÜt_rg_muÉi_»ad_Ýs +; + +85 +PIPELINE_PORT_IN_RING_READER_IPV4_FRAG +: + +86 & +¹e_pÜt_rg_»ad_v4_äag_Ýs +; + +87 +PIPELINE_PORT_IN_RING_READER_IPV6_FRAG +: + +88 & +¹e_pÜt_rg_»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 + epe_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 + spe_pÜt_out_·¿ms + { + +112 +pe_pÜt_out_ty³ + + mty³ +; + +114 +¹e_pÜt_hdev_wr_·¿ms + + mhdev +; + +115 +¹e_pÜt_hdev_wr_nodrÝ_·¿ms + + mhdev_nodrÝ +; + +116 +¹e_pÜt_rg_wr_·¿ms + + mrg +; + +117 +¹e_pÜt_rg_muÉi_wr_·¿ms + + mrg_muÉi +; + +118 +¹e_pÜt_rg_wr_nodrÝ_·¿ms + + mrg_nodrÝ +; + +119 +¹e_pÜt_rg_muÉi_wr_nodrÝ_·¿ms + + mrg_muÉi_nodrÝ +; + +120 +¹e_pÜt_rg_wr_v4_¿s_·¿ms + + mrg_v4_¿s +; + +121 +¹e_pÜt_rg_wr_v6_¿s_·¿ms + + mrg_v6_¿s +; + +122 +¹e_pÜt_sched_wr_·¿ms + + msched +; + +123 +¹e_pÜt_sk_·¿ms + + msk +; + +124 } + m·¿ms +; + +127 +le + * + +128 + $pe_pÜt_out_·¿ms_cÚvt +( +pe_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 +. +rg +; + +137 +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +138 (*è& +p +-> +·¿ms +. +rg_muÉi +; + +139 +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +140 (*è& +p +-> +·¿ms +. +rg_nodrÝ +; + +141 +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +142 (*è& +p +-> +·¿ms +. +rg_muÉi_nodrÝ +; + +143 +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +144 (*è& +p +-> +·¿ms +. +rg_v4_¿s +; + +145 +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +146 (*è& +p +-> +·¿ms +. +rg_v6_¿s +; + +147 +PIPELINE_PORT_OUT_SCHED_WRITER +: + +148 (*è& +p +-> +·¿ms +. +sched +; + +149 +PIPELINE_PORT_OUT_SINK +: + +150 (*è& +p +-> +·¿ms +. +sk +; + +152 +NULL +; + +154 + } +} + +156 +le + * + +157 + $pe_pÜt_out_·¿ms_g_Ýs +( +pe_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_rg_wr_Ýs +; + +166 +PIPELINE_PORT_OUT_RING_MULTI_WRITER +: + +167 & +¹e_pÜt_rg_muÉi_wr_Ýs +; + +168 +PIPELINE_PORT_OUT_RING_WRITER_NODROP +: + +169 & +¹e_pÜt_rg_wr_nodrÝ_Ýs +; + +170 +PIPELINE_PORT_OUT_RING_MULTI_WRITER_NODROP +: + +171 & +¹e_pÜt_rg_muÉi_wr_nodrÝ_Ýs +; + +172 +PIPELINE_PORT_OUT_RING_WRITER_IPV4_RAS +: + +173 & +¹e_pÜt_rg_wr_v4_¿s_Ýs +; + +174 +PIPELINE_PORT_OUT_RING_WRITER_IPV6_RAS +: + +175 & +¹e_pÜt_rg_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_sk_Ý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 + spe_·¿ms + { + +214 + mÇme +[ +PIPELINE_NAME_SIZE +]; + +216 +pe_pÜt__·¿ms + + mpÜt_ +[ +PIPELINE_MAX_PORT_IN +]; + +217 +pe_pÜt_out_·¿ms + + mpÜt_out +[ +PIPELINE_MAX_PORT_OUT +]; + +218 +¹e_rg + * + mmsgq_ +[ +PIPELINE_MAX_MSGQ_IN +]; + +219 +¹e_rg + * + mmsgq_out +[ +PIPELINE_MAX_MSGQ_OUT +]; + +221 +ut32_t + + mn_pÜts_ +; + +222 +ut32_t + + mn_pÜts_out +; + +223 +ut32_t + + mn_msgq +; + +225 + msock_id +; + +227 * + m¬gs_Çme +[ +PIPELINE_MAX_ARGS +]; + +228 * + m¬gs_v®ue +[ +PIPELINE_MAX_ARGS +]; + +229 +ut32_t + + mn_¬gs +; + +231 +ut32_t + + mlog_Ëv +; + +238 * (* + tpe_be_Ý_ +)( + tpe_·¿ms + * + t·¿ms +, + +239 * + t¬g +); + +241 (* + tpe_be_Ý_ä +)(* + tpe +); + +243 (* + tpe_be_Ý_run +)(* + tpe +); + +245 (* + tpe_be_Ý_tim +)(* + tpe +); + +247 (* + tpe_be_Ý_ack +)(* + tpe +, + +248 + tut32_t + + tpÜt_ +, + +249 + tut32_t + * + tpÜt_out +); + +251 + spe_be_Ýs + { + +252 +pe_be_Ý_ + +f_ +; + +253 +pe_be_Ý_ä + +f_ä +; + +254 +pe_be_Ý_run + +f_run +; + +255 +pe_be_Ý_tim + +f_tim +; + +256 +pe_be_Ý_ack + +f_ack +; + +260 + #PIPELINE_ARG_CHECK +( +exp +, +fmt +, ...) \ + +262 ià(!( +exp +)) { \ + +263 + `årtf +( +¡dr +, +fmt + "\n", ## +__VA_ARGS__ +); \ + +266 + } +} 0) + + ) + +268 + #PIPELINE_PARSE_ERR_INV_VAL +( +exp +, +£ùiÚ +, +y +, +v® +) \ + +269 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\":ntry \"%s\" " \ + +270 "ha v®id v®u(\"%s\")", +£ùiÚ +, +y +, +v® +) + + ) + +272 + #PIPELINE_PARSE_ERR_OUT_RNG +( +exp +, +£ùiÚ +, +y +, +v® +) \ + +273 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\":ntry \"%s\" " \ + +274 "v®ui ouoà¿ng(\"%s\")", +£ùiÚ +, +y +, +v® +) + + ) + +276 + #PIPELINE_PARSE_ERR_DUPLICATE +( +exp +, +£ùiÚ +, +y +) \ + +277 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": duplicated " \ + +278 "y \"%s\"", +£ùiÚ +, +y +) + + ) + +280 + #PIPELINE_PARSE_ERR_INV_ENT +( +exp +, +£ùiÚ +, +y +) \ + +281 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": invalidntry " \ + +282 "\"%s\"", +£ùiÚ +, +y +) + + ) + +284 + #PIPELINE_PARSE_ERR_MANDATORY +( +exp +, +£ùiÚ +, +y +) \ + +285 + `PIPELINE_ARG_CHECK +( +exp +, "Parserror in section \"%s\": mandatory " \ + +286 "y \"%s\" i missg", +£ùiÚ +, +y +) + + ) + + @vnf_common/thread.c + +17 + ~<¹e_commÚ.h +> + +18 + ~<¹e_cyþes.h +> + +19 + ~<¹e_pe.h +> + +21 + ~"pe_commÚ_be.h +" + +22 + ~"p.h +" + +23 + ~"th»ad.h +" + +25 #ià +APP_THREAD_HEADROOM_STATS_COLLECT + + +27 + #PIPELINE_RUN_REGULAR +( +th»ad +, +pe +) \ + +29 +ut64_t + +t0 + = + `¹e_rdtsc_´eci£ +(); \ + +30 +n_pkts + = + `¹e_pe_run +( +pe +-> +p +); \ + +32 ià( +n_pkts + == 0) { \ + +33 +ut64_t + +t1 + = + `¹e_rdtsc_´eci£ +(); \ + +35 +th»ad +-> +hdroom_cyþes + +ð +t1 + - +t0 +; \ + +37 } 0) + + ) + +40 + #PIPELINE_RUN_CUSTOM +( +th»ad +, +d©a +) \ + +42 +ut64_t + +t0 + = + `¹e_rdtsc_´eci£ +(); \ + +43 +n_pkts + = +d©a +-> + `f_run +(d©a-> +be +); \ + +45 ià( +n_pkts + == 0) { \ + +46 +ut64_t + +t1 + = + `¹e_rdtsc_´eci£ +(); \ + +48 +th»ad +-> +hdroom_cyþes + +ð +t1 + - +t0 +; \ + +50 } 0) + + ) + +54 + #PIPELINE_RUN_REGULAR +( +th»ad +, +pe +) \ + +55 + `¹e_pe_run +( +pe +-> +p +) + + ) + +57 + #PIPELINE_RUN_CUSTOM +( +th»ad +, +d©a +) \ + +58 +d©a +-> + `f_run +(d©a-> +be +) + + ) + +62 +le + * + +63 + $th»ad_msg_»cv +( +¹e_rg + * +r +) + +65 * +msg +; + +66 +¡©us + = + `¹e_rg_sc_dequeue +( +r +, & +msg +); + +68 ià( +¡©us + != 0) + +69 +NULL +; + +71 +msg +; + +72 + } +} + +74 +le + + +75 + $th»ad_msg_£nd +( +¹e_rg + * +r +, + +76 * +msg +) + +78 +¡©us +; + +81 +¡©us + = + `¹e_rg_¥_queue +( +r +, +msg +); + +82 } +¡©us + =ð- +ENOBUFS +); + +83 + } +} + +86 + $th»ad_pe_abË +( +p_th»ad_d©a + * +t +, + +87 +th»ad_pe_abË_msg_»q + * +»q +) + +89 +p_th»ad_pe_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 +-> +pe_id + = +»q +->pipeline_id; + +104 +p +-> +be + = +»q +->be; + +105 +p +-> +f_run + = +»q +->f_run; + +106 +p +-> +f_tim + = +»q +->f_timer; + +107 +p +-> +tim_³riod + = +»q +->timer_period; + +108 +p +-> +ddle + = 0; + +110 ià( +»q +-> +f_run + =ð +NULL +) + +111 +t +-> +n_»guÏr +++; + +113 +t +-> +n_cu¡om +++; + +116 + } +} + +119 + $th»ad_pe_di§bË +( +p_th»ad_d©a + * +t +, + +120 +th»ad_pe_di§bË_msg_»q + * +»q +) + +122 +ut32_t + +n_»guÏr + = + `RTE_MIN +( +t +->n_»guÏr, + `RTE_DIM +Ñ-> +»guÏr +)); + +123 +ut32_t + +n_cu¡om + = + `RTE_MIN +( +t +->n_cu¡om, + `RTE_DIM +Ñ-> +cu¡om +)); + +124 +ut32_t + +i +; + +127 +i + = 0; i < +n_»guÏr +; i++) { + +128 ià( +t +-> +»guÏr +[ +i +]. +pe_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_pe_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 +]. +pe_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_pe_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_pe_abË +( +t +, + +177 ( +th»ad_pe_abË_msg_»q + *è +»q +); + +178 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +182 +THREAD_MSG_REQ_PIPELINE_DISABLE +: { + +183 +r¥ +-> +¡©us + = + `th»ad_pe_di§bË +( +t +, + +184 ( +th»ad_pe_di§bË_msg_»q + *è +»q +); + +185 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +189 +THREAD_MSG_REQ_HEADROOM_READ +: { + +190 +th»ad_hdroom_»ad_msg_r¥ + * +r¥ + = + +191 ( +th»ad_hdroom_»ad_msg_r¥ + *) + +192 +»q +; + +194 +r¥ +-> +hdroom_¿tio + = +t +->headroom_ratio; + +195 +r¥ +-> +¡©us + = 0; + +196 + `th»ad_msg_£nd +( +t +-> +msgq_out +, +r¥ +); + +204 + } +} + +207 + $th»ad_hdroom_upd©e +( +p_th»ad_d©a + * +t +, +ut64_t + +time +) + +209 +ut64_t + +time_diff + = +time + - +t +-> +hdroom_time +; + +211 +t +-> +hdroom_¿tio + = + +212 ((è +t +-> +hdroom_cyþes +è/ ((è +time_diff +); + +214 +t +-> +hdroom_cyþes + = 0; + +215 +t +-> +hdroom_time + = + `¹e_rdtsc_´eci£ +(); + +216 + } +} + +219 + $p_th»ad +(* +¬g +) + +221 +p_·¿ms + * +p + = (p_·¿m *è +¬g +; + +222 +ut32_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 +ut32_t + +n_»guÏr + = + `RTE_MIN +( +t +->n_»guÏr, + `RTE_DIM +Ñ-> +»guÏr +)); + +227 +ut32_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_pe_d©a + * +d©a + = & +t +-> +»guÏr +[ +j +]; + +232 +pe + * +p + = +d©a +-> +be +; + +234 + `PIPELINE_RUN_REGULAR +( +t +, +p +); + +238 +j + = 0; j < +n_cu¡om +; j++) { + +239 +p_th»ad_pe_d©a + * +d©a + = & +t +-> +cu¡om +[ +j +]; + +241 + `PIPELINE_RUN_CUSTOM +( +t +, +d©a +); + +245 ià(( +i + & 0xF) == 0) { + +246 +ut64_t + +time + = + `¹e_g_tsc_cyþes +(); + +247 +ut64_t + +t_ddle + = +UINT64_MAX +; + +249 ià( +time + < +t +-> +ddle +) + +253 +j + = 0; j < +n_»guÏr +; j++) { + +254 +p_th»ad_pe_d©a + * +d©a + = + +255 & +t +-> +»guÏr +[ +j +]; + +256 +ut64_t + +p_ddle + = +d©a +-> +ddle +; + +258 ià( +p_ddle + <ð +time +) { + +259 +d©a +-> + `f_tim +(d©a-> +be +); + +260 +p_ddle + = +time + + +d©a +-> +tim_³riod +; + +261 +d©a +-> +ddle + = +p_ddle +; + +264 ià( +p_ddle + < +t_ddle +) + +265 +t_ddle + = +p_ddle +; + +269 +j + = 0; j < +n_cu¡om +; j++) { + +270 +p_th»ad_pe_d©a + * +d©a + = + +271 & +t +-> +cu¡om +[ +j +]; + +272 +ut64_t + +p_ddle + = +d©a +-> +ddle +; + +274 ià( +p_ddle + <ð +time +) { + +275 +d©a +-> + `f_tim +(d©a-> +be +); + +276 +p_ddle + = +time + + +d©a +-> +tim_³riod +; + +277 +d©a +-> +ddle + = +p_ddle +; + +280 ià( +p_ddle + < +t_ddle +) + +281 +t_ddle + = +p_ddle +; + +286 +ut64_t + +ddle + = +t +-> +th»ad_»q_ddle +; + +288 ià( +ddle + <ð +time +) { + +289 + `th»ad_msg_»q_hªdË +( +t +); + +290 + `th»ad_hdroom_upd©e +( +t +, +time +); + +291 +ddle + = +time + + +t +-> +tim_³riod +; + +292 +t +-> +th»ad_»q_ddle + = +ddle +; + +295 ià( +ddle + < +t_ddle +) + +296 +t_ddle + = +ddle +; + +300 +t +-> +ddle + = +t_ddle +; + +305 + } +} + + @vnf_common/thread.h + +17 #iâdeà +THREAD_H_ + + +18 + #THREAD_H_ + + + ) + +20 + ~"p.h +" + +21 + ~"pe_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_pe_abË_msg_»q + { + +42 +th»ad_msg_»q_ty³ + + mty³ +; + +44 +ut32_t + + mpe_id +; + +45 * + mbe +; + +46 +pe_be_Ý_run + + mf_run +; + +47 +pe_be_Ý_tim + + mf_tim +; + +48 +ut64_t + + mtim_³riod +; + +51 + sth»ad_pe_abË_msg_r¥ + { + +52 + m¡©us +; + +58 + sth»ad_pe_di§bË_msg_»q + { + +59 +th»ad_msg_»q_ty³ + + mty³ +; + +61 +ut32_t + + mpe_id +; + +64 + sth»ad_pe_di§bË_msg_r¥ + { + +65 + m¡©us +; + +71 + sth»ad_hdroom_»ad_msg_»q + { + +72 +th»ad_msg_»q_ty³ + + mty³ +; + +75 + sth»ad_hdroom_»ad_msg_r¥ + { + +76 + m¡©us +; + +78 + mhdroom_¿tio +; + + @vnf_common/thread_fe.c + +17 + ~<¹e_commÚ.h +> + +18 + ~<¹e_rg.h +> + +19 + ~<¹e_m®loc.h +> + +20 + ~<cmdle_rdle.h +> + +21 + ~<cmdle_·r£.h +> + +22 + ~<cmdle_·r£_num.h +> + +23 + ~<cmdle_·r£_¡rg.h +> + +24 + ~<cmdle_·r£_addr.h +> + +25 + ~<cmdle_·r£_haddr.h +> + +26 + ~<cmdle_sock.h +> + +27 + ~<cmdle.h +> + +29 + ~"th»ad.h +" + +30 + ~"th»ad_ã.h +" + +31 + ~"pe.h +" + +32 + ~"pe_commÚ_ã.h +" + +33 + ~"p.h +" + +35 +le + * + +36 + $th»ad_msg_£nd_»cv +( +p_·¿ms + * +p +, + +37 +ut32_t + +sock_id +, ut32_ +cÜe_id +, ut32_ +ht_id +, + +38 * +msg +, + +39 +ut32_t + +timeout_ms +) + +41 +¹e_rg + * +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_rg + * +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 +ut64_t + +hz + = + `¹e_g_tsc_hz +(); + +50 * +msg_»cv +; + +51 +ut64_t + +ddle +; + +52 +¡©us +; + +56 +¡©us + = + `¹e_rg_¥_queue +( +r_»q +, (*è +msg +); + +57 } +¡©us + =ð- +ENOBUFS +); + +60 +ddle + = ( +timeout_ms +) ? + +61 ( + `¹e_rdtsc +(è+ (( +hz + * +timeout_ms +) / 1000)) : + +62 +UINT64_MAX +; + +65 ià( + `¹e_rdtsc +(è> +ddle +) + +66 +NULL +; + +68 +¡©us + = + `¹e_rg_sc_dequeue +( +r_r¥ +, & +msg_»cv +); + +69 } +¡©us + != 0); + +71 +msg_»cv +; + +72 + } +} + +75 + $p_pe_abË +( +p_·¿ms + * +p +, + +76 +ut32_t + +sock_id +, + +77 +ut32_t + +cÜe_id +, + +78 +ut32_t + +hy³r_th_id +, + +79 +ut32_t + +pe_id +) + +81 +th»ad_pe_abË_msg_»q + * +»q +; + +82 +th»ad_pe_abË_msg_r¥ + * +r¥ +; + +83 +th»ad_id +; + +84 +p_pe_d©a + * +p +; + +85 +p_pe_·¿ms + * +p_·¿ms +; + +86 +pe_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_pe_d©a +( +p +, +pe_id +è=ð +NULL +) + +103 +p + = & +p +-> +pe_d©a +[ +pe_id +]; + +104 +p_·¿ms + = & +p +-> +pe_·¿ms +[ +pe_id +]; + +105 +p_ty³ + = + `p_pe_ty³_fd +( +p +, +p_·¿ms +-> +ty³ +); + +106 ià( +p_ty³ + =ð +NULL +) + +109 ià( +p +-> +abËd + == 1) + +112 +»q + = + `p_msg_®loc +( +p +); + +113 ià( +»q + =ð +NULL +) + +116 +»q +-> +ty³ + = +THREAD_MSG_REQ_PIPELINE_ENABLE +; + +117 +»q +-> +pe_id + = ipeline_id; + +118 +»q +-> +be + = +p +->be; + +119 +»q +-> +f_run + = +p_ty³ +-> +be_Ýs +->f_run; + +120 +»q +-> +f_tim + = +p_ty³ +-> +be_Ýs +->f_timer; + +121 +»q +-> +tim_³riod + = +p +->timer_period; + +123 +r¥ + = + `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_pe_di§bË +( +p_·¿ms + * +p +, + +140 +ut32_t + +sock_id +, + +141 +ut32_t + +cÜe_id +, + +142 +ut32_t + +hy³r_th_id +, + +143 +ut32_t + +pe_id +) + +145 +th»ad_pe_di§bË_msg_»q + * +»q +; + +146 +th»ad_pe_di§bË_msg_r¥ + * +r¥ +; + +147 +th»ad_id +; + +148 +p_pe_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_pe_d©a +( +p +, +pe_id +è=ð +NULL +) + +165 +p + = & +p +-> +pe_d©a +[ +pe_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 +-> +pe_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_hdroom +( +p_·¿ms + * +p +, + +195 +ut32_t + +sock_id +, + +196 +ut32_t + +cÜe_id +, + +197 +ut32_t + +hy³r_th_id +) + +199 +th»ad_hdroom_»ad_msg_»q + * +»q +; + +200 +th»ad_hdroom_»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¥ +-> +hdroom_¿tio + * 100); + +235 + `p_msg_ä +( +p +, +r¥ +); + +238 + } +} + +244 + scmd_pe_abË_»suÉ + { + +245 +cmdle_fixed_¡rg_t + + mt_¡rg +; + +246 +cmdle_fixed_¡rg_t + + mt_id_¡rg +; + +247 +cmdle_fixed_¡rg_t + + mpe_¡rg +; + +248 +ut32_t + + mpe_id +; + +249 +cmdle_fixed_¡rg_t + + mabË_¡rg +; + +253 + $cmd_pe_abË_·r£d +( + +254 * +·r£d_»suÉ +, + +255 +__¹e_unu£d + +cmdle + * +þ +, + +256 * +d©a +) + +258 +cmd_pe_abË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +259 +p_·¿ms + * +p + = +d©a +; + +260 +¡©us +; + +261 +ut32_t + +cÜe_id +, +sock_id +, +hy³r_th_id +; + +263 ià( + `·r£_pe_cÜe +(& +sock_id +, + +264 & +cÜe_id +, + +265 & +hy³r_th_id +, + +266 +·¿ms +-> +t_id_¡rg +) != 0) { + +267 + `´tf +("Command failed\n"); + +271 +¡©us + = + `p_pe_abË +( +p +, + +272 +sock_id +, + +273 +cÜe_id +, + +274 +hy³r_th_id +, + +275 +·¿ms +-> +pe_id +); + +277 ià( +¡©us + != 0) + +278 + `´tf +("Command failed\n"); + +279 + } +} + +281 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_abË_t_¡rg + = + +282 +TOKEN_STRING_INITIALIZER +( +cmd_pe_abË_»suÉ +, +t_¡rg +, "t"); + +284 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_abË_t_id_¡rg + = + +285 +TOKEN_STRING_INITIALIZER +( +cmd_pe_abË_»suÉ +, +t_id_¡rg +, + +286 +NULL +); + +288 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_abË_pe_¡rg + = + +289 +TOKEN_STRING_INITIALIZER +( +cmd_pe_abË_»suÉ +, +pe_¡rg +, + +292 +cmdle_·r£_tok_num_t + + gcmd_pe_abË_pe_id + = + +293 +TOKEN_NUM_INITIALIZER +( +cmd_pe_abË_»suÉ +, +pe_id +, + +294 +UINT32 +); + +296 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_abË_abË_¡rg + = + +297 +TOKEN_STRING_INITIALIZER +( +cmd_pe_abË_»suÉ +, +abË_¡rg +, + +300 +cmdle_·r£_¡_t + + gcmd_pe_abË + = { + +301 . +f + = +cmd_pe_abË_·r£d +, + +302 . + gd©a + = +NULL +, + +303 . + ghp_¡r + = "Enable ipeline on specified core", + +304 . + gtoks + = { + +305 (*)& +cmd_pe_abË_t_¡rg +, + +306 (*)& +cmd_pe_abË_t_id_¡rg +, + +307 (*)& +cmd_pe_abË_pe_¡rg +, + +308 (*)& +cmd_pe_abË_pe_id +, + +309 (*)& +cmd_pe_abË_abË_¡rg +, + +310 +NULL +, + +318 + scmd_pe_di§bË_»suÉ + { + +319 +cmdle_fixed_¡rg_t + + mt_¡rg +; + +320 +cmdle_fixed_¡rg_t + + mt_id_¡rg +; + +321 +cmdle_fixed_¡rg_t + + mpe_¡rg +; + +322 +ut32_t + + mpe_id +; + +323 +cmdle_fixed_¡rg_t + + mdi§bË_¡rg +; + +327 + $cmd_pe_di§bË_·r£d +( + +328 * +·r£d_»suÉ +, + +329 +__¹e_unu£d + +cmdle + * +þ +, + +330 * +d©a +) + +332 +cmd_pe_di§bË_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +333 +p_·¿ms + * +p + = +d©a +; + +334 +¡©us +; + +335 +ut32_t + +cÜe_id +, +sock_id +, +hy³r_th_id +; + +337 ià( + `·r£_pe_cÜe +(& +sock_id +, + +338 & +cÜe_id +, + +339 & +hy³r_th_id +, + +340 +·¿ms +-> +t_id_¡rg +) != 0) { + +341 + `´tf +("Command failed\n"); + +345 +¡©us + = + `p_pe_di§bË +( +p +, + +346 +sock_id +, + +347 +cÜe_id +, + +348 +hy³r_th_id +, + +349 +·¿ms +-> +pe_id +); + +351 ià( +¡©us + != 0) + +352 + `´tf +("Command failed\n"); + +353 + } +} + +355 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_di§bË_t_¡rg + = + +356 +TOKEN_STRING_INITIALIZER +( +cmd_pe_di§bË_»suÉ +, +t_¡rg +, "t"); + +358 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_di§bË_t_id_¡rg + = + +359 +TOKEN_STRING_INITIALIZER +( +cmd_pe_di§bË_»suÉ +, +t_id_¡rg +, + +360 +NULL +); + +362 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_di§bË_pe_¡rg + = + +363 +TOKEN_STRING_INITIALIZER +( +cmd_pe_di§bË_»suÉ +, + +364 +pe_¡rg +, "pipeline"); + +366 +cmdle_·r£_tok_num_t + + gcmd_pe_di§bË_pe_id + = + +367 +TOKEN_NUM_INITIALIZER +( +cmd_pe_di§bË_»suÉ +, +pe_id +, + +368 +UINT32 +); + +370 +cmdle_·r£_tok_¡rg_t + + gcmd_pe_di§bË_di§bË_¡rg + = + +371 +TOKEN_STRING_INITIALIZER +( +cmd_pe_di§bË_»suÉ +, +di§bË_¡rg +, + +374 +cmdle_·r£_¡_t + + gcmd_pe_di§bË + = { + +375 . +f + = +cmd_pe_di§bË_·r£d +, + +376 . + gd©a + = +NULL +, + +377 . + ghp_¡r + = "Disable ipeline on specified core", + +378 . + gtoks + = { + +379 (*)& +cmd_pe_di§bË_t_¡rg +, + +380 (*)& +cmd_pe_di§bË_t_id_¡rg +, + +381 (*)& +cmd_pe_di§bË_pe_¡rg +, + +382 (*)& +cmd_pe_di§bË_pe_id +, + +383 (*)& +cmd_pe_di§bË_di§bË_¡rg +, + +384 +NULL +, + +393 + scmd_th»ad_hdroom_»suÉ + { + +394 +cmdle_fixed_¡rg_t + + mt_¡rg +; + +395 +cmdle_fixed_¡rg_t + + mt_id_¡rg +; + +396 +cmdle_fixed_¡rg_t + + mhdroom_¡rg +; + +400 + $cmd_th»ad_hdroom_·r£d +( + +401 * +·r£d_»suÉ +, + +402 +__¹e_unu£d + +cmdle + * +þ +, + +403 * +d©a +) + +405 +cmd_th»ad_hdroom_»suÉ + * +·¿ms + = +·r£d_»suÉ +; + +406 +p_·¿ms + * +p + = +d©a +; + +407 +¡©us +; + +408 +ut32_t + +cÜe_id +, +sock_id +, +hy³r_th_id +; + +410 ià( + `·r£_pe_cÜe +(& +sock_id +, + +411 & +cÜe_id +, + +412 & +hy³r_th_id +, + +413 +·¿ms +-> +t_id_¡rg +) != 0) { + +414 + `´tf +("Command failed\n"); + +418 +¡©us + = + `p_th»ad_hdroom +( +p +, + +419 +sock_id +, + +420 +cÜe_id +, + +421 +hy³r_th_id +); + +423 ià( +¡©us + != 0) + +424 + `´tf +("Command failed\n"); + +425 + } +} + +427 +cmdle_·r£_tok_¡rg_t + + gcmd_th»ad_hdroom_t_¡rg + = + +428 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_hdroom_»suÉ +, + +429 +t_¡rg +, "t"); + +431 +cmdle_·r£_tok_¡rg_t + + gcmd_th»ad_hdroom_t_id_¡rg + = + +432 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_hdroom_»suÉ +, + +433 +t_id_¡rg +, +NULL +); + +435 +cmdle_·r£_tok_¡rg_t + + gcmd_th»ad_hdroom_hdroom_¡rg + = + +436 +TOKEN_STRING_INITIALIZER +( +cmd_th»ad_hdroom_»suÉ +, + +437 +hdroom_¡rg +, "headroom"); + +439 +cmdle_·r£_¡_t + + gcmd_th»ad_hdroom + = { + +440 . +f + = +cmd_th»ad_hdroom_·r£d +, + +441 . + gd©a + = +NULL +, + +442 . + ghp_¡r + = "Displayhread headroom", + +443 . + gtoks + = { + +444 (*)& +cmd_th»ad_hdroom_t_¡rg +, + +445 (*)& +cmd_th»ad_hdroom_t_id_¡rg +, + +446 (*)& +cmd_th»ad_hdroom_hdroom_¡rg +, + +447 +NULL +, + +452 +cmdle_·r£_ùx_t + + gth»ad_cmds +[] = { + +453 ( +cmdle_·r£_¡_t + *è& +cmd_pe_abË +, + +454 ( +cmdle_·r£_¡_t + *è& +cmd_pe_di§bË +, + +455 ( +cmdle_·r£_¡_t + *è& +cmd_th»ad_hdroom +, + +456 +NULL +, + +460 + $p_pe_th»ad_cmd_push +( +p_·¿ms + * +p +) + +462 +ut32_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 + * ( +cmdle_·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 +le + +¹e_rg + * + +21 + $p_th»ad_msgq__g +( +p_·¿ms + * +p +, + +22 +ut32_t + +sock_id +, ut32_ +cÜe_id +, ut32_ +ht_id +) + +24 +msgq_Çme +[32]; + +25 +ssize_t + +·¿m_idx +; + +27 + `¢´tf +( +msgq_Çme +, (msgq_name), + +28 "MSGQ-REQ-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +29 +sock_id +, + +30 +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 +le + +¹e_rg + * + +41 + $p_th»ad_msgq_out_g +( +p_·¿ms + * +p +, + +42 +ut32_t + +sock_id +, ut32_ +cÜe_id +, ut32_ +ht_id +) + +44 +msgq_Çme +[32]; + +45 +ssize_t + +·¿m_idx +; + +47 + `¢´tf +( +msgq_Çme +, (msgq_name), + +48 "MSGQ-RSP-CORE-s%" +PRIu32 + "c%" PRIu32 "%s", + +49 +sock_id +, + +50 +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_pe_th»ad_cmd_push +( +p_·¿ms + * +p +); + +65 +p_pe_abË +( +p_·¿ms + * +p +, + +66 +ut32_t + +cÜe_id +, + +67 +ut32_t + +sock_id +, + +68 +ut32_t + +hy³r_th_id +, + +69 +ut32_t + +pe_id +); + +72 +p_pe_di§bË +( +p_·¿ms + * +p +, + +73 +ut32_t + +cÜe_id +, + +74 +ut32_t + +sock_id +, + +75 +ut32_t + +hy³r_th_id +, + +76 +ut32_t + +pe_id +); + +79 +p_th»ad_hdroom +( +p_·¿ms + * +p +, + +80 +ut32_t + +cÜe_id +, + +81 +ut32_t + +sock_id +, + +82 +ut32_t + +hy³r_th_id +); + + @vnf_common/vnf_common.c + +17 + ~<¡dt.h +> + +18 + ~<¡dio.h +> + +19 + ~"vnf_commÚ.h +" + +20 + ~"pe_¬picmp_be.h +" + +21 #iâdeà +VNF_ACL + + +22 + ~"lib_¬p.h +" + +25 +ut8_t + + g_pÜt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +26 +ut8_t + + g´v_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +27 +ut8_t + + gpub_to_´v_m +[ +PIPELINE_MAX_PORT_IN +]; + +28 +ut8_t + + g´v__pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +29 +ut8_t + + g´v_que_pÜt_dex +[ +PIPELINE_MAX_PORT_IN +]; + +30 +ut8_t + + g_pÜt_eg»ss_´v +[ +PIPELINE_MAX_PORT_IN +]; + +32 +ut8_t + + $g__pÜt_d +( +ut8_t + +_pÜt_id +) + +34 +_pÜt_d_a +[ +_pÜt_id +]; + +35 + } +} + +37 +ut8_t + + $is_phy_pÜt_´iv +( +ut16_t + +phy_pÜt +) + +39 +_pÜt_d_a +[ +phy_pÜt +]; + +40 + } +} + +42 +ut8_t + + $is_pÜt_dex_´iv +( +ut16_t + +phy_pÜt +) + +44 +_pÜt_eg»ss_´v +[ +phy_pÜt +]; + +45 + } +} + +47 +ut32_t + + $g_´v_to_pub_pÜt +( +ut32_t + * +_addr +, +ut8_t + +ty³ +) + +49 +ut32_t + +de¡_if + = 0xff; + +51 +ty³ +) { + +54 +ut32_t + +nh +; + +55 +nh + = + `g_nh +( +_addr +[0], & +de¡_if +); + +57 ià( +nh +) + +58 +de¡_if +; + +64 +ut8_t + +nhv6 +[16]; + +65 + `g_nh_v6 +(( +ut8_t + *) +_addr +, & +de¡_if +, & +nhv6 +[0]); + +66 ià( +de¡_if + != 0xff) + +67 +de¡_if +; + +73 + } +} + +75 +ut32_t + + $g_pub_to_´v_pÜt +( +ut32_t + * +_addr +, +ut8_t + +ty³ +) + +77 +ut32_t + +de¡_if + = 0xff; + +79 +ty³ +) { + +82 +ut32_t + +nh +; + +83 +nh + = + `g_nh +( +_addr +[0], & +de¡_if +); + +85 ià( +nh +) + +86 +de¡_if +; + +92 +ut8_t + +nhv6 +[16]; + +93 + `g_nh_v6 +(( +ut8_t + *) +_addr +, & +de¡_if +, & +nhv6 +[0]); + +94 ià( +de¡_if + != 0xff) + +95 +de¡_if +; + +101 + } +} + +103 + $show_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 +ut8_t + +i + = 0, +j + = 0; + +111 + `´tf +("\nprv_to_pub_map: "); + +112 +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +113 ià( +´v_to_pub_m +[ +i +] != 0xff) + +114 + `´tf +("(%d,%dè ", +i +, +´v_to_pub_m +[i]); + +117 + `´tf +("\npub_to_prv_map: "); + +118 +i + = 0; i < +PIPELINE_MAX_PORT_IN +; i++) { + +119 ià( +pub_to_´v_m +[ +i +] != 0xff) + +120 + `´tf +("(%d,%dè ", +i +, +pub_to_´v_m +[i]); + +123 + `´tf +("\n%dÁr PÜt MAC Li¡\n", +lk_hw_addr_¬¿y_idx +); + +124 +j + = 0; j < +lk_hw_addr_¬¿y_idx +; j++) { + +125 +h_addr + * +lk_hw_addr + = + `g_lk_hw_addr +( +j +); + +127 +i + = 0; i < 6; i++) + +128 + `´tf +(" %02x ", (( +h_addr + *) +lk_hw_addr +)-> +addr_bys +[ +i +]); + +129 + `´tf +("\n"); + +131 + } +} + +133 + $im +(* +put +) + +135 +i +, +j + = 0; + +136 +Ën + = + `¡¾ +( +put +); + +137 +»suÉ +[ +Ën + + 1]; + +139 + `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_pe.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 +ut8_t + +g__pÜt_d +(ut8_ +_pÜt_id +); + +62 +ut8_t + +is_phy_pÜt_´iv +( +ut16_t + +phy_pÜt +); + +63 +ut32_t + +g_´v_to_pub_pÜt +(ut32_* +_addr +, +ut8_t + +ty³ +); + +64 +ut32_t + +g_pub_to_´v_pÜt +(ut32_* +_addr +, +ut8_t + +ty³ +); + +66 +le + + $drÝ_pkt +( +ut32_t + +pkt_num +, +ut64_t + * +mask +) + +68 * +mask + ^ð1LLU << +pkt_num +; + +69 + } +} + +71 +ut8_t + +_pÜt_d_a +[ +PIPELINE_MAX_PORT_IN +]; + +72 +ut8_t + +´v_to_pub_m +[ +PIPELINE_MAX_PORT_IN +]; + +73 +ut8_t + +pub_to_´v_m +[ +PIPELINE_MAX_PORT_IN +]; + +74 +ut8_t + +´v__pÜt_a +[ +PIPELINE_MAX_PORT_IN +]; + +76 +ut32_t + +lk_hw_addr_¬¿y_idx +; + +78 + s¹e_pÜt_ + { + +80 +¹e_pÜt__Ýs + + mÝs +; + +81 +¹e_pe_pÜt__aùiÚ_hªdËr + + mf_aùiÚ +; + +82 * + m¬g_ah +; + +83 +ut32_t + + mbur¡_size +; + +86 +ut32_t + + mbË_id +; + +89 * + mh_pÜt +; + +92 +¹e_pÜt_ + * + mÃxt +; + +95 +ut64_t + + mn_pkts_drݳd_by_ah +; + +98 + s¹e_pÜt_out + { + +100 +¹e_pÜt_out_Ýs + + mÝs +; + +101 +¹e_pe_pÜt_out_aùiÚ_hªdËr + + mf_aùiÚ +; + +102 * + m¬g_ah +; + +105 * + mh_pÜt +; + +108 +ut64_t + + mn_pkts_drݳd_by_ah +; + +111 + s¹e_bË + { + +113 +¹e_bË_Ýs + + mÝs +; + +114 +¹e_pe_bË_aùiÚ_hªdËr_h + + mf_aùiÚ_h +; + +115 +¹e_pe_bË_aùiÚ_hªdËr_miss + + mf_aùiÚ_miss +; + +116 * + m¬g_ah +; + +117 +¹e_pe_bË_y + * + mdeçuÉ_y +; + +118 +ut32_t + + my_size +; + +120 +ut32_t + + mbË_Ãxt_id +; + +121 +ut32_t + + mbË_Ãxt_id_v®id +; + +124 * + mh_bË +; + +127 +ut64_t + + mn_pkts_drݳd_by_lkp_h_ah +; + +128 +ut64_t + + mn_pkts_drݳd_by_lkp_miss_ah +; + +129 +ut64_t + + mn_pkts_drݳd_lkp_h +; + +130 +ut64_t + + mn_pkts_drݳd_lkp_miss +; + +134 + s¹e_pe + { + +136 + mÇme +[ +RTE_PIPELINE_MAX_NAME_SZ +]; + +137 + msock_id +; + +138 +ut32_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Ë + + mbËs +[ +RTE_PIPELINE_TABLE_MAX +]; + +146 +ut32_t + + mnum_pÜts_ +; + +147 +ut32_t + + mnum_pÜts_out +; + +148 +ut32_t + + mnum_bËs +; + +151 +ut64_t + + mabËd_pÜt__mask +; + +152 +¹e_pÜt_ + * + mpÜt__Ãxt +; + +155 +¹e_mbuf + * + mpkts +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +156 +¹e_pe_bË_y + * + ms +[ +RTE_PORT_IN_BURST_SIZE_MAX +]; + +157 +ut64_t + + maùiÚ_mask0 +[ +RTE_PIPELINE_ACTIONS +]; + +158 +ut64_t + + maùiÚ_mask1 +[ +RTE_PIPELINE_ACTIONS +]; + +159 +ut64_t + + mpkts_mask +; + +160 +ut64_t + + mn_pkts_ah_drÝ +; + +161 +ut64_t + + mpkts_drÝ_mask +; + +162 } + g__¹e_ÿche_®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 +ut32_t + + mtx_bur¡_sz +; + +170 +ut16_t + + mtx_buf_couÁ +; + +171 +ut64_t + + mbsz_mask +; + +172 +ut16_t + + mqueue_id +; + +173 +ut8_t + + mpÜt_id +; + +175 + s¹e_pÜt_hdev_»ad + { + +176 +¹e_pÜt__¡©s + + m¡©s +; + +178 +ut16_t + + mqueue_id +; + +179 +ut8_t + + mpÜt_id +; + +181 + s¹e_pÜt_rg_wr + { + +182 +¹e_pÜt_out_¡©s + + m¡©s +; + +184 +¹e_mbuf + * + mtx_buf +[2 * +RTE_PORT_IN_BURST_SIZE_MAX +]; + +185 +¹e_rg + * + mrg +; + +186 +ut32_t + + mtx_bur¡_sz +; + +187 +ut32_t + + mtx_buf_couÁ +; + +188 +ut64_t + + mbsz_mask +; + +189 +ut32_t + + mis_muÉi +; + +191 + s¹e_pÜt_rg_»ad + { + +192 +¹e_pÜt__¡©s + + m¡©s +; + +194 +¹e_rg + * + mrg +; + +197 +ut8_t + +g__pÜt_d +(ut8_ +_pÜt_id +); + +198 +ut8_t + +is_phy_pÜt_´iv +( +ut16_t + +phy_pÜt +); + +199 +ut8_t + +is_pÜt_dex_´iv +( +ut16_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_defed + + +26 +__sockËn_t + + tsockËn_t +; + +27 + #__sockËn_t_defed + + + ) + +30 +__BEGIN_DECLS + + +34 +_addr_t + + $_addr + (cÚ¡ * +__ý +è +__THROW +; + +37 +_addr_t + + $_Êaof + ( +_addr + +__ +è +__THROW +; + +41 +_addr + + $_makddr + ( +_addr_t + +__Ãt +, in_addr_ +__ho¡ +) + +42 +__THROW +; + +45 +_addr_t + + $_Ãtof + ( +_addr + +__ +è +__THROW +; + +49 +_addr_t + + $_Ã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Ú¡ * +__ý +, +__bs +, + +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 + ~<bs/ty³s.h +> + +28 + g__BEGIN_DECLS + + +30 #iâdeà +_ISb + + +39 + ~<dn.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à +defed + +__USE_EXTERN_INLINES + + +91 + #__isùy³_f +( +ty³ +) \ + +92 +__exº_le + \ + +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¥rt +); + +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à +defed + +__USE_MISC + || defed +__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 ( +__exnsiÚ__ + \ + +165 ({ +__»s +; \ + +166 ià( ( +c +) > 1) \ + +168 ià( + `__but_cÚ¡ªt_p + ( +c +)) \ + +170 +__c + = ( +c +); \ + +171 +__»s + = +__c + < -128 || __ø> 255 ? __ø: ( +a +)[__c]; \ + +174 +__»s + = +f + +¬gs +; \ + +177 +__»s + = ( +a +)[(è( +c +)]; \ + +178 +__»s +; + } +})) + + ) + +180 #ià! +defed + +__NO_CTYPE + + +181 #ifdeà +__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à +defed + +__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¥rt +( +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º_le + + +215 + `__NTH + ( + $tÞow + ( +__c +)) + +217 +__c + >ð-128 && __ø< 256 ? (* + `__ùy³_tÞow_loc + ())[__c] : __c; + +218 + } +} + +220 +__exº_le + + +221 +__NTH + ( + $touµ + ( +__c +)) + +223 +__c + >ð-128 && __ø< 256 ? (* + `__ùy³_touµ_loc + ())[__c] : __c; + +224 + } +} + +227 #ià +__GNUC__ + >ð2 && +defed + +__OPTIMIZE__ + && !defed +__ý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à +defed + +__USE_MISC + || defed +__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 + ~<xloÿË.h +> + +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¥rt_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 && +defed + +__OPTIMIZE__ + && !defed +__ý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¥rt_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¥rt_l +( +c +, +l +è + `__i¥rt_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 + ~<bs/ºo.h +> + +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à +defed + +__USE_GNU + || defed +__Ãed_rÜ_t + + +67 #iâdeà +__rÜ_t_defed + + +68 + trÜ_t +; + +69 + #__rÜ_t_defed + 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 + $backaû + (** +__¬¿y +, +__size +è + `__nÚnuÎ + ((1)); + +32 ** + $backaû_symbÞs + (*cÚ¡ * +__¬¿y +, +__size +) + +33 +__THROW + + `__nÚnuÎ + ((1)); + +38 + $backaû_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 + ~<bs/ty³s.h +> + +35 + ~<bs/fú.h +> + +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_defed + + +50 +__mode_t + + tmode_t +; + +51 + #__mode_t_defed + + + ) + +54 #iâdeà +__off_t_defed + + +55 #iâdeà +__USE_FILE_OFFSET64 + + +56 +__off_t + + toff_t +; + +58 +__off64_t + + toff_t +; + +60 + #__off_t_defed + + + ) + +63 #ià +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +64 +__off64_t + + toff64_t +; + +65 + #__off64_t_defed + + + ) + +68 #iâdeà +__pid_t_defed + + +69 +__pid_t + + tpid_t +; + +70 + #__pid_t_defed + + + ) + +74 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +75 + #__Ãed_time¥ec + + + ) + +76 + ~<time.h +> + +77 + ~<bs/¡©.h +> + +79 + #S_IFMT + +__S_IFMT + + + ) + +80 + #S_IFDIR + +__S_IFDIR + + + ) + +81 + #S_IFCHR + +__S_IFCHR + + + ) + +82 + #S_IFBLK + +__S_IFBLK + + + ) + +83 + #S_IFREG + +__S_IFREG + + + ) + +84 #ifdeà +__S_IFIFO + + +85 + #S_IFIFO + +__S_IFIFO + + + ) + +87 #ifdeà +__S_IFLNK + + +88 + #S_IFLNK + +__S_IFLNK + + + ) + +90 #ià( +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 +è&& defed +__S_IFSOCK + + +91 + #S_IFSOCK + +__S_IFSOCK + + + ) + +96 + #S_ISUID + +__S_ISUID + + + ) + +97 + #S_ISGID + +__S_ISGID + + + ) + +99 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +101 + #S_ISVTX + +__S_ISVTX + + + ) + +104 + #S_IRUSR + +__S_IREAD + + + ) + +105 + #S_IWUSR + +__S_IWRITE + + + ) + +106 + #S_IXUSR + +__S_IEXEC + + + ) + +108 + #S_IRWXU + ( +__S_IREAD +| +__S_IWRITE +| +__S_IEXEC +) + + ) + +110 + #S_IRGRP + ( +S_IRUSR + >> 3è + + ) + +111 + #S_IWGRP + ( +S_IWUSR + >> 3è + + ) + +112 + #S_IXGRP + ( +S_IXUSR + >> 3è + + ) + +114 + #S_IRWXG + ( +S_IRWXU + >> 3) + + ) + +116 + #S_IROTH + ( +S_IRGRP + >> 3è + + ) + +117 + #S_IWOTH + ( +S_IWGRP + >> 3è + + ) + +118 + #S_IXOTH + ( +S_IXGRP + >> 3è + + ) + +120 + #S_IRWXO + ( +S_IRWXG + >> 3) + + ) + +123 #ifdef +__USE_MISC + + +124 #iâdeà +R_OK + + +127 + #R_OK + 4 + + ) + +128 + #W_OK + 2 + + ) + +129 + #X_OK + 1 + + ) + +130 + #F_OK + 0 + + ) + +135 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +136 + #SEEK_SET + 0 + + ) + +137 + #SEEK_CUR + 1 + + ) + +138 + #SEEK_END + 2 + + ) + +146 +fú + ( +__fd +, +__cmd +, ...); + +155 #iâdeà +__USE_FILE_OFFSET64 + + +156 + $Ý + (cÚ¡ * +__fe +, +__oæag +, ...è + `__nÚnuÎ + ((1)); + +158 #ifdeà +__REDIRECT + + +159 + `__REDIRECT + ( +Ý +, (cÚ¡ * +__fe +, +__oæag +, ...), +Ý64 +) + +160 + `__nÚnuÎ + ((1)); + +162 + #Ý + +Ý64 + + + ) + +165 #ifdeà +__USE_LARGEFILE64 + + +166 + $Ý64 + (cÚ¡ * +__fe +, +__oæag +, ...è + `__nÚnuÎ + ((1)); + +169 #ifdeà +__USE_ATFILE + + +179 #iâdeà +__USE_FILE_OFFSET64 + + +180 + $Ý© + ( +__fd +, cÚ¡ * +__fe +, +__oæag +, ...) + +181 + `__nÚnuÎ + ((2)); + +183 #ifdeà +__REDIRECT + + +184 + `__REDIRECT + ( +Ý© +, ( +__fd +, cÚ¡ * +__fe +, +__oæag +, + +185 ...), +Ý©64 +è + `__nÚnuÎ + ((2)); + +187 + #Ý© + +Ý©64 + + + ) + +190 #ifdeà +__USE_LARGEFILE64 + + +191 + $Ý©64 + ( +__fd +, cÚ¡ * +__fe +, +__oæag +, ...) + +192 + `__nÚnuÎ + ((2)); + +201 #iâdeà +__USE_FILE_OFFSET64 + + +202 + $üt + (cÚ¡ * +__fe +, +mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +204 #ifdeà +__REDIRECT + + +205 + `__REDIRECT + ( +üt +, (cÚ¡ * +__fe +, +mode_t + +__mode +), + +206 +üt64 +è + `__nÚnuÎ + ((1)); + +208 + #üt + +üt64 + + + ) + +211 #ifdeà +__USE_LARGEFILE64 + + +212 + $üt64 + (cÚ¡ * +__fe +, +mode_t + +__mode +è + `__nÚnuÎ + ((1)); + +215 #ià! +defed + +F_LOCK + && (defed +__USE_MISC + || (defed +__USE_XOPEN_EXTENDED + \ + +216 && ! +defed + +__USE_POSIX +)) + +225 + #F_ULOCK + 0 + + ) + +226 + #F_LOCK + 1 + + ) + +227 + #F_TLOCK + 2 + + ) + +228 + #F_TEST + 3 + + ) + +230 #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 && +defed + +__fÜtify_funùiÚ + \ + +288 && +defed + +__va_¬g_·ck_Ën + + +289 + ~<bs/fú2.h +> + +292 +__END_DECLS + + + @/usr/include/getopt.h + +19 #iâdeà +_GETOPT_H + + +21 #iâdeà +__Ãed_gÝt + + +22 + #_GETOPT_H + 1 + + ) + +32 #ià! +defed + +__GNU_LIBRARY__ + + +33 + ~<ùy³.h +> + +36 #iâdeà +__THROW + + +37 #iâdeà +__GNUC_PREREQ + + +38 + #__GNUC_PREREQ +( +maj +, +m +è(0) + + ) + +40 #ià +defed + +__ýlu¥lus + && +__GNUC_PREREQ + (2,8) + +41 + #__THROW + + `throw + () + + ) + +43 + #__THROW + + + ) + +47 #ifdef +__ýlu¥lus + + +57 * +Ýrg +; + +71 +Ýtd +; + +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_¬gumt + 0 + + ) + +117 + #»qued_¬gumt + 1 + + ) + +118 + #ÝtiÚ®_¬gumt + 2 + + ) + +146 #ifdeà +__GNU_LIBRARY__ + + +150 +gÝt + ( +___¬gc +, *cÚ¡ * +___¬gv +, cÚ¡ * +__shÜtÝts +) + +151 +__THROW +; + +153 #ià +defed + +__Ãed_gÝt + && defed +__USE_POSIX2 + \ + +154 && ! +defed + + g__USE_POSIX_IMPLICITLY + && !defed + 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Úgd +) + +176 +__THROW +; + +177 +gÝt_lÚg_Úly + ( +___¬gc +, *cÚ¡ * +___¬gv +, + +178 cÚ¡ * +__shÜtÝts +, + +179 cÚ¡ +ÝtiÚ + * +__lÚgÝts +, * +__lÚgd +) + +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 + ~<¡dt.h +> + +30 #iâdeà +____gwch¬_t_defed + + +31 #ifdeà +__ýlu¥lus + + +32 + #__gwch¬_t + +wch¬_t + + + ) + +33 #ià +defed + +__WCHAR_TYPE__ + + +34 +__WCHAR_TYPE__ + + t__gwch¬_t +; + +36 + #__Ãed_wch¬_t + + + ) + +37 + ~<¡ddef.h +> + +38 +wch¬_t + + t__gwch¬_t +; + +40 + #____gwch¬_t_defed + 1 + + ) + +43 #ià +__WORDSIZE + == 64 + +44 + #__PRI64_PREFIX + "l" + + ) + +45 + #__PRIPTR_PREFIX + "l" + + ) + +47 + #__PRI64_PREFIX + "Î" + + ) + +48 + #__PRIPTR_PREFIX + + + ) + +54 + #PRId8 + "d" + + ) + +55 + #PRId16 + "d" + + ) + +56 + #PRId32 + "d" + + ) + +57 + #PRId64 + +__PRI64_PREFIX + "d" + + ) + +59 + #PRIdLEAST8 + "d" + + ) + +60 + #PRIdLEAST16 + "d" + + ) + +61 + #PRIdLEAST32 + "d" + + ) + +62 + #PRIdLEAST64 + +__PRI64_PREFIX + "d" + + ) + +64 + #PRIdFAST8 + "d" + + ) + +65 + #PRIdFAST16 + +__PRIPTR_PREFIX + "d" + + ) + +66 + #PRIdFAST32 + +__PRIPTR_PREFIX + "d" + + ) + +67 + #PRIdFAST64 + +__PRI64_PREFIX + "d" + + ) + +70 + #PRIi8 + "i" + + ) + +71 + #PRIi16 + "i" + + ) + +72 + #PRIi32 + "i" + + ) + +73 + #PRIi64 + +__PRI64_PREFIX + "i" + + ) + +75 + #PRIiLEAST8 + "i" + + ) + +76 + #PRIiLEAST16 + "i" + + ) + +77 + #PRIiLEAST32 + "i" + + ) + +78 + #PRIiLEAST64 + +__PRI64_PREFIX + "i" + + ) + +80 + #PRIiFAST8 + "i" + + ) + +81 + #PRIiFAST16 + +__PRIPTR_PREFIX + "i" + + ) + +82 + #PRIiFAST32 + +__PRIPTR_PREFIX + "i" + + ) + +83 + #PRIiFAST64 + +__PRI64_PREFIX + "i" + + ) + +86 + #PRIo8 + "o" + + ) + +87 + #PRIo16 + "o" + + ) + +88 + #PRIo32 + "o" + + ) + +89 + #PRIo64 + +__PRI64_PREFIX + "o" + + ) + +91 + #PRIoLEAST8 + "o" + + ) + +92 + #PRIoLEAST16 + "o" + + ) + +93 + #PRIoLEAST32 + "o" + + ) + +94 + #PRIoLEAST64 + +__PRI64_PREFIX + "o" + + ) + +96 + #PRIoFAST8 + "o" + + ) + +97 + #PRIoFAST16 + +__PRIPTR_PREFIX + "o" + + ) + +98 + #PRIoFAST32 + +__PRIPTR_PREFIX + "o" + + ) + +99 + #PRIoFAST64 + +__PRI64_PREFIX + "o" + + ) + +102 + #PRIu8 + "u" + + ) + +103 + #PRIu16 + "u" + + ) + +104 + #PRIu32 + "u" + + ) + +105 + #PRIu64 + +__PRI64_PREFIX + "u" + + ) + +107 + #PRIuLEAST8 + "u" + + ) + +108 + #PRIuLEAST16 + "u" + + ) + +109 + #PRIuLEAST32 + "u" + + ) + +110 + #PRIuLEAST64 + +__PRI64_PREFIX + "u" + + ) + +112 + #PRIuFAST8 + "u" + + ) + +113 + #PRIuFAST16 + +__PRIPTR_PREFIX + "u" + + ) + +114 + #PRIuFAST32 + +__PRIPTR_PREFIX + "u" + + ) + +115 + #PRIuFAST64 + +__PRI64_PREFIX + "u" + + ) + +118 + #PRIx8 + "x" + + ) + +119 + #PRIx16 + "x" + + ) + +120 + #PRIx32 + "x" + + ) + +121 + #PRIx64 + +__PRI64_PREFIX + "x" + + ) + +123 + #PRIxLEAST8 + "x" + + ) + +124 + #PRIxLEAST16 + "x" + + ) + +125 + #PRIxLEAST32 + "x" + + ) + +126 + #PRIxLEAST64 + +__PRI64_PREFIX + "x" + + ) + +128 + #PRIxFAST8 + "x" + + ) + +129 + #PRIxFAST16 + +__PRIPTR_PREFIX + "x" + + ) + +130 + #PRIxFAST32 + +__PRIPTR_PREFIX + "x" + + ) + +131 + #PRIxFAST64 + +__PRI64_PREFIX + "x" + + ) + +134 + #PRIX8 + "X" + + ) + +135 + #PRIX16 + "X" + + ) + +136 + #PRIX32 + "X" + + ) + +137 + #PRIX64 + +__PRI64_PREFIX + "X" + + ) + +139 + #PRIXLEAST8 + "X" + + ) + +140 + #PRIXLEAST16 + "X" + + ) + +141 + #PRIXLEAST32 + "X" + + ) + +142 + #PRIXLEAST64 + +__PRI64_PREFIX + "X" + + ) + +144 + #PRIXFAST8 + "X" + + ) + +145 + #PRIXFAST16 + +__PRIPTR_PREFIX + "X" + + ) + +146 + #PRIXFAST32 + +__PRIPTR_PREFIX + "X" + + ) + +147 + #PRIXFAST64 + +__PRI64_PREFIX + "X" + + ) + +151 + #PRIdMAX + +__PRI64_PREFIX + "d" + + ) + +152 + #PRIiMAX + +__PRI64_PREFIX + "i" + + ) + +153 + #PRIoMAX + +__PRI64_PREFIX + "o" + + ) + +154 + #PRIuMAX + +__PRI64_PREFIX + "u" + + ) + +155 + #PRIxMAX + +__PRI64_PREFIX + "x" + + ) + +156 + #PRIXMAX + +__PRI64_PREFIX + "X" + + ) + +160 + #PRIdPTR + +__PRIPTR_PREFIX + "d" + + ) + +161 + #PRIiPTR + +__PRIPTR_PREFIX + "i" + + ) + +162 + #PRIoPTR + +__PRIPTR_PREFIX + "o" + + ) + +163 + #PRIuPTR + +__PRIPTR_PREFIX + "u" + + ) + +164 + #PRIxPTR + +__PRIPTR_PREFIX + "x" + + ) + +165 + #PRIXPTR + +__PRIPTR_PREFIX + "X" + + ) + +171 + #SCNd8 + "hhd" + + ) + +172 + #SCNd16 + "hd" + + ) + +173 + #SCNd32 + "d" + + ) + +174 + #SCNd64 + +__PRI64_PREFIX + "d" + + ) + +176 + #SCNdLEAST8 + "hhd" + + ) + +177 + #SCNdLEAST16 + "hd" + + ) + +178 + #SCNdLEAST32 + "d" + + ) + +179 + #SCNdLEAST64 + +__PRI64_PREFIX + "d" + + ) + +181 + #SCNdFAST8 + "hhd" + + ) + +182 + #SCNdFAST16 + +__PRIPTR_PREFIX + "d" + + ) + +183 + #SCNdFAST32 + +__PRIPTR_PREFIX + "d" + + ) + +184 + #SCNdFAST64 + +__PRI64_PREFIX + "d" + + ) + +187 + #SCNi8 + "hhi" + + ) + +188 + #SCNi16 + "hi" + + ) + +189 + #SCNi32 + "i" + + ) + +190 + #SCNi64 + +__PRI64_PREFIX + "i" + + ) + +192 + #SCNiLEAST8 + "hhi" + + ) + +193 + #SCNiLEAST16 + "hi" + + ) + +194 + #SCNiLEAST32 + "i" + + ) + +195 + #SCNiLEAST64 + +__PRI64_PREFIX + "i" + + ) + +197 + #SCNiFAST8 + "hhi" + + ) + +198 + #SCNiFAST16 + +__PRIPTR_PREFIX + "i" + + ) + +199 + #SCNiFAST32 + +__PRIPTR_PREFIX + "i" + + ) + +200 + #SCNiFAST64 + +__PRI64_PREFIX + "i" + + ) + +203 + #SCNu8 + "hhu" + + ) + +204 + #SCNu16 + "hu" + + ) + +205 + #SCNu32 + "u" + + ) + +206 + #SCNu64 + +__PRI64_PREFIX + "u" + + ) + +208 + #SCNuLEAST8 + "hhu" + + ) + +209 + #SCNuLEAST16 + "hu" + + ) + +210 + #SCNuLEAST32 + "u" + + ) + +211 + #SCNuLEAST64 + +__PRI64_PREFIX + "u" + + ) + +213 + #SCNuFAST8 + "hhu" + + ) + +214 + #SCNuFAST16 + +__PRIPTR_PREFIX + "u" + + ) + +215 + #SCNuFAST32 + +__PRIPTR_PREFIX + "u" + + ) + +216 + #SCNuFAST64 + +__PRI64_PREFIX + "u" + + ) + +219 + #SCNo8 + "hho" + + ) + +220 + #SCNo16 + "ho" + + ) + +221 + #SCNo32 + "o" + + ) + +222 + #SCNo64 + +__PRI64_PREFIX + "o" + + ) + +224 + #SCNoLEAST8 + "hho" + + ) + +225 + #SCNoLEAST16 + "ho" + + ) + +226 + #SCNoLEAST32 + "o" + + ) + +227 + #SCNoLEAST64 + +__PRI64_PREFIX + "o" + + ) + +229 + #SCNoFAST8 + "hho" + + ) + +230 + #SCNoFAST16 + +__PRIPTR_PREFIX + "o" + + ) + +231 + #SCNoFAST32 + +__PRIPTR_PREFIX + "o" + + ) + +232 + #SCNoFAST64 + +__PRI64_PREFIX + "o" + + ) + +235 + #SCNx8 + "hhx" + + ) + +236 + #SCNx16 + "hx" + + ) + +237 + #SCNx32 + "x" + + ) + +238 + #SCNx64 + +__PRI64_PREFIX + "x" + + ) + +240 + #SCNxLEAST8 + "hhx" + + ) + +241 + #SCNxLEAST16 + "hx" + + ) + +242 + #SCNxLEAST32 + "x" + + ) + +243 + #SCNxLEAST64 + +__PRI64_PREFIX + "x" + + ) + +245 + #SCNxFAST8 + "hhx" + + ) + +246 + #SCNxFAST16 + +__PRIPTR_PREFIX + "x" + + ) + +247 + #SCNxFAST32 + +__PRIPTR_PREFIX + "x" + + ) + +248 + #SCNxFAST64 + +__PRI64_PREFIX + "x" + + ) + +252 + #SCNdMAX + +__PRI64_PREFIX + "d" + + ) + +253 + #SCNiMAX + +__PRI64_PREFIX + "i" + + ) + +254 + #SCNoMAX + +__PRI64_PREFIX + "o" + + ) + +255 + #SCNuMAX + +__PRI64_PREFIX + "u" + + ) + +256 + #SCNxMAX + +__PRI64_PREFIX + "x" + + ) + +259 + #SCNdPTR + +__PRIPTR_PREFIX + "d" + + ) + +260 + #SCNiPTR + +__PRIPTR_PREFIX + "i" + + ) + +261 + #SCNoPTR + +__PRIPTR_PREFIX + "o" + + ) + +262 + #SCNuPTR + +__PRIPTR_PREFIX + "u" + + ) + +263 + #SCNxPTR + +__PRIPTR_PREFIX + "x" + + ) + +266 + g__BEGIN_DECLS + + +268 #ià +__WORDSIZE + == 64 + +273 + mquÙ +; + +274 + m»m +; + +275 } + timaxdiv_t +; + +282 +__exnsiÚ__ + + mquÙ +; + +283 +__exnsiÚ__ + + m»m +; + +284 } + timaxdiv_t +; + +290 +tmax_t + + $imaxabs + ( +tmax_t + +__n +è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +293 +imaxdiv_t + + $imaxdiv + ( +tmax_t + +__num +, iÁmax_ +__dom +) + +294 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +297 +tmax_t + + $¡¹oimax + (cÚ¡ * +__»¡riù + +__Å +, + +298 ** +__»¡riù + +__d±r +, +__ba£ +è +__THROW +; + +301 +utmax_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 +utmax_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º_le + +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º_le + +utmax_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º_le + +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º_le + +utmax_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 +__exnsiÚ__ + + +371 + $__¡¹Þl_º® + (cÚ¡ * +__»¡riù + +__Å +, + +372 ** +__»¡riù + +__d±r +, + +373 +__ba£ +, +__group +) + +374 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +376 +__exº_le + +tmax_t + + +377 + `__NTH + ( + $¡¹oimax + (cÚ¡ * +__»¡riù + +Å +, **__»¡riù +d±r +, + +378 +ba£ +)) + +380 + `__¡¹Þl_º® + ( +Å +, +d±r +, +ba£ +, 0); + +381 + } +} + +383 +__exnsiÚ__ + + +384 + $__¡¹ouÎ_º® + (const * + +385 +__»¡riù + +__Å +, + +387 +__»¡riù + +__d±r +, + +388 +__ba£ +, + +389 +__group +) + +390 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +392 +__exº_le + +utmax_t + + +393 + `__NTH + ( + $¡¹oumax + (cÚ¡ * +__»¡riù + +Å +, **__»¡riù +d±r +, + +394 +ba£ +)) + +396 + `__¡¹ouÎ_º® + ( +Å +, +d±r +, +ba£ +, 0); + +397 + } +} + +399 +__exnsiÚ__ + + +400 + $__wc¡Þl_º® + (cÚ¡ +__gwch¬_t + * +__»¡riù + +__Å +, + +401 +__gwch¬_t + ** +__»¡riù + +__d±r +, + +402 +__ba£ +, +__group +) + +403 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +405 +__exº_le + +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 +__exnsiÚ__ + + +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º_le + +utmax_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 + ~<bs/m©h-veùÜ.h +> + +35 + ~<bs/huge_v®.h +> + +36 #ifdeà +__USE_ISOC99 + + +37 + ~<bs/huge_v®f.h +> + +38 + ~<bs/huge_v®l.h +> + +41 + ~<bs/f.h +> + +44 + ~<bs/Çn.h +> + +48 + ~<bs/m©hdef.h +> + +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 + ~<bs/m©hÿÎs.h +> + +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 + ~<bs/m©hÿÎs.h +> + +105 #undeà +_MdoubË_ + + +106 #undeà +_MdoubË_BEGIN_NAMESPACE + + +107 #undeà +_MdoubË_END_NAMESPACE + + +108 #undeà +__MATH_PRECNAME + + +109 #undeà +__MATH_DECLARING_DOUBLE + + +111 #ià!( +defed + +__NO_LONG_DOUBLE_MATH + && defed +_LIBC +) \ + +112 || +defed + +__LDBL_COMPAT + \ + +113 || +defed + +_LIBC_TEST + + +114 #ifdeà +__LDBL_COMPAT + + +116 #ifdeà +__USE_ISOC99 + + +117 + $__Ædbl_Ãxow¬df + ( +__x +, +__y +) + +118 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +119 #ifdeà +__REDIRECT_NTH + + +120 + `__REDIRECT_NTH + ( +Ãxow¬df +, ( +__x +, +__y +), + +121 +__Ædbl_Ãxow¬df +) + +122 + `__©ibu__ + (( +__cÚ¡__ +)); + +123 + `__REDIRECT_NTH + ( +Ãxow¬d +, ( +__x +, +__y +), + +124 +Ãxá +è + `__©ibu__ + (( +__cÚ¡__ +)); + +125 + `__REDIRECT_NTH + ( +Ãxow¬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 + ~<bs/m©hÿÎs.h +> + +152 #undeà +_MdoubË_ + + +153 #undeà +_MdoubË_BEGIN_NAMESPACE + + +154 #undeà +_MdoubË_END_NAMESPACE + + +155 #undeà +__MATH_PRECNAME + + +156 #undeà +__MATH_DECLARING_DOUBLE + + +161 #undeà +__MATHDECL_1 + + +162 #undeà +__MATHDECL + + +163 #undeà +__MATHCALL + + +166 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +168 +signgam +; + +173 #ifdeà +__USE_ISOC99 + + +211 +FP_NAN + = + +212 + #FP_NAN + 0 + + ) + +213 +FP_NAN +, + +214 +FP_INFINITE + = + +215 + #FP_INFINITE + 1 + + ) + +216 +FP_INFINITE +, + +217 +FP_ZERO + = + +218 + #FP_ZERO + 2 + + ) + +219 +FP_ZERO +, + +220 +FP_SUBNORMAL + = + +221 + #FP_SUBNORMAL + 3 + + ) + +222 +FP_SUBNORMAL +, + +223 +FP_NORMAL + = + +224 + #FP_NORMAL + 4 + + ) + +225 +FP_NORMAL + + +233 #ià + `__GNUC_PREREQ + (4,4è&& ! +defed + +__SUPPORT_SNAN__ + \ + +234 && ! +defed + +__OPTIMIZE_SIZE__ + + +235 + #åþassify +( +x +è + `__but_åþassify + ( +FP_NAN +, +FP_INFINITE +, \ + +236 +FP_NORMAL +, +FP_SUBNORMAL +, +FP_ZERO +, +x +) + + ) + +237 #ià +defed + +__NO_LONG_DOUBLE_MATH + + +238 + #åþassify +( +x +) \ + +239 ( ( +x +è=ð (è? + `__åþassifyf + (xè: + `__åþassify + (x)) + + ) + +241 + #åþassify +( +x +) \ + +242 ( ( +x +) == () \ + +243 ? + `__åþassifyf + ( +x +) \ + +244 : ( +x +) == () \ + +245 ? + `__åþassify + ( +x +è: + `__åþassifyl + (x)) + + ) + +249 #ià + `__GNUC_PREREQ + (4,0) + +250 + #signb +( +x +) \ + +251 ( ( +x +) == () \ + +252 ? + `__but_signbf + ( +x +) \ + +253 : ( +x +) == () \ + +254 ? + `__but_signb + ( +x +è: + `__but_signbl + (x)) + + ) + +256 #ifdeà +__NO_LONG_DOUBLE_MATH + + +257 + #signb +( +x +) \ + +258 ( ( +x +è=ð (è? + `__signbf + (xè: + `__signb + (x)) + + ) + +260 + #signb +( +x +) \ + +261 ( ( +x +) == () \ + +262 ? + `__signbf + ( +x +) \ + +263 : ( +x +) == () \ + +264 ? + `__signb + ( +x +è: + `__signbl + (x)) + + ) + +269 #ià + `__GNUC_PREREQ + (4,4è&& ! +defed + +__SUPPORT_SNAN__ + + +270 + #isfe +( +x +è + `__but_isfe + (x) + + ) + +271 #ià +defed + +__NO_LONG_DOUBLE_MATH + + +272 + #isfe +( +x +) \ + +273 ( ( +x +è=ð (è? + `__fef + (xè: + `__fe + (x)) + + ) + +275 + #isfe +( +x +) \ + +276 ( ( +x +) == () \ + +277 ? + `__fef + ( +x +) \ + +278 : ( +x +) == () \ + +279 ? + `__fe + ( +x +è: + `__f + (x)) + + ) + +283 #ià + `__GNUC_PREREQ + (4,4è&& ! +defed + +__SUPPORT_SNAN__ + + +284 + #i¢Üm® +( +x +è + `__but_i¢Üm® + (x) + + ) + +286 + #i¢Üm® +( +x +è( + `åþassify + (xè=ð +FP_NORMAL +) + + ) + +291 #ià + `__GNUC_PREREQ + (4,4è&& ! +defed + +__SUPPORT_SNAN__ + + +292 + #i¢ª +( +x +è + `__but_i¢ª + (x) + + ) + +293 #ià +defed + +__NO_LONG_DOUBLE_MATH + + +294 + #i¢ª +( +x +) \ + +295 ( ( +x +è=ð (è? + `__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è&& ! +defed + +__SUPPORT_SNAN__ + + +306 + #isf +( +x +è + `__but_isf_sign + (x) + + ) + +307 #ià +defed + +__NO_LONG_DOUBLE_MATH + + +308 + #isf +( +x +) \ + +309 ( ( +x +è=ð (è? + `__isff + (xè: + `__isf + (x)) + + ) + +311 + #isf +( +x +) \ + +312 ( ( +x +) == () \ + +313 ? + `__isff + ( +x +) \ + +314 : ( +x +) == () \ + +315 ? + `__isf + ( +x +è: + `__isæ + (x)) + + ) + +319 + #MATH_ERRNO + 1 + + ) + +320 + #MATH_ERREXCEPT + 2 + + ) + +325 #iâdeà +__FAST_MATH__ + + +326 + #m©h_rhªdlg + ( +MATH_ERRNO + | +MATH_ERREXCEPT +) + + ) + +331 #ifdeà +__USE_GNU + + +333 #ifdeà +__NO_LONG_DOUBLE_MATH + + +334 + #issigÇlg +( +x +) \ + +335 ( ( +x +è=ð (è? + `__issigÇlgf + (xè: + `__issigÇlg + (x)) + + ) + +337 + #issigÇlg +( +x +) \ + +338 ( ( +x +) == () \ + +339 ? + `__issigÇlgf + ( +x +) \ + +340 : ( +x +) == () \ + +341 ? + `__issigÇlg + ( +x +è: + `__issigÇlgl + (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©hr + ( +__exû±iÚ + * +__exc +è + `throw + (); + +385 + `m©hr + ( +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à +defed + +__USE_MISC + || defed +__USE_XOPEN + + +413 + #M_E + 2.7182818284590452354 + + ) + +414 + #M_LOG2E + 1.4426950408889634074 + + ) + +415 + #M_LOG10E + 0.43429448190325182765 + + ) + +416 + #M_LN2 + 0.69314718055994530942 + + ) + +417 + #M_LN10 + 2.30258509299404568402 + + ) + +418 + #M_PI + 3.14159265358979323846 + + ) + +419 + #M_PI_2 + 1.57079632679489661923 + + ) + +420 + #M_PI_4 + 0.78539816339744830962 + + ) + +421 + #M_1_PI + 0.31830988618379067154 + + ) + +422 + #M_2_PI + 0.63661977236758134308 + + ) + +423 + #M_2_SQRTPI + 1.12837916709551257390 + + ) + +424 + #M_SQRT2 + 1.41421356237309504880 + + ) + +425 + #M_SQRT1_2 + 0.70710678118654752440 + + ) + +431 #ifdeà +__USE_GNU + + +432 + #M_El + 2.718281828459045235360287471352662498L + + ) + +433 + #M_LOG2El + 1.442695040888963407359924681001892137L + + ) + +434 + #M_LOG10El + 0.434294481903251827651128918916605082L + + ) + +435 + #M_LN2l + 0.693147180559945309417232121458176568L + + ) + +436 + #M_LN10l + 2.302585092994045684017991454684364208L + + ) + +437 + #M_PIl + 3.141592653589793238462643383279502884L + + ) + +438 + #M_PI_2l + 1.570796326794896619231321691639751442L + + ) + +439 + #M_PI_4l + 0.785398163397448309615660845819875721L + + ) + +440 + #M_1_PIl + 0.318309886183790671537767526745028724L + + ) + +441 + #M_2_PIl + 0.636619772367581343075535053490057448L + + ) + +442 + #M_2_SQRTPIl + 1.128379167095512573896158903121545172L + + ) + +443 + #M_SQRT2l + 1.414213562373095048801688724209698079L + + ) + +444 + #M_SQRT1_2l + 0.707106781186547524400844362104849039L + + ) + +451 #ià +defed + +__STRICT_ANSI__ + && !defed +__NO_MATH_INLINES + + +452 + #__NO_MATH_INLINES + 1 + + ) + +455 #ià +defed + +__USE_ISOC99 + && + `__GNUC_PREREQ +(2,97) + +462 + #isg»© +( +x +, +y +è + `__but_isg»© +(x, y) + + ) + +463 + #isg»©equ® +( +x +, +y +è + `__but_isg»©equ® +(x, y) + + ) + +464 + #i¦ess +( +x +, +y +è + `__but_i¦ess +(x, y) + + ) + +465 + #i¦es£qu® +( +x +, +y +è + `__but_i¦es£qu® +(x, y) + + ) + +466 + #i¦essg»© +( +x +, +y +è + `__but_i¦essg»© +(x, y) + + ) + +467 + #isunÜded +( +u +, +v +è + `__but_isunÜded +(u, v) + + ) + +471 #ifdeà +__USE_EXTERN_INLINES + + +472 + ~<bs/m©hle.h +> + +477 #ià +defed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 + +478 + ~<bs/m©h-fe.h +> + +481 #ifdeà +__USE_ISOC99 + + +485 #iâdeà +isg»© + + +486 + #isg»© +( +x +, +y +) \ + +487 ( +__exnsiÚ__ + \ + +488 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +489 ! + `isunÜded + ( +__x +, +__y +è&& __x > __y; + } +})) + + ) + +493 #iâdeà +isg»©equ® + + +494 + #isg»©equ® +( +x +, +y +) \ + +495 ( +__exnsiÚ__ + \ + +496 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +497 ! + `isunÜded + ( +__x +, +__y +è&& __x >ð__y; })) + + ) + +501 #iâdeà +i¦ess + + +502 + #i¦ess +( +x +, +y +) \ + +503 ( +__exnsiÚ__ + \ + +504 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +505 ! + `isunÜded + ( +__x +, +__y +è&& __x < __y; })) + + ) + +509 #iâdeà +i¦es£qu® + + +510 + #i¦es£qu® +( +x +, +y +) \ + +511 ( +__exnsiÚ__ + \ + +512 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +513 ! + `isunÜded + ( +__x +, +__y +è&& __x <ð__y; })) + + ) + +517 #iâdeà +i¦essg»© + + +518 + #i¦essg»© +( +x +, +y +) \ + +519 ( +__exnsiÚ__ + \ + +520 ({ + `__ty³of__ +( +x +è +__x + = (x); __ty³of__( +y +è +__y + = (y); \ + +521 ! + `isunÜded + ( +__x +, +__y +è&& (__x < __y || __y < __x); })) + + ) + +525 #iâdeà +isunÜded + + +526 + #isunÜded +( +u +, +v +) \ + +527 ( +__exnsiÚ__ + \ + +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 + ~<¡dt.h +> + +23 + ~<sys/sock.h +> + +24 + ~<bs/ty³s.h +> + +27 +__BEGIN_DECLS + + +30 +ut32_t + + t_addr_t +; + +31 + s_addr + + +33 +_addr_t + + ms_addr +; + +37 + ~<bs/.h +> + +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 +ut16_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 + s6_addr + + +215 +ut8_t + + m__u6_addr8 +[16]; + +216 #ifdeà +__USE_MISC + + +217 +ut16_t + + m__u6_addr16 +[8]; + +218 +ut32_t + + m__u6_addr32 +[4]; + +220 } + m__6_u +; + +221 + #s6_addr + +__6_u +. +__u6_addr8 + + + ) + +222 #ifdeà +__USE_MISC + + +223 + #s6_addr16 + +__6_u +. +__u6_addr16 + + + ) + +224 + #s6_addr32 + +__6_u +. +__u6_addr32 + + + ) + +229 cÚ¡ +6_addr + +6addr_ªy +; + +230 cÚ¡ +6_addr + +6addr_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_zo +[ ( +sockaddr +) - + +247 +__SOCKADDR_COMMON_SIZE + - + +248 ( +_pÜt_t +) - + +249 ( +_addr +)]; + +252 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +254 + ssockaddr_6 + + +256 +__SOCKADDR_COMMON + ( +s6_ +); + +257 +_pÜt_t + + ms6_pÜt +; + +258 +ut32_t + + ms6_æowfo +; + +259 +6_addr + + ms6_addr +; + +260 +ut32_t + + ms6_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 + sv6_m»q + + +293 +6_addr + + mv6mr_muÉddr +; + +296 + mv6mr_rçû +; + +300 #ifdeà +__USE_MISC + + +302 + sgroup_»q + + +305 +ut32_t + + mgr_rçû +; + +308 +sockaddr_¡Üage + + mgr_group +; + +311 + sgroup_sourû_»q + + +314 +ut32_t + + mg¤_rçû +; + +317 +sockaddr_¡Üage + + mg¤_group +; + +320 +sockaddr_¡Üage + + mg¤_sourû +; + +325 + s_msfr + + +328 +_addr + + mimsf_muÉddr +; + +331 +_addr + + mimsf_rçû +; + +334 +ut32_t + + mimsf_fmode +; + +337 +ut32_t + + mimsf_num¤c +; + +339 +_addr + + mimsf_¦i¡ +[1]; + +342 + #IP_MSFILTER_SIZE +( +num¤c +è( ( +_msfr +) \ + +343 - ( +_addr +) \ + +344 + ( +num¤c +è* ( +_addr +)) + + ) + +346 + sgroup_fr + + +349 +ut32_t + + mgf_rçû +; + +352 +sockaddr_¡Üage + + mgf_group +; + +355 +ut32_t + + mgf_fmode +; + +358 +ut32_t + + mgf_num¤c +; + +360 +sockaddr_¡Üage + + mgf_¦i¡ +[1]; + +363 + #GROUP_FILTER_SIZE +( +num¤c +è( ( +group_fr +) \ + +364 - ( +sockaddr_¡Üage +) \ + +365 + (( +num¤c +) \ + +366 * ( +sockaddr_¡Üage +))) + + ) + +376 +ut32_t + + $Áohl + ( +ut32_t + +__ÃÚg +è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +377 +ut16_t + + $Áohs + ( +ut16_t + +__ÃtshÜt +) + +378 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +379 +ut32_t + + $htÚl + ( +ut32_t + +__ho¡lÚg +) + +380 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +381 +ut16_t + + $htÚs + ( +ut16_t + +__ho¡shÜt +) + +382 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +384 + ~<dn.h +> + +387 + ~<bs/bysw.h +> + +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 ( +__exnsiÚ__ + \ + +413 ({ cÚ¡ +6_addr + * +__a + = (cÚ¡ 6_add¸*è( +a +); \ + +414 +__a +-> +s6_addr32 +[0] == 0 \ + +415 && +__a +-> +s6_addr32 +[1] == 0 \ + +416 && +__a +-> +s6_addr32 +[2] == 0 \ + +417 && +__a +-> +s6_addr32 +[3] =ð0; + } +})) + + ) + +419 + #IN6_IS_ADDR_LOOPBACK +( +a +) \ + +420 ( +__exnsiÚ__ + \ + +421 ({ cÚ¡ +6_addr + * +__a + = (cÚ¡ 6_add¸*è( +a +); \ + +422 +__a +-> +s6_addr32 +[0] == 0 \ + +423 && +__a +-> +s6_addr32 +[1] == 0 \ + +424 && +__a +-> +s6_addr32 +[2] == 0 \ + +425 && +__a +-> +s6_addr32 +[3] =ð + `htÚl + (1); })) + + ) + +427 + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +428 ( +__exnsiÚ__ + \ + +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 ( +__exnsiÚ__ + \ + +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 ( +__exnsiÚ__ + \ + +439 ({ cÚ¡ +6_addr + * +__a + = (cÚ¡ 6_add¸*è( +a +); \ + +440 +__a +-> +s6_addr32 +[0] == 0 \ + +441 && +__a +-> +s6_addr32 +[1] == 0 \ + +442 && +__a +-> +s6_addr32 +[2] =ð + `htÚl + (0xffff); })) + + ) + +444 + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +445 ( +__exnsiÚ__ + \ + +446 ({ cÚ¡ +6_addr + * +__a + = (cÚ¡ 6_add¸*è( +a +); \ + +447 +__a +-> +s6_addr32 +[0] == 0 \ + +448 && +__a +-> +s6_addr32 +[1] == 0 \ + +449 && +__a +-> +s6_addr32 +[2] == 0 \ + +450 && + `Áohl + ( +__a +-> +s6_addr32 +[3]è> 1; })) + + ) + +452 + #IN6_ARE_ADDR_EQUAL +( +a +, +b +) \ + +453 ( +__exnsiÚ__ + \ + +454 ({ cÚ¡ +6_addr + * +__a + = (cÚ¡ 6_add¸*è( +a +); \ + +455 cÚ¡ +6_addr + * +__b + = (cÚ¡ 6_add¸*è( +b +); \ + +456 +__a +-> +s6_addr32 +[0] =ð +__b +->s6_addr32[0] \ + +457 && +__a +-> +s6_addr32 +[1] =ð +__b +->s6_addr32[1] \ + +458 && +__a +-> +s6_addr32 +[2] =ð +__b +->s6_addr32[2] \ + +459 && +__a +-> +s6_addr32 +[3] =ð +__b +->s6_addr32[3]; })) + + ) + +461 + #IN6_IS_ADDR_UNSPECIFIED +( +a +) \ + +462 (((cÚ¡ +ut32_t + *è( +a +))[0] == 0 \ + +463 && ((cÚ¡ +ut32_t + *è( +a +))[1] == 0 \ + +464 && ((cÚ¡ +ut32_t + *è( +a +))[2] == 0 \ + +465 && ((cÚ¡ +ut32_t + *è( +a +))[3] =ð0) + + ) + +467 + #IN6_IS_ADDR_LOOPBACK +( +a +) \ + +468 (((cÚ¡ +ut32_t + *è( +a +))[0] == 0 \ + +469 && ((cÚ¡ +ut32_t + *è( +a +))[1] == 0 \ + +470 && ((cÚ¡ +ut32_t + *è( +a +))[2] == 0 \ + +471 && ((cÚ¡ +ut32_t + *è( +a +))[3] =ð + `htÚl + (1)) + + ) + +473 + #IN6_IS_ADDR_LINKLOCAL +( +a +) \ + +474 ((((cÚ¡ +ut32_t + *è( +a +))[0] & + `htÚl + (0xffc00000)) \ + +475 =ð + `htÚl + (0xã800000)) + + ) + +477 + #IN6_IS_ADDR_SITELOCAL +( +a +) \ + +478 ((((cÚ¡ +ut32_t + *è( +a +))[0] & + `htÚl + (0xffc00000)) \ + +479 =ð + `htÚl + (0xãc00000)) + + ) + +481 + #IN6_IS_ADDR_V4MAPPED +( +a +) \ + +482 ((((cÚ¡ +ut32_t + *è( +a +))[0] == 0) \ + +483 && (((cÚ¡ +ut32_t + *è( +a +))[1] == 0) \ + +484 && (((cÚ¡ +ut32_t + *è( +a +))[2] =ð + `htÚl + (0xffff))) + + ) + +486 + #IN6_IS_ADDR_V4COMPAT +( +a +) \ + +487 ((((cÚ¡ +ut32_t + *è( +a +))[0] == 0) \ + +488 && (((cÚ¡ +ut32_t + *è( +a +))[1] == 0) \ + +489 && (((cÚ¡ +ut32_t + *è( +a +))[2] == 0) \ + +490 && ( + `Áohl + (((cÚ¡ +ut32_t + *è( +a +))[3]è> 1)) + + ) + +492 + #IN6_ARE_ADDR_EQUAL +( +a +, +b +) \ + +493 ((((cÚ¡ +ut32_t + *è( +a +))[0] =ð((cÚ¡ ut32_*è( +b +))[0]) \ + +494 && (((cÚ¡ +ut32_t + *è( +a +))[1] =ð((cÚ¡ ut32_*è( +b +))[1]) \ + +495 && (((cÚ¡ +ut32_t + *è( +a +))[2] =ð((cÚ¡ ut32_*è( +b +))[2]) \ + +496 && (((cÚ¡ +ut32_t + *è( +a +))[3] =ð((cÚ¡ ut32_*è( +b +))[3])) + + ) + +499 + #IN6_IS_ADDR_MULTICAST +( +a +è(((cÚ¡ +ut8_t + *è×))[0] =ð0xff) + + ) + +501 #ifdeà +__USE_MISC + + +503 + $bd»svpÜt + ( +__sockfd +, +sockaddr_ + * +__sock_ +è +__THROW +; + +506 + $bd»svpÜt6 + ( +__sockfd +, +sockaddr_6 + * +__sock_ +) + +507 +__THROW +; + +511 + #IN6_IS_ADDR_MC_NODELOCAL +( +a +) \ + +512 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +513 && ((((cÚ¡ +ut8_t + *è( +a +))[1] & 0xfè=ð0x1)) + + ) + +515 + #IN6_IS_ADDR_MC_LINKLOCAL +( +a +) \ + +516 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +517 && ((((cÚ¡ +ut8_t + *è( +a +))[1] & 0xfè=ð0x2)) + + ) + +519 + #IN6_IS_ADDR_MC_SITELOCAL +( +a +) \ + +520 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +521 && ((((cÚ¡ +ut8_t + *è( +a +))[1] & 0xfè=ð0x5)) + + ) + +523 + #IN6_IS_ADDR_MC_ORGLOCAL +( +a +) \ + +524 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +525 && ((((cÚ¡ +ut8_t + *è( +a +))[1] & 0xfè=ð0x8)) + + ) + +527 + #IN6_IS_ADDR_MC_GLOBAL +( +a +) \ + +528 ( + `IN6_IS_ADDR_MULTICAST +( +a +) \ + +529 && ((((cÚ¡ +ut8_t + *è( +a +))[1] & 0xfè=ð0xe)) + + ) + +532 #ifdeà +__USE_GNU + + +533 +cmsghdr +; + +535 #iâdeà +__USE_KERNEL_IPV6_DEFS + + +537 + s6_pktfo + + +539 +6_addr + +i6_addr +; + +540 +i6_ifdex +; + +544 + s6_mtufo + + +546 +sockaddr_6 + +6m_addr +; + +547 +ut32_t + +6m_mtu +; + +552 + $6_ÝtiÚ_¥aû + ( +__nbys +) + +553 +__THROW + +__©ibu_d»ÿd__ +; + +554 + $6_ÝtiÚ_ + (* +__bp +, +cmsghdr + ** +__cmsgp +, + +555 +__ty³ +è +__THROW + +__©ibu_d»ÿd__ +; + +556 + $6_ÝtiÚ_³nd + ( +cmsghdr + * +__cmsg +, + +557 cÚ¡ +ut8_t + * +__ty³p +, +__muÉx +, + +558 +__¶usy +è +__THROW + +__©ibu_d»ÿd__ +; + +559 +ut8_t + * + $6_ÝtiÚ_®loc + ( +cmsghdr + * +__cmsg +, +__d©® +, + +560 +__muÉx +, +__¶usy +) + +561 +__THROW + +__©ibu_d»ÿd__ +; + +562 + $6_ÝtiÚ_Ãxt + (cÚ¡ +cmsghdr + * +__cmsg +, + +563 +ut8_t + ** +__p +) + +564 +__THROW + +__©ibu_d»ÿd__ +; + +565 + $6_ÝtiÚ_fd + (cÚ¡ +cmsghdr + * +__cmsg +, + +566 +ut8_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 +ut8_t + +__ty³ +, +sockËn_t + +__Ën +, ut8_ +__®ign +, + +574 ** +__d©abuå +è +__THROW +; + +575 + $6_Ýt_fish + (* +__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 +ut8_t + * +__ty³p +, +sockËn_t + * +__ËÅ +, + +581 ** +__d©abuå +è +__THROW +; + +582 + $6_Ýt_fd + (* +__extbuf +, +sockËn_t + +__ex +, +__off£t +, + +583 +ut8_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³ +, +__£gmts +è +__THROW +; + +591 * + $6_¹h_ + (* +__bp +, +sockËn_t + +__bp_Ën +, +__ty³ +, + +592 +__£gmts +è +__THROW +; + +593 + $6_¹h_add + (* +__bp +, cÚ¡ +6_addr + * +__addr +è +__THROW +; + +594 + $6_¹h_»v£ + (cÚ¡ * +__ +, * +__out +è +__THROW +; + +595 + $6_¹h_£gmts + (cÚ¡ * +__bp +è +__THROW +; + +596 +6_addr + * + $6_¹h_gaddr + (cÚ¡ * +__bp +, +__dex +) + +597 +__THROW +; + +603 + $gv4sourûfr + ( +__s +, +_addr + +__rçû_addr +, + +604 +_addr + +__group +, +ut32_t + * +__fmode +, + +605 +ut32_t + * +__num¤c +, +_addr + * +__¦i¡ +) + +606 +__THROW +; + +609 + $£tv4sourûfr + ( +__s +, +_addr + +__rçû_addr +, + +610 +_addr + +__group +, +ut32_t + +__fmode +, + +611 +ut32_t + +__num¤c +, + +612 cÚ¡ +_addr + * +__¦i¡ +) + +613 +__THROW +; + +617 + $gsourûfr + ( +__s +, +ut32_t + +__rçû_addr +, + +618 cÚ¡ +sockaddr + * +__group +, + +619 +sockËn_t + +__grou¶ +, +ut32_t + * +__fmode +, + +620 +ut32_t + * +__num¤c +, + +621 +sockaddr_¡Üage + * +__¦i¡ +è +__THROW +; + +624 + $£tsourûfr + ( +__s +, +ut32_t + +__rçû_addr +, + +625 cÚ¡ +sockaddr + * +__group +, + +626 +sockËn_t + +__grou¶ +, +ut32_t + +__fmode +, + +627 +ut32_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 + ~<bs/£tjmp.h +> + +30 + ~<bs/sig£t.h +> + +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à +defed + +__USE_MISC + || defed +__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 + ~<bs/£tjmp2.h +> + +112 +__END_DECLS + + + @/usr/include/signal.h + +22 #iâdef +_SIGNAL_H + + +24 #ià! +defed + +__Ãed_sig_©omic_t + && !defed +__Ãed_sig£t_t + + +25 + #_SIGNAL_H + + + ) + +28 + ~<ã©u»s.h +> + +30 + g__BEGIN_DECLS + + +32 + ~<bs/sig£t.h +> + +36 #ià +defed + +__Ãed_sig_©omic_t + || defed +_SIGNAL_H + + +37 #iâdeà +__sig_©omic_t_defed + + +38 + #__sig_©omic_t_defed + + + ) + +39 +__BEGIN_NAMESPACE_STD + + +40 +__sig_©omic_t + + tsig_©omic_t +; + +41 + g__END_NAMESPACE_STD + + +43 #undeà +__Ãed_sig_©omic_t + + +46 #ià +defed + +__Ãed_sig£t_t + || (defed +_SIGNAL_H + && defed +__USE_POSIX +) + +47 #iâdeà +__sig£t_t_defed + + +48 + #__sig£t_t_defed + + + ) + +49 +__sig£t_t + + tsig£t_t +; + +51 #undeà +__Ãed_sig£t_t + + +54 #ifdeà +_SIGNAL_H + + +56 + ~<bs/ty³s.h +> + +57 + ~<bs/signum.h +> + +59 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K + + +60 #iâdeà +__pid_t_defed + + +61 +__pid_t + + tpid_t +; + +62 + #__pid_t_defed + + + ) + +64 #ifdeà +__USE_XOPEN + + +66 #iâdeà +__uid_t_defed + + +67 +__uid_t + + tuid_t +; + +68 + #__uid_t_defed + + + ) + +72 #ifdeà +__USE_POSIX199309 + + +74 + #__Ãed_time¥ec + + + ) + +75 + ~<time.h +> + +78 #ià +defed + +__USE_POSIX199309 + || defed +__USE_XOPEN_EXTENDED + + +80 + ~<bs/sigfo.h +> + +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 + $kl + ( +__pid_t + +__pid +, +__sig +è +__THROW +; + +130 #ià +defed + +__USE_MISC + || defed +__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 + `psigfo + (cÚ¡ +sigfo_t + * +__pfo +, 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 + $siggmask + (è +__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 + $sigfl£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 + ~<bs/sigaùiÚ.h +> + +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³ndg + ( +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 + $sigwafo + (cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, + +277 +sigfo_t + * +__»¡riù + +__fo +è + `__nÚnuÎ + ((1)); + +284 + $sigtimedwa + (cÚ¡ +sig£t_t + * +__»¡riù + +__£t +, + +285 +sigfo_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 + ~<bs/sigcÚxt.h +> + +309 + $sig»tuº + ( +sigcÚxt + * +__sý +è +__THROW +; + +314 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +315 + #__Ãed_size_t + + + ) + +316 + ~<¡ddef.h +> + +321 + $sig¼u± + ( +__sig +, +__¼u± +è +__THROW +; + +323 + ~<bs/sig¡ack.h +> + +324 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +326 + ~<sys/ucÚxt.h +> + +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à +defed + +__USE_POSIX199506 + || defed +__USE_UNIX98 + + +361 + ~<bs/±h»adty³s.h +> + +362 + ~<bs/sigth»ad.h +> + +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 + ~<bs/wch¬.h +> + +27 + ~<bs/wÜdsize.h +> + +34 #iâdeà +__t8_t_defed + + +35 + #__t8_t_defed + + + ) + +36 sigÃd + tt8_t +; + +37 + tt16_t +; + +38 + tt32_t +; + +39 #ià +__WORDSIZE + == 64 + +40 + tt64_t +; + +42 +__exnsiÚ__ + + +43 + tt64_t +; + +48 + tut8_t +; + +49 + tut16_t +; + +50 #iâdeà +__ut32_t_defed + + +51 + tut32_t +; + +52 + #__ut32_t_defed + + + ) + +54 #ià +__WORDSIZE + == 64 + +55 + tut64_t +; + +57 +__exnsiÚ__ + + +58 + tut64_t +; + +65 sigÃd + tt_Ëa¡8_t +; + +66 + tt_Ëa¡16_t +; + +67 + tt_Ëa¡32_t +; + +68 #ià +__WORDSIZE + == 64 + +69 + tt_Ëa¡64_t +; + +71 +__exnsiÚ__ + + +72 + tt_Ëa¡64_t +; + +76 + tut_Ëa¡8_t +; + +77 + tut_Ëa¡16_t +; + +78 + tut_Ëa¡32_t +; + +79 #ià +__WORDSIZE + == 64 + +80 + tut_Ëa¡64_t +; + +82 +__exnsiÚ__ + + +83 + tut_Ëa¡64_t +; + +90 sigÃd + tt_ç¡8_t +; + +91 #ià +__WORDSIZE + == 64 + +92 + tt_ç¡16_t +; + +93 + tt_ç¡32_t +; + +94 + tt_ç¡64_t +; + +96 + tt_ç¡16_t +; + +97 + tt_ç¡32_t +; + +98 +__exnsiÚ__ + + +99 + tt_ç¡64_t +; + +103 + tut_ç¡8_t +; + +104 #ià +__WORDSIZE + == 64 + +105 + tut_ç¡16_t +; + +106 + tut_ç¡32_t +; + +107 + tut_ç¡64_t +; + +109 + tut_ç¡16_t +; + +110 + tut_ç¡32_t +; + +111 +__exnsiÚ__ + + +112 + tut_ç¡64_t +; + +117 #ià +__WORDSIZE + == 64 + +118 #iâdeà +___t_defed + + +119 + t_t +; + +120 + #___t_defed + + + ) + +122 + tu_t +; + +124 #iâdeà +___t_defed + + +125 + t_t +; + +126 + #___t_defed + + + ) + +128 + tu_t +; + +133 #ià +__WORDSIZE + == 64 + +134 + ttmax_t +; + +135 + tutmax_t +; + +137 +__exnsiÚ__ + + +138 + ttmax_t +; + +139 +__exnsiÚ__ + + +140 + tutmax_t +; + +144 #ià +__WORDSIZE + == 64 + +145 + #__INT64_C +( +c +èø## +L + + + ) + +146 + #__UINT64_C +( +c +èø## +UL + + + ) + +148 + #__INT64_C +( +c +èø## +LL + + + ) + +149 + #__UINT64_C +( +c +èø## +ULL + + + ) + +155 + #INT8_MIN + (-128) + + ) + +156 + #INT16_MIN + (-32767-1) + + ) + +157 + #INT32_MIN + (-2147483647-1) + + ) + +158 + #INT64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +160 + #INT8_MAX + (127) + + ) + +161 + #INT16_MAX + (32767) + + ) + +162 + #INT32_MAX + (2147483647) + + ) + +163 + #INT64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +166 + #UINT8_MAX + (255) + + ) + +167 + #UINT16_MAX + (65535) + + ) + +168 + #UINT32_MAX + (4294967295U) + + ) + +169 + #UINT64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +173 + #INT_LEAST8_MIN + (-128) + + ) + +174 + #INT_LEAST16_MIN + (-32767-1) + + ) + +175 + #INT_LEAST32_MIN + (-2147483647-1) + + ) + +176 + #INT_LEAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +178 + #INT_LEAST8_MAX + (127) + + ) + +179 + #INT_LEAST16_MAX + (32767) + + ) + +180 + #INT_LEAST32_MAX + (2147483647) + + ) + +181 + #INT_LEAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +184 + #UINT_LEAST8_MAX + (255) + + ) + +185 + #UINT_LEAST16_MAX + (65535) + + ) + +186 + #UINT_LEAST32_MAX + (4294967295U) + + ) + +187 + #UINT_LEAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +191 + #INT_FAST8_MIN + (-128) + + ) + +192 #ià +__WORDSIZE + == 64 + +193 + #INT_FAST16_MIN + (-9223372036854775807L-1) + + ) + +194 + #INT_FAST32_MIN + (-9223372036854775807L-1) + + ) + +196 + #INT_FAST16_MIN + (-2147483647-1) + + ) + +197 + #INT_FAST32_MIN + (-2147483647-1) + + ) + +199 + #INT_FAST64_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +201 + #INT_FAST8_MAX + (127) + + ) + +202 #ià +__WORDSIZE + == 64 + +203 + #INT_FAST16_MAX + (9223372036854775807L) + + ) + +204 + #INT_FAST32_MAX + (9223372036854775807L) + + ) + +206 + #INT_FAST16_MAX + (2147483647) + + ) + +207 + #INT_FAST32_MAX + (2147483647) + + ) + +209 + #INT_FAST64_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +212 + #UINT_FAST8_MAX + (255) + + ) + +213 #ià +__WORDSIZE + == 64 + +214 + #UINT_FAST16_MAX + (18446744073709551615UL) + + ) + +215 + #UINT_FAST32_MAX + (18446744073709551615UL) + + ) + +217 + #UINT_FAST16_MAX + (4294967295U) + + ) + +218 + #UINT_FAST32_MAX + (4294967295U) + + ) + +220 + #UINT_FAST64_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +224 #ià +__WORDSIZE + == 64 + +225 + #INTPTR_MIN + (-9223372036854775807L-1) + + ) + +226 + #INTPTR_MAX + (9223372036854775807L) + + ) + +227 + #UINTPTR_MAX + (18446744073709551615UL) + + ) + +229 + #INTPTR_MIN + (-2147483647-1) + + ) + +230 + #INTPTR_MAX + (2147483647) + + ) + +231 + #UINTPTR_MAX + (4294967295U) + + ) + +236 + #INTMAX_MIN + (- + `__INT64_C +(9223372036854775807)-1) + + ) + +238 + #INTMAX_MAX + ( + `__INT64_C +(9223372036854775807)) + + ) + +241 + #UINTMAX_MAX + ( + `__UINT64_C +(18446744073709551615)) + + ) + +247 #ià +__WORDSIZE + == 64 + +248 + #PTRDIFF_MIN + (-9223372036854775807L-1) + + ) + +249 + #PTRDIFF_MAX + (9223372036854775807L) + + ) + +251 + #PTRDIFF_MIN + (-2147483647-1) + + ) + +252 + #PTRDIFF_MAX + (2147483647) + + ) + +256 + #SIG_ATOMIC_MIN + (-2147483647-1) + + ) + +257 + #SIG_ATOMIC_MAX + (2147483647) + + ) + +260 #ià +__WORDSIZE + == 64 + +261 + #SIZE_MAX + (18446744073709551615UL) + + ) + +263 #ifdeà +__WORDSIZE32_SIZE_ULONG + + +264 + #SIZE_MAX + (4294967295UL) + + ) + +266 + #SIZE_MAX + (4294967295U) + + ) + +271 #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à! +defed + +__Ãed_FILE + && !defed +__Ã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 + ~<bs/ty³s.h +> + +36 + #__Ãed_FILE + + + ) + +37 + #__Ãed___FILE + + + ) + +41 #ià! +defed + +__FILE_defed + && defed +__Ãed_FILE + + +44 + g_IO_FILE +; + +46 +__BEGIN_NAMESPACE_STD + + +48 +_IO_FILE + + tFILE +; + +49 + g__END_NAMESPACE_STD + + +50 #ià +defed + +__USE_LARGEFILE64 + || defed +__USE_POSIX + \ + +51 || +defed + + g__USE_ISOC99 + || defed + g__USE_XOPEN + \ + +52 || +defed + +__USE_POSIX2 + + +53 + $__USING_NAMESPACE_STD +( +FILE +) + +56 + #__FILE_defed + 1 + + ) + +58 #undeà +__Ãed_FILE + + +61 #ià! +defed + +____FILE_defed + && defed +__Ãed___FILE + + +64 +_IO_FILE + + t__FILE +; + +66 + #____FILE_defed + 1 + + ) + +68 #undeà +__Ãed___FILE + + +71 #ifdef +_STDIO_H + + +72 + #_STDIO_USES_IOSTREAM + + + ) + +74 + ~<libio.h +> + +76 #ià +defed + +__USE_XOPEN + || defed +__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_defed + + +89 #iâdeà +__USE_FILE_OFFSET64 + + +90 +__off_t + + toff_t +; + +92 +__off64_t + + toff_t +; + +94 + #__off_t_defed + + + ) + +96 #ià +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +97 +__off64_t + + toff64_t +; + +98 + #__off64_t_defed + + + ) + +101 #iâdeà +__ssize_t_defed + + +102 +__ssize_t + + tssize_t +; + +103 + #__ssize_t_defed + + + ) + +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à +defed + +__USE_MISC + || defed +__USE_XOPEN + + +151 + #P_tmpd + "/tmp" + + ) + +164 + ~<bs/¡dio_lim.h +> + +168 +_IO_FILE + * +¡d +; + +169 +_IO_FILE + * +¡dout +; + +170 +_IO_FILE + * +¡dr +; + +172 + #¡d + +¡d + + + ) + +173 + #¡dout + +¡dout + + + ) + +174 + #¡dr + +¡dr + + + ) + +176 +__BEGIN_NAMESPACE_STD + + +178 + $»move + (cÚ¡ * +__fame +è +__THROW +; + +180 + $»Çme + (cÚ¡ * +__Þd +, cÚ¡ * +__Ãw +è +__THROW +; + +181 +__END_NAMESPACE_STD + + +183 #ifdeà +__USE_ATFILE + + +185 + $»Çmt + ( +__Þdfd +, cÚ¡ * +__Þd +, +__Ãwfd +, + +186 cÚ¡ * +__Ãw +è +__THROW +; + +189 +__BEGIN_NAMESPACE_STD + + +194 #iâdeà +__USE_FILE_OFFSET64 + + +195 +FILE + * + $tmpfe + (è +__wur +; + +197 #ifdeà +__REDIRECT + + +198 +FILE + * + `__REDIRECT + ( +tmpfe +, (), +tmpfe64 +è +__wur +; + +200 + #tmpfe + +tmpfe64 + + + ) + +204 #ifdeà +__USE_LARGEFILE64 + + +205 +FILE + * + $tmpfe64 + (è +__wur +; + +209 * + $tm²am + (* +__s +è +__THROW + +__wur +; + +210 +__END_NAMESPACE_STD + + +212 #ifdeà +__USE_MISC + + +215 * + $tm²am_r + (* +__s +è +__THROW + +__wur +; + +219 #ià +defed + +__USE_MISC + || defed +__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ù + +__fame +, + +273 cÚ¡ * +__»¡riù + +__modes +è +__wur +; + +278 +FILE + * + $äeÝ + (cÚ¡ * +__»¡riù + +__fame +, + +279 cÚ¡ * +__»¡riù + +__modes +, + +280 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +282 #ifdeà +__REDIRECT + + +283 +FILE + * + `__REDIRECT + ( +fÝ +, (cÚ¡ * +__»¡riù + +__fame +, + +284 cÚ¡ * +__»¡riù + +__modes +), +fÝ64 +) + +285 +__wur +; + +286 +FILE + * + `__REDIRECT + ( +äeÝ +, (cÚ¡ * +__»¡riù + +__fame +, + +287 cÚ¡ * +__»¡riù + +__modes +, + +288 +FILE + * +__»¡riù + +__¡»am +), +äeÝ64 +) + +289 +__wur +; + +291 + #fÝ + +fÝ64 + + + ) + +292 + #äeÝ + +äeÝ64 + + + ) + +295 +__END_NAMESPACE_STD + + +296 #ifdeà +__USE_LARGEFILE64 + + +297 +FILE + * + $fÝ64 + (cÚ¡ * +__»¡riù + +__fame +, + +298 cÚ¡ * +__»¡riù + +__modes +è +__wur +; + +299 +FILE + * + $äeÝ64 + (cÚ¡ * +__»¡riù + +__fame +, + +300 cÚ¡ * +__»¡riù + +__modes +, + +301 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +304 #ifdef +__USE_POSIX + + +306 +FILE + * + $fdÝ + ( +__fd +, cÚ¡ * +__modes +è +__THROW + +__wur +; + +309 #ifdef +__USE_GNU + + +312 +FILE + * + $fÝcook + (* +__»¡riù + +__magic_cook +, + +313 cÚ¡ * +__»¡riù + +__modes +, + +314 +_IO_cook_io_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 + * +__sizoc +è +__THROW + +__wur +; + +329 +__BEGIN_NAMESPACE_STD + + +332 + $£tbuf + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +è +__THROW +; + +336 + $£tvbuf + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +, + +337 +__modes +, +size_t + +__n +è +__THROW +; + +338 +__END_NAMESPACE_STD + + +340 #ifdef +__USE_MISC + + +343 + $£tbufãr + ( +FILE + * +__»¡riù + +__¡»am +, *__»¡riù +__buf +, + +344 +size_t + +__size +è +__THROW +; + +347 + $£ebuf + ( +FILE + * +__¡»am +è +__THROW +; + +351 +__BEGIN_NAMESPACE_STD + + +356 + `årtf + ( +FILE + * +__»¡riù + +__¡»am +, + +357 cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +362 + `´tf + (cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +364 + $¥rtf + (* +__»¡riù + +__s +, + +365 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROWNL +; + +371 + `vårtf + ( +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¥rtf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fÜm© +, + +380 +_G_va_li¡ + +__¬g +è +__THROWNL +; + +381 +__END_NAMESPACE_STD + + +383 #ià +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +384 +__BEGIN_NAMESPACE_C99 + + +386 + $¢´tf + (* +__»¡riù + +__s +, +size_t + +__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¥rtf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__f +, + +400 +_G_va_li¡ + +__¬g +) + +401 +__THROWNL + + `__©ibu__ + (( + $__fÜm©__ + ( +__´tf__ +, 2, 0))è +__wur +; + +402 + $__a¥rtf + (** +__»¡riù + +__±r +, + +403 cÚ¡ * +__»¡riù + +__fmt +, ...) + +404 +__THROWNL + + `__©ibu__ + (( + $__fÜm©__ + ( +__´tf__ +, 2, 3))è +__wur +; + +405 + $a¥rtf + (** +__»¡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à +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +437 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +438 && ( +defed + +__STRICT_ANSI__ + || defed +__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à! +defed + +__USE_GNU + \ + +488 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +489 && ( +defed + +__STRICT_ANSI__ + || defed +__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 + `fgc + ( +FILE + * +__¡»am +); + +532 + `gc + ( +FILE + * +__¡»am +); + +538 + `gch¬ + (); + +539 +__END_NAMESPACE_STD + + +543 + #gc +( +_å +è + `_IO_gc + (_å) + + ) + +545 #ifdeà +__USE_POSIX + + +550 + `gc_uÆocked + ( +FILE + * +__¡»am +); + +551 + `gch¬_uÆocked + (); + +554 #ifdeà +__USE_MISC + + +561 + `fgc_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à +defed + +__USE_MISC + \ + +608 || ( +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +610 + `gw + ( +FILE + * +__¡»am +); + +613 + `putw + ( +__w +, +FILE + * +__¡»am +); + +617 +__BEGIN_NAMESPACE_STD + + +622 * + $fgs + (* +__»¡riù + +__s +, +__n +, +FILE + *__»¡riù +__¡»am +) + +623 +__wur +; + +625 #ià! +defed + +__USE_ISOC11 + \ + +626 || ( +defed + +__ýlu¥lus + && __cplusplus <= 201103L) + +638 * + $gs + (* +__s +è +__wur + +__©ibu_d»ÿd__ +; + +640 +__END_NAMESPACE_STD + + +642 #ifdeà +__USE_GNU + + +649 * + $fgs_uÆocked + (* +__»¡riù + +__s +, +__n +, + +650 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +654 #ifdef +__USE_XOPEN2K8 + + +665 +_IO_ssize_t + + $__gdim + (** +__»¡riù + +__l +, + +666 +size_t + * +__»¡riù + +__n +, +__dim +, + +667 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +668 +_IO_ssize_t + + $gdim + (** +__»¡riù + +__l +, + +669 +size_t + * +__»¡riù + +__n +, +__dim +, + +670 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +678 +_IO_ssize_t + + $gle + (** +__»¡riù + +__l +, + +679 +size_t + * +__»¡riù + +__n +, + +680 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +684 +__BEGIN_NAMESPACE_STD + + +689 + `åuts + (cÚ¡ * +__»¡riù + +__s +, +FILE + *__»¡riù +__¡»am +); + +695 + `puts + (cÚ¡ * +__s +); + +702 + `ungc + ( +__c +, +FILE + * +__¡»am +); + +709 +size_t + + $äd + (* +__»¡riù + +__±r +, +size_t + +__size +, + +710 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +715 +size_t + + `fwre + (cÚ¡ * +__»¡riù + +__±r +, size_ +__size +, + +716 +size_t + +__n +, +FILE + * +__»¡riù + +__s +); + +717 +__END_NAMESPACE_STD + + +719 #ifdeà +__USE_GNU + + +726 + `åuts_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 + + `fwre_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 + `»wd + ( +FILE + * +__¡»am +); + +760 +__END_NAMESPACE_STD + + +767 #ià +defed + +__USE_LARGEFILE + || defed +__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 + `fgpos + ( +FILE + * +__»¡riù + +__¡»am +, +åos_t + *__»¡riù +__pos +); + +803 + `f£os + ( +FILE + * +__¡»am +, cÚ¡ +åos_t + * +__pos +); + +805 #ifdeà +__REDIRECT + + +806 + `__REDIRECT + ( +fgpos +, ( +FILE + * +__»¡riù + +__¡»am +, + +807 +åos_t + * +__»¡riù + +__pos +), +fgpos64 +); + +808 + `__REDIRECT + ( +f£os +, + +809 ( +FILE + * +__¡»am +, cÚ¡ +åos_t + * +__pos +), +f£os64 +); + +811 + #fgpos + +fgpos64 + + + ) + +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 + `fgpos64 + ( +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 + ~<bs/sys_¾i¡.h +> + +856 #ifdef +__USE_POSIX + + +858 + $fo + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +861 #ifdeà +__USE_MISC + + +863 + $fo_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 + $æockfe + ( +FILE + * +__¡»am +è +__THROW +; + +916 + $árylockfe + ( +FILE + * +__¡»am +è +__THROW + +__wur +; + +919 + $fuÆockfe + ( +FILE + * +__¡»am +è +__THROW +; + +922 #ià +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K + && !defed +__USE_GNU + + +926 + #__Ãed_gÝt + + + ) + +927 + ~<gÝt.h +> + +932 #ifdeà +__USE_EXTERN_INLINES + + +933 + ~<bs/¡dio.h +> + +935 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +936 + ~<bs/¡dio2.h +> + +938 #ifdeà +__LDBL_COMPAT + + +939 + ~<bs/¡dio-ldbl.h +> + +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à( +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 +è&& !defed +_SYS_WAIT_H + + +41 + ~<bs/waæags.h +> + +42 + ~<bs/wa¡©us.h +> + +44 #ifdeà +__USE_MISC + + +49 #ià +defed + +__GNUC__ + && !defed +__ýlu¥lus + + +50 + #__WAIT_INT +( +¡©us +) \ + +51 ( + `__exnsiÚ__ + (((uniÚ { + `__ty³of +( +¡©us +è +__ +; +__i +; }) \ + +52 { . +__ + = ( +¡©us +è}). +__i +)) + + ) + +54 + #__WAIT_INT +( +¡©us +è(*(*è&(¡©us)) + + ) + +62 #ià! +defed + +__GNUC__ + || __GNUC__ < 2 || defed +__ý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_defed + + +107 + mquÙ +; + +108 + m»m +; + +109 } + tldiv_t +; + +110 + #__ldiv_t_defed + 1 + + ) + +112 + g__END_NAMESPACE_STD + + +114 #ià +defed + +__USE_ISOC99 + && !defed +__Îdiv_t_defed + + +115 +__BEGIN_NAMESPACE_C99 + + +117 +__exnsiÚ__ + struct + +119 + mquÙ +; + +120 + m»m +; + +121 } + tÎdiv_t +; + +122 + #__Îdiv_t_defed + 1 + + ) + +123 + g__END_NAMESPACE_C99 + + +128 + #RAND_MAX + 2147483647 + + ) + +133 + #EXIT_FAILURE + 1 + + ) + +134 + #EXIT_SUCCESS + 0 + + ) + +138 + #MB_CUR_MAX + ( + `__ùy³_g_mb_cur_max + ()) + + ) + +139 +size_t + + $__ùy³_g_mb_cur_max + (è +__THROW + +__wur +; + +142 +__BEGIN_NAMESPACE_STD + + +144 + $©of + (cÚ¡ * +__Å +) + +145 +__THROW + +__©ibu_pu»__ + + `__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 +__exnsiÚ__ + + $©Þ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 +__exnsiÚ__ + + +195 + $¡¹oq + (cÚ¡ * +__»¡riù + +__Å +, + +196 ** +__»¡riù + +__d±r +, +__ba£ +) + +197 +__THROW + + `__nÚnuÎ + ((1)); + +199 +__exnsiÚ__ + + +200 + $¡¹ouq + (cÚ¡ * +__»¡riù + +__Å +, + +201 ** +__»¡riù + +__d±r +, +__ba£ +) + +202 +__THROW + + `__nÚnuÎ + ((1)); + +205 #ifdeà +__USE_ISOC99 + + +206 +__BEGIN_NAMESPACE_C99 + + +208 +__exnsiÚ__ + + +209 + $¡¹Þl + (cÚ¡ * +__»¡riù + +__Å +, + +210 ** +__»¡riù + +__d±r +, +__ba£ +) + +211 +__THROW + + `__nÚnuÎ + ((1)); + +213 +__exnsiÚ__ + + +214 + $¡¹ouÎ + (cÚ¡ * +__»¡riù + +__Å +, + +215 ** +__»¡riù + +__d±r +, +__ba£ +) + +216 +__THROW + + `__nÚnuÎ + ((1)); + +217 +__END_NAMESPACE_C99 + + +221 #ifdeà +__USE_GNU + + +235 + ~<xloÿË.h +> + +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 +__exnsiÚ__ + + +249 + $¡¹Þl_l + (cÚ¡ * +__»¡riù + +__Å +, + +250 ** +__»¡riù + +__d±r +, +__ba£ +, + +251 +__loÿË_t + +__loc +) + +252 +__THROW + + `__nÚnuÎ + ((1, 4)); + +254 +__exnsiÚ__ + + +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º_le + + +278 + `__NTH + ( + $©oi + (cÚ¡ * +__Å +)) + +280 (è + `¡¹Þ + ( +__Å +, (**è +NULL +, 10); + +281 + } +} + +282 +__exº_le + + +283 +__NTH + ( + $©Þ + (cÚ¡ * +__Å +)) + +285 + `¡¹Þ + ( +__Å +, (**è +NULL +, 10); + +286 + } +} + +287 + g__END_NAMESPACE_STD + + +289 #ifdeà +__USE_ISOC99 + + +290 +__BEGIN_NAMESPACE_C99 + + +291 +__exnsiÚ__ + +__exº_le + + +292 +__NTH + ( + $©Þl + (cÚ¡ * +__Å +)) + +294 + `¡¹Þl + ( +__Å +, (**è +NULL +, 10); + +295 + } +} + +296 + g__END_NAMESPACE_C99 + + +301 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +305 * + $l64a + ( +__n +è +__THROW + +__wur +; + +308 + $a64l + (cÚ¡ * +__s +) + +309 +__THROW + +__©ibu_pu»__ + + `__nÚnuÎ + ((1)è +__wur +; + +313 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +314 + ~<sys/ty³s.h +> + +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à +defed + +__USE_MISC + || defed +__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 +__exnsiÚ__ + +__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_defed + + +463 + #__m®loc_ªd_ÿÎoc_defed + + + ) + +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à( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K +) \ + +496 || +defed + +__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 + +__®ignmt +, size_ +__size +) + +504 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +507 #ifdeà +__USE_ISOC11 + + +509 * + $®igÃd_®loc + ( +size_t + +__®ignmt +, 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à +defed + +__USE_ISOC11 + || defed +__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à +defed + +__USE_ISOC11 + || defed +__USE_ISOCXX11 + + +549 + $quick_ex + ( +__¡©us +è +__THROW + + `__©ibu__ + (( +__nÜuº__ +)); + +551 +__END_NAMESPACE_STD + + +553 #ifdeà +__USE_ISOC99 + + +554 +__BEGIN_NAMESPACE_C99 + + +557 + $_Ex + ( +__¡©us +è +__THROW + + `__©ibu__ + (( +__nÜuº__ +)); + +558 +__END_NAMESPACE_C99 + + +562 +__BEGIN_NAMESPACE_STD + + +564 * + $gv + (cÚ¡ * +__Çme +è +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +565 +__END_NAMESPACE_STD + + +567 #ifdeà +__USE_GNU + + +570 * + $£cu»_gv + (cÚ¡ * +__Çme +) + +571 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +574 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +578 + $punv + (* +__¡rg +è +__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à +defed + +__USE_MISC + \ + +600 || ( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) + +606 * + $mkmp + (* +__m¶©e +è +__THROW + + `__nÚnuÎ + ((1)); + +609 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__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 * + $mkdmp + (* +__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_fe_Çme + (cÚ¡ * +__Çme +) + +724 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +727 #ià +defed + +__USE_MISC + || defed +__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 + ~<bs/¡dlib-b£¬ch.h +> + +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 +__exnsiÚ__ + + $Îabs + ( +__x +) + +780 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)è +__wur +; + +784 +__BEGIN_NAMESPACE_STD + + +788 +div_t + + $div + ( +__num +, +__dom +) + +789 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)è +__wur +; + +790 +ldiv_t + + $ldiv + ( +__num +, +__dom +) + +791 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)è +__wur +; + +792 +__END_NAMESPACE_STD + + +794 #ifdeà +__USE_ISOC99 + + +795 +__BEGIN_NAMESPACE_C99 + + +796 +__exnsiÚ__ + +Îdiv_t + + $Îdiv + ( +__num +, + +797 +__dom +) + +798 +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)è +__wur +; + +799 +__END_NAMESPACE_C99 + + +803 #ià( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +804 || +defed + +__USE_MISC + + +811 * + $ecvt + ( +__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à +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +898 + $gsubÝt + (** +__»¡riù + +__ÝtiÚp +, + +899 *cÚ¡ * +__»¡riù + +__toks +, + +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 + $glßdavg + ( +__lßdavg +[], +__ÃËm +) + +951 +__THROW + + `__nÚnuÎ + ((1)); + +954 + ~<bs/¡dlib-æßt.h +> + +957 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +958 + ~<bs/¡dlib.h +> + +960 #ifdeà +__LDBL_COMPAT + + +961 + ~<bs/¡dlib-ldbl.h +> + +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à +defed + +__ý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à +defed + +__USE_MISC + || defed +__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_le + * + +79 + `memchr + (* +__s +, +__c +, +size_t + +__n +è +__THROW + + +81 + `__but_memchr + ( +__s +, +__c +, +__n +); + +84 +__exº_®ways_le + const * + +85 + `memchr + (cÚ¡ * +__s +, +__c +, +size_t + +__n +è +__THROW + + +87 + `__but_memchr + ( +__s +, +__c +, +__n +); + +90 + } +} + +92 * + $memchr + (cÚ¡ * +__s +, +__c +, +size_t + +__n +) + +93 +__THROW + +__©ibu_pu»__ + + `__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 + ~<xloÿË.h +> + +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à +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +171 * + $¡rdup + (cÚ¡ * +__s +) + +172 +__THROW + +__©ibu_m®loc__ + + `__nÚnuÎ + ((1)); + +178 #ià +defed + +__USE_XOPEN2K8 + + +179 * + $¡ºdup + (cÚ¡ * +__¡rg +, +size_t + +__n +) + +180 +__THROW + +__©ibu_m®loc__ + + `__nÚnuÎ + ((1)); + +183 #ià +defed + +__USE_GNU + && defed +__GNUC__ + + +185 + #¡rdu· +( +s +) \ + +186 ( +__exnsiÚ__ + \ + +188 cÚ¡ * +__Þd + = ( +s +); \ + +189 +size_t + +__Ën + = + `¡¾ + ( +__Þd +) + 1; \ + +190 * +__Ãw + = (*è + `__but_®loÿ + ( +__Ën +); \ + +191 (*è + `memýy + ( +__Ãw +, +__Þd +, +__Ën +); \ + +192 + } +})) + + ) + +195 + #¡ºdu· +( +s +, +n +) \ + +196 ( +__exnsiÚ__ + \ + +198 cÚ¡ * +__Þd + = ( +s +); \ + +199 +size_t + +__Ën + = + `¡ºËn + ( +__Þd +, ( +n +)); \ + +200 * +__Ãw + = (*è + `__but_®loÿ + ( +__Ën + + 1); \ + +201 +__Ãw +[ +__Ën +] = '\0'; \ + +202 (*è + `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_le + * + +218 +¡rchr + (* +__s +, +__c +è + g__THROW + + +220 +__but_¡rchr + ( +__s +, +__c +); + +223 +__exº_®ways_le + const * + +224 +¡rchr + (cÚ¡ * +__s +, +__c +è + g__THROW + + +226 +__but_¡rchr + ( +__s +, +__c +); + +231 * + $¡rchr + (cÚ¡ * +__s +, +__c +) + +232 +__THROW + +__©ibu_pu»__ + + `__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_le + * + +245 + `¡¼chr + (* +__s +, +__c +è +__THROW + + +247 + `__but_¡¼chr + ( +__s +, +__c +); + +250 +__exº_®ways_le + const * + +251 + `¡¼chr + (cÚ¡ * +__s +, +__c +è +__THROW + + +253 + `__but_¡¼chr + ( +__s +, +__c +); + +256 + } +} + +258 * + $¡¼chr + (cÚ¡ * +__s +, +__c +) + +259 +__THROW + +__©ibu_pu»__ + + `__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_le + * + +297 + `¡½brk + (* +__s +, cÚ¡ * +__acû± +è +__THROW + + +299 + `__but_¡½brk + ( +__s +, +__acû± +); + +302 +__exº_®ways_le + const * + +303 + `¡½brk + (cÚ¡ * +__s +, cÚ¡ * +__acû± +è +__THROW + + +305 + `__but_¡½brk + ( +__s +, +__acû± +); + +308 + } +} + +310 * + $¡½brk + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +311 +__THROW + +__©ibu_pu»__ + + `__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_le + * + +324 + `¡r¡r + (* +__hay¡ack +, cÚ¡ * +__ÃedË +è +__THROW + + +326 + `__but_¡r¡r + ( +__hay¡ack +, +__ÃedË +); + +329 +__exº_®ways_le + const * + +330 + `¡r¡r + (cÚ¡ * +__hay¡ack +, cÚ¡ * +__ÃedË +è +__THROW + + +332 + `__but_¡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ù +__dim +) + +344 +__THROW + + `__nÚnuÎ + ((2)); + +345 +__END_NAMESPACE_STD + + +349 * + $__¡¹ok_r + (* +__»¡riù + +__s +, + +350 cÚ¡ * +__»¡riù + +__dim +, + +351 ** +__»¡riù + +__§ve_±r +) + +352 +__THROW + + `__nÚnuÎ + ((2, 3)); + +353 #ifdeà +__USE_POSIX + + +354 * + $¡¹ok_r + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__dim +, + +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Ú¡ * +__¡rg +, +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à +defed + +__USE_XOPEN2K + && !defed +__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 + $__bzo + (* +__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 + $bzo + (* +__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à +defed + +__OPTIMIZE__ + && !defed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +470 +__exº_®ways_le + * + +471 + `dex + (* +__s +, +__c +è +__THROW + + +473 + `__but_dex + ( +__s +, +__c +); + +476 +__exº_®ways_le + const * + +477 + `dex + (cÚ¡ * +__s +, +__c +è +__THROW + + +479 + `__but_dex + ( +__s +, +__c +); + +482 + } +} + +484 * + $dex + (cÚ¡ * +__s +, +__c +) + +485 +__THROW + +__©ibu_pu»__ + + `__nÚnuÎ + ((1)); + +489 #ifdeà +__CORRECT_ISO_CPP_STRING_H_PROTO + + +492 * + `rdex + (* +__s +, +__c +) + +493 +__THROW + + `__asm + ("rdex"è +__©ibu_pu»__ + + `__nÚnuÎ + ((1)); + +494 cÚ¡ * + `rdex + (cÚ¡ * +__s +, +__c +) + +495 +__THROW + + `__asm + ("rdex"è +__©ibu_pu»__ + + `__nÚnuÎ + ((1)); + +497 #ià +defed + +__OPTIMIZE__ + && !defed +__CORRECT_ISO_CPP_STRINGS_H_PROTO + + +498 +__exº_®ways_le + * + +499 + `rdex + (* +__s +, +__c +è +__THROW + + +501 + `__but_rdex + ( +__s +, +__c +); + +504 +__exº_®ways_le + const * + +505 + `rdex + (cÚ¡ * +__s +, +__c +è +__THROW + + +507 + `__but_rdex + ( +__s +, +__c +); + +510 + } +} + +512 * + $rdex + (cÚ¡ * +__s +, +__c +) + +513 +__THROW + +__©ibu_pu»__ + + `__nÚnuÎ + ((1)); + +518 + $ffs + ( +__i +è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +522 #ifdef +__USE_GNU + + +523 + $ff¦ + ( +__l +è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +524 +__exnsiÚ__ + + $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ù + +__¡rgp +, + +553 cÚ¡ * +__»¡riù + +__dim +) + +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 + $¡rvscmp + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +580 +__THROW + +__©ibu_pu»__ + + `__nÚnuÎ + ((1, 2)); + +583 * + $¡räy + (* +__¡rg +è +__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 + (* +__fame +) + +595 +__THROW + + `__asm + ("ba£Çme"è + `__nÚnuÎ + ((1)); + +596 "C++" cÚ¡ * + $ba£Çme + (cÚ¡ * +__fame +) + +597 +__THROW + + `__asm + ("ba£Çme"è + `__nÚnuÎ + ((1)); + +599 * + $ba£Çme + (cÚ¡ * +__fame +è +__THROW + + `__nÚnuÎ + ((1)); + +605 #ià +defed + +__GNUC__ + && __GNUC__ >= 2 + +606 #ià +defed + +__OPTIMIZE__ + && !defed +__OPTIMIZE_SIZE__ + \ + +607 && ! +defed + +__NO_INLINE__ + && !defed +__ýlu¥lus + + +627 + ~<bs/¡rg.h +> + +630 + ~<bs/¡rg2.h +> + +633 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +635 + ~<bs/¡rg3.h +> + +639 #ià +defed + +__USE_GNU + && defed +__OPTIMIZE__ + \ + +640 && +defed + +__exº_®ways_le + && + $__GNUC_PREREQ + (3,2) + +641 #ià! +defed + +_FORCE_INLINES + && !defed +_HAVE_STRING_ARCH_mempýy + + +643 #undeà +mempýy + + +644 #undeà +__mempýy + + +645 + #mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy_le + (de¡, src,) + + ) + +646 + #__mempýy +( +de¡ +, +¤c +, +n +è + `__mempýy_le + (de¡, src,) + + ) + +648 +__exº_®ways_le + * + +649 + $__mempýy_le + (* +__»¡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 + ~<sys/ty³s.h +> + +26 + ~<lims.h +> + +27 + ~<dn.h +> + +28 + ~<sigÇl.h +> + +31 + ~<bs/·¿m.h +> + +36 + #NBBY + +CHAR_BIT + + + ) + +38 #ià! +defed + +NGROUPS + && defed +NGROUPS_MAX + + +39 + #NGROUPS + +NGROUPS_MAX + + + ) + +41 #ià! +defed + +MAXSYMLINKS + && defed +SYMLOOP_MAX + + +42 + #MAXSYMLINKS + +SYMLOOP_MAX + + + ) + +44 #ià! +defed + +CANBSIZ + && defed +MAX_CANON + + +45 + #CANBSIZ + +MAX_CANON + + + ) + +47 #ià! +defed + +MAXPATHLEN + && defed +PATH_MAX + + +48 + #MAXPATHLEN + +PATH_MAX + + + ) + +50 #ià! +defed + +NOFILE + && defed +OPEN_MAX + + +51 + #NOFILE + +OPEN_MAX + + + ) + +53 #ià! +defed + +MAXHOSTNAMELEN + && defed +HOST_NAME_MAX + + +54 + #MAXHOSTNAMELEN + +HOST_NAME_MAX + + + ) + +56 #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 +è( + `__but_cÚ¡ªt_p + (yè&& + `powof2 + (y) \ + +94 ? ((( +x +è+ ( +y +) - 1) & ~((y) - 1)) \ + +95 : (((( +x +è+ (( +y +è- 1)è/ (y)è* (y))) + + ) + +97 + #roundup +( +x +, +y +è((((xè+ ((yè- 1)è/ (y)è* (y)) + + ) + +99 + #powof2 +( +x +è((((xè- 1è& (x)è=ð0) + + ) + +102 + #MIN +( +a +, +b +è((×)<(b))?×):(b)) + + ) + +103 + #MAX +( +a +, +b +è((×)>(b))?×):(b)) + + ) + + @/usr/include/sys/queue.h + +32 #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 +( +hd +) \ + +90 { +NULL + } + + ) + +92 + #LIST_ENTRY +( +ty³ +) \ + +94 +ty³ + * +Ë_Ãxt +; \ + +95 +ty³ + ** +Ë_´ev +; \ + +96 } + + ) + +101 + #LIST_INIT +( +hd +) do { \ + +102 ( +hd +)-> +lh_f¡ + = +NULL +; \ + +103 } 0) + + ) + +105 + #LIST_INSERT_AFTER +( +li¡m +, +m +, +fld +) do { \ + +106 ià((( +m +)-> +fld +. +Ë_Ãxt + = ( +li¡m +)->fld.Ë_Ãxtè!ð +NULL +) \ + +107 ( +li¡m +)-> +fld +. +Ë_Ãxt +->fld. +Ë_´ev + = \ + +108 &( +m +)-> +fld +. +Ë_Ãxt +; \ + +109 ( +li¡m +)-> +fld +. +Ë_Ãxt + = ( +m +); \ + +110 ( +m +)-> +fld +. +Ë_´ev + = &( +li¡m +)->fld. +Ë_Ãxt +; \ + +111 } 0) + + ) + +113 + #LIST_INSERT_BEFORE +( +li¡m +, +m +, +fld +) do { \ + +114 ( +m +)-> +fld +. +Ë_´ev + = ( +li¡m +)->field.le_prev; \ + +115 ( +m +)-> +fld +. +Ë_Ãxt + = ( +li¡m +); \ + +116 *( +li¡m +)-> +fld +. +Ë_´ev + = ( +m +); \ + +117 ( +li¡m +)-> +fld +. +Ë_´ev + = &( +m +)->fld. +Ë_Ãxt +; \ + +118 } 0) + + ) + +120 + #LIST_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +121 ià((( +m +)-> +fld +. +Ë_Ãxt + = ( +hd +)-> +lh_f¡ +è!ð +NULL +) \ + +122 ( +hd +)-> +lh_f¡ +-> +fld +. +Ë_´ev + = &( +m +)->fld. +Ë_Ãxt +;\ + +123 ( +hd +)-> +lh_f¡ + = ( +m +); \ + +124 ( +m +)-> +fld +. +Ë_´ev + = &( +hd +)-> +lh_f¡ +; \ + +125 } 0) + + ) + +127 + #LIST_REMOVE +( +m +, +fld +) do { \ + +128 ià(( +m +)-> +fld +. +Ë_Ãxt + !ð +NULL +) \ + +129 ( +m +)-> +fld +. +Ë_Ãxt +->fld. +Ë_´ev + = \ + +130 ( +m +)-> +fld +. +Ë_´ev +; \ + +131 *( +m +)-> +fld +. +Ë_´ev + = (m)->fld. +Ë_Ãxt +; \ + +132 } 0) + + ) + +134 + #LIST_FOREACH +( +v¬ +, +hd +, +fld +) \ + +135 ( +v¬ +èð(( +hd +)-> +lh_f¡ +); \ + +136 ( +v¬ +); \ + +137 ( +v¬ +èð((v¬)-> +fld +. +Ë_Ãxt +)) + + ) + +142 + #LIST_EMPTY +( +hd +è((hd)-> +lh_f¡ + =ð +NULL +) + + ) + +143 + #LIST_FIRST +( +hd +è((hd)-> +lh_f¡ +) + + ) + +144 + #LIST_NEXT +( +m +, +fld +è(Ólm)->fld. +Ë_Ãxt +) + + ) + +150 + #SLIST_HEAD +( +Çme +, +ty³ +) \ + +151 + sÇme + { \ + +152 +ty³ + * +¦h_f¡ +; \ + +153 } + + ) + +155 + #SLIST_HEAD_INITIALIZER +( +hd +) \ + +156 { +NULL + } + + ) + +158 + #SLIST_ENTRY +( +ty³ +) \ + +160 +ty³ + * +¦e_Ãxt +; \ + +161 } + + ) + +166 + #SLIST_INIT +( +hd +) do { \ + +167 ( +hd +)-> +¦h_f¡ + = +NULL +; \ + +168 } 0) + + ) + +170 + #SLIST_INSERT_AFTER +( +¦i¡m +, +m +, +fld +) do { \ + +171 ( +m +)-> +fld +. +¦e_Ãxt + = ( +¦i¡m +)->field.sle_next; \ + +172 ( +¦i¡m +)-> +fld +. +¦e_Ãxt + = ( +m +); \ + +173 } 0) + + ) + +175 + #SLIST_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +176 ( +m +)-> +fld +. +¦e_Ãxt + = ( +hd +)-> +¦h_f¡ +; \ + +177 ( +hd +)-> +¦h_f¡ + = ( +m +); \ + +178 } 0) + + ) + +180 + #SLIST_REMOVE_HEAD +( +hd +, +fld +) do { \ + +181 ( +hd +)-> +¦h_f¡ + = (hd)->¦h_f¡-> +fld +. +¦e_Ãxt +; \ + +182 } 0) + + ) + +184 + #SLIST_REMOVE +( +hd +, +m +, +ty³ +, +fld +) do { \ + +185 ià(( +hd +)-> +¦h_f¡ + =ð( +m +)) { \ + +186 + `SLIST_REMOVE_HEAD +(( +hd +), +fld +); \ + +189 +ty³ + * +cu»lm + = ( +hd +)-> +¦h_f¡ +; \ + +190 +cu»lm +-> +fld +. +¦e_Ãxt + !ð( +m +)) \ + +191 +cu»lm + = cu»lm-> +fld +. +¦e_Ãxt +; \ + +192 +cu»lm +-> +fld +. +¦e_Ãxt + = \ + +193 +cu»lm +-> +fld +. +¦e_Ãxt +->field.sle_next; \ + +195 } 0) + + ) + +197 + #SLIST_FOREACH +( +v¬ +, +hd +, +fld +) \ + +198 ( +v¬ +èð( +hd +)-> +¦h_f¡ +; (v¬); (v¬èð(v¬)-> +fld +. +¦e_Ãxt +) + + ) + +203 + #SLIST_EMPTY +( +hd +è((hd)-> +¦h_f¡ + =ð +NULL +) + + ) + +204 + #SLIST_FIRST +( +hd +è((hd)-> +¦h_f¡ +) + + ) + +205 + #SLIST_NEXT +( +m +, +fld +è(Ólm)->fld. +¦e_Ãxt +) + + ) + +211 + #STAILQ_HEAD +( +Çme +, +ty³ +) \ + +212 + sÇme + { \ + +213 +ty³ + * +¡qh_f¡ +; \ + +214 +ty³ + ** +¡qh_Ï¡ +; \ + +215 } + + ) + +217 + #STAILQ_HEAD_INITIALIZER +( +hd +) \ + +218 { +NULL +, &( +hd +). +¡qh_f¡ + } + + ) + +220 + #STAILQ_ENTRY +( +ty³ +) \ + +222 +ty³ + * +¡qe_Ãxt +; \ + +223 } + + ) + +228 + #STAILQ_INIT +( +hd +) do { \ + +229 ( +hd +)-> +¡qh_f¡ + = +NULL +; \ + +230 ( +hd +)-> +¡qh_Ï¡ + = &(hd)-> +¡qh_f¡ +; \ + +231 } 0) + + ) + +233 + #STAILQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +234 ià((( +m +)-> +fld +. +¡qe_Ãxt + = ( +hd +)-> +¡qh_f¡ +è=ð +NULL +) \ + +235 ( +hd +)-> +¡qh_Ï¡ + = &( +m +)-> +fld +. +¡qe_Ãxt +; \ + +236 ( +hd +)-> +¡qh_f¡ + = ( +m +); \ + +237 } 0) + + ) + +239 + #STAILQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +240 ( +m +)-> +fld +. +¡qe_Ãxt + = +NULL +; \ + +241 *( +hd +)-> +¡qh_Ï¡ + = ( +m +); \ + +242 ( +hd +)-> +¡qh_Ï¡ + = &( +m +)-> +fld +. +¡qe_Ãxt +; \ + +243 } 0) + + ) + +245 + #STAILQ_INSERT_AFTER +( +hd +, +li¡m +, +m +, +fld +) do { \ + +246 ià((( +m +)-> +fld +. +¡qe_Ãxt + = ( +li¡m +)->fld.¡qe_Ãxtè=ð +NULL +)\ + +247 ( +hd +)-> +¡qh_Ï¡ + = &( +m +)-> +fld +. +¡qe_Ãxt +; \ + +248 ( +li¡m +)-> +fld +. +¡qe_Ãxt + = ( +m +); \ + +249 } 0) + + ) + +251 + #STAILQ_REMOVE_HEAD +( +hd +, +fld +) do { \ + +252 ià((( +hd +)-> +¡qh_f¡ + = (hd)->¡qh_f¡-> +fld +. +¡qe_Ãxt +è=ð +NULL +) \ + +253 ( +hd +)-> +¡qh_Ï¡ + = &(hd)-> +¡qh_f¡ +; \ + +254 } 0) + + ) + +256 + #STAILQ_REMOVE +( +hd +, +m +, +ty³ +, +fld +) do { \ + +257 ià(( +hd +)-> +¡qh_f¡ + =ð( +m +)) { \ + +258 + `STAILQ_REMOVE_HEAD +(( +hd +), +fld +); \ + +260 +ty³ + * +cu»lm + = ( +hd +)-> +¡qh_f¡ +; \ + +261 +cu»lm +-> +fld +. +¡qe_Ãxt + !ð( +m +)) \ + +262 +cu»lm + = cu»lm-> +fld +. +¡qe_Ãxt +; \ + +263 ià(( +cu»lm +-> +fld +. +¡qe_Ãxt + = \ + +264 +cu»lm +-> +fld +. +¡qe_Ãxt +->fld.¡qe_Ãxtè=ð +NULL +) \ + +265 ( +hd +)-> +¡qh_Ï¡ + = &( +cu»lm +)-> +fld +. +¡qe_Ãxt +; \ + +267 } 0) + + ) + +269 + #STAILQ_FOREACH +( +v¬ +, +hd +, +fld +) \ + +270 ( +v¬ +èð(( +hd +)-> +¡qh_f¡ +); \ + +271 ( +v¬ +); \ + +272 ( +v¬ +èð((v¬)-> +fld +. +¡qe_Ãxt +)) + + ) + +274 + #STAILQ_CONCAT +( +hd1 +, +hd2 +) do { \ + +275 ià(! + `STAILQ_EMPTY +(( +hd2 +))) { \ + +276 *( +hd1 +)-> +¡qh_Ï¡ + = ( +hd2 +)-> +¡qh_f¡ +; \ + +277 ( +hd1 +)-> +¡qh_Ï¡ + = ( +hd2 +)->stqh_last; \ + +278 + `STAILQ_INIT +(( +hd2 +)); \ + +280 } 0) + + ) + +285 + #STAILQ_EMPTY +( +hd +è((hd)-> +¡qh_f¡ + =ð +NULL +) + + ) + +286 + #STAILQ_FIRST +( +hd +è((hd)-> +¡qh_f¡ +) + + ) + +287 + #STAILQ_NEXT +( +m +, +fld +è(Ólm)->fld. +¡qe_Ãxt +) + + ) + +293 + #SIMPLEQ_HEAD +( +Çme +, +ty³ +) \ + +294 + sÇme + { \ + +295 +ty³ + * +sqh_f¡ +; \ + +296 +ty³ + ** +sqh_Ï¡ +; \ + +297 } + + ) + +299 + #SIMPLEQ_HEAD_INITIALIZER +( +hd +) \ + +300 { +NULL +, &( +hd +). +sqh_f¡ + } + + ) + +302 + #SIMPLEQ_ENTRY +( +ty³ +) \ + +304 +ty³ + * +sqe_Ãxt +; \ + +305 } + + ) + +310 + #SIMPLEQ_INIT +( +hd +) do { \ + +311 ( +hd +)-> +sqh_f¡ + = +NULL +; \ + +312 ( +hd +)-> +sqh_Ï¡ + = &(hd)-> +sqh_f¡ +; \ + +313 } 0) + + ) + +315 + #SIMPLEQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +316 ià((( +m +)-> +fld +. +sqe_Ãxt + = ( +hd +)-> +sqh_f¡ +è=ð +NULL +) \ + +317 ( +hd +)-> +sqh_Ï¡ + = &( +m +)-> +fld +. +sqe_Ãxt +; \ + +318 ( +hd +)-> +sqh_f¡ + = ( +m +); \ + +319 } 0) + + ) + +321 + #SIMPLEQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +322 ( +m +)-> +fld +. +sqe_Ãxt + = +NULL +; \ + +323 *( +hd +)-> +sqh_Ï¡ + = ( +m +); \ + +324 ( +hd +)-> +sqh_Ï¡ + = &( +m +)-> +fld +. +sqe_Ãxt +; \ + +325 } 0) + + ) + +327 + #SIMPLEQ_INSERT_AFTER +( +hd +, +li¡m +, +m +, +fld +) do { \ + +328 ià((( +m +)-> +fld +. +sqe_Ãxt + = ( +li¡m +)->fld.sqe_Ãxtè=ð +NULL +)\ + +329 ( +hd +)-> +sqh_Ï¡ + = &( +m +)-> +fld +. +sqe_Ãxt +; \ + +330 ( +li¡m +)-> +fld +. +sqe_Ãxt + = ( +m +); \ + +331 } 0) + + ) + +333 + #SIMPLEQ_REMOVE_HEAD +( +hd +, +fld +) do { \ + +334 ià((( +hd +)-> +sqh_f¡ + = (hd)->sqh_f¡-> +fld +. +sqe_Ãxt +è=ð +NULL +) \ + +335 ( +hd +)-> +sqh_Ï¡ + = &(hd)-> +sqh_f¡ +; \ + +336 } 0) + + ) + +338 + #SIMPLEQ_REMOVE +( +hd +, +m +, +ty³ +, +fld +) do { \ + +339 ià(( +hd +)-> +sqh_f¡ + =ð( +m +)) { \ + +340 + `SIMPLEQ_REMOVE_HEAD +(( +hd +), +fld +); \ + +342 +ty³ + * +cu»lm + = ( +hd +)-> +sqh_f¡ +; \ + +343 +cu»lm +-> +fld +. +sqe_Ãxt + !ð( +m +)) \ + +344 +cu»lm + = cu»lm-> +fld +. +sqe_Ãxt +; \ + +345 ià(( +cu»lm +-> +fld +. +sqe_Ãxt + = \ + +346 +cu»lm +-> +fld +. +sqe_Ãxt +->fld.sqe_Ãxtè=ð +NULL +) \ + +347 ( +hd +)-> +sqh_Ï¡ + = &( +cu»lm +)-> +fld +. +sqe_Ãxt +; \ + +349 } 0) + + ) + +351 + #SIMPLEQ_FOREACH +( +v¬ +, +hd +, +fld +) \ + +352 ( +v¬ +èð(( +hd +)-> +sqh_f¡ +); \ + +353 ( +v¬ +); \ + +354 ( +v¬ +èð((v¬)-> +fld +. +sqe_Ãxt +)) + + ) + +359 + #SIMPLEQ_EMPTY +( +hd +è((hd)-> +sqh_f¡ + =ð +NULL +) + + ) + +360 + #SIMPLEQ_FIRST +( +hd +è((hd)-> +sqh_f¡ +) + + ) + +361 + #SIMPLEQ_NEXT +( +m +, +fld +è(Ólm)->fld. +sqe_Ãxt +) + + ) + +367 + #_TAILQ_HEAD +( +Çme +, +ty³ +, +qu® +) \ + +368 + 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 +( +hd +) \ + +375 { +NULL +, &( +hd +). +tqh_f¡ + } + + ) + +377 + #_TAILQ_ENTRY +( +ty³ +, +qu® +) \ + +379 +qu® + +ty³ + * +tqe_Ãxt +; \ + +380 +qu® + +ty³ + *qu® * +tqe_´ev +; \ + +381 } + + ) + +382 + #TAILQ_ENTRY +( +ty³ +è + `_TAILQ_ENTRY +(ty³,) + + ) + +387 + #TAILQ_INIT +( +hd +) do { \ + +388 ( +hd +)-> +tqh_f¡ + = +NULL +; \ + +389 ( +hd +)-> +tqh_Ï¡ + = &(hd)-> +tqh_f¡ +; \ + +390 } 0) + + ) + +392 + #TAILQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +393 ià((( +m +)-> +fld +. +tqe_Ãxt + = ( +hd +)-> +tqh_f¡ +è!ð +NULL +) \ + +394 ( +hd +)-> +tqh_f¡ +-> +fld +. +tqe_´ev + = \ + +395 &( +m +)-> +fld +. +tqe_Ãxt +; \ + +397 ( +hd +)-> +tqh_Ï¡ + = &( +m +)-> +fld +. +tqe_Ãxt +; \ + +398 ( +hd +)-> +tqh_f¡ + = ( +m +); \ + +399 ( +m +)-> +fld +. +tqe_´ev + = &( +hd +)-> +tqh_f¡ +; \ + +400 } 0) + + ) + +402 + #TAILQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +403 ( +m +)-> +fld +. +tqe_Ãxt + = +NULL +; \ + +404 ( +m +)-> +fld +. +tqe_´ev + = ( +hd +)-> +tqh_Ï¡ +; \ + +405 *( +hd +)-> +tqh_Ï¡ + = ( +m +); \ + +406 ( +hd +)-> +tqh_Ï¡ + = &( +m +)-> +fld +. +tqe_Ãxt +; \ + +407 } 0) + + ) + +409 + #TAILQ_INSERT_AFTER +( +hd +, +li¡m +, +m +, +fld +) do { \ + +410 ià((( +m +)-> +fld +. +tqe_Ãxt + = ( +li¡m +)->fld.tqe_Ãxtè!ð +NULL +)\ + +411 ( +m +)-> +fld +. +tqe_Ãxt +->fld. +tqe_´ev + = \ + +412 &( +m +)-> +fld +. +tqe_Ãxt +; \ + +414 ( +hd +)-> +tqh_Ï¡ + = &( +m +)-> +fld +. +tqe_Ãxt +; \ + +415 ( +li¡m +)-> +fld +. +tqe_Ãxt + = ( +m +); \ + +416 ( +m +)-> +fld +. +tqe_´ev + = &( +li¡m +)->fld. +tqe_Ãxt +; \ + +417 } 0) + + ) + +419 + #TAILQ_INSERT_BEFORE +( +li¡m +, +m +, +fld +) do { \ + +420 ( +m +)-> +fld +. +tqe_´ev + = ( +li¡m +)->field.tqe_prev; \ + +421 ( +m +)-> +fld +. +tqe_Ãxt + = ( +li¡m +); \ + +422 *( +li¡m +)-> +fld +. +tqe_´ev + = ( +m +); \ + +423 ( +li¡m +)-> +fld +. +tqe_´ev + = &( +m +)->fld. +tqe_Ãxt +; \ + +424 } 0) + + ) + +426 + #TAILQ_REMOVE +( +hd +, +m +, +fld +) do { \ + +427 ià((( +m +)-> +fld +. +tqe_Ãxt +è!ð +NULL +) \ + +428 ( +m +)-> +fld +. +tqe_Ãxt +->fld. +tqe_´ev + = \ + +429 ( +m +)-> +fld +. +tqe_´ev +; \ + +431 ( +hd +)-> +tqh_Ï¡ + = ( +m +)-> +fld +. +tqe_´ev +; \ + +432 *( +m +)-> +fld +. +tqe_´ev + = (m)->fld. +tqe_Ãxt +; \ + +433 } 0) + + ) + +435 + #TAILQ_FOREACH +( +v¬ +, +hd +, +fld +) \ + +436 ( +v¬ +èð(( +hd +)-> +tqh_f¡ +); \ + +437 ( +v¬ +); \ + +438 ( +v¬ +èð((v¬)-> +fld +. +tqe_Ãxt +)) + + ) + +440 + #TAILQ_FOREACH_REVERSE +( +v¬ +, +hd +, +hdÇme +, +fld +) \ + +441 ( +v¬ +èð(*((( +hdÇme + *)(( +hd +)-> +tqh_Ï¡ +))->tqh_last)); \ + +442 ( +v¬ +); \ + +443 ( +v¬ +èð(*((( +hdÇme + *)((v¬)-> +fld +. +tqe_´ev +))-> +tqh_Ï¡ +))) + + ) + +445 + #TAILQ_CONCAT +( +hd1 +, +hd2 +, +fld +) do { \ + +446 ià(! + `TAILQ_EMPTY +( +hd2 +)) { \ + +447 *( +hd1 +)-> +tqh_Ï¡ + = ( +hd2 +)-> +tqh_f¡ +; \ + +448 ( +hd2 +)-> +tqh_f¡ +-> +fld +. +tqe_´ev + = ( +hd1 +)-> +tqh_Ï¡ +; \ + +449 ( +hd1 +)-> +tqh_Ï¡ + = ( +hd2 +)->tqh_last; \ + +450 + `TAILQ_INIT +(( +hd2 +)); \ + +452 } 0) + + ) + +457 + #TAILQ_EMPTY +( +hd +è((hd)-> +tqh_f¡ + =ð +NULL +) + + ) + +458 + #TAILQ_FIRST +( +hd +è((hd)-> +tqh_f¡ +) + + ) + +459 + #TAILQ_NEXT +( +m +, +fld +è(Ólm)->fld. +tqe_Ãxt +) + + ) + +461 + #TAILQ_LAST +( +hd +, +hdÇme +) \ + +462 (*((( +hdÇme + *)(( +hd +)-> +tqh_Ï¡ +))->tqh_Ï¡)) + + ) + +463 + #TAILQ_PREV +( +m +, +hdÇme +, +fld +) \ + +464 (*((( +hdÇme + *)(( +m +)-> +fld +. +tqe_´ev +))-> +tqh_Ï¡ +)) + + ) + +470 + #CIRCLEQ_HEAD +( +Çme +, +ty³ +) \ + +471 + sÇme + { \ + +472 +ty³ + * +cqh_f¡ +; \ + +473 +ty³ + * +cqh_Ï¡ +; \ + +474 } + + ) + +476 + #CIRCLEQ_HEAD_INITIALIZER +( +hd +) \ + +477 { (*)& +hd +, (*)&hd } + + ) + +479 + #CIRCLEQ_ENTRY +( +ty³ +) \ + +481 +ty³ + * +cqe_Ãxt +; \ + +482 +ty³ + * +cqe_´ev +; \ + +483 } + + ) + +488 + #CIRCLEQ_INIT +( +hd +) do { \ + +489 ( +hd +)-> +cqh_f¡ + = (*)(head); \ + +490 ( +hd +)-> +cqh_Ï¡ + = (*)(head); \ + +491 } 0) + + ) + +493 + #CIRCLEQ_INSERT_AFTER +( +hd +, +li¡m +, +m +, +fld +) do { \ + +494 ( +m +)-> +fld +. +cqe_Ãxt + = ( +li¡m +)->field.cqe_next; \ + +495 ( +m +)-> +fld +. +cqe_´ev + = ( +li¡m +); \ + +496 ià(( +li¡m +)-> +fld +. +cqe_Ãxt + =ð(*)( +hd +)) \ + +497 ( +hd +)-> +cqh_Ï¡ + = ( +m +); \ + +499 ( +li¡m +)-> +fld +. +cqe_Ãxt +->fld. +cqe_´ev + = ( +m +); \ + +500 ( +li¡m +)-> +fld +. +cqe_Ãxt + = ( +m +); \ + +501 } 0) + + ) + +503 + #CIRCLEQ_INSERT_BEFORE +( +hd +, +li¡m +, +m +, +fld +) do { \ + +504 ( +m +)-> +fld +. +cqe_Ãxt + = ( +li¡m +); \ + +505 ( +m +)-> +fld +. +cqe_´ev + = ( +li¡m +)->field.cqe_prev; \ + +506 ià(( +li¡m +)-> +fld +. +cqe_´ev + =ð(*)( +hd +)) \ + +507 ( +hd +)-> +cqh_f¡ + = ( +m +); \ + +509 ( +li¡m +)-> +fld +. +cqe_´ev +->fld. +cqe_Ãxt + = ( +m +); \ + +510 ( +li¡m +)-> +fld +. +cqe_´ev + = ( +m +); \ + +511 } 0) + + ) + +513 + #CIRCLEQ_INSERT_HEAD +( +hd +, +m +, +fld +) do { \ + +514 ( +m +)-> +fld +. +cqe_Ãxt + = ( +hd +)-> +cqh_f¡ +; \ + +515 ( +m +)-> +fld +. +cqe_´ev + = (*)( +hd +); \ + +516 ià(( +hd +)-> +cqh_Ï¡ + == (*)(head)) \ + +517 ( +hd +)-> +cqh_Ï¡ + = ( +m +); \ + +519 ( +hd +)-> +cqh_f¡ +-> +fld +. +cqe_´ev + = ( +m +); \ + +520 ( +hd +)-> +cqh_f¡ + = ( +m +); \ + +521 } 0) + + ) + +523 + #CIRCLEQ_INSERT_TAIL +( +hd +, +m +, +fld +) do { \ + +524 ( +m +)-> +fld +. +cqe_Ãxt + = (*)( +hd +); \ + +525 ( +m +)-> +fld +. +cqe_´ev + = ( +hd +)-> +cqh_Ï¡ +; \ + +526 ià(( +hd +)-> +cqh_f¡ + == (*)(head)) \ + +527 ( +hd +)-> +cqh_f¡ + = ( +m +); \ + +529 ( +hd +)-> +cqh_Ï¡ +-> +fld +. +cqe_Ãxt + = ( +m +); \ + +530 ( +hd +)-> +cqh_Ï¡ + = ( +m +); \ + +531 } 0) + + ) + +533 + #CIRCLEQ_REMOVE +( +hd +, +m +, +fld +) do { \ + +534 ià(( +m +)-> +fld +. +cqe_Ãxt + =ð(*)( +hd +)) \ + +535 ( +hd +)-> +cqh_Ï¡ + = ( +m +)-> +fld +. +cqe_´ev +; \ + +537 ( +m +)-> +fld +. +cqe_Ãxt +->fld. +cqe_´ev + = \ + +538 ( +m +)-> +fld +. +cqe_´ev +; \ + +539 ià(( +m +)-> +fld +. +cqe_´ev + =ð(*)( +hd +)) \ + +540 ( +hd +)-> +cqh_f¡ + = ( +m +)-> +fld +. +cqe_Ãxt +; \ + +542 ( +m +)-> +fld +. +cqe_´ev +->fld. +cqe_Ãxt + = \ + +543 ( +m +)-> +fld +. +cqe_Ãxt +; \ + +544 } 0) + + ) + +546 + #CIRCLEQ_FOREACH +( +v¬ +, +hd +, +fld +) \ + +547 ( +v¬ +èð(( +hd +)-> +cqh_f¡ +); \ + +548 ( +v¬ +è!ð(cÚ¡ *)( +hd +); \ + +549 ( +v¬ +èð((v¬)-> +fld +. +cqe_Ãxt +)) + + ) + +551 + #CIRCLEQ_FOREACH_REVERSE +( +v¬ +, +hd +, +fld +) \ + +552 ( +v¬ +èð(( +hd +)-> +cqh_Ï¡ +); \ + +553 ( +v¬ +è!ð(cÚ¡ *)( +hd +); \ + +554 ( +v¬ +èð((v¬)-> +fld +. +cqe_´ev +)) + + ) + +559 + #CIRCLEQ_EMPTY +( +hd +è((hd)-> +cqh_f¡ + =ð(*)(hd)) + + ) + +560 + #CIRCLEQ_FIRST +( +hd +è((hd)-> +cqh_f¡ +) + + ) + +561 + #CIRCLEQ_LAST +( +hd +è((hd)-> +cqh_Ï¡ +) + + ) + +562 + #CIRCLEQ_NEXT +( +m +, +fld +è(Ólm)->fld. +cqe_Ãxt +) + + ) + +563 + #CIRCLEQ_PREV +( +m +, +fld +è(Ólm)->fld. +cqe_´ev +) + + ) + +565 + #CIRCLEQ_LOOP_NEXT +( +hd +, +m +, +fld +) \ + +566 ((( +m +)-> +fld +. +cqe_Ãxt + =ð(*)( +hd +)) \ + +567 ? (( +hd +)-> +cqh_f¡ +) \ + +568 : ( +m +-> +fld +. +cqe_Ãxt +)) + + ) + +569 + #CIRCLEQ_LOOP_PREV +( +hd +, +m +, +fld +) \ + +570 ((( +m +)-> +fld +. +cqe_´ev + =ð(*)( +hd +)) \ + +571 ? (( +hd +)-> +cqh_Ï¡ +) \ + +572 : ( +m +-> +fld +. +cqe_´ev +)) + + ) + + @/usr/include/sys/socket.h + +19 #iâdef +_SYS_SOCKET_H + + +20 + #_SYS_SOCKET_H + 1 + + ) + +22 + ~<ã©u»s.h +> + +24 + g__BEGIN_DECLS + + +26 + ~<sys/uio.h +> + +27 + #__Ãed_size_t + + + ) + +28 + ~<¡ddef.h +> + +29 #ifdeà +__USE_GNU + + +31 + ~<bs/sig£t.h +> + +38 + ~<bs/sock.h +> + +40 #ifdeà +__USE_MISC + + +43 + sosockaddr + + +45 + m§_çmy +; + +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à +defed + +__ýlu¥lus + || ! +__GNUC_PREREQ + (2, 7è|| !defed +__USE_GNU + + +69 + #__SOCKADDR_ARG + +sockaddr + * +__»¡riù + + + ) + +70 + #__CONST_SOCKADDR_ARG + cÚ¡ +sockaddr + * + + ) + +74 + #__SOCKADDR_ALLTYPES + \ + +75 + `__SOCKADDR_ONETYPE + ( +sockaddr +) \ + +76 + `__SOCKADDR_ONETYPE + ( +sockaddr_© +) \ + +77 + `__SOCKADDR_ONETYPE + ( +sockaddr_ax25 +) \ + +78 + `__SOCKADDR_ONETYPE + ( +sockaddr_dl +) \ + +79 + `__SOCKADDR_ONETYPE + ( +sockaddr_eÚ +) \ + +80 + `__SOCKADDR_ONETYPE + ( +sockaddr_ +) \ + +81 + `__SOCKADDR_ONETYPE + ( +sockaddr_6 +) \ + +82 + `__SOCKADDR_ONETYPE + ( +sockaddr_¬p +) \ + +83 + `__SOCKADDR_ONETYPE + ( +sockaddr_x +) \ + +84 + `__SOCKADDR_ONETYPE + ( +sockaddr_iso +) \ + +85 + `__SOCKADDR_ONETYPE + ( +sockaddr_ns +) \ + +86 + `__SOCKADDR_ONETYPE + ( +sockaddr_un +) \ + +87 + `__SOCKADDR_ONETYPE + ( +sockaddr_x25 +) + + ) + +89 + #__SOCKADDR_ONETYPE +( +ty³ +èty³ * +__»¡riù + +__ +##ty³##__; + + ) + +90 uniÚ { + m__SOCKADDR_ALLTYPES + + +91 } + t__SOCKADDR_ARG + + t__©ibu__ + (( + t__ª¥¬t_uniÚ__ +)); + +92 #undeà +__SOCKADDR_ONETYPE + + +93 + #__SOCKADDR_ONETYPE +( +ty³ +ècÚ¡ ty³ * +__»¡riù + +__ +##ty³##__; + + ) + +94 uniÚ { + m__SOCKADDR_ALLTYPES + + +95 } + t__CONST_SOCKADDR_ARG + + t__©ibu__ + (( + t__ª¥¬t_uniÚ__ +)); + +96 #undeà +__SOCKADDR_ONETYPE + + +99 #ifdeà +__USE_GNU + + +101 + smmsghdr + + +103 +msghdr + + mmsg_hdr +; + +104 + mmsg_Ën +; + +113 + $sock + ( +__doma +, +__ty³ +, +__´ÙocÞ +è +__THROW +; + +119 + $sock· + ( +__doma +, +__ty³ +, +__´ÙocÞ +, + +120 +__fds +[2]è +__THROW +; + +123 + $bd + ( +__fd +, +__CONST_SOCKADDR_ARG + +__addr +, +sockËn_t + +__Ën +) + +124 +__THROW +; + +127 + $gsockÇ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 + $gsockÝ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 && +defed + +__fÜtify_funùiÚ + + +280 + ~<bs/sock2.h +> + +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 + ~<bs/ty³s.h +> + +31 #ifdef +__USE_MISC + + +32 #iâdeà +__u_ch¬_defed + + +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¬_defed + + + ) + +44 +__loff_t + + tloff_t +; + +46 #iâdeà +__o_t_defed + + +47 #iâdeà +__USE_FILE_OFFSET64 + + +48 +__o_t + + to_t +; + +50 +__o64_t + + to_t +; + +52 + #__o_t_defed + + + ) + +54 #ià +defed + +__USE_LARGEFILE64 + && !defed +__o64_t_defed + + +55 +__o64_t + + to64_t +; + +56 + #__o64_t_defed + + + ) + +59 #iâdeà +__dev_t_defed + + +60 +__dev_t + + tdev_t +; + +61 + #__dev_t_defed + + + ) + +64 #iâdeà +__gid_t_defed + + +65 +__gid_t + + tgid_t +; + +66 + #__gid_t_defed + + + ) + +69 #iâdeà +__mode_t_defed + + +70 +__mode_t + + tmode_t +; + +71 + #__mode_t_defed + + + ) + +74 #iâdeà +__Æk_t_defed + + +75 +__Æk_t + + tÆk_t +; + +76 + #__Æk_t_defed + + + ) + +79 #iâdeà +__uid_t_defed + + +80 +__uid_t + + tuid_t +; + +81 + #__uid_t_defed + + + ) + +84 #iâdeà +__off_t_defed + + +85 #iâdeà +__USE_FILE_OFFSET64 + + +86 +__off_t + + toff_t +; + +88 +__off64_t + + toff_t +; + +90 + #__off_t_defed + + + ) + +92 #ià +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +93 +__off64_t + + toff64_t +; + +94 + #__off64_t_defed + + + ) + +97 #iâdeà +__pid_t_defed + + +98 +__pid_t + + tpid_t +; + +99 + #__pid_t_defed + + + ) + +102 #ià( +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 +) \ + +103 && ! +defed + +__id_t_defed + + +104 +__id_t + + tid_t +; + +105 + #__id_t_defed + + + ) + +108 #iâdeà +__ssize_t_defed + + +109 +__ssize_t + + tssize_t +; + +110 + #__ssize_t_defed + + + ) + +113 #ifdef +__USE_MISC + + +114 #iâdeà +__daddr_t_defed + + +115 +__daddr_t + + tdaddr_t +; + +116 +__ÿddr_t + + tÿddr_t +; + +117 + #__daddr_t_defed + + + ) + +121 #ià( +defed + +__USE_MISC + || defed +__USE_XOPEN +è&& !defed +__key_t_defed + + +122 +__key_t + + tkey_t +; + +123 + #__key_t_defed + + + ) + +126 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +127 + #__Ãed_þock_t + + + ) + +129 + #__Ãed_time_t + + + ) + +130 + #__Ãed_tim_t + + + ) + +131 + #__Ãed_þockid_t + + + ) + +132 + ~<time.h +> + +134 #ifdeà +__USE_XOPEN + + +135 #iâdeà +__u£cÚds_t_defed + + +136 +__u£cÚds_t + + tu£cÚds_t +; + +137 + #__u£cÚds_t_defed + + + ) + +139 #iâdeà +__su£cÚds_t_defed + + +140 +__su£cÚds_t + + tsu£cÚds_t +; + +141 + #__su£cÚds_t_defed + + + ) + +145 + #__Ãed_size_t + + + ) + +146 + ~<¡ddef.h +> + +148 #ifdeà +__USE_MISC + + +150 + tulÚg +; + +151 + tushÜt +; + +152 + tut +; + +157 #ià! +__GNUC_PREREQ + (2, 7) + +160 #iâdeà +__t8_t_defed + + +161 + #__t8_t_defed + + + ) + +162 + tt8_t +; + +163 + tt16_t +; + +164 + tt32_t +; + +165 #ià +__WORDSIZE + == 64 + +166 + tt64_t +; + +168 +__exnsiÚ__ + + tt64_t +; + +173 + tu_t8_t +; + +174 + tu_t16_t +; + +175 + tu_t32_t +; + +176 #ià +__WORDSIZE + == 64 + +177 + tu_t64_t +; + +179 +__exnsiÚ__ + + tu_t64_t +; + +182 + 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_defed + + +193 + t__t8_t_defed + + + ) + +194 + t__tN_t + (8, + t__QI__ +); + +195 +__tN_t + (16, +__HI__ +); + +196 +__tN_t + (32, +__SI__ +); + +197 +__tN_t + (64, +__DI__ +); + +200 +__u_tN_t + (8, +__QI__ +); + +201 +__u_tN_t + (16, +__HI__ +); + +202 +__u_tN_t + (32, +__SI__ +); + +203 +__u_tN_t + (64, +__DI__ +); + +205 + t»gi¡_t + + t__©ibu__ + (( + t__mode__ + ( + t__wÜd__ +))); + +211 + #__BIT_TYPES_DEFINED__ + 1 + + ) + +214 #ifdef +__USE_MISC + + +216 + ~<dn.h +> + +219 + ~<sys/£Ëù.h +> + +222 + ~<sys/sysmaüos.h +> + +226 #ià( +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 +) \ + +227 && ! +defed + +__blksize_t_defed + + +228 +__blksize_t + + tblksize_t +; + +229 + #__blksize_t_defed + + + ) + +233 #iâdeà +__USE_FILE_OFFSET64 + + +234 #iâdeà +__blkút_t_defed + + +235 +__blkút_t + + tblkút_t +; + +236 + #__blkút_t_defed + + + ) + +238 #iâdeà +__fsblkút_t_defed + + +239 +__fsblkút_t + + tfsblkút_t +; + +240 + #__fsblkút_t_defed + + + ) + +242 #iâdeà +__fsfút_t_defed + + +243 +__fsfút_t + + tfsfút_t +; + +244 + #__fsfút_t_defed + + + ) + +247 #iâdeà +__blkút_t_defed + + +248 +__blkút64_t + + tblkút_t +; + +249 + #__blkút_t_defed + + + ) + +251 #iâdeà +__fsblkút_t_defed + + +252 +__fsblkút64_t + + tfsblkút_t +; + +253 + #__fsblkút_t_defed + + + ) + +255 #iâdeà +__fsfút_t_defed + + +256 +__fsfút64_t + + tfsfút_t +; + +257 + #__fsfút_t_defed + + + ) + +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à +defed + +__USE_POSIX199506 + || defed +__USE_UNIX98 + + +270 + ~<bs/±h»adty³s.h +> + +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 + ~<sigÇl.h +> + +32 #ià! +defed + +_STDLIB_H + || (!defed +__USE_XOPEN + && !defed +__USE_XOPEN2K8 +) + +35 + ~<bs/waæags.h +> + +37 #ifdef +__USE_MISC + + +42 #ià +defed + +__GNUC__ + && !defed +__ýlu¥lus + + +43 + #__WAIT_INT +( +¡©us +) \ + +44 ( + `__exnsiÚ__ + (((uniÚ { + `__ty³of +( +¡©us +è +__ +; +__i +; }) \ + +45 { . +__ + = ( +¡©us +è}). +__i +)) + + ) + +47 + #__WAIT_INT +( +¡©us +è(*(cÚ¡ *è&(¡©us)) + + ) + +55 #ià! +defed + +__GNUC__ + || __GNUC__ < 2 || defed +__ý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 + ~<bs/wa¡©us.h +> + +79 + #WEXITSTATUS +( +¡©us +è + `__WEXITSTATUS + ( + `__WAIT_INT + (¡©us)) + + ) + +80 + #WTERMSIG +( +¡©us +è + `__WTERMSIG + ( + `__WAIT_INT + (¡©us)) + + ) + +81 + #WSTOPSIG +( +¡©us +è + `__WSTOPSIG + ( + `__WAIT_INT + (¡©us)) + + ) + +82 + #WIFEXITED +( +¡©us +è + `__WIFEXITED + ( + `__WAIT_INT + (¡©us)) + + ) + +83 + #WIFSIGNALED +( +¡©us +è + `__WIFSIGNALED + ( + `__WAIT_INT + (¡©us)) + + ) + +84 + #WIFSTOPPED +( +¡©us +è + `__WIFSTOPPED + ( + `__WAIT_INT + (¡©us)) + + ) + +85 #ifdeà +__WIFCONTINUED + + +86 + #WIFCONTINUED +( +¡©us +è + `__WIFCONTINUED + ( + `__WAIT_INT + (¡©us)) + + ) + +90 #ifdef +__USE_MISC + + +91 + #WCOREFLAG + +__WCOREFLAG + + + ) + +92 + #WCOREDUMP +( +¡©us +è + `__WCOREDUMP + ( + `__WAIT_INT + (¡©us)) + + ) + +93 + #W_EXITCODE +( +»t +, +sig +è + `__W_EXITCODE + (»t, sig) + + ) + +94 + #W_STOPCODE +( +sig +è + `__W_STOPCODE + (sig) + + ) + +102 +__pid_t + +wa + ( +__WAIT_STATUS + +__¡©_loc +); + +104 #ifdef +__USE_MISC + + +106 + #WAIT_ANY + (-1è + + ) + +107 + #WAIT_MYPGRP + 0 + + ) + +125 +__pid_t + +wapid + (__pid_ +__pid +, * +__¡©_loc +, +__ÝtiÚs +); + +127 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +128 #iâdeà +__id_t_defed + + +129 + ~<bs/ty³s.h +> + +130 +__id_t + + tid_t +; + +131 + #__id_t_defed + + + ) + +134 + #__Ãed_sigfo_t + + + ) + +135 + ~<bs/sigfo.h +> + +148 +waid + ( +idty³_t + +__idty³ +, +__id_t + +__id +, +sigfo_t + * +__fÝ +, + +149 +__ÝtiÚs +); + +152 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +155 + gru§ge +; + +162 +__pid_t + + $wa3 + ( +__WAIT_STATUS + +__¡©_loc +, +__ÝtiÚs +, + +163 +ru§ge + * +__u§ge +è +__THROWNL +; + +166 #ifdeà +__USE_MISC + + +168 +__pid_t + + $wa4 + ( +__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à(! +defed + +__Ãed_time_t + && !defed +__Ãed_þock_t + && \ + +25 ! +defed + + 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 + ~<bs/time.h +> + +44 #ià! +defed + +__STRICT_ANSI__ + && !defed +__USE_XOPEN2K + + +45 #iâdeà +CLK_TCK + + +46 + #CLK_TCK + +CLOCKS_PER_SEC + + + ) + +52 #ià! +defed + +__þock_t_defed + && (defed +_TIME_H + || defed +__Ãed_þock_t +) + +53 + #__þock_t_defed + 1 + + ) + +55 + ~<bs/ty³s.h +> + +57 +__BEGIN_NAMESPACE_STD + + +59 +__þock_t + + tþock_t +; + +60 + g__END_NAMESPACE_STD + + +61 #ià +defed + +__USE_XOPEN + || defed +__USE_POSIX + + +62 + $__USING_NAMESPACE_STD +( +þock_t +) + +66 #undeà +__Ãed_þock_t + + +68 #ià! +defed + +__time_t_defed + && (defed +_TIME_H + || defed +__Ãed_time_t +) + +69 + #__time_t_defed + 1 + + ) + +71 + ~<bs/ty³s.h +> + +73 +__BEGIN_NAMESPACE_STD + + +75 +__time_t + + ttime_t +; + +76 +__END_NAMESPACE_STD + + +77 #ifdeà +__USE_POSIX + + +78 + $__USING_NAMESPACE_STD +( +time_t +) + +82 #undeà +__Ãed_time_t + + +84 #ià! +defed + +__þockid_t_defed + && \ + +85 (( +defed + +_TIME_H + && defed +__USE_POSIX199309 +è|| defed +__Ãed_þockid_t +) + +86 + #__þockid_t_defed + 1 + + ) + +88 + ~<bs/ty³s.h +> + +91 +__þockid_t + + tþockid_t +; + +94 #undeà +__þockid_time_t + + +96 #ià! +defed + +__tim_t_defed + && \ + +97 (( +defed + +_TIME_H + && defed +__USE_POSIX199309 +è|| defed +__Ãed_tim_t +) + +98 + #__tim_t_defed + 1 + + ) + +100 + ~<bs/ty³s.h +> + +103 +__tim_t + + ttim_t +; + +106 #undeà +__Ãed_tim_t + + +109 #ià(! +defed + +__time¥ec_defed + \ + +110 && (( +defed + +_TIME_H + \ + +111 && ( +defed + +__USE_POSIX199309 + \ + +112 || +defed + +__USE_ISOC11 +)) \ + +113 || +defed + +__Ãed_time¥ec +)) + +114 + #__time¥ec_defed + 1 + + ) + +116 + ~<bs/ty³s.h +> + +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_yr +; + +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à +defed + +__USE_XOPEN + || defed +__USE_POSIX + + +155 + $__USING_NAMESPACE_STD +( +tm +) + +159 #ifdeà +__USE_POSIX199309 + + +161 + sim¥ec + + +163 +time¥ec + +_rv® +; + +164 +time¥ec + +_v®ue +; + +168 +sigevt +; + +172 #ifdeà +__USE_XOPEN2K + + +173 #iâdeà +__pid_t_defed + + +174 +__pid_t + + tpid_t +; + +175 + #__pid_t_defed + + + ) + +180 #ifdeà +__USE_ISOC11 + + +182 + #TIME_UTC + 1 + + ) + +186 +__BEGIN_NAMESPACE_STD + + +189 +þock_t + + $þock + (è +__THROW +; + +192 +time_t + + $time + ( +time_t + * +__tim +è +__THROW +; + +195 + $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 + ~<xloÿË.h +> + +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à +defed + +__USE_MISC + || defed +__USE_XOPEN + + +297 +daylight +; + +298 +timezÚe +; + +301 #ifdeà +__USE_MISC + + +304 + $¡ime + (cÚ¡ +time_t + * +__wh +è +__THROW +; + +310 + #__i¦p +( +yr +) \ + +311 (( +yr +è% 4 =ð0 && ((yrè% 100 !ð0 || (yrè% 400 =ð0)) + + ) + +314 #ifdeà +__USE_MISC + + +319 +time_t + + $timegm + ( +tm + * +__ +è +__THROW +; + +322 +time_t + + $timoÿl + ( +tm + * +__ +è +__THROW +; + +325 + $dysize + ( +__yr +è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +329 #ifdeà +__USE_POSIX199309 + + +334 + `Çno¦p + (cÚ¡ +time¥ec + * +__»que¡ed_time +, + +335 +time¥ec + * +__»mag +); + +339 + $þock_g»s + ( +þockid_t + +__þock_id +, +time¥ec + * +__»s +è +__THROW +; + +342 + $þock_gtime + ( +þ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 +sigevt + * +__»¡riù + +__evp +, + +365 +tim_t + * +__»¡riù + +__timid +è +__THROW +; + +368 + $tim_de + ( +tim_t + +__timid +è +__THROW +; + +371 + $tim_£ime + ( +tim_t + +__timid +, +__æags +, + +372 cÚ¡ +im¥ec + * +__»¡riù + +__v®ue +, + +373 +im¥ec + * +__»¡riù + +__ov®ue +è +__THROW +; + +376 + $tim_gtime + ( +tim_t + +__timid +, +im¥ec + * +__v®ue +) + +377 +__THROW +; + +380 + $tim_govrun + ( +tim_t + +__timid +è +__THROW +; + +384 #ifdeà +__USE_ISOC11 + + +386 + $time¥ec_g + ( +time¥ec + * +__ts +, +__ba£ +) + +387 +__THROW + + `__nÚnuÎ + ((1)); + +391 #ifdeà +__USE_XOPEN_EXTENDED + + +403 +gd©e_r +; + +412 +tm + * + `gd©e + (cÚ¡ * +__¡rg +); + +415 #ifdeà +__USE_GNU + + +426 + `gd©e_r + (cÚ¡ * +__»¡riù + +__¡rg +, + +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à +defed + +__USE_XOPEN2K + + +37 + #_POSIX_VERSION + 200112L + + ) + +38 #ià +defed + +__USE_POSIX199506 + + +40 + #_POSIX_VERSION + 199506L + + ) + +41 #ià +defed + +__USE_POSIX199309 + + +43 + #_POSIX_VERSION + 199309L + + ) + +46 + #_POSIX_VERSION + 199009L + + ) + +52 #ifdeà +__USE_XOPEN2K8 + + +53 + #__POSIX2_THIS_VERSION + 200809L + + ) + +55 #ià +defed + +__USE_XOPEN2K + + +57 + #__POSIX2_THIS_VERSION + 200112L + + ) + +58 #ià +defed + +__USE_POSIX199506 + + +60 + #__POSIX2_THIS_VERSION + 199506L + + ) + +63 + #__POSIX2_THIS_VERSION + 199209L + + ) + +67 + #_POSIX2_VERSION + +__POSIX2_THIS_VERSION + + + ) + +70 + #_POSIX2_C_VERSION + +__POSIX2_THIS_VERSION + + + ) + +74 + #_POSIX2_C_BIND + +__POSIX2_THIS_VERSION + + + ) + +78 + #_POSIX2_C_DEV + +__POSIX2_THIS_VERSION + + + ) + +82 + #_POSIX2_SW_DEV + +__POSIX2_THIS_VERSION + + + ) + +86 + #_POSIX2_LOCALEDEF + +__POSIX2_THIS_VERSION + + + ) + +89 #ifdeà +__USE_XOPEN2K8 + + +90 + #_XOPEN_VERSION + 700 + + ) + +91 #ià +defed + +__USE_XOPEN2K + + +92 + #_XOPEN_VERSION + 600 + + ) + +93 #ià +defed + +__USE_UNIX98 + + +94 + #_XOPEN_VERSION + 500 + + ) + +96 + #_XOPEN_VERSION + 4 + + ) + +100 + #_XOPEN_XCU_VERSION + 4 + + ) + +103 + #_XOPEN_XPG2 + 1 + + ) + +104 + #_XOPEN_XPG3 + 1 + + ) + +105 + #_XOPEN_XPG4 + 1 + + ) + +108 + #_XOPEN_UNIX + 1 + + ) + +111 + #_XOPEN_CRYPT + 1 + + ) + +115 + #_XOPEN_ENH_I18N + 1 + + ) + +118 + #_XOPEN_LEGACY + 1 + + ) + +205 + ~<bs/posix_Ýt.h +> + +208 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +209 + ~<bs/vÚmts.h +> + +213 + #STDIN_FILENO + 0 + + ) + +214 + #STDOUT_FILENO + 1 + + ) + +215 + #STDERR_FILENO + 2 + + ) + +220 + ~<bs/ty³s.h +> + +222 #iâdef +__ssize_t_defed + + +223 +__ssize_t + + tssize_t +; + +224 + #__ssize_t_defed + + + ) + +227 + #__Ãed_size_t + + + ) + +228 + #__Ãed_NULL + + + ) + +229 + ~<¡ddef.h +> + +231 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K + + +234 #iâdeà +__gid_t_defed + + +235 +__gid_t + + tgid_t +; + +236 + #__gid_t_defed + + + ) + +239 #iâdeà +__uid_t_defed + + +240 +__uid_t + + tuid_t +; + +241 + #__uid_t_defed + + + ) + +244 #iâdeà +__off_t_defed + + +245 #iâdeà +__USE_FILE_OFFSET64 + + +246 +__off_t + + toff_t +; + +248 +__off64_t + + toff_t +; + +250 + #__off_t_defed + + + ) + +252 #ià +defed + +__USE_LARGEFILE64 + && !defed +__off64_t_defed + + +253 +__off64_t + + toff64_t +; + +254 + #__off64_t_defed + + + ) + +257 #iâdeà +__u£cÚds_t_defed + + +258 +__u£cÚds_t + + tu£cÚds_t +; + +259 + #__u£cÚds_t_defed + + + ) + +262 #iâdeà +__pid_t_defed + + +263 +__pid_t + + tpid_t +; + +264 + #__pid_t_defed + + + ) + +268 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +269 #iâdeà +___t_defed + + +270 +___t + + t_t +; + +271 + #___t_defed + + + ) + +275 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +276 #iâdeà +__sockËn_t_defed + + +277 +__sockËn_t + + tsockËn_t +; + +278 + #__sockËn_t_defed + + + ) + +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Ú¡ * +__fe +, +__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à +defed + +__USE_MISC + && !defed +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 + +__nbys +è +__wur +; + +369 +ssize_t + + $wre + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +è +__wur +; + +371 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +372 #iâdeà +__USE_FILE_OFFSET64 + + +379 +ssize_t + + $´d + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +380 +__off_t + +__off£t +è +__wur +; + +387 +ssize_t + + $pwre + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +, + +388 +__off_t + +__off£t +è +__wur +; + +390 #ifdeà +__REDIRECT + + +391 +ssize_t + + `__REDIRECT + ( +´d +, ( +__fd +, * +__buf +, +size_t + +__nbys +, + +392 +__off64_t + +__off£t +), + +393 +´d64 +è +__wur +; + +394 +ssize_t + + `__REDIRECT + ( +pwre +, ( +__fd +, cÚ¡ * +__buf +, + +395 +size_t + +__nbys +, +__off64_t + +__off£t +), + +396 +pwre64 +è +__wur +; + +398 + #´d + +´d64 + + + ) + +399 + #pwre + +pwre64 + + + ) + +403 #ifdeà +__USE_LARGEFILE64 + + +407 +ssize_t + + $´d64 + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +408 +__off64_t + +__off£t +è +__wur +; + +411 +ssize_t + + $pwre64 + ( +__fd +, cÚ¡ * +__buf +, +size_t + +__n +, + +412 +__off64_t + +__off£t +è +__wur +; + +420 + $pe + ( +__pedes +[2]è +__THROW + +__wur +; + +422 #ifdeà +__USE_GNU + + +425 + $pe2 + ( +__pedes +[2], +__æags +è +__THROW + +__wur +; + +435 + $®¬m + ( +__£cÚds +è +__THROW +; + +447 + `¦p + ( +__£cÚds +); + +449 #ià( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +450 || +defed + +__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Ú¡ * +__fe +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +477 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +479 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +481 + $fchown + ( +__fd +, +__uid_t + +__owÃr +, +__gid_t + +__group +è +__THROW + +__wur +; + +486 + $lchown + (cÚ¡ * +__fe +, +__uid_t + +__owÃr +, +__gid_t + +__group +) + +487 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +491 #ifdeà +__USE_ATFILE + + +494 + $fchowÇt + ( +__fd +, cÚ¡ * +__fe +, +__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à +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +504 + $fchd + ( +__fd +è +__THROW + +__wur +; + +514 * + $gcwd + (* +__buf +, +size_t + +__size +è +__THROW + +__wur +; + +516 #ifdef +__USE_GNU + + +520 * + $g_cu¼t_d_Çme + (è +__THROW +; + +523 #ià( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +524 || +defed + +__USE_MISC + + +528 * + $gwd + (* +__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Ú¡ * +__fe +, *cÚ¡ +__¬gv +[]) + +582 +__THROW + + `__nÚnuÎ + ((1, 2)); + +587 + $exeþp + (cÚ¡ * +__fe +, cÚ¡ * +__¬g +, ...) + +588 +__THROW + + `__nÚnuÎ + ((1, 2)); + +590 #ifdeà +__USE_GNU + + +593 + $execv³ + (cÚ¡ * +__fe +, *cÚ¡ +__¬gv +[], + +594 *cÚ¡ +__vp +[]) + +595 +__THROW + + `__nÚnuÎ + ((1, 2)); + +599 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +601 + $niû + ( +__c +è +__THROW + +__wur +; + +606 + $_ex + ( +__¡©us +è + `__©ibu__ + (( +__nÜuº__ +)); + +612 + ~<bs/cÚâame.h +> + +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 + + $gpid + (è +__THROW +; + +634 +__pid_t + + $gµid + (è +__THROW +; + +637 +__pid_t + + $gpg½ + (è +__THROW +; + +640 +__pid_t + + $__gpgid + ( +__pid_t + +__pid +è +__THROW +; + +641 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +642 +__pid_t + + $gpgid + ( +__pid_t + +__pid +è +__THROW +; + +649 + $£gid + ( +__pid_t + +__pid +, __pid_ +__pgid +è +__THROW +; + +651 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +663 + $£g½ + (è +__THROW +; + +670 +__pid_t + + $£tsid + (è +__THROW +; + +672 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +674 +__pid_t + + $gsid + ( +__pid_t + +__pid +è +__THROW +; + +678 +__uid_t + + $guid + (è +__THROW +; + +681 +__uid_t + + $geuid + (è +__THROW +; + +684 +__gid_t + + $ggid + (è +__THROW +; + +687 +__gid_t + + $gegid + (è +__THROW +; + +692 + $ggroups + ( +__size +, +__gid_t + +__li¡ +[]è +__THROW + +__wur +; + +694 #ifdef +__USE_GNU + + +696 + $group_memb + ( +__gid_t + +__gid +è +__THROW +; + +703 + $£tuid + ( +__uid_t + +__uid +è +__THROW + +__wur +; + +705 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +708 + $£euid + ( +__uid_t + +__ruid +, __uid_ +__euid +è +__THROW + +__wur +; + +711 #ifdeà +__USE_XOPEN2K + + +713 + $£uid + ( +__uid_t + +__uid +è +__THROW + +__wur +; + +720 + $£tgid + ( +__gid_t + +__gid +è +__THROW + +__wur +; + +722 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +725 + $£egid + ( +__gid_t + +__rgid +, __gid_ +__egid +è +__THROW + +__wur +; + +728 #ifdeà +__USE_XOPEN2K + + +730 + $£gid + ( +__gid_t + +__gid +è +__THROW + +__wur +; + +733 #ifdeà +__USE_GNU + + +736 + $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à( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K8 +) \ + +762 || +defed + +__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à +defed + +__USE_MISC + \ + +785 || ( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_UNIX98 +) + +788 + $y¦Ù + (è +__THROW +; + +793 + $lk + (cÚ¡ * +__äom +, cÚ¡ * +__to +) + +794 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +796 #ifdeà +__USE_ATFILE + + +799 + $lk© + ( +__äomfd +, cÚ¡ * +__äom +, +__tofd +, + +800 cÚ¡ * +__to +, +__æags +) + +801 +__THROW + + `__nÚnuÎ + ((2, 4)è +__wur +; + +804 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +806 + $symlk + (cÚ¡ * +__äom +, cÚ¡ * +__to +) + +807 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +812 +ssize_t + + $»adlk + (cÚ¡ * +__»¡riù + +__·th +, + +813 * +__»¡riù + +__buf +, +size_t + +__Ën +) + +814 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +817 #ifdeà +__USE_ATFILE + + +819 + $symlk© + (cÚ¡ * +__äom +, +__tofd +, + +820 cÚ¡ * +__to +è +__THROW + + `__nÚnuÎ + ((1, 3)è +__wur +; + +823 +ssize_t + + $»adlk© + ( +__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 + + $tcgpg½ + ( +__fd +è +__THROW +; + +845 + $tc£g½ + ( +__fd +, +__pid_t + +__pg½_id +è +__THROW +; + +852 * + `glog + (); + +853 #ià +defed + +__USE_REENTRANT + || defed +__USE_POSIX199506 + + +860 + $glog_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 + ~<gÝt.h +> + +878 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +882 + $gho¡Çme + (* +__Çme +, +size_t + +__Ën +è +__THROW + + `__nÚnuÎ + ((1)); + +886 #ià +defed + +__USE_MISC + + +889 + $£tho¡Çme + (cÚ¡ * +__Çme +, +size_t + +__Ën +) + +890 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +894 + $£tho¡id + ( +__id +è +__THROW + +__wur +; + +900 + $gdomaÇ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Ú¡ * +__fe +è +__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 * + $gu£rshl + (è +__THROW +; + +933 + $du£rshl + (è +__THROW +; + +934 + $£tu£rshl + (è +__THROW +; + +940 + $d«mÚ + ( +__nochd +, +__noþo£ +è +__THROW + +__wur +; + +944 #ià +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__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à +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +972 + `gho¡id + (); + +975 + $sync + (è +__THROW +; + +978 #ià +defed + +__USE_MISC + || !defed +__USE_XOPEN2K + + +981 + $g·gesize + (è +__THROW + + `__©ibu__ + (( +__cÚ¡__ +)); + +986 + $gdbËsize + (è +__THROW +; + +992 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +995 #iâdeà +__USE_FILE_OFFSET64 + + +996 + $unÿ + (cÚ¡ * +__fe +, +__off_t + +__Ëngth +) + +997 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +999 #ifdeà +__REDIRECT_NTH + + +1000 + `__REDIRECT_NTH + ( +unÿ +, + +1001 (cÚ¡ * +__fe +, +__off64_t + +__Ëngth +), + +1002 +unÿ64 +è + `__nÚnuÎ + ((1)è +__wur +; + +1004 + #unÿ + +unÿ64 + + + ) + +1007 #ifdeà +__USE_LARGEFILE64 + + +1008 + $unÿ64 + (cÚ¡ * +__fe +, +__off64_t + +__Ëngth +) + +1009 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +1014 #ià +defed + +__USE_POSIX199309 + \ + +1015 || +defed + +__USE_XOPEN_EXTENDED + || defed +__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à( +defed + +__USE_XOPEN_EXTENDED + && !defed +__USE_XOPEN2K +) \ + +1036 || +defed + +__USE_MISC + + +1040 + $brk + (* +__addr +è +__THROW + +__wur +; + +1046 * + $sbrk + ( +_t + +__d +è +__THROW +; + +1050 #ifdeà +__USE_MISC + + +1061 + $sysÿÎ + ( +__sy¢o +, ...è +__THROW +; + +1066 #ià( +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED +è&& !defed +F_LOCK + + +1078 + #F_ULOCK + 0 + + ) + +1079 + #F_LOCK + 1 + + ) + +1080 + #F_TLOCK + 2 + + ) + +1081 + #F_TEST + 3 + + ) + +1083 #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 ( +__exnsiÚ__ + \ + +1106 ({ +__»suÉ +; \ + +1107 dØ +__»suÉ + = (è( +ex´essiÚ +); \ + +1108 +__»suÉ + =ð-1L && +ºo + =ð +EINTR +); \ + +1109 +__»suÉ +; + } +})) + + ) + +1112 #ià +defed + +__USE_POSIX199309 + || defed +__USE_UNIX98 + + +1115 +fd©async + ( +__fdes +); + +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à +defed + +__USE_XOPEN + && !defed +__USE_XOPEN2K + + +1145 * + $ùmid + (* +__s +è +__THROW +; + +1150 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +1151 + ~<bs/uni¡d.h +> + +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 +è + `__but_®loÿ + (size) + + ) + +38 +__END_DECLS + + + @/usr/include/bits/byteswap.h + +19 #ià! +defed + +_BYTESWAP_H + && !defed +_NETINET_IN_H + && !defed +_ENDIAN_H + + +23 #iâdeà +_BITS_BYTESWAP_H + + +24 + #_BITS_BYTESWAP_H + 1 + + ) + +26 + ~<ã©u»s.h +> + +27 + ~<bs/ty³s.h +> + +28 + ~<bs/wÜdsize.h +> + +31 + #__bsw_cÚ¡ªt_16 +( +x +) \ + +32 ((è(((( +x +è>> 8è& 0xffè| (((xè& 0xffè<< 8))) + + ) + +35 + ~<bs/bysw-16.h +> + +38 + #__bsw_cÚ¡ªt_32 +( +x +) \ + +39 (((( +x +) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ + +40 ((( +x +è& 0x0000ff00è<< 8è| (((xè& 0x000000ffè<< 24)) + + ) + +42 #ifdeà +__GNUC__ + + +43 #ià +__GNUC_PREREQ + (4, 3) + +44 +__le + + +45 + $__bsw_32 + ( +__bsx +) + +47 + `__but_bsw32 + ( +__bsx +); + +48 + } +} + +49 #ià +__GNUC__ + >= 2 + +50 #ià +__WORDSIZE + =ð64 || ( +defed + +__i486__ + || defed +__³Áium__ + \ + +51 || +defed + + g__³Áium´o__ + || defed + g__³Áium4__ + \ + +52 || +defed + + g__k8__ + || defed + g__©hlÚ__ + \ + +53 || +defed + + g__k6__ + || defed + g__nocÚa__ + \ + +54 || +defed + + g__cÜe2__ + || defed + g__geode__ + \ + +55 || +defed + + g__amdçm10__ +) + +58 + #__bsw_32 +( +x +) \ + +59 ( +__exnsiÚ__ + \ + +60 ({ +__v +, +__x + = ( +x +); \ + +61 ià( + `__but_cÚ¡ªt_p + ( +__x +)) \ + +62 +__v + = + `__bsw_cÚ¡ªt_32 + ( +__x +); \ + +64 + `__asm__ + ("bsw %0" : "ô" ( +__v +è: "0" ( +__x +)); \ + +65 +__v +; })) + + ) + +67 + #__bsw_32 +( +x +) \ + +68 ( +__exnsiÚ__ + \ + +69 ({ +__v +, +__x + = ( +x +); \ + +70 ià( + `__but_cÚ¡ªt_p + ( +__x +)) \ + +71 +__v + = + `__bsw_cÚ¡ªt_32 + ( +__x +); \ + +73 + `__asm__ + ("rorw $8, %w0;" \ + +76 : "ô" ( +__v +) \ + +77 : "0" ( +__x +) \ + +79 +__v +; })) + + ) + +82 + #__bsw_32 +( +x +) \ + +83 ( +__exnsiÚ__ + \ + +84 ({ +__x + = ( +x +); + `__bsw_cÚ¡ªt_32 + (__x); })) + + ) + +87 +__le + + +88 + $__bsw_32 + ( +__bsx +) + +90 + `__bsw_cÚ¡ªt_32 + ( +__bsx +); + +91 + } +} + +95 #ià +__GNUC_PREREQ + (2, 0) + +97 + #__bsw_cÚ¡ªt_64 +( +x +) \ + +98 ( + `__exnsiÚ__ + (((( +x +) & 0xff00000000000000ull) >> 56) \ + +99 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +100 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +101 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +102 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +103 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +104 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +105 | ((( +x +è& 0x00000000000000ffuÎè<< 56))) + + ) + +107 #ià +__GNUC_PREREQ + (4, 3) + +108 +__le + +__ut64_t + + +109 + $__bsw_64 + ( +__ut64_t + +__bsx +) + +111 + `__but_bsw64 + ( +__bsx +); + +112 + } +} + +113 #ià +__WORDSIZE + == 64 + +114 + #__bsw_64 +( +x +) \ + +115 ( +__exnsiÚ__ + \ + +116 ({ +__ut64_t + +__v +, +__x + = ( +x +); \ + +117 ià( + `__but_cÚ¡ªt_p + ( +__x +)) \ + +118 +__v + = + `__bsw_cÚ¡ªt_64 + ( +__x +); \ + +120 + `__asm__ + ("bsw %q0" : "ô" ( +__v +è: "0" ( +__x +)); \ + +121 +__v +; })) + + ) + +123 + #__bsw_64 +( +x +) \ + +124 ( +__exnsiÚ__ + \ + +125 ({ uniÚ { +__exnsiÚ__ + +__ut64_t + +__Î +; \ + +126 +__l +[2]; } +__w +, +__r +; \ + +127 ià( + `__but_cÚ¡ªt_p + ( +x +)) \ + +128 +__r +. +__Î + = + `__bsw_cÚ¡ªt_64 + ( +x +); \ + +131 +__w +. +__Î + = ( +x +); \ + +132 +__r +. +__l +[0] = + `__bsw_32 + ( +__w +.__l[1]); \ + +133 +__r +. +__l +[1] = + `__bsw_32 + ( +__w +.__l[0]); \ + +135 +__r +. +__Î +; })) + + ) + +138 + #__bsw_cÚ¡ªt_64 +( +x +) \ + +139 (((( +x +) & 0xff00000000000000ull) >> 56) \ + +140 | ((( +x +) & 0x00ff000000000000ull) >> 40) \ + +141 | ((( +x +) & 0x0000ff0000000000ull) >> 24) \ + +142 | ((( +x +) & 0x000000ff00000000ull) >> 8) \ + +143 | ((( +x +) & 0x00000000ff000000ull) << 8) \ + +144 | ((( +x +) & 0x0000000000ff0000ull) << 24) \ + +145 | ((( +x +) & 0x000000000000ff00ull) << 40) \ + +146 | ((( +x +è& 0x00000000000000ffuÎè<< 56)) + + ) + +148 +__le + +__ut64_t + + +149 + $__bsw_64 + ( +__ut64_t + +__bsx +) + +151 + `__bsw_cÚ¡ªt_64 + ( +__bsx +); + +152 + } +} + + @/usr/include/bits/confname.h + +19 #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 + ~<bs/wÜdsize.h +> + +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à +defed + +__x86_64__ + && defed +__ILP32__ + + +98 + #__ILP32_OFFBIG_CFLAGS + "-mx32" + + ) + +99 + #__ILP32_OFFBIG_LDFLAGS + "-mx32" + + ) + +101 + #__ILP32_OFFBIG_CFLAGS + "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + + ) + +102 + #__ILP32_OFFBIG_LDFLAGS + "-m32" + + ) + +104 + #__LP64_OFF64_CFLAGS + "-m64" + + ) + +105 + #__LP64_OFF64_LDFLAGS + "-m64" + + ) + + @/usr/include/bits/errno.h + +19 #ifdeà +_ERRNO_H + + +21 #undeà +EDOM + + +22 #undeà +EILSEQ + + +23 #undeà +ERANGE + + +24 + ~<lux/ºo.h +> + +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à! +defed + +_LIBC + || defed +_LIBC_REENTRANT + + +54 + #ºo + (* + `__ºo_loÿtiÚ + ()) + + ) + +59 #ià! +defed + +_ERRNO_H + && defed +__Ã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 + ~<bs/fú-lux.h +> + + @/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þ + ( +__Ý_missg_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à( + `__but_cÚ¡ªt_p + ( +__oæag +)) + +48 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +50 + `__Ý_missg_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_missg_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à( + `__but_cÚ¡ªt_p + ( +__oæag +)) + +80 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +82 + `__Ý64_missg_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þ + ( +__Ý©_missg_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à( + `__but_cÚ¡ªt_p + ( +__oæag +)) + +124 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +126 + `__Ý©_missg_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_missg_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à( + `__but_cÚ¡ªt_p + ( +__oæag +)) + +158 ià( + `__OPEN_NEEDS_MODE + ( +__oæag +è&& + `__va_¬g_·ck_Ën + () < 1) + +160 + `__Ý©64_missg_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 + ( + `__but_huge_v® +()) + + ) + +28 #ià +__GNUC_PREREQ +(2,96) + +29 + #HUGE_VAL + ( +__exnsiÚ__ + 0x1.0 +p2047 +) + + ) + +30 #ià +defed + +__GNUC__ + + +32 + #HUGE_VAL + \ + +33 ( +__exnsiÚ__ + \ + +34 ((uniÚ { +__l + + `__©ibu__ +(( + `__mode__ +( +__DI__ +))); +__d +; }) \ + +35 { +__l +: 0x7ff0000000000000ULL }). +__d +) + + ) + +39 + ~<dn.h +> + +41 uniÚ { + m__c +[8]; + m__d +; } + t__huge_v®_t +; + +43 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +44 + #__HUGE_VAL_bys + { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } + + ) + +46 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +47 + #__HUGE_VAL_bys + { 0, 0, 0, 0, 0, 0, 0xf0, 0x7à} + + ) + +50 +__huge_v®_t + + g__huge_v® + = { +__HUGE_VAL_bys + }; + +51 + #HUGE_VAL + ( +__huge_v® +. +__d +) + + ) + + @/usr/include/bits/huge_valf.h + +20 #iâdeà +_MATH_H + + +26 #ià +__GNUC_PREREQ +(3,3) + +27 + #HUGE_VALF + ( + `__but_huge_v®f +()) + + ) + +28 #ià +__GNUC_PREREQ +(2,96) + +29 + #HUGE_VALF + ( +__exnsiÚ__ + 0x1.0 +p255f +) + + ) + +30 #ià +defed + +__GNUC__ + + +32 + #HUGE_VALF + \ + +33 ( +__exnsiÚ__ + \ + +34 ((uniÚ { +__l + + `__©ibu__ +(( + `__mode__ +( +__SI__ +))); +__d +; }) \ + +35 { +__l +: 0x7f800000UL }). +__d +) + + ) + +39 uniÚ { + m__c +[4]; + m__f +; } + t__huge_v®f_t +; + +41 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +42 + #__HUGE_VALF_bys + { 0x7f, 0x80, 0, 0 } + + ) + +44 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +45 + #__HUGE_VALF_bys + { 0, 0, 0x80, 0x7à} + + ) + +48 +__huge_v®f_t + + g__huge_v®f + = { +__HUGE_VALF_bys + }; + +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 + ( + `__but_huge_v®l +()) + + ) + +26 #ià +__GNUC_PREREQ +(2,96) + +27 + #HUGE_VALL + ( +__exnsiÚ__ + 0x1.0 +p32767L +) + + ) + +30 + #__HUGE_VALL_bys + { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } + + ) + +32 + #__huge_v®l_t + uniÚ { +__c +[12]; +__ld +; } + + ) + +33 #ifdeà +__GNUC__ + + +34 + #HUGE_VALL + ( +__exnsiÚ__ + \ + +35 (( +__huge_v®l_t +è{ +__c +: +__HUGE_VALL_bys + }). +__ld +) + + ) + +37 +__huge_v®l_t + + g__huge_v®l + = { +__HUGE_VALL_bys + }; + +38 + #HUGE_VALL + ( +__huge_v®l +. +__ld +) + + ) + + @/usr/include/bits/in.h + +20 #iâdeà +_NETINET_IN_H + + +29 #ià +defed + +_UAPI_LINUX_IN6_H + || defed +_UAPI_IPV6_H + + +33 + #__USE_KERNEL_IPV6_DEFS + + + ) + +39 + #IP_OPTIONS + 4 + + ) + +40 + #IP_HDRINCL + 3 + + ) + +41 + #IP_TOS + 1 + + ) + +42 + #IP_TTL + 2 + + ) + +43 + #IP_RECVOPTS + 6 + + ) + +45 + #IP_RECVRETOPTS + +IP_RETOPTS + + + ) + +46 + #IP_RETOPTS + 7 + + ) + +47 + #IP_MULTICAST_IF + 32 + + ) + +48 + #IP_MULTICAST_TTL + 33 + + ) + +49 + #IP_MULTICAST_LOOP + 34 + + ) + +50 + #IP_ADD_MEMBERSHIP + 35 + + ) + +51 + #IP_DROP_MEMBERSHIP + 36 + + ) + +52 + #IP_UNBLOCK_SOURCE + 37 + + ) + +53 + #IP_BLOCK_SOURCE + 38 + + ) + +54 + #IP_ADD_SOURCE_MEMBERSHIP + 39 + + ) + +55 + #IP_DROP_SOURCE_MEMBERSHIP + 40 + + ) + +56 + #IP_MSFILTER + 41 + + ) + +57 #ifdeà +__USE_MISC + + +58 + #MCAST_JOIN_GROUP + 42 + + ) + +59 + #MCAST_BLOCK_SOURCE + 43 + + ) + +60 + #MCAST_UNBLOCK_SOURCE + 44 + + ) + +61 + #MCAST_LEAVE_GROUP + 45 + + ) + +62 + #MCAST_JOIN_SOURCE_GROUP + 46 + + ) + +63 + #MCAST_LEAVE_SOURCE_GROUP + 47 + + ) + +64 + #MCAST_MSFILTER + 48 + + ) + +65 + #IP_MULTICAST_ALL + 49 + + ) + +66 + #IP_UNICAST_IF + 50 + + ) + +68 + #MCAST_EXCLUDE + 0 + + ) + +69 + #MCAST_INCLUDE + 1 + + ) + +72 + #IP_ROUTER_ALERT + 5 + + ) + +73 + #IP_PKTINFO + 8 + + ) + +74 + #IP_PKTOPTIONS + 9 + + ) + +75 + #IP_PMTUDISC + 10 + + ) + +76 + #IP_MTU_DISCOVER + 10 + + ) + +77 + #IP_RECVERR + 11 + + ) + +78 + #IP_RECVTTL + 12 + + ) + +79 + #IP_RECVTOS + 13 + + ) + +80 + #IP_MTU + 14 + + ) + +81 + #IP_FREEBIND + 15 + + ) + +82 + #IP_IPSEC_POLICY + 16 + + ) + +83 + #IP_XFRM_POLICY + 17 + + ) + +84 + #IP_PASSSEC + 18 + + ) + +85 + #IP_TRANSPARENT + 19 + + ) + +86 + #IP_MULTICAST_ALL + 49 + + ) + +89 + #IP_ORIGDSTADDR + 20 + + ) + +90 + #IP_RECVORIGDSTADDR + +IP_ORIGDSTADDR + + + ) + +92 + #IP_MINTTL + 21 + + ) + +93 + #IP_NODEFRAG + 22 + + ) + +94 + #IP_CHECKSUM + 23 + + ) + +95 + #IP_BIND_ADDRESS_NO_PORT + 24 + + ) + +98 + #IP_PMTUDISC_DONT + 0 + + ) + +99 + #IP_PMTUDISC_WANT + 1 + + ) + +100 + #IP_PMTUDISC_DO + 2 + + ) + +101 + #IP_PMTUDISC_PROBE + 3 + + ) + +105 + #IP_PMTUDISC_INTERFACE + 4 + + ) + +107 + #IP_PMTUDISC_OMIT + 5 + + ) + +109 + #IP_MULTICAST_IF + 32 + + ) + +110 + #IP_MULTICAST_TTL + 33 + + ) + +111 + #IP_MULTICAST_LOOP + 34 + + ) + +112 + #IP_ADD_MEMBERSHIP + 35 + + ) + +113 + #IP_DROP_MEMBERSHIP + 36 + + ) + +114 + #IP_UNBLOCK_SOURCE + 37 + + ) + +115 + #IP_BLOCK_SOURCE + 38 + + ) + +116 + #IP_ADD_SOURCE_MEMBERSHIP + 39 + + ) + +117 + #IP_DROP_SOURCE_MEMBERSHIP + 40 + + ) + +118 + #IP_MSFILTER + 41 + + ) + +119 + #IP_MULTICAST_ALL + 49 + + ) + +120 + #IP_UNICAST_IF + 50 + + ) + +123 + #SOL_IP + 0 + + ) + +125 + #IP_DEFAULT_MULTICAST_TTL + 1 + + ) + +126 + #IP_DEFAULT_MULTICAST_LOOP + 1 + + ) + +127 + #IP_MAX_MEMBERSHIPS + 20 + + ) + +129 #ifdeà +__USE_MISC + + +133 + s_Ýts + + +135 +_addr + + m_d¡ +; + +136 + m_Ýts +[40]; + +140 + s_m»qn + + +142 +_addr + + mimr_muÉddr +; + +143 +_addr + + mimr_add»ss +; + +144 + mimr_ifdex +; + +148 + s_pktfo + + +150 + mi_ifdex +; + +151 +_addr + + mi_¥ec_d¡ +; + +152 +_addr + + mi_addr +; + +159 + #IPV6_ADDRFORM + 1 + + ) + +160 + #IPV6_2292PKTINFO + 2 + + ) + +161 + #IPV6_2292HOPOPTS + 3 + + ) + +162 + #IPV6_2292DSTOPTS + 4 + + ) + +163 + #IPV6_2292RTHDR + 5 + + ) + +164 + #IPV6_2292PKTOPTIONS + 6 + + ) + +165 + #IPV6_CHECKSUM + 7 + + ) + +166 + #IPV6_2292HOPLIMIT + 8 + + ) + +168 + #SCM_SRCRT + +IPV6_RXSRCRT + + + ) + +170 + #IPV6_NEXTHOP + 9 + + ) + +171 + #IPV6_AUTHHDR + 10 + + ) + +172 + #IPV6_UNICAST_HOPS + 16 + + ) + +173 + #IPV6_MULTICAST_IF + 17 + + ) + +174 + #IPV6_MULTICAST_HOPS + 18 + + ) + +175 + #IPV6_MULTICAST_LOOP + 19 + + ) + +176 + #IPV6_JOIN_GROUP + 20 + + ) + +177 + #IPV6_LEAVE_GROUP + 21 + + ) + +178 + #IPV6_ROUTER_ALERT + 22 + + ) + +179 + #IPV6_MTU_DISCOVER + 23 + + ) + +180 + #IPV6_MTU + 24 + + ) + +181 + #IPV6_RECVERR + 25 + + ) + +182 + #IPV6_V6ONLY + 26 + + ) + +183 + #IPV6_JOIN_ANYCAST + 27 + + ) + +184 + #IPV6_LEAVE_ANYCAST + 28 + + ) + +185 + #IPV6_IPSEC_POLICY + 34 + + ) + +186 + #IPV6_XFRM_POLICY + 35 + + ) + +189 + #IPV6_RECVPKTINFO + 49 + + ) + +190 + #IPV6_PKTINFO + 50 + + ) + +191 + #IPV6_RECVHOPLIMIT + 51 + + ) + +192 + #IPV6_HOPLIMIT + 52 + + ) + +193 + #IPV6_RECVHOPOPTS + 53 + + ) + +194 + #IPV6_HOPOPTS + 54 + + ) + +195 + #IPV6_RTHDRDSTOPTS + 55 + + ) + +196 + #IPV6_RECVRTHDR + 56 + + ) + +197 + #IPV6_RTHDR + 57 + + ) + +198 + #IPV6_RECVDSTOPTS + 58 + + ) + +199 + #IPV6_DSTOPTS + 59 + + ) + +200 + #IPV6_RECVPATHMTU + 60 + + ) + +201 + #IPV6_PATHMTU + 61 + + ) + +202 + #IPV6_DONTFRAG + 62 + + ) + +205 + #IPV6_RECVTCLASS + 66 + + ) + +206 + #IPV6_TCLASS + 67 + + ) + +209 + #IPV6_ADD_MEMBERSHIP + +IPV6_JOIN_GROUP + + + ) + +210 + #IPV6_DROP_MEMBERSHIP + +IPV6_LEAVE_GROUP + + + ) + +211 + #IPV6_RXHOPOPTS + +IPV6_HOPOPTS + + + ) + +212 + #IPV6_RXDSTOPTS + +IPV6_DSTOPTS + + + ) + +215 + #IPV6_PMTUDISC_DONT + 0 + + ) + +216 + #IPV6_PMTUDISC_WANT + 1 + + ) + +217 + #IPV6_PMTUDISC_DO + 2 + + ) + +218 + #IPV6_PMTUDISC_PROBE + 3 + + ) + +219 + #IPV6_PMTUDISC_INTERFACE + 4 + + ) + +220 + #IPV6_PMTUDISC_OMIT + 5 + + ) + +223 + #SOL_IPV6 + 41 + + ) + +224 + #SOL_ICMPV6 + 58 + + ) + +227 + #IPV6_RTHDR_LOOSE + 0 + + ) + +228 + #IPV6_RTHDR_STRICT + 1 + + ) + +230 + #IPV6_RTHDR_TYPE_0 + 0 + + ) + + @/usr/include/bits/inf.h + +19 #iâdeà +_MATH_H + + +25 #ià +__GNUC_PREREQ +(3,3) + +26 + #INFINITY + ( + `__but_ff +()) + + ) + +28 + #INFINITY + +HUGE_VALF + + + ) + + @/usr/include/bits/math-finite.h + +19 #iâdeà +_MATH_H + + +24 +__REDIRECT_NTH + ( +acos +, (), +__acos_fe +); + +25 #ifdeà +__USE_ISOC99 + + +26 +__REDIRECT_NTH + ( +acosf +, (), +__acosf_fe +); + +27 #ifdeà +__MATH_DECLARE_LDOUBLE + + +28 #ifdeà +__NO_LONG_DOUBLE_MATH + + +29 +__REDIRECT_NTH + ( +aco¦ +, (), +__acos_fe +); + +31 +__REDIRECT_NTH + ( +aco¦ +, (), +__aco¦_fe +); + +36 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +38 +__REDIRECT_NTH + ( +acosh +, (), +__acosh_fe +); + +40 #ifdeà +__USE_ISOC99 + + +41 +__REDIRECT_NTH + ( +acoshf +, (), +__acoshf_fe +); + +42 #ifdeà +__MATH_DECLARE_LDOUBLE + + +43 #ifdeà +__NO_LONG_DOUBLE_MATH + + +44 +__REDIRECT_NTH + ( +acoshl +, (), +__acosh_fe +); + +46 +__REDIRECT_NTH + ( +acoshl +, (), +__acoshl_fe +); + +52 +__REDIRECT_NTH + ( +as +, (), +__as_fe +); + +53 #ifdeà +__USE_ISOC99 + + +54 +__REDIRECT_NTH + ( +asf +, (), +__asf_fe +); + +55 #ifdeà +__MATH_DECLARE_LDOUBLE + + +56 #ifdeà +__NO_LONG_DOUBLE_MATH + + +57 +__REDIRECT_NTH + ( +asl +, (), +__as_fe +); + +59 +__REDIRECT_NTH + ( +asl +, (), +__asl_fe +); + +65 +__REDIRECT_NTH + ( +©ª2 +, (, ), +__©ª2_fe +); + +66 #ifdeà +__USE_ISOC99 + + +67 +__REDIRECT_NTH + ( +©ª2f +, (, ), +__©ª2f_fe +); + +68 #ifdeà +__MATH_DECLARE_LDOUBLE + + +69 #ifdeà +__NO_LONG_DOUBLE_MATH + + +70 +__REDIRECT_NTH + ( +©ª2l +, (, ), + +71 +__©ª2_fe +); + +73 +__REDIRECT_NTH + ( +©ª2l +, (, ), + +74 +__©ª2l_fe +); + +79 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +81 +__REDIRECT_NTH + ( +©ªh +, (), +__©ªh_fe +); + +83 #ifdeà +__USE_ISOC99 + + +84 +__REDIRECT_NTH + ( +©ªhf +, (), +__©ªhf_fe +); + +85 #ifdeà +__MATH_DECLARE_LDOUBLE + + +86 #ifdeà +__NO_LONG_DOUBLE_MATH + + +87 +__REDIRECT_NTH + ( +©ªhl +, (), +__©ªh_fe +); + +89 +__REDIRECT_NTH + ( +©ªhl +, (), +__©ªhl_fe +); + +95 +__REDIRECT_NTH + ( +cosh +, (), +__cosh_fe +); + +96 #ifdeà +__USE_ISOC99 + + +97 +__REDIRECT_NTH + ( +coshf +, (), +__coshf_fe +); + +98 #ifdeà +__MATH_DECLARE_LDOUBLE + + +99 #ifdeà +__NO_LONG_DOUBLE_MATH + + +100 +__REDIRECT_NTH + ( +coshl +, (), +__cosh_fe +); + +102 +__REDIRECT_NTH + ( +coshl +, (), +__coshl_fe +); + +108 +__REDIRECT_NTH + ( +exp +, (), +__exp_fe +); + +109 #ifdeà +__USE_ISOC99 + + +110 +__REDIRECT_NTH + ( +expf +, (), +__expf_fe +); + +111 #ifdeà +__MATH_DECLARE_LDOUBLE + + +112 #ifdeà +__NO_LONG_DOUBLE_MATH + + +113 +__REDIRECT_NTH + ( +ex¶ +, (), +__exp_fe +); + +115 +__REDIRECT_NTH + ( +ex¶ +, (), +__ex¶_fe +); + +120 #ifdeà +__USE_GNU + + +122 +__REDIRECT_NTH + ( +exp10 +, (), +__exp10_fe +); + +123 +__REDIRECT_NTH + ( +exp10f +, (), +__exp10f_fe +); + +124 #ifdeà +__MATH_DECLARE_LDOUBLE + + +125 #ifdeà +__NO_LONG_DOUBLE_MATH + + +126 +__REDIRECT_NTH + ( +exp10l +, (), +__exp10_fe +); + +128 +__REDIRECT_NTH + ( +exp10l +, (), +__exp10l_fe +); + +133 +__REDIRECT_NTH + ( +pow10 +, (), +__exp10_fe +); + +134 +__REDIRECT_NTH + ( +pow10f +, (), +__exp10f_fe +); + +135 #ifdeà +__MATH_DECLARE_LDOUBLE + + +136 #ifdeà +__NO_LONG_DOUBLE_MATH + + +137 +__REDIRECT_NTH + ( +pow10l +, (), +__exp10_fe +); + +139 +__REDIRECT_NTH + ( +pow10l +, (), +__exp10l_fe +); + +144 #ifdeà +__USE_ISOC99 + + +146 +__REDIRECT_NTH + ( +exp2 +, (), +__exp2_fe +); + +147 +__REDIRECT_NTH + ( +exp2f +, (), +__exp2f_fe +); + +148 #ifdeà +__MATH_DECLARE_LDOUBLE + + +149 #ifdeà +__NO_LONG_DOUBLE_MATH + + +150 +__REDIRECT_NTH + ( +exp2l +, (), +__exp2_fe +); + +152 +__REDIRECT_NTH + ( +exp2l +, (), +__exp2l_fe +); + +158 +__REDIRECT_NTH + ( +fmod +, (, ), +__fmod_fe +); + +159 #ifdeà +__USE_ISOC99 + + +160 +__REDIRECT_NTH + ( +fmodf +, (, ), +__fmodf_fe +); + +161 #ifdeà +__MATH_DECLARE_LDOUBLE + + +162 #ifdeà +__NO_LONG_DOUBLE_MATH + + +163 +__REDIRECT_NTH + ( +fmodl +, (, ), + +164 +__fmod_fe +); + +166 +__REDIRECT_NTH + ( +fmodl +, (, ), + +167 +__fmodl_fe +); + +172 #ià +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +174 +__REDIRECT_NTH + ( +hypÙ +, (, ), +__hypÙ_fe +); + +176 #ifdeà +__USE_ISOC99 + + +177 +__REDIRECT_NTH + ( +hypÙf +, (, ), +__hypÙf_fe +); + +178 #ifdeà +__MATH_DECLARE_LDOUBLE + + +179 #ifdeà +__NO_LONG_DOUBLE_MATH + + +180 +__REDIRECT_NTH + ( +hypÙl +, (, ), + +181 +__hypÙ_fe +); + +183 +__REDIRECT_NTH + ( +hypÙl +, (, ), + +184 +__hypÙl_fe +); + +189 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +191 +__REDIRECT_NTH + ( +j0 +, (), +__j0_fe +); + +193 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +194 +__REDIRECT_NTH + ( +j0f +, (), +__j0f_fe +); + +195 #ifdeà +__MATH_DECLARE_LDOUBLE + + +196 #ifdeà +__NO_LONG_DOUBLE_MATH + + +197 +__REDIRECT_NTH + ( +j0l +, (), +__j0_fe +); + +199 +__REDIRECT_NTH + ( +j0l +, (), +__j0l_fe +); + +204 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +206 +__REDIRECT_NTH + ( +y0 +, (), +__y0_fe +); + +208 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +209 +__REDIRECT_NTH + ( +y0f +, (), +__y0f_fe +); + +210 #ifdeà +__MATH_DECLARE_LDOUBLE + + +211 #ifdeà +__NO_LONG_DOUBLE_MATH + + +212 +__REDIRECT_NTH + ( +y0l +, (), +__y0_fe +); + +214 +__REDIRECT_NTH + ( +y0l +, (), +__y0l_fe +); + +219 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +221 +__REDIRECT_NTH + ( +j1 +, (), +__j1_fe +); + +223 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +224 +__REDIRECT_NTH + ( +j1f +, (), +__j1f_fe +); + +225 #ifdeà +__MATH_DECLARE_LDOUBLE + + +226 #ifdeà +__NO_LONG_DOUBLE_MATH + + +227 +__REDIRECT_NTH + ( +j1l +, (), +__j1_fe +); + +229 +__REDIRECT_NTH + ( +j1l +, (), +__j1l_fe +); + +234 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +236 +__REDIRECT_NTH + ( +y1 +, (), +__y1_fe +); + +238 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +239 +__REDIRECT_NTH + ( +y1f +, (), +__y1f_fe +); + +240 #ifdeà +__MATH_DECLARE_LDOUBLE + + +241 #ifdeà +__NO_LONG_DOUBLE_MATH + + +242 +__REDIRECT_NTH + ( +y1l +, (), +__y1_fe +); + +244 +__REDIRECT_NTH + ( +y1l +, (), +__y1l_fe +); + +249 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +251 +__REDIRECT_NTH + ( +jn +, (, ), +__jn_fe +); + +253 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +254 +__REDIRECT_NTH + ( +jnf +, (, ), +__jnf_fe +); + +255 #ifdeà +__MATH_DECLARE_LDOUBLE + + +256 #ifdeà +__NO_LONG_DOUBLE_MATH + + +257 +__REDIRECT_NTH + ( +jÆ +, (, ), +__jn_fe +); + +259 +__REDIRECT_NTH + ( +jÆ +, (, ), +__jÆ_fe +); + +264 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +266 +__REDIRECT_NTH + ( +yn +, (, ), +__yn_fe +); + +268 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +269 +__REDIRECT_NTH + ( +ynf +, (, ), +__ynf_fe +); + +270 #ifdeà +__MATH_DECLARE_LDOUBLE + + +271 #ifdeà +__NO_LONG_DOUBLE_MATH + + +272 +__REDIRECT_NTH + ( +yÆ +, (, ), +__yn_fe +); + +274 +__REDIRECT_NTH + ( +yÆ +, (, ), +__yÆ_fe +); + +279 #ifdeà +__USE_MISC + + +281 +__REDIRECT_NTH + ( +lgamma_r +, (, *), +__lgamma_r_fe +); + +282 #ifdeà +__USE_ISOC99 + + +283 +__REDIRECT_NTH + ( +lgammaf_r +, (, *), +__lgammaf_r_fe +); + +284 #ifdeà +__MATH_DECLARE_LDOUBLE + + +285 #ifdeà +__NO_LONG_DOUBLE_MATH + + +286 +__REDIRECT_NTH + ( +lgamm®_r +, (, *), + +287 +__lgamma_r_fe +); + +289 +__REDIRECT_NTH + ( +lgamm®_r +, (, *), + +290 +__lgamm®_r_fe +); + +296 +__lgamma_r_fe + (, *); + +297 +__lgammaf_r_fe + (, *); + +298 #ifdeà +__NO_LONG_DOUBLE_MATH + + +299 +__REDIRECT_NTH + ( +__lgamm®_r_fe +, (, *), + +300 +__lgamma_r_fe +); + +302 +__lgamm®_r_fe + (, *); + +305 #ià(( +defed + +__USE_XOPEN + || defed +__USE_ISOC99 +) \ + +306 && +defed + + g__exº_®ways_le +) + +308 +__exº_®ways_le + +__NTH + ( + $lgamma + ( +__d +)) + +310 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +311 + `__lgamma_r_fe + ( +__d +, & +signgam +); + +313 +__loÿl_signgam + = 0; + +314 + `__lgamma_r_fe + ( +__d +, & +__loÿl_signgam +); + +316 + } +} + +318 #ià +defed + +__USE_ISOC99 + && defed +__exº_®ways_le + + +319 +__exº_®ways_le + +__NTH + ( + $lgammaf + ( +__d +)) + +321 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +322 + `__lgammaf_r_fe + ( +__d +, & +signgam +); + +324 +__loÿl_signgam + = 0; + +325 + `__lgammaf_r_fe + ( +__d +, & +__loÿl_signgam +); + +327 + } +} + +328 #ifdeà +__MATH_DECLARE_LDOUBLE + + +329 +__exº_®ways_le + +__NTH + ( + $lgamm® + ( +__d +)) + +331 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN + + +332 + `__lgamm®_r_fe + ( +__d +, & +signgam +); + +334 +__loÿl_signgam + = 0; + +335 + `__lgamm®_r_fe + ( +__d +, & +__loÿl_signgam +); + +337 + } +} + +341 #ià(( +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +)) \ + +342 && +defed + + g__exº_®ways_le +) + +344 +__exº_®ways_le + +__NTH + ( + $gamma + ( +__d +)) + +346 + `__lgamma_r_fe + ( +__d +, & +signgam +); + +347 + } +} + +348 #ifdeà +__USE_ISOC99 + + +349 +__exº_®ways_le + +__NTH + ( + $gammaf + ( +__d +)) + +351 + `__lgammaf_r_fe + ( +__d +, & +signgam +); + +352 + } +} + +353 #ifdeà +__MATH_DECLARE_LDOUBLE + + +354 +__exº_®ways_le + +__NTH + ( + $gamm® + ( +__d +)) + +356 + `__lgamm®_r_fe + ( +__d +, & +signgam +); + +357 + } +} + +363 +__REDIRECT_NTH + ( +log +, (), +__log_fe +); + +364 #ifdeà +__USE_ISOC99 + + +365 +__REDIRECT_NTH + ( +logf +, (), +__logf_fe +); + +366 #ifdeà +__MATH_DECLARE_LDOUBLE + + +367 #ifdeà +__NO_LONG_DOUBLE_MATH + + +368 +__REDIRECT_NTH + ( +logl +, (), +__log_fe +); + +370 +__REDIRECT_NTH + ( +logl +, (), +__logl_fe +); + +376 +__REDIRECT_NTH + ( +log10 +, (), +__log10_fe +); + +377 #ifdeà +__USE_ISOC99 + + +378 +__REDIRECT_NTH + ( +log10f +, (), +__log10f_fe +); + +379 #ifdeà +__MATH_DECLARE_LDOUBLE + + +380 #ifdeà +__NO_LONG_DOUBLE_MATH + + +381 +__REDIRECT_NTH + ( +log10l +, (), +__log10_fe +); + +383 +__REDIRECT_NTH + ( +log10l +, (), +__log10l_fe +); + +388 #ifdeà +__USE_ISOC99 + + +390 +__REDIRECT_NTH + ( +log2 +, (), +__log2_fe +); + +391 +__REDIRECT_NTH + ( +log2f +, (), +__log2f_fe +); + +392 #ifdeà +__MATH_DECLARE_LDOUBLE + + +393 #ifdeà +__NO_LONG_DOUBLE_MATH + + +394 +__REDIRECT_NTH + ( +log2l +, (), +__log2_fe +); + +396 +__REDIRECT_NTH + ( +log2l +, (), +__log2l_fe +); + +402 +__REDIRECT_NTH + ( +pow +, (, ), +__pow_fe +); + +403 #ifdeà +__USE_ISOC99 + + +404 +__REDIRECT_NTH + ( +powf +, (, ), +__powf_fe +); + +405 #ifdeà +__MATH_DECLARE_LDOUBLE + + +406 #ifdeà +__NO_LONG_DOUBLE_MATH + + +407 +__REDIRECT_NTH + ( +powl +, (, ), + +408 +__pow_fe +); + +410 +__REDIRECT_NTH + ( +powl +, (, ), + +411 +__powl_fe +); + +416 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +418 +__REDIRECT_NTH + ( +»mad +, (, ), +__»mad_fe +); + +420 #ifdeà +__USE_ISOC99 + + +421 +__REDIRECT_NTH + ( +»madf +, (, ), +__»madf_fe +); + +422 #ifdeà +__MATH_DECLARE_LDOUBLE + + +423 #ifdeà +__NO_LONG_DOUBLE_MATH + + +424 +__REDIRECT_NTH + ( +»madl +, (, ), + +425 +__»mad_fe +); + +427 +__REDIRECT_NTH + ( +»madl +, (, ), + +428 +__»madl_fe +); + +433 #ià( +defed + +__USE_MISC + \ + +434 || ( +defed + + g__USE_XOPEN_EXTENDED + && !defed + g__USE_XOPEN2K8 +)) + +436 +__REDIRECT_NTH + ( +sÿlb +, (, ), +__sÿlb_fe +); + +438 #ià +defed + +__USE_MISC + && defed +__USE_ISOC99 + + +439 +__REDIRECT_NTH + ( +sÿlbf +, (, ), +__sÿlbf_fe +); + +440 #ifdeà +__MATH_DECLARE_LDOUBLE + + +441 #ifdeà +__NO_LONG_DOUBLE_MATH + + +442 +__REDIRECT_NTH + ( +sÿlbl +, (, ), + +443 +__sÿlb_fe +); + +445 +__REDIRECT_NTH + ( +sÿlbl +, (, ), + +446 +__sÿlbl_fe +); + +452 +__REDIRECT_NTH + ( +sh +, (), +__sh_fe +); + +453 #ifdeà +__USE_ISOC99 + + +454 +__REDIRECT_NTH + ( +shf +, (), +__shf_fe +); + +455 #ifdeà +__MATH_DECLARE_LDOUBLE + + +456 #ifdeà +__NO_LONG_DOUBLE_MATH + + +457 +__REDIRECT_NTH + ( +shl +, (), +__sh_fe +); + +459 +__REDIRECT_NTH + ( +shl +, (), +__shl_fe +); + +465 +__REDIRECT_NTH + ( +sq¹ +, (), +__sq¹_fe +); + +466 #ifdeà +__USE_ISOC99 + + +467 +__REDIRECT_NTH + ( +sq¹f +, (), +__sq¹f_fe +); + +468 #ifdeà +__MATH_DECLARE_LDOUBLE + + +469 #ifdeà +__NO_LONG_DOUBLE_MATH + + +470 +__REDIRECT_NTH + ( +sq¹l +, (), +__sq¹_fe +); + +472 +__REDIRECT_NTH + ( +sq¹l +, (), +__sq¹l_fe +); + +477 #ià +defed + +__USE_ISOC99 + && defed +__exº_®ways_le + + +479 +__gamma_r_fe + (, *); + +480 +__exº_®ways_le + +__NTH + ( + $tgamma + ( +__d +)) + +482 +__loÿl_signgam + = 0; + +483 +__»s + = + `__gamma_r_fe + ( +__d +, & +__loÿl_signgam +); + +484 +__loÿl_signgam + < 0 ? - +__»s + : __res; + +485 + } +} + +486 +__gammaf_r_fe + (, *); + +487 +__exº_®ways_le + +__NTH + ( + $tgammaf + ( +__d +)) + +489 +__loÿl_signgam + = 0; + +490 +__»s + = + `__gammaf_r_fe + ( +__d +, & +__loÿl_signgam +); + +491 +__loÿl_signgam + < 0 ? - +__»s + : __res; + +492 + } +} + +493 #ifdeà +__MATH_DECLARE_LDOUBLE + + +494 +__gamm®_r_fe + (, *); + +495 +__exº_®ways_le + +__NTH + ( + $tgamm® + ( +__d +)) + +497 +__loÿl_signgam + = 0; + +498 #ifdeà +__NO_LONG_DOUBLE_MATH + + +499 +__»s + = + `__gamma_r_fe + ( +__d +, & +__loÿl_signgam +); + +501 +__»s + = + `__gamm®_r_fe + ( +__d +, & +__loÿl_signgam +); + +503 +__loÿl_signgam + < 0 ? - +__»s + : __res; + +504 + } +} + + @/usr/include/bits/math-vector.h + +19 #iâdeà +_MATH_H + + +25 + ~<bs/libm-simd-deþ-¡ubs.h +> + +27 #ià +defed + +__x86_64__ + && defed +__FAST_MATH__ + + +28 #ià +defed + +_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_sf + + +44 + #__DECL_SIMD_sf + +__DECL_SIMD_x86_64 + + + ) + +45 #undeà +__DECL_SIMD_scos + + +46 + #__DECL_SIMD_scos + +__DECL_SIMD_x86_64 + + + ) + +47 #undeà +__DECL_SIMD_scosf + + +48 + #__DECL_SIMD_scosf + +__DECL_SIMD_x86_64 + + + ) + +49 #undeà +__DECL_SIMD_log + + +50 + #__DECL_SIMD_log + +__DECL_SIMD_x86_64 + + + ) + +51 #undeà +__DECL_SIMD_logf + + +52 + #__DECL_SIMD_logf + +__DECL_SIMD_x86_64 + + + ) + +53 #undeà +__DECL_SIMD_exp + + +54 + #__DECL_SIMD_exp + +__DECL_SIMD_x86_64 + + + ) + +55 #undeà +__DECL_SIMD_expf + + +56 + #__DECL_SIMD_expf + +__DECL_SIMD_x86_64 + + + ) + +57 #undeà +__DECL_SIMD_pow + + +58 + #__DECL_SIMD_pow + +__DECL_SIMD_x86_64 + + + ) + +59 #undeà +__DECL_SIMD_powf + + +60 + #__DECL_SIMD_powf + +__DECL_SIMD_x86_64 + + + ) + + @/usr/include/bits/mathcalls.h + +45 #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 + ( +sh +,, ( +_MdoubË_ + +__x +)); + +76 +__MATHCALL + ( +nh +,, ( +_MdoubË_ + +__x +)); + +77 + g_MdoubË_END_NAMESPACE + + +79 #ifdeà +__USE_GNU + + +81 +__MATHDECL_VEC + (, +scos +,, + +82 ( +_MdoubË_ + +__x +, _MdoubË_ * +__sx +, _MdoubË_ * +__cosx +)); + +85 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +86 +__BEGIN_NAMESPACE_C99 + + +88 +__MATHCALL + ( +acosh +,, ( +_MdoubË_ + +__x +)); + +90 +__MATHCALL + ( +ash +,, ( +_MdoubË_ + +__x +)); + +92 +__MATHCALL + ( +©ªh +,, ( +_MdoubË_ + +__x +)); + +93 + g__END_NAMESPACE_C99 + + +98 +_MdoubË_BEGIN_NAMESPACE + + +100 +__MATHCALL_VEC + ( +exp +,, ( +_MdoubË_ + +__x +)); + +103 +__MATHCALL + ( +äexp +,, ( +_MdoubË_ + +__x +, * +__expÚt +)); + +106 +__MATHCALL + ( +ldexp +,, ( +_MdoubË_ + +__x +, +__expÚt +)); + +109 +__MATHCALL_VEC + ( +log +,, ( +_MdoubË_ + +__x +)); + +112 +__MATHCALL + ( +log10 +,, ( +_MdoubË_ + +__x +)); + +115 +__MATHCALL + ( +modf +,, ( +_MdoubË_ + +__x +, _MdoubË_ * +__ +)è +__nÚnuÎ + ((2)); + +116 + g_MdoubË_END_NAMESPACE + + +118 #ifdeà +__USE_GNU + + +120 +__MATHCALL + ( +exp10 +,, ( +_MdoubË_ + +__x +)); + +122 +__MATHCALL + ( +pow10 +,, ( +_MdoubË_ + +__x +)); + +125 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +126 +__BEGIN_NAMESPACE_C99 + + +128 +__MATHCALL + ( +expm1 +,, ( +_MdoubË_ + +__x +)); + +131 +__MATHCALL + ( +log1p +,, ( +_MdoubË_ + +__x +)); + +134 +__MATHCALL + ( +logb +,, ( +_MdoubË_ + +__x +)); + +135 + g__END_NAMESPACE_C99 + + +138 #ifdeà +__USE_ISOC99 + + +139 +__BEGIN_NAMESPACE_C99 + + +141 +__MATHCALL + ( +exp2 +,, ( +_MdoubË_ + +__x +)); + +144 +__MATHCALL + ( +log2 +,, ( +_MdoubË_ + +__x +)); + +145 + g__END_NAMESPACE_C99 + + +151 +_MdoubË_BEGIN_NAMESPACE + + +153 +__MATHCALL_VEC + ( +pow +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +156 +__MATHCALL + ( +sq¹ +,, ( +_MdoubË_ + +__x +)); + +157 + g_MdoubË_END_NAMESPACE + + +159 #ià +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +160 +__BEGIN_NAMESPACE_C99 + + +162 +__MATHCALL + ( +hypÙ +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +163 + g__END_NAMESPACE_C99 + + +166 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +167 +__BEGIN_NAMESPACE_C99 + + +169 +__MATHCALL + ( +cb¹ +,, ( +_MdoubË_ + +__x +)); + +170 + g__END_NAMESPACE_C99 + + +176 +_MdoubË_BEGIN_NAMESPACE + + +178 +__MATHCALLX + ( +û +,, ( +_MdoubË_ + +__x +), ( +__cÚ¡__ +)); + +181 +__MATHCALLX + ( +çbs +,, ( +_MdoubË_ + +__x +), ( +__cÚ¡__ +)); + +184 +__MATHCALLX + ( +æoÜ +,, ( +_MdoubË_ + +__x +), ( +__cÚ¡__ +)); + +187 +__MATHCALL + ( +fmod +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +192 +__MATHDECL_1 + (, +__isf +,, ( +_MdoubË_ + +__v®ue +)è +__©ibu__ + (( +__cÚ¡__ +)); + +195 +__MATHDECL_1 + (, +__fe +,, ( +_MdoubË_ + +__v®ue +)è +__©ibu__ + (( +__cÚ¡__ +)); + +196 + g_MdoubË_END_NAMESPACE + + +198 #ifdeà +__USE_MISC + + +199 #ià(! +defed + +__ýlu¥lus + \ + +200 || + g__ýlu¥lus + < 201103L \ + +201 || + g__MATH_DECLARING_DOUBLE + == 0) + +204 +__MATHDECL_1 + (, +isf +,, ( +_MdoubË_ + +__v®ue +)è +__©ibu__ + (( +__cÚ¡__ +)); + +208 +__MATHDECL_1 + (, +fe +,, ( +_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à +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +237 #ià(! +defed + +__ýlu¥lus + \ + +238 || + g__ýlu¥lus + < 201103L \ + +239 || + g__MATH_DECLARING_DOUBLE + == 0) + +241 +__MATHDECL_1 + (, +i¢ª +,, ( +_MdoubË_ + +__v®ue +)è +__©ibu__ + (( +__cÚ¡__ +)); + +245 #ià +defed + +__USE_MISC + || (defed +__USE_XOPEN + && +__MATH_DECLARING_DOUBLE +) + +247 +__MATHCALL + ( +j0 +,, ( +_MdoubË_ +)); + +248 +__MATHCALL + ( +j1 +,, ( +_MdoubË_ +)); + +249 +__MATHCALL + ( +jn +,, (, +_MdoubË_ +)); + +250 +__MATHCALL + ( +y0 +,, ( +_MdoubË_ +)); + +251 +__MATHCALL + ( +y1 +,, ( +_MdoubË_ +)); + +252 +__MATHCALL + ( +yn +,, (, +_MdoubË_ +)); + +256 #ià +defed + +__USE_XOPEN + || defed +__USE_ISOC99 + + +257 +__BEGIN_NAMESPACE_C99 + + +259 +__MATHCALL + ( +f +,, ( +_MdoubË_ +)); + +260 +__MATHCALL + ( +fc +,, ( +_MdoubË_ +)); + +261 +__MATHCALL + ( +lgamma +,, ( +_MdoubË_ +)); + +262 + g__END_NAMESPACE_C99 + + +265 #ifdeà +__USE_ISOC99 + + +266 +__BEGIN_NAMESPACE_C99 + + +268 +__MATHCALL + ( +tgamma +,, ( +_MdoubË_ +)); + +269 + g__END_NAMESPACE_C99 + + +272 #ià +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_XOPEN2K +) + +274 +__MATHCALL + ( +gamma +,, ( +_MdoubË_ +)); + +277 #ifdeà +__USE_MISC + + +281 +__MATHCALL + ( +lgamma +, +_r +, ( +_MdoubË_ +, * +__signgamp +)); + +285 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +286 +__BEGIN_NAMESPACE_C99 + + +289 +__MATHCALL + ( +rt +,, ( +_MdoubË_ + +__x +)); + +292 +__MATHCALLX + ( +Ãxá +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +), ( +__cÚ¡__ +)); + +293 #ià +defed + +__USE_ISOC99 + && !defed +__LDBL_COMPAT + + +294 +__MATHCALLX + ( +Ãxow¬d +,, ( +_MdoubË_ + +__x +, +__y +), ( +__cÚ¡__ +)); + +298 +__MATHCALL + ( +»mad +,, ( +_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 + ( +ìbyt +,, ( +_MdoubË_ + +__x +)); + +319 +__MATHCALLX + ( +round +,, ( +_MdoubË_ + +__x +), ( +__cÚ¡__ +)); + +323 +__MATHCALLX + ( +unc +,, ( +_MdoubË_ + +__x +), ( +__cÚ¡__ +)); + +328 +__MATHCALL + ( +»mquo +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +, * +__quo +)); + +335 +__MATHDECL + (, +Ìt +,, ( +_MdoubË_ + +__x +)); + +336 +__exnsiÚ__ + + +337 +__MATHDECL + (, +Îrt +,, ( +_MdoubË_ + +__x +)); + +341 +__MATHDECL + (, +Ìound +,, ( +_MdoubË_ + +__x +)); + +342 +__exnsiÚ__ + + +343 +__MATHDECL + (, +Îround +,, ( +_MdoubË_ + +__x +)); + +347 +__MATHCALL + ( +fdim +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +)); + +350 +__MATHCALLX + ( +fmax +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +), ( +__cÚ¡__ +)); + +353 +__MATHCALLX + ( +fm +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__y +), ( +__cÚ¡__ +)); + +357 +__MATHDECL_1 + (, +__åþassify +,, ( +_MdoubË_ + +__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à +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +370 + g__END_NAMESPACE_C99 + + +373 #ifdeà +__USE_GNU + + +375 +__MATHDECL_1 + (, +__issigÇlg +,, ( +_MdoubË_ + +__v®ue +)) + +376 +__©ibu__ + (( +__cÚ¡__ +)); + +379 #ià +defed + +__USE_MISC + || (defed +__USE_XOPEN_EXTENDED + \ + +380 && + g__MATH_DECLARING_DOUBLE + \ + +381 && ! +defed + + g__USE_XOPEN2K8 +) + +383 +__MATHCALL + ( +sÿlb +,, ( +_MdoubË_ + +__x +, _MdoubË_ +__n +)); + + @/usr/include/bits/mathdef.h + +18 #ià! +defed + +_MATH_H + && !defed +_COMPLEX_H + + +22 #ià +defed + +__USE_ISOC99 + && defed +_MATH_H + && !defed +_MATH_H_MATHDEF + + +23 + #_MATH_H_MATHDEF + 1 + + ) + +25 #ià +defed + +__x86_64__ + || (defed +__FLT_EVAL_METHOD__ + && __FLT_EVAL_METHOD__ == 0) + +28 + 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_le + + +24 + #__MATH_INLINE + +__le + + + ) + +26 + #__MATH_INLINE + +__exº_®ways_le + + + ) + +30 #ià +defed + +__USE_ISOC99 + && defed +__GNUC__ + && __GNUC__ >= 2 + +32 #ià! +__GNUC_PREREQ + (2,97) + +37 #undeà +isg»© + + +38 #undeà +isg»©equ® + + +39 #undeà +i¦ess + + +40 #undeà +i¦es£qu® + + +41 #undeà +i¦essg»© + + +42 #undeà +isunÜded + + +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Üded +( +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Üded +( +x +, +y +) \ + +113 ({ +__»suÉ +; \ + +114 + `__asm__ + ("fucompp; fnstsw; sahf; setp %%al" \ + +115 : "÷" ( +__»suÉ +è: "u" ( +y +), "t" ( +x +) : "cc", "st", "st(1)"); \ + +116 +__»suÉ +; }) + + ) + +122 #ià +__GNUC_PREREQ + (2, 8) + +123 +__BEGIN_NAMESPACE_C99 + + +126 +__MATH_INLINE + + +127 +__NTH + ( + $__signbf + ( +__x +)) + +129 #ifdeà +__SSE2_MATH__ + + +130 +__m +; + +131 + `__asm + ("pmovmskb %1, %0" : "ô" ( +__m +è: "x" ( +__x +)); + +132 ( +__m + & 0x8) != 0; + +134 +__exnsiÚ__ + uniÚ { +__f +; +__i +; } +__u + = { __f: +__x + }; + +135 +__u +. +__i + < 0; + +137 + } +} + +138 +__MATH_INLINE + + +139 +__NTH + ( + $__signb + ( +__x +)) + +141 #ifdeà +__SSE2_MATH__ + + +142 +__m +; + +143 + `__asm + ("pmovmskb %1, %0" : "ô" ( +__m +è: "x" ( +__x +)); + +144 ( +__m + & 0x80) != 0; + +146 +__exnsiÚ__ + uniÚ { +__d +; +__i +[2]; } +__u + = { __d: +__x + }; + +147 +__u +. +__i +[1] < 0; + +149 + } +} + +150 +__MATH_INLINE + + +151 +__NTH + ( + $__signbl + ( +__x +)) + +153 +__exnsiÚ__ + uniÚ { +__l +; +__i +[3]; } +__u + = { __l: +__x + }; + +154 ( +__u +. +__i +[2] & 0x8000) != 0; + +155 + } +} + +157 + g__END_NAMESPACE_C99 + + +164 #ià +__GNUC_PREREQ + (2, 8) + +165 #ià! +__GNUC_PREREQ + (3, 4è&& ! +defed + +__NO_MATH_INLINES + \ + +166 && +defed + + g__OPTIMIZE__ + + +170 #ifdeà +__USE_ISOC99 + + +171 + g__BEGIN_NAMESPACE_C99 + + +174 #ifdeà +__SSE_MATH__ + + +175 +__MATH_INLINE + + +176 +__NTH + ( + $Ìtf + ( +__x +)) + +178 +__»s +; + +183 +__asm + + `__vÞ©e__ + ("cvtss2s%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +184 +__»s +; + +185 + } +} + +187 #ifdeà +__SSE2_MATH__ + + +188 +__MATH_INLINE + + +189 +__NTH + ( + $Ìt + ( +__x +)) + +191 +__»s +; + +196 +__asm + + `__vÞ©e__ + ("cvtsd2s%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +197 +__»s +; + +198 + } +} + +200 #ifdeà +__x86_64__ + + +201 +__exnsiÚ__ + + +202 +__MATH_INLINE + + +203 +__NTH + ( + $Îrtf + ( +__x +)) + +205 +__»s +; + +210 +__asm + + `__vÞ©e__ + ("cvtss2s%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +211 +__»s +; + +212 + } +} + +213 +__exnsiÚ__ + + +214 +__MATH_INLINE + + +215 +__NTH + ( + $Îrt + ( +__x +)) + +217 +__»s +; + +222 +__asm + + `__vÞ©e__ + ("cvtsd2s%1, %0" : "ô" ( +__»s +è: "xm" ( +__x +)); + +223 +__»s +; + +224 + } +} + +227 #ià +defed + +__FINITE_MATH_ONLY__ + && __FINITE_MATH_ONLY__ > 0 \ + +228 && +defed + +__SSE2_MATH__ + + +230 +__MATH_INLINE + + +231 +__NTH + ( + $fmaxf + ( +__x +, +__y +)) + +233 #ifdeà +__AVX__ + + +234 +__»s +; + +235 + `__asm + ("vmaxs %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +236 +__»s +; + +238 + `__asm + ("maxs %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +239 +__x +; + +241 + } +} + +242 +__MATH_INLINE + + +243 +__NTH + ( + $fmax + ( +__x +, +__y +)) + +245 #ifdeà +__AVX__ + + +246 +__»s +; + +247 + `__asm + ("vmaxsd %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +248 +__»s +; + +250 + `__asm + ("maxsd %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +251 +__x +; + +253 + } +} + +256 +__MATH_INLINE + + +257 +__NTH + ( + $fmf + ( +__x +, +__y +)) + +259 #ifdeà +__AVX__ + + +260 +__»s +; + +261 + `__asm + ("vms %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +262 +__»s +; + +264 + `__asm + ("ms %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +265 +__x +; + +267 + } +} + +268 +__MATH_INLINE + + +269 +__NTH + ( + $fm + ( +__x +, +__y +)) + +271 #ifdeà +__AVX__ + + +272 +__»s +; + +273 + `__asm + ("vmsd %2, %1, %0" : "=x" ( +__»s +è: "x" ( +x +), "xm" ( +__y +)); + +274 +__»s +; + +276 + `__asm + ("msd %1, %0" : "+x" ( +__x +è: "xm" ( +__y +)); + +277 +__x +; + +279 + } +} + +282 + g__END_NAMESPACE_C99 + + +285 #ià +defed + +__SSE4_1__ + && defed +__SSE2_MATH__ + + +286 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_ISOC99 + + +287 +__BEGIN_NAMESPACE_C99 + + +290 +__MATH_INLINE + + +291 +__NTH + ( + $rt + ( +__x +)) + +293 +__»s +; + +298 +__asm + + `__vÞ©e__ + ("roundsd $4, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +299 +__»s +; + +300 + } +} + +301 +__MATH_INLINE + + +302 +__NTH + ( + $rtf + ( +__x +)) + +304 +__»s +; + +309 +__asm + + `__vÞ©e__ + ("rounds $4, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +310 +__»s +; + +311 + } +} + +313 #ifdeà +__USE_ISOC99 + + +315 +__MATH_INLINE + + +316 +__NTH + ( + $ìbyt + ( +__x +)) + +318 +__»s +; + +323 +__asm + + `__vÞ©e__ + ("roundsd $0xc, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +324 +__»s +; + +325 + } +} + +326 +__MATH_INLINE + + +327 +__NTH + ( + $ìbytf + ( +__x +)) + +329 +__»s +; + +334 +__asm + + `__vÞ©e__ + ("rounds $0xc, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +335 +__»s +; + +336 + } +} + +339 + g__END_NAMESPACE_C99 + + +342 +__BEGIN_NAMESPACE_STD + + +344 +__MATH_INLINE + + +345 +__NTH + ( + $û + ( +__x +)) + +347 +__»s +; + +348 + `__asm + ("roundsd $2, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +349 +__»s +; + +350 + } +} + +351 +__END_NAMESPACE_STD + + +353 +__BEGIN_NAMESPACE_C99 + + +354 +__MATH_INLINE + + +355 +__NTH + ( + $ûf + ( +__x +)) + +357 +__»s +; + +358 + `__asm + ("rounds $2, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +359 +__»s +; + +360 + } +} + +361 +__END_NAMESPACE_C99 + + +363 +__BEGIN_NAMESPACE_STD + + +365 +__MATH_INLINE + + +366 +__NTH + ( + $æoÜ + ( +__x +)) + +368 +__»s +; + +369 + `__asm + ("roundsd $1, %1, %0" : "=x" ( +__»s +è: "xm" ( +__x +)); + +370 +__»s +; + +371 + } +} + +372 +__END_NAMESPACE_STD + + +374 +__BEGIN_NAMESPACE_C99 + + +375 +__MATH_INLINE + + +376 +__NTH + ( + $æ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à! +defed + +__SSE2_MATH__ + && !defed +__x86_64__ + + +391 #ià((! +defed + +__NO_MATH_INLINES + || defed +__LIBC_INTERNAL_MATH_INLINES +) \ + +392 && +defed + + g__OPTIMIZE__ +) + +396 #undeà +m©h_rhªdlg + + +405 #ifdeà +__USE_ISOC99 + + +406 + #__le_m©hÝ +( +func +, +Ý +) \ + +407 + `__le_m©hÝ_ + (, +func +, +Ý +) \ + +408 + `__le_m©hÝ_ + (, + `__CONCAT +( +func +, +f +), +Ý +) \ + +409 + `__le_m©hÝ_ + (, + `__CONCAT +( +func +, +l +), +Ý +) + + ) + +410 + #__le_m©hÝNP +( +func +, +Ý +) \ + +411 + `__le_m©hÝNP_ + (, +func +, +Ý +) \ + +412 + `__le_m©hÝNP_ + (, + `__CONCAT +( +func +, +f +), +Ý +) \ + +413 + `__le_m©hÝNP_ + (, + `__CONCAT +( +func +, +l +), +Ý +) + + ) + +415 + #__le_m©hÝ +( +func +, +Ý +) \ + +416 + `__le_m©hÝ_ + (, +func +, +Ý +) + + ) + +417 + #__le_m©hÝNP +( +func +, +Ý +) \ + +418 + `__le_m©hÝNP_ + (, +func +, +Ý +) + + ) + +421 + #__le_m©hÝ_ +( +æßt_ty³ +, +func +, +Ý +) \ + +422 + `__le_m©hÝ_deþ_ + ( +æßt_ty³ +, +func +, +Ý +, "0" ( +__x +)) + + ) + +423 + #__le_m©hÝNP_ +( +æßt_ty³ +, +func +, +Ý +) \ + +424 + `__le_m©hÝ_deþNP_ + ( +æßt_ty³ +, +func +, +Ý +, "0" ( +__x +)) + + ) + +427 #ifdeà +__USE_ISOC99 + + +428 + #__le_m©hÝ_deþ +( +func +, +Ý +, +·¿ms +...) \ + +429 + `__le_m©hÝ_deþ_ + (, +func +, +Ý +, +·¿ms +) \ + +430 + `__le_m©hÝ_deþ_ + (, + `__CONCAT +( +func +, +f +), +Ý +, +·¿ms +) \ + +431 + `__le_m©hÝ_deþ_ + (, + `__CONCAT +( +func +, +l +), +Ý +, +·¿ms +) + + ) + +432 + #__le_m©hÝ_deþNP +( +func +, +Ý +, +·¿ms +...) \ + +433 + `__le_m©hÝ_deþNP_ + (, +func +, +Ý +, +·¿ms +) \ + +434 + `__le_m©hÝ_deþNP_ + (, + `__CONCAT +( +func +, +f +), +Ý +, +·¿ms +) \ + +435 + `__le_m©hÝ_deþNP_ + (, + `__CONCAT +( +func +, +l +), +Ý +, +·¿ms +) + + ) + +437 + #__le_m©hÝ_deþ +( +func +, +Ý +, +·¿ms +...) \ + +438 + `__le_m©hÝ_deþ_ + (, +func +, +Ý +, +·¿ms +) + + ) + +439 + #__le_m©hÝ_deþNP +( +func +, +Ý +, +·¿ms +...) \ + +440 + `__le_m©hÝ_deþNP_ + (, +func +, +Ý +, +·¿ms +) + + ) + +443 + #__le_m©hÝ_deþ_ +( +æßt_ty³ +, +func +, +Ý +, +·¿ms +...) \ + +444 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³è +__THROW +; \ + +445 + `__le_m©hÝ_deþNP_ + ( +æßt_ty³ +, +func +, +Ý +, +·¿ms +) + + ) + +447 + #__le_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 + #__le_m©hcode +( +func +, +¬g +, +code +) \ + +458 + `__le_m©hcode_ + (, +func +, +¬g +, +code +) \ + +459 + `__le_m©hcode_ + (, + `__CONCAT +( +func +, +f +), +¬g +, +code +) \ + +460 + `__le_m©hcode_ + (, + `__CONCAT +( +func +, +l +), +¬g +, +code +) + + ) + +461 + #__le_m©hcodeNP +( +func +, +¬g +, +code +) \ + +462 + `__le_m©hcodeNP_ + (, +func +, +¬g +, +code +) \ + +463 + `__le_m©hcodeNP_ + (, + `__CONCAT +( +func +, +f +), +¬g +, +code +) \ + +464 + `__le_m©hcodeNP_ + (, + `__CONCAT +( +func +, +l +), +¬g +, +code +) + + ) + +465 + #__le_m©hcode2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +466 + `__le_m©hcode2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) \ + +467 + `__le_m©hcode2_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +code +) \ + +468 + `__le_m©hcode2_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +code +) + + ) + +469 + #__le_m©hcodeNP2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +470 + `__le_m©hcodeNP2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) \ + +471 + `__le_m©hcodeNP2_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +code +) \ + +472 + `__le_m©hcodeNP2_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +code +) + + ) + +473 + #__le_m©hcode3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +474 + `__le_m©hcode3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +475 + `__le_m©hcode3_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +476 + `__le_m©hcode3_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +477 + #__le_m©hcodeNP3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +478 + `__le_m©hcodeNP3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +479 + `__le_m©hcodeNP3_ + (, + `__CONCAT +( +func +, +f +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +480 + `__le_m©hcodeNP3_ + (, + `__CONCAT +( +func +, +l +), +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +482 + #__le_m©hcode +( +func +, +¬g +, +code +) \ + +483 + `__le_m©hcode_ + (, +func +, ( +¬g +), +code +) + + ) + +484 + #__le_m©hcodeNP +( +func +, +¬g +, +code +) \ + +485 + `__le_m©hcodeNP_ + (, +func +, ( +¬g +), +code +) + + ) + +486 + #__le_m©hcode2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +487 + `__le_m©hcode2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +488 + #__le_m©hcodeNP2 +( +func +, +¬g1 +, +¬g2 +, +code +) \ + +489 + `__le_m©hcodeNP2_ + (, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +490 + #__le_m©hcode3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +491 + `__le_m©hcode3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +492 + #__le_m©hcodeNP3 +( +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) \ + +493 + `__le_m©hcodeNP3_ + (, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +496 + #__le_m©hcode_ +( +æßt_ty³ +, +func +, +¬g +, +code +) \ + +497 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³è +__THROW +; \ + +498 + `__le_m©hcodeNP_ +( +æßt_ty³ +, +func +, +¬g +, +code +) + + ) + +500 + #__le_m©hcodeNP_ +( +æßt_ty³ +, +func +, +¬g +, +code +) \ + +501 +__MATH_INLINE + +æßt_ty³ + + `__NTH + ( + `func + (æßt_ty³ +¬g +)) \ + +503 +code +; \ + +504 } + + ) + +507 + #__le_m©hcode2_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +code +) \ + +508 +__MATH_INLINE + +æßt_ty³ + + `func + (æßt_ty³, flßt_ty³è +__THROW +; \ + +509 + `__le_m©hcodeNP2_ + ( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +code +) + + ) + +511 + #__le_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 + #__le_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 + `__le_m©hcodeNP3_ +( +æßt_ty³ +, +func +, +¬g1 +, +¬g2 +, +¬g3 +, +code +) + + ) + +521 + #__le_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à! +defed + +__NO_MATH_INLINES + && defed +__OPTIMIZE__ + + +534 #ifdeà +__FAST_MATH__ + + +535 #ifdeà +__USE_GNU + + +536 + #__scos_code + \ + +537 +__co¤ +; \ + +538 +__sr +; \ + +539 +__swtmp +; \ + +540 +__asm + +__vÞ©e__ + \ + +555 : "ñ" ( +__co¤ +), "=u" ( +__sr +), "÷" ( +__swtmp +è: "0" ( +__x +)); \ + +556 * +__sx + = +__sr +; \ + +557 * +__cosx + = +__co¤ + + + ) + +559 +__MATH_INLINE + + +560 +__NTH + ( + $__scos + ( +__x +, * +__sx +, * +__cosx +)) + +562 +__scos_code +; + +563 + } +} + +565 +__MATH_INLINE + + +566 +__NTH + ( + $__scosf + ( +__x +, * +__sx +, * +__cosx +)) + +568 +__scos_code +; + +569 + } +} + +571 +__MATH_INLINE + + +572 +__NTH + ( + $__sco¦ + ( +__x +, * +__sx +, * +__cosx +)) + +574 +__scos_code +; + +575 + } +} + +582 #ià +__GNUC_PREREQ + (3, 5) + +583 + #__expm1_code + \ + +584 +__mp +; \ + +585 +__mp + = + `__but_expm1l + ( +__x +); \ + +586 +__mp + ? __m°: +__x + + + ) + +588 + #__expm1_code + \ + +589 +__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 + $__le_m©hcodeNP_ + (, +__expm1l +, +__x +, +__expm1_code +) + +611 #ià + `__GNUC_PREREQ + (3, 4) + +612 + `__le_m©hcodeNP_ + (, +__ex¶ +, +__x +, + $__but_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 + $__le_m©hcodeNP + ( +exp +, +__x +, +__exp_code +) + +632 + $__le_m©hcodeNP_ + (, +__ex¶ +, +__x +, +__exp_code +) + +636 #ià! + `__GNUC_PREREQ + (3, 5) + +637 + `__le_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 + `__le_m©hcodeNP2_ + (, +__©ª2l +, +__y +, +__x +, + +650 + $__but_©ª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 + $__le_m©hcodeNP2 + ( +©ª2 +, +__y +, +__x +, +__©ª2_code +) + +661 + $__le_m©hcodeNP2_ + (, +__©ª2l +, +__y +, +__x +, +__©ª2_code +) + +665 #ià +defed + +__FAST_MATH__ + && ! + `__GNUC_PREREQ + (3, 5) + +666 + `__le_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 + `__le_m©hÝNP + ( +sq¹ +, "fsqrt") + +681 + `__le_m©hÝNP_ + (, +__sq¹l +, "fsqrt") + +682 + #__libc_sq¹l +( +n +è + `__sq¹l + (n) + + ) + +684 + #__libc_sq¹l +( +n +è + `__but_sq¹l + (n) + + ) + +688 #ià + `__GNUC_PREREQ + (2, 8) + +689 + `__le_m©hcodeNP_ + (, +çbs +, +__x +, + $__but_çbs + ( +__x +)) + +690 #ifdeà +__USE_ISOC99 + + +691 + `__le_m©hcodeNP_ + (, +çbsf +, +__x +, + $__but_çbsf + ( +__x +)) + +692 + `__le_m©hcodeNP_ + (, +çb¦ +, +__x +, + $__but_çb¦ + ( +__x +)) + +694 + `__le_m©hcodeNP_ + (, +__çb¦ +, +__x +, + $__but_çb¦ + ( +__x +)) + +696 + `__le_m©hÝ + ( +çbs +, "fabs") + +697 + `__le_m©hÝ_ + (, +__çb¦ +, "fabs") + +700 #ifdeà +__FAST_MATH__ + + +701 #ià! + `__GNUC_PREREQ + (3, 4) + +703 + `__le_m©hÝNP + ( +s +, "fsin") + +705 + `__le_m©hÝNP + ( +cos +, "fcos") + +707 + `__le_m©hÝ_deþNP + ( +log +, "ædÊ2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +710 #ià! + `__GNUC_PREREQ + (3, 5) + +711 + `__le_m©hÝ_deþNP + ( +log10 +, "ædlg2; fxch; fyl2x", "0" ( +__x +) : "st(1)") + +713 + `__le_m©hcodeNP + ( +as +, +__x +, + `__©ª2l + (__x, + `__libc_sq¹l + (1.0 - __x * __x))) + +714 + `__le_m©hcodeNP + ( +acos +, +__x +, + `__©ª2l + ( + `__libc_sq¹l + (1.0 - __x * __x), __x)) + +717 #ià! + `__GNUC_PREREQ + (3, 4) + +718 + `__le_m©hÝ_deþNP + ( +©ª +, "æd1; f·n", "0" ( +__x +) : "st(1)") + +722 + `__le_m©hcode_ + (, +__sgn1l +, +__x +, \ + +723 +__exnsiÚ__ + uniÚ { +__xld +; +__xi +[3]; } +__n + = \ + +724 { +__xld +: +__x + + } +}; \ + +725 + g__n +. + g__xi +[2] = ( +__n +. +__xi +[2] & 0x8000) | 0x3fff; \ + +726 + g__n +. + g__xi +[1] = 0x80000000; \ + +727 + g__n +. + g__xi +[0] = 0; \ + +728 + g__n +. + g__xld +) + +731 #ifdeà +__FAST_MATH__ + + +733 +__le_m©hcodeNP + ( +sh +, +__x +, \ + +734 +__exm1 + = +__expm1l + ( +__çb¦ + ( +__x +)); \ + +735 0.5 * ( +__exm1 + / (__exm1 + 1.0è+ __exm1è* + $__sgn1l + ( +__x +)) + +737 + `__le_m©hcodeNP + ( +cosh +, +__x +, \ + +738 +__ex + = + `__ex¶ + ( +__x +); \ + +739 0.5 * ( +__ex + + 1.0 / __ex)) + +741 + `__le_m©hcodeNP + ( +nh +, +__x +, \ + +742 +__exm1 + = + `__expm1l + (- + `__çb¦ + ( +__x + + __x)); \ + +743 +__exm1 + / (__exm1 + 2.0è* + `__sgn1l + (- +__x +)) + +746 + `__le_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 + `__le_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 + $__le_m©hcodeNP + ( +expm1 +, +__x +, +__expm1_code +) + +806 + #__M_SQRT2 + 1.41421356237309504880L + + ) + +808 #ià! + `__GNUC_PREREQ + (3, 5) + +809 + `__le_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 + `__le_m©hcodeNP + ( +ash +, +__x +, \ + +825 +__y + = + `__çb¦ + ( +__x +); \ + +826 ( + `log1¶ + ( +__y + * __y / ( + `__libc_sq¹l + (__y * __y + 1.0) + 1.0) + __y) \ + +827 * + $__sgn1l + ( +__x +))) + +829 + `__le_m©hcodeNP + ( +acosh +, +__x +, \ + +830 + `logl + ( +__x + + + `__libc_sq¹l + (__x - 1.0) * __libc_sqrtl (__x + 1.0))) + +832 + `__le_m©hcodeNP + ( +©ªh +, +__x +, \ + +833 +__y + = + `__çb¦ + ( +__x +); \ + +834 -0.5 * + `log1¶ + (-( +__y + + __yè/ (1.0 + __y)è* + $__sgn1l + ( +__x +)) + +837 + `__le_m©hcodeNP2 + ( +hypÙ +, +__x +, +__y +, + +838 + `__libc_sq¹l + ( +__x + * __x + +__y + * __y)) + +840 #ià! + `__GNUC_PREREQ + (3, 5) + +841 + `__le_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 + `__le_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 +__le_m©hÝNP + ( +rt +, "frndint") + +875 + #__Ìt_code + \ + +876 +__Ìes +; \ + +877 +__asm__ + +__vÞ©e__ + \ + +879 : "=m" ( +__Ìes +è: "t" ( +__x +) : "st"); \ + +880 +__Ìes + + + ) + +881 +__MATH_INLINE + + +882 +__NTH + ( + $Ìtf + ( +__x +)) + +884 +__Ìt_code +; + +885 + } +} + +886 +__MATH_INLINE + + +887 +__NTH + ( + $Ìt + ( +__x +)) + +889 +__Ìt_code +; + +890 + } +} + +891 +__MATH_INLINE + + +892 +__NTH + ( + $Ì + ( +__x +)) + +894 +__Ìt_code +; + +895 + } +} + +896 #undeà +__Ìt_code + + +898 + #__Îrt_code + \ + +899 +__Îres +; \ + +900 +__asm__ + +__vÞ©e__ + \ + +902 : "=m" ( +__Îres +è: "t" ( +__x +) : "st"); \ + +903 +__Îres + + + ) + +904 +__exnsiÚ__ + + +905 +__MATH_INLINE + + +906 +__NTH + ( + $Îrtf + ( +__x +)) + +908 +__Îrt_code +; + +909 + } +} + +910 +__exnsiÚ__ + + +911 +__MATH_INLINE + + +912 +__NTH + ( + $Îrt + ( +__x +)) + +914 +__Îrt_code +; + +915 + } +} + +916 +__exnsiÚ__ + + +917 +__MATH_INLINE + + +918 +__NTH + ( + $Îr + ( +__x +)) + +920 +__Îrt_code +; + +921 + } +} + +922 #undeà +__Îrt_code + + +927 #ifdeà +__USE_MISC + + +929 #ià +defed + +__FAST_MATH__ + && ! +__GNUC_PREREQ + (3, 5) + +930 +__le_m©hcodeNP2 + ( +d»m +, +__x +, +__y +, \ + +931 +__v®ue +; \ + +932 +__þobbed +; \ + +933 +__asm + +__vÞ©e__ + \ + +938 : "ñ" ( +__v®ue +), "=&a" ( +__þobbed +è: "0" ( +__x +), "u" ( +__y +) : "cc"); \ + +939 +__v®ue +) + +944 +__MATH_INLINE + + +945 +__NTH + ( + $__fe + ( +__x +)) + +947 ( +__exnsiÚ__ + + +948 (((((uniÚ { +__d +; +__i +[2]; }è{__d: +__x +}).__i[1] + +950 + } +} + +955 #undeà +__©ª2_code + + +956 #ifdeà +__FAST_MATH__ + + +957 #undeà +__expm1_code + + +958 #undeà +__exp_code + + +959 #undeà +__scos_code + + +966 #ifdeà +__LIBC_INTERNAL_MATH_INLINES + + +967 +__le_m©hÝ + ( +__754_sq¹ +, "fsqrt") + +968 +__le_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 + ( + `__but_Çnf + ("")) + + ) + +30 #ià +defed + +__GNUC__ + + +32 + #NAN + \ + +33 ( +__exnsiÚ__ + \ + +34 ((uniÚ { +__l + + `__©ibu__ + (( + `__mode__ + ( +__SI__ +))); +__d +; }) \ + +35 { +__l +: 0x7fc00000UL }). +__d +) + + ) + +39 + ~<dn.h +> + +41 #ià +__BYTE_ORDER + =ð +__BIG_ENDIAN + + +42 + #__qÇn_bys + { 0x7f, 0xc0, 0, 0 } + + ) + +44 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +45 + #__qÇn_bys + { 0, 0, 0xc0, 0x7à} + + ) + +48 uniÚ { + m__c +[4]; + m__d +; } +__qÇn_uniÚ + + +49 +__©ibu__ + (( +__unu£d__ +)èð{ +__qÇn_bys + }; + +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 + ~<lux/lims.h +> + +28 + ~<lux/·¿m.h +> + +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 + ~<bs/wÜdsize.h +> + +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_mux_s + + +94 + m__lock +; + +95 + m__couÁ +; + +96 + m__owÃr +; + +97 #ifdeà +__x86_64__ + + +98 + m__nu£rs +; + +102 + m__kd +; + +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 +__exnsiÚ__ + 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_mux_t +; + +132 + m__size +[ +__SIZEOF_PTHREAD_MUTEXATTR_T +]; + +133 + m__®ign +; + +134 } + t±h»ad_mux©_t +; + +143 + m__lock +; + +144 + m__fux +; + +145 +__exnsiÚ__ + + m__tÙ®_£q +; + +146 +__exnsiÚ__ + + m__wakeup_£q +; + +147 +__exnsiÚ__ + + m__wok_£q +; + +148 * + m__mux +; + +149 + m__nwas +; + +150 + m__brßdÿ¡_£q +; + +151 } + m__d©a +; + +152 + m__size +[ +__SIZEOF_PTHREAD_COND_T +]; + +153 +__exnsiÚ__ + + 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à +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +176 #ifdeà +__x86_64__ + + +179 + m__lock +; + +180 + m__Ä_»ads +; + +181 + m__»ads_wakeup +; + +182 + m__wr_wakeup +; + +183 + m__Ä_»ads_queued +; + +184 + m__Ä_wrs_queued +; + +185 + m__wr +; + +186 + m__sh¬ed +; + +187 sigÃd + m__rwisiÚ +; + +188 #ifdeà +__ILP32__ + + +189 + m__·d1 +[3]; + +190 + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0, { 0, 0, 0 } + + ) + +192 + m__·d1 +[7]; + +193 + #__PTHREAD_RWLOCK_ELISION_EXTRA + 0, { 0, 0, 0, 0, 0, 0, 0 } + + ) + +195 + m__·d2 +; + +198 + m__æags +; + +199 + #__PTHREAD_RWLOCK_INT_FLAGS_SHARED + 1 + + ) + +200 } + m__d©a +; + +204 + m__lock +; + +205 + m__Ä_»ads +; + +206 + m__»ads_wakeup +; + +207 + m__wr_wakeup +; + +208 + m__Ä_»ads_queued +; + +209 + m__Ä_wrs_queued +; + +212 + m__æags +; + +213 + m__sh¬ed +; + +214 sigÃd + m__rwisiÚ +; + +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¬rr_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à! +defed + +_SETJMP_H + && !defed +_PTHREAD_H + + +26 + ~<bs/wÜdsize.h +> + +28 #iâdeà +_ASM + + +30 #ià +__WORDSIZE + == 64 + +31 + t__jmp_buf +[8]; + +32 #ià +defed + +__x86_64__ + + +33 +__exnsiÚ__ + + t__jmp_buf +[8]; + +35 + t__jmp_buf +[6]; + + @/usr/include/bits/setjmp2.h + +19 #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Ú +è(, + msigfo_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à +defed + +__USE_UNIX98 + || defed +__USE_MISC + + +58 + #SA_ONSTACK + 0x08000000 + + ) + +60 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +61 + #SA_RESTART + 0x10000000 + + ) + +62 + #SA_NODEFER + 0x40000000 + + ) + +64 + #SA_RESETHAND + 0x80000000 + + ) + +66 #ifdeà +__USE_MISC + + +67 + #SA_INTERRUPT + 0x20000000 + + ) + +70 + #SA_NOMASK + +SA_NODEFER + + + ) + +71 + #SA_ONESHOT + +SA_RESETHAND + + + ) + +72 + #SA_STACK + +SA_ONSTACK + + + ) + +76 + #SIG_BLOCK + 0 + + ) + +77 + #SIG_UNBLOCK + 1 + + ) + +78 + #SIG_SETMASK + 2 + + ) + + @/usr/include/bits/sigcontext.h + +18 #iâdeà +_BITS_SIGCONTEXT_H + + +19 + #_BITS_SIGCONTEXT_H + 1 + + ) + +21 #ià! +defed + +_SIGNAL_H + && !defed +_SYS_UCONTEXT_H + + +25 + #FP_XSTATE_MAGIC1 + 0x46505853U + + ) + +26 + #FP_XSTATE_MAGIC2 + 0x46505845U + + ) + +27 + #FP_XSTATE_MAGIC2_SIZE + ( +FP_XSTATE_MAGIC2 +) + + ) + +29 + s_åx_sw_bys + + +31 +__ut32_t + + mmagic1 +; + +32 +__ut32_t + + mexnded_size +; + +33 +__ut64_t + + mx¡©e_bv +; + +34 +__ut32_t + + mx¡©e_size +; + +35 +__ut32_t + + m·ddg +[7]; + +38 + s_å»g + + +40 + msignifiÿnd +[4]; + +41 + mexpÚt +; + +44 + s_åx»g + + +46 + msignifiÿnd +[4]; + +47 + mexpÚt +; + +48 + m·ddg +[3]; + +51 + s_xmm»g + + +53 +__ut32_t + + memt +[4]; + +58 #iâdeà +__x86_64__ + + +60 + s_å¡©e + + +63 +__ut32_t + + mcw +; + +64 +__ut32_t + + msw +; + +65 +__ut32_t + + mg +; + +66 +__ut32_t + + moff +; + +67 +__ut32_t + + mcs£l +; + +68 +__ut32_t + + md©aoff +; + +69 +__ut32_t + + md©a£l +; + +70 +_å»g + + m_¡ +[8]; + +71 + m¡©us +; + +72 + mmagic +; + +75 +__ut32_t + + m_fx¤_v +[6]; + +76 +__ut32_t + + mmxc¤ +; + +77 +__ut32_t + + m»£rved +; + +78 +_åx»g + + m_fx¤_¡ +[8]; + +79 +_xmm»g + + m_xmm +[8]; + +80 +__ut32_t + + m·ddg +[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 + mx +; + +107 + mno +; + +108 + mr +; + +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 +__ut16_t + + mcwd +; + +125 +__ut16_t + + mswd +; + +126 +__ut16_t + + máw +; + +127 +__ut16_t + + mfÝ +; + +128 +__ut64_t + + mr +; + +129 +__ut64_t + + mrdp +; + +130 +__ut32_t + + mmxc¤ +; + +131 +__ut32_t + + mmxü_mask +; + +132 +_åx»g + + m_¡ +[8]; + +133 +_xmm»g + + m_xmm +[16]; + +134 +__ut32_t + + m·ddg +[24]; + +137 + ssigcÚxt + + +139 +__ut64_t + + mr8 +; + +140 +__ut64_t + + mr9 +; + +141 +__ut64_t + + mr10 +; + +142 +__ut64_t + + mr11 +; + +143 +__ut64_t + + mr12 +; + +144 +__ut64_t + + mr13 +; + +145 +__ut64_t + + mr14 +; + +146 +__ut64_t + + mr15 +; + +147 +__ut64_t + + mrdi +; + +148 +__ut64_t + + mrsi +; + +149 +__ut64_t + + mrbp +; + +150 +__ut64_t + + mrbx +; + +151 +__ut64_t + + mrdx +; + +152 +__ut64_t + + m¿x +; + +153 +__ut64_t + + mrcx +; + +154 +__ut64_t + + mr¥ +; + +155 +__ut64_t + + mr +; + +156 +__ut64_t + + meæags +; + +157 + mcs +; + +158 + mgs +; + +159 + mfs +; + +160 + m__·d0 +; + +161 +__ut64_t + + mr +; + +162 +__ut64_t + + mno +; + +163 +__ut64_t + + mÞdmask +; + +164 +__ut64_t + + mü2 +; + +165 +__exnsiÚ__ + union + +167 +_å¡©e + * + må¡©e +; + +168 +__ut64_t + + m__å¡©e_wÜd +; + +170 +__ut64_t + + m__»£rved1 + [8]; + +175 + s_x§ve_hdr + + +177 +__ut64_t + + mx¡©e_bv +; + +178 +__ut64_t + + m»£rved1 +[2]; + +179 +__ut64_t + + m»£rved2 +[5]; + +182 + s_ymmh_¡©e + + +184 +__ut32_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à! +defed + +_SIGNAL_H + && !defed +__Ãed_sigfo_t + \ + +20 && ! +defed + + g__Ãed_sigevt_t + + +24 + ~<bs/wÜdsize.h +> + +26 #ià(! +defed + +__have_sigv®_t + \ + +27 && ( +defed + + g_SIGNAL_H + || defed + g__Ãed_sigfo_t + \ + +28 || +defed + + g__Ãed_sigevt_t +)) + +29 + #__have_sigv®_t + 1 + + ) + +32 + usigv® + + +34 + msiv®_t +; + +35 * + msiv®_±r +; + +36 } + tsigv®_t +; + +39 #ià(! +defed + +__have_sigfo_t + \ + +40 && ( +defed + + g_SIGNAL_H + || defed + g__Ãed_sigfo_t +)) + +41 + #__have_sigfo_t + 1 + + ) + +43 + #__SI_MAX_SIZE + 128 + + ) + +44 #ià +__WORDSIZE + == 64 + +45 + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + / ()è- 4) + + ) + +47 + #__SI_PAD_SIZE + (( +__SI_MAX_SIZE + / ()è- 3) + + ) + +50 #ià +defed + +__x86_64__ + && +__WORDSIZE + == 32 + +55 +__þock_t + + t__©ibu__ + (( + t__®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 } +_kl +; + +83 +si_tid +; + +84 +si_ovrun +; + +85 +sigv®_t + +si_sigv® +; + +86 } +_tim +; + +91 +__pid_t + +si_pid +; + +92 +__uid_t + +si_uid +; + +93 +sigv®_t + +si_sigv® +; + +94 } +_¹ +; + +99 +__pid_t + +si_pid +; + +100 +__uid_t + +si_uid +; + +101 +si_¡©us +; + +102 +__sigchld_þock_t + +si_utime +; + +103 +__sigchld_þock_t + +si_¡ime +; + +104 } +_sigchld +; + +109 * +si_addr +; + +110 +si_addr_lsb +; + +113 * +_low +; + +114 * +_uµ +; + +115 } +si_addr_bnd +; + +116 } +_sigçuÉ +; + +121 +si_bªd +; + +122 +si_fd +; + +123 } +_sigpÞl +; + +128 * +_ÿÎ_addr +; + +129 +_sysÿÎ +; + +130 +_¬ch +; + +131 } +_sigsys +; + +132 } +_siflds +; + +133 } + tsigfo_t + + t__SI_ALIGNMENT +; + +137 + #si_pid + +_siflds +. +_kl +. +si_pid + + + ) + +138 + #si_uid + +_siflds +. +_kl +. +si_uid + + + ) + +139 + #si_timid + +_siflds +. +_tim +. +si_tid + + + ) + +140 + #si_ovrun + +_siflds +. +_tim +. +si_ovrun + + + ) + +141 + #si_¡©us + +_siflds +. +_sigchld +. +si_¡©us + + + ) + +142 + #si_utime + +_siflds +. +_sigchld +. +si_utime + + + ) + +143 + #si_¡ime + +_siflds +. +_sigchld +. +si_¡ime + + + ) + +144 + #si_v®ue + +_siflds +. +_¹ +. +si_sigv® + + + ) + +145 + #si_t + +_siflds +. +_¹ +. +si_sigv® +. +siv®_t + + + ) + +146 + #si_±r + +_siflds +. +_¹ +. +si_sigv® +. +siv®_±r + + + ) + +147 + #si_addr + +_siflds +. +_sigçuÉ +. +si_addr + + + ) + +148 + #si_addr_lsb + +_siflds +. +_sigçuÉ +. +si_addr_lsb + + + ) + +149 + #si_low + +_siflds +. +_sigçuÉ +. +si_addr_bnd +. +_low + + + ) + +150 + #si_uµ + +_siflds +. +_sigçuÉ +. +si_addr_bnd +. +_uµ + + + ) + +151 + #si_bªd + +_siflds +. +_sigpÞl +. +si_bªd + + + ) + +152 + #si_fd + +_siflds +. +_sigpÞl +. +si_fd + + + ) + +153 + #si_ÿÎ_addr + +_siflds +. +_sigsys +. +_ÿÎ_addr + + + ) + +154 + #si_sysÿÎ + +_siflds +. +_sigsys +. +_sysÿÎ + + + ) + +155 + #si_¬ch + +_siflds +. +_sigsys +. +_¬ch + + + ) + +162 +SI_ASYNCNL + = -60, + +163 + #SI_ASYNCNL + +SI_ASYNCNL + + + ) + +164 +SI_TKILL + = -6, + +165 + #SI_TKILL + +SI_TKILL + + + ) + +166 +SI_SIGIO +, + +167 + #SI_SIGIO + +SI_SIGIO + + + ) + +168 +SI_ASYNCIO +, + +169 + #SI_ASYNCIO + +SI_ASYNCIO + + + ) + +170 +SI_MESGQ +, + +171 + #SI_MESGQ + +SI_MESGQ + + + ) + +172 +SI_TIMER +, + +173 + #SI_TIMER + +SI_TIMER + + + ) + +174 +SI_QUEUE +, + +175 + #SI_QUEUE + +SI_QUEUE + + + ) + +176 +SI_USER +, + +177 + #SI_USER + +SI_USER + + + ) + +178 +SI_KERNEL + = 0x80 + +179 + #SI_KERNEL + +SI_KERNEL + + + ) + +183 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +187 +ILL_ILLOPC + = 1, + +188 + #ILL_ILLOPC + +ILL_ILLOPC + + + ) + +189 +ILL_ILLOPN +, + +190 + #ILL_ILLOPN + +ILL_ILLOPN + + + ) + +191 +ILL_ILLADR +, + +192 + #ILL_ILLADR + +ILL_ILLADR + + + ) + +193 +ILL_ILLTRP +, + +194 + #ILL_ILLTRP + +ILL_ILLTRP + + + ) + +195 +ILL_PRVOPC +, + +196 + #ILL_PRVOPC + +ILL_PRVOPC + + + ) + +197 +ILL_PRVREG +, + +198 + #ILL_PRVREG + +ILL_PRVREG + + + ) + +199 +ILL_COPROC +, + +200 + #ILL_COPROC + +ILL_COPROC + + + ) + +201 +ILL_BADSTK + + +202 + #ILL_BADSTK + +ILL_BADSTK + + + ) + +208 +FPE_INTDIV + = 1, + +209 + #FPE_INTDIV + +FPE_INTDIV + + + ) + +210 +FPE_INTOVF +, + +211 + #FPE_INTOVF + +FPE_INTOVF + + + ) + +212 +FPE_FLTDIV +, + +213 + #FPE_FLTDIV + +FPE_FLTDIV + + + ) + +214 +FPE_FLTOVF +, + +215 + #FPE_FLTOVF + +FPE_FLTOVF + + + ) + +216 +FPE_FLTUND +, + +217 + #FPE_FLTUND + +FPE_FLTUND + + + ) + +218 +FPE_FLTRES +, + +219 + #FPE_FLTRES + +FPE_FLTRES + + + ) + +220 +FPE_FLTINV +, + +221 + #FPE_FLTINV + +FPE_FLTINV + + + ) + +222 +FPE_FLTSUB + + +223 + #FPE_FLTSUB + +FPE_FLTSUB + + + ) + +229 +SEGV_MAPERR + = 1, + +230 + #SEGV_MAPERR + +SEGV_MAPERR + + + ) + +231 +SEGV_ACCERR + + +232 + #SEGV_ACCERR + +SEGV_ACCERR + + + ) + +238 +BUS_ADRALN + = 1, + +239 + #BUS_ADRALN + +BUS_ADRALN + + + ) + +240 +BUS_ADRERR +, + +241 + #BUS_ADRERR + +BUS_ADRERR + + + ) + +242 +BUS_OBJERR +, + +243 + #BUS_OBJERR + +BUS_OBJERR + + + ) + +244 +BUS_MCEERR_AR +, + +245 + #BUS_MCEERR_AR + +BUS_MCEERR_AR + + + ) + +246 +BUS_MCEERR_AO + + +247 + #BUS_MCEERR_AO + +BUS_MCEERR_AO + + + ) + +251 #ifdeà +__USE_XOPEN_EXTENDED + + +255 +TRAP_BRKPT + = 1, + +256 + #TRAP_BRKPT + +TRAP_BRKPT + + + ) + +257 +TRAP_TRACE + + +258 + #TRAP_TRACE + +TRAP_TRACE + + + ) + +262 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +266 +CLD_EXITED + = 1, + +267 + #CLD_EXITED + +CLD_EXITED + + + ) + +268 +CLD_KILLED +, + +269 + #CLD_KILLED + +CLD_KILLED + + + ) + +270 +CLD_DUMPED +, + +271 + #CLD_DUMPED + +CLD_DUMPED + + + ) + +272 +CLD_TRAPPED +, + +273 + #CLD_TRAPPED + +CLD_TRAPPED + + + ) + +274 +CLD_STOPPED +, + +275 + #CLD_STOPPED + +CLD_STOPPED + + + ) + +276 +CLD_CONTINUED + + +277 + #CLD_CONTINUED + +CLD_CONTINUED + + + ) + +283 +POLL_IN + = 1, + +284 + #POLL_IN + +POLL_IN + + + ) + +285 +POLL_OUT +, + +286 + #POLL_OUT + +POLL_OUT + + + ) + +287 +POLL_MSG +, + +288 + #POLL_MSG + +POLL_MSG + + + ) + +289 +POLL_ERR +, + +290 + #POLL_ERR + +POLL_ERR + + + ) + +291 +POLL_PRI +, + +292 + #POLL_PRI + +POLL_PRI + + + ) + +293 +POLL_HUP + + +294 + #POLL_HUP + +POLL_HUP + + + ) + +298 #undeà +__Ãed_sigfo_t + + +302 #ià( +defed + +_SIGNAL_H + || defed +__Ãed_sigevt_t +) \ + +303 && ! +defed + +__have_sigevt_t + + +304 + #__have_sigevt_t + 1 + + ) + +307 + #__SIGEV_MAX_SIZE + 64 + + ) + +308 #ià +__WORDSIZE + == 64 + +309 + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + / ()è- 4) + + ) + +311 + #__SIGEV_PAD_SIZE + (( +__SIGEV_MAX_SIZE + / ()è- 3) + + ) + +315 #iâdeà +__have_±h»ad_©_t + + +316 +±h»ad_©_t + + t±h»ad_©_t +; + +317 + #__have_±h»ad_©_t + 1 + + ) + +320 + ssigevt + + +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 } + tsigevt_t +; + +343 + #sigev_nÙify_funùiÚ + +_sigev_un +. +_sigev_th»ad +. +_funùiÚ + + + ) + +344 + #sigev_nÙify_©ibus + +_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à! +defed + +_SIGSET_H_âs + && defed +_SIGNAL_H + + +42 + #_SIGSET_H_âs + 1 + + ) + +44 #iâdeà +_EXTERN_INLINE + + +45 + #_EXTERN_INLINE + +__exº_le + + + ) + +49 + #__sigmask +( +sig +) \ + +50 (((è1è<< ((( +sig +è- 1è% (8 * ()))) + + ) + +53 + #__sigwÜd +( +sig +è(((sigè- 1è/ (8 * ())) + + ) + +55 #ià +defed + +__GNUC__ + && __GNUC__ >= 2 + +56 + #__sigem±y£t +( +£t +) \ + +57 ( + `__exnsiÚ__ + ({ +__út + = +_SIGSET_NWORDS +; \ + +58 +sig£t_t + * +__£t + = ( +£t +); \ + +59 -- +__út + >ð0è +__£t +-> +__v® +[__cnt] = 0; \ + +60 0; })) + + ) + +61 + #__sigfl£t +( +£t +) \ + +62 ( + `__exnsiÚ__ + ({ +__ú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 ( + `__exnsiÚ__ + ({ +__ú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 ( + `__exnsiÚ__ + ({ +__ú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 ( + `__exnsiÚ__ + ({ +__ú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à! +defed + +_SIGNAL_H + && !defed +_PTHREAD_H + + +30 + $±h»ad_sigmask + ( +__how +, + +31 cÚ¡ +__sig£t_t + * +__»¡riù + +__Ãwmask +, + +32 +__sig£t_t + * +__»¡riù + +__Þdmask +) +__THROW +; + +35 + $±h»ad_kl + ( +±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 + ~<sys/ty³s.h +> + +32 #iâdeà +__sockËn_t_defed + + +33 +__sockËn_t + + tsockËn_t +; + +34 + #__sockËn_t_defed + + + ) + +38 + ~<bs/sock_ty³.h +> + +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 + ~<bs/sockaddr.h +> + +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_·ddg +[ +_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à(! +defed + +__STRICT_ANSI__ + && +__GNUC__ + >ð2è|| +__STDC_VERSION__ + >= 199901L + +256 +__exnsiÚ__ + +__cmsg_d©a + + m__æex¬r +; + +261 #ià(! +defed + +__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º_le + + + ) + +282 +_EXTERN_INLINE + +cmsghdr + * + +283 + `__NTH + ( + $__cmsg_nxthdr + ( +msghdr + * +__mhdr +, +cmsghdr + * +__cmsg +)) + +285 ià(( +size_t +è +__cmsg +-> +cmsg_Ën + < ( +cmsghdr +)) + +287 ( +cmsghdr + *) 0; + +289 +__cmsg + = ( +cmsghdr + *) ((*) __cmsg + +290 + + `CMSG_ALIGN + ( +__cmsg +-> +cmsg_Ën +)); + +291 ià((*è( +__cmsg + + 1è> ((*è +__mhdr +-> +msg_cÚÞ + + +292 + +__mhdr +-> +msg_cÚÞËn +) + +293 || ((*è +__cmsg + + + `CMSG_ALIGN + (__cmsg-> +cmsg_Ën +) + +294 > ((*è +__mhdr +-> +msg_cÚÞ + + __mhdr-> +msg_cÚÞËn +))) + +296 ( +cmsghdr + *) 0; + +297 +__cmsg +; + +298 + } +} + +305 + mSCM_RIGHTS + = 0x01 + +306 + #SCM_RIGHTS + +SCM_RIGHTS + + + ) + +307 #ifdeà +__USE_GNU + + +308 , + mSCM_CREDENTIALS + = 0x02 + +309 + #SCM_CREDENTIALS + +SCM_CREDENTIALS + + + ) + +313 #ifdeà +__USE_GNU + + +315 + 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 + ~<asm/sock.h +> + +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 + slg + + +385 + ml_Úoff +; + +386 + ml_lg +; + + @/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 biggerengthhan 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à(! + `__but_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 biggerengthhan 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à(! + `__but_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à! +defed + +_SYS_STAT_H + && !defed +_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à +defed + +__x86_64__ + || !defed +__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à +defed + +__x86_64__ + || !defed +__USE_FILE_OFFSET64 + + +74 +__off_t + + m¡_size +; + +76 +__off64_t + + m¡_size +; + +78 +__blksize_t + + m¡_blksize +; + +79 #ià +defed + +__x86_64__ + || !defed +__USE_FILE_OFFSET64 + + +80 +__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 + ( +årtf +) + +25 + $__LDBL_REDIR_DECL + ( +´tf +) + +26 + $__LDBL_REDIR_DECL + ( +¥rtf +) + +27 + $__LDBL_REDIR_DECL + ( +vårtf +) + +28 + $__LDBL_REDIR_DECL + ( +v´tf +) + +29 + $__LDBL_REDIR_DECL + ( +v¥rtf +) + +30 #ià +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +31 && ! +defed + +__REDIRECT + \ + +32 && ( +defed + +__STRICT_ANSI__ + || defed +__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à +defed + +__USE_ISOC99 + || defed +__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à! +defed + +__USE_GNU + && !defed +__REDIRECT + \ + +53 && ( +defed + +__STRICT_ANSI__ + || defed +__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¥rtf +) + +72 + $__LDBL_REDIR_DECL + ( +__a¥rtf +) + +73 + $__LDBL_REDIR_DECL + ( +a¥rtf +) + +74 + $__LDBL_REDIR_DECL + ( +ob¡ack_´tf +) + +75 + $__LDBL_REDIR_DECL + ( +ob¡ack_v´tf +) + +78 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +79 + $__LDBL_REDIR_DECL + ( +__¥rtf_chk +) + +80 + $__LDBL_REDIR_DECL + ( +__v¥rtf_chk +) + +81 #ià +defed + +__USE_ISOC99 + || defed +__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 + ( +__årtf_chk +) + +87 + $__LDBL_REDIR_DECL + ( +__´tf_chk +) + +88 + $__LDBL_REDIR_DECL + ( +__vårtf_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¥rtf_chk +) + +96 + $__LDBL_REDIR_DECL + ( +__va¥rtf_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º_le + + +24 + #__STDIO_INLINE + +le + + + ) + +26 + #__STDIO_INLINE + +__exº_le + + + ) + +30 #ifdeà +__USE_EXTERN_INLINES + + +33 #ià!( +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ +) + +35 +__STDIO_INLINE + + +36 + $v´tf + (cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__¬g +) + +38 + `vårtf + ( +¡dout +, +__fmt +, +__¬g +); + +39 + } +} + +43 +__STDIO_INLINE + + +44 + $gch¬ + () + +46 + `_IO_gc + ( +¡d +); + +47 + } +} + +50 #ifdeà +__USE_MISC + + +52 +__STDIO_INLINE + + +53 + $fgc_uÆocked + ( +FILE + * +__å +) + +55 + `_IO_gc_uÆocked + ( +__å +); + +56 + } +} + +60 #ifdeà +__USE_POSIX + + +62 +__STDIO_INLINE + + +63 + $gc_uÆocked + ( +FILE + * +__å +) + +65 + `_IO_gc_uÆocked + ( +__å +); + +66 + } +} + +69 +__STDIO_INLINE + + +70 + $gch¬_uÆocked + () + +72 + `_IO_gc_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 + $gle + (** +__l +, +size_t + * +__n +, +FILE + * +__¡»am +) + +117 + `__gdim + ( +__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à +defed + +__USE_MISC + && defed +__GNUC__ + && defed +__OPTIMIZE__ + \ + +142 && ! +defed + + g__ýlu¥lus + + +144 + #äd_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +145 ( + `__exnsiÚ__ + (( + `__but_cÚ¡ªt_p + ( +size +è&& __but_cÚ¡ªt_°( +n +) \ + +146 && ( +size_t +è( +size +è* (size_tè( +n +) <= 8 \ + +147 && ( +size_t +è( +size +) != 0) \ + +148 ? ({ * +__±r + = (*è( +±r +); \ + +149 +FILE + * +__¡»am + = ( +¡»am +); \ + +150 +size_t + +__út +; \ + +151 +__út + = ( +size_t +è( +size +è* (size_tè( +n +); \ + +152 +__út + > 0; --__cnt) \ + +154 +__c + = + `_IO_gc_uÆocked + ( +__¡»am +); \ + +155 ià( +__c + =ð +EOF +) \ + +157 * +__±r +++ = +__c +; \ + +159 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +160 / ( +size_t +è( +size +); }) \ + +161 : ((( + `__but_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +162 || ( + `__but_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +164 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +165 (è( +n +), ( +size_t +) 0) \ + +166 : + `äd_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +168 + #fwre_uÆocked +( +±r +, +size +, +n +, +¡»am +) \ + +169 ( + `__exnsiÚ__ + (( + `__but_cÚ¡ªt_p + ( +size +è&& __but_cÚ¡ªt_°( +n +) \ + +170 && ( +size_t +è( +size +è* (size_tè( +n +) <= 8 \ + +171 && ( +size_t +è( +size +) != 0) \ + +172 ? ({ cÚ¡ * +__±r + = (cÚ¡ *è( +±r +); \ + +173 +FILE + * +__¡»am + = ( +¡»am +); \ + +174 +size_t + +__út +; \ + +175 +__út + = ( +size_t +è( +size +è* (size_tè( +n +); \ + +176 +__út + > 0; --__cnt) \ + +177 ià( + `_IO_putc_uÆocked + (* +__±r +++, +__¡»am +è=ð +EOF +) \ + +179 (( +size_t +è( +size +è* (size_tè( +n +è- +__út +) \ + +180 / ( +size_t +è( +size +); }) \ + +181 : ((( + `__but_cÚ¡ªt_p + ( +size +è&& ( +size_t +) (size) == 0) \ + +182 || ( + `__but_cÚ¡ªt_p + ( +n +è&& ( +size_t +) (n) == 0)) \ + +184 ? ((è( +±r +), (è( +¡»am +), (è( +size +), \ + +185 (è( +n +), ( +size_t +) 0) \ + +186 : + `fwre_uÆocked + ( +±r +, +size +, +n +, +¡»am +)))) + + ) + +190 #undeà +__STDIO_INLINE + + + @/usr/include/bits/stdio2.h + +19 #iâdeà +_STDIO_H + + +23 + $__¥rtf_chk + (* +__»¡riù + +__s +, +__æag +, +size_t + +__¦ +, + +24 cÚ¡ * +__»¡riù + +__fÜm© +, ...è +__THROW +; + +25 + $__v¥rtf_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 + ( + $¥rtf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fmt +, ...)) + +33 + `__but___¥rtf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +34 + `__bos + ( +__s +), +__fmt +, + `__va_¬g_·ck + ()); + +35 + } +} + +36 #ià! +defed + +__ýlu¥lus + + +37 + #¥rtf +( +¡r +, ...) \ + +38 + `__but___¥rtf_chk + ( +¡r +, +__USE_FORTIFY_LEVEL + - 1, + `__bos + (str), \ + +39 +__VA_ARGS__ +) + + ) + +42 +__fÜtify_funùiÚ + + +43 +__NTH + ( + $v¥rtf + (* +__»¡riù + +__s +, cÚ¡ *__»¡riù +__fmt +, + +44 +_G_va_li¡ + +__ +)) + +46 + `__but___v¥rtf_chk + ( +__s +, +__USE_FORTIFY_LEVEL + - 1, + +47 + `__bos + ( +__s +), +__fmt +, +__ +); + +48 + } +} + +50 #ià +defed + +__USE_ISOC99 + || defed +__USE_UNIX98 + + +52 + $__¢´tf_chk + (* +__»¡riù + +__s +, +size_t + +__n +, +__æag +, + +53 +size_t + +__¦ +, cÚ¡ * +__»¡riù + +__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 + `__but___¢´tf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +65 + `__bos + ( +__s +), +__fmt +, + `__va_¬g_·ck + ()); + +66 + } +} + +67 #ià! +defed + +__ýlu¥lus + + +68 + #¢´tf +( +¡r +, +Ën +, ...) \ + +69 + `__but___¢´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 + `__but___v¢´tf_chk + ( +__s +, +__n +, +__USE_FORTIFY_LEVEL + - 1, + +78 + `__bos + ( +__s +), +__fmt +, +__ +); + +79 + } +} + +83 #ià +__USE_FORTIFY_LEVEL + > 1 + +85 +__årtf_chk + ( +FILE + * +__»¡riù + +__¡»am +, +__æag +, + +86 cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +87 +__´tf_chk + ( +__æag +, cÚ¡ * +__»¡riù + +__fÜm© +, ...); + +88 +__vårtf_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 + $årtf + ( +FILE + * +__»¡riù + +__¡»am +, cÚ¡ *__»¡riù +__fmt +, ...) + +97 + `__årtf_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à! +defed + +__ýlu¥lus + + +107 + #´tf +(...) \ + +108 + `__´tf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +109 + #årtf +( +¡»am +, ...) \ + +110 + `__årtf_chk + ( +¡»am +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +113 +__fÜtify_funùiÚ + + +114 + $v´tf + (cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__ +) + +116 #ifdeà +__USE_EXTERN_INLINES + + +117 + `__vårtf_chk + ( +¡dout +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +119 + `__v´tf_chk + ( +__USE_FORTIFY_LEVEL + - 1, +__fmt +, +__ +); + +121 + } +} + +123 +__fÜtify_funùiÚ + + +124 + $vårtf + ( +FILE + * +__»¡riù + +__¡»am +, + +125 cÚ¡ * +__»¡riù + +__fmt +, +_G_va_li¡ + +__ +) + +127 + `__vårtf_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à! +defed + +__ý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¥rtf_chk + (** +__»¡riù + +__±r +, +__æag +, + +159 cÚ¡ * +__»¡riù + +__fmt +, ...) + +160 +__THROW + + `__©ibu__ + (( + $__fÜm©__ + ( +__´tf__ +, 3, 4))è +__wur +; + +161 + $__va¥rtf_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¥rtf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, ...)) + +178 + `__a¥rtf_chk + ( +__±r +, +__USE_FORTIFY_LEVEL + - 1, +__fmt +, + +179 + `__va_¬g_·ck + ()); + +180 + } +} + +182 +__fÜtify_funùiÚ + + +183 +__NTH + ( + $__a¥rtf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, + +186 + `__a¥rtf_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à! +defed + +__ýlu¥lus + + +198 + #a¥rtf +( +±r +, ...) \ + +199 + `__a¥rtf_chk + ( +±r +, +__USE_FORTIFY_LEVEL + - 1, +__VA_ARGS__ +) + + ) + +200 + #__a¥rtf +( +±r +, ...) \ + +201 + `__a¥rtf_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¥rtf + (** +__»¡riù + +__±r +, cÚ¡ *__»¡riù +__fmt +, + +208 +_G_va_li¡ + +__ +)) + +210 + `__va¥rtf_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à! +defed + +__USE_ISOC11 + \ + +226 || ( +defed + + g__ýlu¥lus + && __ýlu¥lu <ð201103L && !defed +__USE_GNU +) + +227 * + $__gs_chk + (* +__¡r +, +size_t +è +__wur +; + +228 * + `__REDIRECT + ( +__gs_w¬n +, (* +__¡r +), +gs +) + +229 +__wur + + `__w¬Çr + ("please use fgets or getline instead, gets can't " + +232 +__fÜtify_funùiÚ + +__wur + * + +233 + $gs + (* +__¡r +) + +235 ià( + `__bos + ( +__¡r +è!ð( +size_t +) -1) + +236 + `__gs_chk + ( +__¡r +, + `__bos + (__str)); + +237 + `__gs_w¬n + ( +__¡r +); + +238 + } +} + +241 * + $__fgs_chk + (* +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +242 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +243 * + `__REDIRECT + ( +__fgs_®s +, + +244 (* +__»¡riù + +__s +, +__n +, + +245 +FILE + * +__»¡riù + +__¡»am +), +fgs +è +__wur +; + +246 * + `__REDIRECT + ( +__fgs_chk_w¬n +, + +247 (* +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +248 +FILE + * +__»¡riù + +__¡»am +), +__fgs_chk +) + +249 +__wur + + `__w¬Çr + ("fgets called with bigger sizehanength " + +252 +__fÜtify_funùiÚ + +__wur + * + +253 + $fgs + (* +__»¡riù + +__s +, +__n +, +FILE + *__»¡riù +__¡»am +) + +255 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +257 ià(! + `__but_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +258 + `__fgs_chk + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +260 ià(( +size_t +è +__n + > + `__bos + ( +__s +)) + +261 + `__fgs_chk_w¬n + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +263 + `__fgs_®s + ( +__s +, +__n +, +__¡»am +); + +264 + } +} + +266 +size_t + + $__äd_chk + (* +__»¡riù + +__±r +, +size_t + +__±¾ +, + +267 +size_t + +__size +, size_ +__n +, + +268 +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +269 +size_t + + `__REDIRECT + ( +__äd_®s +, + +270 (* +__»¡riù + +__±r +, +size_t + +__size +, + +271 +size_t + +__n +, +FILE + * +__»¡riù + +__¡»am +), + +272 +äd +è +__wur +; + +273 +size_t + + `__REDIRECT + ( +__äd_chk_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 *membhanength " + +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à(! + `__but_cÚ¡ªt_p + ( +__size +) + +288 || ! + `__but_cÚ¡ªt_p + ( +__n +) + +289 || ( +__size + | +__n +è>ð((( +size_t +) 1) << (8 * (size_t) / 2))) + +290 + `__äd_chk + ( +__±r +, + `__bos0 + (__±r), +__size +, +__n +, +__¡»am +); + +292 ià( +__size + * +__n + > + `__bos0 + ( +__±r +)) + +293 + `__äd_chk_w¬n + ( +__±r +, + `__bos0 + (__±r), +__size +, +__n +, +__¡»am +); + +295 + `__äd_®s + ( +__±r +, +__size +, +__n +, +__¡»am +); + +296 + } +} + +298 #ifdeà +__USE_GNU + + +299 * + $__fgs_uÆocked_chk + (* +__»¡riù + +__s +, +size_t + +__size +, + +300 +__n +, +FILE + * +__»¡riù + +__¡»am +è +__wur +; + +301 * + `__REDIRECT + ( +__fgs_uÆocked_®s +, + +302 (* +__»¡riù + +__s +, +__n +, + +303 +FILE + * +__»¡riù + +__¡»am +), +fgs_uÆocked +è +__wur +; + +304 * + `__REDIRECT + ( +__fgs_uÆocked_chk_w¬n +, + +305 (* +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +306 +FILE + * +__»¡riù + +__¡»am +), +__fgs_uÆocked_chk +) + +307 +__wur + + `__w¬Çr + ("fgets_unlocked called with bigger sizehanength " + +310 +__fÜtify_funùiÚ + +__wur + * + +311 + $fgs_uÆocked + (* +__»¡riù + +__s +, +__n +, +FILE + *__»¡riù +__¡»am +) + +313 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +315 ià(! + `__but_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +316 + `__fgs_uÆocked_chk + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +318 ià(( +size_t +è +__n + > + `__bos + ( +__s +)) + +319 + `__fgs_uÆocked_chk_w¬n + ( +__s +, + `__bos + (__s), +__n +, +__¡»am +); + +321 + `__fgs_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 *membhan " + +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à(! + `__but_cÚ¡ªt_p + ( +__size +) + +349 || ! + `__but_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à( + `__but_cÚ¡ªt_p + ( +__size +) + +361 && + `__but_cÚ¡ªt_p + ( +__n +) + +362 && ( +__size + | +__n +è< ((( +size_t +) 1) << (8 * (size_t) / 2)) + +363 && +__size + * +__n + <= 8) + +365 +size_t + +__út + = +__size + * +__n +; + +366 * +__ý + = (*è +__±r +; + +367 ià( +__út + == 0) + +370 ; +__út + > 0; --__cnt) + +372 +__c + = + `_IO_gc_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à! +defed + +_STDIO_H + && !defed +__Ãed_FOPEN_MAX + && !defed +__Ã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à! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +30 + #L_cu£rid + 9 + + ) + +35 #ià +defed + +__Ãed_FOPEN_MAX + || defed +_STDIO_H + + +36 #undeà +FOPEN_MAX + + +37 + #FOPEN_MAX + 16 + + ) + +40 #ià +defed + +__Ãed_IOV_MAX + && !defed +IOV_MAX + + +41 + #IOV_MAX + 1024 + + ) + + @/usr/include/bits/stdlib-bsearch.h + +19 +__exº_le + * + +20 + $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º_le + + +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 + ("secondrgument ofealpath must beither NULL ort " + +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à +defed + +_LIBC_LIMITS_H_ + && defed +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 biggerhan " + +63 +__fÜtify_funùiÚ + + +64 + `__NTH + ( + $±¢ame_r + ( +__fd +, * +__buf +, +size_t + +__buæ +)) + +66 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +68 ià(! + `__but_cÚ¡ªt_p + ( +__buæ +)) + +69 + `__±¢ame_r_chk + ( +__fd +, +__buf +, +__buæ +, + `__bos + (__buf)); + +70 ià( +__buæ + > + `__bos + ( +__buf +)) + +71 + `__±¢ame_r_chk_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à +defed + +MB_LEN_MAX + && MB_LEN_MAX !ð +__STDLIB_MB_LEN_MAX + + +92 ià( + `__bos + ( +__s +è!ð( +size_t +è-1 && +__STDLIB_MB_LEN_MAX + > __bos (__s)) + +93 + `__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 smallerhanen " + +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à(! + `__but_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 smallerhanen"); + +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à(! + `__but_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à! +defed + +__x86_64__ + && (defed +__i486__ + || defed +__³Áium__ + \ + +32 || +defed + + g__³Áium´o__ + || defed + g__³Áium4__ + \ + +33 || +defed + + g__nocÚa__ + || defed + g__©om__ + \ + +34 || +defed + + g__cÜe2__ + || defed + g__cÜei7__ + \ + +35 || +defed + + g__§ndybridge__ + || defed + g__haswl__ + \ + +36 || +defed + + g__bÚÃÎ__ + || defed + g__svmÚt__ + \ + +37 || +defed + + g__k6__ + || defed + g__geode__ + \ + +38 || +defed + + g__k8__ + || defed + g__©hlÚ__ + \ + +39 || +defed + + g__amdçm10__ + || defed + g__bdv1__ + \ + +40 || +defed + + g__bdv2__ + || defed + g__bdv3__ + \ + +41 || +defed + + g__bdv4__ + || defed + g__btv1__ + \ + +42 || +defed + + g__btv2__ +) + +46 #ià! +defed + +__NO_STRING_INLINES + && defed +__USE_STRING_INLINES + \ + +47 && +defed + + g__GNUC__ + && __GNUC__ >= 2 + +49 #iâdeà +__STRING_INLINE + + +50 #iâdeà +__exº_le + + +51 + #__STRING_INLINE + +le + + + ) + +53 + #__STRING_INLINE + +__exº_le + + + ) + +58 + #__STRING_SMALL_GET16 +( +¤c +, +idx +) \ + +59 ((((cÚ¡ *è( +¤c +))[ +idx + + 1] << 8) \ + +60 | ((cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +61 + #__STRING_SMALL_GET32 +( +¤c +, +idx +) \ + +62 (((((cÚ¡ *è( +¤c +))[ +idx + + 3] << 8 \ + +63 | ((cÚ¡ *è( +¤c +))[ +idx + + 2]) << 8 \ + +64 | ((cÚ¡ *è( +¤c +))[ +idx + + 1]) << 8 \ + +65 | ((cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +69 + #_HAVE_STRING_ARCH_memýy + 1 + + ) + +70 + #memýy +( +de¡ +, +¤c +, +n +) \ + +71 ( + `__exnsiÚ__ + ( + `__but_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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__de¡ +) + +152 : "0" ( +__n +), "1" ( +__tmp +), "2" ( +__¤c +), + +153 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__¤c +) + +155 +__de¡ +; + +156 + } +} + +158 + #_HAVE_STRING_ARCH_memmove + 1 + + ) + +159 #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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__de¡ +) + +178 : "0" ( +__n +), "1" ( +__¤c +), "2" ( +__tmp +), + +179 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__¤c +)); + +181 +__asm__ + +__vÞ©e__ + + +187 : "=&c" ( +__d0 +), "=&S" ( +__d1 +), "=&D" ( +__d2 +), + +188 "=m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__de¡ +) + +189 : "0" ( +__n +), "1" (__À+ (cÚ¡ *è +__¤c +), + +190 "2" ( +__n + + (*è +__tmp +), + +191 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__¤c +)); + +192 +__de¡ +; + +193 + } +} + +197 + #_HAVE_STRING_ARCH_memcmp + 1 + + ) + +198 #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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s1 +), + +217 "m" ( *(¡ruù { +__exnsiÚ__ + +__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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +229 ? (( +n +) == 1 \ + +230 ? + `__mem£t_c1 + (( +s +), ( +c +)) \ + +231 : + `__mem£t_gc + (( +s +), ( +c +), ( +n +))) \ + +232 : ( + `__but_cÚ¡ªt_p + ( +c +) \ + +233 ? ( + `__but_cÚ¡ªt_p + ( +n +) \ + +234 ? + `__mem£t_cú + (( +s +), ( +c +), ( +n +)) \ + +235 : + `mem£t + (( +s +), ( +c +), ( +n +))) \ + +236 : ( + `__but_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 + = + `__exnsiÚ__ + ((*) __u + 4); \ + +267 +__u +-> +__ui + = +__c +; \ + +268 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +270 +__u +-> +__ui + = +__c +; \ + +271 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +273 +__u +-> +__usi + = (è +__c +; \ + +274 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +275 +__u +-> +__uc + = (è +__c +; \ + +279 +__u +-> +__ui + = +__c +; \ + +280 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +282 +__u +-> +__ui + = +__c +; \ + +283 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +285 +__u +-> +__ui + = +__c +; \ + +286 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +288 +__u +-> +__usi + = (è +__c +; \ + +292 +__u +-> +__ui + = +__c +; \ + +293 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +295 +__u +-> +__ui + = +__c +; \ + +296 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +298 +__u +-> +__ui + = +__c +; \ + +299 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +301 +__u +-> +__uc + = (è +__c +; \ + +305 +__u +-> +__ui + = +__c +; \ + +306 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +308 +__u +-> +__ui + = +__c +; \ + +309 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +311 +__u +-> +__ui + = +__c +; \ + +312 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +314 +__u +-> +__ui + = +__c +; \ + +319 +__s +; }) + + ) + +321 + #__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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +345 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +348 +__asm__ + +__vÞ©e__ + + +354 : "=&r" ( +__c +), "=&r" ( +__tmp +), "=&r" ( +__d0 +), + +355 "=m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +356 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +359 +__s +; + +360 + } +} + +362 +__STRING_INLINE + * +__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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +377 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +380 +__asm__ + +__vÞ©e__ + + +386 : "=&q" ( +__d0 +), "=&r" ( +__tmp +), "=&r" ( +__d1 +), + +387 "=m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +388 : "0" ((è +__c +), "1" ( +__tmp +), "2" ( +__n + / 4) + +391 +__s +; + +392 + } +} + +394 + #__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ù { +__exnsiÚ__ + +__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ù { +__exnsiÚ__ + +__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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +474 +__asm__ + +__vÞ©e__ + + +480 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +481 : "a" ( +__c +), "0" ( +__s +), "1" ( +__n +), + +482 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +485 +__»s + - 1; + +486 + } +} + +489 + #_HAVE_STRING_ARCH_memrchr + 1 + + ) + +490 #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ù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +515 +__asm__ + +__vÞ©e__ + + +522 : "=D" ( +__»s +), "=&c" ( +__d0 +) + +523 : "a" ( +__c +), "0" ( +__s + + +__n + - 1), "1" (__n), + +524 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s +) + +527 +__»s +; + +528 + } +} + +529 #ifdeà +__USE_GNU + + +530 + #memrchr +( +s +, +c +, +n +è + `__memrchr + ((s), (c), (n)) + + ) + +535 + #_HAVE_STRING_ARCH_¿wmemchr + 1 + + ) + +536 +__STRING_INLINE + * +__¿wmemchr + (cÚ¡ * +__s +, +__c +); + +538 #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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¡r +) \ + +567 ? + `__but_¡¾ + ( +¡r +) \ + +568 : + `__¡¾_g + ( +¡r +))) + + ) + +569 +__STRING_INLINE + +size_t + +__¡¾_g + (cÚ¡ * +__¡r +); + +571 +__STRING_INLINE + +size_t + + +572 + $__¡¾_g + (cÚ¡ * +__¡r +) + +574 +__dummy +; + +575 cÚ¡ * +__tmp + = +__¡r +; + +576 +__asm__ + +__vÞ©e__ + + +582 : "ô" ( +__tmp +), "=&q" ( +__dummy +) + +583 : "0" ( +__¡r +), + +584 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__¡r +) + +586 +__tmp + - +__¡r + - 1; + +587 + } +} + +591 + #_HAVE_STRING_ARCH_¡rýy + 1 + + ) + +592 + #¡rýy +( +de¡ +, +¤c +) \ + +593 ( + `__exnsiÚ__ + ( + `__but_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 ( + `__exnsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +604 +__ui +; \ + +605 +__usi +; \ + +606 +__uc +; \ + +607 +__c +; \ + +608 } * +__u + = (*è +__de¡ +; \ + +609 +¤þ +) \ + +612 +__u +-> +__uc + = '\0'; \ + +615 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +618 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +619 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +620 +__u +-> +__uc + = '\0'; \ + +623 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +626 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +627 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +628 +__u +-> +__uc + = '\0'; \ + +631 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +632 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +633 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +636 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +637 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +638 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +639 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +640 +__u +-> +__uc + = '\0'; \ + +643 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +644 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +645 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +648 (*è +__de¡ +; })) + + ) + +650 +__STRING_INLINE + * +__¡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 ( + `__exnsiÚ__ + ( + `__but_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 ( + `__exnsiÚ__ + ({ union { \ + +696 +__ui +; \ + +697 +__usi +; \ + +698 +__uc +; \ + +699 +__c +; \ + +700 } * +__u + = (*è( +de¡ +); \ + +701 +¤þ +) \ + +704 +__u +-> +__uc + = '\0'; \ + +707 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +708 +__u + = + `__exnsiÚ__ + ((*) __u + 1); \ + +711 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 0); \ + +712 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +713 +__u +-> +__uc + = '\0'; \ + +716 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +717 +__u + = + `__exnsiÚ__ + ((*) __u + 3); \ + +720 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +721 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +722 +__u +-> +__uc + = '\0'; \ + +725 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +726 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +727 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +728 +__u + = + `__exnsiÚ__ + ((*) __u + 1); \ + +731 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +732 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +733 +__u +-> +__usi + = + `__STRING_SMALL_GET16 + ( +¤c +, 4); \ + +734 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +735 +__u +-> +__uc + = '\0'; \ + +738 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 0); \ + +739 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +740 +__u +-> +__ui + = + `__STRING_SMALL_GET32 + ( +¤c +, 4); \ + +741 +__u + = + `__exnsiÚ__ + ((*) __u + 3); \ + +744 (*è +__u +; })) + + ) + +746 +__STRING_INLINE + * +__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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__de¡ +) + +791 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ + / 2), + +792 "m" ( *(¡ruù { +__exnsiÚ__ + +__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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__de¡ +) + +818 : "0" ( +__tmp +), "1" ( +__¤þ +), "2" ( +__¤c +), + +819 "m" ( *(¡ruù { +__exnsiÚ__ + +__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 ( + `__exnsiÚ__ + ( + `__but_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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__de¡ +) + +884 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ + / 4), + +885 "m" ( *(¡ruù { +__exnsiÚ__ + +__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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__de¡ +) + +914 : "1" ( +__tmp +), "2" ( +__¤c +), "3" ( +__¤þ + / 2), + +915 "m" ( *(¡ruù { +__exnsiÚ__ + +__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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__de¡ +) + +942 : "1" ( +__¤þ +), "0" ( +__tmp +),"2" ( +__¤c +), + +943 "m" ( *(¡ruù { +__exnsiÚ__ + +__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 ( + `__exnsiÚ__ + ( + `__but_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ù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__¤c +) + +1005 -- +__tmp +; + +1007 * +__tmp + = +__de¡ +; + +1008 +__asm__ + +__vÞ©e__ + + +1014 : "ô" ( +__tmp +), + +1015 "=m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__de¡ +) + +1016 : "0" ( +__tmp +), + +1017 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__¤þ +]; } *) +__¤c +) + +1020 (è + `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 ( + `__exnsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +1057 + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +s1 +è&& __but_cÚ¡ªt_°( +s2 +) \ + +1122 && ( (( +s1 +)[0]è!ð1 || + `¡¾ + (s1) >= 4) \ + +1123 && ( (( +s2 +)[0]è!ð1 || + `¡¾ + (s2) >= 4) \ + +1124 ? + `memcmp + ((cÚ¡ *è( +s1 +), (cÚ¡ *è( +s2 +), \ + +1125 ( + `¡¾ + ( +s1 +è< sËÀ( +s2 +) \ + +1126 ? + `¡¾ + ( +s1 +è: sËÀ( +s2 +)) + 1) \ + +1127 : ( + `__but_cÚ¡ªt_p + ( +s1 +) && ((s1)[0]) == 1 \ + +1128 && (( +s2 +)[0]è=ð1 && + `¡¾ + ( +s1 +) < 4 \ + +1129 ? ( + `__but_cÚ¡ªt_p + ( +s2 +) && ((s2)[0]) == 1 \ + +1130 ? + `__¡rcmp_cc + ((cÚ¡ *è( +s1 +), \ + +1131 (cÚ¡ *è( +s2 +), \ + +1132 + `¡¾ + ( +s1 +)) \ + +1133 : + `__¡rcmp_cg + ((cÚ¡ *è( +s1 +), \ + +1134 (cÚ¡ *è( +s2 +), \ + +1135 + `¡¾ + ( +s1 +))) \ + +1136 : ( + `__but_cÚ¡ªt_p + ( +s2 +è&& (( +s1 +)[0]) == 1 \ + +1137 && (( +s2 +)[0]è=ð1 && + `¡¾ + (s2) < 4 \ + +1138 ? ( + `__but_cÚ¡ªt_p + ( +s1 +) \ + +1139 ? + `__¡rcmp_cc + ((cÚ¡ *è( +s1 +), \ + +1140 (cÚ¡ *è( +s2 +), \ + +1141 + `¡¾ + ( +s2 +)) \ + +1142 : + `__¡rcmp_gc + ((cÚ¡ *è( +s1 +), \ + +1143 (cÚ¡ *è( +s2 +), \ + +1144 + `¡¾ + ( +s2 +))) \ + +1145 : + `__¡rcmp_gg + (( +s1 +), ( +s2 +)))))) + + ) + +1147 + #__¡rcmp_cc +( +s1 +, +s2 +, +l +) \ + +1148 ( + `__exnsiÚ__ + ({ +__»suÉ + = ( +s1 +)[0] - ( +s2 +)[0]; \ + +1149 ià( +l + > 0 && +__»suÉ + == 0) \ + +1151 +__»suÉ + = ( +s1 +)[1] - ( +s2 +)[1]; \ + +1152 ià( +l + > 1 && +__»suÉ + == 0) \ + +1154 +__»suÉ + = ( +s1 +)[2] - ( +s2 +)[2]; \ + +1155 ià( +l + > 2 && +__»suÉ + == 0) \ + +1156 +__»suÉ + = ( +s1 +)[3] - ( +s2 +)[3]; \ + +1159 +__»suÉ +; })) + + ) + +1161 + #__¡rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +1162 ( + `__exnsiÚ__ + ({ cÚ¡ * +__s2 + = ( +s2 +); \ + +1163 +__»suÉ + = ( +s1 +)[0] - +__s2 +[0]; \ + +1164 ià( +l1 + > 0 && +__»suÉ + == 0) \ + +1166 +__»suÉ + = ( +s1 +)[1] - +__s2 +[1]; \ + +1167 ià( +l1 + > 1 && +__»suÉ + == 0) \ + +1169 +__»suÉ + = ( +s1 +)[2] - +__s2 +[2]; \ + +1170 ià( +l1 + > 2 && +__»suÉ + == 0) \ + +1171 +__»suÉ + = ( +s1 +)[3] - +__s2 +[3]; \ + +1174 +__»suÉ +; })) + + ) + +1176 + #__¡rcmp_gc +( +s1 +, +s2 +, +l2 +) \ + +1177 ( + `__exnsiÚ__ + ({ cÚ¡ * +__s1 + = ( +s1 +); \ + +1178 +__»suÉ + = +__s1 +[0] - ( +s2 +)[0]; \ + +1179 ià( +l2 + > 0 && +__»suÉ + == 0) \ + +1181 +__»suÉ + = +__s1 +[1] - ( +s2 +)[1]; \ + +1182 ià( +l2 + > 1 && +__»suÉ + == 0) \ + +1184 +__»suÉ + = +__s1 +[2] - ( +s2 +)[2]; \ + +1185 ià( +l2 + > 2 && +__»suÉ + == 0) \ + +1186 +__»suÉ + = +__s1 +[3] - ( +s2 +)[3]; \ + +1189 +__»suÉ +; })) + + ) + +1191 +__STRING_INLINE + +__¡rcmp_gg + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +); + +1193 +__STRING_INLINE + + +1194 + $__¡rcmp_gg + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +) + +1196 +__»s +; + +1197 +__asm__ + +__vÞ©e__ + + +1213 : "=q" ( +__»s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +) + +1214 : "1" ( +__s1 +), "2" ( +__s2 +), + +1215 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s1 +), + +1216 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s2 +) + +1218 +__»s +; + +1219 + } +} + +1223 + #_HAVE_STRING_ARCH_¡ºcmp + 1 + + ) + +1224 + #¡ºcmp +( +s1 +, +s2 +, +n +) \ + +1225 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +s1 +è&& + `¡¾ + (s1è< (( +size_t +è( +n +)) \ + +1226 ? + `¡rcmp + (( +s1 +), ( +s2 +)) \ + +1227 : ( + `__but_cÚ¡ªt_p + ( +s2 +è&& + `¡¾ + (s2è< (( +size_t +è( +n +))\ + +1228 ? + `¡rcmp + (( +s1 +), ( +s2 +)) \ + +1229 : + `__¡ºcmp_g + (( +s1 +), ( +s2 +), ( +n +))))) + + ) + +1231 +__STRING_INLINE + +__¡ºcmp_g + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, + +1232 +size_t + +__n +); + +1234 +__STRING_INLINE + + +1235 + $__¡ºcmp_g + (cÚ¡ * +__s1 +, cÚ¡ * +__s2 +, +size_t + +__n +) + +1237 +__»s +; + +1238 +__asm__ + +__vÞ©e__ + + +1257 : "=q" ( +__»s +), "=&r" ( +__s1 +), "=&r" ( +__s2 +), "=&r" ( +__n +) + +1258 : "1" ( +__s1 +), "2" ( +__s2 +), "3" ( +__n +), + +1259 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s1 +), + +1260 "m" ( *(¡ruù { +__exnsiÚ__ + +__x +[ +__n +]; } *) +__s2 +) + +1262 +__»s +; + +1263 + } +} + +1267 + #_HAVE_STRING_ARCH_¡rchr + 1 + + ) + +1268 + #_USE_STRING_ARCH_¡rchr + 1 + + ) + +1269 + #¡rchr +( +s +, +c +) \ + +1270 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) \ + +1271 ? (( +c +) == '\0' \ + +1272 ? (*è + `__¿wmemchr + (( +s +), ( +c +)) \ + +1273 : + `__¡rchr_c + (( +s +), (( +c +) & 0xff) << 8)) \ + +1274 : + `__¡rchr_g + (( +s +), ( +c +)))) + + ) + +1276 +__STRING_INLINE + * +__¡rchr_c + (cÚ¡ * +__s +, +__c +); + +1278 +__STRING_INLINE + * + +1279 + $__¡rchr_c + (cÚ¡ * +__s +, +__c +) + +1281 +__d0 +; + +1282 * +__»s +; + +1283 +__asm__ + +__vÞ©e__ + + +1293 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1294 : "0" ( +__s +), "1" ( +__c +), + +1295 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1297 +__»s +; + +1298 + } +} + +1300 +__STRING_INLINE + * +__¡rchr_g + (cÚ¡ * +__s +, +__c +); + +1302 +__STRING_INLINE + * + +1303 + $__¡rchr_g + (cÚ¡ * +__s +, +__c +) + +1305 +__d0 +; + +1306 * +__»s +; + +1307 +__asm__ + +__vÞ©e__ + + +1318 : "ô" ( +__»s +), "=&a" ( +__d0 +) + +1319 : "0" ( +__s +), "1" ( +__c +), + +1320 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1322 +__»s +; + +1323 + } +} + +1327 + #_HAVE_STRING_ARCH_¡rchºul + 1 + + ) + +1328 + #__¡rchºul +( +s +, +c +) \ + +1329 ( + `__exnsiÚ__ + ( + `__but_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à +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1390 + #_HAVE_STRING_ARCH_dex + 1 + + ) + +1391 + #dex +( +s +, +c +) \ + +1392 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) \ + +1393 ? + `__¡rchr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1394 : + `__¡rchr_g + (( +s +), ( +c +)))) + + ) + +1399 + #_HAVE_STRING_ARCH_¡¼chr + 1 + + ) + +1400 + #¡¼chr +( +s +, +c +) \ + +1401 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) \ + +1402 ? + `__¡¼chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1403 : + `__¡¼chr_g + (( +s +), ( +c +)))) + + ) + +1405 #ifdeà +__i686__ + + +1406 +__STRING_INLINE + * +__¡¼chr_c + (cÚ¡ * +__s +, +__c +); + +1408 +__STRING_INLINE + * + +1409 + $__¡¼chr_c + (cÚ¡ * +__s +, +__c +) + +1411 +__d0 +, +__d1 +; + +1412 * +__»s +; + +1413 +__asm__ + +__vÞ©e__ + + +1421 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1422 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1423 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1425 +__»s + - 1; + +1426 + } +} + +1428 +__STRING_INLINE + * +__¡¼chr_g + (cÚ¡ * +__s +, +__c +); + +1430 +__STRING_INLINE + * + +1431 + $__¡¼chr_g + (cÚ¡ * +__s +, +__c +) + +1433 +__d0 +, +__d1 +; + +1434 * +__»s +; + +1435 +__asm__ + +__vÞ©e__ + + +1444 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1445 : "0" (1), "1" ( +__s +), "2" ( +__c +), + +1446 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1448 +__»s + - 1; + +1449 + } +} + +1451 +__STRING_INLINE + * +__¡¼chr_c + (cÚ¡ * +__s +, +__c +); + +1453 +__STRING_INLINE + * + +1454 + $__¡¼chr_c + (cÚ¡ * +__s +, +__c +) + +1456 +__d0 +, +__d1 +; + +1457 * +__»s +; + +1458 +__asm__ + +__vÞ©e__ + + +1468 : "=d" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1469 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1470 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1472 +__»s +; + +1473 + } +} + +1475 +__STRING_INLINE + * +__¡¼chr_g + (cÚ¡ * +__s +, +__c +); + +1477 +__STRING_INLINE + * + +1478 + $__¡¼chr_g + (cÚ¡ * +__s +, +__c +) + +1480 +__d0 +, +__d1 +; + +1481 * +__»s +; + +1482 +__asm__ + +__vÞ©e__ + + +1493 : "ô" ( +__»s +), "=&S" ( +__d0 +), "=&a" ( +__d1 +) + +1494 : "0" (0), "1" ( +__s +), "2" ( +__c +), + +1495 "m" ( *(¡ruù { +__x +[0xfffffff]; } *) +__s +) + +1497 +__»s +; + +1498 + } +} + +1502 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1504 + #_HAVE_STRING_ARCH_rdex + 1 + + ) + +1505 + #rdex +( +s +, +c +) \ + +1506 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) \ + +1507 ? + `__¡¼chr_c + (( +s +), (( +c +) & 0xff) << 8) \ + +1508 : + `__¡¼chr_g + (( +s +), ( +c +)))) + + ) + +1514 + #_HAVE_STRING_ARCH_¡rc¥n + 1 + + ) + +1515 + #¡rc¥n +( +s +, +»jeù +) \ + +1516 ( + `__exnsiÚ__ + ( + `__but_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 ( + `__exnsiÚ__ + ( + `__but_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ù { +__exnsiÚ__ + +__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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +acû± +) && ((accept)[0]) == 1 \ + +1758 ? (( +acû± +)[0] == '\0' \ + +1759 ? ((è( +s +), (*) 0) \ + +1760 : (( +acû± +)[1] == '\0' \ + +1761 ? + `¡rchr + (( +s +), ( +acû± +)[0]) \ + +1762 : + `__¡½brk_cg + (( +s +), ( +acû± +), + `¡¾ + (accept)))) \ + +1763 : + `__¡½brk_g + (( +s +), ( +acû± +)))) + + ) + +1765 +__STRING_INLINE + * +__¡½brk_cg + (cÚ¡ * +__s +, cÚ¡ +__acû± +[], + +1766 +size_t + +__acû±_Ën +); + +1768 +__STRING_INLINE + * + +1769 + $__¡½brk_cg + (cÚ¡ * +__s +, cÚ¡ +__acû± +[], +size_t + +__acû±_Ën +) + +1771 +__d0 +, +__d1 +, +__d2 +; + +1772 * +__»s +; + +1773 +__asm__ + +__vÞ©e__ + + +1788 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1789 : "0" ( +__s +), "d" ( +__acû± +), "g" ( +__acû±_Ën +) + +1791 +__»s +; + +1792 + } +} + +1794 +__STRING_INLINE + * +__¡½brk_g + (cÚ¡ * +__s +, cÚ¡ * +__acû± +); + +1795 #ifdeà +__PIC__ + + +1797 +__STRING_INLINE + * + +1798 + $__¡½brk_g + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +1800 +__d0 +, +__d1 +, +__d2 +; + +1801 * +__»s +; + +1802 +__asm__ + +__vÞ©e__ + + +1823 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&D" ( +__d2 +) + +1824 : "d" ( +__acû± +), "0" ( +__s +), "1" (0), "2" (0xffffffff) + +1826 +__»s +; + +1827 + } +} + +1829 +__STRING_INLINE + * + +1830 + $__¡½brk_g + (cÚ¡ * +__s +, cÚ¡ * +__acû± +) + +1832 +__d0 +, +__d1 +, +__d2 +, +__d3 +; + +1833 * +__»s +; + +1834 +__asm__ + +__vÞ©e__ + + +1853 : "=S" ( +__»s +), "=&a" ( +__d0 +), "=&c" ( +__d1 +), "=&d" ( +__d2 +), "=&D" ( +__d3 +) + +1854 : "0" ( +__s +), "1" (0), "2" (0xffffffff), "b" ( +__acû± +) + +1856 +__»s +; + +1857 + } +} + +1862 + #_HAVE_STRING_ARCH_¡r¡r + 1 + + ) + +1863 + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1864 ( + `__exnsiÚ__ + ( + `__but_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à +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +1973 #ifdeà +__i686__ + + +1974 + #_HAVE_STRING_ARCH_ffs + 1 + + ) + +1975 + #ffs +( +wÜd +è( + `__but_cÚ¡ªt_p + (word) \ + +1976 ? + `__but_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 + +le + + + ) + +45 + #__STRING_INLINE + +__exº_le + + + ) + +49 #ià +_STRING_INLINE_uÇligÃd + + +51 + ~<dn.h +> + +52 + ~<bs/ty³s.h +> + +54 #ià +__BYTE_ORDER + =ð +__LITTLE_ENDIAN + + +55 + #__STRING2_SMALL_GET16 +( +¤c +, +idx +) \ + +56 (((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 1] << 8 \ + +57 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +58 + #__STRING2_SMALL_GET32 +( +¤c +, +idx +) \ + +59 (((((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 3] << 8 \ + +60 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 2]) << 8 \ + +61 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 1]) << 8 \ + +62 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx +]) + + ) + +64 + #__STRING2_SMALL_GET16 +( +¤c +, +idx +) \ + +65 (((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx +] << 8 \ + +66 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 1]) + + ) + +67 + #__STRING2_SMALL_GET32 +( +¤c +, +idx +) \ + +68 (((((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx +] << 8 \ + +69 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 1]) << 8 \ + +70 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 2]) << 8 \ + +71 | ((cÚ¡ *è(cÚ¡ *è( +¤c +))[ +idx + + 3]) + + ) + +76 + #__STRING2_COPY_TYPE +( +N +) \ + +77 ¡ruù { +__¬r +[ +N +]; } \ + +78 + t__©ibu__ + (( + t__·cked__ +)è + t__STRING2_COPY_ARR +## + tN + + + ) + +79 + t__STRING2_COPY_TYPE + (2); + +80 +__STRING2_COPY_TYPE + (3); + +81 +__STRING2_COPY_TYPE + (4); + +82 +__STRING2_COPY_TYPE + (5); + +83 +__STRING2_COPY_TYPE + (6); + +84 +__STRING2_COPY_TYPE + (7); + +85 +__STRING2_COPY_TYPE + (8); + +86 #undeà +__STRING2_COPY_TYPE + + +92 + #__¡rg2_1b±r_p +( +__x +) \ + +93 (( +size_t +)(cÚ¡ *)(( +__x +è+ 1è- (size_t)(cÚ¡ *)(__xè=ð1) + + ) + +96 #ià! +defed + +_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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +n +) && (n) <= 16 \ + +101 ? (( +n +) == 1 \ + +102 ? + `__mem£t_1 + ( +s +, +c +) \ + +103 : + `__mem£t_gc + ( +s +, +c +, +n +)) \ + +104 : ( + `__but_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +105 ? ({ * +__s + = ( +s +); + `__bzo + (__s, +n +); __s; }) \ + +106 : + `mem£t + ( +s +, +c +, +n +)))) + + ) + +108 + #__mem£t_1 +( +s +, +c +è({ * +__s + = (s); \ + +109 *(( +__ut8_t + *è +__s +èð(__ut8_tè +c +; __s; }) + + ) + +111 + #__mem£t_gc +( +s +, +c +, +n +) \ + +112 ({ * +__s + = ( +s +); \ + +114 +__ui +; \ + +115 +__usi +; \ + +116 +__uc +; \ + +117 } * +__u + = +__s +; \ + +118 +__ut8_t + +__c + = (__ut8_tè( +c +); \ + +121 (è( +n +)) \ + +124 +__u +-> +__ui + = +__c + * 0x01010101; \ + +125 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +127 +__u +-> +__ui + = +__c + * 0x01010101; \ + +128 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +130 +__u +-> +__ui + = +__c + * 0x01010101; \ + +131 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +133 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +134 +__u + = + `__exnsiÚ__ + ((*) __u + 2); \ + +135 +__u +-> +__uc + = (è +__c +; \ + +139 +__u +-> +__ui + = +__c + * 0x01010101; \ + +140 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +142 +__u +-> +__ui + = +__c + * 0x01010101; \ + +143 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +145 +__u +-> +__ui + = +__c + * 0x01010101; \ + +146 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +148 +__u +-> +__usi + = (è +__c + * 0x0101; \ + +152 +__u +-> +__ui + = +__c + * 0x01010101; \ + +153 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +155 +__u +-> +__ui + = +__c + * 0x01010101; \ + +156 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +158 +__u +-> +__ui + = +__c + * 0x01010101; \ + +159 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +161 +__u +-> +__uc + = (è +__c +; \ + +165 +__u +-> +__ui + = +__c + * 0x01010101; \ + +166 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +168 +__u +-> +__ui + = +__c + * 0x01010101; \ + +169 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +171 +__u +-> +__ui + = +__c + * 0x01010101; \ + +172 +__u + = + `__exnsiÚ__ + ((*) __u + 4); \ + +174 +__u +-> +__ui + = +__c + * 0x01010101; \ + +179 +__s +; }) + + ) + +181 + #mem£t +( +s +, +c +, +n +) \ + +182 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +183 ? ({ * +__s + = ( +s +); + `__bzo + (__s, +n +); __s; }) \ + +184 : + `mem£t + ( +s +, +c +, +n +))) + + ) + +193 #ià +__GNUC_PREREQ + (2, 91) + +194 + #__bzo +( +s +, +n +è + `__but_mem£t + (s, '\0',) + + ) + +202 #ifdeà +__USE_GNU + + +203 #ià! +defed + +_HAVE_STRING_ARCH_mempýy + || defed +_FORCE_INLINES + + +204 #iâdeà +_HAVE_STRING_ARCH_mempýy + + +205 #ià +__GNUC_PREREQ + (3, 4) + +206 + #__mempýy +( +de¡ +, +¤c +, +n +è + `__but_mempýy + (de¡, src,) + + ) + +207 #ià +__GNUC_PREREQ + (3, 0) + +208 + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +209 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_cÚ¡ªt_°( +n +) \ + +210 && + `__¡rg2_1b±r_p + ( +¤c +è&& +n + <= 8 \ + +211 ? + `__but_memýy + ( +de¡ +, +¤c +, +n +) + (n) \ + +212 : + `__mempýy + ( +de¡ +, +¤c +, +n +))) + + ) + +214 + #__mempýy +( +de¡ +, +¤c +, +n +) \ + +215 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_cÚ¡ªt_°( +n +) \ + +216 && + `__¡rg2_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è|| +defed + +_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 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +232 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +233 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +234 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +236 +__STRING_INLINE + * +__mempýy_sm®l + (*, , , , , + +237 +__ut16_t +, __ut16_t, +__ut32_t +, + +238 +__ut32_t +, +size_t +); + +239 +__STRING_INLINE + * + +240 + $__mempýy_sm®l + (* +__de¡1 +, + +241 +__¤c0_1 +, +__¤c2_1 +, +__¤c4_1 +, +__¤c6_1 +, + +242 +__ut16_t + +__¤c0_2 +, __ut16_ +__¤c4_2 +, + +243 +__ut32_t + +__¤c0_4 +, __ut32_ +__¤c4_4 +, + +244 +size_t + +__¤þ +) + +247 +__ut32_t + +__ui +; + +248 +__ut16_t + +__usi +; + +249 +__uc +; + +250 +__c +; + +251 } * +__u + = +__de¡1 +; + +252 (è +__¤þ +) + +255 +__u +-> +__c + = +__¤c0_1 +; + +256 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +259 +__u +-> +__usi + = +__¤c0_2 +; + +260 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +263 +__u +-> +__usi + = +__¤c0_2 +; + +264 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +265 +__u +-> +__c + = +__¤c2_1 +; + +266 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +269 +__u +-> +__ui + = +__¤c0_4 +; + +270 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +273 +__u +-> +__ui + = +__¤c0_4 +; + +274 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +275 +__u +-> +__c + = +__¤c4_1 +; + +276 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +279 +__u +-> +__ui + = +__¤c0_4 +; + +280 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +281 +__u +-> +__usi + = +__¤c4_2 +; + +282 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +285 +__u +-> +__ui + = +__¤c0_4 +; + +286 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +287 +__u +-> +__usi + = +__¤c4_2 +; + +288 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +289 +__u +-> +__c + = +__¤c6_1 +; + +290 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +293 +__u +-> +__ui + = +__¤c0_4 +; + +294 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +295 +__u +-> +__ui + = +__¤c4_4 +; + +296 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +299 (*è +__u +; + +300 + } +} + +302 #iâdeà +_FORCE_INLINES + + +303 + #__mempýy_¬gs +( +¤c +) \ + +304 ((cÚ¡ *è( +¤c +))[0], \ + +305 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +306 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1] } }), \ + +307 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +308 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +309 ((cÚ¡ *è( +¤c +))[2] } }), \ + +310 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +311 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +312 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3] } }), \ + +313 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +314 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +315 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +316 ((cÚ¡ *è( +¤c +))[4] } }), \ + +317 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +318 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +319 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +320 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5] } }), \ + +321 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +322 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +323 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +324 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +325 ((cÚ¡ *è( +¤c +))[6] } }), \ + +326 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +327 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +328 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +329 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +330 ((cÚ¡ *è( +¤c +))[6], ((cÚ¡ *è(¤c))[7] } }) + + ) + +332 +__STRING_INLINE + * +__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 +__exnsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +365 +__exnsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +368 +__exnsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +371 +__exnsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +374 +__exnsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +377 +__exnsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +380 +__exnsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +383 + `__exnsiÚ__ + ((*è +__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 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +è&& !__but_cÚ¡ªt_°( +s +) \ + +397 && ( +c +) == '\0' \ + +398 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +399 : + `__but_¡rchr + ( +s +, +c +))) + + ) + +401 + #¡rchr +( +s +, +c +) \ + +402 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +c +) && (c) == '\0' \ + +403 ? (*è + `__¿wmemchr + ( +s +, +c +) \ + +404 : + `¡rchr + ( +s +, +c +))) + + ) + +410 #ià(! +defed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0)) \ + +411 || +defed + + g_FORCE_INLINES + + +412 #ià! +defed + +_HAVE_STRING_ARCH_¡rýy + && ! +__GNUC_PREREQ + (3, 0) + +413 + #¡rýy +( +de¡ +, +¤c +) \ + +414 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +) \ + +415 ? ( + `__¡rg2_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 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +426 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +427 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +428 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +430 +__STRING_INLINE + * +__¡rýy_sm®l + (*, +__ut16_t +, __uint16_t, + +431 +__ut32_t +, __ut32_t, +size_t +); + +432 +__STRING_INLINE + * + +433 + $__¡rýy_sm®l + (* +__de¡ +, + +434 +__ut16_t + +__¤c0_2 +, __ut16_ +__¤c4_2 +, + +435 +__ut32_t + +__¤c0_4 +, __ut32_ +__¤c4_4 +, + +436 +size_t + +__¤þ +) + +439 +__ut32_t + +__ui +; + +440 +__ut16_t + +__usi +; + +441 +__uc +; + +442 } * +__u + = (*è +__de¡ +; + +443 (è +__¤þ +) + +446 +__u +-> +__uc + = '\0'; + +449 +__u +-> +__usi + = +__¤c0_2 +; + +452 +__u +-> +__usi + = +__¤c0_2 +; + +453 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +454 +__u +-> +__uc + = '\0'; + +457 +__u +-> +__ui + = +__¤c0_4 +; + +460 +__u +-> +__ui + = +__¤c0_4 +; + +461 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +462 +__u +-> +__uc + = '\0'; + +465 +__u +-> +__ui + = +__¤c0_4 +; + +466 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +467 +__u +-> +__usi + = +__¤c4_2 +; + +470 +__u +-> +__ui + = +__¤c0_4 +; + +471 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +472 +__u +-> +__usi + = +__¤c4_2 +; + +473 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +474 +__u +-> +__uc + = '\0'; + +477 +__u +-> +__ui + = +__¤c0_4 +; + +478 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +479 +__u +-> +__ui + = +__¤c4_4 +; + +482 +__de¡ +; + +483 + } +} + +485 #iâdeà +_FORCE_INLINES + + +486 + #__¡rýy_¬gs +( +¤c +) \ + +487 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +488 { { ((cÚ¡ *è( +¤c +))[0], '\0' } }), \ + +489 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +490 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +492 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +493 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +494 ((cÚ¡ *è( +¤c +))[2], '\0' } }), \ + +495 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +496 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +497 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +499 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +500 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +501 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +502 ((cÚ¡ *è( +¤c +))[4], '\0' } }), \ + +503 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +504 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +505 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +506 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +508 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +509 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +510 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +511 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +512 ((cÚ¡ *è( +¤c +))[6], '\0' } }) + + ) + +514 +__STRING_INLINE + * +__¡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 +__exnsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +547 +__exnsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +550 +__exnsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +553 +__exnsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +556 +__exnsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +559 +__exnsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +562 +__exnsiÚ__ + +__u +-> +__sÿ8 + = +__¤c8 +; + +565 +__de¡ +; + +566 + } +} + +572 #ifdeà +__USE_GNU + + +573 #ià! +defed + +_HAVE_STRING_ARCH_¡pýy + || defed +_FORCE_INLINES + + +574 #iâdeà +_HAVE_STRING_ARCH_¡pýy + + +575 #ià +__GNUC_PREREQ + (3, 4) + +576 + #__¡pýy +( +de¡ +, +¤c +è + `__but_¡pýy + (de¡, src) + + ) + +577 #ià +__GNUC_PREREQ + (3, 0) + +578 + #__¡pýy +( +de¡ +, +¤c +) \ + +579 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +) \ + +580 ? ( + `__¡rg2_1b±r_p + ( +¤c +è&& + `¡¾ + (src) + 1 <= 8 \ + +581 ? + `__but_¡rýy + ( +de¡ +, +¤c +è+ + `¡¾ + (src) \ + +582 : ((*è( +__mempýy +è( +de¡ +, +¤c +, + `¡¾ + (src) + 1) \ + +584 : + `__¡pýy + ( +de¡ +, +¤c +))) + + ) + +586 + #__¡pýy +( +de¡ +, +¤c +) \ + +587 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +) \ + +588 ? ( + `__¡rg2_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è|| +defed + +_FORCE_INLINES + + +601 #ià +_STRING_INLINE_uÇligÃd + + +602 #iâdeà +_FORCE_INLINES + + +603 + #__¡pýy_¬gs +( +¤c +) \ + +604 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 0), \ + +605 +__exnsiÚ__ + + `__STRING2_SMALL_GET16 + ( +¤c +, 4), \ + +606 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 0), \ + +607 +__exnsiÚ__ + + `__STRING2_SMALL_GET32 + ( +¤c +, 4) + + ) + +609 +__STRING_INLINE + * +__¡pýy_sm®l + (*, +__ut16_t +, __uint16_t, + +610 +__ut32_t +, __ut32_t, +size_t +); + +611 +__STRING_INLINE + * + +612 + $__¡pýy_sm®l + (* +__de¡ +, + +613 +__ut16_t + +__¤c0_2 +, __ut16_ +__¤c4_2 +, + +614 +__ut32_t + +__¤c0_4 +, __ut32_ +__¤c4_4 +, + +615 +size_t + +__¤þ +) + +618 +__ui +; + +619 +__usi +; + +620 +__uc +; + +621 +__c +; + +622 } * +__u + = (*è +__de¡ +; + +623 (è +__¤þ +) + +626 +__u +-> +__uc + = '\0'; + +629 +__u +-> +__usi + = +__¤c0_2 +; + +630 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +633 +__u +-> +__usi + = +__¤c0_2 +; + +634 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +635 +__u +-> +__uc + = '\0'; + +638 +__u +-> +__ui + = +__¤c0_4 +; + +639 +__u + = + `__exnsiÚ__ + ((*) __u + 3); + +642 +__u +-> +__ui + = +__¤c0_4 +; + +643 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +644 +__u +-> +__uc + = '\0'; + +647 +__u +-> +__ui + = +__¤c0_4 +; + +648 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +649 +__u +-> +__usi + = +__¤c4_2 +; + +650 +__u + = + `__exnsiÚ__ + ((*) __u + 1); + +653 +__u +-> +__ui + = +__¤c0_4 +; + +654 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +655 +__u +-> +__usi + = +__¤c4_2 +; + +656 +__u + = + `__exnsiÚ__ + ((*) __u + 2); + +657 +__u +-> +__uc + = '\0'; + +660 +__u +-> +__ui + = +__¤c0_4 +; + +661 +__u + = + `__exnsiÚ__ + ((*) __u + 4); + +662 +__u +-> +__ui + = +__¤c4_4 +; + +663 +__u + = + `__exnsiÚ__ + ((*) __u + 3); + +666 & +__u +-> +__c +; + +667 + } +} + +669 #iâdeà +_FORCE_INLINES + + +670 + #__¡pýy_¬gs +( +¤c +) \ + +671 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR2 +) \ + +672 { { ((cÚ¡ *è( +¤c +))[0], '\0' } }), \ + +673 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR3 +) \ + +674 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +676 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR4 +) \ + +677 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +678 ((cÚ¡ *è( +¤c +))[2], '\0' } }), \ + +679 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR5 +) \ + +680 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +681 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +683 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR6 +) \ + +684 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +685 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +686 ((cÚ¡ *è( +¤c +))[4], '\0' } }), \ + +687 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR7 +) \ + +688 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +689 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +690 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +692 + `__exnsiÚ__ + (( +__STRING2_COPY_ARR8 +) \ + +693 { { ((cÚ¡ *è( +¤c +))[0], ((const *) (src))[1], \ + +694 ((cÚ¡ *è( +¤c +))[2], ((const *) (src))[3], \ + +695 ((cÚ¡ *è( +¤c +))[4], ((const *) (src))[5], \ + +696 ((cÚ¡ *è( +¤c +))[6], '\0' } }) + + ) + +698 +__STRING_INLINE + * +__¡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 +__exnsiÚ__ + +__u +-> +__sÿ2 + = +__¤c2 +; + +731 +__exnsiÚ__ + +__u +-> +__sÿ3 + = +__¤c3 +; + +734 +__exnsiÚ__ + +__u +-> +__sÿ4 + = +__¤c4 +; + +737 +__exnsiÚ__ + +__u +-> +__sÿ5 + = +__¤c5 +; + +740 +__exnsiÚ__ + +__u +-> +__sÿ6 + = +__¤c6 +; + +743 +__exnsiÚ__ + +__u +-> +__sÿ7 + = +__¤c7 +; + +746 +__exnsiÚ__ + +__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 +è + `__but_¡ºýy + (de¡, src,) + + ) + +762 + #¡ºýy +( +de¡ +, +¤c +, +n +) \ + +763 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_cÚ¡ªt_°( +n +) \ + +764 ? ( + `¡¾ + ( +¤c +è+ 1 >ð(( +size_t +è( +n +)) \ + +765 ? (*è + `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 ( + `__exnsiÚ__ + ({ * +__de¡ + = ( +de¡ +); \ + +777 + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_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 +è + `__but_¡ºÿt + (de¡, src,) + + ) + +786 + #¡ºÿt +( +de¡ +, +¤c +, +n +) \ + +787 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +¤c +è&& __but_cÚ¡ªt_°( +n +) \ + +788 ? ( + `¡¾ + ( +¤c +è< (( +size_t +è( +n +)) \ + +789 ? + `¡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 +__exnsiÚ__ + \ + +801 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +802 ( + `__but_cÚ¡ªt_p + ( +s1 +è&& __but_cÚ¡ªt_°( +s2 +) \ + +803 && ( +__s1_Ën + = + `__but_¡¾ + ( +s1 +), +__s2_Ën + = __but_¡¾ ( +s2 +), \ + +804 (! + `__¡rg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +805 && (! + `__¡rg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +806 ? + `__but_¡rcmp + ( +s1 +, +s2 +) \ + +807 : ( + `__but_cÚ¡ªt_p + ( +s1 +è&& + `__¡rg2_1b±r_p + (s1) \ + +808 && ( +__s1_Ën + = + `__but_¡¾ + ( +s1 +), __s1_len < 4) \ + +809 ? ( + `__but_cÚ¡ªt_p + ( +s2 +è&& + `__¡rg2_1b±r_p + (s2) \ + +810 ? + `__but_¡rcmp + ( +s1 +, +s2 +) \ + +811 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +812 : ( + `__but_cÚ¡ªt_p + ( +s2 +è&& + `__¡rg2_1b±r_p + (s2) \ + +813 && ( +__s2_Ën + = + `__but_¡¾ + ( +s2 +), __s2_len < 4) \ + +814 ? ( + `__but_cÚ¡ªt_p + ( +s1 +è&& + `__¡rg2_1b±r_p + (s1) \ + +815 ? + `__but_¡rcmp + ( +s1 +, +s2 +) \ + +816 : + `__¡rcmp_gc + ( +s1 +, +s2 +, +__s2_Ën +)) \ + +817 : + `__but_¡rcmp + ( +s1 +, +s2 +)))); }) + + ) + +819 + #¡rcmp +( +s1 +, +s2 +) \ + +820 +__exnsiÚ__ + \ + +821 ({ +size_t + +__s1_Ën +, +__s2_Ën +; \ + +822 ( + `__but_cÚ¡ªt_p + ( +s1 +è&& __but_cÚ¡ªt_°( +s2 +) \ + +823 && ( +__s1_Ën + = + `¡¾ + ( +s1 +), +__s2_Ën + = sËÀ( +s2 +), \ + +824 (! + `__¡rg2_1b±r_p + ( +s1 +è|| +__s1_Ën + >= 4) \ + +825 && (! + `__¡rg2_1b±r_p + ( +s2 +è|| +__s2_Ën + >= 4)) \ + +826 ? + `memcmp + ((cÚ¡ *è( +s1 +), (cÚ¡ *è( +s2 +), \ + +827 ( +__s1_Ën + < +__s2_Ën + ? __s1_len : __s2_len) + 1) \ + +828 : ( + `__but_cÚ¡ªt_p + ( +s1 +è&& + `__¡rg2_1b±r_p + (s1) \ + +829 && ( +__s1_Ën + = + `¡¾ + ( +s1 +), __s1_len < 4) \ + +830 ? ( + `__but_cÚ¡ªt_p + ( +s2 +è&& + `__¡rg2_1b±r_p + (s2) \ + +831 ? + `__¡rcmp_cc + ( +s1 +, +s2 +, +__s1_Ën +) \ + +832 : + `__¡rcmp_cg + ( +s1 +, +s2 +, +__s1_Ën +)) \ + +833 : ( + `__but_cÚ¡ªt_p + ( +s2 +è&& + `__¡rg2_1b±r_p + (s2) \ + +834 && ( +__s2_Ën + = + `¡¾ + ( +s2 +), __s2_len < 4) \ + +835 ? ( + `__but_cÚ¡ªt_p + ( +s1 +è&& + `__¡rg2_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 ( + `__exnsiÚ__ + ({ +__»suÉ + = \ + +843 (((cÚ¡ *è(cÚ¡ *è( +s1 +))[0] \ + +844 - ((cÚ¡ *è(cÚ¡ *)( +s2 +))[0]); \ + +845 ià( +l + > 0 && +__»suÉ + == 0) \ + +847 +__»suÉ + = (((const *) \ + +848 (cÚ¡ *è( +s1 +))[1] \ + +850 (cÚ¡ *è( +s2 +))[1]); \ + +851 ià( +l + > 1 && +__»suÉ + == 0) \ + +853 +__»suÉ + = \ + +855 (cÚ¡ *è( +s1 +))[2] \ + +857 (cÚ¡ *è( +s2 +))[2]); \ + +858 ià( +l + > 2 && +__»suÉ + == 0) \ + +859 +__»suÉ + = \ + +861 (cÚ¡ *è( +s1 +))[3] \ + +863 (cÚ¡ *è( +s2 +))[3]); \ + +866 +__»suÉ +; })) + + ) + +868 + #__¡rcmp_cg +( +s1 +, +s2 +, +l1 +) \ + +869 ( + `__exnsiÚ__ + ({ cÚ¡ * +__s2 + = \ + +870 (cÚ¡ *è(cÚ¡ *è( +s2 +); \ + +871 +__»suÉ + = \ + +872 (((cÚ¡ *è(cÚ¡ *è( +s1 +))[0] \ + +873 - +__s2 +[0]); \ + +874 ià( +l1 + > 0 && +__»suÉ + == 0) \ + +876 +__»suÉ + = (((const *) \ + +877 (cÚ¡ *è( +s1 +))[1] - +__s2 +[1]); \ + +878 ià( +l1 + > 1 && +__»suÉ + == 0) \ + +880 +__»suÉ + = (((const *) \ + +881 (cÚ¡ *è( +s1 +))[2] - +__s2 +[2]); \ + +882 ià( +l1 + > 2 && +__»suÉ + == 0) \ + +883 +__»suÉ + = (((const *) \ + +884 (cÚ¡ *è( +s1 +))[3] \ + +885 - +__s2 +[3]); \ + +888 +__»suÉ +; })) + + ) + +890 + #__¡rcmp_gc +( +s1 +, +s2 +, +l2 +è(- + `__¡rcmp_cg + (s2, s1,2)) + + ) + +895 #iâdeà +_HAVE_STRING_ARCH_¡ºcmp + + +896 + #¡ºcmp +( +s1 +, +s2 +, +n +) \ + +897 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +n +) \ + +898 && (( + `__but_cÚ¡ªt_p + ( +s1 +) \ + +899 && + `¡¾ + ( +s1 +è< (( +size_t +è( +n +))) \ + +900 || ( + `__but_cÚ¡ªt_p + ( +s2 +) \ + +901 && + `¡¾ + ( +s2 +è< (( +size_t +è( +n +)))) \ + +902 ? + `¡rcmp + ( +s1 +, +s2 +è: + `¡ºcmp + (s1, s2, +n +))) + + ) + +908 #ià! +defed + +_HAVE_STRING_ARCH_¡rc¥n + || defed +_FORCE_INLINES + + +909 #iâdeà +_HAVE_STRING_ARCH_¡rc¥n + + +910 #ià +__GNUC_PREREQ + (3, 2) + +911 + #¡rc¥n +( +s +, +»jeù +) \ + +912 +__exnsiÚ__ + \ + +913 ({ +__r0 +, +__r1 +, +__r2 +; \ + +914 ( + `__but_cÚ¡ªt_p + ( +»jeù +è&& + `__¡rg2_1b±r_p + (reject) \ + +915 ? (( + `__but_cÚ¡ªt_p + ( +s +è&& + `__¡rg2_1b±r_p + (s)) \ + +916 ? + `__but_¡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 : + `__but_¡rc¥n + ( +s +, +»jeù +)))))) \ + +926 : + `__but_¡rc¥n + ( +s +, +»jeù +)); }) + + ) + +928 + #¡rc¥n +( +s +, +»jeù +) \ + +929 +__exnsiÚ__ + \ + +930 ({ +__r0 +, +__r1 +, +__r2 +; \ + +931 ( + `__but_cÚ¡ªt_p + ( +»jeù +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡r¥n + || defed +_FORCE_INLINES + + +985 #iâdeà +_HAVE_STRING_ARCH_¡r¥n + + +986 #ià +__GNUC_PREREQ + (3, 2) + +987 + #¡r¥n +( +s +, +acû± +) \ + +988 +__exnsiÚ__ + \ + +989 ({ +__a0 +, +__a1 +, +__a2 +; \ + +990 ( + `__but_cÚ¡ªt_p + ( +acû± +è&& + `__¡rg2_1b±r_p + (accept) \ + +991 ? (( + `__but_cÚ¡ªt_p + ( +s +è&& + `__¡rg2_1b±r_p + (s)) \ + +992 ? + `__but_¡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 : + `__but_¡r¥n + ( +s +, +acû± +)))))) \ + +1002 : + `__but_¡r¥n + ( +s +, +acû± +)); }) + + ) + +1004 + #¡r¥n +( +s +, +acû± +) \ + +1005 +__exnsiÚ__ + \ + +1006 ({ +__a0 +, +__a1 +, +__a2 +; \ + +1007 ( + `__but_cÚ¡ªt_p + ( +acû± +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡½brk + || defed +_FORCE_INLINES + + +1061 #iâdeà +_HAVE_STRING_ARCH_¡½brk + + +1062 #ià +__GNUC_PREREQ + (3, 2) + +1063 + #¡½brk +( +s +, +acû± +) \ + +1064 +__exnsiÚ__ + \ + +1065 ({ +__a0 +, +__a1 +, +__a2 +; \ + +1066 ( + `__but_cÚ¡ªt_p + ( +acû± +è&& + `__¡rg2_1b±r_p + (accept) \ + +1067 ? (( + `__but_cÚ¡ªt_p + ( +s +è&& + `__¡rg2_1b±r_p + (s)) \ + +1068 ? + `__but_¡½brk + ( +s +, +acû± +) \ + +1069 : (( +__a0 + = ((cÚ¡ *è( +acû± +))[0], __a0 == '\0') \ + +1070 ? ((è( +s +), (*è +NULL +) \ + +1071 : (( +__a1 + = ((cÚ¡ *è( +acû± +))[1], __a1 == '\0') \ + +1072 ? + `__but_¡rchr + ( +s +, +__a0 +) \ + +1073 : (( +__a2 + = ((cÚ¡ *è( +acû± +))[2], __a2 == '\0') \ + +1074 ? + `__¡½brk_c2 + ( +s +, +__a0 +, +__a1 +) \ + +1075 : (((cÚ¡ *è( +acû± +))[3] == '\0' \ + +1076 ? + `__¡½brk_c3 + ( +s +, +__a0 +, +__a1 +, +__a2 +) \ + +1077 : + `__but_¡½brk + ( +s +, +acû± +)))))) \ + +1078 : + `__but_¡½brk + ( +s +, +acû± +)); }) + + ) + +1080 + #¡½brk +( +s +, +acû± +) \ + +1081 +__exnsiÚ__ + \ + +1082 ({ +__a0 +, +__a1 +, +__a2 +; \ + +1083 ( + `__but_cÚ¡ªt_p + ( +acû± +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡r¡r + && ! +__GNUC_PREREQ + (2, 97) + +1125 + #¡r¡r +( +hay¡ack +, +ÃedË +) \ + +1126 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +ÃedË +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡¹ok_r + || defed +_FORCE_INLINES + + +1138 #iâdeà +_HAVE_STRING_ARCH_¡¹ok_r + + +1139 + #__¡¹ok_r +( +s +, +£p +, +Ãx +) \ + +1140 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +£p +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡r£p + || defed +_FORCE_INLINES + + +1177 #iâdeà +_HAVE_STRING_ARCH_¡r£p + + +1179 * +__¡r£p_g + (** +__¡rgp +, cÚ¡ * +__dim +); + +1180 + #__¡r£p +( +s +, +»jeù +) \ + +1181 +__exnsiÚ__ + \ + +1182 ({ +__r0 +, +__r1 +, +__r2 +; \ + +1183 ( + `__but_cÚ¡ªt_p + ( +»jeù +è&& + `__¡rg2_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à! +defed + +_HAVE_STRING_ARCH_¡rdup + || !defed +_HAVE_STRING_ARCH_¡ºdup + + +1272 + #__Ãed_m®loc_ªd_ÿÎoc + + + ) + +1273 + ~<¡dlib.h +> + +1276 #iâdeà +_HAVE_STRING_ARCH_¡rdup + + +1278 * + $__¡rdup + (cÚ¡ * +__¡rg +è +__THROW + +__©ibu_m®loc__ +; + +1279 + #__¡rdup +( +s +) \ + +1280 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +s +è&& + `__¡rg2_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à +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K8 + + +1291 + #¡rdup +( +s +è + `__¡rdup + (s) + + ) + +1295 #iâdeà +_HAVE_STRING_ARCH_¡ºdup + + +1297 * + $__¡ºdup + (cÚ¡ * +__¡rg +, +size_t + +__n +) + +1298 +__THROW + +__©ibu_m®loc__ +; + +1299 + #__¡ºdup +( +s +, +n +) \ + +1300 ( + `__exnsiÚ__ + ( + `__but_cÚ¡ªt_p + ( +s +è&& + `__¡rg2_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_zo_Ë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à +bzo + + +49 +__fÜtify_funùiÚ + * + +50 +__NTH + ( + $memýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +, + +51 +size_t + +__Ën +)) + +53 + `__but___memýy_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +54 + } +} + +56 +__fÜtify_funùiÚ + * + +57 +__NTH + ( + $memmove + (* +__de¡ +, cÚ¡ * +__¤c +, +size_t + +__Ën +)) + +59 + `__but___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 + `__but___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à( + `__but_cÚ¡ªt_p + ( +__Ën +) && __len == 0 + +84 && (! + `__but_cÚ¡ªt_p + ( +__ch +) || __ch != 0)) + +86 + `__w¬n_mem£t_zo_Ën + (); + +87 +__de¡ +; + +90 + `__but___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 (è + `__but___memmove_chk + ( +__de¡ +, +__¤c +, +__Ën +, + `__bos0 + (__dest)); + +98 + } +} + +100 +__fÜtify_funùiÚ + + +101 +__NTH + ( + $bzo + (* +__de¡ +, +size_t + +__Ën +)) + +103 (è + `__but___mem£t_chk + ( +__de¡ +, '\0', +__Ën +, + `__bos0 + (__dest)); + +104 + } +} + +107 +__fÜtify_funùiÚ + * + +108 +__NTH + ( + $¡rýy + (* +__»¡riù + +__de¡ +, cÚ¡ *__»¡riù +__¤c +)) + +110 + `__but___¡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 + `__but___¡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 + `__but___¡ºý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 && (! + `__but_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 + `__but___¡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 + `__but___¡ºÿ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à +defed + +__Ãed_timev® + || defed +__USE_GNU + + +24 #iâdeà +_STRUCT_TIMEVAL + + +25 + #_STRUCT_TIMEVAL + 1 + + ) + +26 + ~<bs/ty³s.h +> + +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à(! +defed + +__STRICT_ANSI__ + || defed +__USE_POSIX +) \ + +51 && ! +defed + + g__USE_XOPEN2K + + +54 + ~<bs/ty³s.h +> + +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 + ~<bs/timex.h +> + +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 + ~<bs/wÜdsize.h +> + +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__ut8_t +; + +38 sigÃd + t__t16_t +; + +39 + t__ut16_t +; + +40 sigÃd + t__t32_t +; + +41 + t__ut32_t +; + +42 #ià +__WORDSIZE + == 64 + +43 sigÃd + t__t64_t +; + +44 + t__ut64_t +; + +46 +__exnsiÚ__ + sigÃd + t__t64_t +; + +47 +__exnsiÚ__ + + t__ut64_t +; + +51 #ià +__WORDSIZE + == 64 + +52 + t__quad_t +; + +53 + t__u_quad_t +; + +55 +__exnsiÚ__ + + t__quad_t +; + +56 +__exnsiÚ__ + + t__u_quad_t +; + +89 + #__S16_TYPE + + + ) + +90 + #__U16_TYPE + + + ) + +91 + #__S32_TYPE + + + ) + +92 + #__U32_TYPE + + + ) + +93 + #__SLONGWORD_TYPE + + + ) + +94 + #__ULONGWORD_TYPE + + + ) + +95 #ià +__WORDSIZE + == 32 + +96 + #__SQUAD_TYPE + +__quad_t + + + ) + +97 + #__UQUAD_TYPE + +__u_quad_t + + + ) + +98 + #__SWORD_TYPE + + + ) + +99 + #__UWORD_TYPE + + + ) + +100 + #__SLONG32_TYPE + + + ) + +101 + #__ULONG32_TYPE + + + ) + +102 + #__S64_TYPE + +__quad_t + + + ) + +103 + #__U64_TYPE + +__u_quad_t + + + ) + +106 + #__STD_TYPE + +__exnsiÚ__ + + + ) + +107 #ià +__WORDSIZE + == 64 + +108 + t__SQUAD_TYPE + + + ) + +109 + t__UQUAD_TYPE + + + ) + +110 + t__SWORD_TYPE + + + ) + +111 + t__UWORD_TYPE + + + ) + +112 + t__SLONG32_TYPE + + + ) + +113 + t__ULONG32_TYPE + + + ) + +114 + t__S64_TYPE + + + ) + +115 + t__U64_TYPE + + + ) + +117 + t__STD_TYPE + + + ) + +121 + ~<bs/ty³sizes.h +> + +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 + +__nbys +, + +24 +size_t + +__buæ +è +__wur +; + +25 +ssize_t + + `__REDIRECT + ( +__»ad_®s +, ( +__fd +, * +__buf +, + +26 +size_t + +__nbys +), +»ad +è +__wur +; + +27 +ssize_t + + `__REDIRECT + ( +__»ad_chk_w¬n +, + +28 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +29 +size_t + +__buæ +), +__»ad_chk +) + +30 +__wur + + `__w¬Çr + ("read called with biggerengthhan size of " + +33 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +34 + $»ad + ( +__fd +, * +__buf +, +size_t + +__nbys +) + +36 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +38 ià(! + `__but_cÚ¡ªt_p + ( +__nbys +)) + +39 + `__»ad_chk + ( +__fd +, +__buf +, +__nbys +, + `__bos0 + (__buf)); + +41 ià( +__nbys + > + `__bos0 + ( +__buf +)) + +42 + `__»ad_chk_w¬n + ( +__fd +, +__buf +, +__nbys +, + `__bos0 + (__buf)); + +44 + `__»ad_®s + ( +__fd +, +__buf +, +__nbys +); + +45 + } +} + +47 #ifdeà +__USE_UNIX98 + + +48 +ssize_t + + $__´d_chk + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +49 +__off_t + +__off£t +, +size_t + +__bufsize +è +__wur +; + +50 +ssize_t + + $__´d64_chk + ( +__fd +, * +__buf +, +size_t + +__nbys +, + +51 +__off64_t + +__off£t +, +size_t + +__bufsize +è +__wur +; + +52 +ssize_t + + `__REDIRECT + ( +__´d_®s +, + +53 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +54 +__off_t + +__off£t +), +´d +è +__wur +; + +55 +ssize_t + + `__REDIRECT + ( +__´d64_®s +, + +56 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +57 +__off64_t + +__off£t +), +´d64 +è +__wur +; + +58 +ssize_t + + `__REDIRECT + ( +__´d_chk_w¬n +, + +59 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +60 +__off_t + +__off£t +, +size_t + +__bufsize +), +__´d_chk +) + +61 +__wur + + `__w¬Çr + ("pread called with biggerengthhan size of " + +63 +ssize_t + + `__REDIRECT + ( +__´d64_chk_w¬n +, + +64 ( +__fd +, * +__buf +, +size_t + +__nbys +, + +65 +__off64_t + +__off£t +, +size_t + +__bufsize +), + +66 +__´d64_chk +) + +67 +__wur + + `__w¬Çr + ("pread64 called with biggerengthhan size of " + +70 #iâdeà +__USE_FILE_OFFSET64 + + +71 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +72 + $´d + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off_t + +__off£t +) + +74 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +76 ià(! + `__but_cÚ¡ªt_p + ( +__nbys +)) + +77 + `__´d_chk + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + `__bos0 + (__buf)); + +79 iàÐ +__nbys + > + `__bos0 + ( +__buf +)) + +80 + `__´d_chk_w¬n + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + +81 + `__bos0 + ( +__buf +)); + +83 + `__´d_®s + ( +__fd +, +__buf +, +__nbys +, +__off£t +); + +84 + } +} + +86 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +87 + $´d + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off64_t + +__off£t +) + +89 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +91 ià(! + `__but_cÚ¡ªt_p + ( +__nbys +)) + +92 + `__´d64_chk + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + `__bos0 + (__buf)); + +94 iàÐ +__nbys + > + `__bos0 + ( +__buf +)) + +95 + `__´d64_chk_w¬n + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + +96 + `__bos0 + ( +__buf +)); + +99 + `__´d64_®s + ( +__fd +, +__buf +, +__nbys +, +__off£t +); + +100 + } +} + +103 #ifdeà +__USE_LARGEFILE64 + + +104 +__fÜtify_funùiÚ + +__wur + +ssize_t + + +105 + $´d64 + ( +__fd +, * +__buf +, +size_t + +__nbys +, +__off64_t + +__off£t +) + +107 ià( + `__bos0 + ( +__buf +è!ð( +size_t +) -1) + +109 ià(! + `__but_cÚ¡ªt_p + ( +__nbys +)) + +110 + `__´d64_chk + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + `__bos0 + (__buf)); + +112 iàÐ +__nbys + > + `__bos0 + ( +__buf +)) + +113 + `__´d64_chk_w¬n + ( +__fd +, +__buf +, +__nbys +, +__off£t +, + +114 + `__bos0 + ( +__buf +)); + +117 + `__´d64_®s + ( +__fd +, +__buf +, +__nbys +, +__off£t +); + +118 + } +} + +122 #ià +defed + +__USE_XOPEN_EXTENDED + || defed +__USE_XOPEN2K + + +123 +ssize_t + + $__»adlk_chk + (cÚ¡ * +__»¡riù + +__·th +, + +124 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +125 +size_t + +__buæ +) + +126 +__THROW + + `__nÚnuÎ + ((1, 2)è +__wur +; + +127 +ssize_t + + `__REDIRECT_NTH + ( +__»adlk_®s +, + +128 (cÚ¡ * +__»¡riù + +__·th +, + +129 * +__»¡riù + +__buf +, +size_t + +__Ën +), +»adlk +) + +130 + `__nÚnuÎ + ((1, 2)è +__wur +; + +131 +ssize_t + + `__REDIRECT_NTH + ( +__»adlk_chk_w¬n +, + +132 (cÚ¡ * +__»¡riù + +__·th +, + +133 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +134 +size_t + +__buæ +), +__»adlk_chk +) + +135 + `__nÚnuÎ + ((1, 2)è +__wur + + `__w¬Çr + ("readlink called with biggerength " + +138 +__fÜtify_funùiÚ + + `__nÚnuÎ + ((1, 2)è +__wur + +ssize_t + + +139 + `__NTH + ( + $»adlk + (cÚ¡ * +__»¡riù + +__·th +, *__»¡riù +__buf +, + +140 +size_t + +__Ën +)) + +142 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +144 ià(! + `__but_cÚ¡ªt_p + ( +__Ën +)) + +145 + `__»adlk_chk + ( +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +147 iàÐ +__Ën + > + `__bos + ( +__buf +)) + +148 + `__»adlk_chk_w¬n + ( +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +150 + `__»adlk_®s + ( +__·th +, +__buf +, +__Ën +); + +151 + } +} + +154 #ifdeà +__USE_ATFILE + + +155 +ssize_t + + $__»adlk©_chk + ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +156 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +157 +size_t + +__buæ +) + +158 +__THROW + + `__nÚnuÎ + ((2, 3)è +__wur +; + +159 +ssize_t + + `__REDIRECT_NTH + ( +__»adlk©_®s +, + +160 ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +161 * +__»¡riù + +__buf +, +size_t + +__Ën +), + +162 +»adlk© +) + +163 + `__nÚnuÎ + ((2, 3)è +__wur +; + +164 +ssize_t + + `__REDIRECT_NTH + ( +__»adlk©_chk_w¬n +, + +165 ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +166 * +__»¡riù + +__buf +, +size_t + +__Ën +, + +167 +size_t + +__buæ +), +__»adlk©_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 + ( + $»adlk© + ( +__fd +, cÚ¡ * +__»¡riù + +__·th +, + +174 * +__»¡riù + +__buf +, +size_t + +__Ën +)) + +176 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +178 ià(! + `__but_cÚ¡ªt_p + ( +__Ën +)) + +179 + `__»adlk©_chk + ( +__fd +, +__·th +, +__buf +, +__Ën +, + `__bos + (__buf)); + +181 ià( +__Ën + > + `__bos + ( +__buf +)) + +182 + `__»adlk©_chk_w¬n + ( +__fd +, +__·th +, +__buf +, +__Ën +, + +183 + `__bos + ( +__buf +)); + +185 + `__»adlk©_®s + ( +__fd +, +__·th +, +__buf +, +__Ën +); + +186 + } +} + +189 * + $__gcwd_chk + (* +__buf +, +size_t + +__size +, size_ +__buæ +) + +190 +__THROW + +__wur +; + +191 * + `__REDIRECT_NTH + ( +__gcwd_®s +, + +192 (* +__buf +, +size_t + +__size +), +gcwd +è +__wur +; + +193 * + `__REDIRECT_NTH + ( +__gcwd_chk_w¬n +, + +194 (* +__buf +, +size_t + +__size +, size_ +__buæ +), + +195 +__gcwd_chk +) + +196 +__wur + + `__w¬Çr + ("getcwd caller with biggerengthhan size of " + +199 +__fÜtify_funùiÚ + +__wur + * + +200 + `__NTH + ( + $gcwd + (* +__buf +, +size_t + +__size +)) + +202 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +204 ià(! + `__but_cÚ¡ªt_p + ( +__size +)) + +205 + `__gcwd_chk + ( +__buf +, +__size +, + `__bos + (__buf)); + +207 ià( +__size + > + `__bos + ( +__buf +)) + +208 + `__gcwd_chk_w¬n + ( +__buf +, +__size +, + `__bos + (__buf)); + +210 + `__gcwd_®s + ( +__buf +, +__size +); + +211 + } +} + +213 #ià +defed + +__USE_MISC + || defed +__USE_XOPEN_EXTENDED + + +214 * + $__gwd_chk + (* +__buf +, +size_t + +buæ +) + +215 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +216 * + `__REDIRECT_NTH + ( +__gwd_w¬n +, (* +__buf +), +gwd +) + +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 + ( + $gwd + (* +__buf +)) + +223 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +224 + `__gwd_chk + ( +__buf +, + `__bos + (__buf)); + +225 + `__gwd_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 biggerengthhan 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à(! + `__but_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 + $__ggroups_chk + ( +__size +, +__gid_t + +__li¡ +[], +size_t + +__li¡Ën +) + +255 +__THROW + +__wur +; + +256 + `__REDIRECT_NTH + ( +__ggroups_®s +, ( +__size +, +__gid_t + +__li¡ +[]), + +257 +ggroups +è +__wur +; + +258 + `__REDIRECT_NTH + ( +__ggroups_chk_w¬n +, + +259 ( +__size +, +__gid_t + +__li¡ +[], +size_t + +__li¡Ën +), + +260 +__ggroups_chk +) + +261 +__wur + + `__w¬Çr + ("getgroups called with bigger group counthan what " + +264 +__fÜtify_funùiÚ + + +265 + `__NTH + ( + $ggroups + ( +__size +, +__gid_t + +__li¡ +[])) + +267 ià( + `__bos + ( +__li¡ +è!ð( +size_t +) -1) + +269 ià(! + `__but_cÚ¡ªt_p + ( +__size +) || __size < 0) + +270 + `__ggroups_chk + ( +__size +, +__li¡ +, + `__bos + (__list)); + +272 ià( +__size + * ( +__gid_t +è> + `__bos + ( +__li¡ +)) + +273 + `__ggroups_chk_w¬n + ( +__size +, +__li¡ +, + `__bos + (__list)); + +275 + `__ggroups_®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 buflenhan " + +290 +__fÜtify_funùiÚ + + +291 + `__NTH + ( + $yÇme_r + ( +__fd +, * +__buf +, +size_t + +__buæ +)) + +293 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +295 ià(! + `__but_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à +defed + +__USE_REENTRANT + || defed +__USE_POSIX199506 + + +306 + $__glog_r_chk + (* +__buf +, +size_t + +__buæ +, size_ +__Äl +) + +307 + `__nÚnuÎ + ((1)); + +308 + `__REDIRECT + ( +__glog_r_®s +, (* +__buf +, +size_t + +__buæ +), + +309 +glog_r +è + `__nÚnuÎ + ((1)); + +310 + `__REDIRECT + ( +__glog_r_chk_w¬n +, + +311 (* +__buf +, +size_t + +__buæ +, size_ +__Äl +), + +312 +__glog_r_chk +) + +313 + `__nÚnuÎ + ((1)è + `__w¬Çr + ("getlogin_r called with bigger buflenhan " + +316 +__fÜtify_funùiÚ + + +317 + $glog_r + (* +__buf +, +size_t + +__buæ +) + +319 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +321 ià(! + `__but_cÚ¡ªt_p + ( +__buæ +)) + +322 + `__glog_r_chk + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +324 ià( +__buæ + > + `__bos + ( +__buf +)) + +325 + `__glog_r_chk_w¬n + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +327 + `__glog_r_®s + ( +__buf +, +__buæ +); + +328 + } +} + +332 #ià +defed + +__USE_MISC + || defed +__USE_UNIX98 + + +333 + $__gho¡Çme_chk + (* +__buf +, +size_t + +__buæ +, size_ +__Äl +) + +334 +__THROW + + `__nÚnuÎ + ((1)); + +335 + `__REDIRECT_NTH + ( +__gho¡Çme_®s +, (* +__buf +, +size_t + +__buæ +), + +336 +gho¡Çme +è + `__nÚnuÎ + ((1)); + +337 + `__REDIRECT_NTH + ( +__gho¡Çme_chk_w¬n +, + +338 (* +__buf +, +size_t + +__buæ +, size_ +__Äl +), + +339 +__gho¡Çme_chk +) + +340 + `__nÚnuÎ + ((1)è + `__w¬Çr + ("gethostname called with bigger buflenhan " + +343 +__fÜtify_funùiÚ + + +344 + `__NTH + ( + $gho¡Çme + (* +__buf +, +size_t + +__buæ +)) + +346 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +348 ià(! + `__but_cÚ¡ªt_p + ( +__buæ +)) + +349 + `__gho¡Çme_chk + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +351 ià( +__buæ + > + `__bos + ( +__buf +)) + +352 + `__gho¡Çme_chk_w¬n + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +354 + `__gho¡Çme_®s + ( +__buf +, +__buæ +); + +355 + } +} + +359 #ià +defed + +__USE_MISC + || (defed +__USE_XOPEN + && !defed +__USE_UNIX98 +) + +360 + $__gdomaÇme_chk + (* +__buf +, +size_t + +__buæ +, size_ +__Äl +) + +361 +__THROW + + `__nÚnuÎ + ((1)è +__wur +; + +362 + `__REDIRECT_NTH + ( +__gdomaÇme_®s +, (* +__buf +, + +363 +size_t + +__buæ +), + +364 +gdomaÇme +è + `__nÚnuÎ + ((1)è +__wur +; + +365 + `__REDIRECT_NTH + ( +__gdomaÇme_chk_w¬n +, + +366 (* +__buf +, +size_t + +__buæ +, size_ +__Äl +), + +367 +__gdomaÇme_chk +) + +368 + `__nÚnuÎ + ((1)è +__wur + + `__w¬Çr + ("getdomainname called with bigger " + +372 +__fÜtify_funùiÚ + + +373 + `__NTH + ( + $gdomaÇme + (* +__buf +, +size_t + +__buæ +)) + +375 ià( + `__bos + ( +__buf +è!ð( +size_t +) -1) + +377 ià(! + `__but_cÚ¡ªt_p + ( +__buæ +)) + +378 + `__gdomaÇme_chk + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +380 ià( +__buæ + > + `__bos + ( +__buf +)) + +381 + `__gdomaÇme_chk_w¬n + ( +__buf +, +__buæ +, + `__bos + (__buf)); + +383 + `__gdomaÇme_®s + ( +__buf +, +__buæ +); + +384 + } +} + + @/usr/include/bits/waitflags.h + +19 #ià! +defed + +_SYS_WAIT_H + && !defed +_STDLIB_H + + +25 + #WNOHANG + 1 + + ) + +26 + #WUNTRACED + 2 + + ) + +29 + #WSTOPPED + 2 + + ) + +30 + #WEXITED + 4 + + ) + +31 + #WCONTINUED + 8 + + ) + +32 + #WNOWAIT + 0x01000000 + + ) + +34 + #__WNOTHREAD + 0x20000000 + + ) + +36 + #__WALL + 0x40000000 + + ) + +37 + #__WCLONE + 0x80000000 + + ) + +40 #ià +defed + +__USE_XOPEN + || defed +__USE_XOPEN2K8 + + +41 #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à! +defed + +_SYS_WAIT_H + && !defed +_STDLIB_H + + +28 + #__WEXITSTATUS +( +¡©us +è(((¡©usè& 0xff00è>> 8) + + ) + +31 + #__WTERMSIG +( +¡©us +è((¡©usè& 0x7f) + + ) + +34 + #__WSTOPSIG +( +¡©us +è + `__WEXITSTATUS +(¡©us) + + ) + +37 + #__WIFEXITED +( +¡©us +è( + `__WTERMSIG +(¡©usè=ð0) + + ) + +40 + #__WIFSIGNALED +( +¡©us +) \ + +41 (((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 + ~<dn.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à +defed + +__x86_64__ + && !defed +__ILP32__ + + +4 + #__WORDSIZE + 64 + + ) + +6 + #__WORDSIZE + 32 + + ) + +9 #ifdeà +__x86_64__ + + +10 + #__WORDSIZE_TIME64_COMPAT32 + 1 + + ) + +12 + #__SYSCALL_WORDSIZE + 64 + + ) + + @/usr/include/endian.h + +18 #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 + ~<bs/dn.h +> + +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à +defed + +__USE_MISC + && !defed +__ASSEMBLER__ + + +60 + ~<bs/bysw.h +> + +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à +defed + +__GNUC__ + && defed +__GNUC_MINOR__ + + +136 + #__GNUC_PREREQ +( +maj +, +m +) \ + +137 (( +__GNUC__ + << 16è+ +__GNUC_MINOR__ + >ð(( +maj +è<< 16è+ ( +m +)) + + ) + +139 + #__GNUC_PREREQ +( +maj +, +m +è0 + + ) + +146 #ià( +defed + +_BSD_SOURCE + || defed +_SVID_SOURCE +) \ + +147 && ! +defed + + g_DEFAULT_SOURCE + + +152 #undeà +_DEFAULT_SOURCE + + +153 + #_DEFAULT_SOURCE + 1 + + ) + +157 #ifdeà +_GNU_SOURCE + + +158 #undeà +_ISOC95_SOURCE + + +159 + #_ISOC95_SOURCE + 1 + + ) + +160 #undeà +_ISOC99_SOURCE + + +161 + #_ISOC99_SOURCE + 1 + + ) + +162 #undeà +_ISOC11_SOURCE + + +163 + #_ISOC11_SOURCE + 1 + + ) + +164 #undeà +_POSIX_SOURCE + + +165 + #_POSIX_SOURCE + 1 + + ) + +166 #undeà +_POSIX_C_SOURCE + + +167 + #_POSIX_C_SOURCE + 200809L + + ) + +168 #undeà +_XOPEN_SOURCE + + +169 + #_XOPEN_SOURCE + 700 + + ) + +170 #undeà +_XOPEN_SOURCE_EXTENDED + + +171 + #_XOPEN_SOURCE_EXTENDED + 1 + + ) + +172 #undeà +_LARGEFILE64_SOURCE + + +173 + #_LARGEFILE64_SOURCE + 1 + + ) + +174 #undeà +_DEFAULT_SOURCE + + +175 + #_DEFAULT_SOURCE + 1 + + ) + +176 #undeà +_ATFILE_SOURCE + + +177 + #_ATFILE_SOURCE + 1 + + ) + +182 #ià( +defed + +_DEFAULT_SOURCE + \ + +183 || (! +defed + + g__STRICT_ANSI__ + \ + +184 && ! +defed + + g_ISOC99_SOURCE + \ + +185 && ! +defed + + g_POSIX_SOURCE + && !defed + g_POSIX_C_SOURCE + \ + +186 && ! +defed + + g_XOPEN_SOURCE +)) + +187 #undeà +_DEFAULT_SOURCE + + +188 + #_DEFAULT_SOURCE + 1 + + ) + +192 #ià( +defed + +_ISOC11_SOURCE + \ + +193 || ( +defed + + g__STDC_VERSION__ + && __STDC_VERSION__ >= 201112L)) + +194 + #__USE_ISOC11 + 1 + + ) + +198 #ià( +defed + +_ISOC99_SOURCE + || defed +_ISOC11_SOURCE + \ + +199 || ( +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L)) + +200 + #__USE_ISOC99 + 1 + + ) + +204 #ià( +defed + +_ISOC99_SOURCE + || defed +_ISOC11_SOURCE + \ + +205 || ( +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199409L)) + +206 + #__USE_ISOC95 + 1 + + ) + +213 #ià(( +defed + +__ýlu¥lus + && __cplusplus >= 201103L) \ + +214 || +defed + +__GXX_EXPERIMENTAL_CXX0X__ +) + +215 + #__USE_ISOCXX11 + 1 + + ) + +221 #ifdeà +_DEFAULT_SOURCE + + +222 #ià! +defed + +_POSIX_SOURCE + && !defed +_POSIX_C_SOURCE + + +223 + #__USE_POSIX_IMPLICITLY + 1 + + ) + +225 #undeà +_POSIX_SOURCE + + +226 + #_POSIX_SOURCE + 1 + + ) + +227 #undeà +_POSIX_C_SOURCE + + +228 + #_POSIX_C_SOURCE + 200809L + + ) + +230 #ià((! +defed + +__STRICT_ANSI__ + \ + +231 || ( +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) >= 500)) \ + +232 && ! +defed + +_POSIX_SOURCE + && !defed +_POSIX_C_SOURCE +) + +233 + #_POSIX_SOURCE + 1 + + ) + +234 #ià +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 500 + +235 + #_POSIX_C_SOURCE + 2 + + ) + +236 #ià +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 600 + +237 + #_POSIX_C_SOURCE + 199506L + + ) + +238 #ià +defed + +_XOPEN_SOURCE + && (_XOPEN_SOURCE - 0) < 700 + +239 + #_POSIX_C_SOURCE + 200112L + + ) + +241 + #_POSIX_C_SOURCE + 200809L + + ) + +243 + #__USE_POSIX_IMPLICITLY + 1 + + ) + +246 #ià( +defed + +_POSIX_SOURCE + \ + +247 || ( +defed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >= 1) \ + +248 || +defed + +_XOPEN_SOURCE +) + +249 + #__USE_POSIX + 1 + + ) + +252 #ià +defed + +_POSIX_C_SOURCE + && _POSIX_C_SOURCE >ð2 || defed +_XOPEN_SOURCE + + +253 + #__USE_POSIX2 + 1 + + ) + +256 #ià +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199309L + +257 + #__USE_POSIX199309 + 1 + + ) + +260 #ià +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 199506L + +261 + #__USE_POSIX199506 + 1 + + ) + +264 #ià +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 200112L + +265 + #__USE_XOPEN2K + 1 + + ) + +266 #undeà +__USE_ISOC95 + + +267 + #__USE_ISOC95 + 1 + + ) + +268 #undeà +__USE_ISOC99 + + +269 + #__USE_ISOC99 + 1 + + ) + +272 #ià +defed + +_POSIX_C_SOURCE + && (_POSIX_C_SOURCE - 0) >= 200809L + +273 + #__USE_XOPEN2K8 + 1 + + ) + +274 #undeà +_ATFILE_SOURCE + + +275 + #_ATFILE_SOURCE + 1 + + ) + +278 #ifdef +_XOPEN_SOURCE + + +279 + #__USE_XOPEN + 1 + + ) + +280 #ià( +_XOPEN_SOURCE + - 0) >= 500 + +281 + #__USE_XOPEN_EXTENDED + 1 + + ) + +282 + #__USE_UNIX98 + 1 + + ) + +283 #undeà +_LARGEFILE_SOURCE + + +284 + #_LARGEFILE_SOURCE + 1 + + ) + +285 #ià( +_XOPEN_SOURCE + - 0) >= 600 + +286 #ià( +_XOPEN_SOURCE + - 0) >= 700 + +287 + #__USE_XOPEN2K8 + 1 + + ) + +288 + #__USE_XOPEN2K8XSI + 1 + + ) + +290 + #__USE_XOPEN2K + 1 + + ) + +291 + #__USE_XOPEN2KXSI + 1 + + ) + +292 #undeà +__USE_ISOC95 + + +293 + #__USE_ISOC95 + 1 + + ) + +294 #undeà +__USE_ISOC99 + + +295 + #__USE_ISOC99 + 1 + + ) + +298 #ifdeà +_XOPEN_SOURCE_EXTENDED + + +299 + #__USE_XOPEN_EXTENDED + 1 + + ) + +304 #ifdeà +_LARGEFILE_SOURCE + + +305 + #__USE_LARGEFILE + 1 + + ) + +308 #ifdeà +_LARGEFILE64_SOURCE + + +309 + #__USE_LARGEFILE64 + 1 + + ) + +312 #ià +defed + +_FILE_OFFSET_BITS + && _FILE_OFFSET_BITS == 64 + +313 + #__USE_FILE_OFFSET64 + 1 + + ) + +316 #ià +defed + +_DEFAULT_SOURCE + + +317 + #__USE_MISC + 1 + + ) + +320 #ifdef +_ATFILE_SOURCE + + +321 + #__USE_ATFILE + 1 + + ) + +324 #ifdef +_GNU_SOURCE + + +325 + #__USE_GNU + 1 + + ) + +328 #ià +defed + +_REENTRANT + || defed +_THREAD_SAFE + + +329 + #__USE_REENTRANT + 1 + + ) + +332 #ià +defed + +_FORTIFY_SOURCE + && _FORTIFY_SOURCE > 0 \ + +333 && +__GNUC_PREREQ + (4, 1è&& +defed + + g__OPTIMIZE__ + && __OPTIMIZE__ > 0 + +334 #ià +_FORTIFY_SOURCE + > 1 + +335 + #__USE_FORTIFY_LEVEL + 2 + + ) + +337 + #__USE_FORTIFY_LEVEL + 1 + + ) + +340 + #__USE_FORTIFY_LEVEL + 0 + + ) + +345 + ~<¡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 + ~<sys/cdefs.h +> + +372 #ià +defed + +__USE_FILE_OFFSET64 + && !defed +__REDIRECT + + +373 + #__USE_LARGEFILE + 1 + + ) + +374 + #__USE_LARGEFILE64 + 1 + + ) + +380 #ià +__GNUC_PREREQ + (2, 7è&& +defed + +__OPTIMIZE__ + \ + +381 && ! +defed + + g__OPTIMIZE_SIZE__ + && !defed + g__NO_INLINE__ + \ + +382 && +defed + + g__exº_le + + +383 + #__USE_EXTERN_INLINES + 1 + + ) + +391 + ~<gnu/¡ubs.h +> + + @/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_wt_t + +wt_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 + ~<sys/cdefs.h +> + +59 + #_IO_UNIFIED_JUMPTABLES + 1 + + ) + +61 #iâdeà +EOF + + +62 + #EOF + (-1) + + ) + +64 #iâdeà +NULL + + +65 #ià +defed + +__GNUG__ + && \ + +66 ( + g__GNUC__ + > 2 || (__GNUC__ =ð2 && +__GNUC_MINOR__ + >= 8)) + +67 + #NULL + ( +__nuÎ +) + + ) + +69 #ià! +defed +( +__ý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 +§vg +(è{ + 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à +defed + +_LIBC + || defed +_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_codg +è( + 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_wre_ba£ +; + +221 +wch¬_t + * + m_IO_wre_±r +; + +222 +wch¬_t + * + m_IO_wre_d +; + +223 +wch¬_t + * + m_IO_buf_ba£ +; + +224 +wch¬_t + * + m_IO_buf_d +; + +226 +wch¬_t + * + m_IO_§ve_ba£ +; + +227 +wch¬_t + * + m_IO_backup_ba£ +; + +229 +wch¬_t + * + m_IO_§ve_d +; + +231 +__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_vbË +; + +241 + s_IO_FILE + { + +242 + m_æags +; + +243 + #_IO_fe_æags + +_æags + + + ) + +247 * + m_IO_»ad_±r +; + +248 * + m_IO_»ad_d +; + +249 * + m_IO_»ad_ba£ +; + +250 * + m_IO_wre_ba£ +; + +251 * + m_IO_wre_±r +; + +252 * + m_IO_wre_d +; + +253 * + m_IO_buf_ba£ +; + +254 * + m_IO_buf_d +; + +256 * + m_IO_§ve_ba£ +; + +257 * + m_IO_backup_ba£ +; + +258 * + m_IO_§ve_d +; + +260 +_IO_m¬k + * + m_m¬ks +; + +262 +_IO_FILE + * + m_cha +; + +264 + m_fo +; + +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_vbË_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_fe +; + +288 #ià +defed + +_G_IO_IO_FILE_VERSION + && _G_IO_IO_FILE_VERSION == 0x20001 + +289 +_IO_off64_t + + m_off£t +; + +290 #ià +defed + +_LIBC + || defed +_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_¡dr_ +; + +318 #iâdeà +_LIBC + + +319 + #_IO_¡d + (( +_IO_FILE +*)(& +_IO_2_1_¡d_ +)) + + ) + +320 + #_IO_¡dout + (( +_IO_FILE +*)(& +_IO_2_1_¡dout_ +)) + + ) + +321 + #_IO_¡dr + (( +_IO_FILE +*)(& +_IO_2_1_¡dr_ +)) + + ) + +323 +_IO_FILE + * +_IO_¡d + +©ibu_hidd +; + +324 +_IO_FILE + * +_IO_¡dout + +©ibu_hidd +; + +325 +_IO_FILE + * +_IO_¡dr + +©ibu_hidd +; + +333 +__ssize_t + + t__io_»ad_â + (* + t__cook +, * + t__buf +, + tsize_t + + t__nbys +); + +341 +__ssize_t + + t__io_wre_â + (* + t__cook +, cÚ¡ * + t__buf +, + +342 + tsize_t + + t__n +); + +350 + t__io_£ek_â + (* + t__cook +, + t_IO_off64_t + * + t__pos +, + t__w +); + +353 + t__io_þo£_â + (* + t__cook +); + +356 #ifdeà +_GNU_SOURCE + + +358 +__io_»ad_â + + tcook_»ad_funùiÚ_t +; + +359 +__io_wre_â + + tcook_wre_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_wre_â + * + mwre +; + +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_fe +; + +376 +_IO_cook_ + ( +_IO_cook_fe + * +__cfe +, +__»ad_wre +, + +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à +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +389 +_IO_wt_t + +__wundæow + ( +_IO_FILE + *); + +390 +_IO_wt_t + +__wuæow + ( +_IO_FILE + *); + +391 +_IO_wt_t + +__wovæow + ( +_IO_FILE + *, _IO_wint_t); + +394 #ià +__GNUC__ + >= 3 + +395 + #_IO_BE +( +ex´ +, +»s +è + `__but_ex³ù + (Óx´),es) + + ) + +397 + #_IO_BE +( +ex´ +, +»s +èÓx´) + + ) + +400 + #_IO_gc_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_wre_±r + >ð(_å)-> +_IO_wre_d +, 0) \ + +409 ? + `__ovæow + ( +_å +, (è( +_ch +)) \ + +410 : (è(*( +_å +)-> +_IO_wre_±r +++ = ( +_ch +))) + + ) + +412 #ià +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +413 + #_IO_gwc_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_wt_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_wre_±r + \ + +421 >ð( +_å +)-> +_wide_d©a +-> +_IO_wre_d +), 0) \ + +422 ? + `__wovæow + ( +_å +, +_wch +) \ + +423 : ( +_IO_wt_t +è(*( +_å +)-> +_wide_d©a +-> +_IO_wre_±r +++ = ( +_wch +))) + + ) + +426 + #_IO_ãof_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_EOF_SEEN +è!ð0) + + ) + +427 + #_IO_ã¼Ü_uÆocked +( +__å +è(((__å)-> +_æags + & +_IO_ERR_SEEN +è!ð0) + + ) + +429 +_IO_gc + ( +_IO_FILE + * +__å +); + +430 +_IO_putc + ( +__c +, +_IO_FILE + * +__å +); + +431 +_IO_ãof + ( +_IO_FILE + * +__å +è +__THROW +; + +432 +_IO_ã¼Ü + ( +_IO_FILE + * +__å +è +__THROW +; + +434 +_IO_³ekc_locked + ( +_IO_FILE + * +__å +); + +437 + #_IO_PENDING_OUTPUT_COUNT +( +_å +) \ + +438 (( +_å +)-> +_IO_wre_±r + - (_å)-> +_IO_wre_ba£ +) + + ) + +440 +_IO_æockfe + ( +_IO_FILE + *è +__THROW +; + +441 +_IO_fuÆockfe + ( +_IO_FILE + *è +__THROW +; + +442 +_IO_árylockfe + ( +_IO_FILE + *è +__THROW +; + +444 #ifdeà +_IO_MTSAFE_IO + + +445 + #_IO_³ekc +( +_å +è + `_IO_³ekc_locked + (_å) + + ) + +446 + #_IO_æockfe +( +_å +) \ + +447 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_æockfe + (_å) + + ) + +448 + #_IO_fuÆockfe +( +_å +) \ + +449 ià((( +_å +)-> +_æags + & +_IO_USER_LOCK +è=ð0è + `_IO_fuÆockfe + (_å) + + ) + +451 + #_IO_³ekc +( +_å +è + `_IO_³ekc_uÆocked + (_å) + + ) + +452 + #_IO_æockfe +( +_å +è + + ) + +453 + #_IO_fuÆockfe +( +_å +è + + ) + +454 + #_IO_árylockfe +( +_å +è + + ) + +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årtf + ( +_IO_FILE + * +__»¡riù +, const *__restrict, + +462 +_IO_va_li¡ +); + +463 +_IO_ssize_t + +_IO_·dn + ( +_IO_FILE + *, , _IO_ssize_t); + +464 +_IO_size_t + +_IO_sgn + ( +_IO_FILE + *, *, _IO_size_t); + +466 +_IO_off64_t + +_IO_£ekoff + ( +_IO_FILE + *, _IO_off64_t, , ); + +467 +_IO_off64_t + +_IO_£ekpos + ( +_IO_FILE + *, _IO_off64_t, ); + +469 +_IO_ä_backup_¬ + ( +_IO_FILE + *è +__THROW +; + +471 #ià +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +472 +_IO_wt_t + +_IO_gwc + ( +_IO_FILE + * +__å +); + +473 +_IO_wt_t + +_IO_putwc + ( +wch¬_t + +__wc +, +_IO_FILE + * +__å +); + +474 +_IO_fwide + ( +_IO_FILE + * +__å +, +__mode +è +__THROW +; + +475 #ià +__GNUC__ + >= 2 + +478 #ià +defed + +_LIBC + && defed +SHARED + + +479 + ~<shlib-com·t.h +> + +480 #ià +SHLIB_COMPAT + ( +libc +, +GLIBC_2_0 +, +GLIBC_2_1 +) + +481 + #_IO_fwide_maybe_com·tibË + \ + +482 ( + `__but_ex³ù + (& +_IO_¡d_u£d + =ð +NULL +, 0)) + + ) + +483 cÚ¡ +_IO_¡d_u£d +; + +484 +wk_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à( + `__but_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 + *, +wt_t +, _IO_ssize_t); + +513 +_IO_ä_wbackup_¬ + ( +_IO_FILE + *è +__THROW +; + +516 #ifdeà +__LDBL_COMPAT + + +517 + ~<bs/libio-ldbl.h +> + +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à! +defed + +__GNUC__ + || __GNUC__ < 2 + +41 #iâdeà +_LIMITS_H + + +42 + #_LIMITS_H + 1 + + ) + +44 + ~<bs/wÜdsize.h +> + +53 + #CHAR_BIT + 8 + + ) + +56 + #SCHAR_MIN + (-128) + + ) + +57 + #SCHAR_MAX + 127 + + ) + +60 + #UCHAR_MAX + 255 + + ) + +63 #ifdeà +__CHAR_UNSIGNED__ + + +64 + #CHAR_MIN + 0 + + ) + +65 + #CHAR_MAX + +UCHAR_MAX + + + ) + +67 + #CHAR_MIN + +SCHAR_MIN + + + ) + +68 + #CHAR_MAX + +SCHAR_MAX + + + ) + +72 + #SHRT_MIN + (-32768) + + ) + +73 + #SHRT_MAX + 32767 + + ) + +76 + #USHRT_MAX + 65535 + + ) + +79 + #INT_MIN + (- +INT_MAX + - 1) + + ) + +80 + #INT_MAX + 2147483647 + + ) + +83 + #UINT_MAX + 4294967295U + + ) + +86 #ià +__WORDSIZE + == 64 + +87 + #LONG_MAX + 9223372036854775807L + + ) + +89 + #LONG_MAX + 2147483647L + + ) + +91 + #LONG_MIN + (- +LONG_MAX + - 1L) + + ) + +94 #ià +__WORDSIZE + == 64 + +95 + #ULONG_MAX + 18446744073709551615UL + + ) + +97 + #ULONG_MAX + 4294967295UL + + ) + +100 #ifdeà +__USE_ISOC99 + + +103 + #LLONG_MAX + 9223372036854775807LL + + ) + +104 + #LLONG_MIN + (- +LLONG_MAX + - 1LL) + + ) + +107 + #ULLONG_MAX + 18446744073709551615ULL + + ) + +121 #ià +defed + +__GNUC__ + && !defed +_GCC_LIMITS_H_ + + +123 #þude_Ãx< +lims +. +h +> + +129 #ià +defed + +__USE_ISOC99 + && defed +__GNUC__ + + +130 #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 + ~<bs/posix1_lim.h +> + +146 #ifdef +__USE_POSIX2 + + +147 + ~<bs/posix2_lim.h +> + +150 #ifdef +__USE_XOPEN + + +151 + ~<bs/xÝ_lim.h +> + + @/usr/include/sys/select.h + +21 #iâdeà +_SYS_SELECT_H + + +22 + #_SYS_SELECT_H + 1 + + ) + +24 + ~<ã©u»s.h +> + +27 + ~<bs/ty³s.h +> + +30 + ~<bs/£Ëù.h +> + +33 + ~<bs/sig£t.h +> + +35 #iâdeà +__sig£t_t_defed + + +36 + #__sig£t_t_defed + + + ) + +37 +__sig£t_t + + tsig£t_t +; + +41 + #__Ãed_time_t + + + ) + +42 + #__Ãed_time¥ec + + + ) + +43 + ~<time.h +> + +44 + #__Ãed_timev® + + + ) + +45 + ~<bs/time.h +> + +47 #iâdeà +__su£cÚds_t_defed + + +48 +__su£cÚds_t + + tsu£cÚds_t +; + +49 + #__su£cÚds_t_defed + + + ) + +54 + t__fd_mask +; + +57 #undeà +__NFDBITS + + +59 + #__NFDBITS + (8 * (è ( +__fd_mask +)) + + ) + +60 + #__FD_ELT +( +d +è((dè/ +__NFDBITS +) + + ) + +61 + #__FD_MASK +( +d +è(( +__fd_mask +è(1UL << ((dè% +__NFDBITS +))) + + ) + +68 #ifdeà +__USE_XOPEN + + +69 +__fd_mask + + mfds_bs +[ +__FD_SETSIZE + / +__NFDBITS +]; + +70 + #__FDS_BITS +( +£t +è((£t)-> +fds_bs +) + + ) + +72 +__fd_mask + + m__fds_bs +[ +__FD_SETSIZE + / +__NFDBITS +]; + +73 + #__FDS_BITS +( +£t +è((£t)-> +__fds_bs +) + + ) + +75 } + tfd_£t +; + +78 + #FD_SETSIZE + +__FD_SETSIZE + + + ) + +80 #ifdeà +__USE_MISC + + +82 +__fd_mask + + tfd_mask +; + +85 + #NFDBITS + +__NFDBITS + + + ) + +90 + #FD_SET +( +fd +, +fd£ +è + `__FD_SET + (fd, fd£) + + ) + +91 + #FD_CLR +( +fd +, +fd£ +è + `__FD_CLR + (fd, fd£) + + ) + +92 + #FD_ISSET +( +fd +, +fd£ +è + `__FD_ISSET + (fd, fd£) + + ) + +93 + #FD_ZERO +( +fd£ +è + `__FD_ZERO + (fd£) + + ) + +96 +__BEGIN_DECLS + + +106 +£Ëù + ( +__nfds +, +fd_£t + * +__»¡riù + +__»adfds +, + +107 +fd_£t + * +__»¡riù + +__wrefds +, + +108 +fd_£t + * +__»¡riù + +__exû±fds +, + +109 +timev® + * +__»¡riù + +__timeout +); + +111 #ifdeà +__USE_XOPEN2K + + +118 +p£Ëù + ( +__nfds +, +fd_£t + * +__»¡riù + +__»adfds +, + +119 +fd_£t + * +__»¡riù + +__wrefds +, + +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 && +defed + +__GNUC__ + + +128 + ~<bs/£Ëù2.h +> + +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 +__exnsiÚ__ + + +27 + $gnu_dev_majÜ + ( +__dev +) + +28 +__THROW + +__©ibu_cÚ¡__ +; + +29 +__exnsiÚ__ + + +30 + $gnu_dev_mÜ + ( +__dev +) + +31 +__THROW + +__©ibu_cÚ¡__ +; + +32 +__exnsiÚ__ + + +33 + $gnu_dev_makedev + ( +__majÜ +, + +34 +__mÜ +) + +35 +__THROW + +__©ibu_cÚ¡__ +; + +37 #ifdeà +__USE_EXTERN_INLINES + + +38 +__exnsiÚ__ + +__exº_le + +__©ibu_cÚ¡__ + + +39 + `__NTH + ( + $gnu_dev_majÜ + ( +__dev +)) + +41 (( +__dev + >> 8) & 0xfff) | (() (__dev >> 32) & ~0xfff); + +42 + } +} + +44 +__exnsiÚ__ + +__exº_le + +__©ibu_cÚ¡__ + + +45 +__NTH + ( + $gnu_dev_mÜ + ( +__dev +)) + +47 ( +__dev + & 0xff) | (() (__dev >> 12) & ~0xff); + +48 + } +} + +50 +__exnsiÚ__ + +__exº_le + +__©ibu_cÚ¡__ + + +51 +__NTH + ( + $gnu_dev_makedev + ( +__majÜ +, +__mÜ +)) + +53 (( +__mÜ + & 0xffè| (( +__majÜ + & 0xfff) << 8) + +54 | (((è( +__mÜ + & ~0xff)) << 12) + +55 | (((è( +__majÜ + & ~0xfff)) << 32)); + +56 + } +} + +58 + g__END_DECLS + + +61 + #majÜ +( +dev +è + `gnu_dev_majÜ + (dev) + + ) + +62 + #mÜ +( +dev +è + `gnu_dev_mÜ + (dev) + + ) + +63 + #makedev +( +maj +, +m +è + `gnu_dev_makedev + (maj, m) + + ) + + @/usr/include/sys/ucontext.h + +18 #iâdeà +_SYS_UCONTEXT_H + + +19 + #_SYS_UCONTEXT_H + 1 + + ) + +21 + ~<ã©u»s.h +> + +22 + ~<sigÇl.h +> + +26 + ~<bs/sigcÚxt.h +> + +28 #ifdeà +__x86_64__ + + +31 +__exnsiÚ__ + + 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·ddg +[3]; + +99 + s_libc_xmm»g + + +101 +__ut32_t + + memt +[4]; + +104 + s_libc_å¡©e + + +107 +__ut16_t + + mcwd +; + +108 +__ut16_t + + mswd +; + +109 +__ut16_t + + máw +; + +110 +__ut16_t + + mfÝ +; + +111 +__ut64_t + + mr +; + +112 +__ut64_t + + mrdp +; + +113 +__ut32_t + + mmxc¤ +; + +114 +__ut32_t + + mmxü_mask +; + +115 +_libc_åx»g + + m_¡ +[8]; + +116 +_libc_xmm»g + + m_xmm +[16]; + +117 +__ut32_t + + m·ddg +[24]; + +121 +_libc_å¡©e + * + tå»g£t_t +; + +126 +g»g£t_t + + mg»gs +; + +128 +å»g£t_t + + må»gs +; + +129 +__exnsiÚ__ + + m__»£rved1 + [8]; + +130 } + tmcÚxt_t +; + +133 + sucÚxt + + +135 + muc_æags +; + +136 +ucÚxt + * + muc_lk +; + +137 +¡ack_t + + muc_¡ack +; + +138 +mcÚxt_t + + muc_mcÚxt +; + +139 +__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 + mg +; + +211 + moff +; + +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_lk +; + +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 + ~<sys/ty³s.h +> + +25 + g__BEGIN_DECLS + + +28 + ~<bs/uio.h +> + +39 +ssize_t + + $»adv + ( +__fd +, cÚ¡ +iovec + * +__iovec +, +__couÁ +) + +40 +__wur +; + +50 +ssize_t + + $wrev + ( +__fd +, cÚ¡ +iovec + * +__iovec +, +__couÁ +) + +51 +__wur +; + +54 #ifdeà +__USE_MISC + + +55 #iâdeà +__USE_FILE_OFFSET64 + + +65 +ssize_t + + $´dv + ( +__fd +, cÚ¡ +iovec + * +__iovec +, +__couÁ +, + +66 +__off_t + +__off£t +è +__wur +; + +77 +ssize_t + + $pwrev + ( +__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 + ( +pwrev +, ( +__fd +, cÚ¡ +iovec + * +__iovec +, + +85 +__couÁ +, +__off64_t + +__off£t +), + +86 +pwrev64 +è +__wur +; + +88 + #´dv + +´dv64 + + + ) + +89 + #pwrev + +pwrev64 + + + ) + +93 #ifdeà +__USE_LARGEFILE64 + + +103 +ssize_t + + $´dv64 + ( +__fd +, cÚ¡ +iovec + * +__iovec +, +__couÁ +, + +104 +__off64_t + +__off£t +è +__wur +; + +115 +ssize_t + + $pwrev64 + ( +__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 + ~<bs/ty³s.h +> + +10 + #__Ãed_size_t + + + ) + +11 #ià +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +12 + #__Ãed_wch¬_t + + + ) + +14 + #__Ãed_NULL + + + ) + +15 + ~<¡ddef.h +> + +16 + #__Ãed_mb¡©e_t + + + ) + +17 #ià +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +18 + #__Ãed_wt_t + + + ) + +20 + ~<wch¬.h +> + +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à +defed + +_LIBC + || defed +_GLIBCPP_USE_WCHAR_T + + +32 + ~<gcÚv.h +> + +35 +__gcÚv_fo + + m__cd +; + +38 +__gcÚv_fo + + m__cd +; + +39 +__gcÚv_¡_d©a + + m__d©a +; + +40 } + m__combed +; + +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 + + `defed + ( +_STATBUF_ST_BLKSIZE +) + + ) + +56 + #_G_BUFSIZ + 8192 + + ) + + @/usr/include/asm/socket.h + +1 + ~<asm-gic/sock.h +> + + @/usr/include/bits/byteswap-16.h + +19 #iâdeà +_BITS_BYTESWAP_H + + +23 #ifdeà +__GNUC__ + + +24 #ià +__GNUC__ + >= 2 + +25 + #__bsw_16 +( +x +) \ + +26 ( +__exnsiÚ__ + \ + +27 ({ +__v +, +__x + = (è( +x +); \ + +28 ià( + `__but_cÚ¡ªt_p + ( +__x +)) \ + +29 +__v + = + `__bsw_cÚ¡ªt_16 + ( +__x +); \ + +31 + `__asm__ + ("rorw $8, %w0" \ + +32 : "ô" ( +__v +) \ + +33 : "0" ( +__x +) \ + +35 +__v +; })) + + ) + +38 + #__bsw_16 +( +x +) \ + +39 ( +__exnsiÚ__ + \ + +40 ({ +__x + = (è( +x +); \ + +41 + `__bsw_cÚ¡ªt_16 + ( +__x +); })) + + ) + +44 +__le + + +45 + $__bsw_16 + ( +__bsx +) + +47 + `__bsw_cÚ¡ªt_16 + ( +__bsx +); + +48 + } +} + + @/usr/include/bits/endian.h + +3 #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 + ~<bs/uio.h +> + +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à +defed + +__USE_POSIX199309 + || defed +__USE_UNIX98 + + +158 + #O_DSYNC + +__O_DSYNC + + + ) + +159 #ià +defed + +__O_RSYNC + + +160 + #O_RSYNC + +__O_RSYNC + + + ) + +162 + #O_RSYNC + +O_SYNC + + + ) + +167 + #F_DUPFD + 0 + + ) + +168 + #F_GETFD + 1 + + ) + +169 + #F_SETFD + 2 + + ) + +170 + #F_GETFL + 3 + + ) + +171 + #F_SETFL + 4 + + ) + +173 #iâdeà +__F_SETOWN + + +174 + #__F_SETOWN + 8 + + ) + +175 + #__F_GETOWN + 9 + + ) + +178 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K8 + + +179 + #F_SETOWN + +__F_SETOWN + + + ) + +180 + #F_GETOWN + +__F_GETOWN + + + ) + +183 #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 + sfe_hªdË + + +335 + mhªdË_bys +; + +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 + + $»adahd + ( +__fd +, +__off64_t + +__off£t +, +size_t + +__couÁ +) + +369 +__THROW +; + +376 + `sync_fe_¿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 +fe_hªdË + * +__hªdË +, * +__mÁ_id +, + +426 +__æags +è +__THROW +; + +432 + `Ý_by_hªdË_© + ( +__mouÁdfd +, +fe_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årtf +) + + @/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_sf + + + ) + +42 + #__DECL_SIMD_sl + + + ) + +44 + #__DECL_SIMD_scos + + + ) + +45 + #__DECL_SIMD_scosf + + + ) + +46 + #__DECL_SIMD_sco¦ + + + ) + +48 + #__DECL_SIMD_log + + + ) + +49 + #__DECL_SIMD_logf + + + ) + +50 + #__DECL_SIMD_logl + + + ) + +52 + #__DECL_SIMD_exp + + + ) + +53 + #__DECL_SIMD_expf + + + ) + +54 + #__DECL_SIMD_ex¶ + + + ) + +56 + #__DECL_SIMD_pow + + + ) + +57 + #__DECL_SIMD_powf + + + ) + +58 + #__DECL_SIMD_powl + + + ) + + @/usr/include/bits/posix1_lim.h + +24 #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à! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +92 + #_POSIX_FD_SETSIZE + +_POSIX_OPEN_MAX + + + ) + +96 + #_POSIX_PATH_MAX + 256 + + ) + +99 + #_POSIX_PIPE_BUF + 512 + + ) + +103 + #_POSIX_RE_DUP_MAX + 255 + + ) + +106 + #_POSIX_RTSIG_MAX + 8 + + ) + +109 + #_POSIX_SEM_NSEMS_MAX + 256 + + ) + +112 + #_POSIX_SEM_VALUE_MAX + 32767 + + ) + +115 + #_POSIX_SIGQUEUE_MAX + 32 + + ) + +118 + #_POSIX_SSIZE_MAX + 32767 + + ) + +121 + #_POSIX_STREAM_MAX + 8 + + ) + +124 + #_POSIX_SYMLINK_MAX + 255 + + ) + +128 + #_POSIX_SYMLOOP_MAX + 8 + + ) + +131 + #_POSIX_TIMER_MAX + 32 + + ) + +134 + #_POSIX_TTY_NAME_MAX + 9 + + ) + +137 #ifdeà +__USE_XOPEN2K + + +138 + #_POSIX_TZNAME_MAX + 6 + + ) + +140 + #_POSIX_TZNAME_MAX + 3 + + ) + +143 #ià! +defed + +__USE_XOPEN2K + || defed +__USE_GNU + + +145 + #_POSIX_QLIMIT + 1 + + ) + +149 + #_POSIX_HIWAT + +_POSIX_PIPE_BUF + + + ) + +152 + #_POSIX_UIO_MAXIOV + 16 + + ) + +156 + #_POSIX_CLOCKRES_MIN + 20000000 + + ) + +160 + ~<bs/loÿl_lim.h +> + +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 + ~<bs/wÜdsize.h +> + +25 #ià +defed + +__GNUC__ + && __GNUC__ >= 2 + +27 #ià +__WORDSIZE + == 64 + +28 + #__FD_ZERO_STOS + "¡osq" + + ) + +30 + #__FD_ZERO_STOS + "¡o¦" + + ) + +33 + #__FD_ZERO +( +fd¥ +) \ + +35 +__d0 +, +__d1 +; \ + +36 +__asm__ + + `__vÞ©e__ + ("þd;; " +__FD_ZERO_STOS + \ + +37 : "=c" ( +__d0 +), "=D" ( +__d1 +) \ + +38 : "a" (0), "0" ( ( +fd_£t +) \ + +39 / ( +__fd_mask +)), \ + +40 "1" (& + `__FDS_BITS + ( +fd¥ +)[0]) \ + +42 } 0) + + ) + +48 + #__FD_ZERO +( +£t +) \ + +50 +__i +; \ + +51 +fd_£t + * +__¬r + = ( +£t +); \ + +52 +__i + = 0; __< ( +fd_£t +è/ ( +__fd_mask +); ++__i) \ + +53 + `__FDS_BITS + ( +__¬r +)[ +__i +] = 0; \ + +54 } 0) + + ) + +58 + #__FD_SET +( +d +, +£t +) \ + +59 ((è( + `__FDS_BITS + ( +£t +)[ + `__FD_ELT + ( +d +)] |ð + `__FD_MASK + (d))) + + ) + +60 + #__FD_CLR +( +d +, +£t +) \ + +61 ((è( + `__FDS_BITS + ( +£t +)[ + `__FD_ELT + ( +d +)] &ð~ + `__FD_MASK + (d))) + + ) + +62 + #__FD_ISSET +( +d +, +£t +) \ + +63 (( + `__FDS_BITS + ( +£t +)[ + `__FD_ELT + ( +d +)] & + `__FD_MASK + (d)è!ð0) + + ) + + @/usr/include/bits/select2.h + +19 #iâdeà +_SYS_SELECT_H + + +24 +__fdt_chk + ( +__d +); + +25 + $__fdt_w¬n + ( +__d +) + +26 + `__w¬Çr + ("bit outside of fd_set selected"); + +27 #undeà +__FD_ELT + + +28 + #__FD_ELT +( +d +) \ + +29 +__exnsiÚ__ + \ + +30 ({ +__d + = ( +d +); \ + +31 ( + `__but_cÚ¡ªt_p + ( +__d +) \ + +32 ? (0 <ð +__d + && __d < +__FD_SETSIZE + \ + +33 ? ( +__d + / +__NFDBITS +) \ + +34 : + `__fdt_w¬n + ( +__d +)) \ + +35 : + `__fdt_chk + ( +__d +)); + } +}) + + ) + + @/usr/include/bits/sockaddr.h + +23 #iâdeà +_BITS_SOCKADDR_H + + +24 + #_BITS_SOCKADDR_H + 1 + + ) + +28 + t§_çmy_t +; + +34 + #__SOCKADDR_COMMON +( +§_´efix +) \ + +35 +§_çmy_t + +§_´efix +## +çmy + + + ) + +37 + #__SOCKADDR_COMMON_SIZE + ( ()) + + ) + +40 + #_SS_SIZE + 128 + + ) + + @/usr/include/bits/socket_type.h + +19 #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 + ~<bs/ty³s.h +> + +25 + stimex + + +27 + mmodes +; + +28 +__sysÿÎ_¦Úg_t + + moff£t +; + +29 +__sysÿÎ_¦Úg_t + + mäeq +; + +30 +__sysÿÎ_¦Úg_t + + mmaxrÜ +; + +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 + + mjr +; + +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 + + mrút +; + +45 +__sysÿÎ_¦Úg_t + + m¡bút +; + +47 + mi +; + +56 + #ADJ_OFFSET + 0x0001 + + ) + +57 + #ADJ_FREQUENCY + 0x0002 + + ) + +58 + #ADJ_MAXERROR + 0x0004 + + ) + +59 + #ADJ_ESTERROR + 0x0008 + + ) + +60 + #ADJ_STATUS + 0x0010 + + ) + +61 + #ADJ_TIMECONST + 0x0020 + + ) + +62 + #ADJ_TAI + 0x0080 + + ) + +63 + #ADJ_SETOFFSET + 0x0100 + + ) + +64 + #ADJ_MICRO + 0x1000 + + ) + +65 + #ADJ_NANO + 0x2000 + + ) + +66 + #ADJ_TICK + 0x4000 + + ) + +67 + #ADJ_OFFSET_SINGLESHOT + 0x8001 + + ) + +68 + #ADJ_OFFSET_SS_READ + 0xa001 + + ) + +71 + #MOD_OFFSET + +ADJ_OFFSET + + + ) + +72 + #MOD_FREQUENCY + +ADJ_FREQUENCY + + + ) + +73 + #MOD_MAXERROR + +ADJ_MAXERROR + + + ) + +74 + #MOD_ESTERROR + +ADJ_ESTERROR + + + ) + +75 + #MOD_STATUS + +ADJ_STATUS + + + ) + +76 + #MOD_TIMECONST + +ADJ_TIMECONST + + + ) + +77 + #MOD_CLKB + +ADJ_TICK + + + ) + +78 + #MOD_CLKA + +ADJ_OFFSET_SINGLESHOT + + + ) + +79 + #MOD_TAI + +ADJ_TAI + + + ) + +80 + #MOD_MICRO + +ADJ_MICRO + + + ) + +81 + #MOD_NANO + +ADJ_NANO + + + ) + +85 + #STA_PLL + 0x0001 + + ) + +86 + #STA_PPSFREQ + 0x0002 + + ) + +87 + #STA_PPSTIME + 0x0004 + + ) + +88 + #STA_FLL + 0x0008 + + ) + +90 + #STA_INS + 0x0010 + + ) + +91 + #STA_DEL + 0x0020 + + ) + +92 + #STA_UNSYNC + 0x0040 + + ) + +93 + #STA_FREQHOLD + 0x0080 + + ) + +95 + #STA_PPSSIGNAL + 0x0100 + + ) + +96 + #STA_PPSJITTER + 0x0200 + + ) + +97 + #STA_PPSWANDER + 0x0400 + + ) + +98 + #STA_PPSERROR + 0x0800 + + ) + +100 + #STA_CLOCKERR + 0x1000 + + ) + +101 + #STA_NANO + 0x2000 + + ) + +102 + #STA_MODE + 0x4000 + + ) + +103 + #STA_CLK + 0x8000 + + ) + +106 + #STA_RONLY + ( +STA_PPSSIGNAL + | +STA_PPSJITTER + | +STA_PPSWANDER + | \ + +107 +STA_PPSERROR + | +STA_CLOCKERR + | +STA_NANO + | +STA_MODE + | +STA_CLK +) + + ) + + @/usr/include/bits/typesizes.h + +19 #iâdeà +_BITS_TYPES_H + + +23 #iâdef +_BITS_TYPESIZES_H + + +24 + #_BITS_TYPESIZES_H + 1 + + ) + +30 #ià +defed + +__x86_64__ + && defed +__ILP32__ + + +31 + #__SYSCALL_SLONG_TYPE + +__SQUAD_TYPE + + + ) + +32 + #__SYSCALL_ULONG_TYPE + +__UQUAD_TYPE + + + ) + +34 + #__SYSCALL_SLONG_TYPE + +__SLONGWORD_TYPE + + + ) + +35 + #__SYSCALL_ULONG_TYPE + +__ULONGWORD_TYPE + + + ) + +38 + #__DEV_T_TYPE + +__UQUAD_TYPE + + + ) + +39 + #__UID_T_TYPE + +__U32_TYPE + + + ) + +40 + #__GID_T_TYPE + +__U32_TYPE + + + ) + +41 + #__INO_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +42 + #__INO64_T_TYPE + +__UQUAD_TYPE + + + ) + +43 + #__MODE_T_TYPE + +__U32_TYPE + + + ) + +44 #ifdeà +__x86_64__ + + +45 + #__NLINK_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +46 + #__FSWORD_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +48 + #__NLINK_T_TYPE + +__UWORD_TYPE + + + ) + +49 + #__FSWORD_T_TYPE + +__SWORD_TYPE + + + ) + +51 + #__OFF_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +52 + #__OFF64_T_TYPE + +__SQUAD_TYPE + + + ) + +53 + #__PID_T_TYPE + +__S32_TYPE + + + ) + +54 + #__RLIM_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +55 + #__RLIM64_T_TYPE + +__UQUAD_TYPE + + + ) + +56 + #__BLKCNT_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +57 + #__BLKCNT64_T_TYPE + +__SQUAD_TYPE + + + ) + +58 + #__FSBLKCNT_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +59 + #__FSBLKCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +60 + #__FSFILCNT_T_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +61 + #__FSFILCNT64_T_TYPE + +__UQUAD_TYPE + + + ) + +62 + #__ID_T_TYPE + +__U32_TYPE + + + ) + +63 + #__CLOCK_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +64 + #__TIME_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +65 + #__USECONDS_T_TYPE + +__U32_TYPE + + + ) + +66 + #__SUSECONDS_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +67 + #__DADDR_T_TYPE + +__S32_TYPE + + + ) + +68 + #__KEY_T_TYPE + +__S32_TYPE + + + ) + +69 + #__CLOCKID_T_TYPE + +__S32_TYPE + + + ) + +70 + #__TIMER_T_TYPE + * + + ) + +71 + #__BLKSIZE_T_TYPE + +__SYSCALL_SLONG_TYPE + + + ) + +72 + #__FSID_T_TYPE + suù { +__v® +[2]; } + + ) + +73 + #__SSIZE_T_TYPE + +__SWORD_TYPE + + + ) + +74 + #__CPU_MASK_TYPE + +__SYSCALL_ULONG_TYPE + + + ) + +76 #ifdeà +__x86_64__ + + +80 + #__OFF_T_MATCHES_OFF64_T + 1 + + ) + +83 + #__INO_T_MATCHES_INO64_T + 1 + + ) + +87 + #__FD_SETSIZE + 1024 + + ) + + @/usr/include/bits/uio.h + +18 #ià! +defed + +_SYS_UIO_H + && !defed +_FCNTL_H + + +22 #iâdeà +_BITS_UIO_H + + +23 + #_BITS_UIO_H + 1 + + ) + +25 + ~<sys/ty³s.h +> + +39 + #UIO_MAXIOV + 1024 + + ) + +43 + siovec + + +45 * + miov_ba£ +; + +46 +size_t + + miov_Ën +; + +52 #ifdeà +__USE_GNU + + +53 #ià +defed + +_SYS_UIO_H + && !defed +_BITS_UIO_H_FOR_SYS_UIO_H + + +54 + #_BITS_UIO_H_FOR_SYS_UIO_H + 1 + + ) + +56 +__BEGIN_DECLS + + +59 +ssize_t + + $´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_wrev + ( +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 + ~<bs/¡dio_lim.h +> + +65 + #_XOPEN_IOV_MAX + +_POSIX_UIO_MAXIOV + + + ) + +70 + #NL_ARGMAX + +_POSIX_ARG_MAX + + + ) + +73 + #NL_LANGMAX + +_POSIX2_LINE_MAX + + + ) + +76 + #NL_MSGMAX + +INT_MAX + + + ) + +80 + #NL_NMAX + +INT_MAX + + + ) + +83 + #NL_SETMAX + +INT_MAX + + + ) + +86 + #NL_TEXTMAX + +INT_MAX + + + ) + +89 + #NZERO + 20 + + ) + +93 #ifdeà +INT_MAX + + +94 #ià +INT_MAX + == 32767 + +95 + #WORD_BIT + 16 + + ) + +97 #ià +INT_MAX + == 2147483647 + +98 + #WORD_BIT + 32 + + ) + +101 + #WORD_BIT + 64 + + ) + +104 #ià +defed + +__INT_MAX__ + + +105 #ià +__INT_MAX__ + == 32767 + +106 + #WORD_BIT + 16 + + ) + +108 #ià +__INT_MAX__ + == 2147483647 + +109 + #WORD_BIT + 32 + + ) + +112 + #WORD_BIT + 64 + + ) + +116 + #WORD_BIT + 32 + + ) + +120 #ifdeà +LONG_MAX + + +121 #ià +LONG_MAX + == 2147483647 + +122 + #LONG_BIT + 32 + + ) + +125 + #LONG_BIT + 64 + + ) + +127 #ià +defed + +__LONG_MAX__ + + +128 #ià +__LONG_MAX__ + == 2147483647 + +129 + #LONG_BIT + 32 + + ) + +132 + #LONG_BIT + 64 + + ) + +135 + ~<bs/wÜdsize.h +> + +136 #ià +__WORDSIZE + == 64 + +137 + #LONG_BIT + 64 + + ) + +139 + #LONG_BIT + 32 + + ) + + @/usr/include/gnu/stubs.h + +6 #ià! +defed + +__x86_64__ + + +7 + ~<gnu/¡ubs-32.h +> + +9 #ià +defed + +__x86_64__ + && defed +__LP64__ + + +10 + ~<gnu/¡ubs-64.h +> + +12 #ià +defed + +__x86_64__ + && defed +__ILP32__ + + +13 + ~<gnu/¡ubs-x32.h +> + + @/usr/include/linux/errno.h + +1 + ~<asm/ºo.h +> + + @/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 + ~<asm/·¿m.h +> + + @/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à +defed + +__GNUC__ + && !defed +__STDC__ + + +34 #undeà +__P + + +35 #undeà +__PMT + + +37 #ifdeà +__GNUC__ + + +41 #ià +__GNUC_PREREQ + (4, 6è&& ! +defed + +_LIBC + + +42 + #__LEAF + , +__Ëaf__ + + + ) + +43 + #__LEAF_ATTR + + `__©ibu__ + (( +__Ëaf__ +)) + + ) + +45 + #__LEAF + + + ) + +46 + #__LEAF_ATTR + + + ) + +54 #ià! +defed + +__ý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à +defed + +__ý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 + #__le + + + ) + +74 + #__THROW + + + ) + +75 + #__THROWNL + + + ) + +76 + #__NTH +( +fù +è + ) +fct + +82 + #__P +( +¬gs +è + ) +args + +83 + #__PMT +( +¬gs +è + ) +args + +88 + #__CONCAT +( +x +, +y +èx ## + ) +y + +89 + #__STRING +( +x +è#x + + ) + +92 + #__±r_t + * + + ) + +93 + #__lÚg_doubË_t + + + ) + +97 #ifdef +__ýlu¥lus + + +98 + #__BEGIN_DECLS + "C" { + + ) + +99 + #__END_DECLS + } + + ) + +101 + #__BEGIN_DECLS + + + ) + +102 + #__END_DECLS + + + ) + +111 #ià +defed + +__ýlu¥lus + && defed +_GLIBCPP_USE_NAMESPACES + + +112 + #__BEGIN_NAMESPACE_STD + +Çme¥aû + +¡d + { + + ) + +113 + #__END_NAMESPACE_STD + } + + ) + +114 + #__USING_NAMESPACE_STD +( +Çme +è +usg + +¡d +::Çme; + + ) + +115 + #__BEGIN_NAMESPACE_C99 + +Çme¥aû + +__c99 + { + + ) + +116 + #__END_NAMESPACE_C99 + } + + ) + +117 + #__USING_NAMESPACE_C99 +( +Çme +è +usg + +__c99 +::Çme; + + ) + +122 + #__BEGIN_NAMESPACE_STD + + + ) + +123 + #__END_NAMESPACE_STD + + + ) + +124 + #__USING_NAMESPACE_STD +( +Çme +) + + ) + +125 + #__BEGIN_NAMESPACE_C99 + + + ) + +126 + #__END_NAMESPACE_C99 + + + ) + +127 + #__USING_NAMESPACE_C99 +( +Çme +) + + ) + +132 + #__bos +( +±r +è + `__but_objeù_size + (±r, +__USE_FORTIFY_LEVEL + > 1) + + ) + +133 + #__bos0 +( +±r +è + `__but_objeù_size + (±r, 0) + + ) + +135 #ià +__GNUC_PREREQ + (4,3) + +136 + #__w¬ndeþ +( +Çme +, +msg +) \ + +137 + `Çme + (è + `__©ibu__ +(( + `__w¬ng__ + ( +msg +))) + + ) + +138 + #__w¬Çr +( +msg +è + `__©ibu__ +(( + `__w¬ng__ + (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à +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +156 + #__æex¬r + [] + + ) + +159 + #__æex¬r + [1] + + ) + +175 #ià +defed + +__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à! +defed + +__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_nole__ + + `__©ibu__ + (( +__nole__ +)) + + ) + +248 + #__©ibu_u£d__ + + `__©ibu__ + (( +__unu£d__ +)) + + ) + +249 + #__©ibu_nole__ + + + ) + +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_le + +__le + + `__©ibu__ + (( +__®ways_le__ +)) + + ) + +309 + #__®ways_le + +__le + + + ) + +314 #ià +__GNUC_PREREQ + (4,3) + +315 + #__©ibu_¬tificl__ + + `__©ibu__ + (( +__¬tificl__ +)) + + ) + +317 + #__©ibu_¬tificl__ + + + ) + +329 #ià(! +defed + +__ýlu¥lus + || +__GNUC_PREREQ + (4,3) \ + +330 || ( +defed + +__þªg__ + && (defed +__GNUC_STDC_INLINE__ + \ + +331 || +defed + +__GNUC_GNU_INLINE__ +))) + +332 #ià +defed + +__GNUC_STDC_INLINE__ + || defed +__ýlu¥lus + + +333 + #__exº_le + +__le + + `__©ibu__ + (( +__gnu_le__ +)) + + ) + +334 + #__exº_®ways_le + \ + +335 +__®ways_le + + `__©ibu__ + (( +__gnu_le__ +)) + + ) + +337 + #__exº_le + +__le + + + ) + +338 + #__exº_®ways_le + +__®ways_le + + + ) + +342 #ifdeà +__exº_®ways_le + + +343 + #__fÜtify_funùiÚ + +__exº_®ways_le + +__©ibu_¬tificl__ + + + ) + +348 #ià +__GNUC_PREREQ + (4,3) + +349 + #__va_¬g_·ck +(è + `__but_va_¬g_·ck + () + + ) + +350 + #__va_¬g_·ck_Ën +(è + `__but_va_¬g_·ck_Ën + () + + ) + +357 #ià! +__GNUC_PREREQ + (2,8) + +358 + #__exnsiÚ__ + + + ) + +362 #ià! +__GNUC_PREREQ + (2,92) + +363 + #__»¡riù + + + ) + +369 #ià +__GNUC_PREREQ + (3,1è&& ! +defed + +__GNUG__ + + +370 + #__»¡riù_¬r + +__»¡riù + + + ) + +372 #ifdeà +__GNUC__ + + +373 + #__»¡riù_¬r + + + ) + +375 #ià +defed + +__STDC_VERSION__ + && __STDC_VERSION__ >= 199901L + +376 + #__»¡riù_¬r + +»¡riù + + + ) + +379 + #__»¡riù_¬r + + + ) + +384 #ià +__GNUC__ + >= 3 + +385 + #__glibc_uÆiky +( +cÚd +è + `__but_ex³ù + ((cÚd), 0) + + ) + +386 + #__glibc_liky +( +cÚd +è + `__but_ex³ù + ((cÚd), 1) + + ) + +388 + #__glibc_uÆiky +( +cÚd +è(cÚd) + + ) + +389 + #__glibc_liky +( +cÚd +è(cÚd) + + ) + +392 #ià(! +defed + +_NÜuº + \ + +393 && ( +defed + +__STDC_VERSION__ + ? __STDC_VERSION__ : 0) < 201112 \ + +394 && ! + $__GNUC_PREREQ + (4,7)) + +395 #ià + `__GNUC_PREREQ + (2,8) + +396 + #_NÜuº + + `__©ibu__ + (( +__nÜuº__ +)) + + ) + +398 + #_NÜuº + + + ) + +402 #ià(! +defed + +_Stic_as£¹ + && !defed +__ýlu¥lus + \ + +403 && ( +defed + +__STDC_VERSION__ + ? __STDC_VERSION__ : 0) < 201112 \ + +404 && (! + `__GNUC_PREREQ + (4, 6è|| +defed + +__STRICT_ANSI__ +)) + +405 + #_Stic_as£¹ +( +ex´ +, +dgno¡ic +) \ + +406 (* + `__Stic_as£¹_funùiÚ + ()) \ + +407 [!! (¡ruù { +__rÜ_if_Ãg©ive +: ( +ex´ +è? 2 : -1; })] + + ) + +410 + ~<bs/wÜdsize.h +> + +412 #ià +defed + +__LONG_DOUBLE_MATH_OPTIONAL + && defed +__NO_LONG_DOUBLE_MATH + + +413 + #__LDBL_COMPAT + 1 + + ) + +414 #ifdeà +__REDIRECT + + +415 + #__LDBL_REDIR1 +( +Çme +, +´Ùo +, +®s +è + `__REDIRECT + (Çme, rÙo,ls) + + ) + +416 + #__LDBL_REDIR +( +Çme +, +´Ùo +) \ + +417 + `__LDBL_REDIR1 + ( +Çme +, +´Ùo +, +__Ædbl_ +##Çme) + + ) + +418 + #__LDBL_REDIR1_NTH +( +Çme +, +´Ùo +, +®s +è + `__REDIRECT_NTH + (Çme, rÙo,ls) + + ) + +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à! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT + + +432 + #__LDBL_REDIR1 +( +Çme +, +´Ùo +, +®s +èÇm + ) +proto + +433 + #__LDBL_REDIR +( +Çme +, +´Ùo +èÇm + ) +proto + +434 + #__LDBL_REDIR1_NTH +( +Çme +, +´Ùo +, +®s +èÇm´ÙØ +__THROW + + + ) + +435 + #__LDBL_REDIR_NTH +( +Çme +, +´Ùo +èÇm´ÙØ +__THROW + + + ) + +436 + #__LDBL_REDIR_DECL +( +Çme +) + + ) + +437 #ifdeà +__REDIRECT + + +438 + #__REDIRECT_LDBL +( +Çme +, +´Ùo +, +®s +è + `__REDIRECT + (Çme, rÙo,ls) + + ) + +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 + ~<asm/sockios.h +> + +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 + ~<asm-gic/ºo.h +> + + @/usr/include/asm/param.h + +1 + ~<asm-gic/·¿m.h +> + + @/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 + ~<lux/lims.h +> + +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_wt_t + + + ) + +28 + ~<wch¬.h +> + +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 + $wt_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 +__exnsiÚ__ + +__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 + * +»vsibË +); + + @/usr/include/gnu/stubs-32.h + +6 #ifdeà +_LIBC + + +7 #rÜ +AµliÿtiÚs + +may + +nÙ + +defe + +the + +maüo + +_LIBC + + +10 + #__¡ub_chæags + + + ) + +11 + #__¡ub_çach + + + ) + +12 + #__¡ub_fchæags + + + ) + +13 + #__¡ub_fdach + + + ) + +14 + #__¡ub_gy + + + ) + +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Ù + +defe + +the + +maüo + +_LIBC + + +10 + #__¡ub___com·t_bdæush + + + ) + +11 + #__¡ub_chæags + + + ) + +12 + #__¡ub_çach + + + ) + +13 + #__¡ub_fchæags + + + ) + +14 + #__¡ub_fdach + + + ) + +15 + #__¡ub_gmsg + + + ) + +16 + #__¡ub_gy + + + ) + +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Ù + +defe + +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_quy_moduË + + + ) + +14 + #__¡ub___com·t_u£lib + + + ) + +15 + #__¡ub_chæags + + + ) + +16 + #__¡ub_çach + + + ) + +17 + #__¡ub_fchæags + + + ) + +18 + #__¡ub_fdach + + + ) + +19 + #__¡ub_gmsg + + + ) + +20 + #__¡ub_gy + + + ) + +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à! +defed + +__Ãed_mb¡©e_t + && !defed +__Ãed_wt_t + + +26 + #_WCHAR_H + 1 + + ) + +27 + ~<ã©u»s.h +> + +30 #ifdeà +_WCHAR_H + + +32 + #__Ãed___FILE + + + ) + +33 #ià +defed + +__USE_UNIX98 + || defed +__USE_XOPEN2K + + +34 + #__Ãed_FILE + + + ) + +36 + ~<¡dio.h +> + +38 + #__Ãed___va_li¡ + + + ) + +39 + ~<¡d¬g.h +> + +41 + ~<bs/wch¬.h +> + +44 + #__Ãed_size_t + + + ) + +45 + #__Ãed_wch¬_t + + + ) + +46 + #__Ãed_NULL + + + ) + +48 #ià +defed + +_WCHAR_H + || defed +__Ãed_wt_t + || !defed +__WINT_TYPE__ + + +49 #undeà +__Ãed_wt_t + + +50 + #__Ãed_wt_t + + + ) + +51 + ~<¡ddef.h +> + +55 #iâdeà +_WINT_T + + +60 + #_WINT_T + + + ) + +61 + twt_t +; + +65 #ià +defed + +__ýlu¥lus + && defed +_GLIBCPP_USE_NAMESPACES + \ + +66 && +defed + +__WINT_TYPE__ + + +67 +__BEGIN_NAMESPACE_STD + + +68 +__WINT_TYPE__ + + twt_t +; + +69 + g__END_NAMESPACE_STD + + +74 #ià +defed + +__ýlu¥lus + && +__GNUC_PREREQ + (4, 4) + +75 + #__CORRECT_ISO_CPP_WCHAR_H_PROTO + + + ) + +79 #ià( +defed + +_WCHAR_H + || defed +__Ãed_mb¡©e_t +è&& !defed +____mb¡©e_t_defed + + +80 + #____mb¡©e_t_defed + 1 + + ) + +84 + m__couÁ +; + +87 #ifdeà +__WINT_TYPE__ + + +88 +__WINT_TYPE__ + + m__wch +; + +90 +wt_t + + m__wch +; + +92 + m__wchb +[4]; + +93 } + m__v®ue +; + +94 } + t__mb¡©e_t +; + +96 #undeà +__Ãed_mb¡©e_t + + +101 #ifdeà +_WCHAR_H + + +103 #iâdeà +__mb¡©e_t_defed + + +104 +__BEGIN_NAMESPACE_C99 + + +106 +__mb¡©e_t + + tmb¡©e_t +; + +107 + g__END_NAMESPACE_C99 + + +108 + #__mb¡©e_t_defed + 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à +defed + +__USE_XOPEN + && !defed +__USE_UNIX98 + + +128 + ~<wùy³.h +> + +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 + ~<xloÿË.h +> + +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ù + +__dim +, + +287 +wch¬_t + ** +__»¡riù + +__±r +è +__THROW +; + +290 +size_t + + $wc¦ + (cÚ¡ +wch¬_t + * +__s +è +__THROW + +__©ibu_pu»__ +; + +291 +__END_NAMESPACE_STD + + +293 #ifdeà +__USE_XOPEN + + +295 #ifdeà +__CORRECT_ISO_CPP_WCHAR_H_PROTO + + +296 "C++" +wch¬_t + * + $wcswcs + ( +wch¬_t + * +__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 +wt_t + + $btowc + ( +__c +è +__THROW +; + +360 + $wùob + ( +wt_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 +wt_t + + $__btowc_®s + ( +__c +è + `__asm + ("btowc"); + +390 +__exº_le + +wt_t + + +391 + `__NTH + ( + $btowc + ( +__c +)) + +392 { ( + `__but_cÚ¡ªt_p + ( +__c +) && __c >= '\0' && __c <= '\x7f' + +393 ? ( +wt_t +è +__c + : + `__btowc_®s + (__c)); + } +} + +395 + $__wùob_®s + ( +wt_t + +__c +è + `__asm + ("wctob"); + +396 +__exº_le + + +397 + `__NTH + ( + $wùob + ( +wt_t + +__wc +)) + +398 { ( + `__but_cÚ¡ªt_p + ( +__wc +è&& __wø>ð +L +'\0' && __wc <= L'\x7f' + +399 ? (è +__wc + : + `__wùob_®s + (__wc)); + } +} + +401 +__exº_le + +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 +__exnsiÚ__ + + +486 + $wc¡Þl + (cÚ¡ +wch¬_t + * +__»¡riù + +__Å +, + +487 +wch¬_t + ** +__»¡riù + +__d±r +, +__ba£ +) + +488 +__THROW +; + +492 +__exnsiÚ__ + + +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 +__exnsiÚ__ + + +503 + $wc¡oq + (cÚ¡ +wch¬_t + * +__»¡riù + +__Å +, + +504 +wch¬_t + ** +__»¡riù + +__d±r +, +__ba£ +) + +505 +__THROW +; + +509 +__exnsiÚ__ + + +510 + $wc¡ouq + (cÚ¡ +wch¬_t + * +__»¡riù + +__Å +, + +511 +wch¬_t + ** +__»¡riù + +__d±r +, + +512 +__ba£ +è +__THROW +; + +515 #ifdeà +__USE_GNU + + +529 + ~<xloÿË.h +> + +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 +__exnsiÚ__ + + +542 + $wc¡Þl_l + (cÚ¡ +wch¬_t + * +__»¡riù + +__Å +, + +543 +wch¬_t + ** +__»¡riù + +__d±r +, + +544 +__ba£ +, +__loÿË_t + +__loc +è +__THROW +; + +546 +__exnsiÚ__ + + +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 + * +__sizoc +è +__THROW +; + +586 #ià +defed + +__USE_ISOC95 + || defed +__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à +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +653 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +654 && ( +defed + +__STRICT_ANSI__ + || defed +__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à! +defed + +__USE_GNU + \ + +710 && (! +defed + +__LDBL_COMPAT + || !defed +__REDIRECT +) \ + +711 && ( +defed + +__STRICT_ANSI__ + || defed +__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 +wt_t + + `fgwc + ( +__FILE + * +__¡»am +); + +749 +wt_t + + `gwc + ( +__FILE + * +__¡»am +); + +755 +wt_t + + `gwch¬ + (); + +762 +wt_t + + `åutwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +763 +wt_t + + `putwc + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +769 +wt_t + + `putwch¬ + ( +wch¬_t + +__wc +); + +777 +wch¬_t + * + `fgws + (wch¬_* +__»¡riù + +__ws +, +__n +, + +778 +__FILE + * +__»¡riù + +__¡»am +); + +784 + `åutws + (cÚ¡ +wch¬_t + * +__»¡riù + +__ws +, + +785 +__FILE + * +__»¡riù + +__¡»am +); + +792 +wt_t + + `ungwc + (wt_ +__wc +, +__FILE + * +__¡»am +); + +793 +__END_NAMESPACE_STD + + +796 #ifdeà +__USE_GNU + + +804 +wt_t + + `gwc_uÆocked + ( +__FILE + * +__¡»am +); + +805 +wt_t + + `gwch¬_uÆocked + (); + +813 +wt_t + + `fgwc_uÆocked + ( +__FILE + * +__¡»am +); + +821 +wt_t + + `åutwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +830 +wt_t + + `putwc_uÆocked + ( +wch¬_t + +__wc +, +__FILE + * +__¡»am +); + +831 +wt_t + + `putwch¬_uÆocked + ( +wch¬_t + +__wc +); + +840 +wch¬_t + * + `fgws_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 + ~<xloÿË.h +> + +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à +defed + +__USE_UNIX98 + && !defed +__USE_GNU + + +881 + #__Ãed_iswxxx + + + ) + +882 + ~<wùy³.h +> + +886 #ià +__USE_FORTIFY_LEVEL + > 0 && +defed + +__fÜtify_funùiÚ + + +887 + ~<bs/wch¬2.h +> + +890 #ifdeà +__LDBL_COMPAT + + +891 + ~<bs/wch¬-ldbl.h +> + +894 +__END_DECLS + + +902 #undeà +__Ãed_mb¡©e_t + + +903 #undeà +__Ãed_wt_t + + + @/usr/include/asm-generic/errno.h + +1 #iâdeà +_ASM_GENERIC_ERRNO_H + + +2 + #_ASM_GENERIC_ERRNO_H + + + ) + +4 + ~<asm-gic/ºo-ba£.h +> + +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 + ~<asm-gic/sockios.h +> + + @/usr/include/bits/wchar-ldbl.h + +19 #iâdeà +_WCHAR_H + + +23 #ià +defed + +__USE_ISOC95 + || defed +__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à +defed + +__USE_ISOC99 + && !defed +__USE_GNU + \ + +32 && ! +defed + + g__REDIRECT + \ + +33 && ( +defed + + g__STRICT_ANSI__ + || defed + 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à! +defed + +__USE_GNU + && !defed +__REDIRECT + \ + +49 && ( +defed + +__STRICT_ANSI__ + || defed +__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 && +defed + +__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 withength biggerhan 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à(! + `__but_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 withength biggerhan 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à(! + `__but_cÚ¡ªt_p + ( +__n +)) + +73 + `__wmemmove_chk + ( +__s1 +, +__s2 +, +__n +, + +74 + `__bos0 + ( +__s1 +è/ ( +wch¬_t +)); + +76 ià( +__n + > + `__bos0 + ( +__s1 +è/ ( +wch¬_t +)) + +77 + `__wmemmove_chk_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 withength biggerhan 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à(! + `__but_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 withength biggerhan 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à(! + `__but_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 withength biggerhan 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à(! + `__but_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 withength biggerhan 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à(! + `__but_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à! +defed + +__ý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à! +defed + +__ý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 + * + $__fgws_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +373 +__FILE + * +__»¡riù + +__¡»am +è +__wur +; + +374 +wch¬_t + * + `__REDIRECT + ( +__fgws_®s +, + +375 ( +wch¬_t + * +__»¡riù + +__s +, +__n +, + +376 +__FILE + * +__»¡riù + +__¡»am +), +fgws +è +__wur +; + +377 +wch¬_t + * + `__REDIRECT + ( +__fgws_chk_w¬n +, + +378 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +379 +__FILE + * +__»¡riù + +__¡»am +), +__fgws_chk +) + +380 +__wur + + `__w¬Çr + ("fgetws called with bigger sizehanength " + +383 +__fÜtify_funùiÚ + +__wur + +wch¬_t + * + +384 + $fgws + ( +wch¬_t + * +__»¡riù + +__s +, +__n +, +__FILE + *__»¡riù +__¡»am +) + +386 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +388 ià(! + `__but_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +389 + `__fgws_chk + ( +__s +, + `__bos + (__sè/ ( +wch¬_t +), + +390 +__n +, +__¡»am +); + +392 ià(( +size_t +è +__n + > + `__bos + ( +__s +è/ ( +wch¬_t +)) + +393 + `__fgws_chk_w¬n + ( +__s +, + `__bos + (__sè/ ( +wch¬_t +), + +394 +__n +, +__¡»am +); + +396 + `__fgws_®s + ( +__s +, +__n +, +__¡»am +); + +397 + } +} + +399 #ifdeà +__USE_GNU + + +400 +wch¬_t + * + $__fgws_uÆocked_chk + ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +, + +401 +__n +, +__FILE + * +__»¡riù + +__¡»am +) + +402 +__wur +; + +403 +wch¬_t + * + `__REDIRECT + ( +__fgws_uÆocked_®s +, + +404 ( +wch¬_t + * +__»¡riù + +__s +, +__n +, + +405 +__FILE + * +__»¡riù + +__¡»am +), +fgws_uÆocked +) + +406 +__wur +; + +407 +wch¬_t + * + `__REDIRECT + ( +__fgws_uÆocked_chk_w¬n +, + +408 ( +wch¬_t + * +__»¡riù + +__s +, +size_t + +__size +, +__n +, + +409 +__FILE + * +__»¡riù + +__¡»am +), + +410 +__fgws_uÆocked_chk +) + +411 +__wur + + `__w¬Çr + ("fgetws_unlocked called with bigger sizehanength " + +414 +__fÜtify_funùiÚ + +__wur + +wch¬_t + * + +415 + $fgws_uÆocked + ( +wch¬_t + * +__»¡riù + +__s +, +__n +, +__FILE + *__»¡riù +__¡»am +) + +417 ià( + `__bos + ( +__s +è!ð( +size_t +) -1) + +419 ià(! + `__but_cÚ¡ªt_p + ( +__n +) || __n <= 0) + +420 + `__fgws_uÆocked_chk + ( +__s +, + `__bos + (__sè/ ( +wch¬_t +), + +421 +__n +, +__¡»am +); + +423 ià(( +size_t +è +__n + > + `__bos + ( +__s +è/ ( +wch¬_t +)) + +424 + `__fgws_uÆocked_chk_w¬n + ( +__s +, + `__bos + (__sè/ ( +wch¬_t +), + +425 +__n +, +__¡»am +); + +427 + `__fgws_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à +defed + +MB_LEN_MAX + && MB_LEN_MAX !ð +__WCHAR_MB_LEN_MAX + + +450 ià( + `__bos + ( +__s +è!ð( +size_t +è-1 && +__WCHAR_MB_LEN_MAX + > __bos (__s)) + +451 + `__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 smallerhanen " + +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à(! + `__but_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 smallerhanen"); + +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à(! + `__but_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 smallerhanen " + +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à(! + `__but_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 smallerhanen"); + +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à(! + `__but_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 + ~<bs/ty³s.h +> + +28 #iâdeà +__Ãed_iswxxx + + +29 + #_WCTYPE_H + 1 + + ) + +32 + #__Ãed_wt_t + + + ) + +33 + ~<wch¬.h +> + +37 #iâdeà +WEOF + + +38 + #WEOF + (0xffffffffu) + + ) + +41 #undeà +__Ãed_iswxxx + + +46 #iâdeà +__iswxxx_defed + + +47 + #__iswxxx_defed + 1 + + ) + +49 +__BEGIN_NAMESPACE_C99 + + +52 + twùy³_t +; + +53 + g__END_NAMESPACE_C99 + + +55 #iâdeà +_ISwb + + +60 + ~<dn.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 + ( +wt_t + +__wc +è +__THROW +; + +117 + $isw®pha + ( +wt_t + +__wc +è +__THROW +; + +120 + $iswúl + ( +wt_t + +__wc +è +__THROW +; + +124 + $iswdig + ( +wt_t + +__wc +è +__THROW +; + +128 + $iswg¿ph + ( +wt_t + +__wc +è +__THROW +; + +133 + $iswlow + ( +wt_t + +__wc +è +__THROW +; + +136 + $isw´t + ( +wt_t + +__wc +è +__THROW +; + +141 + $iswpunù + ( +wt_t + +__wc +è +__THROW +; + +146 + $isw¥aû + ( +wt_t + +__wc +è +__THROW +; + +151 + $iswuµ + ( +wt_t + +__wc +è +__THROW +; + +156 + $iswxdig + ( +wt_t + +__wc +è +__THROW +; + +161 #ifdeà +__USE_ISOC99 + + +162 + $iswbÏnk + ( +wt_t + +__wc +è +__THROW +; + +171 +wùy³_t + + $wùy³ + (cÚ¡ * +__´Ýty +è +__THROW +; + +175 + $iswùy³ + ( +wt_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 +wt_t + + $towlow + ( +wt_t + +__wc +è +__THROW +; + +197 +wt_t + + $towuµ + ( +wt_t + +__wc +è +__THROW +; + +198 +__END_NAMESPACE_C99 + + +200 +__END_DECLS + + +207 #ifdeà +_WCTYPE_H + + +213 +__BEGIN_DECLS + + +215 +__BEGIN_NAMESPACE_C99 + + +218 +wù¿ns_t + + $wù¿ns + (cÚ¡ * +__´Ýty +è +__THROW +; + +221 +wt_t + + $towù¿ns + ( +wt_t + +__wc +, +wù¿ns_t + +__desc +è +__THROW +; + +222 +__END_NAMESPACE_C99 + + +224 #ifdeà +__USE_XOPEN2K8 + + +226 + ~<xloÿË.h +> + +230 + $isw®num_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +236 + $isw®pha_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +239 + $iswúl_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +243 + $iswdig_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +247 + $iswg¿ph_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +252 + $iswlow_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +255 + $isw´t_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +260 + $iswpunù_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +265 + $isw¥aû_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +270 + $iswuµ_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +275 + $iswxdig_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +280 + $iswbÏnk_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +284 +wùy³_t + + $wùy³_l + (cÚ¡ * +__´Ýty +, +__loÿË_t + +__loÿË +) + +285 +__THROW +; + +289 + $iswùy³_l + ( +wt_t + +__wc +, +wùy³_t + +__desc +, +__loÿË_t + +__loÿË +) + +290 +__THROW +; + +298 +wt_t + + $towlow_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +301 +wt_t + + $towuµ_l + ( +wt_t + +__wc +, +__loÿË_t + +__loÿË +è +__THROW +; + +305 +wù¿ns_t + + $wù¿ns_l + (cÚ¡ * +__´Ýty +, +__loÿË_t + +__loÿË +) + +306 +__THROW +; + +309 +wt_t + + $towù¿ns_l + ( +wt_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 {