PUD: add URN nodeIdType
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 27 Sep 2011 11:24:52 +0000 (13:24 +0200)
committerFerry Huberts <f.huberts@mindef.nl>
Tue, 18 Oct 2011 10:08:27 +0000 (12:08 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/pud/doc/olsrd.conf.default.pud
lib/pud/doc/pud.odt
lib/pud/src/configuration.c
lib/pud/wireformat-java/resources/WireFormatConstants.java.h
lib/pud/wireformat/include/OlsrdPudWireFormat/wireFormat.h
lib/pud/wireformat/src/nodeIdConversion.c
lib/pud/wireformat/src/wireFormat.c

index a0269fa..f7d5bda 100644 (file)
@@ -449,6 +449,7 @@ LoadPlugin "./lib/pud/olsrd_pud.so.1.0.0"
     #        6 : IPv6 address (OLSR main address) of the sending node
     #            (nodeId is not relevant)
     #        7 : an AIS MMSI number with 9 digits
+    #        8 : a URN number with 8 digits
     #      192 : a 7 digit number conforming to 'Nationaal Nummerplan
     #            Brandweer Nederland'
     #      193 : a 6 digit number conforming to 'Nationaal Nummerplan
index dd4e3ba..f7d156d 100755 (executable)
Binary files a/lib/pud/doc/pud.odt and b/lib/pud/doc/pud.odt differ
index 22e6927..b50908b 100644 (file)
@@ -187,6 +187,7 @@ int setNodeIdType(const char *value, void *data __attribute__ ((unused)),
                case PUD_NODEIDTYPE_IPV4:
                case PUD_NODEIDTYPE_IPV6:
                case PUD_NODEIDTYPE_MMSI:
+               case PUD_NODEIDTYPE_URN:
                case PUD_NODEIDTYPE_192:
                case PUD_NODEIDTYPE_193:
                case PUD_NODEIDTYPE_194:
@@ -364,6 +365,12 @@ static bool setupNodeIdNumberForOlsrCacheAndValidate(NodeIdType nodeIdTypeNumber
                        bytes = PUD_NODEIDTYPE_MMSI_BYTES;
                        break;
 
+               case PUD_NODEIDTYPE_URN: /* a URN number */
+                       min = 0LL;
+                       max = 16777215LL;
+                       bytes = PUD_NODEIDTYPE_URN_BYTES;
+                       break;
+
                case PUD_NODEIDTYPE_192:
                        min = 0LL;
                        max = 9999999LL;
index a2547a7..81cb5f2 100644 (file)
@@ -49,6 +49,7 @@ public class WireFormatConstants {
        public static final int NODEIDTYPE_MSISDN_BYTES = PUD_NODEIDTYPE_MSISDN_BYTES;
        public static final int NODEIDTYPE_TETRA_BYTES = PUD_NODEIDTYPE_TETRA_BYTES;
        public static final int NODEIDTYPE_MMSI_BYTES = PUD_NODEIDTYPE_MMSI_BYTES;
+       public static final int NODEIDTYPE_URN_BYTES = PUD_NODEIDTYPE_URN_BYTES;
        public static final int NODEIDTYPE_192_BYTES = PUD_NODEIDTYPE_192_BYTES;
        public static final int NODEIDTYPE_193_BYTES = PUD_NODEIDTYPE_193_BYTES;
        public static final int NODEIDTYPE_194_BYTES = PUD_NODEIDTYPE_194_BYTES;
index 8e72f96..4b1722b 100644 (file)
@@ -146,6 +146,9 @@ typedef enum _NodeIdType {
        /** AIS MMSI number, 9 digits, 30 bits, 4 bytes */
        PUD_NODEIDTYPE_MMSI = 7,
 
+       /** URN number, 24 bits, 3 bytes */
+       PUD_NODEIDTYPE_URN = 8,
+
        /** Brandweer number, 7 digits, 24 bits, 3 bytes */
        PUD_NODEIDTYPE_192 = 192,
 
@@ -168,6 +171,9 @@ typedef enum _NodeIdType {
 /** the number of nodeId bytes for PUD_NODEIDTYPE_MMSI */
 #define PUD_NODEIDTYPE_MMSI_BYTES              4
 
+/** the number of nodeId bytes for PUD_NODEIDTYPE_URN */
+#define PUD_NODEIDTYPE_URN_BYTES               3
+
 /** the number of nodeId bytes for PUD_NODEIDTYPE_192 */
 #define PUD_NODEIDTYPE_192_BYTES               3
 
index 4f89e21..aa7f710 100644 (file)
@@ -149,6 +149,7 @@ void getNodeIdStringFromOlsr(int ipVersion, union olsr_message *olsrMessage,
        case PUD_NODEIDTYPE_MSISDN: /* an MSISDN number */
        case PUD_NODEIDTYPE_TETRA: /* a Tetra number */
        case PUD_NODEIDTYPE_MMSI: /* an AIS MMSI number */
+       case PUD_NODEIDTYPE_URN: /* a URN number */
        case PUD_NODEIDTYPE_192:
        case PUD_NODEIDTYPE_193:
        case PUD_NODEIDTYPE_194:
index b3fb627..67eca25 100644 (file)
@@ -32,7 +32,7 @@ static void setupCachedValidityTimeMsn(void) {
 /** The cached nodeId buffer: contains a pre-processed version of the nodeId
  in order to improve performance. It is currently used for nodeIdTypes
  PUD_NODEIDTYPE_MSISDN, PUD_NODEIDTYPE_TETRA, PUD_NODEIDTYPE_MMSI,
- PUD_NODEIDTYPE_192, PUD_NODEIDTYPE_193
+ PUD_NODEIDTYPE_URN, PUD_NODEIDTYPE_192, PUD_NODEIDTYPE_193
  (so basically for numbers that will not change) */
 static unsigned char cachedNodeIdBuffer[PUD_CACHED_NODEID_BUFFER_SIZE];
 
@@ -289,6 +289,10 @@ void getPositionUpdateNodeId(int ipVersion, union olsr_message * olsrMessage,
                *nodeIdSize = PUD_NODEIDTYPE_MMSI_BYTES;
                break;
 
+       case PUD_NODEIDTYPE_URN: /* a URN number */
+               *nodeIdSize = PUD_NODEIDTYPE_URN_BYTES;
+               break;
+
        case PUD_NODEIDTYPE_192:
                *nodeIdSize = PUD_NODEIDTYPE_192_BYTES;
                break;
@@ -355,6 +359,7 @@ size_t setPositionUpdateNodeInfo(int ipVersion,
        case PUD_NODEIDTYPE_MSISDN: /* an MSISDN number */
        case PUD_NODEIDTYPE_TETRA: /* a Tetra number */
        case PUD_NODEIDTYPE_MMSI: /* an AIS MMSI number */
+       case PUD_NODEIDTYPE_URN: /* a URN number */
        case PUD_NODEIDTYPE_192:
        case PUD_NODEIDTYPE_193:
        case PUD_NODEIDTYPE_194: