⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interface.h

📁 一个基于linux的TCP/IP协议栈的实现
💻 H
字号:
/* interface.h * linqianghe@163.com * 2006-10-19 */#ifndef INCLUDED_INTERFACE_H#define INCLUDED_INTERFACE_H#include <sys/socket.h>#include <net/if.h>#include <net/if_arp.h>#ifndef IFNAMSIZ#define	IFNAMSIZ	16#endifstruct user_net_device_stats {    unsigned long long rx_packets;	/* total packets received       */    unsigned long long tx_packets;	/* total packets transmitted    */    unsigned long long rx_bytes;	/* total bytes received         */    unsigned long long tx_bytes;	/* total bytes transmitted      */    unsigned long rx_errors;	/* bad packets received         */    unsigned long tx_errors;	/* packet transmit problems     */    unsigned long rx_dropped;	/* no space in linux buffers    */    unsigned long tx_dropped;	/* no space available in linux  */    unsigned long rx_multicast;	/* multicast packets received   */    unsigned long rx_compressed;    unsigned long tx_compressed;    unsigned long collisions;    /* detailed rx_errors: */    unsigned long rx_length_errors;    unsigned long rx_over_errors;	/* receiver ring buff overflow  */    unsigned long rx_crc_errors;	/* recved pkt with crc error    */    unsigned long rx_frame_errors;	/* recv'd frame alignment error */    unsigned long rx_fifo_errors;	/* recv'r fifo overrun          */    unsigned long rx_missed_errors;	/* receiver missed packet     */    /* detailed tx_errors */    unsigned long tx_aborted_errors;    unsigned long tx_carrier_errors;    unsigned long tx_fifo_errors;    unsigned long tx_heartbeat_errors;    unsigned long tx_window_errors;};struct interface {    struct interface *next, *prev;     char name[IFNAMSIZ];	/* interface name        */    short type;			/* if type               */    short flags;		/* various flags         */    int metric;			/* routing metric        */    int mtu;			/* MTU value             */    int tx_queue_len;		/* transmit queue length */    struct ifmap map;		/* hardware setup        */    struct sockaddr addr;	/* IP address            */    struct sockaddr dstaddr;	/* P-P IP address        */    struct sockaddr broadaddr;	/* IP broadcast address  */    struct sockaddr netmask;	/* IP network mask       */    struct sockaddr ipxaddr_bb;	/* IPX network address   */    struct sockaddr ipxaddr_sn;	/* IPX network address   */    struct sockaddr ipxaddr_e3;	/* IPX network address   */    struct sockaddr ipxaddr_e2;	/* IPX network address   */    struct sockaddr ddpaddr;	/* Appletalk DDP address */    struct sockaddr ecaddr;	/* Econet address        */    int has_ip;    int has_ipx_bb;    int has_ipx_sn;    int has_ipx_e3;    int has_ipx_e2;    int has_ax25;    int has_ddp;    int has_econet;    char hwaddr[32];		/* HW address            */    int statistics_valid;    struct user_net_device_stats stats;		/* statistics            */    int keepalive;		/* keepalive value for SLIP */    int outfill;		/* outfill value for SLIP */};extern int if_fetch(struct interface *ife);extern int for_all_interfaces(int (*)(struct interface *, void *), void *);extern int free_interface_list(void);extern struct interface *lookup_interface(char *name);extern int if_readlist(void);extern int do_if_fetch(struct interface *ife);extern int do_if_print(struct interface *ife, void *cookie);extern void ife_print(struct interface *ptr);extern int ife_short;extern const char *if_port_text[][4];/* Defines for poor glibc2.0 users, the feature check is done at runtime */#if !defined(SIOCSIFTXQLEN)#define SIOCSIFTXQLEN      0x8943#define SIOCGIFTXQLEN      0x8942#endif#if !defined(ifr_qlen)/* Actually it is ifru_ivalue, but that is not present in 2.0 kernel headers */   #define ifr_qlen        ifr_ifru.ifru_mtu#endif#define HAVE_TXQUEUELEN#define HAVE_DYNAMIC#ifndef IFF_DYNAMIC#define IFF_DYNAMIC	0x8000	/* dialup device with changing addresses */#endif#endif //INCLUDED_INTERFACE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -