libnl 2.0
|
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-2008 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 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 struct rtnl_addr; 00026 00027 /* General */ 00028 extern struct rtnl_addr *rtnl_addr_alloc(void); 00029 extern void rtnl_addr_put(struct rtnl_addr *); 00030 00031 extern int rtnl_addr_alloc_cache(struct nl_sock *, struct nl_cache **); 00032 00033 extern int rtnl_addr_build_add_request(struct rtnl_addr *, int, 00034 struct nl_msg **); 00035 extern int rtnl_addr_add(struct nl_sock *, struct rtnl_addr *, int); 00036 00037 extern int rtnl_addr_build_delete_request(struct rtnl_addr *, int, 00038 struct nl_msg **); 00039 extern int rtnl_addr_delete(struct nl_sock *, 00040 struct rtnl_addr *, int); 00041 00042 extern char * rtnl_addr_flags2str(int, char *, size_t); 00043 extern int rtnl_addr_str2flags(const char *); 00044 00045 extern int rtnl_addr_set_label(struct rtnl_addr *, const char *); 00046 extern char * rtnl_addr_get_label(struct rtnl_addr *); 00047 00048 extern void rtnl_addr_set_ifindex(struct rtnl_addr *, int); 00049 extern int rtnl_addr_get_ifindex(struct rtnl_addr *); 00050 00051 extern void rtnl_addr_set_family(struct rtnl_addr *, int); 00052 extern int rtnl_addr_get_family(struct rtnl_addr *); 00053 00054 extern void rtnl_addr_set_prefixlen(struct rtnl_addr *, int); 00055 extern int rtnl_addr_get_prefixlen(struct rtnl_addr *); 00056 00057 extern void rtnl_addr_set_scope(struct rtnl_addr *, int); 00058 extern int rtnl_addr_get_scope(struct rtnl_addr *); 00059 00060 extern void rtnl_addr_set_flags(struct rtnl_addr *, unsigned int); 00061 extern void rtnl_addr_unset_flags(struct rtnl_addr *, unsigned int); 00062 extern unsigned int rtnl_addr_get_flags(struct rtnl_addr *); 00063 00064 extern int rtnl_addr_set_local(struct rtnl_addr *, 00065 struct nl_addr *); 00066 extern struct nl_addr *rtnl_addr_get_local(struct rtnl_addr *); 00067 00068 extern int rtnl_addr_set_peer(struct rtnl_addr *, struct nl_addr *); 00069 extern struct nl_addr *rtnl_addr_get_peer(struct rtnl_addr *); 00070 00071 extern int rtnl_addr_set_broadcast(struct rtnl_addr *, struct nl_addr *); 00072 extern struct nl_addr *rtnl_addr_get_broadcast(struct rtnl_addr *); 00073 00074 extern int rtnl_addr_set_multicast(struct rtnl_addr *, struct nl_addr *); 00075 extern struct nl_addr *rtnl_addr_get_multicast(struct rtnl_addr *); 00076 00077 extern int rtnl_addr_set_anycast(struct rtnl_addr *, struct nl_addr *); 00078 extern struct nl_addr *rtnl_addr_get_anycast(struct rtnl_addr *); 00079 00080 extern uint32_t rtnl_addr_get_valid_lifetime(struct rtnl_addr *); 00081 extern void rtnl_addr_set_valid_lifetime(struct rtnl_addr *, uint32_t); 00082 extern uint32_t rtnl_addr_get_preferred_lifetime(struct rtnl_addr *); 00083 extern void rtnl_addr_set_preferred_lifetime(struct rtnl_addr *, uint32_t); 00084 extern uint32_t rtnl_addr_get_create_time(struct rtnl_addr *); 00085 extern uint32_t rtnl_addr_get_last_update_time(struct rtnl_addr *); 00086 00087 #ifdef __cplusplus 00088 } 00089 #endif 00090 00091 #endif