]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Start of Sparc64 fixes.
authorRusty Russell <rusty@linuxcare.com.au>
Mon, 4 Sep 2000 05:00:09 +0000 (05:00 +0000)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 4 Sep 2000 05:00:09 +0000 (05:00 +0000)
include/libipq/ip_queue_64.h [new file with mode: 0644]

diff --git a/include/libipq/ip_queue_64.h b/include/libipq/ip_queue_64.h
new file mode 100644 (file)
index 0000000..2f14ad3
--- /dev/null
@@ -0,0 +1,61 @@
+/* Redefine everything for a 64-bit kernel on 32-bit userspace */
+
+/* Based on ip_queue.h by (C) 2000 James Morris, this code is GPL. */
+#ifndef _IP_QUEUE_H
+#define _IP_QUEUE_H
+
+#include <net/if.h>
+
+/* Messages sent from kernel */
+typedef struct ipq_packet_msg {
+       u_int64_t packet_id;    /* ID of queued packet */
+       u_int64_t mark;         /* Netfilter mark value */
+       s_int64_t timestamp_sec;        /* Packet arrival time (seconds) */
+       s_int64_t timestamp_usec;       /* Packet arrvial time (+useconds) */
+       unsigned int hook;              /* Netfilter hook we rode in on */
+       char indev_name[IFNAMSIZ];      /* Name of incoming interface */
+       char outdev_name[IFNAMSIZ];     /* Name of outgoing interface */
+       unsigned short hw_protocol;     /* Hardware protocol (network order) */
+       unsigned short hw_type;         /* Hardware type */
+       unsigned char hw_addrlen;       /* Hardware address length */
+       unsigned char hw_addr[8];       /* Hardware address */
+       u_int64_t data_len;             /* Length of packet data */
+       unsigned char payload[0];       /* Optional packet data */
+} ipq_packet_msg_t;
+
+/* Messages sent from userspace */
+typedef struct ipq_mode_msg {
+       unsigned char value;            /* Requested mode */
+       u_int64_t range;                /* Optional range of packet requested */
+} ipq_mode_msg_t;
+
+typedef struct ipq_verdict_msg {
+       unsigned int value;             /* Verdict to hand to netfilter */
+       u_int64_t id;           /* Packet ID for this verdict */
+       u_int64_t data_len;             /* Length of replacement data */
+       unsigned char payload[0];       /* Optional replacement packet */
+} ipq_verdict_msg_t;
+
+typedef struct ipq_peer_msg {
+       union {
+               ipq_verdict_msg_t verdict;
+               ipq_mode_msg_t mode;
+       } msg;
+} ipq_peer_msg_t;
+
+/* Packet delivery modes */
+enum {
+       IPQ_COPY_NONE,          /* Initial mode, packets are dropped */
+       IPQ_COPY_META,          /* Copy metadata */
+       IPQ_COPY_PACKET         /* Copy metadata + packet (range) */
+};
+#define IPQ_COPY_MAX IPQ_COPY_PACKET
+
+/* Types of messages */
+#define IPQM_BASE      0x10    /* standard netlink messages below this */
+#define IPQM_MODE      (IPQM_BASE + 1)         /* Mode request from peer */
+#define IPQM_VERDICT   (IPQM_BASE + 2)         /* Verdict from peer */ 
+#define IPQM_PACKET    (IPQM_BASE + 3)         /* Packet from kernel */
+#define IPQM_MAX       (IPQM_BASE + 4)
+
+#endif /*_IP_QUEUE_H*/