lisp: Move to plugin
[vpp.git] / src / vnet / lisp-cp / lisp_cp_messages.h
diff --git a/src/vnet/lisp-cp/lisp_cp_messages.h b/src/vnet/lisp-cp/lisp_cp_messages.h
deleted file mode 100644 (file)
index 69510a0..0000000
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VNET_LISP_GPE_LISP_CP_MESSAGES_H_
-#define VNET_LISP_GPE_LISP_CP_MESSAGES_H_
-
-#include <vnet/vnet.h>
-
-#define MAX_IP_PKT_LEN 4096
-#define MAX_IP_HDR_LEN 40      /* without options or IPv6 hdr extensions */
-#define UDP_HDR_LEN 8
-#define LISP_DATA_HDR_LEN 8
-#define LISP_ECM_HDR_LEN 4
-#define MAX_LISP_MSG_ENCAP_LEN  2*(MAX_IP_HDR_LEN + UDP_HDR_LEN)+ LISP_ECM_HDR_LEN
-#define MAX_LISP_PKT_ENCAP_LEN  MAX_IP_HDR_LEN + UDP_HDR_LEN + LISP_DATA_HDR_LEN
-
-#define LISP_CONTROL_PORT 4342
-
-/*
- * EID RECORD FIELD
- */
-
-/*
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    / |   Reserved    | EID mask-len  |        EID-prefix-AFI         |
- *  Rec +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    \ |                       EID-prefix  ...                         |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-
-typedef struct _eid_prefix_record_hdr
-{
-  u8 reserved;
-  u8 eid_prefix_length;
-} __attribute__ ((__packed__)) eid_record_hdr_t;
-
-void eid_rec_hdr_init (eid_record_hdr_t * ptr);
-
-#define EID_REC_CAST(h_) ((eid_record_hdr_t *)(h_))
-#define EID_REC_MLEN(h_) EID_REC_CAST((h_))->eid_prefix_length
-#define EID_REC_ADDR(h) (u8 *)(h) + sizeof(eid_record_hdr_t)
-
-/* LISP Types */
-typedef enum
-{
-  NOT_LISP_MSG,
-  LISP_MAP_REQUEST = 1,
-  LISP_MAP_REPLY,
-  LISP_MAP_REGISTER,
-  LISP_MAP_NOTIFY,
-  LISP_INFO_NAT = 7,
-  LISP_ENCAP_CONTROL_TYPE = 8,
-  LISP_MSG_TYPES
-} lisp_msg_type_e;
-
-/*
- * ENCAPSULATED CONTROL MESSAGE
- */
-
-/*
- *     0                   1                   2                   3
- *     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   / |                       IPv4 or IPv6 Header                     |
- * OH  |                      (uses RLOC addresses)                    |
- *   \ |                                                               |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   / |       Source Port = xxxx      |       Dest Port = 4342        |
- * UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   \ |           UDP Length          |        UDP Checksum           |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * LH  |Type=8 |S|                  Reserved                           |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   / |                       IPv4 or IPv6 Header                     |
- * IH  |                  (uses RLOC or EID addresses)                 |
- *   \ |                                                               |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   / |       Source Port = xxxx      |       Dest Port = yyyy        |
- * UDP +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   \ |           UDP Length          |        UDP Checksum           |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * LCM |                      LISP Control Message                     |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-
-/*
- * Encapsulated control message header. This is followed by the IP
- * header of the encapsulated LISP control message.
- *
- *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    |Type=8 |S|                 Reserved                            |
- *    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-typedef struct
-{
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 reserved:3;
-  u8 s_bit:1;
-  u8 type:4;
-#else
-  u8 type:4;
-  u8 s_bit:1;
-  u8 reserved:3;
-#endif
-  u8 reserved2[3];
-} ecm_hdr_t;
-
-char *ecm_hdr_to_char (ecm_hdr_t * h);
-
-#define ECM_TYPE(h_) ((ecm_hdr_t *)(h_))->type
-
-/*
- * MAP-REQUEST MESSAGE
- */
-
-/*
- * Map-Request Message Format
- *
- *       0                   1                   2                   3
- *       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |Type=1 |A|M|P|S|p|s|    Reserved     |   IRC   | Record Count  |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         Nonce . . .                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         . . . Nonce                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |         Source-EID-AFI        |   Source EID Address  ...     |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |         ITR-RLOC-AFI 1        |    ITR-RLOC Address 1  ...    |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                              ...                              |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |         ITR-RLOC-AFI n        |    ITR-RLOC Address n  ...    |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    / |   Reserved    | EID mask-len  |        EID-prefix-AFI         |
- *  Rec +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    \ |                       EID-prefix  ...                         |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                   Map-Reply Record  ...                       |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                     Mapping Protocol Data                     |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-
-/*
- * Fixed size portion of the map request. Variable size source EID
- * address, originating ITR RLOC AFIs and addresses and then map
- * request records follow.
- */
-typedef struct
-{
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 solicit_map_request:1;
-  u8 rloc_probe:1;
-  u8 map_data_present:1;
-  u8 authoritative:1;
-  u8 type:4;
-#else
-  u8 type:4;
-  u8 authoritative:1;
-  u8 map_data_present:1;
-  u8 rloc_probe:1;
-  u8 solicit_map_request:1;
-#endif
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 reserved1:6;
-  u8 smr_invoked:1;
-  u8 pitr:1;
-#else
-  u8 pitr:1;
-  u8 smr_invoked:1;
-  u8 reserved1:6;
-#endif
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 additional_itr_rloc_count:5;
-  u8 reserved2:3;
-#else
-  u8 reserved2:3;
-  u8 additional_itr_rloc_count:5;
-#endif
-  u8 record_count;
-  u64 nonce;
-} __attribute__ ((__packed__)) map_request_hdr_t;
-
-void map_request_hdr_init (void *ptr);
-char *map_request_hdr_to_char (map_request_hdr_t * h);
-
-#define MREQ_TYPE(h_) (h_)->type
-#define MREQ_HDR_CAST(h_) ((map_request_hdr_t *)(h_))
-#define MREQ_REC_COUNT(h_) (MREQ_HDR_CAST(h_))->record_count
-#define MREQ_RLOC_PROBE(h_) (MREQ_HDR_CAST(h_))->rloc_probe
-#define MREQ_ITR_RLOC_COUNT(h_) (MREQ_HDR_CAST(h_))->additional_itr_rloc_count
-#define MREQ_NONCE(h_) (MREQ_HDR_CAST(h_))->nonce
-#define MREQ_SMR(h_) (MREQ_HDR_CAST(h_))->solicit_map_request
-#define MREQ_SMR_INVOKED(h_) (MREQ_HDR_CAST(h_))->smr_invoked
-
-/*
- * MAP-REPLY MESSAGE
- */
-
- /*
-  * Map-Reply Message Format
-  *
-  *       0                   1                   2                   3
-  *       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-  *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *      |Type=2 |P|E|S|         Reserved                | Record Count  |
-  *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *      |                         Nonce . . .                           |
-  *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *      |                         . . . Nonce                           |
-  *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  |   |                          Record  TTL                          |
-  *  |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
-  *  e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  c   | Rsvd  |  Map-Version Number   |            EID-AFI            |
-  *  o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  r   |                          EID-prefix                           |
-  *  d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  |  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
-  *  | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  | o |        Unused Flags     |L|p|R|           Loc-AFI             |
-  *  | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *  |  \|                            Locator                            |
-  *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  *      |                     Mapping Protocol Data                     |
-  *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-  */
-
- /*
-  * Fixed size portion of the map reply.
-  */
-typedef struct
-{
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 reserved1:1;
-  u8 security:1;
-  u8 echo_nonce:1;
-  u8 rloc_probe:1;
-  u8 type:4;
-#else
-  u8 type:4;
-  u8 rloc_probe:1;
-  u8 echo_nonce:1;
-  u8 security:1;
-  u8 reserved1:1;
-#endif
-  u8 reserved2;
-  u8 reserved3;
-  u8 record_count;
-  u64 nonce;
-} __attribute__ ((__packed__)) map_reply_hdr_t;
-
-void map_reply_hdr_init (void *ptr);
-char *map_reply_hdr_to_char (map_reply_hdr_t * h);
-
-#define MREP_TYPE(h_) MREP_HDR_CAST(h_)->type
-#define MREP_HDR_CAST(h_) ((map_reply_hdr_t *)(h_))
-#define MREP_REC_COUNT(h_) MREP_HDR_CAST(h_)->record_count
-#define MREP_RLOC_PROBE(h_) MREP_HDR_CAST(h_)->rloc_probe
-#define MREP_NONCE(h_) MREP_HDR_CAST(h_)->nonce
-
-
-always_inline lisp_msg_type_e
-lisp_msg_type (void *b)
-{
-  ecm_hdr_t *hdr = b;
-  if (!hdr)
-    {
-      return (NOT_LISP_MSG);
-    }
-  return (hdr->type);
-}
-
-always_inline void
-increment_record_count (void *b)
-{
-  switch (lisp_msg_type (b))
-    {
-    case LISP_MAP_REQUEST:
-      MREQ_REC_COUNT (b) += 1;
-      break;
-    case LISP_MAP_REPLY:
-      MREP_REC_COUNT (b) += 1;
-      break;
-    default:
-      return;
-    }
-}
-
-
-/*
- * LOCATOR FIELD
- *
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    /|    Priority   |    Weight     |  M Priority   |   M Weight    |
- *   L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   o |        Unused Flags     |L|p|R|           Loc-AFI             |
- *   c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *    \|                            Locator                            |
- *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * Fixed portion of the mapping record locator. Variable length
- * locator address follows.
- */
-typedef struct _locator_hdr
-{
-  u8 priority;
-  u8 weight;
-  u8 mpriority;
-  u8 mweight;
-  u8 unused1;
-#ifdef CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 reachable:1;
-  u8 probed:1;
-  u8 local:1;
-  u8 unused2:5;
-#else
-  u8 unused2:5;
-  u8 local:1;
-  u8 probed:1;
-  u8 reachable:1;
-#endif
-} __attribute__ ((__packed__)) locator_hdr_t;
-
-#define LOC_CAST(h_) ((locator_hdr_t *)(h_))
-#define LOC_PROBED(h_) LOC_CAST(h_)->probed
-#define LOC_PRIORITY(h_) LOC_CAST(h_)->priority
-#define LOC_WEIGHT(h_) LOC_CAST(h_)->weight
-#define LOC_MPRIORITY(h_) LOC_CAST(h_)->mpriority
-#define LOC_MWEIGHT(h_) LOC_CAST(h_)->mweight
-#define LOC_REACHABLE(h_) LOC_CAST(h_)->reachable
-#define LOC_LOCAL(h_) LOC_CAST(h_)->local
-#define LOC_ADDR(h_) ((u8 *)(h_)  + sizeof(locator_hdr_t))
-
-/*
- * MAPPING RECORD
- *
- * Mapping record used in all LISP control messages.
- *
- *  +--->  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |      |                          Record  TTL                          |
- *  |      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  R      | Locator Count | EID mask-len  | ACT |A|       Reserved        |
- *  e      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  c      | Rsvd  |  Map-Version Number   |            EID-AFI            |
- *  o      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  r      |                          EID-prefix                           |
- *  d      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |     /|    Priority   |    Weight     |  M Priority   |   M Weight    |
- *  |    / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |  Loc |         Unused Flags    |L|p|R|           Loc-AFI             |
- *  |    \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |     \|                             Locator                           |
- *  +--->  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-/*
- * Fixed portion of the mapping record. EID prefix address and
- * locators follow.
- */
-
-typedef struct _mapping_record_hdr_t
-{
-  u32 ttl;
-  u8 locator_count;
-  u8 eid_prefix_length;
-#ifdef CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 reserved1:4;
-  u8 authoritative:1;
-  u8 action:3;
-#else
-  u8 action:3;
-  u8 authoritative:1;
-  u8 reserved1:4;
-#endif
-  u8 reserved2;
-#ifdef CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 version_hi:4;
-  u8 reserved3:4;
-#else
-  u8 reserved3:4;
-  u8 version_hi:4;
-#endif
-  u8 version_low;
-} __attribute__ ((__packed__)) mapping_record_hdr_t;
-
-void mapping_record_init_hdr (mapping_record_hdr_t * h);
-
-#define MAP_REC_EID_PLEN(h) ((mapping_record_hdr_t *)(h))->eid_prefix_length
-#define MAP_REC_LOC_COUNT(h) ((mapping_record_hdr_t *)(h))->locator_count
-#define MAP_REC_ACTION(h) ((mapping_record_hdr_t *)(h))->action
-#define MAP_REC_AUTH(h) ((mapping_record_hdr_t *)(h))->authoritative
-#define MAP_REC_TTL(h) ((mapping_record_hdr_t *)(h))->ttl
-#define MAP_REC_EID(h) (u8 *)(h)+sizeof(mapping_record_hdr_t)
-#define MAP_REC_VERSION(h) (h)->version_hi << 8 | (h)->version_low
-
-typedef enum
-{
-  LISP_NO_ACTION,
-  LISP_FORWARD_NATIVE,
-  LISP_SEND_MAP_REQUEST,
-  LISP_DROP
-} lisp_action_e;
-
-typedef enum lisp_authoritative
-{
-  A_NO_AUTHORITATIVE = 0,
-  A_AUTHORITATIVE
-} lisp_authoritative_e;
-
-/*
- * LISP Canonical Address Format Encodings
- *
- *   0                   1                   2                   3
- *   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |           AFI = 16387         |     Rsvd1     |     Flags     |
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |    Type       |     Rsvd2     |            Length             |
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-typedef struct _lcaf_hdr_t
-{
-  u8 reserved1;
-  u8 flags;
-  u8 type;
-  u8 reserved2;
-  u16 len;
-} __attribute__ ((__packed__)) lcaf_hdr_t;
-
-#define LCAF_TYPE(h) ((lcaf_hdr_t *)(h))->type
-#define LCAF_LENGTH(h) ((lcaf_hdr_t *)(h))->len
-#define LCAF_RES2(h) ((lcaf_hdr_t *)(h))->reserved2
-#define LCAF_FLAGS(h) ((lcaf_hdr_t *)(h))->flags
-#define LCAF_PAYLOAD(h) (u8 *)(h)+sizeof(lcaf_hdr_t)
-
-/*
- * Source/Dest Key Canonical Address Format:
- *
- *   0                   1                   2                   3
- *   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   |            Reserved           |   Source-ML   |    Dest-ML    |
- *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-typedef struct _lcaf_src_dst_hdr_t
-{
-  u16 reserved;
-  u8 src_mask_len;
-  u8 dst_mask_len;
-} __attribute__ ((__packed__)) lcaf_src_dst_hdr_t;
-
-#define LCAF_SD_SRC_ML(_h) (_h)->src_mask_len
-#define LCAF_SD_DST_ML(_h) (_h)->dst_mask_len
-
-/*
- * SPI LCAF
- *
- *    0                   1                   2                   3
- *    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *   |              Service Path ID                  | Service index |
- *   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-typedef struct _lcaf_spi_hdr_t
-{
-  u32 spi_si;
-} __attribute__ ((__packed__)) lcaf_spi_hdr_t;
-
-#define LCAF_SPI_SI(_h) (_h)->spi_si
-
-/*
- * The Map-Register message format is:
- *
- *       0                   1                   2                   3
- *       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |Type=3 |P|            Reserved               |M| Record Count  |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         Nonce . . .                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         . . . Nonce                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |            Key ID             |  Authentication Data Length   |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      ~                     Authentication Data                       ~
- *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |   |                          Record TTL                           |
- *  |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
- *  e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  c   | Rsvd  |  Map-Version Number   |        EID-Prefix-AFI         |
- *  o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  r   |                          EID-Prefix                           |
- *  d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
- *  | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  | o |        Unused Flags     |L|p|R|           Loc-AFI             |
- *  | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |  \|                             Locator                           |
- *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-typedef struct
-{
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 res1:3;
-  u8 proxy_map_reply:1;
-  u8 type:4;
-#else
-  u8 type:4;
-  u8 proxy_map_reply:1;
-  u8 res1:3;
-#endif
-
-  u8 res2;
-
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 want_map_notify:1;
-  u8 res3:7;
-#else
-  u8 res3:7;
-  u8 want_map_notify:1;
-#endif
-
-  u8 record_count;
-  u64 nonce;
-  u16 key_id;
-  u16 auth_data_len;
-  u8 data[0];
-} __attribute__ ((__packed__)) map_register_hdr_t;
-
-#define MREG_TYPE(h_) (h_)->type
-#define MREG_HDR_CAST(h_) ((map_register_hdr_t *)(h_))
-#define MREG_PROXY_MR(h_) (MREG_HDR_CAST(h_))->proxy_map_reply
-#define MREG_WANT_MAP_NOTIFY(h_) (MREG_HDR_CAST(h_))->want_map_notify
-#define MREG_REC_COUNT(h_) (MREG_HDR_CAST(h_))->record_count
-#define MREG_NONCE(h_) (MREG_HDR_CAST(h_))->nonce
-#define MREG_KEY_ID(h_) (MREG_HDR_CAST(h_))->key_id
-#define MREG_AUTH_DATA_LEN(h_) (MREG_HDR_CAST(h_))->auth_data_len
-#define MREG_DATA(h_) (MREG_HDR_CAST(h_))->data
-
-/*
- * The Map-Notify message format is:
- *
- *       0                   1                   2                   3
- *       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |Type=4 |              Reserved                 | Record Count  |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         Nonce . . .                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |                         . . . Nonce                           |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      |            Key ID             |  Authentication Data Length   |
- *      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *      ~                     Authentication Data                       ~
- *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |   |                          Record TTL                           |
- *  |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  R   | Locator Count | EID mask-len  | ACT |A|      Reserved         |
- *  e   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  c   | Rsvd  |  Map-Version Number   |         EID-Prefix-AFI        |
- *  o   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  r   |                          EID-Prefix                           |
- *  d   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |  /|    Priority   |    Weight     |  M Priority   |   M Weight    |
- *  | L +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  | o |        Unused Flags     |L|p|R|           Loc-AFI             |
- *  | c +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |  \|                             Locator                           |
- *  +-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-*/
-
-typedef struct
-{
-#if CLIB_ARCH_IS_LITTLE_ENDIAN
-  u8 res1:4;
-  u8 type:4;
-#else
-  u8 type:4;
-  u8 res1:4;
-#endif
-
-  u16 res2;
-
-  u8 record_count;
-  u64 nonce;
-  u16 key_id;
-  u16 auth_data_len;
-  u8 data[0];
-} __attribute__ ((__packed__)) map_notify_hdr_t;
-
-#define MNOTIFY_TYPE(h_) (h_)->type
-#define MNOTIFY_HDR_CAST(h_) ((map_register_hdr_t *)(h_))
-#define MNOTIFY_REC_COUNT(h_) (MREG_HDR_CAST(h_))->record_count
-#define MNOTIFY_NONCE(h_) (MREG_HDR_CAST(h_))->nonce
-#define MNOTIFY_KEY_ID(h_) (MREG_HDR_CAST(h_))->key_id
-#define MNOTIFY_AUTH_DATA_LEN(h_) (MREG_HDR_CAST(h_))->auth_data_len
-#define MNOTIFY_DATA(h_) (MREG_HDR_CAST(h_))->data
-
-/*
- *   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |Ver|O|C|R|R|R|R|R|R|   Length  |  MD type=0x1  | Next Protocol |
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *  |          Service Path Identifer               | Service Index |
- *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- */
-
-typedef struct
-{
-  u32 header;
-  u32 spi_si;
-} __attribute__ ((__packed__)) lisp_nsh_hdr_t;
-
-#endif /* VNET_LISP_GPE_LISP_CP_MESSAGES_H_ */
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */