mpls.h 932 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Copyright (c) 2014 Nicira, Inc.
  3. *
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of version 2 of the GNU General Public
  6. * License as published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope that it will be useful, but
  9. * WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. * General Public License for more details.
  12. */
  13. #ifndef _NET_MPLS_H
  14. #define _NET_MPLS_H 1
  15. #include <linux/if_ether.h>
  16. #include <linux/netdevice.h>
  17. #define MPLS_HLEN 4
  18. struct mpls_shim_hdr {
  19. __be32 label_stack_entry;
  20. };
  21. static inline bool eth_p_mpls(__be16 eth_type)
  22. {
  23. return eth_type == htons(ETH_P_MPLS_UC) ||
  24. eth_type == htons(ETH_P_MPLS_MC);
  25. }
  26. static inline struct mpls_shim_hdr *mpls_hdr(const struct sk_buff *skb)
  27. {
  28. return (struct mpls_shim_hdr *)skb_network_header(skb);
  29. }
  30. #endif