PUD: update document
[olsrd.git] / lib / pud / wireformat-java / src / main / c / org_olsr_plugin_pud_ClusterLeader.c
1 #include "org_olsr_plugin_pud_ClusterLeader.h"
2 #include "util.h"
3
4 /*
5  * Class:     org_olsr_plugin_pud_ClusterLeader
6  * Method:    getClusterLeaderVersion
7  * Signature: ()I
8  */
9 JNIEXPORT jint JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderVersion
10   (JNIEnv * env, jobject this) {
11         jobject dataObject;
12         jboolean isCopy;
13         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
14                         &isCopy);
15
16         uint8_t version = getClusterLeaderVersion(
17                         getClusterLeaderMessage(uplinkMessage));
18
19         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
20
21         return (jint) version;
22 }
23
24 /*
25  * Class:     org_olsr_plugin_pud_ClusterLeader
26  * Method:    getClusterLeaderValidityTime
27  * Signature: ()J
28  */
29 JNIEXPORT jlong JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderValidityTime
30   (JNIEnv * env, jobject this) {
31         jobject dataObject;
32         jboolean isCopy;
33         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
34                         &isCopy);
35
36         unsigned long validityTime = getValidityTime(
37                         &getClusterLeaderMessage(uplinkMessage)->validityTime);
38
39         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
40
41         return (jlong) validityTime;
42 }
43
44 /*
45  * Class:     org_olsr_plugin_pud_ClusterLeader
46  * Method:    getClusterLeaderDownlinkPort
47  * Signature: ()I
48  */
49 JNIEXPORT jint JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderDownlinkPort
50   (JNIEnv * env, jobject this) {
51         jobject dataObject;
52         jboolean isCopy;
53         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
54                         &isCopy);
55
56         unsigned short downlinkPort = getClusterLeaderDownlinkPort(
57                         getClusterLeaderMessage(uplinkMessage));
58
59         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
60
61         return (jint) downlinkPort;
62 }
63
64 /*
65  * Class:     org_olsr_plugin_pud_ClusterLeader
66  * Method:    getClusterLeaderOriginator
67  * Signature: ()Ljava/net/InetAddress;
68  */
69 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderOriginator
70   (JNIEnv * env, jobject this) {
71         jobject dataObject;
72         jboolean isCopy;
73         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
74                         &isCopy);
75
76         jobject object;
77         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
78
79         union olsr_ip_addr * addr;
80         if (ipv4) {
81                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.originator;
82         } else {
83                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.originator;
84         }
85         constructIPAddress(env, ipv4, addr, &object);
86
87         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
88
89         return object;
90 }
91
92 /*
93  * Class:     org_olsr_plugin_pud_ClusterLeader
94  * Method:    getClusterLeaderClusterLeader
95  * Signature: ()Ljava/net/InetAddress;
96  */
97 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderClusterLeader
98   (JNIEnv * env, jobject this) {
99         jobject dataObject;
100         jboolean isCopy;
101         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
102                         &isCopy);
103
104         jobject object;
105         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
106
107         union olsr_ip_addr * addr;
108         if (ipv4) {
109                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.clusterLeader;
110         } else {
111                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.clusterLeader;
112         }
113         constructIPAddress(env, ipv4, addr, &object);
114
115         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
116
117         return object;
118 }