Commit d818c48a authored by Alessandro Rubini's avatar Alessandro Rubini

syslog: print ip, addr and uptime when up

Signed-off-by: Alessandro Rubini's avatarAlessandro Rubini <rubini@gnudd.com>
parent c7de869b
...@@ -18,15 +18,16 @@ static struct wrpc_socket *syslog_socket; ...@@ -18,15 +18,16 @@ static struct wrpc_socket *syslog_socket;
static struct wr_udp_addr syslog_addr; static struct wr_udp_addr syslog_addr;
unsigned char syslog_mac[6]; unsigned char syslog_mac[6];
static uint32_t tics, tics_zero;
void syslog_init(void) void syslog_init(void)
{ {
syslog_socket = ptpd_netif_create_socket(&__static_syslog_socket, NULL, syslog_socket = ptpd_netif_create_socket(&__static_syslog_socket, NULL,
PTPD_SOCK_UDP, 514 /* time */); PTPD_SOCK_UDP, 514 /* time */);
syslog_addr.sport = syslog_addr.dport = htons(514); syslog_addr.sport = syslog_addr.dport = htons(514);
tics_zero = timer_get_tics();
} }
static uint32_t tics;
static int cmd_syslog(const char *args[]) static int cmd_syslog(const char *args[])
{ {
char b1[32], b2[32]; char b1[32], b2[32];
...@@ -57,34 +58,39 @@ DEFINE_WRC_COMMAND(mac) = { ...@@ -57,34 +58,39 @@ DEFINE_WRC_COMMAND(mac) = {
void syslog_poll(int l_satus) void syslog_poll(int l_satus)
{ {
struct wr_sockaddr addr; struct wr_sockaddr addr;
char buf[128]; char buf[256];
char b1[32], b2[32];
unsigned char mac[6];
unsigned char ip[4];
uint64_t secs; uint64_t secs;
int len; int len = 0;
if (needIP) if (needIP)
return; return;
if (!syslog_addr.daddr) if (!syslog_addr.daddr)
return; return;
if (!tics) /* first time ever */ if (!tics) {
/* first time ever, or new syslog server */
tics = timer_get_tics() - 1; tics = timer_get_tics() - 1;
shw_pps_gen_get_time(&secs, NULL);
get_mac_addr(mac);
getIP(ip);
len = pp_sprintf(buf + UDP_END, /* 8 == user + 6 == info */
"<14> %s %s (%s) Node up "
"since %i seconds\n",
format_time(secs, TIME_FORMAT_SYSLOG),
format_ip(b1, ip), format_mac(b2, mac),
(tics - tics_zero) / 1000);
goto send;
}
return;
if (time_before(timer_get_tics(), tics)) send:
return;
getIP((void *)&syslog_addr.saddr);
shw_pps_gen_get_time(&secs, NULL);
len = pp_sprintf(buf + UDP_END, /* 8 == user + 6 == info */
"<14> %s wr-node: Alive and Well",
format_time(secs, TIME_FORMAT_SYSLOG));
len += UDP_END; len += UDP_END;
memcpy(&syslog_addr.saddr, ip, 4); memcpy(&syslog_addr.saddr, ip, 4);
fill_udp((void *)buf, len, &syslog_addr); fill_udp((void *)buf, len, &syslog_addr);
memcpy(&addr.mac, syslog_mac, 6); memcpy(&addr.mac, syslog_mac, 6);
ptpd_netif_sendto(syslog_socket, &addr, buf, len, 0); ptpd_netif_sendto(syslog_socket, &addr, buf, len, 0);
tics += 10 * TICS_PER_SECOND;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment