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

📄 skbuff.h

📁 这是一个符合posix.13 pse51的实时内核
💻 H
字号:
#ifndef __SKBUFF__
#define __SKBUFF__

#include <linux/compatib.h>

#define HAVE_ALLOC_SKB		/* For the drivers to know */
#define HAVE_ALIGNABLE_SKB	/* Ditto 8)		   */


#define FREE_READ	1
#define FREE_WRITE	0

#define CHECKSUM_NONE 0
#define CHECKSUM_HW 1
#define CHECKSUM_UNNECESSARY 2


struct sk_buff_head 
{
	struct sk_buff	* next;
	struct sk_buff	* prev;
	__u32		qlen;		/* Must be same length as a pointer
					   for using debugging */
#if CONFIG_SKB_CHECK
	int		magic_debug_cookie;
#endif
};


struct sk_buff 
{
	struct sk_buff	* next;			/* Next buffer in list 				*/
	struct sk_buff	* prev;			/* Previous buffer in list 			*/
	struct sk_buff_head * list;		/* List we are on				*/
#if CONFIG_SKB_CHECK
	int		magic_debug_cookie;
#endif
#if 0
	struct sk_buff	*link3;			/* Link for IP protocol level buffer chains 	*/
#endif

#if 0
	struct sock	*sk;			/* Socket we are owned by 			*/
#endif
	struct device	*dev;			/* Device we arrived on/are leaving by		*/
#ifdef NOTWORK
	unsigned long	when;			/* used to compute rtt's			*/
	struct timeval	stamp;			/* Time we arrived				*/
	union 
	{
		struct tcphdr	*th;
		struct ethhdr	*eth;
		struct iphdr	*iph;
		struct udphdr	*uh;
		unsigned char	*raw;
		/* for passing file handles in a unix domain socket */
		void *filp;
	} h;
  
	union 
	{	
		/* As yet incomplete physical layer views */
	  	unsigned char 	*raw;
	  	struct ethhdr	*ethernet;
	} mac;
  
	struct iphdr	*ip_hdr;		/* For IPPROTO_RAW 				*/

#endif /*NOTWORK*/


	unsigned long 	len;			/* Length of actual data			*/
#if 0
	unsigned long	csum;			/* Checksum 					*/
	__u32		saddr;			/* IP source address				*/
	__u32		daddr;			/* IP target address				*/
	__u32		raddr;			/* IP next hop address				*/
	__u32		seq;			/* TCP sequence number				*/
	__u32		end_seq;		/* seq [+ fin] [+ syn] + datalen		*/
	__u32		ack_seq;		/* TCP ack sequence number			*/
	unsigned char	proto_priv[16];	        /* Protocol private data			*/
#endif
	volatile char 	acked,			/* Are we acked ?				*/
			used,			/* Are we in use ?				*/
			free,			/* How to free this buffer			*/
			arp;			/* Has IP/ARP resolution finished		*/
#if 0
	unsigned char	tries,			/* Times tried					*/
  			lock,			/* Are we locked ?				*/
  			localroute,		/* Local routing asserted for this frame	*/
  			pkt_type,		/* Packet class					*/
  			pkt_bridged,		/* Tracker for bridging 			*/
#endif
    unsigned char	ip_summed;		/* Driver fed us an IP checksum			*/
#if 0
#define PACKET_HOST		0		/* To us					*/
#define PACKET_BROADCAST	1		/* To all					*/
#define PACKET_MULTICAST	2		/* To group					*/
#define PACKET_OTHERHOST	3		/* To someone else 				*/
	unsigned short	users;			/* User count - see datagram.c,tcp.c 		*/
#endif 
	unsigned short	protocol;		/* Packet protocol from driver. 		*/
#if 0
	unsigned int	truesize;		/* Buffer size 					*/



	atomic_t	count;			/* reference count				*/


	struct sk_buff	*data_skb;		/* Link to the actual data skb			*/
#endif 
	unsigned char	*head;			/* Head of buffer 				*/
	unsigned char	*data;			/* Data head pointer				*/
	unsigned char	*tail;			/* Tail pointer					*/
#if 0
	unsigned char 	*end;			/* End pointer					*/
	void 		(*destructor)(struct sk_buff *);	/* Destruct function		*/
	__u16		redirport;		/* Redirect port				*/
#endif 
};

#define dev_kfree_skb(a,b)
#define alloc_skb(a,b) dev_alloc_skb(a)
/* #define skb_device_unlock(skb); */
extern struct sk_buff *		dev_alloc_skb(unsigned int size);
extern unsigned char *		skb_put(struct sk_buff *skb, int len);
extern void skb_queue_head_init(struct sk_buff_head *list);
extern struct sk_buff *		skb_clone(struct sk_buff *skb, int priority);

#endif

⌨️ 快捷键说明

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