[IPoIB] share ip_packet.h
authoraestrin <aestrin@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 30 Oct 2006 15:43:54 +0000 (15:43 +0000)
committeraestrin <aestrin@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Mon, 30 Oct 2006 15:43:54 +0000 (15:43 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@532 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

inc/kernel/ip_packet.h [new file with mode: 0644]
ulp/ipoib/kernel/ipoib_adapter.h
ulp/ipoib/kernel/ipoib_endpoint.h
ulp/ipoib/kernel/ipoib_port.h
ulp/ipoib/kernel/ipoib_xfr_mgr.h

diff --git a/inc/kernel/ip_packet.h b/inc/kernel/ip_packet.h
new file mode 100644 (file)
index 0000000..60421ed
--- /dev/null
@@ -0,0 +1,459 @@
+/*\r
+ * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ *     Redistribution and use in source and binary forms, with or\r
+ *     without modification, are permitted provided that the following\r
+ *     conditions are met:\r
+ *\r
+ *      - Redistributions of source code must retain the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer.\r
+ *\r
+ *      - Redistributions in binary form must reproduce the above\r
+ *        copyright notice, this list of conditions and the following\r
+ *        disclaimer in the documentation and/or other materials\r
+ *        provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ *\r
+ * $Id$\r
+ */\r
+\r
+\r
+#ifndef _IP_PACKET_H_\r
+#define _IP_PACKET_H_\r
+\r
+\r
+#include <complib/cl_types.h>\r
+#include <complib/cl_byteswap.h>\r
+\r
+\r
+#ifndef HW_ADDR_LEN\r
+#define HW_ADDR_LEN            6\r
+#endif /* HW_ADDR_LEN */\r
+\r
+\r
+#define ETH_PROT_TYPE_IP       CL_HTON16(0x800)\r
+#define ETH_PROT_TYPE_ARP      CL_HTON16(0x806)\r
+\r
+\r
+#define ETH_IS_LOCALLY_ADMINISTERED(addr) \\r
+       (BOOLEAN)(((PUCHAR)(addr))[0] & ((UCHAR)0x02))\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/mac_addr_t\r
+* NAME\r
+*      mac_addr_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the ehternet MAC address.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _mac_addr\r
+{\r
+       uint8_t         addr[HW_ADDR_LEN];\r
+\r
+}      PACK_SUFFIX mac_addr_t;\r
+/*\r
+* FIELDS\r
+*      addr\r
+*              Byte array representing the MAC address.\r
+*\r
+* NOTES\r
+*      The HW_ADDR_LEN value must be defined before including this header in order\r
+*      to support various address lengths.  If not defined, the default length for\r
+*      ethernet (6 bytes) is used.\r
+*\r
+*      addr[0] & 0x1 indicates multicast\r
+*      addr[0] & 0x2 indicates LAA if not multicast\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, arp_pkt_t, ip_hdr_t, tcp_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/eth_hdr_t\r
+* NAME\r
+*      eth_hdr_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the ehternet header for IP packets.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _eth_hdr\r
+{\r
+       mac_addr_t      dst;\r
+       mac_addr_t      src;\r
+       net16_t         type;\r
+\r
+}      PACK_SUFFIX eth_hdr_t;\r
+/*\r
+* FIELDS\r
+*      dst\r
+*              Destination address\r
+*\r
+*      src\r
+*              Source address\r
+*\r
+*      type\r
+*              Ethernet protocol type\r
+*\r
+* NOTES\r
+*      The HW_ADDR_LEN value must be defined before including this header in order\r
+*      to support various address lengths.\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, arp_pkt_t, ip_hdr_t, tcp_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#define ARP_HW_TYPE_ETH                CL_HTON16(1)\r
+#define ARP_HW_TYPE_IB         CL_HTON16(32)\r
+\r
+#define ARP_OP_REQ                     CL_HTON16(1)\r
+#define ARP_OP_REP                     CL_HTON16(2)\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/arp_pkt_t\r
+* NAME\r
+*      arp_pkt_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the ARP packet for IP packets.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _arp_pkt\r
+{\r
+       net16_t         hw_type;\r
+       net16_t         prot_type;\r
+       uint8_t         hw_size;\r
+       uint8_t         prot_size;\r
+       net16_t         op;\r
+       mac_addr_t      src_hw;\r
+       net32_t         src_ip;\r
+       mac_addr_t      dst_hw;\r
+       net32_t         dst_ip;\r
+\r
+}      PACK_SUFFIX arp_pkt_t;\r
+/*\r
+* FIELDS\r
+*      hw_type\r
+*              Hardware type\r
+*\r
+*      prot_type\r
+*              Protocol type.  See ETH_PROT_TYPE_XXX definitions.\r
+*\r
+*      hw_size\r
+*              Size of the hardware address\r
+*\r
+*      prot_size\r
+*              Size of the protocol address\r
+*\r
+*      op\r
+*              ARP operation\r
+*\r
+*      src_hw\r
+*              Source HW (MAC) address\r
+*\r
+*      src_ip\r
+*              Source IP address\r
+*\r
+*      dst_hw\r
+*              Destination HW (MAC) address\r
+*\r
+*      dst_ip\r
+*              Destination IP address\r
+*\r
+* NOTES\r
+*      The HW_ADDR_LEN value must be defined before including this header in order\r
+*      to support various MAC address lengths.\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, eth_hdr_t, ip_hdr_t, tcp_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#define IP_PROT_IP                     4\r
+#define IP_PROT_TCP                    6\r
+#define IP_PROT_UDP                    17\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/ip_hdr_t\r
+* NAME\r
+*      ip_hdr_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the IP header for IP packets.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _ip_hdr\r
+{\r
+       uint8_t         ver_hl;\r
+       uint8_t         svc_type;\r
+       net16_t         length;\r
+       net16_t         id;\r
+       net16_t         offset;\r
+       uint8_t         ttl;\r
+       uint8_t         prot;\r
+       net16_t         chksum;\r
+       net32_t         src_ip;\r
+       net32_t         dst_ip;\r
+\r
+}      PACK_SUFFIX ip_hdr_t;\r
+/*\r
+* FIELDS\r
+*      ver_hl\r
+*              Header version and length.\r
+*\r
+*      svc_type\r
+*              Service type.\r
+*\r
+*      length\r
+*              Total length.\r
+*\r
+*      id\r
+*              Packet identification.\r
+*\r
+*      offset\r
+*              Fragment offset.\r
+*\r
+*      ttl\r
+*              Time to live.\r
+*\r
+*      prot\r
+*              Protocol.\r
+*\r
+*      chksum\r
+*              Checksum.\r
+*\r
+*      src_ip\r
+*              Source IP address\r
+*\r
+*      dst_ip\r
+*              Destination IP address\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, eth_hdr_t, arp_pkt_t, tcp_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/tcp_hdr_t\r
+* NAME\r
+*      tcp_hdr_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the IP header for IP packets.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _tcp_hdr\r
+{\r
+       net16_t         src_port;\r
+       net16_t         dst_port;\r
+       net32_t         seq_num;\r
+       net32_t         ack_num;\r
+       uint8_t         offset;\r
+       uint8_t         flags;\r
+       net16_t         window;\r
+       net16_t         chksum;\r
+       net16_t         urp;\r
+\r
+}      PACK_SUFFIX tcp_hdr_t;\r
+/*\r
+* FIELDS\r
+*      src_port\r
+*              Source port.\r
+*\r
+*      dst_port\r
+*              Destination port.\r
+*\r
+*      seq_num\r
+*              Sequence number.\r
+*\r
+*      ack_num\r
+*              Acknowledge number.\r
+*\r
+*      offset\r
+*              data offset.\r
+*\r
+*      flags\r
+*              TCP flags.\r
+*\r
+*      window\r
+*              Window number.\r
+*\r
+*      chksum\r
+*              Checksum.\r
+*\r
+*      urp\r
+*              Urgent pointer.\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, eth_hdr_t, arp_pkt_t, ip_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/udp_hdr_t\r
+* NAME\r
+*      udp_hdr_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the IP header for IP packets.\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _udp_hdr\r
+{\r
+       net16_t         src_port;\r
+       net16_t         dst_port;\r
+       net16_t         length;\r
+       net16_t         chksum;\r
+\r
+}      PACK_SUFFIX udp_hdr_t;\r
+/*\r
+* FIELDS\r
+*      src_port\r
+*              Source port.\r
+*\r
+*      dst_port\r
+*              Destination port.\r
+*\r
+*      length\r
+*              Length of datagram.\r
+*\r
+*      chksum\r
+*              Checksum.\r
+*\r
+* SEE ALSO\r
+*      IB Network Drivers, eth_hdr_t, arp_pkt_t, ip_hdr_t, tcp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#define DHCP_PORT_SERVER               CL_HTON16(67)\r
+#define DHCP_PORT_CLIENT               CL_HTON16(68)\r
+\r
+#define DHCP_REQUEST                   1\r
+#define DHCP_REPLY                             2\r
+#define DHCP_HW_TYPE_ETH               1\r
+#define DHCP_HW_TYPE_IB                        32\r
+#define DHCP_OPT_PAD                   0\r
+#define DHCP_OPT_END                   255\r
+#define DHCP_OPT_MSG                   53\r
+#define DHCP_OPT_CLIENT_ID             61\r
+\r
+#define DHCPDISCOVER                   1\r
+#define DHCPOFFER                              2\r
+#define DHCPREQUEST                            3\r
+#define DHCPDECLINE                            4\r
+#define DHCPACK                                        5\r
+#define DHCPNAK                                        6\r
+#define DHCPRELEASE                            7\r
+#define DHCPINFORM                             8\r
+\r
+#define DHCP_FLAGS_BROADCAST   CL_HTON16(0x8000)\r
+#define DHCP_COOKIE                            0x63538263\r
+#define DHCP_OPTIONS_SIZE              312\r
+#define DHCP_COOKIE_SIZE               4\r
+\r
+\r
+/* Minimum DHCP size is without options (but with 4-byte magic cookie). */\r
+#define DHCP_MIN_SIZE                  (sizeof(dhcp_pkt_t) + DHCP_COOKIE_SIZE - DHCP_OPTIONS_SIZE )\r
+\r
+#include <complib/cl_packon.h>\r
+/****s* IB Network Drivers/dhcp_pkt_t\r
+* NAME\r
+*      dhcp_pkt_t\r
+*\r
+* DESCRIPTION\r
+*      Defines the DHCP packet format as documented in RFC 2131\r
+*      http://www.zvon.org/tmRFC/RFC2131/Output/index.html\r
+*\r
+* SYNOPSIS\r
+*/\r
+typedef struct _dhcp_pkt\r
+{\r
+       uint8_t         op;\r
+       uint8_t         htype;\r
+       uint8_t         hlen;\r
+       uint8_t         hops;\r
+       net32_t         xid;\r
+       net16_t         secs;\r
+       net16_t         flags;\r
+       net32_t         ciaddr;\r
+       net32_t         yiaddr;\r
+       net32_t         siaddr;\r
+       net32_t         giaddr;\r
+       uint8_t         chaddr[16];\r
+       uint8_t         sname[64];\r
+       uint8_t         file[128];\r
+       uint8_t         options[312];\r
+\r
+}      PACK_SUFFIX dhcp_pkt_t;\r
+/*\r
+* SEE ALSO\r
+*      IB Network Drivers, eth_hdr_t, arp_pkt_t, ip_hdr_t, udp_hdr_t\r
+*********/\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#include <complib/cl_packon.h>\r
+typedef struct _udp_pkt\r
+{\r
+       udp_hdr_t       hdr;\r
+       dhcp_pkt_t      dhcp;\r
+\r
+}      PACK_SUFFIX udp_pkt_t;\r
+\r
+typedef struct _ip_pkt\r
+{\r
+       ip_hdr_t                hdr;\r
+       union _ip_payload\r
+       {\r
+               tcp_hdr_t       tcp;\r
+               udp_pkt_t       udp;\r
+\r
+       }       PACK_SUFFIX prot;\r
+\r
+}      PACK_SUFFIX ip_pkt_t;\r
+\r
+typedef struct _eth_pkt\r
+{\r
+       eth_hdr_t       hdr;\r
+       union _eth_payload\r
+       {\r
+               arp_pkt_t       arp;\r
+               ip_pkt_t        ip;\r
+\r
+       }       PACK_SUFFIX type;\r
+\r
+}      PACK_SUFFIX eth_pkt_t;\r
+#include <complib/cl_packoff.h>\r
+\r
+\r
+#endif /* _IP_PACKET_H_ */\r
index 23e54af..074f1b5 100644 (file)
@@ -42,7 +42,7 @@
 #include <complib/cl_atomic.h>\r
 #include <complib/cl_perf.h>\r
 #include <complib/cl_vector.h>\r
-#include "ip_packet.h"\r
+#include <ip_packet.h>\r
 #include "ip_stats.h"\r
 \r
 \r
index fdf76bf..e4a36a4 100644 (file)
@@ -40,7 +40,7 @@
 #include <complib/cl_fleximap.h>\r
 #include <complib/cl_obj.h>\r
 #include "iba/ipoib_ifc.h"\r
-#include "ip_packet.h"\r
+#include <ip_packet.h>\r
 #include "ipoib_debug.h"\r
 \r
 \r
index 31ee612..6b6d6aa 100644 (file)
@@ -39,7 +39,7 @@
 #include <complib/cl_obj.h>\r
 #include <complib/cl_qmap.h>\r
 #include <complib/cl_fleximap.h>\r
-#include "ip_packet.h"\r
+#include <ip_packet.h>\r
 #include "ipoib_endpoint.h"\r
 #include "ipoib_xfr_mgr.h"\r
 \r
index 230238f..8e5ca00 100644 (file)
@@ -45,7 +45,7 @@
 \r
 #include "ipoib_driver.h"\r
 #include "ip_stats.h"\r
-#include "ip_packet.h"\r
+#include <ip_packet.h>\r
 \r
 \r
 #include <complib/cl_packon.h>\r