//
// Created by xajhuang on 2023/3/18.
//

#ifndef VCPE_VLAN_H
#define VCPE_VLAN_H
#ifdef __cplusplus
extern "C" {
#endif

#include <netinet/ip.h>
#include <netinet/udp.h>
#include <linux/if_ether.h>
#include "common.h"

#pragma pack(push)
#pragma pack(1)

#define VXLAN_VIN_ID_PACK(x) ((ntohs(x)) & 0xFFF)

typedef struct vlan_hdr {
    U16 id;
    U16 type;
} VLAN_HDR, *PVLAN_HDR;

typedef struct {
    struct ethhdr   eth;
    struct vlan_hdr vlan;
    struct iphdr    ip;
    struct udphdr   udp;
} VLAN_PKG_HDR, *PVLAN_PKG_HDR;

#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif    //VCPE_VLAN_H