]> The Tcpdump Group git mirrors - tcpdump/blobdiff - bootp.h
Add changes in 4.2.1.
[tcpdump] / bootp.h
diff --git a/bootp.h b/bootp.h
index c09c6ddd61cc83d9be440b124eb099c691345243..b1b81dce908434b1d1ba95b5ab9837a46582d809 100644 (file)
--- a/bootp.h
+++ b/bootp.h
@@ -1,4 +1,4 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/bootp.h,v 1.8 1999-10-17 23:35:46 mcr Exp $ (LBL) */
+/* @(#) $Header: /tcpdump/master/tcpdump/bootp.h,v 1.19 2008-04-22 09:46:03 hannes Exp $ (LBL) */
 /*
  * Bootstrap Protocol (BOOTP).  RFC951 and RFC1048.
  *
 
 
 struct bootp {
-       unsigned char   bp_op;          /* packet opcode type */
-       unsigned char   bp_htype;       /* hardware addr type */
-       unsigned char   bp_hlen;        /* hardware addr length */
-       unsigned char   bp_hops;        /* gateway hops */
+       u_int8_t        bp_op;          /* packet opcode type */
+       u_int8_t        bp_htype;       /* hardware addr type */
+       u_int8_t        bp_hlen;        /* hardware addr length */
+       u_int8_t        bp_hops;        /* gateway hops */
        u_int32_t       bp_xid;         /* transaction ID */
-       unsigned short  bp_secs;        /* seconds since boot began */
-       unsigned short  bp_flags;       /* flags: 0x8000 is broadcast */
+       u_int16_t       bp_secs;        /* seconds since boot began */
+       u_int16_t       bp_flags;       /* flags - see bootp_flag_values[]
+                                          in print-bootp.c */
        struct in_addr  bp_ciaddr;      /* client IP address */
        struct in_addr  bp_yiaddr;      /* 'your' IP address */
        struct in_addr  bp_siaddr;      /* server IP address */
        struct in_addr  bp_giaddr;      /* gateway IP address */
-       unsigned char   bp_chaddr[16];  /* client hardware address */
-       unsigned char   bp_sname[64];   /* server host name */
-       unsigned char   bp_file[128];   /* boot file name */
-       unsigned char   bp_vend[64];    /* vendor-specific area */
-};
+       u_int8_t        bp_chaddr[16];  /* client hardware address */
+       u_int8_t        bp_sname[64];   /* server host name */
+       u_int8_t        bp_file[128];   /* boot file name */
+       u_int8_t        bp_vend[64];    /* vendor-specific area */
+} UNALIGNED;
 
 /*
  * UDP port numbers, server and client.
@@ -44,9 +45,8 @@ struct bootp {
 #define        IPPORT_BOOTPS           67
 #define        IPPORT_BOOTPC           68
 
-#define BOOTREPLY              2
-#define BOOTREQUEST            1
-
+#define BOOTPREPLY             2
+#define BOOTPREQUEST           1
 
 /*
  * Vendor magic cookie (v_magic) for CMU
@@ -65,85 +65,133 @@ struct bootp {
  * the vendor field of the packet.
  */
 
-#define TAG_PAD                        ((unsigned char)   0)
-#define TAG_SUBNET_MASK                ((unsigned char)   1)
-#define TAG_TIME_OFFSET                ((unsigned char)   2)
-#define TAG_GATEWAY            ((unsigned char)   3)
-#define TAG_TIME_SERVER                ((unsigned char)   4)
-#define TAG_NAME_SERVER                ((unsigned char)   5)
-#define TAG_DOMAIN_SERVER      ((unsigned char)   6)
-#define TAG_LOG_SERVER         ((unsigned char)   7)
-#define TAG_COOKIE_SERVER      ((unsigned char)   8)
-#define TAG_LPR_SERVER         ((unsigned char)   9)
-#define TAG_IMPRESS_SERVER     ((unsigned char)  10)
-#define TAG_RLP_SERVER         ((unsigned char)  11)
-#define TAG_HOSTNAME           ((unsigned char)  12)
-#define TAG_BOOTSIZE           ((unsigned char)  13)
-#define TAG_END                        ((unsigned char) 255)
+#define TAG_PAD                        ((u_int8_t)   0)
+#define TAG_SUBNET_MASK                ((u_int8_t)   1)
+#define TAG_TIME_OFFSET                ((u_int8_t)   2)
+#define TAG_GATEWAY            ((u_int8_t)   3)
+#define TAG_TIME_SERVER                ((u_int8_t)   4)
+#define TAG_NAME_SERVER                ((u_int8_t)   5)
+#define TAG_DOMAIN_SERVER      ((u_int8_t)   6)
+#define TAG_LOG_SERVER         ((u_int8_t)   7)
+#define TAG_COOKIE_SERVER      ((u_int8_t)   8)
+#define TAG_LPR_SERVER         ((u_int8_t)   9)
+#define TAG_IMPRESS_SERVER     ((u_int8_t)  10)
+#define TAG_RLP_SERVER         ((u_int8_t)  11)
+#define TAG_HOSTNAME           ((u_int8_t)  12)
+#define TAG_BOOTSIZE           ((u_int8_t)  13)
+#define TAG_END                        ((u_int8_t) 255)
 /* RFC1497 tags */
-#define        TAG_DUMPPATH            ((unsigned char)  14)
-#define        TAG_DOMAINNAME          ((unsigned char)  15)
-#define        TAG_SWAP_SERVER         ((unsigned char)  16)
-#define        TAG_ROOTPATH            ((unsigned char)  17)
-#define        TAG_EXTPATH             ((unsigned char)  18)
+#define        TAG_DUMPPATH            ((u_int8_t)  14)
+#define        TAG_DOMAINNAME          ((u_int8_t)  15)
+#define        TAG_SWAP_SERVER         ((u_int8_t)  16)
+#define        TAG_ROOTPATH            ((u_int8_t)  17)
+#define        TAG_EXTPATH             ((u_int8_t)  18)
 /* RFC2132 */
-#define        TAG_IP_FORWARD          ((unsigned char)  19)
-#define        TAG_NL_SRCRT            ((unsigned char)  20)
-#define        TAG_PFILTERS            ((unsigned char)  21)
-#define        TAG_REASS_SIZE          ((unsigned char)  22)
-#define        TAG_DEF_TTL             ((unsigned char)  23)
-#define        TAG_MTU_TIMEOUT         ((unsigned char)  24)
-#define        TAG_MTU_TABLE           ((unsigned char)  25)
-#define        TAG_INT_MTU             ((unsigned char)  26)
-#define        TAG_LOCAL_SUBNETS       ((unsigned char)  27)
-#define        TAG_BROAD_ADDR          ((unsigned char)  28)
-#define        TAG_DO_MASK_DISC        ((unsigned char)  29)
-#define        TAG_SUPPLY_MASK         ((unsigned char)  30)
-#define        TAG_DO_RDISC            ((unsigned char)  31)
-#define        TAG_RTR_SOL_ADDR        ((unsigned char)  32)
-#define        TAG_STATIC_ROUTE        ((unsigned char)  33)
-#define        TAG_USE_TRAILERS        ((unsigned char)  34)
-#define        TAG_ARP_TIMEOUT         ((unsigned char)  35)
-#define        TAG_ETH_ENCAP           ((unsigned char)  36)
-#define        TAG_TCP_TTL             ((unsigned char)  37)
-#define        TAG_TCP_KEEPALIVE       ((unsigned char)  38)
-#define        TAG_KEEPALIVE_GO        ((unsigned char)  39)
-#define        TAG_NIS_DOMAIN          ((unsigned char)  40)
-#define        TAG_NIS_SERVERS         ((unsigned char)  41)
-#define        TAG_NTP_SERVERS         ((unsigned char)  42)
-#define        TAG_VENDOR_OPTS         ((unsigned char)  43)
-#define        TAG_NETBIOS_NS          ((unsigned char)  44)
-#define        TAG_NETBIOS_DDS         ((unsigned char)  45)
-#define        TAG_NETBIOS_NODE        ((unsigned char)  46)
-#define        TAG_NETBIOS_SCOPE       ((unsigned char)  47)
-#define        TAG_XWIN_FS             ((unsigned char)  48)
-#define        TAG_XWIN_DM             ((unsigned char)  49)
-#define        TAG_NIS_P_DOMAIN        ((unsigned char)  64)
-#define        TAG_NIS_P_SERVERS       ((unsigned char)  65)
-#define        TAG_MOBILE_HOME         ((unsigned char)  68)
-#define        TAG_SMPT_SERVER         ((unsigned char)  69)
-#define        TAG_POP3_SERVER         ((unsigned char)  70)
-#define        TAG_NNTP_SERVER         ((unsigned char)  71)
-#define        TAG_WWW_SERVER          ((unsigned char)  72)
-#define        TAG_FINGER_SERVER       ((unsigned char)  73)
-#define        TAG_IRC_SERVER          ((unsigned char)  74)
-#define        TAG_STREETTALK_SRVR     ((unsigned char)  75)
-#define        TAG_STREETTALK_STDA     ((unsigned char)  76)
+#define        TAG_IP_FORWARD          ((u_int8_t)  19)
+#define        TAG_NL_SRCRT            ((u_int8_t)  20)
+#define        TAG_PFILTERS            ((u_int8_t)  21)
+#define        TAG_REASS_SIZE          ((u_int8_t)  22)
+#define        TAG_DEF_TTL             ((u_int8_t)  23)
+#define        TAG_MTU_TIMEOUT         ((u_int8_t)  24)
+#define        TAG_MTU_TABLE           ((u_int8_t)  25)
+#define        TAG_INT_MTU             ((u_int8_t)  26)
+#define        TAG_LOCAL_SUBNETS       ((u_int8_t)  27)
+#define        TAG_BROAD_ADDR          ((u_int8_t)  28)
+#define        TAG_DO_MASK_DISC        ((u_int8_t)  29)
+#define        TAG_SUPPLY_MASK         ((u_int8_t)  30)
+#define        TAG_DO_RDISC            ((u_int8_t)  31)
+#define        TAG_RTR_SOL_ADDR        ((u_int8_t)  32)
+#define        TAG_STATIC_ROUTE        ((u_int8_t)  33)
+#define        TAG_USE_TRAILERS        ((u_int8_t)  34)
+#define        TAG_ARP_TIMEOUT         ((u_int8_t)  35)
+#define        TAG_ETH_ENCAP           ((u_int8_t)  36)
+#define        TAG_TCP_TTL             ((u_int8_t)  37)
+#define        TAG_TCP_KEEPALIVE       ((u_int8_t)  38)
+#define        TAG_KEEPALIVE_GO        ((u_int8_t)  39)
+#define        TAG_NIS_DOMAIN          ((u_int8_t)  40)
+#define        TAG_NIS_SERVERS         ((u_int8_t)  41)
+#define        TAG_NTP_SERVERS         ((u_int8_t)  42)
+#define        TAG_VENDOR_OPTS         ((u_int8_t)  43)
+#define        TAG_NETBIOS_NS          ((u_int8_t)  44)
+#define        TAG_NETBIOS_DDS         ((u_int8_t)  45)
+#define        TAG_NETBIOS_NODE        ((u_int8_t)  46)
+#define        TAG_NETBIOS_SCOPE       ((u_int8_t)  47)
+#define        TAG_XWIN_FS             ((u_int8_t)  48)
+#define        TAG_XWIN_DM             ((u_int8_t)  49)
+#define        TAG_NIS_P_DOMAIN        ((u_int8_t)  64)
+#define        TAG_NIS_P_SERVERS       ((u_int8_t)  65)
+#define        TAG_MOBILE_HOME         ((u_int8_t)  68)
+#define        TAG_SMPT_SERVER         ((u_int8_t)  69)
+#define        TAG_POP3_SERVER         ((u_int8_t)  70)
+#define        TAG_NNTP_SERVER         ((u_int8_t)  71)
+#define        TAG_WWW_SERVER          ((u_int8_t)  72)
+#define        TAG_FINGER_SERVER       ((u_int8_t)  73)
+#define        TAG_IRC_SERVER          ((u_int8_t)  74)
+#define        TAG_STREETTALK_SRVR     ((u_int8_t)  75)
+#define        TAG_STREETTALK_STDA     ((u_int8_t)  76)
 /* DHCP options */
