(toppers-users 7) Re: TINET 1.7 - TCPハンドシェイク時のマルチキャストアドレス判定について

阿部 司 abe @ tomakomai-ct.ac.jp
2019年 11月 13日 (水) 09:58:57 JST


明京電機株式会社 駒込様
CC: 皆様

苫小牧高専の阿部です。

> この箇所を、
>  まず IPv4, 6パケットかを判別し、
>  それぞれのマルチキャストパケット判断マクロを実行すると
>  安定するように見受けられます。
> 
>  IN_IS_NET_ADDR_MULTICAST の箇所を以下に変更;
> 
>  if (GET_IP_VER(input)==IPV6_VERSION ? IN_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst) :
> IN4_IS_ADDR_MULTICAST(ntohl(GET_IP4_HDR(input)->dst)))
> 
> 
> ただし、我々のアプリにTINETを移植した際に漏れがないか、
> 例えばどこかでIPv4射影アドレスに展開する必要があったのか?
> なども気にかかっております。

ご指摘の通り、問題を確認しました。

netinet/in_var.h の 143行目を以下のように変更しました。
変更内容も論理的には同じです。

#define IN_IS_NET_ADDR_MULTICAST(nbuf) (GET_IP_VER(nbuf)==IPV6_VERSION \
         ?IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(nbuf)->dst)	\
         :IN4_IS_ADDR_MULTICAST(ntohl(GET_IP4_HDR(nbuf)->dst)))

残念ながら、私の環境では、再現が困難なため、
TCP の一般的な試験のみ行いました。

IN_IS_NET_ADDR_MULTICAST を使っているのは、検索した結果では、
netinet/tcp_input.c、netinet/tcp_subr.c だけであるため、
TCP 以外では問題は発生しないと考えられますが、確実ではありません。
変更して使っていただき確認をお願いします。

なお、次期リリースは未定ですが、これ以外の問題も修正して、
配布したいと考えております。

ご迷惑をお掛けしますが、よろしくお願いします。

-- 
.\" 苫小牧工業高等専門学校 創造工学科 情報科学・工学系
.\" 教授 阿部 司
.\" 〒059-1275 北海道苫小牧市字錦岡443番地
.\" E-mail: abe @ tomakomai-ct.ac.jp  TEL/FAX: 0144-67-8937


More information about the USERS mailing list