[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Trying to get HyperSCSI and Xen to work... ;-)



After some puzzling I was able to compile, load and use the 
HyperSCSI client(!) module in Xen's domain 0.
It reported that it found the eth0 interface, but that there are no
HyperSCSI servers on the local network.
The same try with booting a "normal/standard" kernel on the same machine
worked out OK, so it's a problem with Xen's VFR, I think.

Then I added the following code to ..../xen/common/network.c  as a quick
hack:

net_vif_t *net_get_target_vif(u8 *data, unsigned int len, net_vif_t
*src_vif)
{
    .....
    nh_raw = data + ETH_HLEN;
    switch ( ntohs(*(unsigned short *)(data + 12)) )
    {
        ....
        case ETH_P_IP:
        if ( len < (ETH_HLEN + 20) ) goto drop;
        h_raw =  data + ((*(unsigned char *)(nh_raw)) & 0x0f) * 4;
        /* NB. For now we ignore ports. */
        target = net_find_rule((u8)ETH_P_IP,  *(u8 *)(data + 9),
                               ntohl(*(u32 *)(nh_raw + 12)),
                               ntohl(*(u32 *)(nh_raw + 16)),
                               0,
                               0, 
                               src_vif_val);
        break;
        // ===>> new code for routing HyperSCSI ether packets...
        case ETH_P_HSCSI:
              //no len drops yet...
              if (src_vif != VIF_PHYS)  //If it originates from a VIF....
                   return VIF_PHYS;      //...send it to the phys. interface
              else
                   return find_vif_by_id(0);  //If it originates from the
                                                        //phys.
interface(LAN)...
                                                        //...send it to VIF0
of dom0.
              break;    //not reached...

    }
    return target;
    .....
}

I tried to route any incoming ether packets of type ETH_P_HSCSI 
which came from the physical interface to the first VIF 
of domain 0.
Also any HSCSI packets going out from the first VIF of domain 0 
should always go to the physical interface.
Currently, I don't care about MAC-Address controled routing
and other fine tuning.
I only want to make it work with domain0 for now.

How is this done correctly ????  (Of course, the above code did NOT work ;-)

Perhaps one of the Xen developers is able to give some comments ? 
Thanks a lot :)

After reading a lot of the network sources of Xen, I have some
questions left:

1.) I am not sure about the exact difference between VIF_PHYS and
VIF_PHYSICAL_INTERFACE ?

2.) What exactly is the meaning and use of VIF_SPECIAL ?

3.) I am not really understanding the use of VIF_DOMAIN_SHIFT and 
     VIF_DOMAIN_MASK  (some way to identify the domain # only from
     the id by shifting ?)  ?

Any help and comments are apreciated. 
It would be really nice to get HyperSCSI to work in Xen.

Thanks for this great software :))


Best Regards

Sven

-- 
NEU FÜR ALLE - GMX MediaCenter - für Fotos, Musik, Dateien...
Fotoalbum, File Sharing, MMS, Multimedia-Gruß, GMX FotoService

Jetzt kostenlos anmelden unter http://www.gmx.net

+++ GMX - die erste Adresse für Mail, Message, More! +++



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.