Compare commits

...

20 Commits

Author SHA1 Message Date
4ffa5c8c88 fix problem with not working epicsSocketAccept() on moxa42-armv6l
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-06-29 16:03:19 +02:00
5e076e6d30 improve error message 2022-06-29 11:43:56 +02:00
dcb2c5affd fix CA event queuing problem with arrays under high network load 2022-06-28 09:08:57 +02:00
3ac3906fea unify cross windows builds with separate wine dirs per host arch (and thus wine version) 2022-06-21 16:27:33 +02:00
2d597a68b9 enable cross compilation for RHEL7-x86_64 and nilrt7-armv7a on RHEL8 (using mounted SYSROOT at /opt/RHEL7) 2022-06-21 16:27:24 +02:00
1bfe3dec3c use gcc 11 from gcc-toolset for RHEL8 2022-06-10 09:02:20 +02:00
ea0b05c32b use highest supported C++ standard for RHEL8
Some checks failed
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-06-07 11:17:55 +02:00
9c64469f1e re-order cross archs between RHEL7 and RHEL8 hosts 2022-06-07 11:09:03 +02:00
2a4ebdf347 can have only one RTEMS version
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-05-19 09:39:01 +02:00
d5756faef4 restore compatibility with EPICS 3.13 clients 2022-05-19 09:07:31 +02:00
77fb5cf425 use newest C++ standard for yocto 4.0 2022-05-18 16:49:19 +02:00
46141e98d5 add RTEMS 4.9 and 5.1 support 2022-05-05 14:45:08 +02:00
5ac51f86ad disable not needed VxWorks archs 2022-05-05 14:08:36 +02:00
0af4fce080 removed not needed PATH_FILTER 2022-05-05 14:07:14 +02:00
4fb42763a2 moved most cross archs to common linux-x86_64 host arch 2022-05-05 14:06:38 +02:00
211d29c0e1 new yocto 4.0 arch for Zynq 2022-05-05 14:05:19 +02:00
da7bca9c16 some vxWorks 5 hacks 2022-05-05 14:02:31 +02:00
ec346a7b8d update to newer SDK 2022-05-05 14:01:36 +02:00
81d1082bfd no license manager access with this? 2022-05-05 14:01:07 +02:00
3f8cee7d73 fix for debug output formats
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
2021-12-14 16:07:58 +01:00
29 changed files with 185 additions and 62 deletions

View File

@@ -1 +1,3 @@
include $(CONFIG)/os/CONFIG.Common.linux-clang
STD_CXXFLAGS = -std=c++2a

View File

@@ -32,7 +32,7 @@ OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
# This check must appear after the above include
ifneq ($(RTEMS_VERSION),5)
ifneq ($(firstword $(subst ., ,$(RTEMS_VERSION))),5)
$(info *** This target is not compatible with the configured RTEMS version.)
$(info *** Build the RTEMS-pc386 (-qemu) target for RTEMS 4.x)
$(error Can't continue)

View File

@@ -0,0 +1,2 @@
RTEMS_VERSION = 4.9
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc386

View File

@@ -0,0 +1,2 @@
RTEMS_VERSION = 5
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc686

View File

@@ -1,3 +1,3 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32
VXWORKS_VERSION = 6.9
export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
#export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib

View File

@@ -1,6 +1,6 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
VXWORKS_VERSION = 6.9
export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
#export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
# -fno-implicit-fp causes error: "unable to find a register to spill in class 'FLOAT_REGS'"
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align

View File

@@ -17,3 +17,7 @@ ARCH_DEP_CFLAGS += -funwind-tables
# have no full C++11
STD_CXXFLAGS = -std=c++0x
# accept4() exists but does not work
# Give fake __rtems__ macro to posix/osdSock.c because that disables accept4()
osdSock_CFLAGS += -D__rtems__

View File

@@ -6,7 +6,7 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = arm64
SDK = petalinux
SDK_DIR = /opt/petalinux-gfa/2017.2
SDK_DIR = /opt/petalinux-gfa/2018.1
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
SDK_TARGET = aarch64-xilinx-linux
GNU_TARGET = $(SDK_TARGET)

View File

@@ -0,0 +1,20 @@
# XILINX Zynq with Yocto 4.0 toolchain
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = arm64
SDK = pokysdk
SDK_DIR = /opt/yocto40-aarch64
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
SDK_TARGET = cortexa53-poky-linux
GNU_TARGET = aarch64-poky-linux
SDKTARGETSYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
ARCH_DEP_CPPFLAGS = --sysroot=$(SDKTARGETSYSROOT) -mcpu=cortex-a53 -march=armv8-a+crc
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)
STD_CXXFLAGS = -std=c++23

