pud: remove rx path
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 29 Jul 2016 08:37:28 +0000 (10:37 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 29 Jul 2016 11:40:01 +0000 (13:40 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/README
lib/pud/src/configuration.c
lib/pud/src/configuration.h
lib/pud/src/networkInterfaces.c
lib/pud/src/networkInterfaces.h
lib/pud/src/pud.c
lib/pud/src/pudOlsrdPlugin.h
lib/pud/src/receiver.c
lib/pud/src/receiver.h

index 96ccde3..d21f5aa 100644 (file)
@@ -75,42 +75,9 @@ LoadPlugin "<olsrd plugin library path>/olsrd_pud.so.2.2.0"
 
 
     #
-    # RX Parameters
+    # Position Input File Parameters
     #
 
-    # rxNonOlsrIf is a network interface on the host on which the plugin will
-    #             listen for GPS multicasts. Multiple such interfaces can be
-    #             specified by specifying the parameter multiple times.
-    #
-    # Default: none
-    #
-    # PlParam     "rxNonOlsrIf"                  ""
-
-    # rxAllowedSourceIpAddress is an IP address from which the plugin is
-    #                          allowed to process/parse GPS sentences. When
-    #                          this parameter is not configured then GPS
-    #                          sentences from ALL IP addresses are processed.
-    #                          Multiple IP addresses can be specified by
-    #                          specifying the parameter multiple times.
-    #
-    # Default: none
-    #
-    # PlParam     "rxAllowedSourceIpAddress"     ""
-
-    # rxMcAddr is the multicast address on which the plugin will listen for GPS
-    #          multicasts.
-    #
-    # Default: 224.0.0.224 (IPv4) or FF02:0:0:0:0:0:0:1 (IPv6)
-    #
-    # PlParam     "rxMcAddr"                     "224.0.0.224"
-
-    # rxMcPort is the UDP port on which the plugin will listen for GPS
-    #          multicasts.
-    #
-    # Default: 2240
-    #
-    # PlParam     "rxMcPort"                     "2240"
-
     # positionFile is the file that contains the position information that the
     #              plugin should use. When this parameter is set then the
     #              file is read during olsrd startup. An example file is
@@ -173,6 +140,11 @@ LoadPlugin "<olsrd plugin library path>/olsrd_pud.so.2.2.0"
     #
     # PlParam     "txNmeaMessagePrefix"          "NBSX"
 
+
+    #
+    # Position Output File Parameters
+    #
+
     # positionOutputFile is the file into which the position is written when it
     #                    changes. The file will contain all position parameters
     #                    in a bash compatible format. The file will be removed
index 52ddce2..1531392 100644 (file)
@@ -499,236 +499,6 @@ static bool setupNodeIdBinaryAndValidate(NodeIdType nodeIdTypeNumber) {
        return false;
 }
 
-/*
- * rxNonOlsrIf
- */
-
-/** The maximum number of RX non-OLSR interfaces */
-#define PUD_RX_NON_OLSR_IF_MAX 32
-
-/** Array with RX non-OLSR interface names */
-static unsigned char rxNonOlsrInterfaceNames[PUD_RX_NON_OLSR_IF_MAX][IFNAMSIZ + 1];
-
-/** The number of RX non-OLSR interface names in the array */
-static unsigned int rxNonOlsrInterfaceCount = 0;
-
-/**
- Determine whether a give interface name is configured as a receive non-OLSR
- interface.
-
- @param ifName
- The interface name to check
-
- @return
- - true when the given interface name is configured as a receive non-OLSR
- interface
- - false otherwise
- */
-bool isRxNonOlsrInterface(const char *ifName) {
-       unsigned int i;
-
-       assert (ifName != NULL);
-
-       for (i = 0; i < rxNonOlsrInterfaceCount; i++) {
-               if (strncmp((char *) &rxNonOlsrInterfaceNames[i][0], ifName, IFNAMSIZ
-                               + 1) == 0) {
-                       return true;
-               }
-       }
-
-       return false;
-}
-
-int addRxNonOlsrInterface(const char *value, void *data __attribute__ ((unused)),
-               set_plugin_parameter_addon addon __attribute__ ((unused))) {
-       size_t valueLength;
-
-       if (rxNonOlsrInterfaceCount >= PUD_RX_NON_OLSR_IF_MAX) {
-               pudError(false, "Can't configure more than %u receive interfaces",
-                               PUD_RX_NON_OLSR_IF_MAX);
-               return true;
-       }
-
-       assert (value != NULL);
-
-       valueLength = strlen(value);
-       if (valueLength > IFNAMSIZ) {
-               pudError(false, "Value of parameter %s (%s) is too long,"
-                       " maximum length is %u, current length is %lu",
-                               PUD_RX_NON_OLSR_IF_NAME, value, IFNAMSIZ, (long unsigned int)valueLength);
-               return true;
-       }
-
-       if (!isRxNonOlsrInterface(value)) {
-               strcpy((char *) &rxNonOlsrInterfaceNames[rxNonOlsrInterfaceCount][0],
-                               value);
-               rxNonOlsrInterfaceCount++;
-       }
-
-       return false;
-}
-
-/**
- * @return the number of configured non-olsr receive interfaces
- */
-unsigned int getRxNonOlsrInterfaceCount(void) {
-       return rxNonOlsrInterfaceCount;
-}
-
-/**
- * @param idx the index of the configured non-olsr receive interface
- * @return the index-th interface name
- */
-unsigned char * getRxNonOlsrInterfaceName(unsigned int idx) {
-       return &rxNonOlsrInterfaceNames[idx][0];
-}
-
-/*
- * rxAllowedSourceIpAddress
- */
-
-/** The maximum number of RX allowed source IP addresses */
-#define PUD_RX_ALLOWED_SOURCE_IP_MAX 32
-
-/** Array with RX allowed source IP addresses */
-static union olsr_sockaddr rxAllowedSourceIpAddresses[PUD_RX_ALLOWED_SOURCE_IP_MAX];
-
-/** The number of RX allowed source IP addresses in the array */
-static unsigned int rxAllowedSourceIpAddressesCount = 0;
-
-/**
- Determine whether a give IP address is configured as an allowed source IP
- address.
-
- @param sender
- The IP address to check
-
- @return
- - true when the given IP address is configured as an allowed source IP
- address
- - false otherwise
- */
-bool isRxAllowedSourceIpAddress(union olsr_sockaddr * sender) {
-       unsigned int i;
-
-       if (rxAllowedSourceIpAddressesCount == 0) {
-               return true;
-       }
-
-       if (sender == NULL) {
-               return false;
-       }
-
-       for (i = 0; i < rxAllowedSourceIpAddressesCount; i++) {
-               if (sender->in.sa_family != rxAllowedSourceIpAddresses[i].in.sa_family) {
-                       continue;
-               }
-
-               if (sender->in.sa_family == AF_INET) {
-                       if (memcmp(&rxAllowedSourceIpAddresses[i].in4.sin_addr, &sender->in4.sin_addr, sizeof(struct in_addr))
-                                       == 0) {
-                               return true;
-                       }
-               } else {
-                       if (memcmp(&rxAllowedSourceIpAddresses[i].in6.sin6_addr, &sender->in6.sin6_addr, sizeof(struct in6_addr))
-                                       == 0) {
-                               return true;
-                       }
-               }
-       }
-
-       return false;
-}
-
-int addRxAllowedSourceIpAddress(const char *value, void *data __attribute__ ((unused)),
-               set_plugin_parameter_addon addon __attribute__ ((unused))) {
-       static const char * valueName = PUD_RX_ALLOWED_SOURCE_IP_NAME;
-       union olsr_sockaddr addr;
-       bool addrSet = false;
-
-       if (rxAllowedSourceIpAddressesCount >= PUD_RX_ALLOWED_SOURCE_IP_MAX) {
-               pudError(false, "Can't configure more than %u allowed source IP"
-                       " addresses", PUD_RX_ALLOWED_SOURCE_IP_MAX);
-               return true;
-       }
-
-       if (!readIPAddress(valueName, value, 0, &addr, &addrSet)) {
-               return true;
-       }
-
-       if (!isRxAllowedSourceIpAddress(&addr)) {
-               rxAllowedSourceIpAddresses[rxAllowedSourceIpAddressesCount] = addr;
-               rxAllowedSourceIpAddressesCount++;
-       }
-
-       return false;
-}
-
-/*
- * rxMcAddr + rxMcPort
- */
-
-/** The rx multicast address */
-static union olsr_sockaddr rxMcAddr;
-
-/** True when the rx multicast address is set */
-static bool rxMcAddrSet = false;
-
-/**
- @return
- The receive multicast address (in network byte order). Sets both the address
- and the port to their default values when the address was not yet set.
- */
-union olsr_sockaddr * getRxMcAddr(void) {
-       if (!rxMcAddrSet) {
-               setRxMcAddr((olsr_cnf->ip_version == AF_INET) ? PUD_RX_MC_ADDR_4_DEFAULT : PUD_RX_MC_ADDR_6_DEFAULT,
-                               NULL, ((set_plugin_parameter_addon) {.pc = NULL}));
-       }
-       return &rxMcAddr;
-}
-
-int setRxMcAddr(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) {
-       static const char * valueName = PUD_RX_MC_ADDR_NAME;
-
-       if (!readIPAddress(valueName, value, PUD_RX_MC_PORT_DEFAULT, &rxMcAddr, &rxMcAddrSet)) {
-                       return true;
-       }
-
-       if (!isMulticast(&rxMcAddr)) {
-               pudError(false, "Value of parameter %s (%s) is not a multicast address",
-                               valueName, value);
-               return true;
-       }
-
-       return false;
-}
-
-/**
- @return
- The receive multicast port (in network byte order)
- */
-unsigned short getRxMcPort(void) {
-       return getOlsrSockaddrPort(getRxMcAddr(), PUD_RX_MC_PORT_DEFAULT);
-}
-
-int setRxMcPort(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) {
-       static const char * valueName = PUD_RX_MC_PORT_NAME;
-       unsigned short rxMcPortNew;
-
-       if (!readUS(valueName, value, &rxMcPortNew)) {
-               return true;
-       }
-
-       if (rxMcPortNew < 1) {
-               pudError(false, "Value of parameter %s (%u) is outside of valid range 1-65535", valueName, rxMcPortNew);
-               return true;
-       }
-
-       setOlsrSockaddrPort(getRxMcAddr(), htons((in_port_t) rxMcPortNew));
-
-       return false;
-}
-
 /*
  * positionFile
  */
@@ -1739,11 +1509,6 @@ unsigned int checkConfig(void) {
          setGpsd(PUD_GPSD_DEFAULT, NULL, addon);
        }
 
-       if (rxNonOlsrInterfaceCount == 0) {
-               pudError(false, "No receive non-OLSR interfaces configured");
-               retval = false;
-       }
-
        if (txNonOlsrInterfaceCount == 0) {
                pudError(false, "No transmit non-OLSR interfaces configured");
                retval = false;
index 1e7668d..5c38e1d 100644 (file)
@@ -75,48 +75,9 @@ nodeIdBinaryType * getNodeIdBinary(void);
 int setNodeId(const char *value, void *data, set_plugin_parameter_addon addon);
 
 /*
- * RX Parameters
+ * Position Input File Parameters
  */
 
-/** The name of the receive non-OLSR interfaces plugin parameter */
-#define PUD_RX_NON_OLSR_IF_NAME                                        "rxNonOlsrIf"
-
-bool isRxNonOlsrInterface(const char *ifName);
-int addRxNonOlsrInterface(const char *value, void *data,
-               set_plugin_parameter_addon addon);
-unsigned int getRxNonOlsrInterfaceCount(void);
-unsigned char * getRxNonOlsrInterfaceName(unsigned int index);
-
-/** The name of the allowed source IP address plugin parameter */
-#define PUD_RX_ALLOWED_SOURCE_IP_NAME                  "rxAllowedSourceIpAddress"
-
-bool isRxAllowedSourceIpAddress(union olsr_sockaddr * sender);
-int addRxAllowedSourceIpAddress(const char *value, void *data,
-               set_plugin_parameter_addon addon);
-
-/** The name of the receive multicast address plugin parameter */
-#define PUD_RX_MC_ADDR_NAME                                            "rxMcAddr"
-
-/** The default value of the receive multicast address plugin parameter for IPv4 */
-#define PUD_RX_MC_ADDR_4_DEFAULT                               "224.0.0.224"
-
-/** The default value of the receive multicast address plugin parameter for IPv6 */
-#define PUD_RX_MC_ADDR_6_DEFAULT                               "FF02:0:0:0:0:0:0:1"
-
-union olsr_sockaddr * getRxMcAddr(void);
-int
-setRxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
-
-/** The name of the receive multicast port plugin parameter */
-#define PUD_RX_MC_PORT_NAME                                            "rxMcPort"
-
-/** The default value of the receive multicast port plugin parameter */
-#define PUD_RX_MC_PORT_DEFAULT                                 2240
-
-unsigned short getRxMcPort(void);
-int
-setRxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
-
 /** The name of the positionFile plugin parameter */
 #define PUD_POSFILE_NAME                                               "positionFile"
 
@@ -193,6 +154,10 @@ unsigned char * getTxNmeaMessagePrefix(void);
 int setTxNmeaMessagePrefix(const char *value, void *data,
                set_plugin_parameter_addon addon);
 
+/*
+ * Position Output File Parameters
+ */
+
 /** The name of the positionOutputFile plugin parameter */
 #define PUD_POSOUTFILE_NAME            "positionOutputFile"
 
index a0c05ec..40ebe0a 100644 (file)
@@ -94,236 +94,6 @@ unsigned char * getMainIpMacAddress(void) {
        return &mac[0];
 }
 
-/*
- * RX interfaces
- */
-
-/** The list of network interface objects, receiving GPS NMEA sentences */
-static TRxTxNetworkInterface *rxNetworkInterfacesListHead = NULL;
-
-/** Pointer to the last network interface object, receiving GPS NMEA sentences */
-static TRxTxNetworkInterface *lastRxNetworkInterface = NULL;
-
-/**
- @return
- The list of network interface objects, receiving GPS NMEA sentences
- */
-TRxTxNetworkInterface *getRxNetworkInterfaces(void) {
-       return rxNetworkInterfacesListHead;
-}
-
-/**
- Create a receive socket for a network interface
-
- @param networkInterface
- The network interface object. This function expects it to be filled with all
- information, except for the socket descriptor.
- @param rxSocketHandlerFunction
- The function that handles reception of data on the network interface
- @param rxMcAddr
- The receive multicast address
-
- @return
- - the socket descriptor (>= 0)
- - -1 if an error occurred
- */
-static int createRxSocket(TRxTxNetworkInterface * networkInterface,
-               socket_handler_func rxSocketHandlerFunction, union olsr_sockaddr * rxMcAddr) {
-       int ipFamilySetting;
-       int ipProtoSetting;
-       int ipMcLoopSetting;
-       int ipAddMembershipSetting;
-
-       union olsr_sockaddr address;
-       void * addr;
-       size_t addrSize;
-
-       int rxSocket = -1;
-
-       int socketReuseFlagValue = 1;
-       int mcLoopValue = 1;
-
-       assert(networkInterface != NULL);
-       assert(rxSocketHandlerFunction != NULL);
-       assert(strncmp((char *) &networkInterface->name[0], "",
-                                       sizeof(networkInterface->name)) != 0);
-
-       memset(&address, 0, sizeof(address));
-       if (rxMcAddr->in.sa_family == AF_INET) {
-               assert(rxMcAddr->in4.sin_addr.s_addr != INADDR_ANY);
-
-               ipFamilySetting = AF_INET;
-               ipProtoSetting = IPPROTO_IP;
-               ipMcLoopSetting = IP_MULTICAST_LOOP;
-               ipAddMembershipSetting = IP_ADD_MEMBERSHIP;
-
-               address.in4.sin_family = ipFamilySetting;
-               address.in4.sin_addr.s_addr = INADDR_ANY;
-               address.in4.sin_port = getRxMcPort();
-               addr = &address.in4;
-               addrSize = sizeof(struct sockaddr_in);
-       } else {
-               assert(rxMcAddr->in6.sin6_addr.s6_addr != in6addr_any.s6_addr);
-
-               ipFamilySetting = AF_INET6;
-               ipProtoSetting = IPPROTO_IPV6;
-               ipMcLoopSetting = IPV6_MULTICAST_LOOP;
-               ipAddMembershipSetting = IPV6_ADD_MEMBERSHIP;
-
-               address.in6.sin6_family = ipFamilySetting;
-               address.in6.sin6_addr = in6addr_any;
-               address.in6.sin6_port = getRxMcPort();
-               addr = &address.in6;
-               addrSize = sizeof(struct sockaddr_in6);
-       }
-
-       /* Create a datagram socket on which to receive. */
-       errno = 0;
-       rxSocket = socket(ipFamilySetting, SOCK_DGRAM, 0);
-       if (rxSocket < 0) {
-               pudError(true, "Could not create a receive socket for interface %s",
-                               networkInterface->name);
-               goto bail;
-       }
-
-       /* Enable SO_REUSEADDR to allow multiple applications to receive the same
-        * multicast messages */
-       errno = 0;
-       if (setsockopt(rxSocket, SOL_SOCKET, SO_REUSEADDR, &socketReuseFlagValue,
-                       sizeof(socketReuseFlagValue)) < 0) {
-               pudError(true, "Could not set the reuse flag on the receive socket for"
-                       " interface %s", networkInterface->name);
-               goto bail;
-       }
-
-       /* Bind to the proper port number with the IP address INADDR_ANY
-        * (INADDR_ANY is really required here, do not change it) */
-       errno = 0;
-       if (bind(rxSocket, addr, addrSize) < 0) {
-               pudError(true, "Could not bind the receive socket for interface"
-                       " %s to port %u", networkInterface->name, ntohs(getRxMcPort()));
-               goto bail;
-       }
-
-       /* Enable multicast local loopback */
-       errno = 0;
-       if (setsockopt(rxSocket, ipProtoSetting, ipMcLoopSetting, &mcLoopValue,
-                       sizeof(mcLoopValue)) < 0) {
-               pudError(true, "Could not enable multicast loopback on the"
-                       " receive socket for interface %s", networkInterface->name);
-               goto bail;
-       }
-
-       /* Join the multicast group on the local interface. Note that this
-        * ADD_MEMBERSHIP option must be called for each local interface over
-        * which the multicast datagrams are to be received. */
-       if (ipFamilySetting == AF_INET) {
-               struct ip_mreq mc_settings;
-
-               struct ifreq ifr;
-               struct in_addr * ifAddr = getIPv4Address(networkInterface->name, &ifr);
-               if (!ifAddr) {
-                       pudError(true, "Could not get interface address of %s", networkInterface->name);
-                       goto bail;
-               }
-
-               (void) memset(&mc_settings, 0, sizeof(mc_settings));
-               mc_settings.imr_multiaddr = rxMcAddr->in4.sin_addr;
-               mc_settings.imr_interface = *ifAddr;
-               errno = 0;
-               if (setsockopt(rxSocket, ipProtoSetting, ipAddMembershipSetting,
-                               &mc_settings, sizeof(mc_settings)) < 0) {
-                       pudError(true, "Could not subscribe interface %s to the configured"
-                               " multicast group", networkInterface->name);
-                       goto bail;
-               }
-       } else {
-               struct ipv6_mreq mc6_settings;
-               (void) memset(&mc6_settings, 0, sizeof(mc6_settings));
-               mc6_settings.ipv6mr_multiaddr = rxMcAddr->in6.sin6_addr;
-               mc6_settings.ipv6mr_interface = if_nametoindex(networkInterface->name);
-               errno = 0;
-               if (setsockopt(rxSocket, ipProtoSetting, ipAddMembershipSetting,
-                               &mc6_settings, sizeof(mc6_settings)) < 0) {
-                       pudError(true, "Could not subscribe interface %s to the configured"
-                               " multicast group", networkInterface->name);
-                       goto bail;
-               }
-       }
-
-       add_olsr_socket(rxSocket, rxSocketHandlerFunction, NULL, networkInterface,
-                       SP_PR_READ);
-
-       return rxSocket;
-
-       bail: if (rxSocket >= 0) {
-               close(rxSocket);
-       }
-       return -1;
-
-}
-
-/**
- Create a receive interface and add it to the list of receive network interface
- objects
-
- @param ifName
- the network interface name
- @param rxSocketHandlerFunction
- the function that handles reception of data on the network interface
- @param rxMcAddr
- The receive multicast address
-
- @return
- - true on success
- - false on failure
- */
-static bool createRxInterface(const char * ifName,
-               socket_handler_func rxSocketHandlerFunction, union olsr_sockaddr * rxMcAddr) {
-       int socketFd = -1;
-       TRxTxNetworkInterface * networkInterface = NULL;
-
-       if (ifName == NULL) {
-               goto bail;
-       }
-
-       networkInterface = olsr_malloc(sizeof(TRxTxNetworkInterface),
-                       "TRxTxNetworkInterface (PUD)");
-       if (networkInterface == NULL) {
-               goto bail;
-       }
-
-       memcpy(networkInterface->name, ifName, sizeof(networkInterface->name));
-       networkInterface->name[IFNAMSIZ] = '\0';
-       networkInterface->handler = NULL;
-       networkInterface->next = NULL;
-
-       /* networkInterface needs to be filled in when calling createRxSocket */
-       socketFd = createRxSocket(networkInterface, rxSocketHandlerFunction, rxMcAddr);
-       if (socketFd < 0) {
-               goto bail;
-       }
-       networkInterface->socketFd = socketFd;
-       networkInterface->handler = rxSocketHandlerFunction;
-
-       /* Add new object to the end of the global list. */
-       if (rxNetworkInterfacesListHead == NULL) {
-               rxNetworkInterfacesListHead = networkInterface;
-               lastRxNetworkInterface = networkInterface;
-       } else {
-               lastRxNetworkInterface->next = networkInterface;
-               lastRxNetworkInterface = networkInterface;
-       }
-
-       return true;
-
-       bail: if (networkInterface != NULL) {
-               free(networkInterface);
-       }
-       return false;
-
-}
-
 /*
  * TX interfaces
  */
@@ -622,8 +392,6 @@ static int createDownlinkSocket(int ipVersion, socket_handler_func rxSocketHandl
  Creates receive and transmit sockets and register the receive sockets with
  the OLSR stack
 
- @param rxSocketHandlerFunction
- The function to call upon reception of data on a receive socket
  @param rxSocketHandlerFunctionDownlink
  The function to call upon reception of data on a downlink receive socket
 
@@ -631,21 +399,10 @@ static int createDownlinkSocket(int ipVersion, socket_handler_func rxSocketHandl
  - true on success
  - false on failure
  */
-bool createNetworkInterfaces(socket_handler_func rxSocketHandlerFunction,
-               socket_handler_func rxSocketHandlerFunctionDownlink) {
-       union olsr_sockaddr * rxMcAddr = getRxMcAddr();
+bool createNetworkInterfaces(socket_handler_func rxSocketHandlerFunctionDownlink) {
        union olsr_sockaddr * txMcAddr = getTxMcAddr();
        unsigned int count = 0;
 
-       /* loop over all configured rx interfaces */
-       count = getRxNonOlsrInterfaceCount();
-       while (count--) {
-               if (!createRxInterface((char *)getRxNonOlsrInterfaceName(count), rxSocketHandlerFunction, rxMcAddr)) {
-                       /* creating a receive interface failed */
-                       return false;
-               }
-       }
-
        /* loop over all configured tx interfaces */
        count = getTxNonOlsrInterfaceCount();
        while (count--) {
@@ -696,11 +453,6 @@ static void closeInterfaces(TRxTxNetworkInterface * networkInterface) {
  Close and cleanup all receive and transmit network interfaces
  */
 void closeNetworkInterfaces(void) {
-       if (rxNetworkInterfacesListHead != NULL) {
-               closeInterfaces(rxNetworkInterfacesListHead);
-               rxNetworkInterfacesListHead = NULL;
-       }
-
        if (txNetworkInterfacesListHead != NULL) {
                closeInterfaces(txNetworkInterfacesListHead);
                txNetworkInterfacesListHead = NULL;
index d2f5086..434be1e 100644 (file)
@@ -81,14 +81,11 @@ typedef struct _TOLSRNetworkInterface {
                struct _TOLSRNetworkInterface * next;
 } TOLSRNetworkInterface;
 
-bool createNetworkInterfaces(socket_handler_func rxSocketHandlerFunction,
-               socket_handler_func rxSocketHandlerFunctionDownlink);
+bool createNetworkInterfaces(socket_handler_func rxSocketHandlerFunctionDownlink);
 void closeNetworkInterfaces(void);
 
 unsigned char * getMainIpMacAddress(void);
-TRxTxNetworkInterface * getRxNetworkInterfaces(void);
 TRxTxNetworkInterface * getTxNetworkInterfaces(void);
 int getDownlinkSocketFd(void);
-TOLSRNetworkInterface * getOlsrNetworkInterface(struct interface_olsr * olsrIntf);
 
 #endif /* _PUD_NETWORKINTERFACES_H */
index 2d2a81b..6419661 100644 (file)
@@ -64,9 +64,6 @@
 
 /* System includes */
 
-/** The size of the buffer in which the received NMEA string is stored */
-#define BUFFER_SIZE_RX_NMEA            2048
-
 /** The size of the buffer in which the received downlink message is stored */
 #define BUFFER_SIZE_RX_DOWNLINK        2048
 
@@ -304,52 +301,6 @@ static void packetReceivedFromDownlink(int skfd, void *data __attribute__ ((unus
        }
 }
 
-/**
- Called by OLSR core when a packet for the plugin is received from the non-OLSR
- network. It converts the packet into the internal OLSR wire format for a
- position update and transmits it over all OLSR network interfaces.
-
- @param skfd
- the socket file descriptor on which the packet is received
- @param data
- a pointer to the network interface structure on which the packet was received
- @param flags
- unused
- */
-static void packetReceivedForOlsr(int skfd, void *data __attribute__ ((unused)), unsigned int flags __attribute__ ((unused))) {
-       if (skfd >= 0) {
-               unsigned char rxBuffer[BUFFER_SIZE_RX_NMEA];
-               ssize_t rxCount;
-               union olsr_sockaddr sender;
-               socklen_t senderSize = sizeof(sender);
-
-               assert(data != NULL);
-
-               /* Receive the captured Ethernet frame */
-               memset(&sender, 0, senderSize);
-               errno = 0;
-               rxCount = recvfrom(skfd, &rxBuffer[0], (sizeof(rxBuffer) - 1), 0,
-                               (struct sockaddr *)&sender, &senderSize);
-               if (rxCount < 0) {
-                       pudError(true, "Receive error in %s, ignoring message.", __func__);
-                       return;
-               }
-
-               /* make sure the string is null-terminated */
-               rxBuffer[rxCount] = '\0';
-
-               /* only accept messages from configured IP addresses */
-               if (!isRxAllowedSourceIpAddress(&sender)) {
-                       return;
-               }
-
-               /* we have the received string in the rxBuffer now */
-
-               /* hand the NMEA information to the receiver */
-               (void) receiverUpdateGpsInformation(&rxBuffer[0], rxCount);
-       }
-}
-
 /**
  * Timer callback that reads the pud position file
  */
@@ -401,8 +352,7 @@ bool initPud(void) {
         * Creates receive and transmit sockets and register the receive sockets
         * with the OLSR stack
         */
-       if (!createNetworkInterfaces(&packetReceivedForOlsr,
-                       &packetReceivedFromDownlink)) {
+       if (!createNetworkInterfaces(&packetReceivedFromDownlink)) {
                pudError(false, "Could not create require network interfaces");
                goto error;
        }
index 6bb35a3..d40c7d4 100644 (file)
@@ -76,12 +76,6 @@ static const struct olsrd_plugin_parameters plugin_parameters[] = {
        {       .name = PUD_GPSD_USE_NAME, .set_plugin_parameter = &setGpsdUse, .data = NULL},
        {       .name = PUD_GPSD_NAME, .set_plugin_parameter = &setGpsd, .data = NULL},
 
-       /* RX */
-       {       .name = PUD_RX_NON_OLSR_IF_NAME, .set_plugin_parameter = &addRxNonOlsrInterface, .data = NULL},
-       {       .name = PUD_RX_ALLOWED_SOURCE_IP_NAME, .set_plugin_parameter = &addRxAllowedSourceIpAddress, .data = NULL},
-       {       .name = PUD_RX_MC_ADDR_NAME, .set_plugin_parameter = &setRxMcAddr, .data = NULL},
-       {       .name = PUD_RX_MC_PORT_NAME, .set_plugin_parameter = &setRxMcPort, .data = NULL},
-
        /* position input file */
        {       .name = PUD_POSFILE_NAME, .set_plugin_parameter = &setPositionFile, .data = NULL},
        {       .name = PUD_POSFILEPERIOD_NAME, .set_plugin_parameter = &setPositionFilePeriod, .data = NULL},
index 52ce3d0..a7b8be2 100644 (file)
@@ -884,43 +884,6 @@ static void detemineMovingFromPosition(PositionUpdateEntry * avg, PositionUpdate
        return;
 }
 
-/**
- Update the latest GPS information. This function is called when a packet is
- received from a rxNonOlsr interface, containing one or more NMEA strings with
- GPS information.
-
- @param rxBuffer
- the receive buffer with the received NMEA string(s)
- @param rxCount
- the number of bytes in the receive buffer
-
- @return
- - false on failure
- - true otherwise
- */
-bool receiverUpdateGpsInformation(unsigned char * rxBuffer, size_t rxCount) {
-       static const char * rxBufferPrefix = "$GP";
-       static const size_t rxBufferPrefixLength = 3;
-
-       PositionUpdateEntry * incomingEntry;
-
-       /* do not process when the message does not start with $GP */
-       if ((rxCount < rxBufferPrefixLength) || (strncmp((char *) rxBuffer,
-                       rxBufferPrefix, rxBufferPrefixLength) != 0)) {
-               return true;
-       }
-
-       /* parse all NMEA strings in the rxBuffer into the incoming entry */
-       incomingEntry = getPositionAverageEntry(&positionAverageList, INCOMING);
-       nmeaInfoClear(&incomingEntry->nmeaInfo);
-       nmeaTimeSet(&incomingEntry->nmeaInfo.utc, &incomingEntry->nmeaInfo.present, NULL);
-       nmeaParserParse(&nmeaParser, (char *) rxBuffer, rxCount, &incomingEntry->nmeaInfo);
-       nmeaInfoSanitise(&incomingEntry->nmeaInfo);
-
-       receiverProcessIncomingEntry(incomingEntry);
-       return true;
-}
-
 static void receiverProcessIncomingEntry(PositionUpdateEntry * incomingEntry) {
        static bool gpnonPrev = false;
 
index 076263f..ecd91a3 100644 (file)
@@ -68,6 +68,5 @@ bool startReceiver(void);
 void stopReceiver(void);
 
 void updatePositionFromFile(void);
-bool receiverUpdateGpsInformation(unsigned char * rxBuffer, size_t rxCount);
 
 #endif /* _PUD_RECEIVER_H_ */