PUD: add wireformat libraries
[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:    getClusterLeaderOriginator
47  * Signature: ()Ljava/net/InetAddress;
48  */
49 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderOriginator
50   (JNIEnv * env, jobject this) {
51         jobject dataObject;
52         jboolean isCopy;
53         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
54                         &isCopy);
55
56         jobject object;
57         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
58
59         union olsr_ip_addr * addr;
60         if (ipv4) {
61                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.originator;
62         } else {
63                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.originator;
64         }
65         constructIPAddress(env, ipv4, addr, &object);
66
67         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
68
69         return object;
70 }
71
72 /*
73  * Class:     org_olsr_plugin_pud_ClusterLeader
74  * Method:    getClusterLeaderClusterLeader
75  * Signature: ()Ljava/net/InetAddress;
76  */
77 JNIEXPORT jobject JNICALL Java_org_olsr_plugin_pud_ClusterLeader_getClusterLeaderClusterLeader
78   (JNIEnv * env, jobject this) {
79         jobject dataObject;
80         jboolean isCopy;
81         UplinkMessage * uplinkMessage = getUplinkMessage(env, this, &dataObject,
82                         &isCopy);
83
84         jobject object;
85         bool ipv4 = !getUplinkMessageIPv6(&uplinkMessage->header);
86
87         union olsr_ip_addr * addr;
88         if (ipv4) {
89                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v4.clusterLeader;
90         } else {
91                 addr = (union olsr_ip_addr *) &uplinkMessage->msg.clusterLeader.leader.v6.clusterLeader;
92         }
93         constructIPAddress(env, ipv4, addr, &object);
94
95         releaseUplinkMessage(env, uplinkMessage, dataObject, isCopy, JNI_ABORT);
96
97         return object;
98 }