          TOPPERS/JSP  TCP/IP ץȥ륹åTINET
           桼ޥ˥奢ʥ꡼ 1.3ѡˡ2006/2/5

1.  TOPPERS/JSP  TCP/IP ץȥ륹åTINETˤγ

  TINET ϡ ITRON 4.0 ɥץե򥵥ݡȤ
TOPPERS/JSP Ѥ TCP/IP ץȥ륹åǤ롣

1. 1  ǽ

  ʲˡTINET ꡼ 1.3 εǽ򼨤

   (1)   API

         ITRON TCP/IP API ͤɸൡǽ
         Ū ITRON TCP/IPʥС 6API ͤɸൡǽ

   (2)   TCP

         BSD ̿ǽ
         祻ȥMSS˥ץ
         ʥԡ API
         Υ֥å󥰥ȹġ
          Time Wait ֤ TCP ̿üʬΥǽ
          ȹġˡڥ꡼ 1.3 
         ɥХåեξʥԡǽȹġ
          ڥ꡼ 1.3 
         TCP إåΥȥ졼ϵǽȹġˡڥ꡼ 1.3 

   (3)   UDP

         Υ֥å󥰥ȹġ

   (4)   õ

         õ
         õΤ
         롼Υåμ
         롼å
         ɥ쥹ʣеǽ

   (5)   ICMPv4

         ׵ᡦ
         顼ȹġ
         ľåμȹġ

   (6)   ICMPv6

         ׵ᡦ
         顼ȹġ
         ľåμȹġ

   (7)   IPv4

         Ūϩɽ
         IP ǡʬ䡦ƹȹġ

   (8)   IPv6

         ɥ쥹μư
         Ūϩɽ
          PC ϥǥ뵡ؤŬѤ˸ IPv6 Ǿ׵ͤ
           IPv6 ǾۥȻͤ˽
         ĥإåΥ顼

   (9)   ¾

         ARP ׵ᡦ
         ARP Ǥ IPv4 ɥ쥹ʣеǽ
         DHCP ؤб
         SNMP Ѵ١MIBˤ

1. 2  ưǧѤߤΥƥ

  ߡ ưǧѤߤΥƥʲ˼

   (1)   ̿ӥ NKEV-010H8JSP ꡼ 1.4.2 ʹߡ
   (2)   Ż̾ H8/3048F
   (3)   Ż̾ H8/3068F ͥåбJSP ꡼ 1.4.1 Τߡ
   (4)   Ż̾ H8/3069F ͥåб

1. 3  ݡȤƤͥåȥ󥿥ե

  ߡ ݡȤƤͥåȥ󥿥եʲ˼ 

   (1)   롼ץХå
   (2)   ꥢݡȤѤ PPP ǡľ³ȥǥ³
   (3)   ͥåȡNIC  NE2000 ߴ

ʤTINET ϡ嵭Υͥåȥ󥿥եΤȤ߹ळ
ȤǤ˥åȿ 1 Ǥ롣

1. 4  »

  ʲˡTINET ꡼ 1.3 Ҥ٤롣

   (1)   TOPPERS/JSP ͥΥ꡼ 1.4.1 ʹѤǤ롣
   (2)   ͥåȥؤ IPv4  IPv6 Τɤ餫ĤΤǤ Ʊ
         ȹळȤϤǤʤ
   (3)   IPv6 Ǥϡͥåȥ󥿥եϥͥåȤΤ
         롣
   (4)   IPv6 ǤϡTCP  UDP ξ򤹤뤫 ɤ餫Ĥ
         ʤФʤʤ ޤUDP Τߤ򤷤ϡΥ֥
         󥰵ǽȤ߹ɬפ롣
   (5)   Υ֥å󥰥ˤƤ⡢ ̿ü¾Τᡢ
         û֤Ǥ뤬֥å뤳Ȥ롣 
   (6)   IPv6 ˴ؤ ITRON TCP/IP API ͤʤᡢŪ ITRON
         TCP/IPʥС 6API ͤ
   (7)   IPv6 ˴ؤơȥ륢ɥ쥹ȥХ륢ɥ쥹ϡ
         롼Τˤꡢ줾 1 ĤƲǽǤ롣 

1. 5  ǥ쥯ȥ깽

  TINET Υǥ쥯ȥϡJSP 롼ȥǥ쥯ȥβ֤Ȥꤷ
Ƥꡢ ʲΥǥ쥯ȥ꤫鹽Ƥ롣

   tinet                   TINET Υ롼ȥǥ쥯ȥ
   tinet/cfg               TINET ե졼
   tinet/doc               ɥ
   tinet/net               ѥͥåȥ
   tinet/netapp            ץΥͥåȥץ
   tinet/netdev            ͥåȥ󥿥եΥɥ饤
   tinet/netdev/if_ed      NE2000 ߴͥåȥ󥿥եΥɥ饤
   tinet/netinet           TINET 
   tinet/netinet6          IPv6 

1. 6  ɥ

  ɥʲ˼ * դե PDF Ǥ󶡤Ƥ롣

   tinet.txt*              桼ޥ˥奢
   tinet_config.txt*       ѥե졼
   tinet_defs.txt*         ץåƥ¸
   tinet_chg.txt*          ѹ
   tinet-1.3.txt           ꡼ 1.2  1.3 ؤΰܹ
   tinet_ether.pdf*        TINET-1.3 ˤ륤ͥåȤμPDF Τߡ

2.  TINET ե졼 TINET ե졼ե

  TINET ե졼 tinet/cfg/tinet_cfg (cygwin Ǥ
tinet_cfg.exe) Ǥꡢ åȤˤϰ¸ƤʤTINET ե
졼ˤĤƤ tinet_install.txt 򻲾Ȥ뤳ȡ

2. 1  ե

  TINET ե졼 TINET ե졼եɸ
 tinet_$(UNAME).cfgˤʲΥե롣

   (1)   tinet_cfg.c
         TINET ͥ빽եǡ ץꥱץࡢ
         TINET ȶ˥ѥ뤷ƥ󥯤롣

   (2)   tinet_kern.cfg
         TINET ǻѤ륫ͥ륪֥ȤŪ API 졢
         JSP ƥॳե졼եɸ
         $(UNAME).cfgˤ˥󥯥롼ɤ롣

   (3)   tinet_id.h
         TINET ǻѤ륫ͥ륪֥Ȥ ID ưշ̥ե
         Ǥ롣

2. 2  ŪITRON TCP/IPʥС6API

  IPv6 ˴ؤ ITRON TCP/IP API ͤʤᡢŪ ITRON TCP/IP
ʥС 6API ͤ

   (1)   1.5.1 ǡ¤ǡ (1) IP ɥ쥹ݡֹ
         ǡ¤

            /* IPv6 ɥ쥹 */
            struct t_in6_addr {
                union {
                    UB    __u6_addr8[16];
                    UH    __u6_addr16[8];
                    UW    __u6_addr32[4];
                    } __u6_addr;
                } T_IN6_ADDR;
            
            typedef struct t_ipv6ep {
                T_IN6_ADDR    ipaddr;        /* IPv6 ɥ쥹 */
                UH            portno;        /* ݡֹ    */
                } T_IPV6EP;

   (2)   1.5.1 ǡ¤ǡ (2) ֥ѤΥǡ¤

            typedef struct t_tcp6_crep {
                /* ɸ */
                ATR         repatr;        /* ո°        */
                T_IPV6EP    myaddr;        /* ʬΥɥ쥹    */
                /* ¸ */
                } T_TCP6_CREP;

   (3)   1.5.1 ǡ¤ǡ (5) ü IP ɥ쥹ȥݡֹ

            #define IPV6_ADDR_UNSPECIFIED_INIT    \
                {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
            #define IPV6_ADDRANY        IPV6_ADDR_UNSPECIFIED_INIT

   (4)   2.2 TCP ո

            ŪAPI
              TCP6_CRE_REP(ID repid, { ATR repatr,
                                     { T_IN6_ADDR myipaddr, UH myportno } } );

         myipaddr η T_IN6_ADDR ˤʤäʳϡ ITRON TCP/IP API
         ͤƱǤ롣myipaddr ˤ IPV6_ADDRANY Ǥ롣

   (5)   2.4 ³ǡ³׵Ԥʼưץˡ

            CAPI
              ER ercd = tcp6_acp_cep(ID cepid, ID repid,
                                     T_IPV6EP *p_dstaddr, TMO tmout);

         p_dstaddr ηT_IPV6EP* ˤʤäʳϡ ITRON TCP/IP API
         ͤƱǤ롣

   (6)   2.4 ³ǡ³׵ǽưץˡ

            CAPI
              ER ercd = tcp6_con_cep(ID cepid, T_IPV6EP *p_myaddr,
                                     T_IPV6EP *p_dstaddr, TMO tmout);

         p_myaddr  p_dstaddr ηT_IPV6EP* ˤʤäʳϡITRON
         TCP/IP API ͤƱǤ롣

   (7)   3.2 UDP ̿ü

            ŪAPI
              UDP6_CRE_CEP(ID cepid, { ATR cepatr,
                                     { T_IN6_ADDR myipaddr, UH myportno },
                                       FP callback } );

         myipaddr η T_IN6_ADDR ˤʤäʳϡ ITRON TCP/IP API
         ͤƱǤ롣myipaddr ˤ IPV6_ADDRANY Ǥ롣

   (8)   3.3 ǡ֥ѥåȤ

            CAPI
              ER ercd = udp6_snd_dat(ID cepid, T_IPV6EP *p_dstaddr, 
                                     VP data, INT len, TMO tmout);

         p_dstaddr ηT_IPV6EP* ˤʤäʳϡ ITRON TCP/IP API
         ͤƱǤ롣

   (9)   3.4 ǡ֥ѥåȤμ

            CAPI
              ER ercd = udp6_rcv_dat(ID cepid, T_IPV6EP *p_dstaddr, 
                                     VP data, INT len, TMO tmout);

         p_dstaddr η T_IPV6EP* ˤʤäʳϡITRON TCP/IP API
         ͤƱǤ롣

2. 3  ݡȤ륪֥Ȥ

  ݡȤ륪֥Ȥϡʲ˼ ITRON TCP/IP API ͤ
Ū APIŪ ITRON TCP/IPʥС 6API ͤŪ API ե
Υ󥯥롼ɤǤ롣

   (1)   TCP ոIPv4

         [1]   

                  TCP_CRE_REP(ID repid, { ATR repatr,
                                        { UW myipaddr, UH myportno } } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡITRON TCP/IP API ͤƱǤꡢ
               ¸ TCP ո°Ϥʤ
         [3]   TCP ո
               TINET ե졼ϡ TCP ոץ
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_TCP_CREPID <TCPո>

         [4]    TCP ո ID ѿ
               TINET ե졼ϡ TCP ո ID ѿ
                tinet_cfg.c 롣

                  const ID tmax_tcp_crepid =
                           (TMIN_TCP_CREPID + TNUM_TCP_CREPID - 1);

   (2)   TCP ̿üIPv4

         [1]   

                  TCP_CRE_CEP(ID cepid, { ATR cepatr, VP sbuf, INT sbufsz,
                                                      VP rbuf, INT rbufsz,
                                                      FP callback } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡITRON TCP/IP API ͤƱǤꡢ
               ¸ TCP ̿ü°Ϥʤ
         [3]   TCP ̿ü
               TINET ե졼ϡ TCP ̿ü
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_TCP_CCEPID <TCP̿ü>

         [4]    TCP ̿ü ID ѿ
               TINET ե졼ϡ TCP ̿ü ID 
                tinet_cfg.c 롣

                  const ID tmax_tcp_ccepid =
                           (TMIN_TCP_CCEPID + TNUM_TCP_CCEPID - 1);

   (3)   UDP ̿üIPv4

         [1]   

                  UDP_CRE_CEP(ID cepid, { ATR cepatr,
                                        { UW myipaddr, UH myportno },
                                          FP callback } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡITRON UDP/IP API ͤƱǤꡢ
               ¸ UDP ̿ü°Ϥʤ

         [3]   UDP ̿ü
               TINET ե졼ϡ UDP ̿ü
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_UDP_CCEPID <UDP̿ü>

         [4]    UDP ̿ü ID ѿ
               TINET ե졼ϡ UDP ̿ü ID 
                tinet_cfg.c 롣

                  const ID tmax_tcp_ccepid =
                           (TMIN_UDP_CCEPID + TNUM_UDP_CCEPID - 1);

   (4)   TCP ոIPv6

         [1]   

                  TCP6_CRE_REP(ID repid, { ATR repatr,
                                         { T_IN6_ADDR myipaddr, UH myportno } } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡmyipaddr ǻꤹ IP ɥ쥹
               IPv6 Ǥꡢ IPv4  IP_ADDRANY ˡ IPv6 Ǥ
               IPV6_ADDRANY Ǥ롣ʳϡITRON TCP/IP API
               ͤƱǤꡢ¸ TCP ո°Ϥʤ
         [3]   TCP ո
               TINET ե졼ϡ TCP ոץ
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_TCP_CREPID <TCPո>

         [4]    TCP ո ID ѿ
               TINET ե졼ϡ TCP ո ID ѿ
                tinet_cfg.c 롣

                  const ID tmax_tcp_crepid =
                           (TMIN_TCP_CREPID + TNUM_TCP_CREPID - 1);

   (5)   TCP ̿üIPv6

         [1]   

                  TCP6_CRE_CEP(ID cepid, { ATR cepatr, VP sbuf, INT sbufsz,
                                                       VP rbuf, INT rbufsz,
                                                       FP callback } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡITRON TCP/IP API ͤƱǤꡢ
               ¸ TCP ̿ü°Ϥʤ
         [3]   TCP ̿ü
               TINET ե졼ϡ TCP ̿ü
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_TCP_CCEPID <TCP̿ü>

         [4]    TCP ̿ü ID ѿ
               TINET ե졼ϡ TCP ̿ü ID 
                tinet_cfg.c 롣

                  const ID tmax_tcp_ccepid =
                           (TMIN_TCP_CCEPID + TNUM_TCP_CCEPID - 1);

   (6)   UDP ̿üIPv6

         [1]   

                  UDP6_CRE_CEP(ID cepid, { ATR cepatr,
                                         { T_IN6_ADDR myipaddr, UH myportno },
                                           FP callback } );

         [2]   ѥ᡼
               ѥ᡼ˤĤƤϡmyipaddr ǻꤹ IP ɥ쥹
               IPv6 Ǥꡢ IPv4  IP_ADDRANY ˡ IPv6 Ǥ
               IPV6_ADDRANY Ǥ롣ʳϡITRON TCP/IP API
               ͤƱǤꡢ¸ TCP ո°Ϥʤ
         [3]   UDP ̿ü
               TINET ե졼ϡ UDP ̿ü
               ץåǥ쥯ƥ֤ tinet_cfg.c 롣

                  #define TNUM_UDP_CCEPID <UDP̿ü>

         [4]    UDP ̿ü ID ѿ
               TINET ե졼ϡ UDP ̿ü ID 
                tinet_cfg.c 롣

                  const ID tmax_tcp_ccepid =
                           (TMIN_UDP_CCEPID + TNUM_UDP_CCEPID - 1);

   (7)   󥯥롼ɥե
         JSP Υ󥯥롼ɥեƱǤ롣

3.  롼ƥ󥰤

  롼ƥ󥰥ȥˤϡŪ롼ƥ󥰥ȥȸľICMP
ˤ롼ƥ󥰥ȥ꤬롣 
  Ū롼ƥ󥰥ȥϡͽ줿롼ƥ󥰾Ǥꡢ롼
ƥե route_cfg.c Υ롼ƥɽȥꤹ
롣ʤǥեȥȥΤߤΥץʥͥåȥǤϡ
ץ륢ץꥱ echos  route_cfg.c 򤽤ΤޤήѤǤ롣
  ľICMPˤˤ롼ƥ󥰥ȥϡTINET ե졼
󡦥ѥ᡼եǡ롼ƥɽͽݤ륨ȥ
 롼ƥե route_cfg.c Υ롼ƥɽ
ȥˡ ΥȥȤƳݤ롣

   (1)   롼ƥɽΥȥ
           ȥꤹޥϡ TINET ե졼
         ѥ᡼ե롣 

         [1]   NUM_STATIC_ROUTE_ENTRY
               롼ƥɽŪ롼ƥ󥰥ȥꤹ롣 
         [2]   NUM_REDIRECT_ROUTE_ENTRY
               롼ƥɽͽݤ롢 ľICMPˤˤ롼
               ƥ󥰥ȥꤹ롣0 ꤹȡ ľ
               ICMPˤ̵뤹롣

   (2)   롼ƥɽȥ깽¤ΡIPv4
           IPv4 Ǥϡ#include <netinet/in_var.h> Ƥ롣
         եɤΰ̣ʲ˼

            T_IN4_ADDR      targe           ɸͥåȥIPɥ쥹
                                            ǥեȥȥǤ0ꤹ롣
            T_IN4_ADDR      mask            ɸͥåȥΥ֥ͥåȥޥ
                                            ǥեȥȥǤ0ꤹ롣
            T_IN4_ADDR      gateway         ȥ IP ɥ쥹
                                            ͥåȥǤ0ꤹ롣

   (3)   롼ƥɽȥ깽¤ΡIPv6
           IPv6 Ǥϡ#include <netinet6/in6_var.h> Ƥ롣
         ƥեɤΰ̣ʲ˼

            T_IN6_ADDR      target          ɸͥåȥɥ쥹
            T_IN6_ADDR      gateway         ȥ IP ɥ쥹
            UW              expire          ֤ͭڤ0xffffffff ꤹ뤳ȡ
            UB              flags           ե饰0x01 ꤹ뤳ȡ
            UB              prefix_len      ץեåĹ

         IP ɥ쥹ϡ {{{  }}} ǰϤߡ1 ƥåñ̤ǻꤹ롣
         ʲ˼

            { { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x41,
                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } }

   (4)   󥯥롼ɥե
           ʲΥ󥯥롼ɥեꤹ뤳ȡ 

            #include <s_services.h>
            #include <t_services.h>
            #include <tinet_defs.h>
            #include <tinet_config.h>
            #include <netinet/in.h>
            #include <netinet/in_var.h>

   (5)   롼ƥɽȥIPv4
           ʲΤ褦˻ꤹ뤳ȡ

            T_IN4_RTENTRY routing_tbl[NUM_ROUTE_ENTRY] = {
                <롼ƥɽȥ깽¤ 1>,
                <롼ƥɽȥ깽¤ 2>,
                ...
                <롼ƥɽȥ깽¤ n>,
                };

   (6)   롼ƥɽȥIPv6
           ʲΤ褦˻ꤹ뤳ȡ

            T_IN6_RTENTRY routing_tbl[NUM_ROUTE_ENTRY] = {
                <롼ƥɽȥ깽¤ 1>,
                <롼ƥɽȥ깽¤ 2>,
                ...
                <롼ƥɽȥ깽¤ n>,
                };

   (7)   õ
           õϡ ǥå礭ʽ硢Ĥޤꡢ롼ƥɽ
         ȥκǸ <롼ƥɽȥ깽¤ n> 顢 ǽ
          <롼ƥɽȥ깽¤ 1> ˸äƹԤ롣

4.  TINET ȼǽ

4. 1   Time Wait ֤ TCP ̿üʬΥǽ

  TCP ̿üϡåȥ󥿥եˤեǥץ
Ȱۤʤꡢ TCP ³֤˽λޤǺѲǽȤϤʤʤ
TCP/IP ץȥλͤ˽ȡ ³֤˽λޤǿʬ
礬롣ˤʤΤϡˡTCP ̿üΥͥ API
 tcp_sht_cep ƽФ ͥǤǤ롣 λ
tcp_sht_cep ǻꤵ줿 TCP ̿üϡǽŪ Time Wait ֤ˤʤꡢ
TCP ̿üΥ API  tcp_cls_cep ƽФ⡢ॢ
Ԥ֤ˤʤ롣äơ¦ǤѥץWWW 
ɡˤΥǤϡॢȤޤǡ³׵뤳Ȥ
ʤ
  б뤿ᡢTINET ϡ λԤ TCP ̿ü򥿥
ΥȤˤꡢԤ֤ˤʤʤ褦ˤ뵡ǽäƤꡢ
ͭˤ뤿ˤϡ ѥե졼ѥ᡼
NUM_TCP_TW_CEP_ENTRY  tinet_app_config.h ˻ꤷ ݤ TW 
TCP ̿üο1 ʾ͡ˤ롣
  TCP ̿ü Time Wait ˤʤȡ TCP ̿ü顢Time Wait ɬ
פ̿ǡ TW  TCP ̿ü˥ԡ TCP ̿ü
롣ȼäơ Ԥ֤鳫롣 ޤ TW 
TCP ̿üˤ Time Wait ɬפ̿ǡΤߤ򥳥ԡ뤳
ǡξޤƤ롣

4. 2  ɥХåեξʥԡǽ

  ITRON TCP/IP API ͤǤϡTCP ̿üŪ API ǡ
ɥХåեƬɥ쥹λˡ NADR ꤹȡץȥ륹
åǡ ɥХåեݤ뤳ȤˤʤäƤ롣 
  TINET ǤϡͥåȥХåե򡢼ɥХåեȤ뤳Ȥǡ
NADR λбƤ롣 ˡͥåȥ󥿥եǼ
ץȥ륳ǡݻͥåȥХåե򡢤Τޤ޼
ɥХåեȤ뤳Ȥǡͥåȥ󥿥եȡTINET ǡǡ
ΥԡʤƤ롣äˡ ʥԡ API Ѥ뤳Ȥˤꡢ API
ˤǡΥԡԤʤȤǽǤ롣 
  εǽ˴ط륳ѥե졼ѥ᡼򡢰
˼

   (1)   TCP_CFG_RWBUF_CSAVE_ONLY
         TCP ̿üμɥХåեξʥԡǽȹߡ 
         εǽΤ߻Ѥ롣TCP ̿üŪ API ǡ
         ɥХåեƬɥ쥹λˡ ѥץबѰդ
         ХåեꤷƤ̵뤹롣

   (2)   TCP_CFG_RWBUF_CSAVE
         TCP ̿üμɥХåեξʥԡǽȹࡣTCP
         ̿üŪ API ǡɥХåեƬ
         쥹λˡNADR ꤷϡɥХåեξ
         ԡǽѤ뤬 ѥץबѰդХåե
         ꤷϡ ɥХåեξʥԡǽѤʤ 

   (3)   TCP_CFG_RWBUF_CSAVE_MAX_QUEUES
         TCP ̿üμɥХåեξʥԡǽΡ 
         ɥХåե塼κ票ȥǤ롣 ˼
         Ȥ˴뤿ᡢä롣ޤ 
         ʤ¤ʤ

ʤTCP_CFG_RWBUF_CSAVE_ONLY  TCP_CFG_RWBUF_CSAVE Ρ
ʤϡ TCP ̿üŪ API ǡɥХåե
Ƭɥ쥹λˡNADR ꤹ뤳ȤǤʤ

4. 3  ɥХåեξʥԡǽ

  ITRON TCP/IP API ͤǤϡTCP ̿üŪ API ǡ
ɥХåեƱͤˡ ɥХåեƬɥ쥹λˡ
NADR ꤹȡ ץȥ륹åǡɥХåեݤ
뤳ȤˤʤäƤ롣
  TINET ǤϡͥåȥХåեɥХåեȤ뤳Ȥǡ
NADR λбƤ롣ˡ ޤ줿ǡɬפʥإå
ղäơΤޤޥͥåȥ󥿥եϤȤˤꡢͥå
󥿥եȡTINET ǡǡΥԡʤƤ롣äˡ
ʥԡ API Ѥ뤳Ȥǡ API ˤǡΥԡԤʤ
ȤǽǤ롣
   ͥåȽϻˡ NIC ǥͥåȥХåե
ʥѥե졼ѥ᡼
ETHER_NIC_CFG_RELEASE_NET_BUF 򡢻ꤹɬפ˥ǥХɥ饤
ФǤϡ ɥХåեξʥԡǽѤ뤳ȤϤǤʤ 
  εǽ˴ط륳ѥե졼ѥ᡼򡢰
˼

   (1)   TCP_CFG_SWBUF_CSAVE_ONLY
         TCP ̿üɥХåեξʥԡǽȹߡ 
         εǽΤ߻Ѥ롣TCP ̿üŪ API ǡ
         ɥХåեƬɥ쥹λˡ ѥץबѰդ
         ХåեꤷƤ̵뤹롣

   (2)   TCP_CFG_SWBUF_CSAVE
         TCP ̿üɥХåեξʥԡǽȹࡣTCP
         ̿üŪ API ǡɥХåեƬ
         쥹λˡNADR ꤷϡɥХåեξ
         ԡǽѤ뤬 ѥץबѰդХåե
         ꤷϡ ɥХåեξʥԡǽѤʤ 

   (3)   TCP_CFG_SWBUF_CSAVE_MAX_SIZE
         TCP ̿üɥХåեξʥԡǽǡ 
         ɥХåե˻ѤͥåȥХåեκ祵Ǥꡢ
         ɸͤ IF_PDU_SIZE Ǥ롣

   (4)   TCP_CFG_SWBUF_CSAVE_MIN_SIZE
         TCP ̿üɥХåեξʥԡǽǡ 
         ɥХåե˻ѤͥåȥХåեκǾǤꡢ
         ɸͤ 0 Ǥ롣

ʤTCP_CFG_SWBUF_CSAVE_ONLY  TCP_CFG_SWBUF_CSAVE Ρ
ʤϡTCP ̿üŪ API ǡ ɥХåե
Ƭɥ쥹λˡNADR ꤹ뤳ȤǤʤ

4. 4  Υ֥å󥰥̵

  ѥץǡ Υ֥å󥰥Ѥʤϡ TCP 
UDP ΥΥ֥å󥰥뵡ǽȹޤʤǡ󤹤뤳Ȥ
Ǥ롣
  εǽ˴ط륳ѥե졼ѥ᡼򡢰
˼

   (1)   TCP_CFG_NON_BLOCKING
         TCP ΥΥ֥å󥰥뵡ǽȹࡣ

   (2)   UDP_CFG_NON_BLOCKING
         UDP ΥΥ֥å󥰥뵡ǽȹࡣ

 ꡼ 1.2 ȤθߴΤᡢ ɤΥѥ᡼⡢
tinet/tinet_config.h ˻ꤵƤꡢ ǤϡΥ֥å󥰥
뵡ǽȹޤ褦ˤʤäƤ롣 äơ ȹޤʤϡ
tinet_app_config.h ʤɤǡ#undef ˤꡢʤФʤʤ

4. 5  TCP ո̵

  ѥץब饤ȵǽΤߤǹ졢꤫³׵
դʤΤǤС TCP ոפǤꡢ TCP ոȡ
ؿȹޤʤǡ 󤹤뤳ȤǤ롣 
  εǽ˴ط륳ѥե졼ѥ᡼򡢰
˼

   (1)   TCP_CFG_PASSIVE_OPEN
         TCP μưץǽȹࡣ

 ꡼ 1.2 ȤθߴΤᡢ Υѥ᡼ϡ
tinet/tinet_config.h ˻ꤵƤꡢǤϡ TCP μưץ
ǽȹޤ褦ˤʤäƤ롣 äơ ȹޤʤϡ
tinet_app_config.h ʤɤǡ#undef ˤꡢʤФʤʤ

4. 6  TCP إåΥȥ졼ϵǽ

   TCP Ȥ TCP إå TCP ̿üξϤ
뵡ǽǤ롣ʤ CONSOLE_PORTID ǻꤵ륷ꥢݡȤľܽ
ϤΤǡ SYSLOG Ϥ뤳Ȥ롣νỌ̇̄ʲ
˼

   <I=  284.8=c: 3 s:ES f:e000:--A---- a:      4381 s:      5841 w:56940 l:1460==

   284.8         ֡1/10 ñ̡ޤ 1 ñ
   c: 3          TCP ̿ü ID
   s:ES          TCP ξ
   f:e000        TCP ̿üξ֥ե饰16 ʿ
   :--A----      TCP إåӥå
   a: 4381       TCP إåγǧֹʥͥΩ
                 ͡
   s: 5841       TCP إåΥֹʥͥΩ
                 ͡
   w:56940       TCP إåΥɥ
   l:1460        ڥɥǡ

  νỌ̇̄ʲ˼ 

   =O=  284.9=c: 3 s:ES f:e120:--AP--- s:      4381 a:      7301 w: 2048 l:1460=>

   284.9         ֡1/10 ñ̡ޤ 1 ñ
   c: 3          TCP ̿ü ID
   s:ES          TCP ξ
   f:e120        TCP ̿üξ֥ե饰16 ʿ
   :--AP---      TCP إåӥå
   s: 4381       TCP إåΥֹʥͥΩ
                 ͡
   a: 7301       TCP إåγǧֹʥͥΩ
                 ͡
   w: 2048       TCP إåΥɥ
   l:1460        ڥɥǡ

  εǽ˴ط륳ѥե졼ѥ᡼򡢰
˼

   (1)   TCP_CFG_TRACE
         TCP إåΥȥ졼ϵǽȹࡣ

   (2)   TCP_CFG_TRACE_IPV4_RADDR
         ȥ졼оݤΥ⡼ȥۥȤ IPv4 ɥ쥹ꤹ롣
         IPV4_ADDRANY ꤹȡƤΥۥȤоݤȤ롣

   (3)   TCP_CFG_TRACE_LPORTNO
         ȥ졼оݤΥۥȤΥݡֹꤹ롣
         TCP_PORTANY ꤹȡƤΥݡֹоݤˤ롣

   (4)   TCP_CFG_TRACE_RPORTNO
         ȥ졼оݤΥ⡼ȥۥȤΥݡֹꤹ롣
         TCP_PORTANY ꤹȡƤΥݡֹоݤˤ롣

5.  TINET ȼ API

5. 1  ͥåȥ׾

  ƥåȿ ѥåȿ׾Υ
net_countˤñѿ¤ΡˤȹޤƤ롣

   (1)   ͥåȥ׾ͭ

           ѥե졼󡦥եΤ줫ǡ
         ץȥ˥ͥåȥ׾ͭˤɬפǤ롣
         ͭˤ뤿ˤϡޥ NET_COUNT_ENABLE ˡ ץȥ뼱
         ̥ե饰ʥ󥯥롼ɥե net/net.h Ƥˤ
         ӥå¤ˤꤹ롣

   (2)   ͥåȥ׾ɸǡɸ๽¤
           ⥤󥯥롼ɥե net/net_count.h Ƥ롣

            typedef UD T_NET_COUNT_VAL;
            
            typedef struct t_net_count {
                  T_NET_COUNT_VAL   in_octets;        /* ƥåȿ     */
                  T_NET_COUNT_VAL   out_octets;       /* ƥåȿ     */
                  T_NET_COUNT_VAL   in_packets;       /* Хåȿ */
                  T_NET_COUNT_VAL   out_packets;            /* Хåȿ */
                  T_NET_COUNT_VAL   in_err_packets;   /* 顼Хåȿ */
                  T_NET_COUNT_VAL   out_err_packets;  /* 顼Хåȿ */
                  } T_NET_COUNT;

   (3)   ץȥΥͥåȥ׾
           ʲˡ ץȥΥͥåȥ׾ѿޤ
         򼨤ʡϥ󥯥롼ɥե net/net.h Ƥ
         ץȥ뼱̥ե饰Ǥ롣ޤѿξ硢 
         Ƥϡ󥯥롼ɥե net/net_count.h 򻲾ȡ

         [1]   PPP  HDLCPROTO_FLG_PPP_HDLC
                 ɸ๽¤ѿǡѿ̾ net_count_hdlc Ǥ롣

         [2]   PPP ǧڥץȥPROTO_FLG_PPP_PAP
                 ɸǡѿǡ ѿ̾ϡƥåȿ

                  net_count_ppp_upap_in_octets

               ƥåȿ

                  net_count_ppp_upap_out_octets

         [3]   PPP ΥץȥPROTO_FLG_PPP_LCP
                 ɸǡѿǡѿ̾ϡ ƥåȿ

                  net_count_ppp_lcp_in_octets

               ƥåȿ

                  net_count_ppp_lcp_out_octets

         [4]   PPP  IP ¸ץȥPROTO_FLG_PPP_IPCP
                 ɸǡѿǡ ѿ̾ϡƥåȿ

                  net_count_ppp_ipcp_in_octets

               ƥåȿ

                  net_count_ppp_ipcp_out_octets

         [5]   PPP ΡPROTO_FLG_PPP
                 PPP ΤΥͥåȥ׾ϡ ɸ๽¤ѿǡ
               ѿ̾ net_count_ppp Ǥ롣 ޤ PPP Ǥ net_buf
               γƼԿϡ ɸǡѿǡ ѿ̾
               net_count_ppp_no_buf Ǥ롣

         [6]   롼ץХå󥿥եPROTO_FLG_LOOP
                 ɸ๽¤ѿǡѿ̾ net_count_loop Ǥ롣

         [7]   ͥåȥǥХɥ饤 NICPROTO_FLG_ETHER_NIC
                 ɸǡѿǡ ѿ̾ net_count_ether_nic
               Ǥ롣

         [8]   PROTO_FLG_ETHER
                 ɸ๽¤ѿǡѿ̾ net_count_ether Ǥ롣

         [9]   PROTO_FLG_ARP
                 ɸ๽¤ѿǡѿ̾ net_count_arp Ǥ롣

         [10]  PROTO_FLG_IP4
                 ɸǡѿǡѿ̾ net_count_ip4 Ǥ롣

         [11]  PROTO_FLG_IP6
                 ɸǡѿǡѿ̾ net_count_ip6 Ǥ롣

         [12]  PROTO_FLG_ICMP4
                 ɸ๽¤ѿǡѿ̾ net_count_icmp4 Ǥ롣

         [13]  PROTO_FLG_ICMP6
                 ɸǡѿǡѿ̾ net_count_icmp6 Ǥ
               롣

         [14]  PROTO_FLG_ND6
                 ɸǡѿǡѿ̾ net_count_nd6 Ǥ롣

         [15]  PROTO_FLG_UDP
                 ɸ๽¤ѿǡѿ̾ net_count_udp Ǥ롣

         [16]  PROTO_FLG_TCP
                 ɸǡѿǡѿ̾ net_count_tcp Ǥ롣

         [17]  PROTO_FLG_NET_BUF
                 net_buf ˴ؤƤϡ üǤ뤿᥵ץ륢ץꥱ
                nserv ǻѤƤ netapp/dbg_cons.c δؿ
               net_count 򻲾Ȥ뤳ȡ

5. 2  SNMP Ѵ١MIB

  ѥե졼󡦥եΤ줫ǡ ޥ
SUPPORT_MIB 뤳ȤˤꡢSNMP Ѵ١MIBˤ˽
ͥåȥפμǽǤ롣TINET Τϡ١
MIBˤ˽򤷤ͥåȥפ󶡤ǡSNMP 򥵥ݡȤ
ƤʤޤRFC1213RFC2465RFC2466 ƤƤξ
Ǥ櫓ǤϤʤǤϡط륤󥯥롼ɥե
ι¤Τ򻲾Ȥ뤳ȡ
  ʲˡ롼ס¤ΤƤ륤󥯥롼ɥե롢¤̾
¤ѿ̾򼨤

   (1)   TCP 롼

            󥯥롼ɥե    netinet/tcp_var.h
            ¤̾                T_TCP_STATS
            ѿ̾                  tcp_stats

   (2)   UDP 롼

            󥯥롼ɥե    netinet/udp_var.h
            ¤̾                T_UDP_STATS
            ѿ̾                  udp_stats

   (3)   ICMPv4 롼

            󥯥롼ɥե    netinet/icmp_var.h
            ¤̾                T_ICMP_STATS
            ѿ̾                  icmp_stats

   (4)   IPv4 롼

            󥯥롼ɥե    netinet/ip_var.h
            ¤̾                T_IP_STATS
            ѿ̾                  ip_stats

   (5)   ICMPv6 롼

            󥯥롼ɥե    netinet/icmp6.h
            ¤̾                T_ICMP6_IFSTAT
            ѿ̾                  icmp6_ifstat

   (6)   IPv6 롼

            󥯥롼ɥե    netinet6/ip6_var.h
            ¤̾                T_IN6_IFSTAT
            ѿ̾                  in6_ifstat

   (7)   ͥåȥ󥿥եʥͥåȡ˥롼

            󥯥롼ɥե    net/if_var.h
            ¤̾                T_IF_STATS
            ѿ̾                  if_stats

5. 3  TINET ؿݡȴؿȥޥ

  ѥץफ TINET ˥뤿δؿ ݡȴؿ
ȥޥǤ롣

   (1)   󥿥ե IPv4 ɥ쥹ꤹؿ

         [1]   :

                  ER in4_add_ifaddr (T_IN4_ADDR addr, T_IN4_ADDR mask);

         [2]    addr: IP ɥ쥹
         [3]    mask: ֥ͥåȥޥ
         [4]   : ͥåȥ󥿥եͥåȤǡ ͥ
               ȥؤ IPv4 ξΤͭǤ롣
         [5]   :  E_OK
         [6]   󥯥롼ɥե: <netinet/in.h>

   (2)   IPv4 Ūϩɽ˥ȥꤹؿ

         [1]   :

                  ER in4_add_route (int index, T_IN4_ADDR target,
                                               T_IN4_ADDR mask,
                                               T_IN4_ADDR gateway);

         [2]    index: ȥΥǥå
         [3]    target: ɸͥåȥ IP ɥ쥹
         [4]    mask: ɸͥåȥΥ֥ͥåȥޥ
         [5]    gateway: ȥ IP ɥ쥹
         [6]   : ͥåȥ󥿥եͥåȤǡ ͥ
               ȥؤ IPv4 ξΤͭǤ롣
         [7]   :  index ͤͤѥե
               졼ѥ᡼ NUM_ROUTE_ENTRY ʾΤȤ E_PAR
         [8]   󥯥롼ɥե: <netinet/in.h>

   (3)   IPv4 ɥ쥹ʸѴؿ

         [1]   :

                  extern UB *ip2str (UB *buf, const T_IN4_ADDR *ipaddr);

         [2]    buf: ʸ IPv4 ɥ쥹  16 ХȤΰ
               ɬפǤ롣NULL ꤹȡTINET ǳݤƤ
               Хåեʸ񤭹ߡΥɥ쥹֤ 
               ѥե졼ѥ᡼
               NUM_IPADDR_STR_BUFF ˤХåեꤹ뤳Ȥ
               롣 ХåեĶϢ³Ū˸ƽФȥХåե
               񤭤롣
         [3]    ipaddr: IPv4 ɥ쥹
         [4]   :  buf
         [5]   󥯥롼ɥե: <netinet/in.h>

   (4)   IPv6 ɥ쥹ʸѴؿ

         [1]   :

                  extern UB *ipv62str (UB *buf, const T_IN6_ADDR *ipaddr);

         [2]    buf: ʸ IPv6 ɥ쥹  40 ХȤΰ
               ɬפǤ롣NULL ꤹȡTINET ǳݤƤ
               Хåեʸ񤭹ߡ Υɥ쥹֤
               ѥե졼ѥ᡼
               NUM_IPADDR_STR_BUFF ˤХåեꤹ뤳Ȥ
               롣 ХåեĶϢ³Ū˸ƽФȥХåե
               񤭤롣
         [3]    ipaddr: IPv6 ɥ쥹
         [4]   :  buf
         [5]   󥯥롼ɥե: <netinet/in6.h>

   (5)   ITRON TCP/IP API ǽɤʸɽѴؿ

         [1]   :

                  const char *in_strtfn (FN fncd);

         [2]    fncd: ITRON TCP/IP API ǽ
         [3]   : ITRON TCP/IP API ǽɤʸɽ
         [4]   󥯥롼ɥե: <netinet/in.h>

   (6)   MAC ɥ쥹ʸѴؿ

         [1]   :

                  extern UB *mac2str (UB *buf, UB *macaddr);

         [2]    buf: ʸ MAC ɥ쥹 18 ХȤΰ褬
               ɬפǤ롣NULL ꤹȡTINET ǳݤƤ
               Хåեʸ񤭹ߡ Υɥ쥹֤
               ե졼ѥ᡼
               NUM_MACADDR_STR_BUFF ˤХåեꤹ뤳Ȥ
               롣 ХåեĶϢ³Ū˸ƽФȥХåե
               񤭤롣
         [3]    macaddr: MAC ɥ쥹
         [4]   :  buf
         [5]   󥯥롼ɥե: <net/net.h>

   (7)   TINET ΥСޥ

         [1]   :

                  TINET_PRVER

         [2]   ӥå 12  15: ᥸㡼꡼ʸߤͤ 1
         [3]   ӥå 4  11: ޥʡ꡼ʸߤͤ 3
         [4]   ӥå 3  0: ѥå٥ʸߤͤ 0
         [5]   󥯥롼ɥե: <netinet/in.h>

   (8)   8 ӥå˻ꤷ IPv4 ɥ쥹 32 ӥåȤˤޥ

         [1]   :

                  MAKE_IPV4_ADDR (UB a, UB b, UB c, UB d)

         [2]    a: IPv4 ɥ쥹Υӥå 24  31
         [3]    b: IPv4 ɥ쥹Υӥå 16  23
         [4]    c: IPv4 ɥ쥹Υӥå 8  15
         [5]    d: IPv4 ɥ쥹Υӥå 0  7
         [6]   : 32 ӥåȤ IPv4 ɥ쥹
         [7]   󥯥롼ɥե: <netinet/in.h>

5. 4  ѥץॳХåؿ

  TINET ƽФѥץॳХåؿǤꡢѥץ
¦Ѱդɬפ롣

   (1)   IPv4 ɥ쥹ʣлΥХåؿ

         [1]   ѥե졼ѥ᡼:
               ARP_CFG_CALLBACK_DUPLICATED
         [2]   :

                  BOOL arp_callback_duplicated(UB *shost);

         [3]    shost: ʣ MAC ɥ쥹
         [4]   : TRUE ꤹȡ TINET ǽʣ MAC 
               쥹 syslog ˽Ϥ ʣˤʣȤ
               롣FALSE ꤹȲ⤷ʤ
         [5]   󥯥롼ɥե: <netinet/if_ether.h>

6.  󥹥ȡȥեκѹ

6. 1  󥹥ȡ

   (1)   TOPPERS/JSP 򥤥󥹥ȡ뤹롣 TOPPERS/JSP Υ󥹥ȡ
         ؤƤϡTOPPERS/JSP ͥ桼ޥ˥奢Ρ7. ȯ
         󥹥ȡ롦ݡƥ󥰡פ򻲾Ȥ뤳ȡ 

   (2)   TINET ۥե JSP 롼ȥǥ쥯ȥŸ롣

   (3)   TINET ե졼 tinet_cfgcygwin Ǥ tinet_cfg.exe
         롣

         [1]   TINET ե졼Υǥ쥯ȥϡ JSP 롼ȥǥ
               쥯ȥβ tinet/cfg Ǥ롣Υǥ쥯ȥ˰ư롣

         [2]   make  TINET ե졼롣

6. 2  եκ

  ץꥱץ¾ˡ ѹ٤ե
TINET ե졼եʲ˼  JSP 롼
ȥǥ쥯ȥ꤫ХѥǤꡢMakefile ޥΰ̣ʲ˼

   $(CPU)          å CPU
   $(SYS)          åȥƥ
   $(NIC)          ͥåȥ󥿥ե
   $(APP_DIR)      ץꥱץΥǥ쥯ȥ
   $(UNAME)        ץꥱץ̾

   (1)   config/$(CPU)/tinet_cpu_config.hڿ
         ץå˰¸ TINET ե졼󡦥ѥ᡼
         եǤ롣 ƤˤĤƤ tinet_config.txt 
         Ȥ뤳ȡ

   (2)   config/$(CPU)/$(SYS)/tinet_sys_config.hڿ
         ƥ˰¸ TINET ե졼󡦥ѥ᡼
         եǤ롣 ƤˤĤƤ tinet_config.txt 
         Ȥ뤳ȡ

   (3)   $(APP_DIR)/tinet_app_config.hڿ
         ץꥱ˰¸ TINET ե졼󡦥ѥ
         ᡼եǤ롣 ƤˤĤƤ
         tinet_config.txt 򻲾Ȥ뤳ȡ

   (4)   tinet/netdev/$(NIC)/tinet_nic_config.hڿ
         ͥåȥ󥿥ե˰¸ TINET ե졼
         󡦥ѥ᡼եǤ롣 

   (5)   config/$(CPU)/tinet_cpu_defs.hڿ
         ץå˰¸ TCP/IP ѥ᡼եǤ
         롣ƤˤĤƤ tinet_defs.txt 򻲾Ȥ뤳ȡ

   (6)   tinet/netdev/$(NIC)/tinet_nic_defs.hڿ
         ͥåȥ󥿥ե˰¸ TCP/IP ѥ᡼
         եǤ롣 ƤˤĤƤ tinet_defs.txt 򻲾Ȥ뤳ȡ

   (7)   $(APP_DIR)/tinet_$(UNAME).cfgڿ
         TINET ե졼եǤ롣 ƤˤĤƤ
         5. TINET ե졼 TINET ե졼ե
          פ򻲾Ȥ뤳ȡ 

   (8)   $(APP_DIR)/route_cfg.cڿ
         Ū롼ƥ󥰤ꤹեǤ롣 ƤˤĤƤϡ6.
         Ū롼ƥ󥰤 פ򻲾Ȥ뤳ȡʤǥեȥ
         ȥΤߤΥץʥͥåȥǤϡ ץ륢ץꥱ
          echos  route_cfg.c 򤽤ΤޤήѤǤ롣

   (9)   $(APP_DIR)/$(UNAME).cѹ
         TINET Ѥ뤿ˡ ʲΥ󥯥롼ɥեꤹ
         ɬפ롣

            #include "tinet_id.h"
            #include <netinet/in.h>
            #include <netinet/in_itron.h>

   (10)  $(APP_DIR)/$(UNAME).cfgѹ
         TINET ǻѤ륫ͥ륪֥Ȥिˡ
         TINET ե졼ե򥤥󥯥롼ɤ롣

            #include "../tinet/tinet.cfg"

   (11)  $(APP_DIR)/Makefileѹ
         ѹˤĤƤϡ7. ץꥱ Makefileפ򻲾Ȥ뤳ȡ

   (12)  $(APP_DIR)/tinet_cfg.cڼư
         TCP ոTCP ̿üڤ UDP ̿üб빽¤Τ
         եǡ TINET ե졼ˤ롣
         ץꥱץࡢ TINET ȶ˥ѥ뤷ƥ󥯤롣

   (13)  $(APP_DIR)/tinet_kern.cfgڼư
         TINET ǻѤ륫ͥ륪֥ȤŪ API 
         եǡTINET ե졼ˤ롣 JSP 
         ƥॳե졼եɸǤ $(UNAME).cfg
         ˥󥯥롼ɤ롣

   (14)  $(APP_DIR)/tinet_id.hڼư
         TCP ոTCP ̿üڤ UDP ̿ü ID ưշ
         եǡTINET ե졼ˤ롣

6. 3  ץꥱ Makefile

6. 3. 1  Makefile ο

  TINET ȹॢץꥱѤ Makefile οϡJSP Υץ
ץΥǥ쥯ȥ sample ˤ Makefile.tinet ǤꡢTINET 
ۥեŸ˥ǥ쥯ȥ sample ɲä롣 
Makefile.tinet ˤϡMakefile.mware 

   #
   #  ץꥱץ˴ؤ
   #
      ... ά ...
   UTASK_LIBS =

θˡ˼ TINET ѤɲäƤ롣

   #
   #  ͥåȥӥ
   #
   
   #  ͥåȥ󥿥ե򡢲줫򤹤롣
   
   #NET_IF = loop
   #NET_IF = ppp
   NET_IF = ether
   
   #  ͥåȡǥХɥ饤Ф
   
   NET_DEV = if_ed
   
   #PPP_CFG_MODEM = true   # PPP ǡǥ³ξ
   
   #  ͥåȥؤ򡢲줫򤹤롣
   
   SUPPORT_INET4 = true
   #SUPPORT_INET6 = true
   
   #  ȥ󥹥ݡؤ
   
   SUPPORT_TCP = true
   #SUPPORT_UDP = true
   
   #
   #  ߥɥ륦 Makefile Υ󥯥롼
   #
   include $(SRCDIR)/tinet/Makefile.tinet

6. 3. 2  Makefile κˡ

  TINET ȹॢץꥱѤ Makefile κˡʲ˼

   (1)   Makefile.tinet ˤ롣
           JSP Υե졼󥹥ץ configure ˤꡢ
         Makefile ˡǤ롣JSP Υե졼
         ץ configure ¹Ԥˡץꥱѥǥ쥯
         ȥȤ NAPPˤȡߡΥǥ쥯ȥȤ config 
         tinet 롣

            mkdir NAPP
            mkdir config/tinet

           ˡץꥱѥǥ쥯ȥ˰ươ ʲ˼
         褦ˡJSP Υե졼󥹥ץ configure 
         Ԥ롣

            cd NAPP
            ../configure -C tinet

         ˤꡢ TOPPERS/JSP ͥ桼ޥ˥奢Ρ7.4 
         ץץιۡפ˼Ƥ褦ˡ ץꥱ
         ѥǥ쥯ȥ NAPP ˤϡ Makefile 롣 ʤ
         sample1.csample1.hsample1.cfg 뤬 Ūˤ
         פǤ롣
           θϡܥ桼ޥ˥奢Ρ7.3 Makefile νפȡ
         TOPPERS/JSP ͥ桼ޥ˥奢Ρ7.7 Makefile ν
         ˤꡢԤ

   (2)   TINET ץ륢ץꥱIPv4 TCP ECHO Сפ
         Makefile 롣

         TINET ץ륢ץꥱIPv4 TCP ECHO Сʥǥ
         ȥ echosˡפϡ ͥåȥץꥱɬפʳƥե
         ˡλͤȤʤ롢 TCP еǽΤߤΥ
         ʥץꥱǤʤIPv6 ˤбƤʤˡ
          echos  Makefile 򥳥ԡơ ץꥱѤ
         Makefile  ܥ桼ޥ˥奢Ρ7.3 Makefile ν
         פȡ TOPPERS/JSP ͥ桼ޥ˥奢Ρ7.7
         Makefile νפˤꡢԤ

6. 3. 3  Makefile ν

  TINET ȹॢץꥱѤ Makefile νʲ˼

   (1)   ͥåȥ󥿥ե
           ʲ˼顢롼ץХå ꥢ륤󥿥ե
         Ѥ PPPͥåȤβ줫򤹤롣

            #NET_IF = loop
            #NET_IF = ppp
            NET_IF = ether

   (2)   ͥåȡǥХɥ饤Ф
           ʲ˼̤ꡢ NET_DEV ˥ͥåȡǥХɥ饤
         롣ߡTINET ۥեˤϡNE2000 ߴ NIC
         ΥͥåȡǥХɥ饤ФΤ󶡤Ƥ롣 

            NET_DEV = if_ed

   (3)   ǥ³
           PPP ǡǥ³ξϡʲιԤͭˤ롣

            #PPP_CFG_MODEM = true   # PPP ǡǥ³ξ

   (4)   ͥåȥؤ
           ʲ˼顢IPv4  IPv6 β줫򤹤롣

            SUPPORT_INET4 = true
            #SUPPORT_INET6 = true

   (5)   ȥ󥹥ݡؤ
           ʲ˼顢 ɬפʥץȥ򤹤롣

            SUPPORT_TCP = true
            #SUPPORT_UDP = true

6. 3. 4  ߥɥ륦 Makefileʻ͡

  TINET ȹॢץꥱѤ Makefile ϡʲ˼ե
Υ󥯥롼ɤˤꡢ

   #
   #  ߥɥ륦 Makefile Υ󥯥롼
   #
   include $(SRCDIR)/tinet/Makefile.tinet

TINET Ѥ Makefile 򥤥󥯥롼ɤ褦ˤʤäƤ롣ޤTINET 
ȹॢץꥱѤ Makefile ϡTINET ǤʤʣΥߥɥ
ȹǤ褦ˤʤäƤ롣TINET ʳΥߥɥ륦
ϡ嵭˼

   include $(SRCDIR)/tinet/Makefile.tinet

θˡߥɥ륦Ѥ Makefile 򥤥󥯥롼ɤԤɲä롣
  ǤϡͤȤơߥɥ륦Ѥ Makefile γƹܤγפʲ
˼

   (1)   MTASK_CFG
         ߥɥ륦Υե졼եʥˤɲ
         롣TINET Ǥϡ$(TINET_CFG)ͤ tinet_$(UNAME).cfgˤ
         äƤ롣

   (2)   MTASK_KERNEL_CFG
         ߥɥ륦Υե졼Ϥ졢 JSP Υƥ
         ե졼ե˥󥯥롼ɤե
         ɲä롣 TINET Ǥϡ $(TINET_KERNEL_CFG)ͤϡ
         tinet_kern.cfgtinet.cfgTINET ǻѤ륫ͥ륪֥
         ȤƤ륳ե졼եˤɲäƤ롣

   (3)   MTASK_DIR
         ߥɥ륦Υǥ쥯ȥɲä롣TINET Ǥ $(TINET_DIR)
         ͤ
         $(TINET_ROOT)/net:$(TINET_ROOT)/netinet:$(TINET_ROOT)/netinet6
         ɲäƤ롣

   (4)   MTASK_LCSRCS
         ߥɥ륦Υ饤֥경륽եɲä롣TINET
         Ǥ $(TINET_LCSRCS)ͤ tcp_usrreq.c udp_usrreq.cˤɲ
         Ƥ롣

   (5)   MTASK_ASMOBJS
         ߥɥ륦Υ֥Υ֥ȥեɲä롣
         TINET ˤϤʤ

   (6)   MTASK_CXXOBJS
         ߥɥ륦 C++ Υ֥ȥեɲä롣
         TINET ˤϤʤ

   (7)   MTASK_COBJS
         ߥɥ륦 C Υ֥ȥեɲä롣 TINET
         Ǥϡ $(TINET_COBJS)ͤϡ¿ΥեΤᡢǤϾ
         άˤɲäƤ롣

   (8)   MTASK_CFLAGS
         ߥɥ륦򥳥ѥ뤹ȤΥץǤ롣 TINET 
          $(TINET_CFLAGS)̤ͤˤɲäƤ롣

   (9)   MTASK_LIBS
         ߥɥ륦Υ饤֥ɲä롣 TINET Ǥϡ$(TINET_LIB)
         ͤ libtinet.aˤ -lc ɲäƤ롣

   (10)  MTASK_CLEAN_FILES
         make clean ǡ˾õեɲä롣TINET Ǥϡ
         $(TINET_CFG_OUT)ͤϡtinet_kern.cfg tinet_id.h tinet_cfg.c
          $(TINET_LIB)ͤ libtinet.aˤɲäƤ롣

7.  ץ륢ץꥱ

  ץȤơ ʲΥץꥱ󶡤Ƥ롣 

   (1)   IPv4 TCP ECHO Сechos
           ͥåȥץꥱɬפʳƥեˡ
         ͤȤʤ롢 TCP еǽΤߤΥץʥץꥱ
         Ǥ롣IPv4 ΤߤбƤ롣
   (2)   饤ȥСåȡnserv
           ǥ쥯ȥ JSP 롼ȥǥ쥯ȥβ nserv Ǥꡢ
         IPv4  IPv6 ξбƤ롣ʲ˼ФȤ߹
         Ƥꡢɬפ˱ơȤ߹ॵФǤ롣 ʡϡ
         tinet/netapp ˤ륽ե̾Ǥ롣

         [1]   WWW Сwwws.c
               롼ȥڡ¾ˡͥåȥ׾ɽ 2 ڡ
               鹽졢Ϻ 2 Ǥ롣
         [2]   TCP С
               tcp_echo_srv1.c  tcp_echo_srv2.c Τɤ餫򤹤롣
               tcp_echo_srv1.c 򤷤硢ʥԡ API Ѥơ
               Υ֥å󥰥Ѥʤϡ 8 
               ǻǽǤ롣
         [3]   UDP Сudp_echo_srv.c
         [4]   TCP ǥɥСtcp_discard_srv.c

         ޤ 饤ȤȤƤϰʲεǽȤ߹ޤƤꡢɬ
         ˱ơȤ߹९饤ȤǤ롣 

         [a]   TCP 饤ȡtcp_echo_cli.c
         [b]   UDP 饤ȡudp_echo_cli.c
         [c]   TCP ǥɥ饤ȡtcp_discard_cli.c
         [d]   UDP ǥɥ饤ȡudp_discard_cli.c
         [e]   pingping.c
         [f]   ʰץ󥽡롦dbg_cons.c
               ꥢ륤󥿥եǤʤtelnet ץȥ
               Ѥơ ͥåȥͳѤ뤳ȤǽǤ롣
               telnet ³ȡꥢϤѤǼ¹Ԥ
               롣ǤȡΥꥢϤ᤹TCP
               ΥΥ֥å󥰥ȹɬפ롣 

   (3)   JSP Υץץ sample1 Υͥåȥбsample1n
           JSP Υץץ sample1 Υͥåȥбץ
         Ǥ롣telnet ³ȡꥢϤѤǼ
         Ԥ롣 ǤȡΥꥢϤ᤹
   (4)   ǾСminsv
           WWW С TCP СΤߤʤ
         ΥФǤꡢH8/3069F ¢Ƥ RAM16K Хȡ
          ROM512K Хȡˤ˼ޤꡢפǤ롣ߤϡ
         ̿ӥ NKEV-010H8 ȽŻ̾ H8/3069F
         ΥƥбƤ롣
           ƥƥ¸ Makefile.config Ρּ¹ԴĶפǡ

            # ROM RAM̤
            #DBGENV := INMEM_ONLY

         ͭˤơ¹ԥ⥸塼롣 

7. 1  饤ȥХåȡnservˤ

7. 1. 1  tinet_app_config.h 

  IPv4 ξ硢IP ɥ쥹֥ͥåȥޥǥեȥȥ
ꤹ롣

   (1)   IPV4_ADDR_LOCAL
         ʬ IP ɥ쥹ꤹ롣 PPP ѤȤ
         ˳ƤƤ餦 0 ꤹ뤳ȡ

   (2)   IPV4_ADDR_REMOTE
          IP ɥ쥹ꤹ롣PPP ѤȤ 
         ˳ƤƤ餦 0 ꤹ뤳ȡ

   (3)   IPV4_ADDR_LOCAL_MASK
         ֥ͥåȥޥꤹ롣 ͥåȥ󥿥ե
         ͥåȤΤȤͭǤ롣 

   (4)   IPV4_ADDR_DEFAULT_GW
         ǥեȥȥꤹ롣 ͥåȥ
         եͥåȤΤȤͭǤ롣 

7. 1. 2  route_cfg.c 

  ͥåȥ󥿥եͥåȤξϡ 롼ƥɽ
routing_tbl ꤹ롣ǥեȥȥΤߤΥץ
ʥͥåȥǤϡѹɬפϤʤ 

7. 1. 3  Makefile 

   (1)   ͥåȥ󥿥ե

         [1]   ꥢݡȤѤ PPPIPv4 Τͭ
                 ֥ͥåȥ󥿥եפ

                  NET_IF = ppp

               򤹤롣 ޤǥ³ξϡ

                  PPP_CFG_MODEM = true

               򤹤롣

         [2]   NE2000 ߴ NIC Ѥͥå
                 ǽʥƥ̿ӥ NKEV-010H8
               ޤϽŻ̾ H8/3068FH8/3069F˥ͥåбǤ
               롣֥å̾פ

                  SYS = nkev_010h8
                  #SYS = akih8_3068f
                  #SYS = akih8_3069f

               β줫򤹤롣
                 ֥ͥåȥ󥿥եפ

                  NET_IF = ether

               򤹤롣

   (2)   ͥåȥؤ
           ͥåȥؤϡIPv4  IPv6 β줫򤹤롣

         [1]   IPv4 򤹤ϡʲιԤͭˤ롣

                  SUPPORT_INET4 = true

         [2]   IPv6 򤹤ϡʲιԤͭˤ롣

                  SUPPORT_INET6 = true

   (3)   ȹൡǽ

         [1]   TCP μɥХåեξʥԡǽ
                 ץ륢ץꥱǡ TCP μɥХåե
               ξʥԡǽȹϡ

                  TCP_CFG_RWBUF_CSAVE_ONLY = true

               ޤϡ

                  TCP_CFG_RWBUF_CSAVE = true

               򤹤롣 TCP_CFG_RWBUF_CSAVE_ONLY 򤹤ȡTCP
               ̿üŪ API Ǥ TCP_CRE_CEP ǡ 
               ɥХåե rbuf ˡ ꥢɥ쥹ꤷƤ⡢
               ץȥ륹åϡλ̵뤷ơ TCP μ
               ɥХåեξʥԡǽˤ롣 ޤ
               TCP_CFG_RWBUF_CSAVE 򤹤ȡTCP_CRE_CEP ǡ 
               ɥХåե rbuf ˡ NADRNULLˤꤷȤ
               ߡץȥ륹å TCP μɥХåեξ
               ԡǽˤ롣

         [2]   TCP ɥХåեξʥԡǽ
                 ץ륢ץꥱǡ TCP ɥХåե
               ξʥԡǽȹϡ

                  TCP_CFG_SWBUF_CSAVE_ONLY = true

               ޤϡ

                  TCP_CFG_SWBUF_CSAVE = true

               򤹤롣 TCP_CFG_SWBUF_CSAVE_ONLY 򤹤ȡTCP
               ̿üŪ API Ǥ TCP_CRE_CEP ǡ 
               ɥХåե rbuf ˡ ꥢɥ쥹ꤷƤ⡢
               ץȥ륹åϡλ̵뤷ơ TCP 
               ɥХåեξʥԡǽˤ롣 ޤ
               TCP_CFG_SWBUF_CSAVE 򤹤ȡTCP_CRE_CEP ǡ 
               ɥХåե rbuf ˡ NADRNULLˤꤷȤ
               ߡץȥ륹å TCP ɥХåեξ
               ԡǽˤ롣

         [3]   TCP ΥΥ֥å󥰥
                 ץ륢ץꥱǡ TCP ΥΥ֥å󥰥
               ȹϡ

                  TCP_CFG_NON_BLOCKING = true

               򤹤롣

         [4]   UDP ΥΥ֥å󥰥
                 ץ륢ץꥱǡ UDP ΥΥ֥å󥰥
               ȹϡ

                  UDP_CFG_NON_BLOCKING = true

               򤹤롣

   (4)   Υ֥å󥰥Ⱦʥԡ API 

         [1]   TCP ΥΥ֥å󥰥
                 ץ륢ץꥱǡ TCP ΥΥ֥å󥰥
               Ѥϡ

                  USE_TCP_NON_BLOCKING = true

               򤹤롣

         [2]   ʥԡ API
                 ץ륢ץꥱǡʥԡ API Ѥϡ

                  USE_COPYSAVE_API = true

               򤹤롣

         [3]   UDP ΥΥ֥å󥰥
                 ץ륢ץꥱǡ UDP ΥΥ֥å󥰥
               Ѥϡ

                  USE_UDP_NON_BLOCKING = true

               򤹤롣 ХåȤƱ˻ѤǤʤ 

         [4]   UDP ΥХå
                 ץ륢ץꥱǡ UDP ΥХå
               ϡ

                  USE_UDP_CALL_BACK = true

               򤹤롣 Υ֥å󥰥ȤƱ˻
               ѤǤʤ

   (5)   ̥Хץ

         [1]   WWW ХץѤϡ ʲιԤͭˤ롣

                  USE_WWW_SRV = ture

         [2]   UDP ХץѤϡ ʲιԤ
               ͭˤ롣

                  USE_UDP_ECHO_SRV = ture

         [3]   TCP ǥɥХץѤϡ ʲ
               ιԤͭˤ롣

                  USE_TCP_DISCARD_SRV = ture

         [4]   Ʊ췿 TCP ХץѤ
               ϡʲιԤͭˤ롣

                  TCP_ECHO_SRV = tcp_echo_srv1

         [5]   ʬΥ TCP ХץѤ
               ϡʲιԤͭˤ롣

                  TCP_ECHO_SRV = tcp_echo_srv2

   (6)   ̥Х

         [1]   WWW ХϰʲιԤ򤹤롣 2 
               Ǥ롣

                  CDEFS := $(CDEFS) -DNUM_WWW_SRV_TASKS=2

         [2]   TCP ECHO Х򤹤롣ʲξΤ
               ͭǤ롣

               tcp_echo_srv1.c 򤷤
               ʥԡ API Ѥ롣
               Υ֥å󥰥Ѥʤ

               TCP ECHO ХϰʲιԤ򤹤롣
               8 Ǥ롣

                  CDEFS := $(CDEFS) -DNUM_TCP_ECHO_SRV_TASKS=8

   (7)   ̥饤ȥץ

         [1]   TCP 饤ȥץѤϡ ʲ
               ιԤͭˤ롣

                  USE_TCP_ECHO_CLI = ture

         [2]   UDP 饤ȥץѤϡ ʲ
               ιԤͭˤ롣

                  USE_UDP_ECHO_CLI = ture

         [3]   TCP ǥɥ饤ȥץѤϡ
               ʲιԤͭˤ롣

                  USE_TCP_DISCARD_CLI = ture

         [4]   UDP ǥɥ饤ȥץѤϡ
               ʲιԤͭˤ롣

                  USE_UDP_DISCARD_CLI = ture

         [5]   PING 饤ȥץѤϡʲιԤ
               ͭˤ롣

                  USE_PING = true

7. 2  ѥȥ

  ץ륢ץꥱΥǥ쥯ȥǥѥ뤹롣ѥ롦
󥯤ˡʲ˼

   make depend
   make

7. 3  ʰץ󥽡

  󥿡ͥåȥХåȤȤ߹ޤƤʰץ󥽡Υޥ
ʲ˼

   bs <host>           TCP ǥɥ饤ȡη֤
                       ưߤ롣

   bt <host> [<portno> [<repeat>]]
                       TCP ǥɥ饤ȡư
                       ǥɥ <host> ˥ǥɥѥ
                       롣<portno> ϡǥɥФ
                       ݡֹǡά 9 Ǥ롣 <repeat> ϡ
                       ֤ǡά 1 Ǥ롣

   bu <host> [<portno>]
                       UDP ǥɥ饤ȡư
                       ǥɥ <host> ˥ǥɥѥ
                       롣<portno> ϡǥɥФ
                       ݡֹǡά 9 Ǥ롣

   cf                  tinet_app_config.h ǻꤵ줿ѥ
                       ե졼ɽ롣 

   ct <cepid> [<fncd>] 
                       ڥǥ󥰤Ƥ TCP ̿ü <cepid> ν
                       򥭥󥻥뤹롣󥻥뤹 <fncd>
                       ǻꤹ롣<fncd> άϡƤν
                       򥭥󥻥뤹롣

   cu <cepid> [<fncd>] 
                       ڥǥ󥰤Ƥ UDP ̿ü <cepid> ν
                       򥭥󥻥뤹롣󥻥뤹 <fncd>
                       ǻꤹ롣<fncd> άϡƤν
                       򥭥󥻥뤹롣

   d                   ͥåȥ󥿥ե PPP λͭǤ
                       롣PPP ³Ǥ롣

   es <host>           TCP 饤ȡη֤ư
                       ߤ롣

   et <host> [<portno> [<repeat>]]
                       TCP 饤ȡư 
                        <host> ˥ѥ롣
                       <portno> ϡФΥݡֹǡά
                        7 Ǥ롣 <repeat> ϡ֤ǡά
                        1 Ǥ롣

   eu <host> <msg>     UDP 饤ȡư 
                        <host> ˥å <msg> 롣

   i                   ͥåȥ󥿥ե PPP λͭǤ
                       롣ľ³ξϡľ LCP ươ
                       Ф³롣 ǥ³ξϡѥ
                       ե졼 MODEM_CFG_PHONE_NUMBER
                       ѥ᡼ǻꤵƤ륵ФȯƤ롣 

   if [<addr> <mask>]  ͥåȥ󥿥ե PPP λϡ IP 
                       ɥ쥹֥ͥåȥޥ ֥ɥ㥹ȥ
                       쥹Ϥ롣 ͥåȥ󥿥ե
                       ͥåȤǡ ͥåȥؤ IPv4 λϡ
                       [<addr> <mask>] Ǥ롣 [<addr> <mask>]
                       ꤷʤСMAC ɥ쥹IP ɥ쥹
                       ֥ͥåȥޥ ֥ɥ㥹ȥɥ쥹ν
                       Τ߹Ԥ[<addr> <mask>] ꤷϡIP 
                       ɥ쥹ȥ֥ͥåȥޥѹ塢 MAC 
                       쥹IP ɥ쥹֥ͥåȥޥ֥ɥ
                       ȥɥ쥹Ϥ롣<addr> ϡ IP ɥ쥹
                       <mask> ϡ֥ͥåȥޥǤ롣

   na                  ͥåȥ󥿥եͥåȤλ
                       ͭǤ롣IPv4 Ǥ ARP å塢IPv6 Ǥ
                       ٥ɥ쥹åξ֤Ϥ롣 

   nb                  ͥåȥХåե׾Ϥ롣

   nc                  ͥåȥ׾ɽ롣

   nr [<index> <target> <mask> <gateway>]
                       ͥåȥ󥿥եͥåȤΤȤ
                       ͭǤ롣 ͥåȥؤ IPv4 λϡ
                       [<index> <target> <mask> <gateway>] Ǥ
                       롣 [<index> <target> <mask> <gateway>] 
                       ʤС ϩɽνϤΤ߹Ԥ [<index>
                       <target> <mask> <gateway>] ꤷϡϩ
                       ɽѹ塢 ϩɽϤ롣<index> ϡ
                       ϩȥΥǥå<target> ϡɸͥ
                       ȥ IP ɥ쥹<mask> ϡɸͥåȥ
                       Υ֥ͥåȥޥ<gateway> ϡ ȥ
                        IP ɥ쥹Ǥ롣

   nrl                 ͥåȥ󥿥եͥåȤǡ ͥ
                       ȥؤ IPv6 λͭǤ롣 ǥե
                       ȥ롼ꥹȤϤ롣

   nt                  TCP ̿ü TCP ոξ֤ɽ롣

   p <host> [<tmo>]    ۥ <host>  ICMP ѥåȤ롣<tmo>
                       ϥॢ͡ñ̤áˤǡ ꤷʤ
                        3 äǤ롣

   ps                  ξ֤ɽ롣

   r <tskid>            <tskid> Ԥ֤Ū˲롣

   w <tskid>            <tskid> 򵯾롣

8.  ռ

   TCP/IP ץȥ륹åϡȿγͤθٱˤ긦桦
ȯԤޤطư̤˴դޤ 

   (1)   ˡƻȵѿ

         [1]   ̾ʼ»ǯ١
               ٵѳȯȡʿ 12 ǯ١
         [2]   ơ̾
               ȹ߷楷ƥ TCP/IP ץȥ륹åγȯ

   (2)    NTT ɥ̳ƻѾһŹ
   (3)   кѻȾ̷кѻȶɡʰˡ: ˡͤߤ䤮
         

         [1]   ̾ʼ»ǯ١
               ϰ迷󥽡ฦ泫ȯȡʿ 1415 ǯ١
         [2]   ơ̾
               ȹߥƥࡦץץåȥۡιۤȤμѲȯ

   (4)   ܾ븩ȵ祻󥿡
   (5)   TOPPERS ץ
   (6)   ҥå
   (7)   ˡŵŻҾؽѿ

         [1]    6  LSI IP ǥ󡦥 IP 
              2004 ǯ ʿ 16 ǯ 5  20 
               ץ󥽡ȹߥƥ
               TCP/IP ץȥ륹å : TINET
         [2]    7  LSI IP ǥ󡦥 IP 
              2005 ǯ ʿ 17 ǯ 5  19 
               ȹߥƥ IP С 6 б
               TCP/IP ץȥ륹å : TINET-1.2

   (8)   Ż
   (9)   ͭ²̿ӥ

9.  饤

  TINET  FreeBSD 򸵤˳ȯԤäᡢ TINET ޤॽեȥ
¾Υեȥȯ˻ѤǤʤǺۤTOPPERS 饤
 (3) ˵Ƥ֡ˤϡ TOPPERS 饤 (3)  (b) 
ǤԽʬǡ(a) ˤˡɬפǤ롣
  ʲ˼ TOPPERS FreeBSD  FreeBSD ؤΥեȥδ£
Υ饤󥹵˽äơۤȼɥȡѼԥޥ˥奢
ɡˤˡ饤ɽԤȡ

(1)FreeBSD

   /*
    * Copyright (c) 1980, 1986, 1993
    *    The Regents of the University of California.  All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    * 1. Redistributions of source code must retain the above copyright
    *    notice, this list of conditions and the following disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the
    *    documentation and/or other materials provided with the distribution.
    * 3. All advertising materials mentioning features or use of this software
    *    must display the following acknowledgement:
    *    This product includes software developed by the University of
    *    California, Berkeley and its contributors.
    * 4. Neither the name of the University nor the names of its contributors
    *    may be used to endorse or promote products derived from this software
    *    without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    */

(2)KAME

   /*
    * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    * 1. Redistributions of source code must retain the above copyright
    *    notice, this list of conditions and the following disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the
    *    documentation and/or other materials provided with the distribution.
    * 3. Neither the name of the project nor the names of its contributors
    *    may be used to endorse or promote products derived from this software
    *    without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    */

(3)ͥåȡǥХɥ饤

   /*
    * Copyright (c) 1995, David Greenman
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    * 1. Redistributions of source code must retain the above copyright
    *    notice unmodified, this list of conditions, and the following
    *    disclaimer.
    * 2. Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the
    *    documentation and/or other materials provided with the distribution.
    *
    * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    * SUCH DAMAGE.
    *
    * $FreeBSD: src/sys/i386/isa/if_ed.c,v 1.148.2.4 1999/09/25 13:08:18 nyan Exp $
    */
   
   /*
    * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
    *   adapters. By David Greenman, 29-April-1993
    *
    * Currently supports the Western Digital/SMC 8003 and 8013 series,
    *   the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
    *   and a variety of similar clones.
    *
    */

(4)/usr/sbin/ppp

   /*
    *                      User Process PPP
    *
    *          Written by Toshiharu OHNO (tony-o@iij.ad.jp)
    *
    *   Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd.
    *
    * Redistribution and use in source and binary forms are permitted
    * provided that the above copyright notice and this paragraph are
    * duplicated in all such forms and that any documentation,
    * advertising materials, and other materials related to such
    * distribution and use acknowledge that the software was developed
    * by the Internet Initiative Japan, Inc.  The name of the
    * IIJ may not be used to endorse or promote products derived
    * from this software without specific prior written permission.
    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    */

(5)/usr/sbin/pppd

   /*
    * main.c - Point-to-Point Protocol main module
    *
    * Copyright (c) 1989 Carnegie Mellon University.
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms are permitted
    * provided that the above copyright notice and this paragraph are
    * duplicated in all such forms and that any documentation,
    * advertising materials, and other materials related to such
    * distribution and use acknowledge that the software was developed
    * by Carnegie Mellon University.  The name of the
    * University may not be used to endorse or promote products derived
    * from this software without specific prior written permission.
    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
    */

(6)TINET  TOPPERS

   /*
    *  TINET (TCP/IP Protocol Stack)
    * 
    *  Copyright (C) 2001-2006 by Dep. of Computer Science and Engineering
    *                   Tomakomai National College of Technology, JAPAN
    *
    *  嵭Ԥϡʲ (1)(4) ξ狼Free Software Foundation 
    *  ˤäƸɽƤ GNU General Public License  Version 2 ˵
    *  ҤƤ˸¤ꡤܥեȥܥեȥ
    *  ѤΤޤࡥʲƱˤѡʣѡۡʰʲ
    *  ѤȸƤ֡ˤ뤳Ȥ̵ǵ롥
    *  (1) ܥեȥ򥽡ɤηѤˤϡ嵭
    *      ɽѾ浪Ӳ̵ݾڵ꤬Τޤޤηǥ
    *      ˴ޤޤƤ뤳ȡ
    *  (2) ܥեȥ򡤥饤֥ʤɡ¾Υեȥȯ˻
    *      ѤǤǺۤˤϡۤȼɥȡ
    *      ԥޥ˥奢ʤɡˤˡ嵭ɽѾ浪Ӳ
    *      ̵ݾڵǺܤ뤳ȡ
    *  (3) ܥեȥ򡤵Ȥ߹ʤɡ¾Υեȥȯ˻
    *      ѤǤʤǺۤˤϡξȡ
    *    (a) ۤȼɥȡѼԥޥ˥奢ʤɡˤˡ嵭
    *        ɽѾ浪Ӳ̵ݾڵǺܤ뤳ȡ
    *  (4) ܥեȥѤˤľŪޤϴŪ뤤ʤ»
    *      ⡤嵭ԤTOPPERSץȤդ뤳ȡ
    *
    *  ܥեȥϡ̵ݾڤ󶡤ƤΤǤ롥嵭Ԥ
    *  TOPPERSץȤϡܥեȥ˴ؤơŬѲǽ
    *  ޤơʤݾڤԤʤޤܥեȥѤˤľ
    *  ŪޤϴŪʤ»˴ؤƤ⡤Ǥʤ
    * 
    *  @(#) $Id: $
    */
