From 0fa6756cca2444ddf665cc140585822d6c04507a Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Wed, 30 Jan 2008 13:14:58 +0100 Subject: [PATCH] Abstract address allocation based on netlink attribute --- include/netlink/addr.h | 1 + lib/addr.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/netlink/addr.h b/include/netlink/addr.h index 25fce7e..8464a0c 100644 --- a/include/netlink/addr.h +++ b/include/netlink/addr.h @@ -22,6 +22,7 @@ struct nl_addr; /* Creation */ extern struct nl_addr * nl_addr_alloc(size_t); +extern struct nl_addr * nl_addr_alloc_from_attr(struct nlattr *, int); extern struct nl_addr * nl_addr_build(int, void *, size_t); extern struct nl_addr * nl_addr_parse(const char *, int); extern struct nl_addr * nl_addr_clone(struct nl_addr *); diff --git a/lib/addr.c b/lib/addr.c index 68f7741..70e4b1d 100644 --- a/lib/addr.c +++ b/lib/addr.c @@ -202,6 +202,21 @@ struct nl_addr *nl_addr_build(int family, void *buf, size_t size) return addr; } +/** + * Allocate abstract address based on netlink attribute. + * @arg nla Netlink attribute of unspecific type. + * @arg family Address family. + * + * Considers the netlink attribute payload a address of the specified + * family and allocates a new abstract address based on it. + * + * @return Newly allocated address handle or NULL. + */ +struct nl_addr *nl_addr_alloc_from_attr(struct nlattr *nla, int family) +{ + return nl_addr_build(family, nla_data(nla), nla_len(nla)); +} + /** * Allocate abstract address object based on a character string * @arg addrstr Address represented as character string. -- 2.40.0