sockex2_user.c (3eb66e91a25497065c5322b1268cbc3953642227) | sockex2_user.c (5c3cf87d477a461274452cb46f7654c5b6ae6294) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2#include <stdio.h> 3#include <assert.h> 4#include <linux/bpf.h> 5#include <bpf/bpf.h> 6#include "bpf_load.h" 7#include "sock_example.h" 8#include <unistd.h> --- 20 unchanged lines hidden (view full) --- 29 return 1; 30 } 31 32 sock = open_raw_sock("lo"); 33 34 assert(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, prog_fd, 35 sizeof(prog_fd[0])) == 0); 36 | 1// SPDX-License-Identifier: GPL-2.0 2#include <stdio.h> 3#include <assert.h> 4#include <linux/bpf.h> 5#include <bpf/bpf.h> 6#include "bpf_load.h" 7#include "sock_example.h" 8#include <unistd.h> --- 20 unchanged lines hidden (view full) --- 29 return 1; 30 } 31 32 sock = open_raw_sock("lo"); 33 34 assert(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, prog_fd, 35 sizeof(prog_fd[0])) == 0); 36 |
37 f = popen("ping -c5 localhost", "r"); | 37 f = popen("ping -4 -c5 localhost", "r"); |
38 (void) f; 39 40 for (i = 0; i < 5; i++) { 41 int key = 0, next_key; 42 struct pair value; 43 44 while (bpf_map_get_next_key(map_fd[0], &key, &next_key) == 0) { 45 bpf_map_lookup_elem(map_fd[0], &next_key, &value); 46 printf("ip %s bytes %lld packets %lld\n", 47 inet_ntoa((struct in_addr){htonl(next_key)}), 48 value.bytes, value.packets); 49 key = next_key; 50 } 51 sleep(1); 52 } 53 return 0; 54} | 38 (void) f; 39 40 for (i = 0; i < 5; i++) { 41 int key = 0, next_key; 42 struct pair value; 43 44 while (bpf_map_get_next_key(map_fd[0], &key, &next_key) == 0) { 45 bpf_map_lookup_elem(map_fd[0], &next_key, &value); 46 printf("ip %s bytes %lld packets %lld\n", 47 inet_ntoa((struct in_addr){htonl(next_key)}), 48 value.bytes, value.packets); 49 key = next_key; 50 } 51 sleep(1); 52 } 53 return 0; 54} |