libnl
3.2.3
|
00001 /* 00002 * netlink/route/addr.c rtnetlink addr layer 00003 * 00004 * This library is free software; you can redistribute it and/or 00005 * modify it under the terms of the GNU Lesser General Public 00006 * License as published by the Free Software Foundation version 2.1 00007 * of the License. 00008 * 00009 * Copyright (c) 2003-2011 Thomas Graf <tgraf@suug.ch> 00010 * Copyright (c) 2003-2006 Baruch Even <baruch@ev-en.org>, 00011 * Mediatrix Telecom, inc. <ericb@mediatrix.com> 00012 */ 00013 00014 #ifndef NETADDR_ADDR_H_ 00015 #define NETADDR_ADDR_H_ 00016 00017 #include <netlink/netlink.h> 00018 #include <netlink/cache.h> 00019 #include <netlink/addr.h> 00020 #include <netlink/route/link.h> 00021 00022 #ifdef __cplusplus 00023 extern "C" { 00024 #endif 00025 00026 struct rtnl_addr; 00027 00028 /* General */ 00029 extern struct rtnl_addr *rtnl_addr_alloc(void); 00030 extern void rtnl_addr_put(struct rtnl_addr *); 00031 00032 extern int rtnl_addr_alloc_cache(struct nl_sock *, struct nl_cache **); 00033 extern struct rtnl_addr * 00034 rtnl_addr_get(struct nl_cache *, int, struct nl_addr *); 00035 00036 extern int rtnl_addr_build_add_request(struct rtnl_addr *, int, 00037 struct nl_msg **); 00038 extern int rtnl_addr_add(struct nl_sock *, struct rtnl_addr *, int); 00039 00040 extern int rtnl_addr_build_delete_request(struct rtnl_addr *, int, 00041 struct nl_msg **); 00042 extern int rtnl_addr_delete(struct nl_sock *, 00043 struct rtnl_addr *, int); 00044 00045 extern char * rtnl_addr_flags2str(int, char *, size_t); 00046 extern int rtnl_addr_str2flags(const char *); 00047 00048 extern int rtnl_addr_set_label(struct rtnl_addr *, const char *); 00049 extern char * rtnl_addr_get_label(struct rtnl_addr *); 00050 00051 extern void rtnl_addr_set_ifindex(struct rtnl_addr *, int); 00052 extern int rtnl_addr_get_ifindex(struct rtnl_addr *); 00053 00054 extern void rtnl_addr_set_link(struct rtnl_addr *, struct rtnl_link *); 00055 extern struct rtnl_link * 00056 rtnl_addr_get_link(struct rtnl_addr *); 00057 00058 extern void rtnl_addr_set_family(struct rtnl_addr *, int); 00059 extern int rtnl_addr_get_family(struct rtnl_addr *); 00060 00061 extern void rtnl_addr_set_prefixlen(struct rtnl_addr *, int); 00062 extern int rtnl_addr_get_prefixlen(struct rtnl_addr *); 00063 00064 extern void rtnl_addr_set_scope(struct rtnl_addr *, int); 00065 extern int rtnl_addr_get_scope(struct rtnl_addr *); 00066 00067 extern void rtnl_addr_set_flags(struct rtnl_addr *, unsigned int); 00068 extern void rtnl_addr_unset_flags(struct rtnl_addr *, unsigned int); 00069 extern unsigned int rtnl_addr_get_flags(struct rtnl_addr *); 00070 00071 extern int rtnl_addr_set_local(struct rtnl_addr *, 00072 struct nl_addr *); 00073 extern struct nl_addr *rtnl_addr_get_local(struct rtnl_addr *); 00074 00075 extern int rtnl_addr_set_peer(struct rtnl_addr *, struct nl_addr *); 00076 extern struct nl_addr *rtnl_addr_get_peer(struct rtnl_addr *); 00077 00078 extern int rtnl_addr_set_broadcast(struct rtnl_addr *, struct nl_addr *); 00079 extern struct nl_addr *rtnl_addr_get_broadcast(struct rtnl_addr *); 00080 00081 extern int rtnl_addr_set_multicast(struct rtnl_addr *, struct nl_addr *); 00082 extern struct nl_addr *rtnl_addr_get_multicast(struct rtnl_addr *); 00083 00084 extern int rtnl_addr_set_anycast(struct rtnl_addr *, struct nl_addr *); 00085 extern struct nl_addr *rtnl_addr_get_anycast(struct rtnl_addr *); 00086 00087 extern uint32_t rtnl_addr_get_valid_lifetime(struct rtnl_addr *); 00088 extern void rtnl_addr_set_valid_lifetime(struct rtnl_addr *, uint32_t); 00089 extern uint32_t rtnl_addr_get_preferred_lifetime(struct rtnl_addr *); 00090 extern void rtnl_addr_set_preferred_lifetime(struct rtnl_addr *, uint32_t); 00091 extern uint32_t rtnl_addr_get_create_time(struct rtnl_addr *); 00092 extern uint32_t rtnl_addr_get_last_update_time(struct rtnl_addr *); 00093 00094 #ifdef __cplusplus 00095 } 00096 #endif 00097 00098 #endif