Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Two cases of overlapping changes, nothing fancy. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -54,7 +54,7 @@ struct sr6_tlv_t {
|
||||
unsigned char value[0];
|
||||
} BPF_PACKET_HEADER;
|
||||
|
||||
__attribute__((always_inline)) struct ip6_srh_t *get_srh(struct __sk_buff *skb)
|
||||
static __always_inline struct ip6_srh_t *get_srh(struct __sk_buff *skb)
|
||||
{
|
||||
void *cursor, *data_end;
|
||||
struct ip6_srh_t *srh;
|
||||
@@ -88,7 +88,7 @@ __attribute__((always_inline)) struct ip6_srh_t *get_srh(struct __sk_buff *skb)
|
||||
return srh;
|
||||
}
|
||||
|
||||
__attribute__((always_inline))
|
||||
static __always_inline
|
||||
int update_tlv_pad(struct __sk_buff *skb, uint32_t new_pad,
|
||||
uint32_t old_pad, uint32_t pad_off)
|
||||
{
|
||||
@@ -118,7 +118,7 @@ int update_tlv_pad(struct __sk_buff *skb, uint32_t new_pad,
|
||||
return 0;
|
||||
}
|
||||
|
||||
__attribute__((always_inline))
|
||||
static __always_inline
|
||||
int is_valid_tlv_boundary(struct __sk_buff *skb, struct ip6_srh_t *srh,
|
||||
uint32_t *tlv_off, uint32_t *pad_size,
|
||||
uint32_t *pad_off)
|
||||
@@ -177,7 +177,7 @@ int is_valid_tlv_boundary(struct __sk_buff *skb, struct ip6_srh_t *srh,
|
||||
return 0;
|
||||
}
|
||||
|
||||
__attribute__((always_inline))
|
||||
static __always_inline
|
||||
int add_tlv(struct __sk_buff *skb, struct ip6_srh_t *srh, uint32_t tlv_off,
|
||||
struct sr6_tlv_t *itlv, uint8_t tlv_size)
|
||||
{
|
||||
@@ -221,7 +221,7 @@ int add_tlv(struct __sk_buff *skb, struct ip6_srh_t *srh, uint32_t tlv_off,
|
||||
return update_tlv_pad(skb, new_pad, pad_size, pad_off);
|
||||
}
|
||||
|
||||
__attribute__((always_inline))
|
||||
static __always_inline
|
||||
int delete_tlv(struct __sk_buff *skb, struct ip6_srh_t *srh,
|
||||
uint32_t tlv_off)
|
||||
{
|
||||
@@ -259,7 +259,7 @@ int delete_tlv(struct __sk_buff *skb, struct ip6_srh_t *srh,
|
||||
return update_tlv_pad(skb, new_pad, pad_size, pad_off);
|
||||
}
|
||||
|
||||
__attribute__((always_inline))
|
||||
static __always_inline
|
||||
int has_egr_tlv(struct __sk_buff *skb, struct ip6_srh_t *srh)
|
||||
{
|
||||
int tlv_offset = sizeof(struct ip6_t) + sizeof(struct ip6_srh_t) +
|
||||
|
@@ -90,6 +90,91 @@
|
||||
},
|
||||
.result = ACCEPT,
|
||||
},
|
||||
{
|
||||
"lsh64 by 0 imm",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 1),
|
||||
BPF_ALU64_IMM(BPF_LSH, BPF_REG_1, 0),
|
||||
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"rsh64 by 0 imm",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),
|
||||
BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),
|
||||
BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 0),
|
||||
BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"arsh64 by 0 imm",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),
|
||||
BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),
|
||||
BPF_ALU64_IMM(BPF_ARSH, BPF_REG_1, 0),
|
||||
BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"lsh64 by 0 reg",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 1),
|
||||
BPF_LD_IMM64(BPF_REG_2, 0),
|
||||
BPF_ALU64_REG(BPF_LSH, BPF_REG_1, BPF_REG_2),
|
||||
BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 1, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"rsh64 by 0 reg",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),
|
||||
BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),
|
||||
BPF_LD_IMM64(BPF_REG_3, 0),
|
||||
BPF_ALU64_REG(BPF_RSH, BPF_REG_1, BPF_REG_3),
|
||||
BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"arsh64 by 0 reg",
|
||||
.insns = {
|
||||
BPF_LD_IMM64(BPF_REG_0, 1),
|
||||
BPF_LD_IMM64(BPF_REG_1, 0x100000000LL),
|
||||
BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1),
|
||||
BPF_LD_IMM64(BPF_REG_3, 0),
|
||||
BPF_ALU64_REG(BPF_ARSH, BPF_REG_1, BPF_REG_3),
|
||||
BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
|
||||
BPF_MOV64_IMM(BPF_REG_0, 2),
|
||||
BPF_EXIT_INSN(),
|
||||
},
|
||||
.result = ACCEPT,
|
||||
.retval = 1,
|
||||
},
|
||||
{
|
||||
"invalid 64-bit BPF_END",
|
||||
.insns = {
|
||||
|
@@ -28,3 +28,4 @@ CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NET_SCH_FQ=m
|
||||
CONFIG_NET_SCH_ETF=m
|
||||
CONFIG_TEST_BLACKHOLE_DEV=m
|
||||
CONFIG_KALLSYMS=y
|
||||
|
@@ -21,12 +21,16 @@ fi
|
||||
echo "--------------------"
|
||||
echo "running psock_tpacket test"
|
||||
echo "--------------------"
|
||||
./in_netns.sh ./psock_tpacket
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "[FAIL]"
|
||||
ret=1
|
||||
if [ -f /proc/kallsyms ]; then
|
||||
./in_netns.sh ./psock_tpacket
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "[FAIL]"
|
||||
ret=1
|
||||
else
|
||||
echo "[PASS]"
|
||||
fi
|
||||
else
|
||||
echo "[PASS]"
|
||||
echo "[SKIP] CONFIG_KALLSYMS not enabled"
|
||||
fi
|
||||
|
||||
echo "--------------------"
|
||||
|
@@ -644,6 +644,32 @@ TEST_F(tls, poll_wait)
|
||||
EXPECT_EQ(recv(self->cfd, recv_mem, send_len, MSG_WAITALL), send_len);
|
||||
}
|
||||
|
||||
TEST_F(tls, poll_wait_split)
|
||||
{
|
||||
struct pollfd fd = { 0, 0, 0 };
|
||||
char send_mem[20] = {};
|
||||
char recv_mem[15];
|
||||
|
||||
fd.fd = self->cfd;
|
||||
fd.events = POLLIN;
|
||||
/* Send 20 bytes */
|
||||
EXPECT_EQ(send(self->fd, send_mem, sizeof(send_mem), 0),
|
||||
sizeof(send_mem));
|
||||
/* Poll with inf. timeout */
|
||||
EXPECT_EQ(poll(&fd, 1, -1), 1);
|
||||
EXPECT_EQ(fd.revents & POLLIN, 1);
|
||||
EXPECT_EQ(recv(self->cfd, recv_mem, sizeof(recv_mem), MSG_WAITALL),
|
||||
sizeof(recv_mem));
|
||||
|
||||
/* Now the remaining 5 bytes of record data are in TLS ULP */
|
||||
fd.fd = self->cfd;
|
||||
fd.events = POLLIN;
|
||||
EXPECT_EQ(poll(&fd, 1, -1), 1);
|
||||
EXPECT_EQ(fd.revents & POLLIN, 1);
|
||||
EXPECT_EQ(recv(self->cfd, recv_mem, sizeof(recv_mem), 0),
|
||||
sizeof(send_mem) - sizeof(recv_mem));
|
||||
}
|
||||
|
||||
TEST_F(tls, blocking)
|
||||
{
|
||||
size_t data = 100000;
|
||||
|
@@ -113,7 +113,7 @@ static int setup_tx(char **ring)
|
||||
|
||||
*ring = mmap(0, req.tp_block_size * req.tp_block_nr,
|
||||
PROT_READ | PROT_WRITE, MAP_SHARED, fdt, 0);
|
||||
if (!*ring)
|
||||
if (*ring == MAP_FAILED)
|
||||
error(1, errno, "mmap");
|
||||
|
||||
return fdt;
|
||||
|
@@ -257,6 +257,29 @@ check_exceptions()
|
||||
return $lret
|
||||
}
|
||||
|
||||
check_hthresh_repeat()
|
||||
{
|
||||
local log=$1
|
||||
i=0
|
||||
|
||||
for i in $(seq 1 10);do
|
||||
ip -net ns1 xfrm policy update src e000:0001::0000 dst ff01::0014:0000:0001 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break
|
||||
ip -net ns1 xfrm policy set hthresh6 0 28 || break
|
||||
|
||||
ip -net ns1 xfrm policy update src e000:0001::0000 dst ff01::01 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break
|
||||
ip -net ns1 xfrm policy set hthresh6 0 28 || break
|
||||
done
|
||||
|
||||
if [ $i -ne 10 ] ;then
|
||||
echo "FAIL: $log" 1>&2
|
||||
ret=1
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "PASS: $log"
|
||||
return 0
|
||||
}
|
||||
|
||||
#check for needed privileges
|
||||
if [ "$(id -u)" -ne 0 ];then
|
||||
echo "SKIP: Need root privileges"
|
||||
@@ -404,7 +427,9 @@ for n in ns3 ns4;do
|
||||
ip -net $n xfrm policy set hthresh4 32 32 hthresh6 128 128
|
||||
sleep $((RANDOM%5))
|
||||
done
|
||||
check_exceptions "exceptions and block policies after hresh change to normal"
|
||||
check_exceptions "exceptions and block policies after htresh change to normal"
|
||||
|
||||
check_hthresh_repeat "policies with repeated htresh change"
|
||||
|
||||
for i in 1 2 3 4;do ip netns del ns$i;done
|
||||
|
||||
|
@@ -44,6 +44,25 @@
|
||||
"$TC qdisc del dev $DEV1 clsact"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2ff3",
|
||||
"name": "Add flower with max handle and then dump it",
|
||||
"category": [
|
||||
"filter",
|
||||
"flower"
|
||||
],
|
||||
"setup": [
|
||||
"$TC qdisc add dev $DEV2 ingress"
|
||||
],
|
||||
"cmdUnderTest": "$TC filter add dev $DEV2 protocol ip pref 1 parent ffff: handle 0xffffffff flower action ok",
|
||||
"expExitCode": "0",
|
||||
"verifyCmd": "$TC filter show dev $DEV2 ingress",
|
||||
"matchPattern": "filter protocol ip pref 1 flower.*handle 0xffffffff",
|
||||
"matchCount": "1",
|
||||
"teardown": [
|
||||
"$TC qdisc del dev $DEV2 ingress"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "d052",
|
||||
"name": "Add 1M filters with the same action",
|
||||
|
Reference in New Issue
Block a user