aboutsummaryrefslogtreecommitdiffstats
path: root/libglouglou/libggnet.h
diff options
context:
space:
mode:
Diffstat (limited to 'libglouglou/libggnet.h')
-rw-r--r--libglouglou/libggnet.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/libglouglou/libggnet.h b/libglouglou/libggnet.h
index 10116f2..a27e4e1 100644
--- a/libglouglou/libggnet.h
+++ b/libglouglou/libggnet.h
@@ -13,6 +13,9 @@
#define GGNET_DNSNAME_MAX 30
#define GGNET_CONN_FREEIDS_COUNT 65536 /* 2^16 as freeids are u_int16_t */
+#define GGNET_MANAGE_CONNID_TRUE 1
+#define GGNET_MANAGE_CONNID_FALSE 0
+
struct ggnet_node {
LIST_ENTRY(ggnet_node) entry;
struct in_addr addr;
@@ -22,6 +25,7 @@ struct ggnet_node {
#define GGNET_NODENAME_WAITING -1
#define GGNET_NODENAME_FAILED -2
char name[GGNET_DNSNAME_MAX];
+ void *usrdata;
};
enum ggnet_connstate {
@@ -42,6 +46,7 @@ struct ggnet_conn {
u_int size;
u_int size_response;
time_t lastseen;
+ void *usrdata;
};
struct ggnet {
@@ -51,23 +56,33 @@ struct ggnet {
int node_count;
u_int16_t conn_freeids[GGNET_CONN_FREEIDS_COUNT];
int conn_freeids_ptr;
+ int manage_connid;
time_t time;
};
-struct ggnet *ggnet_new(void);
+struct ggnet *ggnet_new(int);
void ggnet_free(struct ggnet *);
struct ggnet_node *ggnet_node_add(struct ggnet *, struct in_addr *);
void ggnet_node_del(struct ggnet *, struct ggnet_node *);
struct ggnet_node *ggnet_node_find(struct ggnet *, struct in_addr *);
void ggnet_node_update_name(struct ggnet *, struct ggnet_node *,
char *, int);
+void *ggnet_node_usrdata_get(struct ggnet_node *);
+void ggnet_node_usrdata_set(struct ggnet_node *, void *);
struct ggnet_conn *ggnet_conn_add(struct ggnet *, struct in_addr *, int,
- struct in_addr *, int, int, int);
+ struct in_addr *, int, int, int, int);
void ggnet_conn_data(struct ggnet *, struct ggnet_conn *,
int, int);
void ggnet_conn_del(struct ggnet *, struct ggnet_conn *);
struct ggnet_conn *ggnet_conn_find(struct ggnet *, struct in_addr *, int,
struct in_addr *, int, int, int *);
+struct ggnet_conn *ggnet_conn_find_by_id(struct ggnet *, int);
+struct ggnet_conn *ggnet_conn_find_by_node(struct ggnet *, struct ggnet_node *,
+ struct ggnet_node *);
+void *ggnet_conn_usrdata_get(struct ggnet_conn *);
+void ggnet_conn_usrdata_set(struct ggnet_conn *, void *);
+void *ggnet_conn_src_get(struct ggnet_conn *);
+void *ggnet_conn_dst_get(struct ggnet_conn *);
void ggnet_time_update(struct ggnet *, time_t);
#endif /* _LIBGGNET_H_ */