forked from mirrors/linux
		
	 2bf3e2ef42
			
		
	
	
		2bf3e2ef42
		
	
	
	
	
		
			
			There are two files in the tree called libbpf.h which is becoming problematic. Most samples don't actually need the local libbpf.h they simply include it to get to bpf/bpf.h. Include bpf/bpf.h directly instead. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Acked-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			814 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			814 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #include <stdlib.h>
 | |
| #include <stdio.h>
 | |
| #include <linux/unistd.h>
 | |
| #include <unistd.h>
 | |
| #include <string.h>
 | |
| #include <errno.h>
 | |
| #include <linux/if_ether.h>
 | |
| #include <net/if.h>
 | |
| #include <linux/if_packet.h>
 | |
| #include <arpa/inet.h>
 | |
| 
 | |
| static inline int open_raw_sock(const char *name)
 | |
| {
 | |
| 	struct sockaddr_ll sll;
 | |
| 	int sock;
 | |
| 
 | |
| 	sock = socket(PF_PACKET, SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC, htons(ETH_P_ALL));
 | |
| 	if (sock < 0) {
 | |
| 		printf("cannot create raw socket\n");
 | |
| 		return -1;
 | |
| 	}
 | |
| 
 | |
| 	memset(&sll, 0, sizeof(sll));
 | |
| 	sll.sll_family = AF_PACKET;
 | |
| 	sll.sll_ifindex = if_nametoindex(name);
 | |
| 	sll.sll_protocol = htons(ETH_P_ALL);
 | |
| 	if (bind(sock, (struct sockaddr *)&sll, sizeof(sll)) < 0) {
 | |
| 		printf("bind to %s: %s\n", name, strerror(errno));
 | |
| 		close(sock);
 | |
| 		return -1;
 | |
| 	}
 | |
| 
 | |
| 	return sock;
 | |
| }
 |