PUD: add AIS MMSI nodeIdType
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 27 Sep 2011 10:16:34 +0000 (12:16 +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 01b7d83..a0269fa 100644 (file)
@@ -448,6 +448,7 @@ LoadPlugin "./lib/pud/olsrd_pud.so.1.0.0"
     #            (nodeId is not relevant)
     #        6 : IPv6 address (OLSR main address) of the sending node
     #            (nodeId is not relevant)
+    #        7 : an AIS MMSI number with 9 digits
     #      192 : a 7 digit number conforming to 'Nationaal Nummerplan
     #            Brandweer Nederland'
     #      193 : a 6 digit number conforming to 'Nationaal Nummerplan
index 782ca80..dd4e3ba 100755 (executable)
Binary files a/lib/pud/doc/pud.odt and b/lib/pud/doc/pud.odt differ
index e6cf8e3..22e6927 100644 (file)
@@ -186,6 +186,7 @@ int setNodeIdType(const char *value, void *data __attribute__ ((unused)),
                case PUD_NODEIDTYPE_DNS:
                case PUD_NODEIDTYPE_IPV4:
                case PUD_NODEIDTYPE_IPV6:
+               case PUD_NODEIDTYPE_MMSI:
                case PUD_NODEIDTYPE_192:
                case PUD_NODEIDTYPE_193:
                case PUD_NODEIDTYPE_194:
@@ -357,6 +358,12 @@ static bool setupNodeIdNumberForOlsrCacheAndValidate(NodeIdType nodeIdTypeNumber
                        return !invalidChars;
                }
 
+               case PUD_NODEIDTYPE_MMSI: /* an AIS MMSI number */
+                       min = 0LL;
+                       max = 999999999LL;
+                       bytes = PUD_NODEIDTYPE_MMSI_BYTES;
+                       break;
+
                case PUD_NODEIDTYPE_192:
                        min = 0LL;
                        max = 9999999LL;
index 66d0594..a2547a7 100644 (file)
@@ -48,6 +48,7 @@ public class WireFormatConstants {
        public static final int NODEIDTYPE_MAC_BYTES = PUD_NODEIDTYPE_MAC_BYTES;
        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_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 2e0108e..8e72f96 100644 (file)
@@ -143,6 +143,9 @@ typedef enum _NodeIdType {
        /** IPv6 address, 128 bits, 16 bytes */
        PUD_NODEIDTYPE_IPV6 = 6,
 
+       /** AIS MMSI number, 9 digits, 30 bits, 4 bytes */
+       PUD_NODEIDTYPE_MMSI = 7,
+
        /** Brandweer number, 7 digits, 24 bits, 3 bytes */
        PUD_NODEIDTYPE_192 = 192,
 
@@ -162,6 +165,9 @@ typedef enum _NodeIdType {
 /** the number of nodeId bytes for PUD_NODEIDTYPE_TETRA */
 #define PUD_NODEIDTYPE_TETRA_BYTES             8
 
+/** the number of nodeId bytes for PUD_NODEIDTYPE_MMSI */
+#define PUD_NODEIDTYPE_MMSI_BYTES              4
+
 /** the number of nodeId bytes for PUD_NODEIDTYPE_192 */
 #define PUD_NODEIDTYPE_192_BYTES               3
 
index 0f9d6d4..4f89e21 100644 (file)
@@ -148,6 +148,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_192:
        case PUD_NODEIDTYPE_193:
        case PUD_NODEIDTYPE_194:
index 9eb6328..b3fb627 100644 (file)
@@ -31,8 +31,9 @@ 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_192,
- PUD_NODEIDTYPE_193 (so basically for numbers that will not change) */
+ PUD_NODEIDTYPE_MSISDN, PUD_NODEIDTYPE_TETRA, PUD_NODEIDTYPE_MMSI,
+ PUD_NODEIDTYPE_192, PUD_NODEIDTYPE_193
+ (so basically for numbers that will not change) */
 static unsigned char cachedNodeIdBuffer[PUD_CACHED_NODEID_BUFFER_SIZE];
 
 /** The number of bytes stored in cachedNodeIdBuffer */
@@ -284,6 +285,10 @@ void getPositionUpdateNodeId(int ipVersion, union olsr_message * olsrMessage,
                 * subtract the string start address */
                break;
 
+       case PUD_NODEIDTYPE_MMSI: /* an AIS MMSI number */
+               *nodeIdSize = PUD_NODEIDTYPE_MMSI_BYTES;
+               break;
+
        case PUD_NODEIDTYPE_192:
                *nodeIdSize = PUD_NODEIDTYPE_192_BYTES;
                break;
@@ -349,6 +354,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_192:
        case PUD_NODEIDTYPE_193:
        case PUD_NODEIDTYPE_194: