cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sock_example.h (814B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <stdlib.h>
      3#include <stdio.h>
      4#include <linux/unistd.h>
      5#include <unistd.h>
      6#include <string.h>
      7#include <errno.h>
      8#include <linux/if_ether.h>
      9#include <net/if.h>
     10#include <linux/if_packet.h>
     11#include <arpa/inet.h>
     12
     13static inline int open_raw_sock(const char *name)
     14{
     15	struct sockaddr_ll sll;
     16	int sock;
     17
     18	sock = socket(PF_PACKET, SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC, htons(ETH_P_ALL));
     19	if (sock < 0) {
     20		printf("cannot create raw socket\n");
     21		return -1;
     22	}
     23
     24	memset(&sll, 0, sizeof(sll));
     25	sll.sll_family = AF_PACKET;
     26	sll.sll_ifindex = if_nametoindex(name);
     27	sll.sll_protocol = htons(ETH_P_ALL);
     28	if (bind(sock, (struct sockaddr *)&sll, sizeof(sll)) < 0) {
     29		printf("bind to %s: %s\n", name, strerror(errno));
     30		close(sock);
     31		return -1;
     32	}
     33
     34	return sock;
     35}