Ignore:
Timestamp:
Jan 21, 2018, 12:10:09 AM (6 years ago)
Author:
coas-nagasima
Message:

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip_var.h

    r321 r331  
    22 *  TINET (TCP/IP Protocol Stack)
    33 *
    4  *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
     4 *  Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
     
    7171#define _IP_VAR_H_
    7272
    73 /*
    74  *  IPv4 ヘッダ・ペイロードアクセスマクロ
    75  */
    76 
    77 #define IF_IP4_HDR_SIZE                 (IF_HDR_SIZE + IP4_HDR_SIZE)
    78 
    79 #define GET_IP4_HDR(nbuf)               ((T_IP4_HDR*)((nbuf)->buf + IF_HDR_SIZE))
    80 #define GET_IP4_SDU(nbuf)               ((uint8_t*)((nbuf)->buf) + GET_IF_IP4_HDR_SIZE(nbuf))
    81 
    82 #define GET_IP4_HDR_SIZE(iph)           ((uint8_t)IP4_VHL_HL((iph)->vhl) << 2)
    83 #define GET_IP4_SDU_SIZE(iph)           (ntohs((iph)->len) - GET_IP4_HDR_SIZE(iph))
    84 #define GET_IF_IP4_HDR_SIZE(nbuf)       (IF_HDR_SIZE + (GET_IP4_HDR_SIZE(GET_IP4_HDR(nbuf))))
    85 
    86 #define SET_IP4_SDU_SIZE(iph,slen)      ((iph)->len=(uint16_t)htons((slen) + IP4_HDR_SIZE))
     73#include <netinet/ip4_var.h>
     74#include <netinet6/ip6_var.h>
    8775
    8876/*
     
    9078 */
    9179
    92 #if defined(SUPPORT_INET4)
     80#define GET_IP_VER(nbuf)                (*(uint8_t*)((nbuf)->buf+IF_HDR_SIZE)>>4)
    9381
    94 #define T_TCP_IP_Q_HDR                  T_TCP_IP4_Q_HDR
     82#if defined(_IP6_CFG)
    9583
    96 #define IF_IP_HDR_SIZE                  IF_IP4_HDR_SIZE
     84#if defined(_IP4_CFG)
     85
     86#define IF_IP_HDR_SIZE(nbuf)            (GET_IP_VER(nbuf)==IPV6_VERSION?IF_IP6_HDR_SIZE:IF_IP4_HDR_SIZE)
     87#define IF_IP_NET_HDR_SIZE(addr)        (IN6_IS_ADDR_V4MAPPED(addr)?IF_IP4_HDR_SIZE:IF_IP6_HDR_SIZE)
     88
     89#define IP_OUTPUT(nbuf,tmout)           (GET_IP_VER(nbuf)==IPV6_VERSION?ip6_output(nbuf,0,tmout):ip_output(nbuf,tmout))
     90#define IP_REMOVE_OPTIONS(nbuf)         (GET_IP_VER(nbuf)==IPV6_VERSION?ip6_remove_exthdrs(nbuf):ip_remove_options(nbuf))
     91
     92#define GET_IP_HDR(nbuf)                (GET_IP_VER(nbuf)==IPV6_VERSION?GET_IP6_HDR(nbuf):GET_IP4_HDR(nbuf))
     93#define GET_IP_HDR_SIZE(nbuf)           (GET_IP_VER(nbuf)==IPV6_VERSION?GET_IP6_HDR_SIZE(nbuf):GET_IP4_HDR_SIZE(nbuf))
     94#define GET_IP_SDU_SIZE(nbuf)           (GET_IP_VER(nbuf)==IPV6_VERSION?GET_IP6_SDU_SIZE(nbuf):GET_IP4_SDU_SIZE(nbuf))
     95#define GET_IF_IP_HDR_SIZE(nbuf)        (GET_IP_VER(nbuf)==IPV6_VERSION?GET_IF_IP6_HDR_SIZE(nbuf):GET_IF_IP4_HDR_SIZE(nbuf))
     96#define GET_IP_TCP_Q_HDR_OFFSET(nbuf)   (GET_IP_VER(nbuf)==IPV6_VERSION?\
     97                                        ((T_IP6_TCP_Q_HDR*)GET_IP6_HDR(nbuf))->thoff:((T_IP4_TCP_Q_HDR*)GET_IP4_HDR(nbuf))->thoff)
     98
     99#define SET_IP_CF(nbuf,cf)              (GET_IP_VER(nbuf)==IPV6_VERSION?SET_IP6_CF(nbuf,cf):(0))
     100#define SET_IP_SDU_SIZE(nbuf,len)       (GET_IP_VER(nbuf)==IPV6_VERSION?SET_IP6_SDU_SIZE(nbuf,len):SET_IP4_SDU_SIZE(nbuf,len))
     101#define SET_IP_TCP_Q_HDR_OFFSET(nbuf,thoff)     \
     102                                        (GET_IP_VER(nbuf)==IPV6_VERSION\
     103                                                ?(((T_IP6_TCP_Q_HDR*)GET_IP6_HDR(nbuf))->thoff=thoff)\
     104                                                :(((T_IP4_TCP_Q_HDR*)GET_IP4_HDR(nbuf))->thoff=thoff))
     105
     106#else   /* of #if defined(_IP4_CFG) */
     107
     108#define IF_IP_HDR_SIZE(nbuf)            IF_IP6_HDR_SIZE
     109#define IF_IP_NET_HDR_SIZE(addr)        IF_IP6_HDR_SIZE
     110
     111#define IP_OUTPUT(nbuf,tmout)           ip6_output(nbuf,0,tmout)
     112#define IP_REMOVE_OPTIONS(nbuf)         ip6_remove_exthdrs(nbuf)
     113
     114#define GET_IP_HDR(nbuf)                GET_IP6_HDR(nbuf)
     115#define GET_IP_HDR_SIZE(nbuf)           GET_IP6_HDR_SIZE(nbuf)
     116#define GET_IP_SDU_SIZE(nbuf)           GET_IP6_SDU_SIZE(nbuf)
     117#define GET_IF_IP_HDR_SIZE(nbuf)        GET_IF_IP6_HDR_SIZE(nbuf)
     118#define GET_IP_TCP_Q_HDR_OFFSET(nbuf)   (((T_IP6_TCP_Q_HDR*)GET_IP6_HDR(nbuf))->thoff)
     119
     120#define SET_IP_CF(nbuf,cf)              SET_IP6_CF(nbuf,cf)
     121#define SET_IP_SDU_SIZE(nbuf,len)       SET_IP6_SDU_SIZE(nbuf,len)
     122#define SET_IP_TCP_Q_HDR_OFFSET(nbuf,thoff)     \
     123                                        (((T_IP6_TCP_Q_HDR*)GET_IP6_HDR(nbuf))->thoff=thoff)
     124
     125#endif  /* of #if defined(_IP4_CFG) */
     126
     127#else   /* of #if defined(_IP6_CFG) */
     128
     129#if defined(_IP4_CFG)
     130
     131#define IF_IP_HDR_SIZE(nbuf)            IF_IP4_HDR_SIZE
     132#define IF_IP_NET_HDR_SIZE(addr)        IF_IP4_HDR_SIZE
     133
     134#define IP_OUTPUT(nbuf,tmout)           ip_output(nbuf,tmout)
     135#define IP_REMOVE_OPTIONS(nbuf)         ip_remove_options(nbuf)
    97136
    98137#define GET_IP_HDR(nbuf)                GET_IP4_HDR(nbuf)
    99 #define GET_IP_SDU(nbuf)                GET_IP4_SDU(nbuf)
     138#define GET_IP_HDR_SIZE(nbuf)           GET_IP4_HDR_SIZE(nbuf)
     139#define GET_IP_SDU_SIZE(nbuf)           GET_IP4_SDU_SIZE(nbuf)
     140#define GET_IF_IP_HDR_SIZE(nbuf)        GET_IF_IP4_HDR_SIZE(nbuf)
     141#define GET_IP_TCP_Q_HDR_OFFSET(nbuf)   (((T_IP4_TCP_Q_HDR*)GET_IP4_HDR(nbuf))->thoff)
    100142
    101 #define GET_IP_HDR_SIZE(iph)            GET_IP4_HDR_SIZE(iph)
    102 #define GET_IP_SDU_SIZE(iph)            GET_IP4_SDU_SIZE(iph)
    103 #define GET_IF_IP_HDR_SIZE(nbuf)        GET_IF_IP4_HDR_SIZE(nbuf)
     143#define SET_IP_SDU_SIZE(nbuf,len)       SET_IP4_SDU_SIZE(nbuf,len)
     144#define SET_IP_TCP_Q_HDR_OFFSET(nbuf,thoff)     \
     145                                        (((T_IP4_TCP_Q_HDR*)GET_IP4_HDR(nbuf))->thoff=thoff)
    104146
    105 #define SET_IP_SDU_SIZE(iph,len)        SET_IP4_SDU_SIZE(iph,len)
     147#else   /* of #if defined(_IP4_CFG) */
    106148
    107 #define IP_OUTPUT(nbuf,tmout)           ip_output(nbuf,tmout)
    108 #define IP_INIT()                       ip_init()
    109 #define IP_REMOVE_OPTIONS(nbuf)         ip_remove_options(nbuf)
     149#error "not implemented."
    110150
    111 #endif  /* of #if defined(SUPPORT_INET4) */
     151#endif  /* of #if defined(_IP4_CFG) */
    112152
    113 /*
    114  *  IP の MSS サイズのネットワークバッファ
    115  */
    116 
    117 typedef struct t_net_buf_ip_mss {
    118         uint16_t        len;    /* データの長さ               */
    119         uint8_t         idix;   /* mpfid のインデックス        */
    120         uint8_t         flags;  /* フラグ          */
    121 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    122         uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
    123 #endif
    124 #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
    125         uint8_t         halign[4 - IF_HDR_ALIGN];
    126 #endif
    127         uint8_t         buf[IF_HDR_SIZE + IP4_MSS];
    128                                 /* バッファ本体               */
    129         } T_NET_BUF_IP_MSS;
    130 
    131 /*
    132  *  65536 オクテットサイズのネットワークバッファ
    133  */
    134 
    135 typedef struct t_net_buf4_65536 {
    136         uint16_t        len;    /* データの長さ               */
    137         uint8_t         idix;   /* mpfid のインデックス        */
    138         uint8_t         flags;  /* フラグ          */
    139 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    140         uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
    141 #endif
    142 #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
    143         uint8_t         halign[4 - IF_HDR_ALIGN];
    144 #endif
    145         uint8_t         buf[IF_IP4_HDR_SIZE + 65536];
    146                                 /* バッファ本体               */
    147 #if defined(IF_PDU_HDR_PADDING)
    148         uint8_t         padding[IF_PDU_HDR_PADDING];
    149 #endif                          /* ヘッダの余分               */
    150         } T_NET_BUF4_65536;
    151 
    152 #ifdef IP4_CFG_FRAGMENT
    153 
    154 /*
    155  *  再構成キュー用 IPv4 ヘッダの定義
    156  */
    157 
    158 typedef struct t_qip4_hdr {
    159         uint8_t         vhl;            /* version << 4 | header length >> 2    */
    160                                         /* length は 4 octets 単位         */
    161         uint8_t         type;           /* type of services                     */
    162         uint16_t        len;            /* total length                         */
    163 
    164         uint16_t        id;             /* identification                       */
    165         uint16_t        flg_off;        /* fragment flag & offset               */
    166 
    167         uint8_t         ttl;            /* time to live                         */
    168         uint8_t         proto;          /* protocol                             */
    169         uint16_t        sum;            /* checksum                             */
    170 
    171         uint32_t        src;            /* source address                       */
    172 
    173         T_NET_BUF       *next;          /* 次の IPv4 フラグメント                       */
    174         } __attribute__((packed, aligned(2)))T_QIP4_HDR;
    175 
    176 #define QIP4_HDR_SIZE                   (sizeof(T_QIP4_HDR))
    177 #define IF_QIP4_HDR_SIZE                (IF_HDR_SIZE + QIP4_HDR_SIZE)
    178 
    179 #define GET_QIP4_HDR(nbuf)              ((T_QIP4_HDR*)((nbuf)->buf + IF_HDR_SIZE))
    180 #define GET_QIP4_SDU(nbuf)              ((uint8_t*)(nbuf)->buf + GET_IF_QIP4_HDR_SIZE(nbuf))
    181 
    182 #define GET_QIP4_HDR_SIZE(iph)          ((uint8_t)IP4_VHL_HL((iph)->vhl) << 2)
    183 #define GET_IF_QIP4_HDR_SIZE(nbuf)      (IF_HDR_SIZE + (GET_QIP4_HDR_SIZE(GET_QIP4_HDR(nbuf))))
    184 
    185 /*
    186  *  データグラム再構成用ネットワークバッファ
    187  */
    188 
    189 typedef struct t_net_buf4_reassm {
    190         uint16_t        len;    /* データの長さ               */
    191         uint8_t         idix;   /* mpfid のインデックス        */
    192         uint8_t         flags;  /* フラグ          */
    193 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN
    194         uint8_t         nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
    195 #endif
    196 #if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
    197         uint8_t         align[4 - IF_HDR_ALIGN];
    198 #endif
    199         uint8_t         buf[IP4_CFG_FRAG_REASSM_SIZE];
    200                                 /* バッファ本体               */
    201         } T_NET_BUF4_REASSM;
    202 
    203 #endif  /* of #ifdef IP4_CFG_FRAGMENT */
    204 
    205 /*
    206  *  TCP の再構成キューにおける IPv4 ヘッダの定義
    207  */
    208 
    209 typedef struct t_tcp_ip4_q_hdr {
    210         uint8_t         vhl;            /* version << 4 | header length >> 2    */
    211                                         /* length は 4 octets 単位         */
    212         uint8_t         type;           /* type of services                     */
    213         uint16_t        len;            /* total length                         */
    214 
    215         uint16_t        id;             /* identification                       */
    216         uint16_t        flg_off;        /* fragment flag & offset               */
    217 
    218         uint8_t         ttl;            /* time to live                         */
    219         uint8_t         proto;          /* protocol                             */
    220         uint16_t        thoff;          /* TCP ヘッダのオフセット                */
    221 
    222         T_IN4_ADDR      src;            /* source address                       */
    223         T_IN4_ADDR      dst;            /* destination address                  */
    224         } __attribute__((packed, aligned(2)))T_TCP_IP4_Q_HDR;
    225 
    226 #ifdef SUPPORT_MIB
    227 
    228 /*
    229  *  SNMP の 管理情報ベース (MIB)
    230  */
    231 
    232 typedef struct t_ip_stats {
    233         uint32_t        ipInReceives;
    234         uint32_t        ipInHdrErrors;
    235         uint32_t        ipInAddrErrors;
    236 /*      uint32_t        ipForwDatagrams;*/
    237         uint32_t        ipInUnknownProtos;
    238 /*      uint32_t        ipInDiscards;*/
    239         uint32_t        ipInDelivers;
    240         uint32_t        ipOutRequests;
    241         uint32_t        ipOutDiscards;
    242 /*      uint32_t        ipOutNoRoutes;*/
    243 
    244 #ifdef IP4_CFG_FRAGMENT
    245 
    246         uint32_t        ipReasmReqds;
    247         uint32_t        ipReasmOKs;
    248         uint32_t        ipReasmFails;
    249         uint32_t        ipFragOKs;
    250         uint32_t        ipFragFails;
    251         uint32_t        ipFragCreates;
    252 
    253 #else   /* of #ifdef IP4_CFG_FRAGMENT */
    254 
    255         uint32_t        ipReasmReqds;
    256 /*      uint32_t        ipReasmOKs;*/
    257         uint32_t        ipReasmFails;
    258 /*      uint32_t        ipFragOKs;*/
    259 /*      uint32_t        ipFragFails;*/
    260 /*      uint32_t        ipFragCreates;*/
    261 
    262 #endif  /* of #ifdef IP4_CFG_FRAGMENT */
    263 
    264 } T_IP_STATS;
    265 
    266 extern T_IP_STATS ip_stats;
    267 
    268 #endif  /* of #ifdef SUPPORT_MIB */
    269 
    270 /*
    271  *  関数
    272  */
    273 
    274 extern void ip_frag_timer (void);
    275 extern void ip_init (void);
    276 extern ER ip_remove_options (T_NET_BUF *nbuf);
    277 extern ER ip_output (T_NET_BUF *nbuf, TMO tmout);
     153#endif  /* of #if defined(_IP6_CFG) */
    278154
    279155#endif  /* of #ifndef _IP_VAR_H_ */
Note: See TracChangeset for help on using the changeset viewer.