]> The Tcpdump Group git mirrors - libpcap/blobdiff - rpcap-protocol.h
Update config.{guess,sub}, timestamps 2023-01-01,2023-01-21
[libpcap] / rpcap-protocol.h
index 07f02cc7c68564ca13541b1f43ebc5eee5573bfc..a93b0a8b432805708ecd36a83518a483b1d973c5 100644 (file)
  * XXX - use the C99 types?  Microsoft's newer versions of Visual Studio
  * support them.
  */
+#ifndef __HAIKU__
 typedef unsigned char uint8;   /* 8-bit unsigned integer */
 typedef unsigned short uint16; /* 16-bit unsigned integer */
 typedef unsigned int uint32;   /* 32-bit unsigned integer */
 typedef int int32;             /* 32-bit signed integer */
+#endif
 
 /* Common header for all the RPCAP messages */
 struct rpcap_header
@@ -154,6 +156,25 @@ struct rpcap_header
  * Older servers don't provide this; they support only version 0.
  */
 struct rpcap_authreply
+{
+       uint8 minvers;                  /* Minimum version supported */
+       uint8 maxvers;                  /* Maximum version supported */
+       uint8 pad[2];                   /* Pad to 4-byte boundary **/
+       uint32 byte_order_magic;        /* RPCAP_BYTE_ORDER_MAGIC, in server byte order */
+};
+
+/*
+ * Any resemblance between this and the pcap file magic number
+ * is purely coincidental, trust me.
+ */
+#define RPCAP_BYTE_ORDER_MAGIC         0xa1b2c3d4U
+#define RPCAP_BYTE_ORDER_MAGIC_SWAPPED 0xd4c3b2a1U
+
+/*
+ * Older version of authentication reply, without byte order indication
+ * and padding.
+ */
+struct rpcap_authreply_old
 {
        uint8 minvers;  /* Minimum version supported */
        uint8 maxvers;  /* Maximum version supported */
@@ -294,7 +315,7 @@ struct rpcap_pkthdr
        uint32 timestamp_sec;   /* 'struct timeval' compatible, it represents the 'tv_sec' field */
        uint32 timestamp_usec;  /* 'struct timeval' compatible, it represents the 'tv_usec' field */
        uint32 caplen;          /* Length of portion present in the capture */
-       uint32 len;             /* Real length this packet (off wire) */
+       uint32 len;             /* Real length of this packet (off wire) */
        uint32 npkt;            /* Ordinal number of the packet (i.e. the first one captured has '1', the second one '2', etc) */
 };
 
@@ -306,7 +327,7 @@ struct rpcap_filter
        uint32 nitems;          /* Number of items contained into the filter (e.g. BPF instructions for BPF filters) */
 };
 
-/* Structure that keeps a single BPF instuction; it is repeated 'ninsn' times according to the 'rpcap_filterbpf' header */
+/* Structure that keeps a single BPF instruction; it is repeated 'ninsn' times according to the 'rpcap_filterbpf' header */
 struct rpcap_filterbpf_insn
 {
        uint16 code;    /* opcode of the instruction */
@@ -350,17 +371,17 @@ struct rpcap_sampling
  */
 #define RPCAP_MSG_IS_REPLY             0x080   /* Flag indicating a reply */
 
-#define RPCAP_MSG_ERROR                        1       /* Message that keeps an error notification */
-#define RPCAP_MSG_FINDALLIF_REQ                2       /* Request to list all the remote interfaces */
-#define RPCAP_MSG_OPEN_REQ             3       /* Request to open a remote device */
-#define RPCAP_MSG_STARTCAP_REQ         4       /* Request to start a capture on a remote device */
-#define RPCAP_MSG_UPDATEFILTER_REQ     5       /* Send a compiled filter into the remote device */
-#define RPCAP_MSG_CLOSE                        6       /* Close the connection with the remote peer */
-#define RPCAP_MSG_PACKET               7       /* This is a 'data' message, which carries a network packet */
-#define RPCAP_MSG_AUTH_REQ             8       /* Message that keeps the authentication parameters */
-#define RPCAP_MSG_STATS_REQ            9       /* It requires to have network statistics */
-#define RPCAP_MSG_ENDCAP_REQ           10      /* Stops the current capture, keeping the device open */
-#define RPCAP_MSG_SETSAMPLING_REQ      11      /* Set sampling parameters */
+#define RPCAP_MSG_ERROR                        0x01    /* Message that keeps an error notification */
+#define RPCAP_MSG_FINDALLIF_REQ                0x02    /* Request to list all the remote interfaces */
+#define RPCAP_MSG_OPEN_REQ             0x03    /* Request to open a remote device */
+#define RPCAP_MSG_STARTCAP_REQ         0x04    /* Request to start a capture on a remote device */
+#define RPCAP_MSG_UPDATEFILTER_REQ     0x05    /* Send a compiled filter into the remote device */
+#define RPCAP_MSG_CLOSE                        0x06    /* Close the connection with the remote peer */
+#define RPCAP_MSG_PACKET               0x07    /* This is a 'data' message, which carries a network packet */
+#define RPCAP_MSG_AUTH_REQ             0x08    /* Message that keeps the authentication parameters */
+#define RPCAP_MSG_STATS_REQ            0x09    /* It requires to have network statistics */
+#define RPCAP_MSG_ENDCAP_REQ           0x0A    /* Stops the current capture, keeping the device open */
+#define RPCAP_MSG_SETSAMPLING_REQ      0x0B    /* Set sampling parameters */
 
 #define RPCAP_MSG_FINDALLIF_REPLY      (RPCAP_MSG_FINDALLIF_REQ | RPCAP_MSG_IS_REPLY)          /* Keeps the list of all the remote interfaces */
 #define RPCAP_MSG_OPEN_REPLY           (RPCAP_MSG_OPEN_REQ | RPCAP_MSG_IS_REPLY)               /* The remote device has been opened correctly */