void lwt_print_encap(FILE *fp, struct rtattr *encap_type, struct rtattr *encap) { int et; if (!encap_type) return; et = rta_getattr_u16(encap_type); fprintf(fp, " encap %s ", format_encap_type(et)); switch (et) { case LWTUNNEL_ENCAP_MPLS: print_encap_mpls(fp, encap); break; case LWTUNNEL_ENCAP_IP: print_encap_ip(fp, encap); break; case LWTUNNEL_ENCAP_ILA: print_encap_ila(fp, encap); break; case LWTUNNEL_ENCAP_IP6: print_encap_ip6(fp, encap); break; } }
static size_t print_encap(char *op, size_t len, const encap_t* encap) { switch (encap->type) { case LWTUNNEL_ENCAP_MPLS: return print_encap_mpls(op, len, encap); case LWTUNNEL_ENCAP_IP: return print_encap_ip(op, len, encap); case LWTUNNEL_ENCAP_ILA: return print_encap_ila(op, len, encap); case LWTUNNEL_ENCAP_IP6: return print_encap_ip6(op, len, encap); } return snprintf(op, len, "unknown encap type %d", encap->type); }