#include "core.h"
#include "bearer.h"
#include "link.h"
#include "name_table.h"
#include "socket.h"
#include "node.h"
#include "net.h"
#include <net/genetlink.h>
#include <linux/string_helpers.h>
#include <linux/tipc_config.h>
#define ULTRA_STRING_MAX_LEN …
#define TIPC_SKB_MAX …
#define REPLY_TRUNCATED …
struct tipc_nl_compat_msg { … };
struct tipc_nl_compat_cmd_dump { … };
struct tipc_nl_compat_cmd_doit { … };
static int tipc_skb_tailroom(struct sk_buff *skb)
{ … }
static inline int TLV_GET_DATA_LEN(struct tlv_desc *tlv)
{ … }
static int tipc_add_tlv(struct sk_buff *skb, u16 type, void *data, u16 len)
{ … }
static void tipc_tlv_init(struct sk_buff *skb, u16 type)
{ … }
static __printf(2, 3) int tipc_tlv_sprintf(struct sk_buff *skb,
const char *fmt, ...)
{ … }
static struct sk_buff *tipc_tlv_alloc(int size)
{ … }
static struct sk_buff *tipc_get_err_tlv(char *str)
{ … }
static int __tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,
struct tipc_nl_compat_msg *msg,
struct sk_buff *arg)
{ … }
static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,
struct tipc_nl_compat_msg *msg)
{ … }
static int __tipc_nl_compat_doit(struct tipc_nl_compat_cmd_doit *cmd,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_doit(struct tipc_nl_compat_cmd_doit *cmd,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_bearer_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_bearer_enable(struct tipc_nl_compat_cmd_doit *cmd,
struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_bearer_disable(struct tipc_nl_compat_cmd_doit *cmd,
struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static inline u32 perc(u32 count, u32 total)
{ … }
static void __fill_bc_link_stat(struct tipc_nl_compat_msg *msg,
struct nlattr *prop[], struct nlattr *stats[])
{ … }
static int tipc_nl_compat_link_stat_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_link_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int __tipc_add_link_prop(struct sk_buff *skb,
struct tipc_nl_compat_msg *msg,
struct tipc_link_config *lc)
{ … }
static int tipc_nl_compat_media_set(struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_bearer_set(struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int __tipc_nl_compat_link_set(struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_link_set(struct tipc_nl_compat_cmd_doit *cmd,
struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_link_reset_stats(struct tipc_nl_compat_cmd_doit *cmd,
struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_name_table_dump_header(struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_name_table_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int __tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_publ_dump(struct tipc_nl_compat_msg *msg, u32 sock)
{ … }
static int tipc_nl_compat_sk_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_media_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_node_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_nl_compat_net_set(struct tipc_nl_compat_cmd_doit *cmd,
struct sk_buff *skb,
struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_net_dump(struct tipc_nl_compat_msg *msg,
struct nlattr **attrs)
{ … }
static int tipc_cmd_show_stats_compat(struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_handle(struct tipc_nl_compat_msg *msg)
{ … }
static int tipc_nl_compat_recv(struct sk_buff *skb, struct genl_info *info)
{ … }
static const struct genl_small_ops tipc_genl_compat_ops[] = …;
static struct genl_family tipc_genl_compat_family __ro_after_init = …;
int __init tipc_netlink_compat_start(void)
{ … }
void tipc_netlink_compat_stop(void)
{ … }