EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Wrong beacon source IP address
From: Ralph Lange <[email protected]>
To: EPICS Core-Talk <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Sat, 19 Dec 2015 18:32:13 +0100
On 19/12/2015 17:24, Johnson, Andrew N. wrote:
Please bear in mind that the code that you posted comes from the CA client, not the CA Repeater, and it's the repeater that sees the UDP packets — C++ clients get their beacons over TCP from the repeater. Inside ca_repeater() there is a statement that copies the beacon source IP address into a field of the beacon message before redistributing it, provided that address was zero in the incoming UDP message. The comments immediately above your code snippet describe this, although they call the repeater something like a fan-out server. I was reading through this yesterday and the code I looked at matched up with the comments, but I didn't check the code that actually generates the beacons.

Correct.
But that copying of the UDP sender address happens only if the message content was empty (zero), which is the behavior of old servers. New servers (that how I interpret that comments) do fill in the message content on the server side, which means that it does not get overwritten by the repeater or client. Also, Anze's wireshark data is taken from the network, not the local socket between client and caRepeater. This makes me pretty sure his server is new enough to fill in the beacon message contents itself.

The sending code is in rsrv/online_notify.c, lines 240ff.
For each element in the list of beacon addresses to send to, it connect()s the beacon socket, then calls getsockname() on it and puts the address it gets inside the beacon message.

  I don't know whether the Java library relies on the repeater so it might do things differently. Presumably Anze is using 3.15.3, could you also check against a 3.14.12 IOC in case the multi-interface changes in 3.15 broke the beacon generation code.

As far as I know, Anze is using a 3.14.12 IOC, and the single-interface changes in 3.15 do not apply.

Cheers,
~Ralph

References:
Fwd: Wrong beacon source IP address Ralph Lange
Re: Fwd: Wrong beacon source IP address Michael Davidsaver
Re: Fwd: Wrong beacon source IP address Andrew Johnson
Re: Fwd: Wrong beacon source IP address Michael Davidsaver
Re: Fwd: Wrong beacon source IP address Andrew Johnson
Re: Fwd: Wrong beacon source IP address Ralph Lange
Re: Wrong beacon source IP address Johnson, Andrew N.

Navigate by Date:
Prev: Re: Wrong beacon source IP address Johnson, Andrew N.
Next: Re: Fwd: Wrong beacon source IP address Michael Davidsaver
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Wrong beacon source IP address Johnson, Andrew N.
Next: Re: Fwd: Wrong beacon source IP address Michael Davidsaver
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  <20152016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 19 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·