Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dynamic interfaces #3

Open
koron opened this issue Feb 4, 2017 · 5 comments
Open

dynamic interfaces #3

koron opened this issue Feb 4, 2017 · 5 comments
Assignees

Comments

@koron
Copy link
Owner

koron commented Feb 4, 2017

デフォルトで利用する interface を動的に決定する。

#2 の修正は link-up しないインターフェースを対象に含めないようにするもの。
対象は初回にリストアップされ次回以降キャッシュされてしまうので、
以下のようなケースでは SSDP が機能しない懸念がある。

  1. LANケーブルは繋がずに電源を入れる
  2. go-ssdp を使ったプログラムが起動
  3. LANケーブルに繋ぐ

組み込み機器等では普通にありそうなシナリオで困りそう。

そこで対象となる interface を動的に決定することで、それを回避しようという算段。
interface 一覧を監視して、自動で再接続という手もありか。

@koron koron self-assigned this Feb 4, 2017
@koron
Copy link
Owner Author

koron commented Feb 4, 2017

まずはI/Fをリストアップするプログラムを書いて、
各OSでどう見えるか実際に観測してみないとダメそうだ…

@mattn
Copy link
Contributor

mattn commented Feb 4, 2017

状態は毎回 net.Interfaces() を呼び出した際に変わるので、状態を監視するなら毎回 net.Interfaces() を呼び出さないといけないっすね。問題は2つあって、一つが FlagUp の件、もう1件はif.MTU が0以下になる件があります。

@koron
Copy link
Owner Author

koron commented Feb 4, 2017

MTU が0なのは明らかにおかしいので、そういう interface はスキップすれば良いんですかね?
どうせUDPが正しく動くことも期待できないし。

@mattn
Copy link
Contributor

mattn commented Feb 4, 2017

ケーブルを差しなおすケースがありえる場合を考えると ssdp.Interfaces は元の形に戻して、実際に listen する手前で次回ループに回す(Sleepあり)的なのが良いのかもしれないですね。いつ復活するか分からないし。

@koron
Copy link
Owner Author

koron commented Feb 4, 2017

まぁ、そこはポーリングでも良いかなって思ってます。
定期的に利用可能な interface 一覧を、実際に使ってる一覧と比較して
違いがあったら listen し直すみたいな。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants