PUD: add getNodeIdType function
authorFerry Huberts <f.huberts@mindef.nl>
Thu, 18 Aug 2011 13:10:50 +0000 (15:10 +0200)
committerFerry Huberts <f.huberts@mindef.nl>
Thu, 18 Aug 2011 13:10:50 +0000 (15:10 +0200)
Signed-off-by: Ferry Huberts <f.huberts@mindef.nl>
lib/pud/src/nodeIdConversion.c
lib/pud/src/wireFormat.c
lib/pud/src/wireFormat.h

index 0f41501..d6b1cef 100644 (file)
@@ -274,8 +274,6 @@ void getNodeIdStringFromOlsr(int ipVersion, union olsr_message *olsrMessage,
  */
 void getNodeTypeStringFromOlsr(int ipVersion, union olsr_message * olsrMessage,
                char * nodeIdTypeBuffer, int nodeIdTypeBufferSize) {
  */
 void getNodeTypeStringFromOlsr(int ipVersion, union olsr_message * olsrMessage,
                char * nodeIdTypeBuffer, int nodeIdTypeBufferSize) {
-       PudOlsrWireFormat *olsrGpsMessage;
-       unsigned int type;
        int chars;
 
        if (unlikely(!nodeIdTypeBuffer || (nodeIdTypeBufferSize == 0))) {
        int chars;
 
        if (unlikely(!nodeIdTypeBuffer || (nodeIdTypeBufferSize == 0))) {
@@ -284,22 +282,9 @@ void getNodeTypeStringFromOlsr(int ipVersion, union olsr_message * olsrMessage,
 
        assert(nodeIdTypeBufferSize >= (PUD_TX_NODEIDTYPE_DIGITS + 1));
 
 
        assert(nodeIdTypeBufferSize >= (PUD_TX_NODEIDTYPE_DIGITS + 1));
 
-       /* determine the originator of the message */
-       if (ipVersion == AF_INET) {
-               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v4.message;
-       } else {
-               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v6.message;
-       }
-
-       if (olsrGpsMessage->smask & PUD_FLAGS_ID) {
-               type = olsrGpsMessage->nodeInfo.nodeIdType;
-       } else {
-               type = (ipVersion == AF_INET) ? PUD_NODEIDTYPE_IPV4 :
-                               PUD_NODEIDTYPE_IPV6;
-       }
-
        /* message has NO nodeId information */
        /* message has NO nodeId information */
-       chars = snprintf(&nodeIdTypeBuffer[0], nodeIdTypeBufferSize, "%u", type);
+       chars = snprintf(&nodeIdTypeBuffer[0], nodeIdTypeBufferSize, "%u",
+                       getNodeIdType(ipVersion, olsrMessage));
        if (likely(chars < nodeIdTypeBufferSize)) {
                nodeIdTypeBuffer[chars] = '\0';
        } else {
        if (likely(chars < nodeIdTypeBufferSize)) {
                nodeIdTypeBuffer[chars] = '\0';
        } else {
index ca34a77..e86d181 100644 (file)
@@ -438,3 +438,38 @@ long getHdopForOlsr(double infoHdop) {
 double getHdopFromOlsr(uint32_t olsrHdop) {
        return (olsrHdop * PUD_HDOP_RESOLUTION);
 }
 double getHdopFromOlsr(uint32_t olsrHdop) {
        return (olsrHdop * PUD_HDOP_RESOLUTION);
 }
+
+/* ************************************************************************
+ * NodeInfo
+ * ************************************************************************ */
+
+/**
+ Get the nodeIdType, accounting for nodeId presence
+
+ @param ipVersion
+ The ip version, either AF_INET or AF_INET6
+ @param olsrMessage
+ A pointer to the OLSR message
+
+ @return
+ The nodeIdType
+ */
+NodeIdType getNodeIdType(int ipVersion, union olsr_message * olsrMessage) {
+       NodeIdType nodeIdType;
+       PudOlsrWireFormat *olsrGpsMessage;
+
+       /* determine the originator of the message */
+       if (ipVersion == AF_INET) {
+               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v4.message;
+       } else {
+               olsrGpsMessage = (PudOlsrWireFormat *) &olsrMessage->v6.message;
+       }
+
+       if (olsrGpsMessage->smask & PUD_FLAGS_ID) {
+               nodeIdType = olsrGpsMessage->nodeInfo.nodeIdType;
+       } else {
+               nodeIdType = ((ipVersion == AF_INET) ? PUD_NODEIDTYPE_IPV4 : PUD_NODEIDTYPE_IPV6);
+       }
+
+       return nodeIdType;
+}
index 6ed184f..728e8b9 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef _PUD_WIREFORMAT_H_
 #define _PUD_WIREFORMAT_H_
 
 #ifndef _PUD_WIREFORMAT_H_
 #define _PUD_WIREFORMAT_H_
 
+/* OLSRD includes */
+#include "olsr_protocol.h"
+
 /* System includes */
 #include <stdint.h>
 #include <time.h>
 /* System includes */
 #include <stdint.h>
 #include <time.h>
@@ -218,4 +221,6 @@ unsigned long getTrackFromOlsr(uint32_t olsrTrack);
 long getHdopForOlsr(double infoHdop);
 double getHdopFromOlsr(uint32_t olsrHdop);
 
 long getHdopForOlsr(double infoHdop);
 double getHdopFromOlsr(uint32_t olsrHdop);
 
+NodeIdType getNodeIdType(int ipVersion, union olsr_message * olsrMessage);
+
 #endif /* _PUD_WIREFORMAT_H_ */
 #endif /* _PUD_WIREFORMAT_H_ */