lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | /************************************************************************ |
| 2 | *¹¦ÄܽéÉÜ£º×ÔÑÐʵÏÖµÄioctl½Ó¿Ú²ÎÊý¶¨Òå |
| 3 | *¸ºÔðÈË£º |
| 4 | *±¸·ÝÈË£º |
| 5 | *ÐÞ¸ÄÈÕ£º |
| 6 | *ÐÞ¸ÄÄÚÈÝ£º |
| 7 | *°æ±¾ºÅ£º |
| 8 | ************************************************************************/ |
| 9 | |
| 10 | #ifndef _ZXIC_IOCTL_H_ |
| 11 | #define _ZXIC_IOCTL_H_ |
| 12 | |
| 13 | #include <sys/types.h> |
| 14 | #include <sys/stat.h> |
| 15 | #include <fcntl.h> |
| 16 | #include <sys/ioctl.h> |
| 17 | |
| 18 | |
| 19 | #ifdef _MBB_OS_UCLINUX |
| 20 | #include <stdint.h> |
| 21 | #endif |
| 22 | |
| 23 | |
| 24 | #define NIOCTL_MAGIC 'x' |
| 25 | #define NIOCTL_MAX_NR 32 //IOCTL¿ÉÓÃÃüÁîµÄ×î´ó¸öÊý |
| 26 | |
| 27 | |
| 28 | #define NIOCTL_READ _IO(NIOCTL_MAGIC,0) |
| 29 | |
| 30 | /*»ñÈ¡¶þ²ãÁÚ¾ÓÁбíÖÐmacµØÖ·ºÍ³ö¿Údevname*/ |
| 31 | |
| 32 | #define NIOCGPCINFO _IOWR(NIOCTL_MAGIC,1,ioctl_data) |
| 33 | |
| 34 | /*»ñÈ¡ÍøÂçÉ豸tx¡¢rx¡¢dropµÈͳ¼Æ£¬ÍøÂçÉ豸״̬ÐÅÏ¢*/ |
| 35 | |
| 36 | #define NIOCGSTATS _IOWR(NIOCTL_MAGIC,2,ioctl_data) |
| 37 | |
| 38 | /*ÉèÖÃÄں˲ÎÊýͨÓÃÃüÁÀýÈçfastnat/fastbr/leak/brmoniterµÈ¿ª¹Ø»ò¼¶±ð*/ |
| 39 | |
| 40 | #define NIOCSKPARAM _IOWR(NIOCTL_MAGIC,3,ioctl_data) |
| 41 | |
| 42 | /*»ñÈ¡skbÉêÇë³É¹¦/ʧ°Ü¸öÊýͳ¼Æ*/ |
| 43 | |
| 44 | #define NIOCGSKBCNT _IOR(NIOCTL_MAGIC,4,ioctl_data) |
| 45 | |
| 46 | /*»ñÈ¡fastnat ×î´óÁ´½ÓÊý*/ |
| 47 | |
| 48 | #define NIOCGFASTMAXLINKS _IOR(NIOCTL_MAGIC,7,ioctl_data)//È·¶¨ºóÐøÊÇ·ñ»¹ÒªÊ¹Óà |
| 49 | |
| 50 | |
| 51 | /*»ñÈ¡×Ô´ò¿ªÍ³¼Æ¿ª¹ØÖ®ºó£¬skb µÄµ±Ç°¸öÊý¡¢Ë²¼ä·åÖµµÈͳ¼ÆÐÅÏ¢¡¢skb¿½±´´ÎÊý¡¢skbÍ·À©Õ¹´ÎÊý |
| 52 | skbÔÚÈíÖжÏÊÍ·Å´ÎÊý*/ |
| 53 | |
| 54 | #define NIOCGSKBNUM _IOWR(NIOCTL_MAGIC,13,ioctl_data) |
| 55 | |
| 56 | /*ÉèÖÃÄÚºËskb dumpÆ¥ÅäÐÅÏ¢£¬ÀýÈçÆ¥ÅäÌØ¶¨macµØÖ·¡¢IPµØÖ·*/ |
| 57 | |
| 58 | #define NIOCGSKBDUMP _IOR(NIOCTL_MAGIC,14,ioctl_data) |
| 59 | |
| 60 | /*ÉèÖÃÄÚºËtcpdump ¿ª¹Ø*/ |
| 61 | |
| 62 | #define NIOCSTCPDUMP _IOR(NIOCTL_MAGIC,15,ioctl_data) |
| 63 | |
| 64 | /**/ |
| 65 | |
| 66 | #define NIOCPDP _IOR(NIOCTL_MAGIC,17,ioctl_data) |
| 67 | |
| 68 | /**/ |
| 69 | |
| 70 | #define NIOCFLUSHFLAG _IOR(NIOCTL_MAGIC,18,ioctl_data) |
| 71 | #define NIOCGKPARAM _IOR(NIOCTL_MAGIC,19,ioctl_data) |
| 72 | |
| 73 | |
| 74 | |
| 75 | #define NIOCGSLAB _IOR(NIOCTL_MAGIC,21,ioctl_data) |
| 76 | |
| 77 | /*add by jiangjing,»ñÈ¡init_netÖÐËùÓÐÍøÂçÉ豸µÄÃû³ÆºÍ״̬ÐÅÏ¢*/ |
| 78 | #define NIOCGDEVLIST _IOR(NIOCTL_MAGIC, 22, ioctl_data) |
| 79 | |
| 80 | /*add by zhangpeimin£¬»ñÈ¡SKB FASTµ±Ç°Í³¼ÆÐÅÏ¢*/ |
| 81 | #define NIOCGSKBFAST _IOR(NIOCTL_MAGIC, 24, ioctl_data) |
| 82 | |
| 83 | #define NIOCGMAXMSG _IOR(NIOCTL_MAGIC, 25, ioctl_data) |
| 84 | |
| 85 | #define NIOCGPTYPE _IOR(NIOCTL_MAGIC, 26, ioctl_data) |
| 86 | |
| 87 | #define NIOCGPSINFO _IOR(NIOCTL_MAGIC, 27, ioctl_data) |
| 88 | |
| 89 | #define NIOCGHASH _IOR(NIOCTL_MAGIC, 28, ioctl_data) |
| 90 | |
| 91 | /*»ñÈ¡µ±Ç°TCP¶ª°üͳ¼ÆÐÅÏ¢*/ |
| 92 | #define NIOCGPKTLOST _IOR(NIOCTL_MAGIC, 29, ioctl_data) |
| 93 | |
| 94 | /*»ñÈ¡±¾µØTCPÌ×½Ó×Öͳ¼ÆÐÅÏ¢*/ |
| 95 | #define NIOCGTCPSOCKSTATS _IOR(NIOCTL_MAGIC, 30, ioctl_data) |
| 96 | |
| 97 | #define NIOCTL_MAX_MSGLEN 128 //×Ö·û´®ÀàÐͲÎÊýÖµµÄ×î´ó³¤¶È |
| 98 | #define NIOCTL_MAX_NAMELEN 20 //²ÎÊýÃû³ÆµÄ×î´ó³¤¶È |
| 99 | /* |
| 100 | ͨÓÃioctlµÄ²ÎÊýÀàÐÍ£¬µ±²ÎÊýֵΪ×Ö·û´®Ê±£¬Ê¹ÓÃbuf±äÁ¿ÓëÄں˽»»¥£» |
| 101 | µ±²ÎÊýֵΪÕûÐÍʱ£¬Ê¹ÓÃvalue±äÁ¿ÓëÄں˽»»¥ |
| 102 | |
| 103 | */ |
| 104 | typedef struct { |
| 105 | unsigned int size; //×Ö·û´®ÀàÐͲÎÊýµÄ³¤¶È£¬¶ÔÓÚÕûÐͲÎÊý£¬¸ÃÖµ½¨Ò鸳ֵΪ0 |
| 106 | char name[NIOCTL_MAX_NAMELEN]; //²ÎÊýÃû³Æ£¬ÀýÈçfastnat¡¢fastbr¡¢leak |
| 107 | unsigned char buf[NIOCTL_MAX_MSGLEN]; //×Ö·û´®ÀàÐͲÎÊýÖµ£¬ÀýÈçon/off |
| 108 | void *data; //×Ô¶¨Òå½á¹¹Ìå |
| 109 | int value; //ÕûÐͲÎÊýÖµ£¬ÀýÈç0/1/2/3 |
| 110 | |
| 111 | } __attribute__((packed)) ioctl_data; |
| 112 | |
| 113 | |
| 114 | |
| 115 | enum dev_opt_state { |
| 116 | DEV_UNOPT = 0, //ÈôÓû§Î´×öÈκβÙ×÷£¬³õʼֵΪ0 |
| 117 | DEV_NOPRESENT, //¶ÔÓ¦!netif_device_presentÒì³££¬±íÃ÷Çý¶¯µ×²ãÉÐδ׼±¸ºÃ |
| 118 | DEV_OPENED, //dev is opened |
| 119 | DEV_OPEN_FAIL, //open fail |
| 120 | DEV_CLOSED, //dev is closed |
| 121 | }; |
| 122 | |
| 123 | |
| 124 | //ÍøÂçÌí¼Ó£¬Í³¼ÆÍøÂç²ãÃæÊÕ·¢°üÇé¿ö |
| 125 | struct net_dev_skbinfo { |
| 126 | unsigned long rx_packets; //Çý¶¯·¢ËÍÀ´µÄÊý¾Ý°ü¸öÊý£¬ÔÚnetif_rxÍ·ÀÛ¼Ó |
| 127 | unsigned long tx_packets; //·¢Ë͸øÇý¶¯µÄÊý¾Ý°ü¸öÊý£¬ÔÚdev_queue_xmitÍ·ÀÛ¼Ó |
| 128 | unsigned long rx_bytes; //×Ö½ÚÊý |
| 129 | unsigned long tx_bytes; //×Ö½ÚÊý |
| 130 | unsigned long rx_dropped; //netif_rxÄÚ²¿Á÷³ÌÖÐËùÓÐÒì³£ÊÍ·ÅskbµÄÀÛ¼Ó£¬Èç´ïµ½netdev_max_backlogÈë¶ÓÁÐÉÏÏÞ¶ø¶ª°ü |
| 131 | unsigned long tx_dropped; //dev_queue_xmitÄÚ²¿Á÷³ÌÖÐËùÓÐÒì³£ÊÍ·ÅskbµÄÀÛ¼Ó£¬Èç(txq->xmit_lock_owner == cpu)Ôì³ÉµÄ¶ª°ü |
| 132 | }; |
| 133 | |
| 134 | /* ¸Ã½á¹¹ÌåÖеÄËùÓÐÐÅÏ¢½ÔÓÉÇý¶¯¸³Öµ£¬ÍøÂç×é²»»á¸³Öµ */ |
| 135 | //Õâ¸ö½á¹¹Ì屨ÐëºÍ <linux/netdevice.h>ÖеÄnet_device_stats±£³ÖÒ»Ö |
| 136 | struct net_dev_stats { |
| 137 | unsigned long rx_packets; |
| 138 | unsigned long tx_packets; |
| 139 | unsigned long rx_bytes; |
| 140 | unsigned long tx_bytes; |
| 141 | unsigned long rx_errors; //Ðè¼à¿Ø |
| 142 | unsigned long tx_errors; //Ðè¼à¿Ø |
| 143 | unsigned long rx_dropped; //Ðè¼à¿Ø |
| 144 | unsigned long tx_dropped; //Ðè¼à¿Ø |
| 145 | unsigned long multicast; |
| 146 | unsigned long collisions; |
| 147 | unsigned long rx_length_errors; //Ðè¼à¿Ø |
| 148 | unsigned long rx_over_errors; //Ðè¼à¿Ø |
| 149 | unsigned long rx_crc_errors; //Ðè¼à¿Ø |
| 150 | unsigned long rx_frame_errors; //Ðè¼à¿Ø |
| 151 | unsigned long rx_fifo_errors; //Ðè¼à¿Ø |
| 152 | unsigned long rx_missed_errors; //Ðè¼à¿Ø |
| 153 | unsigned long tx_aborted_errors; //Ðè¼à¿Ø |
| 154 | unsigned long tx_carrier_errors; //Ðè¼à¿Ø |
| 155 | unsigned long tx_fifo_errors; //Ðè¼à¿Ø |
| 156 | unsigned long tx_heartbeat_errors; //Ðè¼à¿Ø |
| 157 | unsigned long tx_window_errors; //Ðè¼à¿Ø |
| 158 | unsigned long rx_compressed; |
| 159 | unsigned long tx_compressed; |
| 160 | }; |
| 161 | enum netdev_queue_state { |
| 162 | __QUEUE_STATE_DRV_XOFF, |
| 163 | __QUEUE_STATE_STACK_XOFF, |
| 164 | __QUEUE_STATE_FROZEN, |
| 165 | }; |
| 166 | |
| 167 | struct dev_ioctl_info { |
| 168 | char dev_name[20]; |
| 169 | struct net_dev_skbinfo stats_dbg; //ÍøÂçÌí¼ÓµÄ£¬Í³¼ÆÍøÂç²ãÃæÊÕ·¢°üÇé¿ö |
| 170 | struct net_dev_stats skb_status; //Êý¾ÝÊÕ·¢Í³¼ÆÖµ£¬¸Ãֵȫ²¿ÓÉÇý¶¯¸³ÖµµÄ£¬ÍøÂç²»¸³Öµ |
| 171 | unsigned int flags; //IFF_UPµÈ |
| 172 | unsigned char operstate; //ĿǰûɶÓà |
| 173 | unsigned long state; //µ×²ãÇý¶¯×´Ì¬£¬__LINK_STATE_NOCARRIER |
| 174 | int net_flag; //Óû§ifconfigµÄ½á¹û״̬£¬ÈçDEV_OPEN_FAIL |
| 175 | unsigned long que_state; //¶ÓÁÐ״̬£¬¶ÔÓ¦ dev->_tx[0].state£¬Èç__QUEUE_STATE_DRV_XOFF |
| 176 | unsigned int num_tx_queues; //TX¶ÓÁÐÊýÁ¿£¬¶àÊýÇý¶¯Ê¹ÓÃΨһ¶ÓÁУ¬ÔòֵΪ1 |
| 177 | }; |
| 178 | |
| 179 | //ÓëÄÚºËskb_using_msg ½á¹¹ÌåÒ»Ö |
| 180 | struct skb_ioctl_info { |
| 181 | unsigned long skb_all; |
| 182 | unsigned long skb_tocp; |
| 183 | unsigned long skb_fromcp; |
| 184 | unsigned long skb_data_num; |
| 185 | unsigned long skb_data_size; |
| 186 | unsigned long skb_stop; |
| 187 | unsigned long skb_lock; |
| 188 | |
| 189 | unsigned long skb_panic; |
| 190 | unsigned long skb_fail; |
| 191 | }; |
| 192 | |
| 193 | struct skb_fast_ioctl_info { |
| 194 | int skb_num4; //½ÓÊÕµ½µÄV4Êý¾Ý°ü |
| 195 | int skb_num6; //½ÓÊÕµ½µÄV6Êý¾Ý°ü |
| 196 | int skb_big_num; //len³¤¶È³¬¹ý1000µÄÊý¾Ý°ü£¬º¬V4ºÍV6 |
| 197 | int skb_small_num; //len³¤¶ÈСÓÚ100µÄÊý¾Ý°ü£¬º¬V4ºÍV6 |
| 198 | int skb_bytes4; //½ÓÊÕµ½µÄV4Êý¾Ý°ü×Ö½ÚÊý |
| 199 | int skb_bytes6; //½ÓÊÕµ½µÄV6Êý¾Ý°ü×Ö½ÚÊý |
| 200 | int skb_unknown; //½ÓÊÕµ½µÄδ֪ÐÒéÊý¾Ý°ü£¬°üÀ¨ARPµÈ·ÇV4ºÍV6µÄ±¨ÎÄ |
| 201 | int skb_tcpnum; //½ÓÊÕµ½µÄtcpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ |
| 202 | int skb_udpnum; //½ÓÊÕµ½µÄudpÊý¾Ý°ü£¬º¬V4ºÍV6£¬µ«²»º¬fastbrµÄ±¨ÎÄ |
| 203 | int broadcast_num4; //½ÓÊÕµ½µÄV4¹ã²¥°ü |
| 204 | int broadcast_num6; //½ÓÊÕµ½µÄV6¹ã²¥°ü |
| 205 | int multicast_num4; //½ÓÊÕµ½µÄV4×é²¥±¨ |
| 206 | int multicast_num6; //½ÓÊÕµ½µÄV6×é²¥±¨ |
| 207 | int fastnat_num; //fastnat³É¹¦µÄ±¨ÎÄ |
| 208 | int fast6_num; //fast6³É¹¦µÄ±¨ÎÄ |
| 209 | int fastbr_num; //fastbr³É¹¦µÄ±¨ÎÄ |
| 210 | int fastnat_level; //²Î¿´FAST_NET_DEVICE |
| 211 | int fastbr_level; //²¼¶ûÀàÐÍ |
| 212 | //ÏÂÃæ¼¸¸öֵΪÀÛ¼ÓÖµ£¬ÐÔÄÜÏà¹Ø |
| 213 | int irqfree_num; //ͨ¹ýÈíÖжÏÊͷŵÄskb£¬ÐÔÄÜÏà¹Ø |
| 214 | int skbcopy_num; //Êý¾Ý¿½±´µÄskb£¬ÐÔÄÜÏà¹Ø |
| 215 | int cache_copy; //net_cacheÔ´Îļþ½øÐп½±´µÄÀÛ»ý¼ÆÊý£¬ÐÔÄÜÏà¹Ø |
| 216 | int skbflood_num; //·ººéµÄskb£¬ÐÔÄÜÏà¹Ø |
| 217 | int errfree_num; //devÔ´ÎļþÖдíÎóÊͷŵÄskb¼ÆÊý£¬°üÀ¨SKB_QUEUE_STOPºÍSKB_QUEUE_LOCKÁ½¸ö¼ÆÊýÖµ |
| 218 | int frag_num; //½ÓÊÕµ½µÄ·ÖƬ±¨ÎÄ£¬ÐÔÄÜÏà¹Ø |
| 219 | int mtu_num; //fastÖÐÊý¾Ý³¤¶È´óÓÚ³ö¿Údev MTUʱ£¬fastʧ°Ü¸öÊýͳ¼Æ |
| 220 | int fast_loop; //ͶµÝ¸øÇý¶¯£¬ÓÖ´ÓÇý¶¯ÊÕµ½µÄÒì³£»Ø»·¸öÊýͳ¼Æ |
| 221 | int skb_alloc_fail ; //ÉêÇëskbʧ°ÜµÄ¸öÊýÀÛ¼ÓÖµ |
| 222 | int xmit_lock_num; //xmit_lock_owner±»Ëø×¡Ôì³ÉµÄ¶ª°üµÄÀÛ¼Ó¼ÆÊý£¬Çý¶¯Ôì³ÉµÄ |
| 223 | int xmit_stop_num; //!netif_xmit_stopped(txq)Ôì³ÉµÄ¶ª°üµÄÀÛ¼Ó¼ÆÊý£¬Çý¶¯Ôì³ÉµÄ |
| 224 | int br_mac_change_num; //ÍøÇÅmacµØÖ·±»¸Ä±ä´ÎÊý |
| 225 | int fast_tcpdump_num; //fast×¥°üÊý |
| 226 | int fast_switch; //fast×Ó¹¦ÄÜλͼ¿ª¹Ø |
| 227 | int fast_local4_rcv_num; //±¾µØfast_local4³É¹¦½ÓÊÕ±¨ÎÄ |
| 228 | int fast_local6_rcv_num; //±¾µØfast_local6³É¹¦½ÓÊÕ±¨ÎÄ |
| 229 | int fast_local4_output_num; //±¾µØfast_local4³É¹¦·¢Ëͱ¨ÎÄ |
| 230 | int fast_local6_output_num; //±¾µØfast_local6³É¹¦·¢Ëͱ¨ÎÄ |
| 231 | }; |
| 232 | |
| 233 | #define SLAB_NUM 21 |
| 234 | enum slabinfo_file { |
| 235 | SKB_SLAB = 0, |
| 236 | BRFDB_SLAB, |
| 237 | DST_SLAB, |
| 238 | FIB_TRIE_SLAB, |
| 239 | FLOW_SLAB, |
| 240 | INETPEER_SLAB, |
| 241 | INET_HASHTABLES_SLAB, |
| 242 | INET_TIMEWAIT_SOCK_SLAB, |
| 243 | MYSOCKET_SLAB, |
| 244 | NF_CONNTRACK_CORE_SLAB, |
| 245 | NF_CONNTRACK_EXCEPT_SLAB, |
| 246 | REQUEST_SOCK_SLAB, |
| 247 | SOCK_SLAB, |
| 248 | SOCKET_SLAB, |
| 249 | XFRM6_TUNNEL_SLAB, |
| 250 | XT_HASHLIMIT_SLAB, |
| 251 | SOCK_ALLOC_PAGES, |
| 252 | IP6_OUTPUT_ALLOC_PAGES, |
| 253 | IP_OUTPUT_ALLOC_PAGES, |
| 254 | SKB_ALLOC_PAGES, |
| 255 | }; |
| 256 | |
| 257 | struct slab_info { |
| 258 | int num[SLAB_NUM][2]; |
| 259 | }; |
| 260 | |
| 261 | #define HASH_ARRAY_COUNT 512 |
| 262 | struct hash_info { |
| 263 | int max_hash_size; |
| 264 | int current_hash_num; |
| 265 | int hash[HASH_ARRAY_COUNT][2]; |
| 266 | int current_array_size; |
| 267 | }; |
| 268 | |
| 269 | struct neigh_info { |
| 270 | unsigned int ip_len; //IPµØÖ·³¤¶È£¬Çø·ÖV4ºÍV6 |
| 271 | unsigned char ip_addr[IPV4ADDLEN_MAX]; |
| 272 | unsigned char mac_addr[MAX_MACADDR_LEN]; |
| 273 | }; |
| 274 | |
| 275 | #define MAX_NEIGH_NUM 20 |
| 276 | struct dev_neigh_info { |
| 277 | unsigned int num; |
| 278 | struct neigh_info neigh_nod[MAX_NEIGH_NUM]; |
| 279 | }; |
| 280 | |
| 281 | enum dev_layer { |
| 282 | L3_DEV = 0, //²ã3É豸 |
| 283 | BR_DEV, //ÍøÇŵÄL3ÌØÊâÉ豸 |
| 284 | L2_DEV, //L2²ãÉ豸 |
| 285 | }; |
| 286 | |
| 287 | enum { |
| 288 | LOCAL_L3DEV = 0, |
| 289 | LOCAL_BR_PORT, |
| 290 | NEIGH_AND_DSTDEV, |
| 291 | DEV_STATISTIC, |
| 292 | }; |
| 293 | |
| 294 | enum IFMAC_ERR { |
| 295 | ZERO_ADDRERR = 1, |
| 296 | MULTICAST_ADDRERR, |
| 297 | BROADCAST_ADDRERR, |
| 298 | }; |
| 299 | |
| 300 | /*add by jiangjing*/ |
| 301 | struct dev_and_neigh { |
| 302 | char name[20]; |
| 303 | unsigned char dev_layer; //ָʾ¸Ã±¾µØÍø¿ÚµÄÐÒé²ã£¬²Î¼ûºêÖµL3_DEV |
| 304 | /*MACµØÖ·,IPv4µØÖ·*/ |
| 305 | unsigned char mac_addr[20]; //±¾µØÍø¿ÚµØÖ· |
| 306 | unsigned int ipv4_addr; //±¾µØÍø¿ÚIPµØÖ· |
| 307 | struct dev_neigh_info dev_neigh; //¸Ã±¾µØÍø¿ÚЯ´øµÄÔ¶³ÌÁÚ¾ÓµØÖ·ÐÅÏ¢Êý×é |
| 308 | int mac_errtype; |
| 309 | }; |
| 310 | #define MAX_DEV_NUM 30 |
| 311 | /*Íø¿ÚÏà¹ØµÄÐÅÏ¢*/ |
| 312 | struct devlist_ioctl_info { |
| 313 | unsigned int num; //±¾µØÓÐÐ§Íø¿ÚµÄ¸öÊý |
| 314 | struct dev_and_neigh info[MAX_DEV_NUM]; //±¾µØÓÐÐ§Íø¿ÚµÄ¾ßÌåÐÅÏ¢²ÎÊý |
| 315 | }; |
| 316 | |
| 317 | /****×ÊԴʹÓü°ÉÏÏÞÐÅÏ¢£¬ËùÓбê×¼ÄÚºËÓÐÉÏÏÞÇé¿öµÄ£¬½ÔÐè¼ì²â£¬ÒÔ·ÀÖ¹Òì³£·¢Éú****/ |
| 318 | struct net_max_check_msg { |
| 319 | /*nf_conntrack*/ |
| 320 | unsigned long nf_conntrack_max; //nf_conntrack_max = 4832 |
| 321 | unsigned long nf_conntrack_now; //net->ct.count |
| 322 | /*enqueue*/ |
| 323 | int netdev_max_backlog; //netdev_max_backlog=1000 |
| 324 | int input_queue_len; //²Î¿´enqueue_to_backlog½Ó¿ÚʵÏÖ |
| 325 | int rx_dropped; //ÒòΪÈë¶ÓÁÐÒÑÂúÔì³ÉµÄÈë¶ÓÁжª°üµÄÀÛ¼ÓÖµ |
| 326 | /*ÐÔÄÜÏà¹Ø*/ |
| 327 | int fastnat_link_max; //nf_conntrack_max |
| 328 | int fastnat_link_now; //working_list.count |
| 329 | int fast6_link_max; //nf_conntrack_max |
| 330 | int fast6_link_now; //working_list6.count |
| 331 | /*ÍøÂçÄÚºËÔËÐÐʱµÄͳ¼ÆÖµ£¬ÖØµã¹Ø×¢½á¹¹ÌåµÄÉêÇëµã*/ |
| 332 | unsigned long br_mac_change; //ÍøÇÅmacµØÖ·±»¸Ä±ä´ÎÊý |
| 333 | unsigned long neigh_alloc; //neighbourÉêÇë´ÎÊý |
| 334 | unsigned long neigh_free; //neighbourÊͷŵãÀÛ¼ÓÖµ |
| 335 | unsigned long br_neigh_vary; //ÇŵãµÄ³ö¿ÚdevµÄmacµØÖ·±»¶à¸öpc¹²Ïí |
| 336 | unsigned long conn_alloc; //connÉêÇë´ÎÊýÀÛ¼ÓÖµ |
| 337 | unsigned long conn_free; //connÊͷŵãÀÛ¼ÓÖµ |
| 338 | unsigned long brfdb_alloc; //ÇŵãÉêÇë´ÎÊýÀÛ¼ÓÖµ |
| 339 | unsigned long dst_alloc; //dst_entryÉêÇëÀÛ¼ÓÖµ |
| 340 | unsigned long dst_free; //dst_entryÊͷŵãÀÛ¼ÓÖµ |
| 341 | unsigned long hh_update; //hh¶þ²ãmacÍ·¸üÐÂÀÛ¼ÓÖµ |
| 342 | unsigned long rt_cache_invalid; //Çå¿Õ·ÓÉcacheµÄÀÛ¼ÓÖµ |
| 343 | unsigned long rt_hash_add; //ÐÂÔört_hash_table½ÚµãµÄÀÛ¼ÓÖµ |
| 344 | unsigned long rt_hash_del; //ɾ³ýrt_hash_table½ÚµãµÄÀÛ¼ÓÖµ |
| 345 | unsigned long ssmac_change_indev; //ͬһԴMACµØÖ·Èë¿Údev¸Ä±äµÄ´ÎÊý |
| 346 | }; |
| 347 | |
| 348 | struct ptype_info { |
| 349 | unsigned long ptype_all[5]; |
| 350 | unsigned long ptype_base[15]; |
| 351 | }; |
| 352 | |
| 353 | |
| 354 | struct pkt_lost_stats { |
| 355 | unsigned int send_drops; |
| 356 | unsigned int send_drop_bytes; |
| 357 | unsigned int recv_drops; |
| 358 | unsigned int recv_drop_bytes; |
| 359 | unsigned int total_packets; |
| 360 | unsigned int total_bytes; |
| 361 | }; |
| 362 | |
| 363 | struct pkt_lost_info { |
| 364 | struct pkt_lost_stats stats[2]; /*0:origin·½Ïò£¬1:reply·½Ïò*/ |
| 365 | }; |
| 366 | |
| 367 | |
| 368 | struct tcp_sock_stat { |
| 369 | unsigned long tcp_recv_num; |
| 370 | unsigned long tcp_send_num; |
| 371 | unsigned long tcp_retrans_num; |
| 372 | unsigned long tcp_recv_drops; |
| 373 | unsigned long tcp_send_drops; |
| 374 | unsigned long tcp_rst_send; |
| 375 | unsigned long tcp_rst_recv; |
| 376 | }; |
| 377 | |
| 378 | |
| 379 | //½Ó¿ÚÉùÃ÷ |
| 380 | extern int netioctl_handle(int cmd, void *val); |
| 381 | |
| 382 | #endif //end _ZXIC_IOCTL_H_ |
| 383 | |