View File

@@ -0,0 +1,21 @@
# "cross compile" for RHEL7-x86_64 on other 64 bit Linux version
# Expects RHEL7 RPMs c++ and readline-devel installed in $(SYSROOT)
# This can be installed on RHEL7 with:
# yum install --installroot=$(SYSROOT) <packages>
# (Assuming $(SYSROOT) is on a shared network volume.)
# Optionally use a newer toolset (installed on $(SYSROOT)).
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
SYSROOT = /opt/RHEL7
TOOLSET_LOCATION = /opt/rh
# Do NOT set GNU_BIN (or else ...)!
TOOLSET_DIR = $(TOOLSET:%=$(TOOLSET_LOCATION)/%/root)
CC = $(SYSROOT)$(TOOLSET_DIR)/bin/gcc
CCC = $(SYSROOT)$(TOOLSET_DIR)/bin/g++
# Set LD_LIBRARY_PATH and BFLAG only with TOOLSET
LD_LIBRARY_PATH = $(if $(TOOLSET),$(SYSROOT)$(TOOLSET_DIR)/lib64)
BFLAG = $(if $(TOOLSET),-B$(SYSROOT)$(TOOLSET_DIR)/bin)
TARGET_CPPFLAGS += --sysroot=$(SYSROOT) $(BFLAG)
TARGET_LDFLAGS += --sysroot=$(SYSROOT) $(BFLAG)

View File

@@ -0,0 +1,4 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH := /opt/wine-msvc-2017/bin/x86:$(PATH)
export WINEPREFIX = $(HOME)/.wine-$(EPICS_HOST_ARCH)

View File

@@ -0,0 +1,4 @@
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
PATH := /opt/wine-msvc-2017/bin/x64:$(PATH)
export WINEPREFIX = $(HOME)/.wine-$(EPICS_HOST_ARCH)

View File

@@ -1,5 +1 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH_FILTER = $(subst /,/,$(1))
PATH := /opt/wine-msvc-2017/bin/x86:$(PATH)
include $(CONFIG)/os/CONFIG.Linux.win32-x86

View File

@@ -1,5 +1 @@
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
PATH_FILTER = $(subst /,/,$(1))
PATH := /opt/wine-msvc-2017/bin/x64:$(PATH)
include $(CONFIG)/os/CONFIG.Linux.windows-x64

View File

@@ -0,0 +1,4 @@
include $(CONFIG)/os/CONFIG.Cross_64.RHEL7-x86_64
#TOOLSET = devtoolset-11
#STD_CXXFLAGS = -std=c++17

View File

@@ -1,2 +1,8 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
# Use gcc 11 from gcc-toolset-11
GNU_BIN = /opt/rh/gcc-toolset-11/root/usr/bin
# Fix bug in gcc-toolset-11 calling the old assembler
TARGET_CFLAGS += -B$(GNU_BIN)
STD_CXXFLAGS = -std=c++17

View File

@@ -0,0 +1 @@
GNU_BIN=/opt/RHEL7/bin

View File

@@ -1,5 +1 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH_FILTER = $(subst /,/,$(1))
PATH := /opt/wine-msvc-2017/bin/x86:$(PATH)
include $(CONFIG)/os/CONFIG.Linux.win32-x86

View File

@@ -1,5 +1 @@
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
PATH_FILTER = $(subst /,/,$(1))
PATH := /opt/wine-msvc-2017/bin/x64:$(PATH)
include $(CONFIG)/os/CONFIG.Linux.windows-x64

View File

@@ -24,6 +24,9 @@
#RTEMS_VERSION = 5
#RTEMS_BASE = /usr/local/vw/rtems/rtems-5.1
# PSI:
RTEMS_BASE = /opt/rtems/$(RTEMS_VERSION)
# Cross-compile toolchain in $(RTEMS_TOOLS)/bin
#
RTEMS_TOOLS = $(RTEMS_BASE)

View File

