#include "utils.h"
#include "namespace.h"
-int timestamp_short = 0;
+int timestamp_short;
int get_hex(char c)
{
res = strtol(arg, &ptr, base);
/* If there were no digits at all, strtol() stores
- * the original value of nptr in *endptr (and returns 0).
+ * the original value of nptr in *endptr (and returns 0).
* In particular, if *nptr is not '\0' but **endptr is '\0' on return,
* the entire string is valid.
*/
int mask2bits(__u32 netmask)
{
- unsigned bits = 0;
+ unsigned int bits = 0;
__u32 mask = ntohl(netmask);
__u32 host = ~mask;
return bits;
}
-static int get_netmask(unsigned *val, const char *arg, int base)
+static int get_netmask(unsigned int *val, const char *arg, int base)
{
inet_prefix addr;
return -1;
}
-int get_unsigned(unsigned *val, const char *arg, int base)
+int get_unsigned(unsigned int *val, const char *arg, int base)
{
unsigned long res;
char *ptr;
* pass milliseconds (standard unit for rtt values since 2.6.27), and
* have a different assumption for the units of a "raw" number.
*/
-int get_time_rtt(unsigned *val, const char *arg, int *raw)
+int get_time_rtt(unsigned int *val, const char *arg, int *raw)
{
double t;
unsigned long res;
if (*p) {
*raw = 0;
- if (strcasecmp(p, "s") == 0 || strcasecmp(p, "sec")==0 ||
- strcasecmp(p, "secs")==0)
- t *= 1000;
- else if (strcasecmp(p, "ms") == 0 || strcasecmp(p, "msec")==0 ||
- strcasecmp(p, "msecs") == 0)
+ if (strcasecmp(p, "s") == 0 ||
+ strcasecmp(p, "sec") == 0 ||
+ strcasecmp(p, "secs") == 0)
+ t *= 1000;
+ else if (strcasecmp(p, "ms") == 0 ||
+ strcasecmp(p, "msec") == 0 ||
+ strcasecmp(p, "msecs") == 0)
t *= 1.0; /* allow suffix, do nothing */
- else
- return -1;
- }
+ else
+ return -1;
+ }
/* emulate ceil() without having to bring-in -lm and always be >= 1 */
-
*val = t;
if (*val < t)
*val += 1;
- return 0;
+ return 0;
}
if (res > 0xFFFFFFFFFFFFFFFFULL)
return -1;
- *val = res;
- return 0;
+ *val = res;
+ return 0;
}
int get_u32(__u32 *val, const char *arg, int base)
break;
if (i == 3 || *endp != '.')
- return -1; /* extra characters */
+ return -1; /* extra characters */
cp = endp + 1;
}
if (family == AF_PACKET) {
int len;
- len = ll_addr_a2n((char *)&addr->data, sizeof(addr->data), name);
+
+ len = ll_addr_a2n(&addr->data, sizeof(addr->data), name);
if (len < 0)
return -1;
if (family == AF_DECnet) {
struct dn_naddr dna;
+
addr->family = AF_DECnet;
if (dnet_pton(AF_DECnet, name, &dna) <= 0)
return -1;
if (family == AF_MPLS) {
int i;
+
addr->family = AF_MPLS;
if (mpls_pton(AF_MPLS, name, addr->data) <= 0)
return -1;
int get_prefix_1(inet_prefix *dst, char *arg, int family)
{
int err;
- unsigned plen;
+ unsigned int plen;
char *slash;
memset(dst, 0, sizeof(*dst));
int get_addr(inet_prefix *dst, const char *arg, int family)
{
if (get_addr_1(dst, arg, family)) {
- fprintf(stderr, "Error: %s address is expected rather than \"%s\".\n",
- family_name(dst->family) ,arg);
+ fprintf(stderr,
+ "Error: %s address is expected rather than \"%s\".\n",
+ family_name(dst->family), arg);
exit(1);
}
return 0;
int get_prefix(inet_prefix *dst, char *arg, int family)
{
if (family == AF_PACKET) {
- fprintf(stderr, "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n", arg);
+ fprintf(stderr,
+ "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n",
+ arg);
exit(1);
}
if (get_prefix_1(dst, arg, family)) {
- fprintf(stderr, "Error: %s prefix is expected rather than \"%s\".\n",
- family_name(dst->family) ,arg);
+ fprintf(stderr,
+ "Error: %s prefix is expected rather than \"%s\".\n",
+ family_name(dst->family), arg);
exit(1);
}
return 0;
__u32 get_addr32(const char *name)
{
inet_prefix addr;
+
if (get_addr_1(&addr, name, AF_INET)) {
- fprintf(stderr, "Error: an IP address is expected rather than \"%s\"\n", name);
+ fprintf(stderr,
+ "Error: an IP address is expected rather than \"%s\"\n",
+ name);
exit(1);
}
return addr.data[0];
void duparg(const char *key, const char *arg)
{
- fprintf(stderr, "Error: duplicate \"%s\": \"%s\" is the second value.\n", key, arg);
+ fprintf(stderr,
+ "Error: duplicate \"%s\": \"%s\" is the second value.\n",
+ key, arg);
exit(-1);
}
void duparg2(const char *key, const char *arg)
{
- fprintf(stderr, "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n", key, arg);
+ fprintf(stderr,
+ "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n",
+ key, arg);
exit(-1);
}
int matches(const char *cmd, const char *pattern)
{
int len = strlen(cmd);
+
if (len > strlen(pattern))
return -1;
return memcmp(pattern, cmd, len);
if (getenv("HZ"))
return atoi(getenv("HZ")) ? : HZ;
- if (getenv("PROC_NET_PSCHED")) {
- snprintf(name, sizeof(name)-1, "%s", getenv("PROC_NET_PSCHED"));
- } else if (getenv("PROC_ROOT")) {
- snprintf(name, sizeof(name)-1, "%s/net/psched", getenv("PROC_ROOT"));
- } else {
+ if (getenv("PROC_NET_PSCHED"))
+ snprintf(name, sizeof(name)-1,
+ "%s", getenv("PROC_NET_PSCHED"));
+ else if (getenv("PROC_ROOT"))
+ snprintf(name, sizeof(name)-1,
+ "%s/net/psched", getenv("PROC_ROOT"));
+ else
strcpy(name, "/proc/net/psched");
- }
+
fp = fopen(name, "r");
if (fp) {
- unsigned nom, denom;
+ unsigned int nom, denom;
+
if (fscanf(fp, "%*08x%*08x%08x%08x", &nom, &denom) == 2)
if (nom == 1000000)
hz = denom;
return sysconf(_SC_CLK_TCK);
}
-const char *rt_addr_n2a_r(int af, int len, const void *addr, char *buf, int buflen)
+const char *rt_addr_n2a_r(int af, int len,
+ const void *addr, char *buf, int buflen)
{
switch (af) {
case AF_INET:
return ipx_ntop(af, addr, buf, buflen);
case AF_DECnet:
{
- struct dn_naddr dna = { 2, { 0, 0, }};
+ struct dn_naddr dna = { 2, { 0, 0, } };
+
memcpy(dna.a_addr, addr, 2);
return dnet_ntop(af, &dna, buf, buflen);
}
int read_family(const char *name)
{
int family = AF_UNSPEC;
+
if (strcmp(name, "inet") == 0)
family = AF_INET;
else if (strcmp(name, "inet6") == 0)
}
#ifdef RESOLVE_HOSTNAMES
-struct namerec
-{
+struct namerec {
struct namerec *next;
const char *name;
inet_prefix addr;
{
struct namerec *n;
struct hostent *h_ent;
- unsigned hash;
+ unsigned int hash;
static int notfirst;
- if (af == AF_INET6 && ((__u32*)addr)[0] == 0 &&
- ((__u32*)addr)[1] == 0 && ((__u32*)addr)[2] == htonl(0xffff)) {
+ if (af == AF_INET6 && ((__u32 *)addr)[0] == 0 &&
+ ((__u32 *)addr)[1] == 0 && ((__u32 *)addr)[2] == htonl(0xffff)) {
af = AF_INET;
addr += 12;
len = 4;
memcmp(n->addr.data, addr, len) == 0)
return n->name;
}
- if ((n = malloc(sizeof(*n))) == NULL)
+ n = malloc(sizeof(*n));
+ if (n == NULL)
return NULL;
n->addr.family = af;
n->addr.bytelen = len;
sethostent(1);
fflush(stdout);
- if ((h_ent = gethostbyaddr(addr, len, af)) != NULL)
+ h_ent = gethostbyaddr(addr, len, af);
+ if (h_ent != NULL)
n->name = strdup(h_ent->h_name);
/* Even if we fail, "negative" entry is remembered. */
char *ptr = buf;
int i;
- for (i=0; i<len; i++) {
+ for (i = 0; i < len; i++) {
if (blen < 3)
break;
sprintf(ptr, "%02x", str[i]);
ssize_t cc;
char *cp;
- if ((cc = getline(linep, lenp, in)) < 0)
+ cc = getline(linep, lenp, in);
+ if (cc < 0)
return cc; /* eof or error */
++cmdlineno;
size_t len1 = 0;
ssize_t cc1;
- if ((cc1 = getline(&line1, &len1, in)) < 0) {
+ cc1 = getline(&line1, &len1, in);
+ if (cc1 < 0) {
fprintf(stderr, "Missing continuation line\n");
return cc1;
}
void print_nlmsg_timestamp(FILE *fp, const struct nlmsghdr *n)
{
char *tstr;
- time_t secs = ((__u32*)NLMSG_DATA(n))[0];
- long usecs = ((__u32*)NLMSG_DATA(n))[1];
+ time_t secs = ((__u32 *)NLMSG_DATA(n))[0];
+ long usecs = ((__u32 *)NLMSG_DATA(n))[1];
+
tstr = asctime(localtime(&secs));
tstr[strlen(tstr)-1] = 0;
fprintf(fp, "Timestamp: %s %lu us\n", tstr, usecs);