diff options
author | Bjørn Mork <bjorn@mork.no> | 2011-11-09 16:07:21 +0100 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2011-11-09 16:20:37 +0100 |
commit | 2bc7ba82d3c838352f8757c9f0454cc64af48cdb (patch) | |
tree | 801b0dfaff00cced4aaddae21a5f520c5e42907d /dhcpv6.h | |
parent | 7be3f0592841640c07819aa23f14735de9f767d5 (diff) |
Basic demo code, implementing a BPF to capture IPv6 udp 547 traffic
Still lacking most functionality, but at least capture is working
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'dhcpv6.h')
-rw-r--r-- | dhcpv6.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/dhcpv6.h b/dhcpv6.h new file mode 100644 index 0000000..1596034 --- /dev/null +++ b/dhcpv6.h @@ -0,0 +1,154 @@ +struct dhcpv6_msg { /* [RFC3315] ch 6 */ + u_int8_t msg_type; /* Message type */ + u_int8_t xid[3]; /* transaction-id */ + char options[]; /* options */ +}; + + +struct dhcpv6_relay_msg { /* [RFC3315] ch 7 */ + u_int8_t msg_type; /* Message type */ + u_int8_t hop_count; /* hop count */ + struct in6_addr link_addr; /* link address */ + struct in6_addr peer_addr; /* peer address */ + char options[]; /* options */ +}; + +struct dhcpv6_option { /* [RFC3315] generic option */ + u_int16_t code; /* option-code */ + u_int16_t len; /* option-len */ + char data[]; /* any */ +}; + +struct dhcpv6_interface_id { /* [RFC3315] ch 22.18 */ + u_int16_t code; /* option-code (18) */ + u_int16_t len; /* option-len */ + char id[]; /* interface-id */ +}; + +struct dhcpv6_remote_id { /* [RFC4649] */ + u_int16_t code; /* option-code (37) */ + u_int16_t len; /* option-len */ + u_int32_t enterprise; /* enterprise-number */ + char id[]; /* remote-id */ +}; + +struct dhcpv6_subscriber_id { /* [RFC4580] */ + u_int16_t code; /* option-code (38) */ + u_int16_t len; /* option-len */ + char id[]; /* subscriber-id */ +}; + +/* all the following are ref http://www.iana.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml */ + +/* message types */ +/* 0 Reserved */ +#define DHCPV6_SOLICIT 1 /* [RFC3315] */ +#define DHCPV6_ADVERTISE 2 /* [RFC3315] */ +#define DHCPV6_REQUEST 3 /* [RFC3315] */ +#define DHCPV6_CONFIRM 4 /* [RFC3315] */ +#define DHCPV6_RENEW 5 /* [RFC3315] */ +#define DHCPV6_REBIND 6 /* [RFC3315] */ +#define DHCPV6_REPLY 7 /* [RFC3315] */ +#define DHCPV6_RELEASE 8 /* [RFC3315] */ +#define DHCPV6_DECLINE 9 /* [RFC3315] */ +#define DHCPV6_RECONFIGURE 10 /* [RFC3315] */ +#define DHCPV6_INFORMATION_REQ 11 /* [RFC3315] */ +#define DHCPV6_RELAY_FORW 12 /* [RFC3315] */ +#define DHCPV6_RELAY_REPL 13 /* [RFC3315] */ +#define DHCPV6_LEASEQUERY 14 /* [RFC5007] */ +#define DHCPV6_LEASEQUERY_REPLY 15 /* [RFC5007] */ +#define DHCPV6_LEASEQUERY_DONE 16 /* [RFC5460] */ +#define DHCPV6_LEASEQUERY_DATA 17 /* [RFC5460] */ +/* 18-255 Unassigned */ + +/* option codes */ +/* 0 Reserved */ +#define OPTION_CLIENTID 1 /* [RFC3315] */ +#define OPTION_SERVERID 2 /* [RFC3315] */ +#define OPTION_IA_NA 3 /* [RFC3315] */ +#define OPTION_IA_TA 4 /* [RFC3315] */ +#define OPTION_IAADDR 5 /* [RFC3315] */ +#define OPTION_ORO 6 /* [RFC3315] */ +#define OPTION_PREFERENCE 7 /* [RFC3315] */ +#define OPTION_ELAPSED_TIME 8 /* [RFC3315] */ +#define OPTION_RELAY_MSG 9 /* [RFC3315] */ +/* 10 Unassigned */ +#define OPTION_AUTH 11 /* [RFC3315] */ +#define OPTION_UNICAST 12 /* [RFC3315] */ +#define OPTION_STATUS_CODE 13 /* [RFC3315] */ +#define OPTION_RAPID_COMMIT 14 /* [RFC3315] */ +#define OPTION_USER_CLASS 15 /* [RFC3315] */ +#define OPTION_VENDOR_CLASS 16 /* [RFC3315] */ +#define OPTION_VENDOR_OPTS 17 /* [RFC3315] */ +#define OPTION_INTERFACE_ID 18 /* [RFC3315] */ +#define OPTION_RECONF_MSG 19 /* [RFC3315] */ +#define OPTION_RECONF_ACCEPT 20 /* [RFC3315] */ +/* 21 SIP Servers Domain Name List [RFC3319] */ +/* 22 SIP Servers IPv6 Address List [RFC3319] */ +/* 23 DNS Recursive Name Server Option [RFC3646] */ +/* 24 Domain Search List option [RFC3646] */ +#define OPTION_IA_PD 25 /* [RFC3633] */ +#define OPTION_IAPREFIX 26 /* [RFC3633] */ +#define OPTION_NIS_SERVERS 27 /* [RFC3898] */ +#define OPTION_NISP_SERVERS 28 /* [RFC3898] */ +#define OPTION_NIS_DOMAIN_NAME 29 /* [RFC3898] */ +#define OPTION_NISP_DOMAIN_NAME 30 /* [RFC3898] */ +#define OPTION_SNTP_SERVERS 31 /* [RFC4075] */ +#define OPTION_INFORMATION_REFRESH_TIME 32 /* [RFC4242] */ +#define OPTION_BCMCS_SERVER_D 33 /* [RFC4280] */ +#define OPTION_BCMCS_SERVER_A 34 /* [RFC4280] */ +/* 35 Unassigned */ +#define OPTION_GEOCONF_CIVIC 36 /* [RFC4776] */ +#define OPTION_REMOTE_ID 37 /* [RFC4649] */ +#define OPTION_SUBSCRIBER_ID 38 /* [RFC4580] */ +#define OPTION_CLIENT_FQDN 39 /* [RFC4704] */ +#define OPTION_PANA_AGENT 40 /* [RFC5192] */ +#define OPTION_NEW_POSIX_TIMEZONE 41 /* [RFC4833] */ +#define OPTION_NEW_TZDB_TIMEZONE 42 /* [RFC4833] */ +#define OPTION_ERO 43 /* [RFC4994] */ +#define OPTION_LQ_QUERY 44 /* [RFC5007] */ +#define OPTION_CLIENT_DATA 45 /* [RFC5007] */ +#define OPTION_CLT_TIME 46 /* [RFC5007] */ +#define OPTION_LQ_RELAY_DATA 47 /* [RFC5007] */ +#define OPTION_LQ_CLIENT_LINK 48 /* [RFC5007] */ +#define OPTION_MIP6_HNINF 49 /* [RFC-ietf-mip6-hiopt-17] */ +#define OPTION_MIP6_RELAY 50 /* [RFC-ietf-mip6-hiopt-17] */ +#define OPTION_V6_LOST 51 /* [RFC5223] */ +#define OPTION_CAPWAP_AC_V6 52 /* [RFC5417] */ +#define OPTION_RELAY_ID 53 /* [RFC5460] */ +#define OPTION_IPv6_Address_MoS 54 /* [RFC5678] */ +#define OPTION_IPv6_FQDN_MoS 55 /* [RFC5678] */ +#define OPTION_NTP_SERVER 56 /* [RFC5908] */ +#define OPTION_V6_ACCESS_DOMAIN 57 /* [RFC5986] */ +#define OPTION_SIP_UA_CS_LIST 58 /* [RFC6011] */ +#define OPT_BOOTFILE_URL 59 /* [RFC5970] */ +#define OPT_BOOTFILE_PARAM 60 /* [RFC5970] */ +#define OPTION_CLIENT_ARCH_TYPE 61 /* [RFC5970] */ +#define OPTION_NII 62 /* [RFC5970] */ +#define OPTION_GEOLOCATION 63 /* [RFC6225] */ +#define OPTION_AFTR_NAME 64 /* [RFC6334] */ +#define OPTION_ERP_LOCAL_DOMAIN_NAME 65 /* [RFC-ietf-hokey-ldn-discovery-10] */ +#define OPTION_RSOO 66 /* [RFC-ietf-dhc-dhcpv6-relay-supplied-options-09] */ +/* 67-255 Unassigned */ + +/* Status Codes */ +#define Success 0 /* [RFC3315] */ +#define UnspecFail 1 /* [RFC3315] */ +#define NoAddrsAvail 2 /* [RFC3315] */ +#define NoBinding 3 /* [RFC3315] */ +#define NotOnLink 4 /* [RFC3315] */ +#define UseMulticast 5 /* [RFC3315] */ +#define NoPrefixAvail 6 /* [RFC3633] */ +#define UnknownQueryType 7 /* [RFC5007] */ +#define MalformedQuery 8 /* [RFC5007] */ +#define NotConfigured 9 /* [RFC5007] */ +#define NotAllowed 10 /* [RFC5007] */ +#define QueryTerminated 11 /* [RFC5460] */ +/* 12-255 Unassigned */ + + +/* DUID types */ +#define DUID_LLT 1 /* [RFC3315] */ +#define DUID_EN 2 /* [RFC3315] */ +#define DUID_LL 3 /* [RFC3315] */ +#define DUID_UUID 4 /* [RFC6355] */ |