[313] | 1 | /*
|
---|
| 2 | * TINET (TCP/IP Protocol Stack)
|
---|
| 3 | *
|
---|
| 4 | * Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
|
---|
| 5 | * Tomakomai National College of Technology, JAPAN
|
---|
| 6 | *
|
---|
| 7 | * ä¸è¨èä½æ¨©è
|
---|
| 8 | ã¯ï¼ä»¥ä¸ã® (1)ï½(4) ã®æ¡ä»¶ãï¼Free Software Foundation
|
---|
| 9 | * ã«ãã£ã¦å
|
---|
| 10 | ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨
|
---|
| 11 | * è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢
|
---|
| 12 | * ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
| 13 | å¸ï¼ä»¥ä¸ï¼
|
---|
| 14 | * å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
| 15 | * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
| 16 | * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
| 17 | * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
| 18 | * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
| 19 | * ç¨ã§ããå½¢ã§åé
|
---|
| 20 | å¸ããå ´åã«ã¯ï¼åé
|
---|
| 21 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨
|
---|
| 22 | * è
|
---|
| 23 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
|
---|
| 24 | * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
| 25 | * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
| 26 | * ç¨ã§ããªãå½¢ã§åé
|
---|
| 27 | å¸ããå ´åã«ã¯ï¼æ¬¡ã®æ¡ä»¶ãæºãããã¨ï¼
|
---|
| 28 | * (a) åé
|
---|
| 29 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
| 30 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
|
---|
| 31 | * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
| 32 | * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
| 33 | * 害ãããï¼ä¸è¨èä½æ¨©è
|
---|
| 34 | ããã³TOPPERSããã¸ã§ã¯ããå
|
---|
| 35 | 責ãããã¨ï¼
|
---|
| 36 | *
|
---|
| 37 | * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è
|
---|
| 38 | ã
|
---|
| 39 | * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã
|
---|
| 40 | * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´
|
---|
| 41 | * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
| 42 | *
|
---|
| 43 | * @(#) $Id: net_buf.h 313 2017-07-23 04:50:32Z coas-nagasima $
|
---|
| 44 | */
|
---|
| 45 |
|
---|
| 46 | #ifndef _NET_BUF_H_
|
---|
| 47 | #define _NET_BUF_H_
|
---|
| 48 |
|
---|
| 49 | /*
|
---|
| 50 | * ãããã¯ã¼ã¯ãããã¡
|
---|
| 51 | *
|
---|
| 52 | * 4 ãªã¯ãããã§ã¢ã©ã¤ã³ããå¿
|
---|
| 53 | è¦ã®ããããã»ããµãèæ
|
---|
| 54 | ®ãã¦ã
|
---|
| 55 | * IF ããããµã¤ãºã 4 ãªã¯ãããå¢çã§ãªãã®å ´åã
|
---|
| 56 | * IP ããã以éã 4 ãªã¯ãããå¢çã«èª¿æ´ããã
|
---|
| 57 | */
|
---|
| 58 |
|
---|
| 59 | #ifndef CPU_NET_ALIGN
|
---|
| 60 | #error "CPU_NET_ALIGN expected."
|
---|
| 61 | #endif
|
---|
| 62 |
|
---|
| 63 | /*
|
---|
| 64 | * ãã³ãã¬ã¼ã
|
---|
| 65 | */
|
---|
| 66 |
|
---|
| 67 | struct t_net_buf {
|
---|
| 68 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 69 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 70 | uint8_t flags; /* ãã©ã° */
|
---|
| 71 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 72 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 73 | #endif
|
---|
| 74 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 75 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 76 | #endif
|
---|
| 77 | uint8_t buf[IF_MIN_LEN]; /* ãããã¡æ¬ä½ */
|
---|
| 78 | };
|
---|
| 79 |
|
---|
| 80 | #ifndef T_NET_BUF_DEFINED
|
---|
| 81 |
|
---|
| 82 | typedef struct t_net_buf T_NET_BUF;
|
---|
| 83 |
|
---|
| 84 | #define T_NET_BUF_DEFINED
|
---|
| 85 |
|
---|
| 86 | #endif /* of #ifndef T_NET_BUF_DEFINED */
|
---|
| 87 |
|
---|
| 88 | /*
|
---|
| 89 | * 64 ãªã¯ããã
|
---|
| 90 | */
|
---|
| 91 |
|
---|
| 92 | typedef struct t_net_buf_64 {
|
---|
| 93 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 94 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 95 | uint8_t flags; /* ãã©ã° */
|
---|
| 96 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 97 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 98 | #endif
|
---|
| 99 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 100 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 101 | #endif
|
---|
| 102 | uint8_t buf[64]; /* ãããã¡æ¬ä½ */
|
---|
| 103 | } T_NET_BUF_64;
|
---|
| 104 |
|
---|
| 105 | /*
|
---|
| 106 | * 128 ãªã¯ããã
|
---|
| 107 | */
|
---|
| 108 |
|
---|
| 109 | typedef struct t_net_buf_128 {
|
---|
| 110 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 111 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 112 | uint8_t flags; /* ãã©ã° */
|
---|
| 113 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 114 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 115 | #endif
|
---|
| 116 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 117 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 118 | #endif
|
---|
| 119 | uint8_t buf[128]; /* ãããã¡æ¬ä½ */
|
---|
| 120 | } T_NET_BUF_128;
|
---|
| 121 |
|
---|
| 122 | /*
|
---|
| 123 | * 256 ãªã¯ããã
|
---|
| 124 | */
|
---|
| 125 |
|
---|
| 126 | typedef struct t_net_buf_256 {
|
---|
| 127 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 128 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 129 | uint8_t flags; /* ãã©ã° */
|
---|
| 130 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 131 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 132 | #endif
|
---|
| 133 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 134 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 135 | #endif
|
---|
| 136 | uint8_t buf[256]; /* ãããã¡æ¬ä½ */
|
---|
| 137 | } T_NET_BUF_256;
|
---|
| 138 |
|
---|
| 139 | /*
|
---|
| 140 | * 512 ãªã¯ããã
|
---|
| 141 | */
|
---|
| 142 |
|
---|
| 143 | typedef struct t_net_buf_512 {
|
---|
| 144 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 145 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 146 | uint8_t flags; /* ãã©ã° */
|
---|
| 147 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 148 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 149 | #endif
|
---|
| 150 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 151 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 152 | #endif
|
---|
| 153 | uint8_t buf[512];/* ãããã¡æ¬ä½ */
|
---|
| 154 | } T_NET_BUF_512;
|
---|
| 155 |
|
---|
| 156 | /*
|
---|
| 157 | * 1024 ãªã¯ããã
|
---|
| 158 | */
|
---|
| 159 |
|
---|
| 160 | typedef struct t_net_buf_1024 {
|
---|
| 161 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 162 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 163 | uint8_t flags; /* ãã©ã° */
|
---|
| 164 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 165 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 166 | #endif
|
---|
| 167 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 168 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 169 | #endif
|
---|
| 170 | uint8_t buf[1024]; /* ãããã¡æ¬ä½ */
|
---|
| 171 | } T_NET_BUF_1024;
|
---|
| 172 |
|
---|
| 173 | /*
|
---|
| 174 | * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹ã®æ大 PDU ãµã¤ãº
|
---|
| 175 | */
|
---|
| 176 |
|
---|
| 177 | #if defined(IF_PDU_SIZE)
|
---|
| 178 |
|
---|
| 179 | typedef struct t_net_buf_if_pdu {
|
---|
| 180 | uint16_t len; /* ãã¼ã¿ã®é·ã */
|
---|
| 181 | uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */
|
---|
| 182 | uint8_t flags; /* ãã©ã° */
|
---|
| 183 | #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
|
---|
| 184 | uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
|
---|
| 185 | #endif
|
---|
| 186 | #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
|
---|
| 187 | uint8_t halign[4 - IF_HDR_ALIGN];
|
---|
| 188 | #endif
|
---|
| 189 | uint8_t buf[IF_PDU_SIZE];
|
---|
| 190 | /* ãããã¡æ¬ä½ */
|
---|
| 191 | #if defined(IF_PDU_HDR_PADDING)
|
---|
| 192 | uint8_t padding[IF_PDU_HDR_PADDING];
|
---|
| 193 | #endif /* ãããã®ä½å */
|
---|
| 194 | } T_NET_BUF_IF_PDU;
|
---|
| 195 |
|
---|
| 196 | #endif /* of #if defined(IF_PDU_SIZE) */
|
---|
| 197 |
|
---|
| 198 | /*
|
---|
| 199 | * ãããã¯ã¼ã¯ãããã¡è¡¨
|
---|
| 200 | */
|
---|
| 201 |
|
---|
| 202 | typedef struct t_net_buf_entry {
|
---|
| 203 |
|
---|
| 204 | uint16_t index;
|
---|
| 205 | uint_t size;
|
---|
| 206 |
|
---|
| 207 | #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF
|
---|
| 208 |
|
---|
| 209 | ulong_t prepares;
|
---|
| 210 | ulong_t busies;
|
---|
| 211 | ulong_t requests;
|
---|
| 212 | ulong_t allocs;
|
---|
| 213 | ulong_t errors;
|
---|
| 214 |
|
---|
| 215 | #endif /* of #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF */
|
---|
| 216 |
|
---|
| 217 | } T_NET_BUF_ENTRY;
|
---|
| 218 |
|
---|
| 219 | /*
|
---|
| 220 | * ãããã¯ã¼ã¯ãããã¡ã»ãã©ã°
|
---|
| 221 | */
|
---|
| 222 |
|
---|
| 223 | /*
|
---|
| 224 | * ãããã¯ã¼ã¯ã¤ã³ã¿ãã§ã¼ã¹åºåå¾ã«ãããã¯ã¼ã¯ãããã¡ãéæ¾ããªãã
|
---|
| 225 | * 注æ: åºåå¾ã«ãã®ãã©ã°ã¯ã¯ãªã¢ãããã
|
---|
| 226 | */
|
---|
| 227 | #define NB_FLG_NOREL_IFOUT UINT_C(0x80)
|
---|
| 228 |
|
---|
| 229 | /*
|
---|
| 230 | * ESP ç¨ãã©ã°
|
---|
| 231 | */
|
---|
| 232 | #define NB_FLG_DECRYPED UINT_C(0x40)
|
---|
| 233 |
|
---|
| 234 | /*
|
---|
| 235 | * ãããã¯ã¼ã¯ãããã¡ç²å¾å±æ§
|
---|
| 236 | */
|
---|
| 237 |
|
---|
| 238 | /* æ¢ç´¢å±æ§ */
|
---|
| 239 |
|
---|
| 240 | #define NBA_SEARCH_ASCENT UINT_C(0x1000) /* 大ããªãµã¤ãºã®æ¹åã«æ¢ç´¢ããã */
|
---|
| 241 | #define NBA_SEARCH_DESCENT UINT_C(0x2000) /* å°ããªãµã¤ãºã®æ¹åã«æ¢ç´¢ããã */
|
---|
| 242 | #define NBA_RESERVE_TCP UINT_C(0x4000) /* TCP ç¨ã«ãããã¯ã¼ã¯ãããã¡ãäºç´ããã*/
|
---|
| 243 | #define NBA_ID_MASK UINT_C(0x0fff) /* éä¿¡ç«¯ç¹ ID ã渡ãå ´åã®ãã¹ã¯å¤ */
|
---|
| 244 |
|
---|
| 245 | /*
|
---|
| 246 | * é¢æ°ã·ãã¥ã¬ã¼ã·ã§ã³ãã¯ã
|
---|
| 247 | */
|
---|
| 248 |
|
---|
| 249 | #define get_net_buf(b,l) tget_net_buf((b),(l),TMO_FEVR)
|
---|
| 250 |
|
---|
| 251 | /*
|
---|
| 252 | * é¢æ°
|
---|
| 253 | */
|
---|
| 254 |
|
---|
| 255 | extern ER tget_net_buf_ex (T_NET_BUF **blk, uint_t minlen, uint_t maxlen, ATR nbatr, TMO tmout);
|
---|
| 256 | extern ER tget_net_buf (T_NET_BUF **blk, uint_t len, TMO tmout);
|
---|
| 257 | extern ER rel_net_buf (T_NET_BUF *blk);
|
---|
| 258 | extern ER rus_net_buf (T_NET_BUF *blk);
|
---|
| 259 | extern ER_UINT net_buf_siz (T_NET_BUF *blk);
|
---|
| 260 | extern uint_t net_buf_max_siz (void);
|
---|
| 261 | extern const T_NET_BUF_ENTRY *nbuf_get_tbl (void);
|
---|
| 262 | extern uint_t nbuf_get_tbl_size (void);
|
---|
| 263 |
|
---|
| 264 | #endif /* of #ifndef _NET_BUF_H_ */
|
---|