version 1.15, 2008/12/15 20:16:20 |
version 1.16, 2008/12/15 21:18:37 |
|
|
|
|
char *any_ntoa(const struct sockaddr *); |
char *any_ntoa(const struct sockaddr *); |
char *link_print(struct sockaddr *); |
char *link_print(struct sockaddr *); |
char *label_print_op(u_int8_t); |
char *label_print_op(u_int32_t); |
char *label_print(struct sockaddr *); |
char *label_print(struct sockaddr *); |
|
|
#define ROUNDUP(a) \ |
#define ROUNDUP(a) \ |
|
|
cp = netname((struct sockaddr *)sa6, mask); |
cp = netname((struct sockaddr *)sa6, mask); |
break; |
break; |
} |
} |
|
case AF_MPLS: |
|
if (flags & RTF_HOST || mask == NULL) |
|
cp = routename(sa); |
|
else |
|
cp = netname(sa, mask); |
|
|
|
snprintf(cp, MAXHOSTNAMELEN, "%s %s", cp, |
|
label_print_op(flags)); |
|
|
|
break; |
default: |
default: |
if ((flags & RTF_HOST) || mask == NULL) |
if ((flags & RTF_HOST) || mask == NULL) |
cp = routename(sa); |
cp = routename(sa); |
|
|
|
|
case AF_LINK: |
case AF_LINK: |
return (link_print(sa)); |
return (link_print(sa)); |
#if 0 |
|
case AF_MPLS: |
case AF_MPLS: |
return (label_print(sa)); |
return (label_print(sa)); |
#endif |
|
case AF_UNSPEC: |
case AF_UNSPEC: |
if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) { |
if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) { |
static char name[RTLABEL_LEN]; |
static char name[RTLABEL_LEN]; |
|
|
(struct sockaddr_in6 *)mask); |
(struct sockaddr_in6 *)mask); |
case AF_LINK: |
case AF_LINK: |
return (link_print(sa)); |
return (link_print(sa)); |
#if 0 |
|
case AF_MPLS: |
case AF_MPLS: |
return (label_print(sa)); |
return (label_print(sa)); |
#endif |
|
default: |
default: |
snprintf(line, sizeof(line), "af %d: %s", |
snprintf(line, sizeof(line), "af %d: %s", |
sa->sa_family, any_ntoa(sa)); |
sa->sa_family, any_ntoa(sa)); |
|
|
} |
} |
} |
} |
|
|
#if 0 |
|
char * |
char * |
label_print_op(u_int8_t type) |
label_print_op(u_int32_t type) |
{ |
{ |
switch (type) { |
switch (type & (MPLS_OP_PUSH | MPLS_OP_POP | MPLS_OP_SWAP)) { |
case MPLS_OP_POP: |
case MPLS_OP_POP: |
return ("POP"); |
return ("POP"); |
case MPLS_OP_SWAP: |
case MPLS_OP_SWAP: |
|
|
char *in_label; |
char *in_label; |
char *out_label; |
char *out_label; |
|
|
if (asprintf(&in_label, "%u%%%s", |
if (asprintf(&in_label, "%u", |
ntohl(smpls->smpls_in_label) >> MPLS_LABEL_OFFSET, |
ntohl(smpls->smpls_in_label) >> MPLS_LABEL_OFFSET) == -1) |
if_indextoname(smpls->smpls_in_ifindex, ifname_in)) == -1) |
|
err(1, NULL); |
err(1, NULL); |
|
|
if (asprintf(&out_label, "%u", |
if (asprintf(&out_label, "%u", |
ntohl(smpls->smpls_out_label) >> MPLS_LABEL_OFFSET) == -1) |
ntohl(smpls->smpls_out_label) >> MPLS_LABEL_OFFSET) == -1) |
err(1, NULL); |
err(1, NULL); |
|
|
(void)snprintf(line, sizeof(line), "%-16s %-10s %-6s", in_label, |
(void)snprintf(line, sizeof(line), "%-16s %-10s", in_label, |
smpls->smpls_operation == MPLS_OP_POP ? "-" : out_label, |
out_label); |
label_print_op(smpls->smpls_operation)); |
|
|
|
free(in_label); |
free(in_label); |
free(out_label); |
free(out_label); |
|
|
return (line); |
return (line); |
} |
} |
#endif |
|
|
|
void |
void |
index_pfk(struct sadb_msg *msg, void **headers) |
index_pfk(struct sadb_msg *msg, void **headers) |