include/uapi/linux/tipc_config.h
Source file repositories/reference/linux-study-clean/include/uapi/linux/tipc_config.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/linux/tipc_config.h- Extension
.h- Size
- 14863 bytes
- Lines
- 414
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/string.hlinux/tipc.hasm/byteorder.h
Detected Declarations
struct tipc_node_infostruct tipc_link_infostruct tipc_bearer_configstruct tipc_link_configstruct tipc_name_table_querystruct tlv_descstruct tlv_list_descstruct tipc_genlmsghdrstruct tipc_cfg_msg_hdrfunction TLV_OKfunction TLV_CHECKfunction TLV_GET_LENfunction TLV_SET_LENfunction TLV_CHECK_TYPEfunction TLV_SET_TYPEfunction TLV_SETfunction TLV_LIST_INITfunction TLV_LIST_EMPTYfunction TLV_LIST_CHECKfunction TLV_LIST_STEPfunction TCM_SET
Annotated Snippet
struct tipc_node_info {
__be32 addr; /* network address of node */
__be32 up; /* 0=down, 1= up */
};
struct tipc_link_info {
__be32 dest; /* network address of peer node */
__be32 up; /* 0=down, 1=up */
char str[TIPC_MAX_LINK_NAME]; /* link name */
};
struct tipc_bearer_config {
__be32 priority; /* Range [1,31]. Override per link */
__be32 disc_domain; /* <Z.C.N> describing desired nodes */
char name[TIPC_MAX_BEARER_NAME];
};
struct tipc_link_config {
__be32 value;
char name[TIPC_MAX_LINK_NAME];
};
#define TIPC_NTQ_ALLTYPES 0x80000000
struct tipc_name_table_query {
__be32 depth; /* 1:type, 2:+name info, 3:+port info, 4+:+debug info */
__be32 type; /* {t,l,u} info ignored if high bit of "depth" is set */
__be32 lowbound; /* (i.e. displays all entries of name table) */
__be32 upbound;
};
/*
* The error string TLV is a null-terminated string describing the cause
* of the request failure. To simplify error processing (and to save space)
* the first character of the string can be a special error code character
* (lying by the range 0x80 to 0xFF) which represents a pre-defined reason.
*/
#define TIPC_CFG_TLV_ERROR "\x80" /* request contains incorrect TLV(s) */
#define TIPC_CFG_NOT_NET_ADMIN "\x81" /* must be network administrator */
#define TIPC_CFG_NOT_ZONE_MSTR "\x82" /* must be zone master */
#define TIPC_CFG_NO_REMOTE "\x83" /* remote management not enabled */
#define TIPC_CFG_NOT_SUPPORTED "\x84" /* request is not supported by TIPC */
#define TIPC_CFG_INVALID_VALUE "\x85" /* request has invalid argument value */
/*
* A TLV consists of a descriptor, followed by the TLV value.
* TLV descriptor fields are stored in network byte order;
* TLV values must also be stored in network byte order (where applicable).
* TLV descriptors must be aligned to addresses which are multiple of 4,
* so up to 3 bytes of padding may exist at the end of the TLV value area.
* There must not be any padding between the TLV descriptor and its value.
*/
struct tlv_desc {
__be16 tlv_len; /* TLV length (descriptor + value) */
__be16 tlv_type; /* TLV identifier */
};
#define TLV_ALIGNTO 4
#define TLV_ALIGN(datalen) (((datalen)+(TLV_ALIGNTO-1)) & ~(TLV_ALIGNTO-1))
#define TLV_LENGTH(datalen) (sizeof(struct tlv_desc) + (datalen))
#define TLV_SPACE(datalen) (TLV_ALIGN(TLV_LENGTH(datalen)))
#define TLV_DATA(tlv) ((void *)((char *)(tlv) + TLV_LENGTH(0)))
static inline int TLV_OK(const void *tlv, __u16 space)
{
/*
* Would also like to check that "tlv" is a multiple of 4,
* but don't know how to do this in a portable way.
* - Tried doing (!(tlv & (TLV_ALIGNTO-1))), but GCC compiler
* won't allow binary "&" with a pointer.
* - Tried casting "tlv" to integer type, but causes warning about size
* mismatch when pointer is bigger than chosen type (int, long, ...).
*/
return (space >= TLV_SPACE(0)) &&
(__be16_to_cpu(((struct tlv_desc *)tlv)->tlv_len) <= space);
}
static inline int TLV_CHECK(const void *tlv, __u16 space, __u16 exp_type)
{
return TLV_OK(tlv, space) &&
(__be16_to_cpu(((struct tlv_desc *)tlv)->tlv_type) == exp_type);
}
static inline int TLV_GET_LEN(struct tlv_desc *tlv)
{
return __be16_to_cpu(tlv->tlv_len);
Annotation
- Immediate include surface: `linux/types.h`, `linux/string.h`, `linux/tipc.h`, `asm/byteorder.h`.
- Detected declarations: `struct tipc_node_info`, `struct tipc_link_info`, `struct tipc_bearer_config`, `struct tipc_link_config`, `struct tipc_name_table_query`, `struct tlv_desc`, `struct tlv_list_desc`, `struct tipc_genlmsghdr`, `struct tipc_cfg_msg_hdr`, `function TLV_OK`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.