embox

Форк
0
/
skb_printer.c 
52 строки · 964.0 Байт
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

21
static void print_skb(struct sk_buff *skb) {
22
	int i, j;
23

24
	printf("**********\n");
25
	printf("dev %s\n", skb->dev->name);
26
	printf("eth type = %#X ", ntohs(skb->mac.ethh->h_proto));
27
	printf(": %u bytes\n", skb->len);
28

29
	printf("data:\n");
30
	for (i = 0; i < skb->len; i += 16) {
31
		for (j = 0; j < 16; j += 2) {
32
			printf("%02x%02x ",
33
				(uint8_t)skb->mac.raw[i + j],
34
				(uint8_t)skb->mac.raw[i + j + 1]);
35
		}
36
		printf("\n");
37
	}
38
	printf("\n");
39
}
40

41
static int handler(struct pnet_pack *pack) {
42
	struct sk_buff *skb;
43

44
	skb = (struct sk_buff *) pack->data;
45
	print_skb(skb);
46
	return NET_HND_FORWARD_DEFAULT;
47
}
48

49
PNET_NODE_DEF("skb printer", {
50
	.rx_hnd = handler,
51
	.tx_hnd = NULL
52
});
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.