mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-12 17:04:56 +00:00

This patch adds support for recently added link IFLA_PROTO_DOWN_REASON attribute. IFLA_PROTO_DOWN_REASON enumerates reasons for the already existing IFLA_PROTO_DOWN link attribute. $ cat /etc/iproute2/protodown_reasons.d/r.conf 0 mlag 1 evpn 2 vrrp 3 psecurity $ ip link set dev vx10 protodown on protodown_reason vrrp on $ip link show dev vx10 14: vx10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether f2:32:28:b8:35:ff brd ff:ff:ff:ff:ff:ff protodown on protodown_reason <vrrp> $ip -p -j link show dev vx10 [ { <snip> "proto_down": true, "proto_down_reason": [ "vrrp" ] } ] $ip link set dev vx10 protodown_reason mlag on $ip link show dev vx10 14: vx10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether f2:32:28:b8:35:ff brd ff:ff:ff:ff:ff:ff protodown on protodown_reason <mlag,vrrp> $ip -p -j link show dev vx10 [ { <snip> "proto_down": true, "protodown_reason": [ "mlag","vrrp" ] } ] $ip -p -j link show dev vx10 $ip link set dev vx10 protodown off protodown_reason vrrp off Error: Cannot clear protodown, active reasons. $ip link set dev vx10 protodown off protodown_reason mlag off $ Note: for somereason the json and non-json key for protodown are different (protodown and proto_down). I have kept the same for protodown reason for consistency (protodown_reason and proto_down_reason). Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David Ahern <dsahern@gmail.com>
42 lines
1.4 KiB
C
42 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef RT_NAMES_H_
|
|
#define RT_NAMES_H_ 1
|
|
|
|
#include <asm/types.h>
|
|
|
|
const char *rtnl_rtprot_n2a(int id, char *buf, int len);
|
|
const char *rtnl_rtscope_n2a(int id, char *buf, int len);
|
|
const char *rtnl_rttable_n2a(__u32 id, char *buf, int len);
|
|
const char *rtnl_rtrealm_n2a(int id, char *buf, int len);
|
|
const char *rtnl_dsfield_n2a(int id, char *buf, int len);
|
|
const char *rtnl_group_n2a(int id, char *buf, int len);
|
|
|
|
int rtnl_rtprot_a2n(__u32 *id, const char *arg);
|
|
int rtnl_rtscope_a2n(__u32 *id, const char *arg);
|
|
int rtnl_rttable_a2n(__u32 *id, const char *arg);
|
|
int rtnl_rtrealm_a2n(__u32 *id, const char *arg);
|
|
int rtnl_dsfield_a2n(__u32 *id, const char *arg);
|
|
int rtnl_group_a2n(int *id, const char *arg);
|
|
|
|
const char *inet_proto_n2a(int proto, char *buf, int len);
|
|
int inet_proto_a2n(const char *buf);
|
|
|
|
|
|
const char * ll_type_n2a(int type, char *buf, int len);
|
|
const char *ll_addr_n2a(const unsigned char *addr, int alen,
|
|
int type, char *buf, int blen);
|
|
int ll_addr_a2n(char *lladdr, int len, const char *arg);
|
|
|
|
const char * ll_proto_n2a(unsigned short id, char *buf, int len);
|
|
int ll_proto_a2n(unsigned short *id, const char *buf);
|
|
|
|
const char *nl_proto_n2a(int id, char *buf, int len);
|
|
int nl_proto_a2n(__u32 *id, const char *arg);
|
|
|
|
int protodown_reason_a2n(__u32 *id, const char *arg);
|
|
int protodown_reason_n2a(int id, char *buf, int len);
|
|
|
|
extern int numeric;
|
|
|
|
#endif
|