mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
net: mctp: test: Add extaddr routing output test
Test that the routing code preserves the haddr data in a skb through an input route operation. Signed-off-by: Jeremy Kerr <jk@codeconstruct.com.au> Link: https://patch.msgid.link/20250702-dev-forwarding-v5-6-1468191da8a4@codeconstruct.com.au Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
96b341a8e7
commit
46ee16462f
1 changed files with 53 additions and 0 deletions
|
@ -1294,6 +1294,58 @@ static void mctp_test_route_output_key_create(struct kunit *test)
|
||||||
mctp_test_destroy_dev(dev);
|
mctp_test_destroy_dev(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mctp_test_route_extaddr_input(struct kunit *test)
|
||||||
|
{
|
||||||
|
static const unsigned char haddr[] = { 0xaa, 0x55 };
|
||||||
|
struct mctp_test_pktqueue tpq;
|
||||||
|
struct mctp_skb_cb *cb, *cb2;
|
||||||
|
const unsigned int len = 40;
|
||||||
|
struct mctp_test_dev *dev;
|
||||||
|
struct sk_buff *skb, *skb2;
|
||||||
|
struct mctp_dst dst;
|
||||||
|
struct mctp_hdr hdr;
|
||||||
|
struct socket *sock;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
hdr.ver = 1;
|
||||||
|
hdr.src = 10;
|
||||||
|
hdr.dest = 8;
|
||||||
|
hdr.flags_seq_tag = FL_S | FL_E | FL_TO;
|
||||||
|
|
||||||
|
__mctp_route_test_init(test, &dev, &dst, &tpq, &sock, MCTP_NET_ANY);
|
||||||
|
|
||||||
|
skb = mctp_test_create_skb(&hdr, len);
|
||||||
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, skb);
|
||||||
|
|
||||||
|
/* set our hardware addressing data */
|
||||||
|
cb = mctp_cb(skb);
|
||||||
|
memcpy(cb->haddr, haddr, sizeof(haddr));
|
||||||
|
cb->halen = sizeof(haddr);
|
||||||
|
|
||||||
|
mctp_test_skb_set_dev(skb, dev);
|
||||||
|
|
||||||
|
rc = mctp_dst_input(&dst, skb);
|
||||||
|
KUNIT_ASSERT_EQ(test, rc, 0);
|
||||||
|
|
||||||
|
mctp_test_dst_release(&dst, &tpq);
|
||||||
|
|
||||||
|
skb2 = skb_recv_datagram(sock->sk, MSG_DONTWAIT, &rc);
|
||||||
|
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, skb2);
|
||||||
|
KUNIT_ASSERT_EQ(test, skb2->len, len);
|
||||||
|
|
||||||
|
cb2 = mctp_cb(skb2);
|
||||||
|
|
||||||
|
/* Received SKB should have the hardware addressing as set above.
|
||||||
|
* We're likely to have the same actual cb here (ie., cb == cb2),
|
||||||
|
* but it's the comparison that we care about
|
||||||
|
*/
|
||||||
|
KUNIT_EXPECT_EQ(test, cb2->halen, sizeof(haddr));
|
||||||
|
KUNIT_EXPECT_MEMEQ(test, cb2->haddr, haddr, sizeof(haddr));
|
||||||
|
|
||||||
|
skb_free_datagram(sock->sk, skb2);
|
||||||
|
mctp_test_destroy_dev(dev);
|
||||||
|
}
|
||||||
|
|
||||||
static struct kunit_case mctp_test_cases[] = {
|
static struct kunit_case mctp_test_cases[] = {
|
||||||
KUNIT_CASE_PARAM(mctp_test_fragment, mctp_frag_gen_params),
|
KUNIT_CASE_PARAM(mctp_test_fragment, mctp_frag_gen_params),
|
||||||
KUNIT_CASE_PARAM(mctp_test_rx_input, mctp_rx_input_gen_params),
|
KUNIT_CASE_PARAM(mctp_test_rx_input, mctp_rx_input_gen_params),
|
||||||
|
@ -1310,6 +1362,7 @@ static struct kunit_case mctp_test_cases[] = {
|
||||||
KUNIT_CASE(mctp_test_fragment_flow),
|
KUNIT_CASE(mctp_test_fragment_flow),
|
||||||
KUNIT_CASE(mctp_test_route_output_key_create),
|
KUNIT_CASE(mctp_test_route_output_key_create),
|
||||||
KUNIT_CASE(mctp_test_route_input_cloned_frag),
|
KUNIT_CASE(mctp_test_route_input_cloned_frag),
|
||||||
|
KUNIT_CASE(mctp_test_route_extaddr_input),
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue