From 42ad1acc3ab05d126877eab452740cde3092820a Mon Sep 17 00:00:00 2001 From: Michal Sojka Date: Tue, 26 May 2009 15:19:43 +0200 Subject: [PATCH] FORB can be initialized with a fixed ID This will be used to bypass discovery protocol and configure FCB location and ID statically. --- src/forb.c | 10 +++++++--- src/forb.h | 1 + src/server_id.h | 10 ++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/forb.c b/src/forb.c index 5a34670..0aa0877 100644 --- a/src/forb.c +++ b/src/forb.c @@ -169,8 +169,12 @@ forb_init(int *argc, char **argv[], const struct forb_init_attr *attr) } else { memset(&forb->attr, 0, sizeof(forb->attr)); } - - forb_server_id_init(&forb->server_id); + + if (forb_server_id_empty(&forb->attr.fixed_server_id)) { + forb_server_id_init(&forb->server_id); + } else { + forb->server_id = forb->attr.fixed_server_id; + } forb_server_id_to_string(forb->server_id_str, &forb->server_id, sizeof(forb->server_id_str)); ul_logdeb("Initializing forb %s\n", forb->server_id_str); @@ -241,7 +245,7 @@ forb_init(int *argc, char **argv[], const struct forb_init_attr *attr) memset(port, 0, sizeof(*port)); listen_on.s_addr = INADDR_ANY; ret = forb_inet_port_init(&port->desc, listen_on, - attr->fixed_tcp_port); + forb->attr.fixed_tcp_port); if (ret) goto err_free_inet; ret = forb_register_port(orb, port); if (ret) goto err_free_inet; /* TODO: forb_inet_port_done() */ diff --git a/src/forb.h b/src/forb.h index c825c7d..9a1e00e 100644 --- a/src/forb.h +++ b/src/forb.h @@ -159,6 +159,7 @@ typedef struct forb_init_attr { void (*peer_discovery_callback)(const forb_orb peer_orb, const char *orb_id); void (*peer_dead_callback)(const forb_orb peer_orb, const char *orb_id); uint16_t fixed_tcp_port; /**< If we want FORB's inet protocol to listen on a fixed port... */ + forb_server_id fixed_server_id; /**< If we do not want the ID to be random. (HACK) */ } forb_init_attr_t; diff --git a/src/server_id.h b/src/server_id.h index f179b28..17effdc 100644 --- a/src/server_id.h +++ b/src/server_id.h @@ -50,5 +50,15 @@ forb_server_id_from_string(forb_server_id *server_id, const char *string) } +static inline bool +forb_server_id_empty(const forb_server_id *server_id) +{ + unsigned i; + for (i=0; iuuid[i] != 0) + return false; + } + return true; +} #endif -- 2.39.2