00001
00016 #ifndef _LIBTBXCAST_H_
00017 #define _LIBTBXCAST_H_
00018
00019 #include <sys/types.h>
00020 #include <sys/socket.h>
00021
00022 #include <netinet6/tbxcast6.h>
00023
00024 #include "libtbxcast_priv.h"
00025
00029 #define TBXCAST_SUCCESS 0
00030
00033 #define TBXCAST_FAILURE (-1)
00034
00035 #define TBXC_PORT 0x01
00036
00040 #define TBXCAST6_TREE_SIZE(ndest) (((ndest * 17 + 7) & ~7) >> 3)
00041 #define DEFAULT_PORT 2048
00042
00047 struct tbxcast_member {
00048 struct in6_addr tbxm_addr;
00049 int tbxm_gid;
00050 };
00051
00056 typedef struct q_o_s
00057 {
00058 int bandwidth;
00059 } q_o_s_t;
00060
00065 typedef enum { NO_QOS, BANDWIDTH } qos_type;
00066
00077 typedef struct rt_entry
00078 {
00079 int source;
00080 int dest;
00081 struct in6_addr dest_int;
00083 struct q_o_s qos;
00085 struct rt_entry *next;
00086 } rt_entry_t;
00087
00094 typedef struct rev_rt
00095 {
00096 struct in6_addr interface;
00097 int node;
00099 struct rev_rt *next;
00100 } rev_rt_t;
00101
00114 int TBXcastReadTree(
00115 struct tbxcast6_node *tree,
00116 char* file,
00117 int nbnodes
00118 );
00119
00130 int TBXcastAddTree(
00131 int groupid,
00132 struct tbxcast6_node *tree
00133 );
00134
00140 struct rt_entry* _getRoutingTable();
00141
00147 struct rev_rt* _getReverseTable();
00148
00149
00155 int* _getRoutingMatrix();
00156
00162 int* _getQoSMatrix();
00163
00168 int _count_nodes();
00169
00176 struct in6_addr _mk_in6_addr(
00177 char *str
00178 );
00179
00186 int TBXcastInitTopology();
00187
00192 int TBXcastReadTopology(
00193 char* file
00194 );
00195
00196
00207 int TBXcastAddRoute(
00208 int source,
00209 int dest,
00210 struct in6_addr dest_int,
00211 struct q_o_s qos
00212 );
00213
00222 int TBXcastRemoveRoute(
00223 int source,
00224 int dest
00225 );
00226
00234 int TBXcastRemoveNode(
00235 int node
00236 );
00237
00247 int TBXcastCreateRoutingMatrix(
00248 qos_type qos_param
00249 );
00250
00251
00266 int TBXcastCreateTree(
00267 struct in6_addr src,
00268 int groupid,
00269 struct tbxcast6_node** gtree,
00270 int del_nodes
00271 );
00272
00285 int TBXcastCreateGroup(
00286 int flags,
00287 struct sockaddr *src,
00288 unsigned short maxmbrs
00289 );
00290
00300 int TBXcastSend(
00301 int groupid,
00302 char *datap,
00303 int datalen
00304 );
00305
00318 int TBXcastSetSockOpt(
00319 int groupid,
00320 int optlev,
00321 int optname,
00322 void *optval,
00323 size_t optlen
00324 );
00325
00326
00335 int TBXcastAddMember(
00336 struct in6_addr addr,
00337 int gid
00338 );
00339
00348 int
00349 TBXcastRemoveMember(
00350 struct in6_addr addr,
00351 int gid
00352 );
00353
00361 int TBXcastCountMembers(
00362 int gid
00363 );
00364
00376 int TBXcastListMembers(
00377 struct in6_addr *lmem,
00378 int nb,
00379 int gid
00380 );
00381
00382 #endif // _LIBTBXCAST_H_
00383
00384