Skip to content

Problem with multiple IP address interfaces #698

Open
@stephan57160

Description

@stephan57160

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions