diff --git a/etc/raw_socket/.gitignore b/etc/raw_socket/.gitignore deleted file mode 100644 index cdf73671f14517e6101d00d84aa2b8e43729ee4c..0000000000000000000000000000000000000000 --- a/etc/raw_socket/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -raw_socket - diff --git a/etc/raw_socket/Makefile b/etc/raw_socket/Makefile deleted file mode 100644 index af261855d35ddad9b644cd0cf62f9aa963eb15ff..0000000000000000000000000000000000000000 --- a/etc/raw_socket/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -# raw_socket - -PREFIX = /usr/local -BDIR = $(DESTDIR)/$(PREFIX) - -.PHONY: all clean install - -all: raw_socket - -raw_socket: raw_socket.c - $(CC) -o $@ raw_socket.c - -install: raw_socket - install -D raw_socket $(BDIR)/bin/raw_socket - setcap cap_net_raw,cap_ipc_lock,cap_sys_nice+ep $(BDIR)/bin/raw_socket - -clean: - rm -f raw_socket diff --git a/etc/raw_socket/raw_socket.c b/etc/raw_socket/raw_socket.c deleted file mode 100644 index 32322d9bea97949fc4b18b26e07790f59db58e99..0000000000000000000000000000000000000000 --- a/etc/raw_socket/raw_socket.c +++ /dev/null @@ -1,115 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <sysexits.h> -#include <unistd.h> - -#include <arpa/inet.h> -#include <net/ethernet.h> -#include <net/if.h> -#include <linux/if_packet.h> -#include <sys/ioctl.h> -#include <sys/socket.h> -#include <sys/un.h> - -#define ETH_P_ECAT 0x88A4 - -extern char **environ; - -int main(int argc, char *argv[]) -{ - fprintf(stderr, "raw_socket was build: %s\n", __TIMESTAMP__); - int i, ret, ifindex, psock; - struct ifreq ifr; - struct sockaddr_ll sll; - struct timeval timeout; - int argssize = argc + 1; - char *args[argssize]; - char sock[5]; - - if (argc < 3) { - fprintf(stderr, "usage: %s [ifname] [binary] <args>\n", argv[0]); - return EX_USAGE; - } - - /* we use RAW packet socket, with packet type ETH_P_ECAT */ - psock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ECAT)); - if (psock < 0) { - perror("socket"); - fprintf(stderr, "raw_socket error: socket SOCK_RAW\n"); - return EX_OSERR; - } - - timeout.tv_sec = 0; - timeout.tv_usec = 1; - fprintf(stderr, "raw_socket: setsockopt SO_RCVTIMEO\n"); - ret = setsockopt(psock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); - if (ret != 0) { - perror("setsockopt"); - fprintf(stderr, "raw_socket error: setsockopt SO_RCVTIMEO\n"); - return EX_OSERR; - } - - fprintf(stderr, "raw_socket: setsockopt SO_SNDTIMEO\n"); - ret = setsockopt(psock, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); - if (ret != 0) { - perror("setsockopt"); - fprintf(stderr, "raw_socket error: setsockopt SO_SNDTIMEO\n"); - return EX_OSERR; - } - - i = 1; - fprintf(stderr, "raw_socket: setsockopt SO_DONTROUTE\n"); - ret = setsockopt(psock, SOL_SOCKET, SO_DONTROUTE, &i, sizeof(i)); - if (ret != 0) { - perror("setsockopt"); - fprintf(stderr, "raw_socket error: setsockopt SO_DONTROUTE\n"); - return EX_OSERR; - } - /* connect socket to NIC by name */ - strcpy(ifr.ifr_name, argv[1]); - ret = ioctl(psock, SIOCGIFINDEX, &ifr); - ifindex = ifr.ifr_ifindex; - strcpy(ifr.ifr_name, argv[1]); - ifr.ifr_flags = 0; - /* reset flags of NIC interface */ - ret = ioctl(psock, SIOCGIFFLAGS, &ifr); - /* set flags of NIC interface, here promiscuous and broadcast */ - ifr.ifr_flags = ifr.ifr_flags | IFF_PROMISC | IFF_BROADCAST; - ret = ioctl(psock, SIOCGIFFLAGS, &ifr); - /* bind socket to protocol, in this case RAW EtherCAT */ - sll.sll_family = AF_PACKET; - sll.sll_ifindex = ifindex; - sll.sll_protocol = htons(ETH_P_ECAT); - ret = bind(psock, (struct sockaddr *)&sll, sizeof(sll)); - /* setup ethernet headers in tx buffers so we don't have to repeat it */ - - fprintf(stderr, "raw_socket: setenv ARMARX_LD_LIBRARY_PATH\n"); - ret = setenv("LD_LIBRARY_PATH", getenv("ARMARX_LD_LIBRARY_PATH"), 1); - if (ret != 0) { - perror("setenv"); - fprintf(stderr, "raw_socket error: setenv ARMARX_LD_LIBRARY_PATH\n"); - return EX_OSERR; - } - - i=0; - fprintf(stderr, "ARGUMENT %d/%d: %s\n", i+1, argssize, strrchr(argv[2], '/')); - args[i++] = strrchr(argv[2], '/'); - - snprintf(sock, 5, "%d", psock); - - fprintf(stderr, "ARGUMENT %d/%d: %s\n", i+1, argssize, sock); - args[i++] = sock; - for (i = 2; argv[i] != NULL; i++) { - fprintf(stderr, "ARGUMENT %d/%d: %s\n", i+1, argssize, argv[i]); - args[i] = argv[i]; - } - fprintf(stderr, "ARGUMENT %d/%d: NULL\n", i+1, argssize); - args[i] = NULL; - fprintf(stderr, "executing %s\n", argv[2]); - execve(argv[2], args, environ); - fprintf(stderr, "executing %s...done!\n", argv[2]); - perror("execv"); - - return EX_OSERR; -} diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp index 726895f8350d49bc3166558f8126005997f2adb9..404dc1f33dc6f300d52970386be46665ca6971e5 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp @@ -38,7 +38,7 @@ namespace armarx::armem::robot_state bool VirtualRobotReader::synchronizeRobot(VirtualRobot::Robot& robot, const armem::Time& timestamp) { - const auto packages = armarx::CMakePackageFinder::FindAllArmarXSourcePackages(); + const static auto packages = armarx::CMakePackageFinder::FindAllArmarXSourcePackages(); const auto package = armarx::ArmarXDataPath::getProject(packages, robot.getFilename()); const robot::RobotDescription robotDescription{ diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotWriter.cpp index 15f2e8776698f9078b6b0535c1b6282476802589..47519748cad8fe1c5a0ca37db35f215e0359197b 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotWriter.cpp @@ -47,7 +47,7 @@ namespace armarx::armem::robot_state PackagePath resolvePackagePath(const std::string& filename) { - const auto packages = armarx::CMakePackageFinder::FindAllArmarXSourcePackages(); + const static auto packages = armarx::CMakePackageFinder::FindAllArmarXSourcePackages(); PackagePath packagePath(armarx::ArmarXDataPath::getProject(packages, filename), filename); return packagePath; }