1+ /*
2+ * Copyright (C) 2022 - 2023 Elytrium
3+ *
4+ * This program is free software: you can redistribute it and/or modify
5+ * it under the terms of the GNU Affero General Public License as published by
6+ * the Free Software Foundation, either version 3 of the License, or
7+ * (at your option) any later version.
8+ *
9+ * This program is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ * GNU Affero General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Affero General Public License
15+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16+ */
17+
18+ #include <jni.h>
19+ #include <pcap/pcap.h>
20+
21+ JNIEXPORT jboolean JNICALL JavaCritical_net_elytrium_pcap_PcapNative_isJavaCritical () {
22+ return 1 ;
23+ }
24+
25+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_activate (jlong handle ) {
26+ return pcap_activate ((pcap_t * ) handle );
27+ }
28+
29+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_freeAllDevs (jlong handle ) {
30+ pcap_freealldevs ((pcap_if_t * ) handle );
31+ }
32+
33+ JNIEXPORT jlong JNICALL JavaCritical_net_elytrium_pcap_PcapNative_openDead (jint linktype , jint snaplen ) {
34+ return (jlong ) pcap_open_dead (linktype , snaplen );
35+ }
36+
37+ JNIEXPORT jlong JNICALL JavaCritical_net_elytrium_pcap_PcapNative_openDeadWithTstampPrecision (jint linktype , jint snaplen , jint precision ) {
38+ return (jlong ) pcap_open_dead_with_tstamp_precision (linktype , snaplen , precision );
39+ }
40+
41+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_close (jlong handle ) {
42+ pcap_close ((pcap_t * ) handle );
43+ }
44+
45+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setSnaplen (jlong handle , jint snaplen ) {
46+ return pcap_set_snaplen ((pcap_t * ) handle , snaplen );
47+ }
48+
49+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_snapshot (jlong handle ) {
50+ return pcap_snapshot ((pcap_t * ) handle );
51+ }
52+
53+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setPromisc (jlong handle , jint promisc ) {
54+ return pcap_set_promisc ((pcap_t * ) handle , promisc );
55+ }
56+
57+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setProtocolLinux (jlong handle , jint protocol ) {
58+ return pcap_set_protocol_linux ((pcap_t * ) handle , protocol );
59+ }
60+
61+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setRfmon (jlong handle , jint rfmon ) {
62+ return pcap_set_rfmon ((pcap_t * ) handle , rfmon );
63+ }
64+
65+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_canSetRfmon (jlong handle ) {
66+ return pcap_can_set_rfmon ((pcap_t * ) handle );
67+ }
68+
69+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setTimeout (jlong handle , jint ms ) {
70+ return pcap_set_timeout ((pcap_t * ) handle , ms );
71+ }
72+
73+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setImmediateMode (jlong handle , jint immediateMode ) {
74+ return pcap_set_immediate_mode ((pcap_t * ) handle , immediateMode );
75+ }
76+
77+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setBufferSize (jlong handle , jint bufferSize ) {
78+ return pcap_set_buffer_size ((pcap_t * ) handle , bufferSize );
79+ }
80+
81+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setTstampType (jlong handle , jint tstampType ) {
82+ return pcap_set_tstamp_type ((pcap_t * ) handle , tstampType );
83+ }
84+
85+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_freeTstampTypes (jlong address ) {
86+ pcap_free_tstamp_types ((int * ) address );
87+ }
88+
89+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setTstampPrecision (jlong handle , jint tstampPrecision ) {
90+ return pcap_set_tstamp_precision ((pcap_t * ) handle , tstampPrecision );
91+ }
92+
93+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_getTstampPrecision (jlong handle ) {
94+ return pcap_get_tstamp_precision ((pcap_t * ) handle );
95+ }
96+
97+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_datalink (jlong handle ) {
98+ return pcap_datalink ((pcap_t * ) handle );
99+ }
100+
101+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_file (jlong handle ) {
102+ FILE * file = pcap_file ((pcap_t * ) handle );
103+ if (file ) {
104+ return fileno (file );
105+ } else {
106+ return 0 ;
107+ }
108+ }
109+
110+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_isSwapped (jlong handle ) {
111+ return pcap_is_swapped ((pcap_t * ) handle );
112+ }
113+
114+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_majorVersion (jlong handle ) {
115+ return pcap_major_version ((pcap_t * ) handle );
116+ }
117+
118+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_minorVersion (jlong handle ) {
119+ return pcap_minor_version ((pcap_t * ) handle );
120+ }
121+
122+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_freeDatalinks (jlong datalinks ) {
123+ pcap_free_datalinks ((int * ) datalinks );
124+ }
125+
126+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_breakLoop (jlong handle ) {
127+ pcap_breakloop ((pcap_t * ) handle );
128+ }
129+
130+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_stats (jlong handle , jlong stats ) {
131+ return pcap_stats ((pcap_t * ) handle , (struct pcap_stat * ) stats );
132+ }
133+
134+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setFilter (jlong handle , jlong program ) {
135+ return pcap_setfilter ((pcap_t * ) handle , (struct bpf_program * ) program );
136+ }
137+
138+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setDirection (jlong handle , jint direction ) {
139+ return pcap_setdirection ((pcap_t * ) handle , direction );
140+ }
141+
142+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_freeCode (jlong handle ) {
143+ pcap_freecode ((struct bpf_program * ) handle );
144+ }
145+
146+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_setDatalink (jlong handle , jint datalink ) {
147+ return pcap_set_datalink ((pcap_t * ) handle , datalink );
148+ }
149+
150+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_fileno (jlong handle ) {
151+ return pcap_fileno ((pcap_t * ) handle );
152+ }
153+
154+ JNIEXPORT jlong JNICALL JavaCritical_net_elytrium_pcap_PcapNative_dumpFtell (jlong handle ) {
155+ return pcap_dump_ftell ((pcap_dumper_t * ) handle );
156+ }
157+
158+ JNIEXPORT jint JNICALL JavaCritical_net_elytrium_pcap_PcapNative_dumpFlush (jlong handle ) {
159+ return pcap_dump_flush ((pcap_dumper_t * ) handle );
160+ }
161+
162+ JNIEXPORT void JNICALL JavaCritical_net_elytrium_pcap_PcapNative_dumpClose (jlong handle ) {
163+ pcap_dump_close ((pcap_dumper_t * ) handle );
164+ }
0 commit comments