Skip to content

Problem with multiple IP address interfaces #698

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions