Question about IPIP tunnel

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

 



Hello All,
I am a student in Korea ...  
I have a question about IPIP tunnel with using new_tunnel module....
I want to extract outer source address, outer dest address,
inner source address and inner dest address each....
I looked a tunneled packet using "SOCK_PACKET" ...
I tried to extract them from that packet ... 
I can get outer source and destination address from it ... 
But 
when I try to get inner source and destination address from it,
my program is terminated with "Segmentation Fault"...

Source code in my program
===============================================================
boolean isTunneledPkt(struct strbuf *data, u32 *outsrc, u32 *outdst,
        u32 *insrc, u32 *indst)
{
    int ip_hdr_len, i;
    u32 ip_outsrc, ip_outdst, ip_insrc, ip_indst;
 
    if ((data->len < 54) || (data->buf[23] != IPPROTO_IPIP) ||
            (data->buf[12] != 8) || (data->buf[13] != 0)) {
        return(FALSE);
    }
 
    mip3dbg(("Tunneled_Packet._%d\n", (unsigned char)data->buf[23]));
    /* Outer IP header */
    ip_outsrc = 0;
    for (i = 26; i < 30; i++)
        ip_outsrc = (ip_outsrc << 8) | (0xff & data->buf[i]);
    *outsrc = htonl(ip_outsrc);
 
    ip_outdst = 0;
    for (i = 30; i < 34; i++)
        ip_outdst = (ip_outdst << 8) | (0xff & data->buf[i]); 
    *outdst = htonl(ip_outdst);
 
    /* Inner IP header */
    ip_insrc = 0;
    for (i = 46; i < 50; i++)
        ip_insrc = (ip_insrc << 8) | (0xff & data->buf[i]);
    *insrc = htonl(ip_insrc);
 
    ip_indst = 0;
    for (i = 50; i < 54; i++)
        ip_indst = (ip_indst << 8) | (0xff & data->buf[i]);
    *indst = htonl(ip_indst);     
    
    return(TRUE);
}

data contains a packet with Ethernet Header .... 

Any comments will be appreciated ... 
Thanks in advance ...




:.˛mkabzwmb˛mb{ayʇڙ,jfhz_


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux