aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--arp.c12
-rw-r--r--packet.c1
2 files changed, 9 insertions, 4 deletions
diff --git a/arp.c b/arp.c
index 9f1fede..b3ac420 100644
--- a/arp.c
+++ b/arp.c
@@ -74,14 +74,20 @@ int arp(const struct ctx *c, const struct pool *p)
struct arphdr ah;
struct arpmsg am;
} __attribute__((__packed__)) resp;
+ struct arphdr ah_storage;
+ struct ethhdr eh_storage;
+ struct arpmsg am_storage;
const struct ethhdr *eh;
const struct arphdr *ah;
const struct arpmsg *am;
+ struct iov_tail data;
- eh = packet_get(p, 0, 0, sizeof(*eh), NULL);
- ah = packet_get(p, 0, sizeof(*eh), sizeof(*ah), NULL);
- am = packet_get(p, 0, sizeof(*eh) + sizeof(*ah), sizeof(*am), NULL);
+ if (!packet_data(p, 0, &data))
+ return -1;
+ eh = IOV_REMOVE_HEADER(&data, eh_storage);
+ ah = IOV_REMOVE_HEADER(&data, ah_storage);
+ am = IOV_REMOVE_HEADER(&data, am_storage);
if (!eh || !ah || !am)
return -1;
diff --git a/packet.c b/packet.c
index 82adc9f..34b1722 100644
--- a/packet.c
+++ b/packet.c
@@ -201,7 +201,6 @@ void *packet_get_do(const struct pool *p, const size_t idx,
* Return: false if packet index is invalid, true otherwise.
* If something wrong with @data, don't return at all (assert).
*/
-/* cppcheck-suppress unusedFunction */
bool packet_data_do(const struct pool *p, size_t idx,
struct iov_tail *data,
const char *func, int line)