19 meshlink_set_log_cb(NULL, MESHLINK_DEBUG, log_cb);
21 meshlink_handle_t *mesh1;
22 meshlink_handle_t *mesh2;
26 assert(meshlink_destroy("port_conf.1"));
27 assert(meshlink_destroy("port_conf.2"));
29 mesh1 = meshlink_open("port_conf.1", "foo", "port", DEV_CLASS_BACKBONE);
30 mesh2 = meshlink_open("port_conf.2", "bar", "port", DEV_CLASS_BACKBONE);
35 meshlink_enable_discovery(mesh1, false);
36 meshlink_enable_discovery(mesh2, false);
38 int port1 = meshlink_get_port(mesh1);
39 int port2 = meshlink_get_port(mesh2);
42 assert(port1 != port2);
44 // bar cannot take foo's port if foo is still open
45 assert(!meshlink_set_port(mesh2, port1));
47 // bar can take foo's port of foo is closed
48 meshlink_close(mesh1);
50 assert(meshlink_set_port(mesh2, port1));
51 assert(meshlink_get_port(mesh2) == port1);
53 // foo can open but will now use a different port
54 mesh1 = meshlink_open("port_conf.1", "foo", "port", DEV_CLASS_BACKBONE);
56 int port1b = meshlink_get_port(mesh1);
58 assert(port1b != port1);
60 assert(!meshlink_set_port(mesh1, port1));
62 // foo can take over bar's old port
63 assert(meshlink_set_port(mesh1, port2));
65 meshlink_close(mesh1);
66 meshlink_close(mesh2);