00001
00055 #ifndef IxOsBuffMgt_inc
00056 #define IxOsBuffMgt_inc
00057
00058 #ifdef __vxworks
00059
00060 #include <vxWorks.h>
00061 #include <net/mbuf.h>
00062 #include <netBufLib.h>
00063
00064 #define m_net_pool m_pkthdr.rcvif
00065
00066 #define IX_MBUF M_BLK
00067
00068 #else
00069
00070 #include <linux/skbuff.h>
00071
00072 typedef struct __IX_MBUF
00073 {
00074 struct __IX_MBUF *ix_next __attribute__ ((aligned(32)));
00075 struct __IX_MBUF *ix_nextPacket;
00076 char *ix_data;
00077 int ix_len;
00078 unsigned char ix_type;
00079 unsigned char ix_flags;
00080 unsigned short ix_reserved;
00081
00082 struct
00083 {
00084 unsigned int ix_pool;
00085 unsigned int len;
00086 } ix_pktHeader;
00087
00088 void *priv;
00089 } IX_MBUF;
00090
00091 #define m_next ix_next
00092 #define m_len ix_len
00093 #define m_data ix_data
00094 #define m_type ix_type
00095 #define m_flags ix_flags
00096 #define m_nextpkt ix_nextPacket
00097 #define m_act ix_nextPacket
00098 #define m_pkthdr ix_pktHeader
00099 #define m_net_pool ix_pktHeader.ix_pool
00100
00101 #define SIZEOF_IP_HEADER sizeof(struct iphdr)
00102
00103
00104
00105
00106
00107 static inline struct sk_buff *mbuf_swap_skb(IX_MBUF *mbuf, struct sk_buff *skb)
00108 {
00109 struct sk_buff *res = mbuf->priv;
00110 mbuf->priv = skb;
00111
00112 if (!skb)
00113 return res;
00114
00115 mbuf->m_data = skb->data;
00116 mbuf->ix_pktHeader.len = mbuf->m_len = skb->len;
00117
00118 return res;
00119 }
00120
00121 #endif
00122
00123
00124
00130 #define IX_MBUF_MDATA(m_blk_ptr) (m_blk_ptr)->m_data
00131
00137 #define IX_MBUF_MLEN(m_blk_ptr) (m_blk_ptr)->m_len
00138
00144 #define IX_MBUF_TYPE(m_blk_ptr) (m_blk_ptr)->m_type
00145
00151 #define IX_MBUF_NEXT_BUFFER_IN_PKT_PTR(m_blk_ptr) (m_blk_ptr)->m_next
00152
00158 #define IX_MBUF_NEXT_PKT_IN_CHAIN_PTR(m_blk_ptr) (m_blk_ptr)->m_nextpkt
00159
00165 #define IX_MBUF_ALLOCATED_BUFF_LEN(m_blk_ptr) (m_blk_ptr)->m_len
00166
00172 #define IX_MBUF_PKT_LEN(m_blk_ptr) (m_blk_ptr)->m_pkthdr.len
00173
00179 #define IX_MBUF_FLAGS(m_blk_ptr) (m_blk_ptr)->m_flags
00180
00186 #if defined __vxworks
00187 #define IX_MBUF_NET_POOL(m_blk_ptr) (m_blk_ptr)->pClBlk->pNetPool
00188 #elif defined __linux
00189 #define IX_MBUF_NET_POOL(m_blk_ptr) (m_blk_ptr)->m_net_pool
00190 #endif
00191
00192 #endif