@@ -71,6 +71,7 @@ GNU_DIR = $(GNU_DIR_$(VXWORKS_MAJOR_VERSION))
OP_SYS_CFLAGS += -fno-strict-aliasing
OP_SYS_INCLUDE_CPPFLAGS_5 += -include $(VX_DIR)/target/h/vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS_5 += -I$(EPICS_BASE)/include/os/vxWorks/vxWorks5
OP_SYS_INCLUDE_CPPFLAGS_6 += -include $(VX_DIR)/target/h/vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS_7 += -include vxWorks.h
OP_SYS_INCLUDE_CPPFLAGS = $(OP_SYS_INCLUDE_CPPFLAGS_$(VXWORKS_MAJOR_VERSION))
@@ -79,7 +80,7 @@ OP_SYS_LDFLAGS += $(OP_SYS_LDFLAGS_$@)
OP_SYS_LDFLAGS_softIoc = -whole-archive
OP_SYS_LDFLAGS_softIocPVA = -whole-archive
# code flags
# code flags (delete -fno-implicit-templates)
CODE_CXXFLAGS =
# WIND_BASE is where you installed the Wind River software.

View File

@@ -12,17 +12,7 @@ CROSS_COMPILER_RUNTEST_ARCHS += SL6-x86_64
CROSS_COMPILER_TARGET_ARCHS += SL6-x86
CROSS_COMPILER_RUNTEST_ARCHS += SL6-x86
# Cross compilers that don't work on SL6 hosts
# Debian 10
CROSS_COMPILER_TARGET_ARCHS += deb10-x86_64
# Newer DeltaTau PowerPMAC
CROSS_COMPILER_TARGET_ARCHS += gcc8-ppc4xxFP
# NI Linux Real-Time 7.x
# requires RPM gcc-c++-arm-linux-gnu
# Not available on RHEL8
CROSS_COMPILER_TARGET_ARCHS += nilrt7-armv7a
# Windows cross builds using Wine
CROSS_COMPILER_TARGET_ARCHS += win32-x86 windows-x64

View File

@@ -4,18 +4,8 @@ include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64-clang
# Build for old RHEL7 64 bit
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
# Build for old SL6 64 bit
#CROSS_COMPILER_TARGET_ARCHS += SL6-x86_64
# Build for old SL6 32 bit
#CROSS_COMPILER_TARGET_ARCHS += SL6-x86
CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
# NI Linux Real-Time 7.x
# requires RPM gcc-c++-arm-linux-gnu
# not available yet for RHEL8
#CROSS_COMPILER_TARGET_ARCHS += nilrt7-armv7a
# Windows cross builds using Wine
CROSS_COMPILER_TARGET_ARCHS += win32-x86 windows-x64
CROSS_COMPILER_TARGET_ARCHS += nilrt7-armv7a

View File

@@ -18,11 +18,11 @@ LD_LIBRARY_PATH=
CROSS_COMPILER_TARGET_ARCHS += T2-ppc604
# vxWorks 6.7 for MVxxxx boards
CROSS_COMPILER_TARGET_ARCHS += V67-ppc604
#CROSS_COMPILER_TARGET_ARCHS += V67-ppc604
# vxWorks 6.9 for MVxxxx boards
CROSS_COMPILER_TARGET_ARCHS += V69-ppc604
CROSS_COMPILER_TARGET_ARCHS += V69-ppc32
#CROSS_COMPILER_TARGET_ARCHS += V69-ppc32
# NI compact RIO
CROSS_COMPILER_TARGET_ARCHS += V63-ppc603
@@ -45,11 +45,16 @@ CROSS_COMPILER_TARGET_ARCHS += eldk53-ppc4xxFP
# Test other vxWorks versions
#CROSS_COMPILER_TARGET_ARCHS += V66-ppc603
CROSS_COMPILER_TARGET_ARCHS += V66-ppc604
#CROSS_COMPILER_TARGET_ARCHS += V66-ppc604
#CROSS_COMPILER_TARGET_ARCHS += V63-ppc604
CROSS_COMPILER_TARGET_ARCHS += V64-ppc604
#CROSS_COMPILER_TARGET_ARCHS += V64-ppc604
# (No PVA because of old compiler)
CROSS_COMPILER_TARGET_ARCHS += V62-ppc604
#CROSS_COMPILER_TARGET_ARCHS += V62-ppc604
# Raspberry Pi
CROSS_COMPILER_TARGET_ARCHS += raspbian-arm
# RTEMS (Can only have 1 RTEMS major version in 1 EPICS installation
# because they overwrite their header files.)
#CROSS_COMPILER_TARGET_ARCHS += RTEMS49-pc386
CROSS_COMPILER_TARGET_ARCHS += RTEMS51-pc686

View File

