embox
1/**
2* @file
3*
4* @brief
5*
6* @date 03.04.2012
7* @author Anton Bondarev
8*/
9
10#include <stdio.h>11#include <pnet/core/core.h>12#include <pnet/core/node.h>13#include <pnet/core/repo.h>14#include <pnet/pack/pnet_pack.h>15
16#include <net/skbuff.h>17#include <net/netdevice.h>18
19#include <arpa/inet.h>20
21static void print_skb(struct sk_buff *skb) {22int i, j;23
24printf("**********\n");25printf("dev %s\n", skb->dev->name);26printf("eth type = %#X ", ntohs(skb->mac.ethh->h_proto));27printf(": %u bytes\n", skb->len);28
29printf("data:\n");30for (i = 0; i < skb->len; i += 16) {31for (j = 0; j < 16; j += 2) {32printf("%02x%02x ",33(uint8_t)skb->mac.raw[i + j],34(uint8_t)skb->mac.raw[i + j + 1]);35}36printf("\n");37}38printf("\n");39}
40
41static int handler(struct pnet_pack *pack) {42struct sk_buff *skb;43
44skb = (struct sk_buff *) pack->data;45print_skb(skb);46return NET_HND_FORWARD_DEFAULT;47}
48
49PNET_NODE_DEF("skb printer", {50.rx_hnd = handler,51.tx_hnd = NULL52});53