Merge lp://qastaging/~epics-core/epics-base/rsrvbindiface into lp://qastaging/~epics-core/epics-base/3.16

Proposed by mdavidsaver
Status: Superseded
Proposed branch: lp://qastaging/~epics-core/epics-base/rsrvbindiface
Merge into: lp://qastaging/~epics-core/epics-base/3.16
Diff against target: 3880 lines (+2343/-583) (has conflicts)
38 files modified
configure/CONFIG_BASE_VERSION (+4/-0)
configure/RULES_EXPAND (+39/-0)
documentation/KnownProblems.html (+19/-0)
documentation/RELEASE_NOTES.html (+1162/-0)
src/ca/client/addrList.h (+1/-1)
src/ca/client/iocinf.cpp (+6/-5)
src/ca/client/udpiiu.cpp (+13/-0)
src/ioc/dbStatic/dbLex.l (+8/-3)
src/ioc/dbStatic/dbLexRoutines.c (+1/-0)
src/ioc/dbStatic/dbStaticLib.c (+4/-1)
src/ioc/rsrv/camessage.c (+8/-31)
src/ioc/rsrv/caserverio.c (+1/-1)
src/ioc/rsrv/caservertask.c (+557/-164)
src/ioc/rsrv/cast_server.c (+59/-95)
src/ioc/rsrv/online_notify.c (+14/-196)
src/ioc/rsrv/server.h (+20/-9)
src/libCom/env/envDefs.h (+2/-0)
src/libCom/env/envSubr.c (+14/-1)
src/libCom/osi/Makefile (+4/-0)
src/libCom/osi/os/Darwin/osdSock.h (+1/-0)
src/libCom/osi/os/Linux/osdSock.h (+1/-0)
src/libCom/osi/os/RTEMS/osdSock.h (+1/-0)
src/libCom/osi/os/WIN32/osdSock.h (+1/-0)
src/libCom/osi/os/cygwin32/osdSock.h (+1/-0)
src/libCom/osi/os/default/epicsMMIODef.h (+7/-6)
src/libCom/osi/os/default/osdNetIntf.c (+19/-25)
src/libCom/osi/os/freebsd/osdSock.h (+1/-0)
src/libCom/osi/os/iOS/osdSock.h (+1/-0)
src/libCom/osi/os/solaris/osdSock.h (+1/-0)
src/libCom/osi/os/vxWorks/epicsMMIO.h (+6/-1)
src/libCom/osi/os/vxWorks/osdSock.h (+1/-0)
src/libCom/osi/os/vxWorks/osdTime.cpp (+37/-5)
src/libCom/osi/osiClockTime.c (+59/-32)
src/std/filters/filters.dbd.pod (+7/-7)
src/tools/Makefile (+1/-0)
src/tools/assembleSnippets.pl (+151/-0)
src/tools/test/Makefile (+1/-0)
src/tools/test/Snippets.plt (+110/-0)
Text conflict in configure/CONFIG_BASE_VERSION
Text conflict in documentation/KnownProblems.html
Text conflict in documentation/RELEASE_NOTES.html
To merge this branch: bzr merge lp://qastaging/~epics-core/epics-base/rsrvbindiface
Reviewer Review Type Date Requested Status
mdavidsaver Needs Information
Ralph Lange Pending
Andrew Johnson Pending
EPICS Core Developers Pending
Review via email: mp+281118@code.qastaging.launchpad.net

This proposal has been superseded by a proposal from 2016-01-12.

Description of the change

Updates to RSRV, mainly to allow binding to a specific network interfaces via. EPICS_CAS_INTF_ADDR_LIST. This necessitates quite a lot of work to "un-globalize" RSRV.

Along the way support for name lookup via IPv4 multicasting is added, but not enabled by default. Use by adding an mcast address to EPICS_CA_ADDR_LIST.

One potentially troublesome change is to allow osiSockDiscoverBroadcastAddresses() to find the loopback broadcast address.

To post a comment you must log in.
Revision history for this message
mdavidsaver (mdavidsaver) wrote :

Needs compatibility testing

review: Needs Information
12715. By Bjorklund, Eric A <email address hidden>

vxWorks: missing extern "C" around sysPci* prototypes

12716. By mdavidsaver

epicsMMIODef.h use static inline

'static inline' is necessary for consistent behavior with C and C++.
Plain 'inline' in C can result in multiply defined symbol
errors when linking.

12717. By mdavidsaver

rsrv: when binding to a specific interface also bind to iface bcast

An oddness of BSD sockets (not winsock) is that binding to
INADDR_ANY will receive unicast and broadcast, but binding to
a specific interface address receives only unicast. The trick
is to bind a second socket to the interface broadcast address,
which will then receive only broadcasts.

12718. By mdavidsaver

rsrv: unnecessary use of global

12719. By mdavidsaver

remove global prsrv_cast_client

12720. By mdavidsaver

rename prsrv_cast_client in cast_server()

12721. By mdavidsaver

rsrv: placeholder for cast_server thread shutdown

12722. By mdavidsaver

rsrv: more renaming

12723. By mdavidsaver

libCom/osi: osiSockDiscoverBroadcastAddresses() finds 127.255.255.255

For the default implementation of osiSockDiscoverBroadcastAddresses()
allow the loopback interface to have IFF_BROADCAST set (usually isn't)
and on Linux assume that the loopback broadcast address is usable
even if IFF_BROADCAST isn't set.

12724. By mdavidsaver

rsrv: casr show multiple UDP clients

12725. By mdavidsaver

rsrv: UDP listener on more than one iface

12726. By mdavidsaver

rsrv: unglobalize IOC_sock

12727. By mdavidsaver

rsrv: no lazy init of BUCKET

12728. By mdavidsaver

rsrv: move some from req_server to rsrv_init

12729. By mdavidsaver

rsrv: redo initialization to support bind multiple interfaces.

consolidate most setup tasks in rsrv_init(),
which now spawns threads directly.
For each interface create 3-4 sockets,

* TCP listener
* UDP receiver (unicast)
* UDP receiver (broadcast optional)
* UDP beacon sender

12730. By mdavidsaver

envDefs: add envGetBoolConfigParam

12731. By mdavidsaver

libca: addAddrToChannelAccessAddressList report success

12732. By mdavidsaver

expand beacon address list when binding to wildcard

12733. By mdavidsaver

rsrv: additional fallback for interface list

12734. By mdavidsaver

rsrv: don't leak sockets when building tcp set

12735. By mdavidsaver

rsrv: multicast name lookup

12736. By mdavidsaver

libca: enable mcast loopback

12737. By Andrew Johnson

Fix build for vxWorks 5.5.2

12738. By mdavidsaver

minor

fix typo
expand error message
skip redundant (and misleading) print of beacon address list

12739. By mdavidsaver

rsrv: fixup beacon address list handling

should be based on client interface list,
not server.

12740. By mdavidsaver

rsrv: loopback mcast beacons

12741. By mdavidsaver

don't use EPICS_CA_ADDR_LIST for server interface list

keep existing behavior, and server binds wildcard
when only client address list is specified.

12742. By mdavidsaver

update release notes

12743. By mdavidsaver

pcas: listen for mcast search request

12744. By Andrew Johnson

Fix build for vxWorks 5.5.2 (again)

12745. By mdavidsaver

rsrv: beaconCounter not updated

12746. By mdavidsaver

rsrv: fix wildcard check ordering

filter out mcast addresses before wildcard uniqueness check.

12747. By mdavidsaver

rsrv: oops

improper rebase

12748. By mdavidsaver

rsrv: more beacon address fixups

should really be based on *server* config
as beacons should be sent to clients attempting
to connect to the server.

By default send beacons to bcast addresses
from the interface address list.

12749. By Andrew Johnson

Improve casr() output

12750. By mdavidsaver

rsrv: decouple some client/server config

the automatic beacon address list should follow
the server interface address list, and not be
effected by any client config.

Also, don't populate the interface address list
from EPICS_CAS_BEACON_ADDR_LIST as this will
almost never contain local interface addresses.

12751. By mdavidsaver

pcas: no fallbacks for beacon address list

Don't mix client and server configuration
by defaulting the server beacon list to use
the client address list.

12752. By mdavidsaver

ca: update CAref.html with changes to beacon address list

Note that server beacon address list will no longer
consider client address list as a fallback.

12753. By mdavidsaver

update release notes

12754. By mdavidsaver

rsrv: EPICS_CAS_IGNORE_ADDR_LIST

12755. By mdavidsaver

libCom: fix debug print formats in osiSockDiscoverBroadcastAddresses()

12756. By mdavidsaver

rsrv: "casr 1" shows ignore list

12757. By mdavidsaver

update release notes

12758. By Andrew Johnson

Show UDP name server status in casr 2+ output

12759. By mdavidsaver

pcas: don't send beacons w/ connect()d socket

use sendto() and leave the origin field to 0.0.0.0
so it will be filled in by the receiving repeater

12760. By Ralph Lange

pcas: fix compilation on MSC Windows

12761. By Andrew Johnson

Report UDP client status on Windows

12762. By Ralph Lange

rsrv: populate the server list - also on Windows builds

12763. By mdavidsaver

win32: include ws2tcpip.h from osdSock.h

Needed to get some additional definitions
including IP_ADD_MEMBERSHIP

12764. By mdavidsaver

cygwin inherits winsock broadcast behavior

12765. By mdavidsaver

rsrv: use SOCKERRNO

Must use OSI SOCKERRNO for correct handling
of errors w/ winsock

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
The diff is not available at this time. You can reload the page or download it.

Subscribers

People subscribed via source and target branches