-#define        TAG_REQUESTED_IP        ((unsigned char)  50)
-#define        TAG_IP_LEASE            ((unsigned char)  51)
-#define        TAG_OPT_OVERLOAD        ((unsigned char)  52)
-#define        TAG_TFTP_SERVER         ((unsigned char)  66)
-#define        TAG_BOOTFILENAME        ((unsigned char)  67)
-#define        TAG_DHCP_MESSAGE        ((unsigned char)  53)
-#define        TAG_SERVER_ID           ((unsigned char)  54)
-#define        TAG_PARM_REQUEST        ((unsigned char)  55)
-#define        TAG_MESSAGE             ((unsigned char)  56)
-#define        TAG_MAX_MSG_SIZE        ((unsigned char)  57)
-#define        TAG_RENEWAL_TIME        ((unsigned char)  58)
-#define        TAG_REBIND_TIME         ((unsigned char)  59)
-#define        TAG_VENDOR_CLASS        ((unsigned char)  60)
-#define        TAG_CLIENT_ID           ((unsigned char)  61)
+#define        TAG_REQUESTED_IP        ((u_int8_t)  50)
+#define        TAG_IP_LEASE            ((u_int8_t)  51)
+#define        TAG_OPT_OVERLOAD        ((u_int8_t)  52)
+#define        TAG_TFTP_SERVER         ((u_int8_t)  66)
+#define        TAG_BOOTFILENAME        ((u_int8_t)  67)
+#define        TAG_DHCP_MESSAGE        ((u_int8_t)  53)
+#define        TAG_SERVER_ID           ((u_int8_t)  54)
+#define        TAG_PARM_REQUEST        ((u_int8_t)  55)
+#define        TAG_MESSAGE             ((u_int8_t)  56)
+#define        TAG_MAX_MSG_SIZE        ((u_int8_t)  57)
+#define        TAG_RENEWAL_TIME        ((u_int8_t)  58)
+#define        TAG_REBIND_TIME         ((u_int8_t)  59)
+#define        TAG_VENDOR_CLASS        ((u_int8_t)  60)
+#define        TAG_CLIENT_ID           ((u_int8_t)  61)
+/* RFC 2241 */
+#define        TAG_NDS_SERVERS         ((u_int8_t)  85)
+#define        TAG_NDS_TREE_NAME       ((u_int8_t)  86)
+#define        TAG_NDS_CONTEXT         ((u_int8_t)  87)
+/* RFC 2242 */
+#define        TAG_NDS_IPDOMAIN        ((u_int8_t)  62)
+#define        TAG_NDS_IPINFO          ((u_int8_t)  63)
+/* RFC 2485 */
+#define        TAG_OPEN_GROUP_UAP      ((u_int8_t)  98)
+/* RFC 2563 */
+#define        TAG_DISABLE_AUTOCONF    ((u_int8_t) 116)
+/* RFC 2610 */
+#define        TAG_SLP_DA              ((u_int8_t)  78)
+#define        TAG_SLP_SCOPE           ((u_int8_t)  79)
+/* RFC 2937 */
+#define        TAG_NS_SEARCH           ((u_int8_t) 117)
+/* RFC 3011 */
+#define        TAG_IP4_SUBNET_SELECT   ((u_int8_t) 118)
+/* RFC 3442 */
+#define TAG_CLASSLESS_STATIC_RT        ((u_int8_t) 121)
+#define TAG_CLASSLESS_STA_RT_MS        ((u_int8_t) 249)
+/* ftp://ftp.isi.edu/.../assignments/bootp-dhcp-extensions */
+#define        TAG_USER_CLASS          ((u_int8_t)  77)
+#define        TAG_SLP_NAMING_AUTH     ((u_int8_t)  80)
+#define        TAG_CLIENT_FQDN         ((u_int8_t)  81)
+#define        TAG_AGENT_CIRCUIT       ((u_int8_t)  82)
+#define        TAG_AGENT_REMOTE        ((u_int8_t)  83)
+#define        TAG_AGENT_MASK          ((u_int8_t)  84)
+#define        TAG_TZ_STRING           ((u_int8_t)  88)
+#define        TAG_FQDN_OPTION         ((u_int8_t)  89)
+#define        TAG_AUTH                ((u_int8_t)  90)
+#define        TAG_VINES_SERVERS       ((u_int8_t)  91)
+#define        TAG_SERVER_RANK         ((u_int8_t)  92)
+#define        TAG_CLIENT_ARCH         ((u_int8_t)  93)
+#define        TAG_CLIENT_NDI          ((u_int8_t)  94)
+#define        TAG_CLIENT_GUID         ((u_int8_t)  97)
+#define        TAG_LDAP_URL            ((u_int8_t)  95)
+#define        TAG_6OVER4              ((u_int8_t)  96)
+#define        TAG_PRINTER_NAME        ((u_int8_t) 100)
+#define        TAG_MDHCP_SERVER        ((u_int8_t) 101)
+#define        TAG_IPX_COMPAT          ((u_int8_t) 110)
+#define        TAG_NETINFO_PARENT      ((u_int8_t) 112)
+#define        TAG_NETINFO_PARENT_TAG  ((u_int8_t) 113)
+#define        TAG_URL                 ((u_int8_t) 114)
+#define        TAG_FAILOVER            ((u_int8_t) 115)
+#define        TAG_EXTENDED_REQUEST    ((u_int8_t) 126)
+#define        TAG_EXTENDED_OPTION     ((u_int8_t) 127)
+
 
 /* DHCP Message types (values for TAG_DHCP_MESSAGE option) */
 #define                DHCPDISCOVER    1
@@ -161,16 +209,23 @@ struct bootp {
  */
 
 struct cmu_vend {
-       unsigned char   v_magic[4];     /* magic number */
+       u_int8_t        v_magic[4];     /* magic number */
        u_int32_t       v_flags;        /* flags/opcodes, etc. */
        struct in_addr  v_smask;        /* Subnet mask */
        struct in_addr  v_dgate;        /* Default gateway */
        struct in_addr  v_dns1, v_dns2; /* Domain name servers */
        struct in_addr  v_ins1, v_ins2; /* IEN-116 name servers */
        struct in_addr  v_ts1, v_ts2;   /* Time servers */
-       unsigned char   v_unused[24];   /* currently unused */
-};
+       u_int8_t        v_unused[24];   /* currently unused */
+} UNALIGNED;
 
 
 /* v_flags values */
 #define VF_SMASK       1       /* Subnet mask field contains valid data */
+
+/* RFC 4702 DHCP Client FQDN Option */
+
+#define CLIENT_FQDN_FLAGS_S    0x01
+#define CLIENT_FQDN_FLAGS_O    0x02
+#define CLIENT_FQDN_FLAGS_E    0x04
+#define CLIENT_FQDN_FLAGS_N    0x08