PUD: remove downlinkPort from UplinkClusterLeader
[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 #include <arpa/inet.h>
4 #include <stdbool.h>
5
6 /*
7  * Class:     org_olsr_plugin_pud_ClusterLeader
8  * Method:    getClusterLeaderVersion
9  * Signature: ()I
10  */
11 JNIEXPORT jint JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderVersion
12   (JNIEnv * env, jobject this) {
13         jobject dataObject;
14         jboolean isCopy;
15         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
16                         &isCopy);
17
18         uint8_t version = getClusterLeaderVersion(
19                         getClusterLeaderMessage(uplinkMessage));
20
21         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
22
23         return (jint) version;
24 }
25
26 /*
27  * Class:     org_olsr_plugin_pud_ClusterLeader
28  * Method:    getClusterLeaderValidityTime
29  * Signature: ()J
30  */
31 JNIEXPORT jlong JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderValidityTime
32   (JNIEnv * env, jobject this) {
33         jobject dataObject;
34         jboolean isCopy;
35         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
36                         &isCopy);
37
38         unsigned long validityTime = getValidityTime(
39                         &getClusterLeaderMessage(uplinkMessage)->validityTime);
40
41         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
42
43         return (jlong) validityTime;
44 }
45
46 /*
47  * Class:     org_olsr_plugin_pud_ClusterLeader
48  * Method:    getClusterLeaderOriginator
49  * Signature: ()Ljava/net/InetAddress;
50  */
51 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderOriginator
52   (JNIEnv * env, jobject this) {
53         jobject dataObject;
54         jboolean isCopy;
55         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
56                         &isCopy);
57
58         jobject object;
59         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
60
61         union olsr_ip_addr * addr;
62         if (ipv4) {
63                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.originator;
64         } else {
65                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.originator;
66         }
67         constructIPAddress(env, ipv4, addr, &object);
68
69         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
70
71         return object;
72 }
73
74 /*
75  * Class:     org_olsr_plugin_pud_ClusterLeader
76  * Method:    getClusterLeaderClusterLeader
77  * Signature: ()Ljava/net/InetAddress;
78  */
79 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderClusterLeader
80   (JNIEnv * env, jobject this) {
81         jobject dataObject;
82         jboolean isCopy;
83         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
84                         &isCopy);
85
86         jobject object;
87         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
88
89         union olsr_ip_addr * addr;
90         if (ipv4) {
91                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.clusterLeader;
92         } else {
93                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.clusterLeader;
94         }
95         constructIPAddress(env, ipv4, addr, &object);
96
97         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
98
99         return object;
100 }