]> rtime.felk.cvut.cz Git - frescor/forb.git/blobdiff - src/discovery.c
Added redistribution of HELLO packets
[frescor/forb.git] / src / discovery.c
index cc859906278e3215b93f83bbb5a684ca312de45c..a0391a9a39e76021315139a6c38dac2b00232f02 100644 (file)
@@ -56,6 +56,8 @@
 #include "discovery.h"
 #include <ul_log.h>
 #include "object.h"
+#include <forb/config.h>
+#include "iop.h"
 
 extern UL_LOG_CUST(ulogd_forb_discovery);
 
@@ -231,6 +233,18 @@ void forb_new_peer_discovered(forb_port_t *port, forb_peer_t *peer,
                          forb_server_id_to_string(str, &peer->server_id, sizeof(str)),
                          orb_id);
        }
+#ifdef CONFIG_FORB_PROTO_INET_DEFAULT
+       if (forb->attr.redistribute_hellos) {
+               forb_peer_t *p;
+               ul_list_for_each(forb_port_peer, port, p) {
+                       if (p != peer &&
+                           forb_server_id_cmp(&p->server_id, &forb->server_id) != 0) {
+                               forb_iop_redistribute_hello_to(p, peer); /* Introduce new peer to others */
+                               forb_iop_redistribute_hello_to(peer, p); /* Introduce other peers to the new one */
+                       }
+               }
+       }
+#endif
        if (forb->attr.peer_discovery_callback) {
                forb_orb peer_orb = forb_object_new(forb->orb, &peer->server_id, 0);
                forb->attr.peer_discovery_callback(peer_orb, orb_id);