⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.h

📁 mobile ip 在linux下的一种实现
💻 H
📖 第 1 页 / 共 2 页
字号:
/* $Id: message.h,v 1.59 2001/08/23 17:00:47 jm Exp $ * Message structures and code defines for agent advertisment and registration * * Dynamic hierarchial IP tunnel * Copyright (C) 1998-2001, Dynamics group * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. See README and COPYING for * more details. */#ifndef MESSAGE_H#define MESSAGE_H#include <netinet/in.h>#include "owntypes.h"#ifdef OS_AMIGAOS/* AMIGAOS */#define ATTRIBUTE_PACKED#else/* default - Linux */#define ATTRIBUTE_PACKED __attribute__ ((packed))#endif/* Vendor extension defines (RFC 3115) *//* Critical Vendor/Organization Specific Extension */#define VENDOR_EXT_TYPE1 38#define VENDOR_EXT_HEADER1 __u8 type; __u8 reserved; __u16 length; \			   __u32 vendor_id; __u16 sub_type;/* Normal Vendor/Organization Specific Extension (NVSE) */#define VENDOR_EXT_TYPE2 134#define VENDOR_EXT_HEADER __u8 type; __u8 length; __u16 reserved; \			  __u32 vendor_id; __u16 sub_type;#define NVSE_HEADER_LEN 8/* SMI Network Management Private Enterprise Codes: * 5202  Helsinki University of Technology/CS-laboratory */#define VENDOR_ID_DYNAMICS 5202#define VENDOR_EXT_VERSION 1/* sub types for Dynamics vendor extensions */#define VENDOR_EXT_DYNAMICS_AGENTADV 1#define VENDOR_EXT_DYNAMICS_OPTIONS 2#define VENDOR_EXT_DYNAMICS_FA_KEYREQ 3#define VENDOR_EXT_DYNAMICS_FA_PUBKEY 4#define VENDOR_EXT_DYNAMICS_MN_KEYREQ 5#define VENDOR_EXT_DYNAMICS_MN_KEYREP 6#define VENDOR_EXT_DYNAMICS_FA_KEYREP 7#define VENDOR_EXT_DYNAMICS_FA_PUBKEYREP 8#define VENDOR_EXT_DYNAMICS_FF_AUTH 9#define VENDOR_EXT_DYNAMICS_SK_AUTH 10#define VENDOR_EXT_DYNAMICS_PUBKEY_HASH 11#define VENDOR_EXT_DYNAMICS_FA_NAI 12#define VENDOR_EXT_DYNAMICS_PREVIOUS_FA_NAI 13#define VENDOR_EXT_DYNAMICS_GRE_KEY 14#define VENDOR_EXT_DYNAMICS_SFA_DEBUG 15#define VENDOR_EXT_DYNAMICS_PRIV_HA 16#define VENDOR_EXT_DYNAMICS_SHA_HA_AUTH 17#define VENDOR_EXT_DYNAMICS_NONCE 18struct vendor_ext_header {	VENDOR_EXT_HEADER} ATTRIBUTE_PACKED;/* ICMP messages */struct router_adv {	__u8 type;       /* always 9 */	__u8 code;	__u16 checksum;	__u8 num_addr;	__u8 entry_size; /* always 2 */	__u16 lifetime;} ATTRIBUTE_PACKED;/* struct router_adv is followed by num_addr * struct router_adv_router */struct router_adv_router {	__u32 router_addr;	__u32 pref_level;} ATTRIBUTE_PACKED;/* RFC 2002, sec. 2.1.1 */#define AGENT_ADVERTISEMENT_EXTENSION_TYPE 16struct agent_adv_ext {	__u8 type;    /* always 16 */	__u8 length;	__u16 seq;	__u16 reg_lifetime;	__u16 opts;} ATTRIBUTE_PACKED;/* struct agent_adv_ext is followed by * N '__u32 co_addr's (length = 6 + 4*N) *//* advertisement extension options * RFC 2002, sec. 2.1.1 (flags R .. V) */#define AGENT_ADV_REGISTRATION_REQUIRED 0x8000#define AGENT_ADV_BUSY 0x4000#define AGENT_ADV_HOME_AGENT 0x2000#define AGENT_ADV_FOREIGN_AGENT 0x1000#define AGENT_ADV_MINIMAL_ENCAPSULATION 0x0800#define AGENT_ADV_GRE_ENCAPSULATION 0x0400#define AGENT_ADV_VJ_HDR_COMPRESSION 0x0200/* RFC 3024, sec. 3.1 (flag T) */#define AGENT_ADV_BIDIR_TUNNELING 0x0100/* RFC 2002, sec. 2.1.2 */#define PREFIX_LENGTHS_EXTENSION_TYPE 19struct prefix_len_ext {	__u8 type;    /* always 19 */	__u8 length;	/* followed by length 'Prefix Length' values (each one byte) in the	 * order that the router adddresses are listed in router adv. */} ATTRIBUTE_PACKED;#define MIN_AGENT_ADV_DYNAMICS_LEN (NVSE_HEADER_LEN + 3)/* Own vendor extension for agent advertisements */struct agent_adv_dynamics {	VENDOR_EXT_HEADER	__u8 version; /* vendor extension version */	__u8 opts;	__u8 reserved2;#ifdef INCLUDE_IPAY	__u32 timePrice;	__u32 bytePrice;#endif} ATTRIBUTE_PACKED;/* agent_adv_dynamics - opts: */#define AGENT_ADV_OWN_TRIANGLE_TUNNELING 0x80struct agent_sol {	__u8 type;  /* always 10 */	__u8 code;  /* always 0 */	__u16 checksum;	__u32 reserved; /* always 0 */} ATTRIBUTE_PACKED;/* the timestamp in the id fields uses NTP time format and is in seconds * since 00:00 (midnight) 1 January 1900; i.e. we must add 70 years * (including the leap days) to the UNIX time stamp (seconds since beginning * of 1970) */#define UNIX_NTP_DIFF 2208988800U/* * UDP messages */#define REG_REQ 1#define REG_REQ_ID_LEN 8/* RFC 2002, sec. 3.3 */#define REGREQ_SIMULTANEOUS_BINDINGS 0x80#define REGREQ_BROADCAST_DATAGRAMS   0x40#define REGREQ_MN_DECAPS             0x20#define REGREQ_MINIMAL_ENCAPS        0x10#define REGREQ_GRE_ENCAPS            0x08#define REGREQ_VJ_HC                 0x04/* RFC 3024, sec. 3.2 */#define REGREQ_REVERSE_TUNNEL        0x02#define REGREQ_RESERVED              0x01/* Registration Request */struct reg_req {	__u8 type;	__u8 opts;	__u16 lifetime;	struct in_addr home_addr;	struct in_addr ha_addr;	struct in_addr co_addr;	__u32 id[2];  /* timestamp */} ATTRIBUTE_PACKED;#define REG_REP 3/* Registration reply codes - accepted *//* RFC 2002 */#define REGREP_ACCEPTED              0#define REGREP_ACCEPTED_NO_SB        1/* Registration reply codes - denied by FA *//* RFC 2002 */#define REGREP_REASON_UNSPEC_FA     64#define REGREP_ADMIN_PROHIBITED_FA  65#define REGREP_NO_RESOURCES_FA      66#define REGREP_MN_FAILED_AUTH_FA    67#define REGREP_HA_FAILED_AUTH_FA    68#define REGREP_LONG_LIFETIME_FA     69#define REGREP_BAD_REQUEST_FA       70#define REGREP_BAD_REPLY_FA         71#define REGREP_ENCAP_UNAVAIL_FA     72#define REGREP_VJ_UNAVAIL_FA        73/* RFC 3024, sec. 3.4 */#define REGREP_REVERSE_TUNNEL_UNAVAIL_FA 74#define REGREP_REVERSE_TUNNEL_MANDATORY_FA 75#define REGREP_REVERSE_TUNNEL_MN_TOO_DISTANT_FA 76/* rfc2002-bis-02 */#define REGREP_INVALID_CAREOF_FA    77#define REGREP_REGISTRATION_TIMEOUT_FA 78/* RFC 3024, sec. 3.4 */#define REGREP_DELIVERY_STYLE_NOT_SUPPORTED_FA 79/* RFC 2002 */#define REGREP_HN_UNCREACHABLE_FA   80#define REGREP_HA_HOST_UNCREACHABLE_FA 81#define REGREP_HA_PORT_UNCREACHABLE_FA 82#define REGREP_HA_UNREACHABLE_FA    88/* RFC 2794 */#define REGREP_NONZERO_HOMEADDR_REQD_FA 96#define REGREP_MISSING_NAI_FA 97#define REGREP_MISSING_HOME_AGENT_FA 98#define REGREP_MISSING_HOMEADDR_FA 99/* RFC 3115 */#define REGREP_UNSUPP_VENDOR_ID_MN_FA 100#define REGREP_UNSUPP_VENDOR_ID_HA_FA 101/* RFC 3012 */#define REGREP_UNKNOWN_CHALLENGE_FA 104#define REGREP_MISSING_CHALLENGE_FA 105#define REGREP_STALE_CHALLENGE_FA 106/* draft-ietf-mobileip-aaa-key-07.txt */#define REGREP_MISSING_MN_FA_FA 107/* Registration reply codes - denied by HA *//* RFC 2002 */#define REGREP_REASON_UNSPEC_HA    128#define REGREP_ADMIN_PROHIBITED_HA 129#define REGREP_NO_RESOURCES_HA     130#define REGREP_MN_FAILED_AUTH_HA   131#define REGREP_FA_FAILED_AUTH_HA   132#define REGREP_ID_MISMATCH_HA      133#define REGREP_BAD_REQUEST_HA      134#define REGREP_TOO_MANY_SIMULTANEOUS 135#define REGREP_UNKNOWN_HA_HA       136/* RFC 3024, sec. 3.4 */#define REGREP_REVERSE_TUNNEL_UNAVAIL_HA 137#define REGREP_REVERSE_TUNNEL_MANDATORY_HA 138#define REGREP_ENCAP_UNAVAIL_HA 139/* RFC 3115 */#define REGREP_UNSUPP_VENDOR_ID_MN_HA 140#define REGREP_UNSUPP_VENDOR_ID_FA_HA 141#define IS_REGREP_ACCEPTED(code) \	((code) == REGREP_ACCEPTED || (code) == REGREP_ACCEPTED_NO_SB)/* Registration Reply */struct reg_rep {	__u8 type;	__u8 code;	__u16 lifetime;	struct in_addr home_addr;	struct in_addr ha_addr;	__u32 id[2];  /* timestamp */} ATTRIBUTE_PACKED;/* FA Registration; message types 240 and 241 have not been reserved yet * These messages must have extensions FA NAI and FA-FA auth */#define FA_REG_NONCE_LEN 8#define FA_REQ 240#define FA_REQ_NONCE_SYNC 0x80struct fa_reg_req {	__u8 type; /* FA_REQ */	__u8 opts; /* option flags, FA_REQ_* */	__u16 lifetime; /* registration lifetime in seconds */	__u8 up_nonce[FA_REG_NONCE_LEN]; /* previous nonce(up) */	__u8 down_nonce[FA_REG_NONCE_LEN]; /* next nonce(down) */} ATTRIBUTE_PACKED;#define FA_REP 241/* accept */#define FA_REP_OK 0/* denial */#define FA_REP_UNKNOWN_REASON 1#define FA_REP_NONCE_FAILED 2#define FA_REP_AUTH_FAILED 3#define FA_REP_INVALID_REQ 4struct fa_reg_rep {	__u8 type; /* FA_REP */	__u8 code; /* FA_REP_* */	__u8 up_nonce[FA_REG_NONCE_LEN]; /* next nonce(up) */	__u8 down_nonce[FA_REG_NONCE_LEN]; /* previous nonce(down) */} ATTRIBUTE_PACKED;/* * extensions *//* Own vendor extension for registration messages */struct registration_ext_dynamics {	VENDOR_EXT_HEADER	__u8 version; /* vendor extension version */	__u8 opts;	__u32 seq; /* MN req. sequence number for local location update		    * replay protection (increasing for current session key) */} ATTRIBUTE_PACKED;#define REG_EXT_OWN_TEAR_DOWN 0x80/* RFC 2002 * msg_auth type can be: * * 32 for Mobile-Home Authentication * 33 for Mobile-Foreign Authentication * 34 for Foreign-Home Authentication *  - contains MAC based on shared secret */#define MH_AUTH 32#define MF_AUTH 33#define FH_AUTH 34#define SPI_LEN 4#define GET_AUTH_EXT_LEN(msg_key) (msg_key->length + 2)#define GET_AUTH_LEN(msg_key) (msg_key->length - 4)#define MSG_AUTH_DATA(msg) (((unsigned char*)msg) + sizeof(struct msg_auth))struct msg_auth {	__u8 type;	__u8 length;	__u32 spi;} ATTRIBUTE_PACKED;/* Dynamics Authentication Additions (as vendor extensions) * VENDOR_EXT_DYNAMICS_FF_AUTH 9 * - Foreign-Foreign Authentication (used like extensions 32 - 34 in RFC 2002, *   but between Foreign Agents * VENDOR_EXT_DYNAMICS_SK_AUTH 10

⌨️ 快捷键说明

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