PUD: use downlink socket for sending on uplink
authorFerry Huberts <f.huberts@mindef.nl>
Thu, 15 Dec 2011 13:21:51 +0000 (14:21 +0100)
committerFerry Huberts <f.huberts@mindef.nl>
Thu, 15 Dec 2011 13:29:37 +0000 (14:29 +0100)
So that we send from the downlink port: allows removal
of the downlinkPort in the clusterLeader message, saving
2 bytes in payload (will do that later).

Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/src/networkInterfaces.c
lib/pud/src/networkInterfaces.h
lib/pud/src/receiver.c

index 9c91dc9..ea34f1f 100644 (file)
@@ -426,54 +426,6 @@ static bool createTxInterface(const char * ifName, union olsr_sockaddr ipAddr) {
        return false;
 }
 
-/*
- * Uplink interface
- */
-
-/** The socket fd, uplinking our NMEA sentences */
-static int uplinkSocketFd = -1;
-
-/**
- @return
- The socket fd, uplinking our NMEA sentences. -1 when not valid.
- */
-int getUplinkSocketFd(void) {
-       return uplinkSocketFd;
-}
-
-/**
- Create an uplink socket
-
- @return
- - the socket descriptor (>= 0)
- - -1 if an error occurred
- */
-static int createUplinkSocket(void) {
-       int uplinkSocket = -1;
-
-       /*  Create a datagram socket on which to transmit */
-       errno = 0;
-       uplinkSocket = socket(olsr_cnf->ip_version, SOCK_DGRAM, 0);
-       if (uplinkSocket < 0) {
-               pudError(true, "Could not create the uplink socket");
-               goto bail;
-       }
-
-       /* Set the no delay option on the socket */
-       errno = 0;
-       if (fcntl(uplinkSocket, F_SETFL, O_NDELAY) < 0) {
-               pudError(true, "Could not set the no delay option on the uplink socket");
-               goto bail;
-       }
-
-       return uplinkSocket;
-
-       bail: if (uplinkSocket >= 0) {
-               close(uplinkSocket);
-       }
-       return -1;
-}
-
 /*
  * Downlink interface
  */
@@ -484,6 +436,15 @@ static int downlinkSocketFd = -1;
 /** the downlink handler function */
 static socket_handler_func downlinkHandler = NULL;
 
+
+/**
+ @return
+ The downlink socket fd. -1 when not valid.
+ */
+int getDownlinkSocketFd(void) {
+       return downlinkSocketFd;
+}
+
 /**
  Create an downlink socket
 
@@ -711,17 +672,12 @@ bool createNetworkInterfaces(socket_handler_func rxSocketHandlerFunction,
        }
 
        if (isUplinkAddrSet()) {
-               uplinkSocketFd = createUplinkSocket();
-               if (uplinkSocketFd == -1) {
-                       goto end;
-               }
-
                downlinkSocketFd = createDownlinkSocket(rxSocketHandlerFunctionDownlink);
                if (downlinkSocketFd == -1) {
                        goto end;
                }
        } else {
-               uplinkSocketFd = -1;
+               downlinkSocketFd = -1;
        }
 
        retval = true;
@@ -789,11 +745,6 @@ void closeNetworkInterfaces(void) {
                olsrNetworkInterfacesListHead = NULL;
        }
 
-       if (uplinkSocketFd != -1 ) {
-               close(uplinkSocketFd);
-               uplinkSocketFd = -1;
-       }
-
        if (downlinkSocketFd != -1 ) {
                if (downlinkHandler) {
                        remove_olsr_socket (downlinkSocketFd, downlinkHandler, NULL);
index 0e4f39e..c9d97e5 100644 (file)
@@ -46,7 +46,7 @@ void closeNetworkInterfaces(void);
 unsigned char * getMainIpMacAddress(void);
 TRxTxNetworkInterface * getRxNetworkInterfaces(void);
 TRxTxNetworkInterface * getTxNetworkInterfaces(void);
-int getUplinkSocketFd(void);
+int getDownlinkSocketFd(void);
 TOLSRNetworkInterface * getOlsrNetworkInterface(struct interface * olsrIntf);
 
 #endif /* _PUD_NETWORKINTERFACES_H */
index d8b35d7..64f3f1b 100644 (file)
@@ -234,7 +234,7 @@ static void txToAllOlsrInterfaces(TimedTxInterface interfaces) {
 
        /* push out over uplink when an uplink is configured */
        if (((interfaces & UPLINK) != 0) && isUplinkAddrSet()) {
-               int fd = getUplinkSocketFd();
+               int fd = getDownlinkSocketFd();
                if (fd != -1) {
                        union olsr_sockaddr * uplink_addr = getUplinkAddr();
                        union olsr_ip_addr * gw_addr = getBestUplinkGateway();