@@ -11,8 +11,18 @@ include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
GNU_HOST_ARCH_64=x86_64
# Windows cross builds using Wine
CROSS_COMPILER_TARGET_ARCHS += win32-x86 windows-x64
# IOxOS IFC1211
CROSS_COMPILER_TARGET_ARCHS += fslqoriq20-e6500_64
# Zynq
CROSS_COMPILER_TARGET_ARCHS += yocto21-aarch64
CROSS_COMPILER_TARGET_ARCHS += yocto40-aarch64
# Debian 10
CROSS_COMPILER_TARGET_ARCHS += deb10-x86_64
# Newer DeltaTau PowerPMAC
CROSS_COMPILER_TARGET_ARCHS += gcc8-ppc4xxFP

View File

@@ -789,6 +789,18 @@ static void db_queue_event_log (evSubscrip *pevent, db_field_log *pLog)
LOCKEVQUE (ev_que);
/* if we have an event on the queue and both the last
* event on the queue and the current event are empty,
* simply ignore duplicate events.
*/
if (pevent->npend > 0u
&& !dbfl_has_copy(*pevent->pLastLog)
&& !dbfl_has_copy(pLog)) {
db_delete_field_log(pLog);
UNLOCKEVQUE (ev_que);
return;
}
/*
* add to task local event que
*/

View File

@@ -2197,12 +2197,12 @@ long dbInitRecordLinks(dbRecordType *rtyp, struct dbCommon *prec)
*/
} else if(dbCanSetLink(plink, &link_info, devsup)!=0) {
errlogPrintf("Error: %s.%s: can't initialize link type %d with \"%s\" (type %d)\n",
prec->name, pflddes->name, plink->type, plink->text, link_info.ltype);
errlogPrintf("Error: %s.%s: can't initialize link type %s with \"%s\" (type %s)\n",
prec->name, pflddes->name, pamaplinkType[plink->type], plink->text, pamaplinkType[link_info.ltype]);
} else if(dbSetLink(plink, &link_info, devsup)) {
errlogPrintf("Error: %s.%s: failed to initialize link type %d with \"%s\" (type %d)\n",
prec->name, pflddes->name, plink->type, plink->text, link_info.ltype);
errlogPrintf("Error: %s.%s: failed to initialize link type %s with \"%s\" (type %s)\n",
prec->name, pflddes->name, pamaplinkType[plink->type], plink->text, pamaplinkType[link_info.ltype]);
}
free(plink->text);
plink->text = NULL;

View File

