if_varp.h

来自「xen虚拟机源代码安装包」· C头文件 代码 · 共 106 行

H
106
字号
/* * Copyright (C) 2004, 2005 Mike Wray <mike.wray@hp.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by the  * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free software Foundation, Inc., * 59 Temple Place, suite 330, Boston, MA 02111-1307 USA * */#ifndef _VNET_IF_VARP_H#define _VNET_IF_VARP_H/* Need struct in_addr, struct in6_addr. */#ifdef __KERNEL__#include <linux/in.h>#include <linux/in6.h>#else#include <sys/socket.h>#include <netinet/in.h>#endif#include <linux/if_ether.h>typedef struct Vmac {    unsigned char mac[ETH_ALEN];} Vmac;enum {    /* Varp protocol messages.     * Format is defined by struct VarpHdr.     */    VARP_ID          = 1,    /* Vnet ethernet in udp messages.     * Format is uint16_t id (VUDP_ID), then     * struct etheriphdr.     */    VUDP_ID          = 2,    /* Forwarded messages.     */    VFWD_ID          = 3,    /* Varp request. */    VARP_OP_REQUEST  = 1,    /* Varp announce. */    VARP_OP_ANNOUNCE = 2,};#define VNETID_SIZE8  16#define VNETID_SIZE16 (VNETID_SIZE8 >> 1)#define VNETID_SIZE32 (VNETID_SIZE8 >> 2)typedef struct VnetId {    union {        uint8_t  vnet8[VNETID_SIZE8];        uint16_t vnet16[VNETID_SIZE16];        uint32_t vnet32[VNETID_SIZE32];    } u;} __attribute__((packed)) VnetId;typedef struct VarpAddr {    uint8_t family; // AF_INET or AF_INET6.    union {        uint8_t raw[16];        struct in_addr ip4;        struct in6_addr ip6;    } u;    //uint16_t port;} __attribute__((packed)) VarpAddr;typedef struct VnetMsgHdr {    uint16_t id;    uint16_t opcode;} __attribute__((packed)) VnetMsgHdr;typedef struct VarpHdr {  VnetMsgHdr hdr;  VnetId vnet;  Vmac vmac;  VarpAddr addr;} __attribute__((packed)) VarpHdr;/** Default address for varp/vnet broadcasts: 224.10.0.1 */#define VARP_MCAST_ADDR     0xe00a0001/** UDP port to use for varp protocol. */#define VARP_PORT           1798#endif /* ! _VNET_IF_VARP_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?