cregit-Linux how code gets into the kernel

Release 4.18 tools/testing/selftests/bpf/test_pkt_md_access.c

/* Copyright (c) 2017 Facebook
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 */
#include <stddef.h>
#include <string.h>
#include <linux/bpf.h>
#include <linux/pkt_cls.h>
#include "bpf_helpers.h"

int _version SEC("version") = 1;

#if  __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__

#define TEST_FIELD(TYPE, FIELD, MASK)					\
	{                                                               \
                TYPE tmp = *(volatile TYPE *)&skb->FIELD;               \
                if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK))   \
                        return TC_ACT_SHOT;                             \
        }
#else

#define TEST_FIELD_OFFSET(a, b)	((sizeof(a) - sizeof(b)) / sizeof(b))

#define TEST_FIELD(TYPE, FIELD, MASK)					\
	{                                                               \
                TYPE tmp = *((volatile TYPE *)&skb->FIELD +             \
                              TEST_FIELD_OFFSET(skb->FIELD, TYPE));     \
                if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK))   \
                        return TC_ACT_SHOT;                             \
        }
#endif

SEC("test1")

int process(struct __sk_buff *skb) { TEST_FIELD(__u8, len, 0xFF); TEST_FIELD(__u16, len, 0xFFFF); TEST_FIELD(__u32, len, 0xFFFFFFFF); TEST_FIELD(__u16, protocol, 0xFFFF); TEST_FIELD(__u32, protocol, 0xFFFFFFFF); TEST_FIELD(__u8, hash, 0xFF); TEST_FIELD(__u16, hash, 0xFFFF); TEST_FIELD(__u32, hash, 0xFFFFFFFF); return TC_ACT_OK; }

Contributors

PersonTokensPropCommitsCommitProp
Yonghong Song85100.00%1100.00%
Total85100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Yonghong Song12680.77%150.00%
Thomas Richter3019.23%150.00%
Total156100.00%2100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.