PUD: add getOlsrSockAddrAndPort helper function
authorFerry Huberts <f.huberts@mindef.nl>
Thu, 4 Aug 2011 11:30:11 +0000 (12:30 +0100)
committerFerry Huberts <f.huberts@mindef.nl>
Thu, 18 Aug 2011 13:23:02 +0000 (15:23 +0200)
Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/src/configuration.c

index 4b14406..12c85b5 100644 (file)
@@ -43,6 +43,28 @@ static in_port_t * getOlsrSockaddrPort(int ipVersion, union olsr_sockaddr * addr
        }
 }
 
+/**
+ Get pointer to the IP address and port in an OLSR socket address
+ @param ipVersion
+ The IP version (AF_INET or AF_INET6)
+ @param addr
+ A pointer to OLSR socket address
+ @param ipAddress
+ A pointer to the location where the pointer to the IP address will be stored
+ @param port
+ A pointer to the location where the pointer to the port will be stored
+ */
+static void getOlsrSockAddrAndPort(int ipVersion, union olsr_sockaddr * addr,
+               void ** ipAddress, in_port_t ** port) {
+       if (ipVersion == AF_INET) {
+               *ipAddress = (void *) &addr->in4.sin_addr;
+               *port = (void *) &addr->in4.sin_port;
+       } else {
+               *ipAddress = (void *) &addr->in6.sin6_addr;
+               *port = (void *) &addr->in6.sin6_port;
+       }
+}
+
 /**
  Read an unsigned long long number from a value string
 
@@ -648,17 +670,14 @@ int setRxMcAddr(const char *value, void *data __attribute__ ((unused)), set_plug
        const char * valueInternal = value;
        int conversion;
 
+       getOlsrSockAddrAndPort(olsr_cnf->ip_version, &rxMcAddr, &ipAddress, &port);
        if (olsr_cnf->ip_version == AF_INET) {
                rxMcAddr.in4.sin_family = olsr_cnf->ip_version;
-               ipAddress = (void *) &rxMcAddr.in4.sin_addr;
-               port = (void *) &rxMcAddr.in4.sin_port;
                if (valueInternal == NULL) {
                        valueInternal = PUD_RX_MC_ADDR_4_DEFAULT;
                }
        } else {
                rxMcAddr.in6.sin6_family = olsr_cnf->ip_version;
-               ipAddress = (void *) &rxMcAddr.in6.sin6_addr;
-               port = (void *) &rxMcAddr.in6.sin6_port;
                if (valueInternal == NULL) {
                        valueInternal = PUD_RX_MC_ADDR_6_DEFAULT;
                }
@@ -865,17 +884,14 @@ int setTxMcAddr(const char *value, void *data __attribute__ ((unused)), set_plug
        const char * valueInternal = value;
        int conversion;
 
+       getOlsrSockAddrAndPort(olsr_cnf->ip_version, &txMcAddr, &ipAddress, &port);
        if (olsr_cnf->ip_version == AF_INET) {
                txMcAddr.in4.sin_family = olsr_cnf->ip_version;
-               ipAddress = (void *) &txMcAddr.in4.sin_addr;
-               port = (void *) &txMcAddr.in4.sin_port;
                if (valueInternal == NULL) {
                        valueInternal = PUD_TX_MC_ADDR_4_DEFAULT;
                }
        } else {
                txMcAddr.in6.sin6_family = olsr_cnf->ip_version;
-               ipAddress = (void *) &txMcAddr.in6.sin6_addr;
-               port = (void *) &txMcAddr.in6.sin6_port;
                if (valueInternal == NULL) {
                        valueInternal = PUD_TX_MC_ADDR_6_DEFAULT;
                }