1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
%module nfqueue
%{
#include <nfq.h>
#include <nfq_common.h>
#include <exception.h>
%}
%include exception.i
#if defined(SWIGPYTHON)
%include python/libnetfilter_queue_python.i
#elif defined(SWIGPERL)
%include perl/libnetfilter_queue_perl.i
#endif
%extend queue {
%exception {
char *err;
clear_exception();
$action
if ((err = check_exception())) {
SWIG_exception(SWIG_RuntimeError, err);
}
}
int open();
void close();
int bind(int);
int unbind(int);
int create_queue(int);
int fast_open(int, int);
int set_queue_maxlen(int);
int try_run();
int get_fd();
int set_mode(int);
int process_pending(int=0);
};
%extend payload {
int get_nfmark();
int get_indev();
int get_outdev();
unsigned int get_length(void) {
return self->len;
}
int set_verdict(int d) {
return nfq_set_verdict(self->qh, self->id, d, 0, NULL);
}
int set_verdict_mark(int d, int mark) {
return nfq_set_verdict_mark(self->qh, self->id, d, htonl(mark), 0, NULL);
}
int set_verdict_modified(int d, char *new_payload, int new_len) {
return nfq_set_verdict(self->qh, self->id, d, new_len, new_payload);
}
int set_verdict_mark_modified(int d, int mark, char *new_payload, int new_len) {
return nfq_set_verdict_mark(self->qh, self->id, d, htonl(mark), new_len, new_payload);
}
};
%include "nfq.h"
%include "nfq_constants.h"
const char * nfq_bindings_version(void);
|