PUD: cfg: return default port when addr is NULL in getOlsrSockaddrPort
authorFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 6 Jun 2012 13:46:04 +0000 (15:46 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 7 Jun 2012 22:30:03 +0000 (00:30 +0200)
Also, do nothing in setOlsrSockaddrPort if addr is NULL

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/src/configuration.c
lib/pud/src/netTools.h

index f83ea47..1d3a3c3 100644 (file)
@@ -483,7 +483,7 @@ int setRxMcAddr(const char *value, void *data __attribute__ ((unused)), set_plug
  The receive multicast port (in network byte order)
  */
 unsigned short getRxMcPort(void) {
-       return getOlsrSockaddrPort(getRxMcAddr());
+       return getOlsrSockaddrPort(getRxMcAddr(), PUD_RX_MC_PORT_DEFAULT);
 }
 
 int setRxMcPort(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) {
@@ -659,7 +659,7 @@ int setTxMcAddr(const char *value, void *data __attribute__ ((unused)), set_plug
  The transmit multicast port (in network byte order)
  */
 unsigned short getTxMcPort(void) {
-       return getOlsrSockaddrPort(getTxMcAddr());
+       return getOlsrSockaddrPort(getTxMcAddr(), PUD_TX_MC_PORT_DEFAULT);
 }
 
 int setTxMcPort(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) {
@@ -808,7 +808,7 @@ int setUplinkAddr(const char *value, void *data __attribute__ ((unused)), set_pl
  The uplink port (in network byte order)
  */
 unsigned short getUplinkPort(void) {
-       return getOlsrSockaddrPort(getUplinkAddr());
+       return getOlsrSockaddrPort(getUplinkAddr(), PUD_UPLINK_PORT_DEFAULT);
 }
 
 int setUplinkPort(const char *value, void *data __attribute__ ((unused)), set_plugin_parameter_addon addon __attribute__ ((unused))) {
index f4f3270..a7a05ad 100644 (file)
 
  @param addr
  A pointer to OLSR socket address
+ @param defaultPort
+ The default port (in host byte order), returned when addr is NULL
  @return
  The port (in network byte order)
  */
-static inline in_port_t getOlsrSockaddrPort(union olsr_sockaddr * addr) {
+static inline in_port_t getOlsrSockaddrPort(union olsr_sockaddr * addr, in_port_t defaultPort) {
+       if (!addr) {
+               return htons(defaultPort);
+       }
+
        if (addr->in.sa_family == AF_INET) {
                return addr->in4.sin_port;
        } else {
@@ -37,6 +43,10 @@ static inline in_port_t getOlsrSockaddrPort(union olsr_sockaddr * addr) {
  The port (in network byte order)
  */
 static inline void setOlsrSockaddrPort(union olsr_sockaddr * addr, in_port_t port) {
+       if (!addr) {
+               return;
+       }
+
        if (addr->in.sa_family == AF_INET) {
                addr->in4.sin_port = port;
        } else {