libnl 3.0
|
00001 #include <netlink/msg.h> 00002 #include <netlink/attr.h> 00003 00004 enum { 00005 MY_ATTR_FOO = 1, 00006 MY_ATTR_BAR, 00007 __MY_ATTR_MAX, 00008 }; 00009 00010 #define MY_ATTR_MAX (__MY_ATTR_MAX - 1) 00011 00012 static struct nla_policy my_policy[MY_ATTR_MAX+1] = { 00013 [MY_ATTR_FOO] = { .type = NLA_U32 }, 00014 [MY_ATTR_BAR] = { .type = NLA_STRING, 00015 .maxlen = 16 }, 00016 }; 00017 00018 void parse_msg(struct nlmsghdr *nlh) 00019 { 00020 struct nlattr *attrs[MY_ATTR_MAX+1]; 00021 00022 if (nlmsg_parse(nlh, 0, attrs, MY_ATTR_MAX, my_policy) < 0) 00023 /* error */ 00024 00025 if (attrs[MY_ATTR_FOO]) { 00026 /* MY_ATTR_FOO is present in message */ 00027 printf("value: %u\n", nla_get_u32(attrs[MY_ATTR_FOO])); 00028 } 00029 }