@@ -280,6 +280,37 @@ static void log_header (
struct channel_in_use *pciu;
char hostName[256];
const char * cmd_str [] = {
"CA_PROTO_VERSION",
"CA_PROTO_EVENT_ADD",
"CA_PROTO_EVENT_CANCEL",
"CA_PROTO_READ",
"CA_PROTO_WRITE",
"CA_PROTO_SNAPSHOT",
"CA_PROTO_SEARCH",
"CA_PROTO_BUILD",
"CA_PROTO_EVENTS_OFF",
"CA_PROTO_EVENTS_ON",
"CA_PROTO_READ_SYNC",
"CA_PROTO_ERROR",
"CA_PROTO_CLEAR_CHANNEL",
"CA_PROTO_RSRV_IS_UP",
"CA_PROTO_NOT_FOUND",
"CA_PROTO_READ_NOTIFY",
"CA_PROTO_READ_BUILD",
"REPEATER_CONFIRM",
"CA_PROTO_CREATE_CHAN",
"CA_PROTO_WRITE_NOTIFY",
"CA_PROTO_CLIENT_NAME",
"CA_PROTO_HOST_NAME",
"CA_PROTO_ACCESS_RIGHTS",
"CA_PROTO_ECHO",
"REPEATER_REGISTER",
"CA_PROTO_SIGNAL",
"CA_PROTO_CREATE_CH_FAIL",
"CA_PROTO_SERVER_DISCONN"
};
ipAddrToDottedIP (&client->addr, hostName, sizeof(hostName));
pciu = MPTOPCIU(mp);
@@ -289,8 +320,10 @@ static void log_header (
hostName, pContext);
}
epicsPrintf ( "CAS: Request from %s => cmmd=%d cid=0x%x type=%d count=%d postsize=%u\n",
hostName, mp->m_cmmd, mp->m_cid, mp->m_dataType, mp->m_count, mp->m_postsize);
epicsPrintf ( "CAS: %s Request from %s => cmmd=%d (%s) cid=0x%x type=%d count=%d postsize=%u version=%u\n",
client->proto==IPPROTO_TCP ? "TCP" : "UDP",
hostName, mp->m_cmmd, mp->m_cmmd <= CA_PROTO_LAST_CMMD ? cmd_str[mp->m_cmmd] : "invalid",
mp->m_cid, mp->m_dataType, mp->m_count, mp->m_postsize, client->minor_version_number);
epicsPrintf ( "CAS: Request from %s => available=0x%x \tN=%u paddr=%p\n",
hostName, mp->m_available, mnum, (pciu ? (void *)&pciu->dbch : NULL));
@@ -319,6 +352,18 @@ unsigned lineno
SEND_UNLOCK ( client );
}
/*
* bad_udp_cmd_beacon()
*/
static int bad_udp_cmd_beacon ( caHdrLargeArray *mp,
void *pPayload, struct client *pClient )
{
if (CASDEBUG > 0)
log_header ("got a beacon on the wrong UDP port",
pClient, mp, pPayload, 0);
return RSRV_ERROR;
}
/*
* bad_udp_cmd_action()
*/
@@ -363,6 +408,8 @@ static int tcp_version_action ( caHdrLargeArray *mp, void *pPayload,
client->minor_version_number = mp->m_count;
DLOG(3, ("TCP set version %u\n", client->minor_version_number));
if (!CA_VSUPPORTED(mp->m_count)) {
DLOG ( 2, ( "CAS: Ignore version from unsupported client %u\n", mp->m_count ) );
return RSRV_ERROR;
@@ -1213,6 +1260,7 @@ static int claim_ciu_action ( caHdrLargeArray *mp,
struct dbChannel *dbch;
char *pName = (char *) pPayload;
DLOG (3, ("claim_ciu_action: version = %u\n", mp->m_available));
/*
* The available field is used (abused)
* here to communicate the miner version number
@@ -2121,6 +2169,8 @@ static int udp_version_action ( caHdrLargeArray *mp, void *pPayload, struct clie
{
client->minor_version_number = mp->m_count;
DLOG (3, ("UDP set version %u\n", client->minor_version_number));
if (!CA_VSUPPORTED(mp->m_count)) {
DLOG ( 2, ( "CAS: Ignore version from unsupported client %u\n", mp->m_count ) );
return RSRV_ERROR;
@@ -2174,6 +2224,9 @@ static int search_reply_udp ( caHdrLargeArray *mp, void *pPayload, struct client
size_t spaceNeeded;
size_t reasonableMonitorSpace = 10;
DLOG (3, epicsPrintf("UDP search for \"%.*s\" by %s@%s client version %u, m_count = %u\n",
mp->m_postsize, pName, client->pUserName, client->pHostName, client->minor_version_number, mp->m_count));
if (!CA_VSUPPORTED(mp->m_count)) {
DLOG ( 2, ( "CAS: Ignore search from unsupported client %u\n", mp->m_count ) );
return RSRV_ERROR;
@@ -2261,6 +2314,9 @@ static int search_reply_tcp (
size_t spaceNeeded;
size_t reasonableMonitorSpace = 10;
DLOG (3, ("TCP search for \"%.*s\" by %s@%s client version %u, m_count = %u\n",
mp->m_postsize, pName, client->pUserName, client->pHostName, client->minor_version_number, mp->m_count));
if (!CA_VSUPPORTED(mp->m_count)) {
DLOG ( 2, ( "CAS: Ignore search from unsupported client %u\n", mp->m_count ) );
return RSRV_ERROR;
@@ -2368,7 +2424,7 @@ static const pProtoStubUDP udpJumpTable[] =
bad_udp_cmd_action,
bad_udp_cmd_action,
bad_udp_cmd_action,
bad_udp_cmd_action,
bad_udp_cmd_beacon,
bad_udp_cmd_action,
bad_udp_cmd_action,
bad_udp_cmd_action,
@@ -2449,6 +2505,7 @@ int camessage ( struct client *client )
pBody = ( void * ) ( mp + 1 );
}
#if 0
/* ignore deprecated clients, but let newer clients identify themselves. */
if (msg.m_cmmd!=CA_PROTO_VERSION && !CA_VSUPPORTED(client->minor_version_number)) {
if (client->proto==IPPROTO_TCP) {
@@ -2470,6 +2527,7 @@ int camessage ( struct client *client )
}
break;
}
#endif
/*
* disconnect clients that dont send 8 byte