source: azure_iot_hub/trunk/asp3_dcre/tinet/netinet/in_var.h@ 388

Last change on this file since 388 was 388, checked in by coas-nagasima, 5 years ago

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 9.1 KB
Line 
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: in_var.h 388 2019-05-22 11:25:18Z coas-nagasima $
44 */
45
46/*
47 * Copyright (c) 1985, 1986, 1993
48 * The Regents of the University of California. All rights reserved.
49 *
50 * Redistribution and use in source and binary forms, with or without
51 * modification, are permitted provided that the following conditions
52 * are met:
53 * 1. Redistributions of source code must retain the above copyright
54 * notice, this list of conditions and the following disclaimer.
55 * 2. Redistributions in binary form must reproduce the above copyright
56 * notice, this list of conditions and the following disclaimer in the
57 * documentation and/or other materials provided with the distribution.
58 * 3. All advertising materials mentioning features or use of this software
59 * must display the following acknowledgement:
60 * This product includes software developed by the University of
61 * California, Berkeley and its contributors.
62 * 4. Neither the name of the University nor the names of its contributors
63 * may be used to endorse or promote products derived from this software
64 * without specific prior written permission.
65 *
66 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
67 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
68 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
69 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
70 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
71 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
72 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
73 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
74 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
75 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
76 * SUCH DAMAGE.
77 *
78 * @(#)in_var.h 8.2 (Berkeley) 1/9/95
79 * $FreeBSD: src/sys/netinet/in_var.h,v 1.29.2.1 1999/08/29 16:29:38 peter Exp $
80 */
81
82#ifndef _IN_VAR_H_
83#define _IN_VAR_H_
84
85#include <netinet/in4_var.h>
86#include <netinet6/in6_var.h>
87
88/*
89 * 独自のエラーコード
90 */
91
92#define EV_NOPND (-97) /* ペンディングしていない */
93
94/*
95 * ネットワークエラーコード
96 */
97
98#define EV_MSIZE (-98) /* データグラム長超
99過 */
100#define EV_NURCH (-99) /* ネットワーク到達不能 */
101#define EV_HDOWN (-100) /* ホストダウン */
102#define EV_HURCH (-101) /* ホスト到達不能 */
103#define EV_CNNRF (-102) /* 接続不能 */
104#define EV_CNRST (-103) /* 接続リセット */
105#define EV_REXMTMO (-104) /* 再送タイムアウト */
106
107/*
108 * å…
109±é€šã‚¿ã‚¤ãƒžã®èµ·å‹•å‘¨æœŸã®å®šç¾©
110 */
111
112#define IN_TIMER_TMO (SYSTIM_HZ/NET_TIMER_CYCLE)
113
114/*
115 * ルーティングエントリ状æ…
116‹ãƒ•ãƒ©ã‚°
117 */
118
119#define IN_RTF_DEFINED UINT_C(0x01) /* 定義済み */
120#define IN_RTF_REDIRECT UINT_C(0x10) /* 向け直しにより自動設定された */
121
122/*
123 * IPv4 と IPv6 をコンパイル時に選択するためのマクロ
124 */
125
126#if defined(_IP6_CFG)
127
128#define T_IN_ADDR T_IN6_ADDR
129#define T_IPEP T_IPV6EP
130#define IP_ADDRANY IPV6_ADDRANY
131
132#elif defined(_IP4_CFG) /* of #if defined(_IP6_CFG) */
133
134#define T_IN_ADDR T_IN4_ADDR
135#define T_IPEP T_IPV4EP
136#define IP_ADDRANY IPV4_ADDRANY
137
138#endif /* of #if defined(_IP6_CFG) */
139
140#if defined(_IP6_CFG)
141
142#if defined(_IP4_CFG)
143
144#define IN_CKSUM(nbuf,proto,off,len) (GET_IP_VER(nbuf)==IPV6_VERSION \
145 ?in6_cksum(nbuf,proto,off,len) \
146 :in4_cksum(nbuf,proto,off,len))
147#define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \
148 inn_is_dstaddr_accept(myaddr,nbuf)
149#define IN_ARE_HDR_ADDR_EQUAL(nbuf) (GET_IP_VER(nbuf)==IPV6_VERSION \
150 ?IN6_ARE_ADDR_EQUAL(&GET_IP6_HDR(nbuf)->dst,&GET_IP6_HDR(nbuf)->src) \
151 :IN4_ARE_ADDR_EQUAL(&GET_IP4_HDR(nbuf)->dst,&GET_IP4_HDR(nbuf)->src))
152#define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \
153 inn_are_net_srcaddr_equal(ipaddr,nbuf)
154#define IN_COPY_TO_HOST(dst,nbuf) inn_copy_to_host(dst,nbuf)
155#define IN_GET_DATAGRAM(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) \
156 inn_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout)
157#define IN_IS_ADDR_MULTICAST(addr) inn_is_addr_multicast(addr)
158#define IN_IS_NET_ADDR_MULTICAST(nbuf) IN_IS_ADDR_MULTICAST(&GET_IP6_HDR(nbuf)->dst)
159#define IN_ADDRWITHIFP(ifp,src,dst) inn_addrwithifp(ifp,src,dst)
160#define IN_IS_ADDR_ANY(addr) IN6_IS_ADDR_UNSPECIFIED(addr)
161
162#else /* of #if defined(_IP4_CFG) */
163
164#define IN_CKSUM(nbuf,proto,off,len) in6_cksum(nbuf,proto,off,len)
165#define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \
166 INN6_IS_DSTADDR_ACCEPT(myaddr,nbuf)
167#define IN_ARE_HDR_ADDR_EQUAL(nbuf) IN6_ARE_ADDR_EQUAL(&GET_IP6_HDR(nbuf)->dst,&GET_IP6_HDR(nbuf)->src)
168#define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \
169 IN6_ARE_ADDR_EQUAL(ipaddr,&GET_IP6_HDR(nbuf)->src)
170#define IN_COPY_TO_HOST(dst,nbuf) IN6_COPY_TO_HOST(dst, nbuf)
171#define IN_GET_DATAGRAM(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) \
172 in6_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout)
173#define IN_IS_ADDR_MULTICAST(addr) IN6_IS_ADDR_MULTICAST(addr)
174#define IN_IS_NET_ADDR_MULTICAST(nbuf) IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(nbuf)->dst)
175#define IN_ADDRWITHIFP(ifp,src,dst) in6_addrwithifp(ifp,src,dst)
176#define IN_IS_ADDR_ANY(addr) IN6_IS_ADDR_UNSPECIFIED(addr)
177
178#endif /* of #if defined(_IP4_CFG) */
179
180#else /* of #if defined(_IP6_CFG) */
181
182#if defined(_IP4_CFG)
183
184#define IN_CKSUM(nbuf,proto,off,len) in4_cksum(nbuf,proto,off,len)
185#define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \
186 inn4_is_dstaddr_accept(myaddr,nbuf)
187#define IN_ARE_HDR_ADDR_EQUAL(nbuf) IN4_ARE_ADDR_EQUAL(&GET_IP4_HDR(nbuf)->dst,&GET_IP4_HDR(nbuf)->src)
188#define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \
189 (*(ipaddr)==ntohl(GET_IP4_HDR(nbuf)->src))
190#define IN_COPY_TO_HOST(dst,nbuf) IN4_COPY_TO_HOST(dst, nbuf)
191#define IN_GET_DATAGRAM(nbuf,len,maxlen, dst,src,proto,ttl,nbatr,tmout) \
192 in4_get_datagram(nbuf,len,maxlen, dst,src,proto,ttl,nbatr,tmout)
193#define IN_IS_ADDR_MULTICAST(addr) IN4_IS_ADDR_MULTICAST(*(addr))
194#define IN_IS_NET_ADDR_MULTICAST(nbuf) IN4_IS_ADDR_MULTICAST(ntohl(GET_IP4_HDR(nbuf)->dst))
195#define IN_ADDRWITHIFP(ifp,src,dst) in4_addrwithifp(ifp,src,dst)
196#define IN_IS_ADDR_ANY(addr) IN4_IS_ADDR_ANY(addr)
197
198#else /* of #if defined(_IP4_CFG) */
199
200#error "not implemented."
201
202#endif /* of #if defined(_IP4_CFG) */
203
204#endif /* of #if defined(_IP6_CFG) */
205
206#ifndef _MACRO_ONLY
207
208/*
209 * 関数
210 */
211extern bool_t inn_is_dstaddr_accept (T_IN6_ADDR *myaddr, T_NET_BUF *nbuf);
212extern bool_t inn_is_addr_multicast (T_IN6_ADDR *addr);
213extern bool_t inn_are_net_srcaddr_equal (T_IN6_ADDR *ipaddr, T_NET_BUF *nbuf);
214extern void inn_copy_to_host (T_IN6_ADDR *dst, T_NET_BUF *nbuf);
215extern ER inn_get_datagram (T_NET_BUF **nbuf, uint_t len, uint_t maxlen,
216 T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr,
217 uint8_t next, uint8_t hlim, ATR nbatr, TMO tmout);
218extern T_IN6_ADDR *inn_addrwithifp (T_IFNET *ifp, T_IN6_ADDR *src, T_IN6_ADDR *dst);
219
220#endif /* of #ifndef _MACRO_ONLY */
221
222#endif /* of #ifndef _IN_VAR_H_ */
Note: See TracBrowser for help on using the repository browser.