From 6366fe8057c6310e4697ab5a0572334fb8db2712 Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Tue, 4 Dec 2012 13:14:40 +0100 Subject: add ggnet_conn_find() --- libglouglou/libggnet.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'libglouglou/libggnet.c') diff --git a/libglouglou/libggnet.c b/libglouglou/libggnet.c index 2e7ff36..7ccfa00 100644 --- a/libglouglou/libggnet.c +++ b/libglouglou/libggnet.c @@ -151,6 +151,33 @@ ggnet_conn_del(struct ggnet *net, struct ggnet_conn *c) free(c); } + +struct ggnet_conn * +ggnet_conn_find(struct ggnet *net, struct in_addr *src, int src_port, + struct in_addr *dst, int dst_port, int proto, int *response) +{ + struct ggnet_conn *c; + + LIST_FOREACH(c, &net->conn_list, entry) { + if (((c->src->addr.s_addr == src->s_addr && + c->src_port == src_port && + c->dst->addr.s_addr == dst->s_addr && + c->dst_port == dst_port) || + (c->src->addr.s_addr == dst->s_addr && + c->src_port == dst_port && + c->dst->addr.s_addr == src->s_addr && + c->dst_port == src_port)) && + c->proto == proto) { + if (c->src->addr.s_addr == src->s_addr) + *response = 0; + else + *response = 1; + return c; + } + } + return NULL; +} + void ggnet_time_update(struct ggnet *net, time_t time) { -- cgit v1.2.3-59-g8ed1b