My current project would like to use OpENer as a library for our Linux based software to communicate with a PLC that runs Ethernet/IP. We don't use OpENer binaries as a standalone executable, but rather as a library that other software packages can utilize for communicate with a EIP scanner.
I have created two packages, one contains the shared object and the other devel package that contains required header files. Our application initialization software is written similarly to source/src/ports/POSIX/main.c. However I got NetworkHandlerInitialize() error which fails at bind(g_network_status.udp_unicast_listener, (struct sockaddr *) &my_address, sizeof(struct sockaddr) ) ) in generic_networkhandler.c.
I wonder if my OpENer packages is incomplete and causes the error. Can you advise if any file/library is missing?
/usr/lib64/libopener.so
/usr/share/doc/OpENer
/usr/share/doc/OpENer/AUTHORS
/usr/share/doc/OpENer/ChangeLog.txt
/usr/share/doc/OpENer/README.md
/usr/share/doc/OpENer/TODO
/usr/share/licenses/OpENer
/usr/share/licenses/OpENer/license.txt
The libopener.so library is created with following source files:
set(CIP_SRC
"cip/appcontype.c"
"cip/cipassembly.c"
"cip/cipclass3connection.c"
"cip/cipcommon.c"
"cip/cipconnectionmanager.c"
"cip/cipconnectionobject.c"
"cip/cipdlr.c"
"cip/cipelectronickey.c"
"cip/cipepath.c"
"cip/cipethernetlink.c"
"cip/cipidentity.c"
"cip/cipioconnection.c"
"cip/cipmessagerouter.c"
"cip/cipqos.c"
"cip/cipstring.c"
"cip/ciptcpipinterface.c")
set(ENET_ENCAP_SRC
"enet_encap/cpf.c"
"enet_encap/encap.c"
"enet_encap/endianconv.c")
set(PLATFORM_GENERIC_SRC
"ports/generic_networkhandler.c"
"ports/socket_timer.c"
"ports/udp_protocol.c")
set(PLATFORM_SPEC_SRC
"ports/POSIX/networkhandler.c"
"ports/POSIX/opener_error.c"
"ports/POSIX/networkconfig.c")
set(UTILS_SRC
"utils/doublylinkedlist.c"
"utils/enipmessage.c"
"utils/random.c"
"utils/xorshiftrandom.c")
set(NVDATA_SRC
"ports/nvdata/nvdata.c"
"ports/nvdata/nvqos.c"
"ports/nvdata/nvtcpip.c"
"ports/nvdata/conffile.c")
(2) OpENer devel package contains:
/usr/include/appcontype.h
/usr/include/cipassembly.h
/usr/include/cipclass3connection.h
/usr/include/cipcommon.h
/usr/include/cipconnectionmanager.h
/usr/include/cipconnectionobject.h
/usr/include/cipdlr.h
/usr/include/cipelectronickey.h
/usr/include/cipepath.h
/usr/include/ciperror.h
/usr/include/cipethernetlink.h
/usr/include/cipidentity.h
/usr/include/cipioconnection.h
/usr/include/cipmessagerouter.h
/usr/include/cipqos.h
/usr/include/cipstring.h
/usr/include/ciptcpipinterface.h
/usr/include/ciptypes.h
/usr/include/cpf.h
/usr/include/devicedata.h
/usr/include/doublylinkedlist.h
/usr/include/encap.h
/usr/include/endianconv.h
/usr/include/enipmessage.h
/usr/include/generic_networkhandler.h
/usr/include/networkconfig.h
/usr/include/networkhandler.h
/usr/include/nvdata.h
/usr/include/opener_api.h
/usr/include/opener_error.h
/usr/include/opener_user_conf.h
/usr/include/platform_network_includes.h
/usr/include/socket_timer.h
/usr/include/trace.h
/usr/include/typedefs.h
/usr/include/udp_protocol.h
I have tried debugging this issue for a while, but still can not get it resolved.