Open
Description
My application is a GO application, unning on a Linux/arm box.
It uses the GOZYRE layer (for the full context).
Initialization is like :
...
myIp := findMyIp() // returns "192.168.57.92" in the following
node := gozyre.New("myBox", myIp, 0, headers, false)
node.SetBeaconPeerPort(49374)
node.Start()
...
GO to C is rather straightforward and does not seem to bring special things.
Basically, it would look like:
node = zyre_new("myBox");
zyre_set_header(node, xxx, yyy);
zyre_set_interface(node, "192.168.57.92");
zyre_set_beacon_peer_port(49374);
...
All is fine for years ;-)
Now, I add another IP on the same unique interface:
[root@myBox ~]$ ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.201 netmask 255.255.255.0 broadcast 192.168.1.255
ether b8:27:eb:9a:38:ce txqueuelen 1000 (Ethernet)
[root@myBox ~]$
Then, when the application is (re-)started, the other nodes in the
network are confused. They show continuous Enter/.../Exit for this particular
node.
Using TCPDUMP, I see the following:
- broadcast is performed on 192.168.57.255: ok.
- source address of TCP connection is set to 192.168.57.92: ok.
- content of the TCP flow shows tcp://192.168.1.201:49374 !!
This requests other nodes to contact my Box on its wrong address.
If one specifies the interface address with zyre_set_interface(), the same
address should be used to identify the TCP connection, no ?
Did I miss anything ?
Did I miss a call to something special ?
Or further investigations would be of interest ?
Metadata
Metadata
Assignees
Labels
No labels