Commit Graph

69 Commits

Author SHA1 Message Date
Michael Davidsaver 0ad81d0f49 add Discovered::peerVersion 2022-05-18 12:27:33 -07:00
Michael Davidsaver cce797263d fix handling of pva_ctrl_msg::SetEndian 2022-05-18 10:32:16 -07:00
Michael Davidsaver 1be0477ee6 evsocket::canIPv6 once 2022-04-05 07:57:16 -07:00
Michael Davidsaver df4289b4e6 IPv6+mcast support 2022-04-05 07:57:16 -07:00
Michael Davidsaver 1040e87f39 add SockAddr::isMCast() and capacity() 2022-04-05 07:57:16 -07:00
Michael Davidsaver 7a65a85c99 client: add discover() and pvxlist 2022-04-05 07:57:16 -07:00
Michael Davidsaver 47ebfd5371 Accept CMD_ORIGIN_TAG
Implement local mcast hack
2022-04-05 07:57:16 -07:00
Michael Davidsaver 290b565203 minor 2022-04-05 07:57:16 -07:00
Michael Davidsaver f67f27e96b Portable capture of destination interface and IP address
Use recvmsg() and control messages IP_PKTINFO (Linux, OSX, Windows)
or IP_ORIGDSTADDR and IP_RECVIF (RTEMS w/ libbsd) to find the
index of the logical interface through which a UDP packet was received,
and the destination address from the IPv4 header.

Also, clear IP_MULTICAST_ALL on Linux to disable non-compliant legacy brokenness
and receive only those multicasts we are interested in.
2022-04-05 07:57:16 -07:00
Michael Davidsaver 98edf61de8 Add client/server fromEnv() without temporary Config on caller stack 2021-08-06 12:34:32 -07:00
Michael Davidsaver d6bf565ed6 rename interfaces() -> broadcasts() 2021-08-04 17:26:10 -07:00
Michael Davidsaver 3145c010d2 Extend report()
ReportInfo to allow pass through from Source.
Also include peer credentials
2021-07-06 18:32:53 -07:00
Michael Davidsaver 99c1534dfa client: add ConnectBuilder::syncCancel() 2021-07-06 18:32:53 -07:00
Michael Davidsaver 9af841cccd server/client search logging 2021-07-06 18:32:53 -07:00
Michael Davidsaver f52609a587 client: ignoreGUIDs() 2021-07-06 18:32:52 -07:00
Michael Davidsaver f7b3821e10 client: consistent Channel disconnect handling
More commonality betwee disconnect and CMD_DESTROY_CHANNEL.

squash! client: consistent Channel disconnect handling

Periodic cache cleaning
2021-07-06 18:32:36 -07:00
Michael Davidsaver 5d3a21f030 client Channel search bypass
Bypass the broadcast search phase and directly connect
to a specific server and issue CMD_CREATE_CHANNEL.

Note, due to pvAccessCPP buggyness, this can only be relied
upon to connect with the unadvertised magic 'server' PV.
2021-07-03 13:20:20 -07:00
Michael Davidsaver 0e5bd37b6e minor 2021-07-02 13:15:50 -07:00
Michael Davidsaver bc1cc57f1e client: cacheClear() partial 2021-06-27 10:17:14 -07:00
Michael Davidsaver 69ed03e508 client: fix bcast addr id 2021-06-27 10:17:14 -07:00
Michael Davidsaver e3465b7ee8 plumb file+line through _to_wire/_from_wire 2021-06-27 10:17:14 -07:00
Michael Davidsaver 8363c7fe9a client add TCP search 2021-06-27 10:17:14 -07:00
Michael Davidsaver 132ad1ae6f client: handle CMD_SEARCH_RESPONSE over TCP 2021-06-27 10:17:14 -07:00
Michael Davidsaver 708fbc8062 client: add *Builder::syncCancel(bool)
Option for asynchronous cancel (eg. implicitly through ~Operation).
2021-06-27 10:17:13 -07:00
Michael Davidsaver c4d2cd4a10 client: reorg context Pvt 2021-06-27 10:17:13 -07:00
Michael Davidsaver 8eac7c9941 client: relax exec() synchronization for connect() 2021-06-27 10:17:13 -07:00
Michael Davidsaver 4683d56421 client/server report tx/rx counts 2021-06-27 10:17:13 -07:00
Michael Davidsaver 60d275412f conn/chan tx/rx stat tracking 2021-06-27 10:17:13 -07:00
Michael Davidsaver 89f9c54d62 client: relax exec() synchronization
dispatch() instead of call().
2021-06-08 09:45:49 -07:00
Michael Davidsaver 564b9ec2cc client: add Context::connect()
A means of manually (pre)populating
the channel cache.
2021-06-08 09:45:49 -07:00
Michael Davidsaver bd7ba0db62 simplify GUID printing 2021-06-08 09:45:48 -07:00
Michael Davidsaver 94f0065a4d fix beaconSenders locking 2021-06-08 09:45:21 -07:00
Michael Davidsaver a4c06fe423 minor 2021-06-02 14:47:39 -05:00
Michael Davidsaver b38b33db03 raise search reply processing limit
Seems pvAccessCPP likes to send lots of individual replies
to our nicely batched search requests.
2021-02-12 11:19:46 -08:00
Michael Davidsaver a064677e36 detect UDP RX buffer overflows
On Linux, use SO_RXQ_OVFL to snoop on the OS dropped packet
counter for our socket buffer.  Does not detect drops on
ingress, or internal to, to OS IP stack.
2021-01-28 07:44:32 -08:00
Michael Davidsaver 84ef355a4a client: try not to fragment search packets 2021-01-28 07:44:32 -08:00
Michael Davidsaver e9ce80880d remote file:line from decode errors 2021-01-12 11:32:10 -08:00
Michael Davidsaver 76764cf978 xcode: capture file:line of fault() 2021-01-12 11:32:10 -08:00
Michael Davidsaver d15430fb17 fix poke race
poke()d from both UDP (tickSearch()) and TCP workers (*Builder::exec())
2020-12-30 10:55:22 -08:00
Michael Davidsaver b8d204e35c proto bug: client search requests incorrectly set Server direction 2020-12-18 15:51:37 -08:00
Michael Davidsaver 0395982691 add evsocket::interfaces() wrapper 2020-12-13 15:49:43 -08:00
Michael Davidsaver e52ae674ca client: bypass search throttling during Channel creation 2020-08-10 12:09:55 -07:00
Michael Davidsaver 67843eb392 more config 2020-08-10 12:09:55 -07:00
Michael Davidsaver 33b6f362db client: Handle orphaned Operations
Allow Operation instances to outlive
the Context through which they were
created.
2020-08-10 12:09:55 -07:00
Michael Davidsaver 3b9dd9c405 client Operation expose PV name
Desirable to include in error messages if nothing else
2020-08-10 12:09:55 -07:00
Michael Davidsaver 609768a33d add client channel cache
Maintain unused channels for 20 seconds before closing.
2020-05-07 18:45:16 -07:00
Michael Davidsaver 47790e5943 ResultWaiter::complete() only once 2020-05-07 18:45:16 -07:00
Klemen Vodopivec 02f24a74e7 Made it build on EPICS 3.14.12.6, all unit tests pass. 2020-04-16 22:01:38 -07:00
Michael Davidsaver cfda7e2260 client: trap error in close() 2020-04-07 12:05:31 -07:00
Michael Davidsaver a6c1565793 Add "live" counter for client Context 2020-04-07 12:05:30 -07:00