static void mpls_header_init(struct proto_hdr *hdr) { proto_lower_default_add(hdr, PROTO_ETH); proto_header_fields_add(hdr, mpls_fields, array_size(mpls_fields)); proto_hdr_field_set_default_be32(hdr, MPLS_LAST, 1); }
static void ipv6_header_init(struct proto_hdr *hdr) { struct dev_io *dev = proto_dev_get(); /* In case of tun interface we do not need to create Ethernet header */ if (dev_io_is_netdev(dev) && device_type(dev_io_name_get(dev)) != ARPHRD_NONE) proto_lower_default_add(hdr, PROTO_ETH); proto_header_fields_add(hdr, ipv6_fields, array_size(ipv6_fields)); proto_hdr_field_set_default_be32(hdr, IP6_VER, 6); proto_hdr_field_set_default_dev_ipv6(hdr, IP6_SADDR); }
static void mpls_set_next_proto(struct proto_hdr *hdr, enum proto_id pid) { if (pid == PROTO_MPLS) proto_hdr_field_set_default_be32(hdr, MPLS_LAST, 0); }