EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: Binding an IOC to a single network interface
From: Andrew Johnson <[email protected]>
To: <[email protected]>
Date: Mon, 10 Feb 2014 16:46:23 -0600

On 1/22/14, 8:30 AM, [email protected] wrote:
>>> we are looking to run a set of IOCs that bind channel access to just
>>> the loopback interface on the computer; however I saw from the 3.14
>>> docs that EPICS_CAS_INTF_ADDR_LIST is not currently implemented in the
>>> iocCore CA Server. I had a look at the code in base/src/rsrv and the
>>> attached diff (against 3.14.12.2) seems to work for us with:
>>>
>>> EPICS_CAS_INTF_ADDR_LIST=127.0.0.1
>>> EPICS_CAS_BEACON_ADDR_LIST=127.255.255.255
>>>
>>> I was just wondering if these additions are sufficient, or have I
>>> missed something elsewhere that either needs changing too or might
>>> cause issues later on?

I agree with Ralph's assessment, this patch looks like it should do what
is necessary to bind the server to one interface/IP address.

On 28.01.2014 23:28, J. Lewis Muir asked:
>> Have you had a chance to consider the patch sent by Freddie?  You seem
>> open to reviewing and accepting such a patch in the following Tech-Talk
>> post:
>>
>>    http://www.aps.anl.gov/epics/tech-talk/2013/msg01493.php
>>
>> I haven't looked at the patch, but the ability to specify the addresses
>> on which the IOC CA server listens has been a feature I've wished for
>> for a long time.

I am indeed happy to review and accept patches that will implement this
functionality. The main limitation of Freddie's patch is that it only
accepts a single hostname or IP address in the EPICS_CAS_INTF_ADDR_LIST
variable (as comments in his code acknowledge). It won't help you if you
need to configure an IOC to bind to more than one interface. I would be
reluctant to incorporate these changes into Base without the full
multi-interface functionality, which also seems to be Ralph's preference:

On 01/29/2014 03:15 AM, Ralph Lange added:
> At first glance, this patch looks fine and should cover almost all use
> cases. That feature has been on the wish list for a long time, I know.
> However, I would prefer a slightly more elaborate implementation that
> makes the server side environment variables work the same on both CAS
> and rsrv. (This will also minimize the necessary changes in the
> documentation.)

The work needed to support multiple independently-configured interfaces
is unfortunately not trivial, the current code in src/rsrv uses the
INADDR_ANY wild-card to open a socket on all the currently configured
interfaces at once. As a result it only needs one thread to handle the
UDP socket and one thread for the TCP socket.

To allow configuring of multiple interfaces implies creating multiple
UDP and TCP sockets, so we have to add a list to hold the parsed
interface addresses and split the existing code up to create a separate
task for each socket. Adding those new tasks implies checking for
sufficient mutexes and possible deadlocks, and adding information about
them to the CA server-report 'casr' output.

This isn't impossible to do, but as I said it's not trivial; I could see
it taking a few weeks for someone to get it right.

However this doesn't take away from the usefulness of Freddie's patch;
it if meets the needs of some sites they can still apply it locally.

- Andrew
-- 
Advertising may be described as the science of arresting the human
intelligence long enough to get money from it. -- Stephen Leacock

Replies:
Re: Binding an IOC to a single network interface Till Straumann
References:
Binding an IOC to a single network interface freddie.akeroyd
Re: Binding an IOC to a single network interface J. Lewis Muir
Re: Binding an IOC to a single network interface Ralph Lange

Navigate by Date:
Prev: Re: asyn driver problem running Linux 3.8.13 with arm processor Till Straumann
Next: Linux on PPC VME Boards Philip Taylor
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: RE: Binding an IOC to a single network interface Hill, Jeff
Next: Re: Binding an IOC to a single network interface Till Straumann
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·