Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2
3#ifndef _UAPI_LINUX_MRP_BRIDGE_H_
4#define _UAPI_LINUX_MRP_BRIDGE_H_
5
6#include <linux/types.h>
7#include <linux/if_ether.h>
8
9#define MRP_MAX_FRAME_LENGTH 200
10#define MRP_DEFAULT_PRIO 0x8000
11#define MRP_DOMAIN_UUID_LENGTH 16
12#define MRP_VERSION 1
13#define MRP_FRAME_PRIO 7
14#define MRP_OUI_LENGTH 3
15#define MRP_MANUFACTURE_DATA_LENGTH 2
16
17enum br_mrp_ring_role_type {
18 BR_MRP_RING_ROLE_DISABLED,
19 BR_MRP_RING_ROLE_MRC,
20 BR_MRP_RING_ROLE_MRM,
21 BR_MRP_RING_ROLE_MRA,
22};
23
24enum br_mrp_ring_state_type {
25 BR_MRP_RING_STATE_OPEN,
26 BR_MRP_RING_STATE_CLOSED,
27};
28
29enum br_mrp_port_state_type {
30 BR_MRP_PORT_STATE_DISABLED,
31 BR_MRP_PORT_STATE_BLOCKED,
32 BR_MRP_PORT_STATE_FORWARDING,
33 BR_MRP_PORT_STATE_NOT_CONNECTED,
34};
35
36enum br_mrp_port_role_type {
37 BR_MRP_PORT_ROLE_PRIMARY,
38 BR_MRP_PORT_ROLE_SECONDARY,
39};
40
41enum br_mrp_tlv_header_type {
42 BR_MRP_TLV_HEADER_END = 0x0,
43 BR_MRP_TLV_HEADER_COMMON = 0x1,
44 BR_MRP_TLV_HEADER_RING_TEST = 0x2,
45 BR_MRP_TLV_HEADER_RING_TOPO = 0x3,
46 BR_MRP_TLV_HEADER_RING_LINK_DOWN = 0x4,
47 BR_MRP_TLV_HEADER_RING_LINK_UP = 0x5,
48 BR_MRP_TLV_HEADER_OPTION = 0x7f,
49};
50
51enum br_mrp_sub_tlv_header_type {
52 BR_MRP_SUB_TLV_HEADER_TEST_MGR_NACK = 0x1,
53 BR_MRP_SUB_TLV_HEADER_TEST_PROPAGATE = 0x2,
54 BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR = 0x3,
55};
56
57struct br_mrp_tlv_hdr {
58 __u8 type;
59 __u8 length;
60};
61
62struct br_mrp_sub_tlv_hdr {
63 __u8 type;
64 __u8 length;
65};
66
67struct br_mrp_end_hdr {
68 struct br_mrp_tlv_hdr hdr;
69};
70
71struct br_mrp_common_hdr {
72 __be16 seq_id;
73 __u8 domain[MRP_DOMAIN_UUID_LENGTH];
74};
75
76struct br_mrp_ring_test_hdr {
77 __be16 prio;
78 __u8 sa[ETH_ALEN];
79 __be16 port_role;
80 __be16 state;
81 __be16 transitions;
82 __be32 timestamp;
83};
84
85struct br_mrp_ring_topo_hdr {
86 __be16 prio;
87 __u8 sa[ETH_ALEN];
88 __be16 interval;
89};
90
91struct br_mrp_ring_link_hdr {
92 __u8 sa[ETH_ALEN];
93 __be16 port_role;
94 __be16 interval;
95 __be16 blocked;
96};
97
98struct br_mrp_sub_opt_hdr {
99 __u8 type;
100 __u8 manufacture_data[MRP_MANUFACTURE_DATA_LENGTH];
101};
102
103struct br_mrp_test_mgr_nack_hdr {
104 __be16 prio;
105 __u8 sa[ETH_ALEN];
106 __be16 other_prio;
107 __u8 other_sa[ETH_ALEN];
108};
109
110struct br_mrp_test_prop_hdr {
111 __be16 prio;
112 __u8 sa[ETH_ALEN];
113 __be16 other_prio;
114 __u8 other_sa[ETH_ALEN];
115};
116
117struct br_mrp_oui_hdr {
118 __u8 oui[MRP_OUI_LENGTH];
119};
120
121#endif