]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
decode: add PacketSetData funtion
authorEric Leblond <eric@regit.org>
Thu, 16 Feb 2012 16:46:53 +0000 (17:46 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 23 Feb 2012 15:29:45 +0000 (16:29 +0100)
This patch adds a function which can be used to set the payload
of a packet when a zero copy mode is used.

src/decode.c
src/decode.h

index 443e3091dd845925b044abe1118e3bc97ede3b8b..d345c840363c6e7a00fb06d43eb970479048b180 100644 (file)
@@ -345,6 +345,27 @@ inline int PacketCopyData(Packet *p, uint8_t *pktdata, int pktlen)
     SET_PKT_LEN(p, (size_t)pktlen);
     return PacketCopyDataOffset(p, 0, pktdata, pktlen);
 }
+
+
+/**
+ * \brief Set data for Packet and set length when zeo copy is used
+ *
+ *  \param Pointer to the Packet to modify
+ *  \param Pointer to the data
+ *  \param Length of the data
+ */
+inline int PacketSetData(Packet *p, uint8_t *pktdata, int pktlen)
+{
+    SET_PKT_LEN(p, (size_t)pktlen);
+    if (!pktdata) {
+        return -1;
+    }
+    p->ext_pkt = pktdata;
+    p->flags |= PKT_ZERO_COPY;
+
+    return 0;
+}
+
 /**
  * @}
  */
index ceff23f4d903db3256092d633d421a833a6e3ada..13a75afef2baf9ea11f6b660ff413c9b0fd1b8d4 100644 (file)
@@ -777,6 +777,7 @@ Packet *PacketPseudoPktSetup(Packet *parent, uint8_t *pkt, uint16_t len, uint8_t
 Packet *PacketGetFromQueueOrAlloc(void);
 Packet *PacketGetFromAlloc(void);
 int PacketCopyData(Packet *p, uint8_t *pktdata, int pktlen);
+int PacketSetData(Packet *p, uint8_t *pktdata, int pktlen);
 int PacketCopyDataOffset(Packet *p, int offset, uint8_t *data, int datalen);
 
 DecodeThreadVars *DecodeThreadVarsAlloc();