} 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);
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() */
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;
}
+static inline bool
+forb_server_id_empty(const forb_server_id *server_id)
+{
+ unsigned i;
+ for (i=0; i<sizeof(server_id); i++) {
+ if (server_id->uuid[i] != 0)
+ return false;
+ }
+ return true;
+}
#endif