2 * Copyright (C) 2014 John Crispin <blogic@openwrt.org>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License version 2.1
6 * as published by the Free Software Foundation
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
14 #include <sys/types.h>
18 #include <libubox/uloop.h>
25 #include "interface.h"
27 #define TTL_TIMEOUT 75
38 static struct uloop_timeout announce;
39 struct uloop_fd *announce_fd;
40 static int announce_state;
41 int announce_ttl = 75 * 60;
44 announce_timer(struct uloop_timeout *timeout)
48 snprintf(host, sizeof(host), "%s.local", hostname);
50 switch (announce_state) {
54 dns_send_question(cur_iface, host, TYPE_ANY);
55 uloop_timeout_set(timeout, 250);
59 case STATE_PROBE_WAIT:
60 uloop_timeout_set(timeout, 500);
65 if (cache_host_is_known(host)) {
66 fprintf(stderr, "the host %s already exists. stopping announce service\n", host);
72 service_announce(announce_fd);
73 uloop_timeout_set(timeout, announce_ttl * 800);
79 announce_init(struct uloop_fd *u)
81 announce_state = STATE_PROBE1;
82 announce.cb = announce_timer;
84 uloop_timeout_set(&announce, 100);