[Openib-windows] RE: Anything new about the IPOIB arp check-in?

Tzachi Dar tzachid at mellanox.co.il
Thu Dec 1 00:57:40 PST 2005


Hi Fab,

The header looks just fine. Please go ahead and check it in.

Thanks
Tzachi

>-----Original Message-----
>From: Fab Tillier [mailto:ftillier at silverstorm.com] 
>Sent: Thursday, December 01, 2005 7:34 AM
>To: Tzachi Dar; openib-windows at openib.org
>Cc: Yossi Leybovich; Gilad Shainer
>Subject: RE: Anything new about the IPOIB arp check-in?
>
>
>Hi Tzachi,
>
>I've started applying the address translation functionality.  
>I've moved the IOCTL definition to inc\iba.  I have the device 
>object creation and destruction worked out, and am working on 
>the IOCTL handling.  Take a look at the IOCTL definitions and 
>let me know if you have any comments.  I added a new IOCTL to 
>allow getting the local GUID information for an input IP address.
>
>I've been changing the code to incorporate the feedback I'd 
>given when you first sent this, as well as taking into account 
>the parts that were already put in place like the unload 
>handler and the adapter list.
>
>It's mostly the same as what you had with mostly structure 
>name changes.  The most notable difference is I removed the 
>version member of output structures. If the input structure 
>doesn't have the right version, the call will fail.  I don't 
>see any time where the output structure's version would be 
>different from the input structure.  Let me know what you 
>think of the header.
>
>- Fab
>
>Index: inc\iba\ib_at_ioctl.h 
>===================================================================
>--- inc\iba\ib_at_ioctl.h	(revision 0)
>+++ inc\iba\ib_at_ioctl.h	(revision 0)
>@@ -0,0 +1,149 @@
>/*
>* Copyright (c) 2005 Mellanox Technologies.  All rights reserved.
>* Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.
>*
>* This software is available to you under the OpenIB.org BSD license
>* below:
>*
>*     Redistribution and use in source and binary forms, with or
>*     without modification, are permitted provided that the following
>*     conditions are met:
>*
>*      - Redistributions of source code must retain the above
>*        copyright notice, this list of conditions and the following
>*        disclaimer.
>*
>*      - Redistributions in binary form must reproduce the above
>*        copyright notice, this list of conditions and the following
>*        disclaimer in the documentation and/or other materials
>*        provided with the distribution.
>*
>* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
>* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
>* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
>* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
>* SOFTWARE.
>*
>* $Id$
>*/
>
>/* This file is shared between user- and kernel-mode */
>
>#ifndef _IB_AT_IOCTL_H_
>#define _IB_AT_IOCTL_H_
>
>
>#define IBAT_IOCTL_VERSION      2
>
>#define IBAT_MAC_LEN            6
>
>
>#define IOCTL_IBAT( n )     \
>    CTL_CODE( FILE_DEVICE_UNKNOWN, (0x800 + n), \
>        METHOD_BUFFERED, FILE_READ_ACCESS )
>
>/** This IRP is used to return all available CAs ports number
> * and port guid */
>#define IOCTL_IBAT_PORTS    IOCTL_IBAT( 1 )
>
>typedef struct _IBAT_PORT_RECORD
>{
>    UINT64              CaGuid;
>    UINT64              PortGuid;
>} IBAT_PORT_RECORD;
>
>typedef struct _IOCTL_IBAT_PORTS_IN
>{
>    ULONG               Version;
>
>} IOCTL_IBAT_PORTS_IN;
>
>typedef struct _IOCTL_IBAT_PORTS_OUT
>{
>    /** Total size, of the output buffer needed if the
>     * suplied buffer wasn't enough */
>    ULONG               Size;
>    LONG                NumPorts;
>    IBAT_PORT_RECORD    Ports[1];
>
>} IOCTL_IBAT_PORTS_OUT;
>
>
>/** This IRP is used to return all the ip addresses that
> * are assigned to a port */
>#define IOCTL_IBAT_IP_ADDRESSES     IOCTL_IBAT( 2 )
>
>typedef struct _IOCTL_IBAT_IP_ADDRESSES_IN
>{
>    ULONG               Version;
>    /** The guid of the port that we are querying for.  May be
>     * zero if querying for IP addresses of all ports. */
>    UINT64              PortGuid;
>
>} IOCTL_IBAT_IP_ADDRESSES_IN;
>
>typedef struct _IP_ADDRESS
>{
>    /** Might only be 4 or 6 */
>    CHAR                IpVersion;
>    /** Sized to support both IPv4 and IPv6 */
>    UCHAR               Address[16];
>
>} IP_ADDRESS;
>
>typedef struct _IOCTL_IBAT_IP_ADDRESSES_OUT
>{
>    /** Total size of the output buffer needed if the
>     * suplied buffer wasn't enough */
>    ULONG               Size;
>    ULONG               AddressCount;
>    IP_ADDRESS          Address[1];
>
>} IOCTL_IBAT_IP_ADDRESSES_OUT;
>
>
>/** This IRP is used to convert a remote MAC addresses to a 
>remote GID */ #define IOCTL_IBAT_MAC_TO_GID IOCTL_IBAT( 3 )
>
>typedef struct _IOCTL_IBAT_MAC_TO_GID_IN
>{
>    ULONG               Version;
>    UINT64              SrcPortGuid;
>    UCHAR               DestMac[IBAT_MAC_LEN];
>
>} IOCTL_IBAT_MAC_TO_GID_IN;
>
>typedef struct _IOCTL_IBAT_MAC_TO_GID_OUT
>{
>    ib_gid_t            DestGid;
>
>} IOCTL_IBAT_MAC_TO_GID_OUT;
>
>
>/** This IRP is used to convert a local IP address to a local port. */
>#define IOCTL_IBAT_IP_TO_GUID   IOCTL_IBAT( 4 )
>
>typedef struct _IOCTL_IBAT_IP_TO_GUID_IN
>{
>    ULONG               Version;
>    IP_ADDRESS          Address;
>} IOCTL_IBAT_IP_TO_GUID_IN;
>
>typedef struct _IOCTL_IBAT_IP_TO_GUID_OUT
>{
>    /** Total size, of the output buffer needed if the
>     * suplied buffer wasn't enough */
>    ULONG                   Size;
>    IBAT_PORT_RECORD        Port;
>} IOCTL_IBAT_IP_TO_GUID_OUT;
>
>
>#define IBAT_DEV_NAME   L"\\Device\\ibat"
>#define IBAT_DOS_DEV_NAME L"\\DosDevices\\Global\\ibat"
>#define IBAT_WIN32_NAME L"\\\\.\\ibat"
>
>#endif  /* _IB_AT_IOCTL_H_ */
>



More information about the ofw mailing list