change according to remarks of marckleinebudde (C99 struct initializers, etc.)
parent
2ca7d6fd2e
commit
b4bba50c54
48
candump.c
48
candump.c
|
|
@ -159,6 +159,7 @@ void sigterm(int signo)
|
||||||
int is_idx_cached(int ifidx) {
|
int is_idx_cached(int ifidx) {
|
||||||
int cached = 0;
|
int cached = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=0; i < MAXIFNAMES; i++) {
|
for (i=0; i < MAXIFNAMES; i++) {
|
||||||
if (dindex[i] == ifidx) {
|
if (dindex[i] == ifidx) {
|
||||||
cached = 1;
|
cached = 1;
|
||||||
|
|
@ -223,19 +224,20 @@ static int send_dump_request(int fd, int family, int type)
|
||||||
struct get_req {
|
struct get_req {
|
||||||
struct nlmsghdr n;
|
struct nlmsghdr n;
|
||||||
struct rtgenmsg g;
|
struct rtgenmsg g;
|
||||||
} req;
|
} req = {
|
||||||
|
.n = {
|
||||||
|
.nlmsg_len = sizeof(req),
|
||||||
|
.nlmsg_type = type,
|
||||||
|
.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT | NLM_F_MATCH,
|
||||||
|
.nlmsg_pid = 0,
|
||||||
|
.nlmsg_seq = 0
|
||||||
|
},
|
||||||
|
.g = {
|
||||||
|
.rtgen_family = family
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
memset(&req, 0, sizeof(req));
|
return send(fd, &req, sizeof(req), 0);
|
||||||
|
|
||||||
req.n.nlmsg_len = sizeof(req);
|
|
||||||
req.n.nlmsg_type = type;
|
|
||||||
req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT | NLM_F_MATCH;
|
|
||||||
req.n.nlmsg_pid = 0;
|
|
||||||
req.n.nlmsg_seq = 0;
|
|
||||||
|
|
||||||
req.g.rtgen_family = family;
|
|
||||||
|
|
||||||
return send(fd, (void *)&req, sizeof(req), 0);
|
|
||||||
}
|
}
|
||||||
/* altern:
|
/* altern:
|
||||||
void netlink_getlink(int nsock) from
|
void netlink_getlink(int nsock) from
|
||||||
|
|
@ -282,7 +284,13 @@ int main(int argc, char **argv)
|
||||||
struct netlink_struc {
|
struct netlink_struc {
|
||||||
int s;
|
int s;
|
||||||
struct sockaddr_nl saddr;
|
struct sockaddr_nl saddr;
|
||||||
} netlink_s;
|
} netlink_s = {
|
||||||
|
.s = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE),
|
||||||
|
.saddr = {
|
||||||
|
.nl_family = AF_NETLINK,
|
||||||
|
.nl_groups = RTMGRP_LINK
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
signal(SIGTERM, sigterm);
|
signal(SIGTERM, sigterm);
|
||||||
signal(SIGHUP, sigterm);
|
signal(SIGHUP, sigterm);
|
||||||
|
|
@ -451,14 +459,10 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// netlink to determine down/up
|
// netlink to determine down/up
|
||||||
memset(&netlink_s.saddr, 0, sizeof(netlink_s.saddr));
|
|
||||||
netlink_s.saddr.nl_family = AF_NETLINK;
|
|
||||||
netlink_s.saddr.nl_groups = RTMGRP_LINK;
|
|
||||||
netlink_s.s = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
|
||||||
bind(netlink_s.s, (struct sockaddr *) &netlink_s.saddr, sizeof(netlink_s.saddr));
|
bind(netlink_s.s, (struct sockaddr *) &netlink_s.saddr, sizeof(netlink_s.saddr));
|
||||||
if (send_dump_request(netlink_s.s, AF_PACKET, RTM_GETLINK) < 0) {
|
if (send_dump_request(netlink_s.s, AF_PACKET, RTM_GETLINK) < 0) {
|
||||||
perror("Cannot send dump request");
|
perror("Cannot send dump request");
|
||||||
return ret;
|
return 1;
|
||||||
}
|
}
|
||||||
//altern: netlink_getlink(netlink_s.s);
|
//altern: netlink_getlink(netlink_s.s);
|
||||||
|
|
||||||
|
|
@ -713,11 +717,9 @@ int main(int argc, char **argv)
|
||||||
if (nh->nlmsg_type == NLMSG_DONE){
|
if (nh->nlmsg_type == NLMSG_DONE){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (nh->nlmsg_type == NLMSG_ERROR){
|
if (nh->nlmsg_type == NLMSG_ERROR)
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
if (nh->nlmsg_type == RTM_NEWLINK) {
|
if (nh->nlmsg_type == RTM_NEWLINK) {
|
||||||
/*if (nh->nlmsg_type < RTM_NEWADDR){*/
|
|
||||||
struct ifinfomsg *rtif = NLMSG_DATA(nh);
|
struct ifinfomsg *rtif = NLMSG_DATA(nh);
|
||||||
|
|
||||||
if (is_idx_cached(rtif->ifi_index)) {
|
if (is_idx_cached(rtif->ifi_index)) {
|
||||||
|
|
@ -726,7 +728,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
const int will_exit = (down_causes_exit && !(rtif->ifi_flags&IFF_RUNNING));
|
const int will_exit = (down_causes_exit && !(rtif->ifi_flags&IFF_RUNNING));
|
||||||
if (report_down_up || will_exit) {
|
if (report_down_up || will_exit) {
|
||||||
printf("#%*s is %s\n", max_devname_len, ifname,
|
printf("# %*s is %s\n", max_devname_len, ifname,
|
||||||
(rtif->ifi_flags&IFF_RUNNING) ? "up" : "down");
|
(rtif->ifi_flags&IFF_RUNNING) ? "up" : "down");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
|
|
@ -756,7 +758,7 @@ int main(int argc, char **argv)
|
||||||
if (errno == ENETDOWN) {
|
if (errno == ENETDOWN) {
|
||||||
if (down_causes_exit) {
|
if (down_causes_exit) {
|
||||||
//if (!report_down_up) { /* no previous reporting message, so report here before exit */
|
//if (!report_down_up) { /* no previous reporting message, so report here before exit */
|
||||||
printf("#%*s is down!\n", max_devname_len, devname[idx]);
|
printf("# %*s is down!\n", max_devname_len, devname[idx]);
|
||||||
//}
|
//}
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue