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

tc_l2_redirect_user.c (1345B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/* Copyright (c) 2016 Facebook
      3 */
      4#include <linux/unistd.h>
      5#include <linux/bpf.h>
      6
      7#include <stdlib.h>
      8#include <stdio.h>
      9#include <unistd.h>
     10#include <string.h>
     11#include <errno.h>
     12
     13#include <bpf/bpf.h>
     14
     15static void usage(void)
     16{
     17	printf("Usage: tc_l2_ipip_redirect [...]\n");
     18	printf("       -U <file>   Update an already pinned BPF array\n");
     19	printf("       -i <ifindex> Interface index\n");
     20	printf("       -h          Display this help\n");
     21}
     22
     23int main(int argc, char **argv)
     24{
     25	const char *pinned_file = NULL;
     26	int ifindex = -1;
     27	int array_key = 0;
     28	int array_fd = -1;
     29	int ret = -1;
     30	int opt;
     31
     32	while ((opt = getopt(argc, argv, "F:U:i:")) != -1) {
     33		switch (opt) {
     34		/* General args */
     35		case 'U':
     36			pinned_file = optarg;
     37			break;
     38		case 'i':
     39			ifindex = atoi(optarg);
     40			break;
     41		default:
     42			usage();
     43			goto out;
     44		}
     45	}
     46
     47	if (ifindex < 0 || !pinned_file) {
     48		usage();
     49		goto out;
     50	}
     51
     52	array_fd = bpf_obj_get(pinned_file);
     53	if (array_fd < 0) {
     54		fprintf(stderr, "bpf_obj_get(%s): %s(%d)\n",
     55			pinned_file, strerror(errno), errno);
     56		goto out;
     57	}
     58
     59	/* bpf_tunnel_key.remote_ipv4 expects host byte orders */
     60	ret = bpf_map_update_elem(array_fd, &array_key, &ifindex, 0);
     61	if (ret) {
     62		perror("bpf_map_update_elem");
     63		goto out;
     64	}
     65
     66out:
     67	if (array_fd != -1)
     68		close(array_fd);
     69	return ret;
     70}