libnl 1.1
|
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-2006 Thomas Graf <tgraf@suug.ch> 00010 * 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 struct nl_cache *rtnl_addr_alloc_cache(struct nl_handle *); 00032 00033 /* Address Addition */ 00034 extern struct nl_msg * rtnl_addr_build_add_request(struct rtnl_addr *, int); 00035 extern int rtnl_addr_add(struct nl_handle *, struct rtnl_addr *, 00036 int); 00037 00038 /* Address Deletion */ 00039 extern struct nl_msg * rtnl_addr_build_delete_request(struct rtnl_addr *, int); 00040 extern int rtnl_addr_delete(struct nl_handle *, 00041 struct rtnl_addr *, int); 00042 00043 /* Address Flags Translations */ 00044 extern char * rtnl_addr_flags2str(int, char *, size_t); 00045 extern int rtnl_addr_str2flags(const char *); 00046 00047 /* Attribute Access */ 00048 extern void 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_family(struct rtnl_addr *, int); 00055 extern int rtnl_addr_get_family(struct rtnl_addr *); 00056 00057 extern void rtnl_addr_set_prefixlen(struct rtnl_addr *, int); 00058 extern int rtnl_addr_get_prefixlen(struct rtnl_addr *); 00059 00060 extern void rtnl_addr_set_scope(struct rtnl_addr *, int); 00061 extern int rtnl_addr_get_scope(struct rtnl_addr *); 00062 00063 extern void rtnl_addr_set_flags(struct rtnl_addr *, unsigned int); 00064 extern void rtnl_addr_unset_flags(struct rtnl_addr *, unsigned int); 00065 extern unsigned int rtnl_addr_get_flags(struct rtnl_addr *); 00066 00067 extern int rtnl_addr_set_local(struct rtnl_addr *, 00068 struct nl_addr *); 00069 extern struct nl_addr * rtnl_addr_get_local(struct rtnl_addr *); 00070 00071 extern int rtnl_addr_set_peer(struct rtnl_addr *, 00072 struct nl_addr *); 00073 extern struct nl_addr * rtnl_addr_get_peer(struct rtnl_addr *); 00074 00075 extern int rtnl_addr_set_broadcast(struct rtnl_addr *, 00076 struct nl_addr *); 00077 extern struct nl_addr * rtnl_addr_get_broadcast(struct rtnl_addr *); 00078 00079 extern int rtnl_addr_set_anycast(struct rtnl_addr *, 00080 struct nl_addr *); 00081 extern struct nl_addr * rtnl_addr_get_anycast(struct rtnl_addr *); 00082 00083 extern int rtnl_addr_set_multicast(struct rtnl_addr *, 00084 struct nl_addr *); 00085 extern struct nl_addr * rtnl_addr_get_multicast(struct rtnl_addr *); 00086 00087 #ifdef __cplusplus 00088 } 00089 #endif 00090 00091 #endif