00001 00014 #ifndef _LIBTBXCAST_PRIV_H_ 00015 #define _LIBTBXCAST_PRIV_H_ 00016 00017 #include <sys/types.h> 00018 #include <sys/socket.h> 00019 #include <netinet/in.h> 00020 00021 #include <assert.h> 00022 00023 #include <netinet6/tbxcast6.h> 00024 00034 typedef struct tbxcast6_node 00035 { 00036 uint8_t tbx6n_lgbm; 00038 struct in6_addr tbx6n_addr; 00039 } tbxcast6_node_t; 00040 00041 00046 #define TBXCAST6_NODE_SUBTREELEN(tbx6n_lgbm) \ 00047 (tbx6n_lgbm >> 1) 00048 00053 #define TBXCAST6_NODE_ISDEST(tbx6n_lgbm) \ 00054 (tbx6n_lgbm & 1) 00055 00056 00065 struct tbxcast_group { 00066 int grpid; 00067 int family; 00069 int ndests; 00070 int maxdests; 00071 uint16_t port; 00072 int fd; 00073 int dummyfd; 00075 uint8_t *ctldata; 00077 union { 00078 struct { 00079 struct sockaddr_in src; 00080 int dummy; 00081 } v4; 00086 struct { 00087 socklen_t ctllen; 00088 00089 struct cmsghdr *cmsg_pktinfo; 00090 struct cmsghdr *cmsg_rt; 00091 struct cmsghdr *cmsg_port; 00092 struct in6_pktinfo *pktinfo; 00093 tbxcast6_rthdr_t *rthdr; 00094 00095 struct tbxcast6_node *tree; /* l'arbre de routage */ 00096 00097 } v6; 00102 } hdrinfo; 00108 uint64_t _pad; 00109 }; 00110 00121 struct tbxcast_grpentry { 00122 int nextgrp; 00123 int issubgrp; 00124 int last; 00125 struct tbxcast_group *grp; 00126 }; 00127 00134 extern struct tbxcast_grpentry* 00135 TBXcastGetGroupEntry( 00136 int groupid 00137 ); 00138 00139 #endif // _LIBTBXCAST_PRIV_H_
1.5.5