diff freeDiameter/peers.c @ 86:e3e22d89e023

Started routing module
author Sebastien Decugis <sdecugis@nict.go.jp>
date Thu, 03 Dec 2009 17:36:35 +0900
parents a58f0757c06a
children 5510f73e1737
line wrap: on
line diff
--- a/freeDiameter/peers.c	Thu Dec 03 14:59:23 2009 +0900
+++ b/freeDiameter/peers.c	Thu Dec 03 17:36:35 2009 +0900
@@ -158,6 +158,32 @@
 	return ret;
 }
 
+/* Search for a peer */
+int fd_peer_getbyid( char * diamid, struct peer_hdr ** peer )
+{
+	struct fd_list * li;
+	
+	TRACE_ENTRY("%p %p", diamid, peer);
+	CHECK_PARAMS( diamid && peer );
+	
+	*peer = NULL;
+	
+	/* Search in the list */
+	CHECK_POSIX( pthread_rwlock_rdlock(&fd_g_peers_rw) );
+	for (li = fd_g_peers.next; li != &fd_g_peers; li = li->next) {
+		struct fd_peer * next = (struct fd_peer *)li;
+		int cmp = strcasecmp( diamid, next->p_hdr.info.pi_diamid );
+		if (cmp > 0)
+			continue;
+		if (cmp == 0)
+			*peer = &next->p_hdr;
+		break;
+	}
+	CHECK_POSIX( pthread_rwlock_unlock(&fd_g_peers_rw) );
+	
+	return 0;
+}
+
 
 #define free_null( _v ) 	\
 	if (_v) {		\
"Welcome to our mercurial repository"