libnl 1.1.4
Modules | Data Structures | Functions

Modules

 VLAN
 

Data Structures

struct  rtnl_link_info_ops
 Link info operations. More...
 

Functions

struct rtnl_link_info_opsrtnl_link_info_ops_lookup (const char *name)
 
int rtnl_link_register_info (struct rtnl_link_info_ops *ops)
 
int rtnl_link_unregister_info (struct rtnl_link_info_ops *ops)
 

Detailed Description

1) Registering/Unregistering a new link info type
static struct rtnl_link_info_ops vlan_info_ops = {
.io_name = "vlan",
.io_alloc = vlan_alloc,
.io_parse = vlan_parse,
.io_dump[NL_DUMP_BRIEF] = vlan_dump_brief,
.io_dump[NL_DUMP_FULL] = vlan_dump_full,
.io_free = vlan_free,
};
static void __init vlan_init(void)
{
rtnl_link_register_info(&vlan_info_ops);
}
static void __exit vlan_exit(void)
{
rtnl_link_unregister_info(&vlan_info_ops);
}
@ NL_DUMP_FULL
Dump all attributes but no statistics.
Definition: types.h:23
@ NL_DUMP_BRIEF
Dump object in a brief one-liner.
Definition: types.h:22

Function Documentation

◆ rtnl_link_info_ops_lookup()

struct rtnl_link_info_ops * rtnl_link_info_ops_lookup ( const char *  name)

Definition at line 50 of file api.c.

51{
52 struct rtnl_link_info_ops *ops;
53
54 for (ops = info_ops; ops; ops = ops->io_next)
55 if (!strcmp(ops->io_name, name))
56 return ops;
57
58 return NULL;
59}

◆ rtnl_link_register_info()

int rtnl_link_register_info ( struct rtnl_link_info_ops ops)

Definition at line 61 of file api.c.

62{
63 if (ops->io_name == NULL)
64 return nl_error(EINVAL, "No name specified");
65
66 if (rtnl_link_info_ops_lookup(ops->io_name))
67 return nl_error(EEXIST, "Link info operations already exist");
68
69 NL_DBG(1, "Registered link info operations %s\n", ops->io_name);
70
71 ops->io_next = info_ops;
72 info_ops = ops;
73
74 return 0;
75}

◆ rtnl_link_unregister_info()

int rtnl_link_unregister_info ( struct rtnl_link_info_ops ops)

Definition at line 77 of file api.c.

78{
79 struct rtnl_link_info_ops *t, **tp;
80
81 for (tp = &info_ops; (t=*tp) != NULL; tp = &t->io_next)
82 if (t == ops)
83 break;
84
85 if (!t)
86 return nl_error(ENOENT, "No such link info operations");
87
88 if (t->io_refcnt > 0)
89 return nl_error(EBUSY, "Info operations in use");
90
91 NL_DBG(1, "Unregistered link info perations %s\n", ops->io_name);
92
93 *tp = t->io_next;
94 return 0;
95}