public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* Re: [ECOS]  eCos- i386-network problem( routing )
@ 2005-05-17  7:14 Matt Jerdonek
  2005-05-17 10:38 ` rpai
  2005-05-18 10:56 ` [ECOS] i386-network problem( routing ) rpai
  0 siblings, 2 replies; 4+ messages in thread
From: Matt Jerdonek @ 2005-05-17  7:14 UTC (permalink / raw)
  To: rpai, ecos-discuss

I think part of the problem is that you have both
interfaces on the same subnet.  Try moving eth0 and
eth1 to different IP subnets (each with a different
gateway address) and try again.

However, I still think you'll have trouble pinging
from sys1 to sys3 because I don't think eCos has any
routing support in it.  

-- Matt
--- rpai@it.iitb.ac.in wrote:
> 
>  hello .....
> 
>  I have made redboot of i386 in floppy ,I loaded my
> application and executed
> 
>     I have an application that should capture
> packet..  i inialized 2 eth
> card using config tool .. and in program just called
> init_network_devices()... I have connected a system
> to eth0 using
> cross cable and another eth1 to the LAN .
> 
>                                                     
> (LAN bcoz sytem r far )
>     sys1 --> cross cable -->[(eth0) Sys2 (eth1)]-->
> LAN <--> sys3
>   (10.168.12.169)    (10.168.12.170) || 
> (10.168.12.171)    (10.168.12.172)
> 
> 
> 
>   i want my system to sys1 ping to sys3 , it is not
> happeneing ...
> 
>   sys1 is pinging to eth0 ..
>   sys1 is not pinging to eth1 ..   here it shows '
> host unreachable '
> 
>   sys3 is not pinging to eth1 .... it transmists
> packet ,nothing comes on
> the screen I  kept transmitting 40 packets..
> 
>   this messsage is apperaing in the redboot
>            " arp: 10.168.12.169 is on eth0 but got
> reply from 0x0017aa34
> on eth1 "
>   and also " arp: 10.168.12.172 is on eth0 but got
> reply from 0x0017b334
> on eth1 "
> 	   "  arp: 10.168.12.106 is on eth0 but got reply
> from 0x0017b334 on eth1 "
>         mostly the messages of arp is from sys1 ()
> 
> 
> 
>   my doubt -> why the sys2(eth1)(ip 10.168.12.171)
> is not responding to
> sys3 (10.168.12.172)
> 
> 
>        is it bocoz i have set for both eth0 & 1 same
> gateway ....
> 
>         is there any routing protocol to be enabled
> to pass packet through
> one eth0 to eth1 another..
> 
>   I also enabled the chek box in the INET .. "
> multicast routing support "
> but it showed me error
>     when building library....
> 
>     so what is the routing protocol in ecos and
> where is it to be woken ..
>      can any one get me a solution........
> 
> 
>     thanks
> 
> 
> -- 
> Before posting, please read the FAQ:
> http://ecos.sourceware.org/fom/ecos
> and search the list archive:
> http://ecos.sourceware.org/ml/ecos-discuss
> 
> 


		
__________________________________ 
Yahoo! Mail Mobile 
Take Yahoo! Mail with you! Check email on your mobile phone. 
http://mobile.yahoo.com/learn/mail 

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [ECOS]  eCos- i386-network problem( routing )
  2005-05-17  7:14 [ECOS] eCos- i386-network problem( routing ) Matt Jerdonek
@ 2005-05-17 10:38 ` rpai
  2005-05-17 13:46   ` [ECOS] eCos-arm-network problem Raja Mallik
  2005-05-18 10:56 ` [ECOS] i386-network problem( routing ) rpai
  1 sibling, 1 reply; 4+ messages in thread
From: rpai @ 2005-05-17 10:38 UTC (permalink / raw)
  To: Matt Jerdonek; +Cc: ecos-discuss


  Following is the code that initalizes 2 realteak cards eth0 & eth1 ....

*********************************

 //#include <cyg/infra/testcase.h>
#include <network.h>
//#include <pkgconf/system.h>
//#include <pkgconf/net.h>

#include <sys/sockio.h>
#include <netinet/if_ether.h>
#include <arpa/inet.h>

#ifdef CYGBLD_DEVS_ETH_DEVICE_H    // Get the device config if it exists
#include CYGBLD_DEVS_ETH_DEVICE_H  // May provide
CYGTST_DEVS_ETH_TEST_NET_REALTIME
#endif

#ifndef CYGPKG_LIBC_STDIO
#define perror(s) diag_printf(#s ": %s\n", strerror(errno))
#endif

#define STACK_SIZE (CYGNUM_HAL_STACK_SIZE_TYPICAL + 0x1000)

#define ETH0_ADDRS_IP 10.128.12.170
#define ETH0_ADDRS_NETMASK 255.255.128.0
#define ETH0_ADDRS_BROADCAST 10.127.129.255

#define ETH1_ADDRS_IP 10.128.12.166
#define ETH1_ADDRS_NETMASK 255.255.128.0
#define ETH1_ADDRS_BROADCAST 10.127.129.255


#define _string(s) #s
#define string(s) _string(s)

static char stack[STACK_SIZE];
static cyg_thread thread_data;
static cyg_handle_t thread_handle;

extern void
cyg_test_exit(void);

void
pexit(char *s)
{
    perror(s);
    cyg_test_exit();
}


int
SetIP(const char* interface,
	const char * ip_addr,
	const char * ntmsk_addr,
	const char * bcast_addr)
{
 int test_sock=0;
 struct sockaddr_in* addr=NULL;
 struct ifreq ifr;

 test_sock = socket( PF_INET, SOCK_DGRAM, 0 );
 if( test_sock == -1 )
 {
  diag_printf("Cant create a socket");
  return (0);
 }

 memset( &ifr, 0, sizeof( struct ifreq ) );
 addr= (struct sockaddr_in *)&(ifr.ifr_addr);
 memset(addr, 0, sizeof( struct sockaddr_in) );
 addr->sin_len=sizeof(struct sockaddr_in);
 addr->sin_family=AF_INET;
 addr->sin_addr.s_addr=inet_addr(ip_addr);

 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock, SIOCSIFADDR, &ifr ) != 0 )
 {
  diag_printf("Cant set IP of '%s' to '%s' Error
:'%s'\n",interface,ip_addr,strerror(errno));
  close(test_sock);
  return (0);
 }
 else
   diag_printf("IP : %s \n",inet_ntoa(addr->sin_addr));

//Setting Netmask Address

 addr->sin_addr.s_addr=inet_addr(ntmsk_addr);
 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock,SIOCSIFNETMASK, &ifr ) != 0 )
 {
  diag_printf("Net Mask Error : %s \n",strerror(errno));
  close(test_sock);
  return (0);
 }
 else
  diag_printf("Nett Mask: %s \n",inet_ntoa(addr->sin_addr));

//Setting Broadcast Address

 addr->sin_addr.s_addr=inet_addr(bcast_addr);
 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock,SIOCSIFBRDADDR, &ifr ) != 0 )
 {
  diag_printf("BroadCast Error : %s \n",strerror(errno));
  close(test_sock);
  return (0);
 }
 else
  diag_printf("BroadCast : %s \n",inet_ntoa(addr->sin_addr));
  close(test_sock);
  return(1);

}

void
Extract_Mac(char *interface)
{
int sfd,i;
cyg_uint8 mac_address[6];

struct ifreq ifr;

sfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sfd < 0) {
        perror("Error: socket");

    }

strcpy(ifr.ifr_name, interface);
if (ioctl(sfd, SIOCGIFHWADDR, &ifr) < 0) {
        perror("Error: SIOCGIFHWADDR 2");

	}


for ( i = 0; i < ETHER_ADDR_LEN; i++ )
        mac_address[i]=ifr.ifr_hwaddr.sa_data[i] ;



diag_printf( "Mac addr %02x:%02x:%02x:%02x:%02x:%02x\n",
                 mac_address[0],
                 mac_address[1],
                 mac_address[2],
                 mac_address[3],
                 mac_address[4],
                 mac_address[5] );

	close( sfd );
}


void
eth_init(cyg_addrword_t p)
{
//    diag_printf("Start PING test\n");

// Initialinzing the ether net devices
//    init_all_network_interfaces();

char *interface="eth0",*interface1="eth1";

//Extracting Mac ID of eth0
	Extract_Mac(interface);

//setting IP for eth0
	if(SetIP(interface,
		  string(ETH0_ADDRS_IP),
		  string(ETH0_ADDRS_NETMASK),
		  string(ETH0_ADDRS_BROADCAST)))
		diag_printf("Setting of %s OK\n",interface);
	else
		diag_printf("Setting of %s Failed............\n",interface);

//Extract Mac ID of eth1
	Extract_Mac(interface1);

//settint IP for eth1
	if(SetIP(interface,
                  string(ETH1_ADDRS_IP),
                  string(ETH1_ADDRS_NETMASK),
                  string(ETH1_ADDRS_BROADCAST)))
                diag_printf("Setting of %s OK\n",interface1);
        else
                diag_printf("Setting of %s Failed............\n",interface1);

}



void
cyg_start(void)
{
    // Create a main thread, so we can run the scheduler and have time 'pass'
    cyg_thread_create(10,                // Priority - just a number
                      eth_init,          // entry
                      0,                 // entry parameter
                      "Network test",    // Name
                      &stack[0],         // Stack
                      STACK_SIZE,        // Size
                      &thread_handle,    // Handle
                      &thread_data       // Thread data structure
            );
    cyg_thread_resume(thread_handle);  // Start it
    cyg_scheduler_start();
}


**********************

                                         ( LAN bcoz sytem r far )
  sys1 --> cross cable -->[(eth0) Sys2 (eth1)]--> LAN <--> sys3
(10.168.12.169)    (10.168.12.170) ||  (10.168.12.171)    (10.168.12.172)

   ( I will try with cross cable btween sys2 & sys3 )

   i loaded this code into floppy and executed ...

     now the sys1 is pining both on eth0 and eth1  but sys3 is not pinging
neither to both ...

    Actually I wanted to create a packet caputre application ..... which
will captuure packet passing through this 2 eth(router)...

 can any one suggest how should i go further to achive this ......

 thanks for your help......












> I think part of the problem is that you have both
> interfaces on the same subnet.  Try moving eth0 and
> eth1 to different IP subnets (each with a different
> gateway address) and try again.
>
> However, I still think you'll have trouble pinging
> from sys1 to sys3 because I don't think eCos has any
> routing support in it.


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ECOS] eCos-arm-network problem
  2005-05-17 10:38 ` rpai
@ 2005-05-17 13:46   ` Raja Mallik
  0 siblings, 0 replies; 4+ messages in thread
From: Raja Mallik @ 2005-05-17 13:46 UTC (permalink / raw)
  To: ecos-discuss

Hello there, 

I trying to to ping test for the ethernet driver on my arm board..When I
run the application code .. I get these following..


## Starting application at 0x00030000 ...
Init device '/dev/ttydiag'
Init tty channel: 6816c
Init device '/dev/tty0'
Init tty channel: 68188
Init device '/dev/haldiag'
HAL/diag SERIAL init
[cyg_net_init] Init: mbinit(0x00000000)
[cyg_net_init] Init: cyg_net_init_devs(0x00000000)
Init device 'SCP_eth'
Starting to initialise mcs1000 driver
Name of interface is SCP_eth
Device Instance name is eth0_scp
Using port: EthA
RX Buf shift state: 0x01
mcs1000 driver initialised eth_drv_init() and started
[cyg_net_init] Init: loopattach(0x00000000)
[cyg_net_init] Init: ifinit(0x00000000)
IFP: 0x0006767c, next: 0x000af200
IFP: 0x000af200, next: 0x00000000
[cyg_net_init] Init: domaininit(0x00000000)
[cyg_net_init] Init: cyg_net_add_domain(0x00067f0c)
New domain internet at 0x00000000
[cyg_net_init] Init: cyg_net_add_domain(0x00067a14)
New domain route at 0x00000000
[cyg_net_init] Init: cyg_route_init(0x00000000)
[cyg_net_init] Done
Start PING test
Error: SIOCGIFHWADDR 2: Device not configured
Mac addr 03:00:8c:7c:03:00
Cant set IP of 'eth0' to '192.168.1.143' Error :'Device not configured'
Setting of eth0 Failed............
Error: SIOCGIFHWADDR 2: Device not configured
Mac addr 03:00:13:00:00:00
Cant set IP of 'eth1' to '192.168.1.144' Error :'Device not configured'
Setting of eth1 Failed............
RxLength in eth_rx is 36



What do I do to make ioctl() call sucessfull?
Pl, forward your help and if you want me to check my driver code i can
mail that..

Regards
Raja Mallik 



-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ECOS] i386-network problem( routing )
  2005-05-17  7:14 [ECOS] eCos- i386-network problem( routing ) Matt Jerdonek
  2005-05-17 10:38 ` rpai
@ 2005-05-18 10:56 ` rpai
  1 sibling, 0 replies; 4+ messages in thread
From: rpai @ 2005-05-18 10:56 UTC (permalink / raw)
  To: Matt Jerdonek; +Cc: ecos-discuss

Following is the code that initalizes 2 realteak cards eth0 & eth1 ....

*********************************

 //#include <cyg/infra/testcase.h>
#include <network.h>
//#include <pkgconf/system.h>
//#include <pkgconf/net.h>

#include <sys/sockio.h>
#include <netinet/if_ether.h>
#include <arpa/inet.h>

#ifdef CYGBLD_DEVS_ETH_DEVICE_H    // Get the device config if it exists
#include CYGBLD_DEVS_ETH_DEVICE_H  // May provide
CYGTST_DEVS_ETH_TEST_NET_REALTIME
#endif

#ifndef CYGPKG_LIBC_STDIO
#define perror(s) diag_printf(#s ": %s\n", strerror(errno))
#endif

#define STACK_SIZE (CYGNUM_HAL_STACK_SIZE_TYPICAL + 0x1000)

#define ETH0_ADDRS_IP 10.128.12.170
#define ETH0_ADDRS_NETMASK 255.255.128.0
#define ETH0_ADDRS_BROADCAST 10.127.129.255

#define ETH1_ADDRS_IP 10.128.12.171
#define ETH1_ADDRS_NETMASK 255.255.128.0
#define ETH1_ADDRS_BROADCAST 10.127.129.255


#define _string(s) #s
#define string(s) _string(s)

static char stack[STACK_SIZE];
static cyg_thread thread_data;
static cyg_handle_t thread_handle;

extern void
cyg_test_exit(void);

void
pexit(char *s)
{
    perror(s);
    cyg_test_exit();
}


int
SetIP(const char* interface,
	const char * ip_addr,
	const char * ntmsk_addr,
	const char * bcast_addr)
{
 int test_sock=0;
 struct sockaddr_in* addr=NULL;
 struct ifreq ifr;

 test_sock = socket( PF_INET, SOCK_DGRAM, 0 );
 if( test_sock == -1 )
 {
  diag_printf("Cant create a socket");
  return (0);
 }

 memset( &ifr, 0, sizeof( struct ifreq ) );
 addr= (struct sockaddr_in *)&(ifr.ifr_addr);
 memset(addr, 0, sizeof( struct sockaddr_in) );
 addr->sin_len=sizeof(struct sockaddr_in);
 addr->sin_family=AF_INET;
 addr->sin_addr.s_addr=inet_addr(ip_addr);

 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock, SIOCSIFADDR, &ifr ) != 0 )
 {
  diag_printf("Cant set IP of '%s' to '%s' Error
:'%s'\n",interface,ip_addr,strerror(errno));
  close(test_sock);
  return (0);
 }
 else
   diag_printf("IP : %s \n",inet_ntoa(addr->sin_addr));

//Setting Netmask Address

 addr->sin_addr.s_addr=inet_addr(ntmsk_addr);
 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock,SIOCSIFNETMASK, &ifr ) != 0 )
 {
  diag_printf("Net Mask Error : %s \n",strerror(errno));
  close(test_sock);
  return (0);
 }
 else
  diag_printf("Nett Mask: %s \n",inet_ntoa(addr->sin_addr));

//Setting Broadcast Address

 addr->sin_addr.s_addr=inet_addr(bcast_addr);
 strncpy(ifr.ifr_name,interface,IFNAMSIZ);
 if( ioctl( test_sock,SIOCSIFBRDADDR, &ifr ) != 0 )
 {
  diag_printf("BroadCast Error : %s \n",strerror(errno));
  close(test_sock);
  return (0);
 }
 else
  diag_printf("BroadCast : %s \n",inet_ntoa(addr->sin_addr));
  close(test_sock);
  return(1);

}

void
Extract_Mac(char *interface)
{
int sfd,i;
cyg_uint8 mac_address[6];

struct ifreq ifr;

sfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sfd < 0) {
        perror("Error: socket");

    }

strcpy(ifr.ifr_name, interface);
if (ioctl(sfd, SIOCGIFHWADDR, &ifr) < 0) {
        perror("Error: SIOCGIFHWADDR 2");

	}


for ( i = 0; i < ETHER_ADDR_LEN; i++ )
        mac_address[i]=ifr.ifr_hwaddr.sa_data[i] ;



diag_printf( "Mac addr %02x:%02x:%02x:%02x:%02x:%02x\n",
                 mac_address[0],
                 mac_address[1],
                 mac_address[2],
                 mac_address[3],
                 mac_address[4],
                 mac_address[5] );

	close( sfd );
}


void
eth_init(cyg_addrword_t p)
{
//    diag_printf("Start PING test\n");

// Initialinzing the ether net devices
//    init_all_network_interfaces();

char *interface="eth0",*interface1="eth1";

//Extracting Mac ID of eth0
	Extract_Mac(interface);

//setting IP for eth0
	if(SetIP(interface,
		  string(ETH0_ADDRS_IP),
		  string(ETH0_ADDRS_NETMASK),
		  string(ETH0_ADDRS_BROADCAST)))
		diag_printf("Setting of %s OK\n",interface);
	else
		diag_printf("Setting of %s Failed............\n",interface);

//Extract Mac ID of eth1
	Extract_Mac(interface1);

//settint IP for eth1
	if(SetIP(interface,
                  string(ETH1_ADDRS_IP),
                  string(ETH1_ADDRS_NETMASK),
                  string(ETH1_ADDRS_BROADCAST)))
                diag_printf("Setting of %s OK\n",interface1);
        else
                diag_printf("Setting of %s Failed............\n",interface1);

}



void
cyg_start(void)
{
    // Create a main thread, so we can run the scheduler and have time 'pass'
    cyg_thread_create(10,                // Priority - just a number
                      eth_init,          // entry
                      0,                 // entry parameter
                      "Network test",    // Name
                      &stack[0],         // Stack
                      STACK_SIZE,        // Size
                      &thread_handle,    // Handle
                      &thread_data       // Thread data structure
            );
    cyg_thread_resume(thread_handle);  // Start it
    cyg_scheduler_start();
}


**********************


                                         ( LAN bcoz sytem r far )
  sys1 --> cross cable -->[(eth0) Sys2 (eth1)]--> LAN <--> sys3
(10.168.12.169)    (10.168.12.170) ||  (10.168.12.171)    (10.168.12.172)

   ( I will try with cross cable btween sys2 & sys3 )

   i loaded this code into floppy and executed ...

     now the sys1 is pining both on eth0 and eth1  but sys3 is not pinging
neither to both ...

    Actually I wanted to create a packet caputre application ..... which
will captuure packet passing through this 2 eth(router)...

 can any one suggest how should i go further to achive this ......

 and also i am using freebsd ( net template ) should if i go with 'lwip '
will i be sucessful....

 thanks for your help......







> I think part of the problem is that you have both
> interfaces on the same subnet.  Try moving eth0 and
> eth1 to different IP subnets (each with a different
> gateway address) and try again.
>
> However, I still think you'll have trouble pinging
> from sys1 to sys3 because I don't think eCos has any
> routing support in it.
>
> -- Matt
> --- rpai@it.iitb.ac.in wrote:
>>
>>  hello .....
>>
>>  I have made redboot of i386 in floppy ,I loaded my
>> application and executed
>>
>>     I have an application that should capture
>> packet..  i inialized 2 eth
>> card using config tool .. and in program just called
>> init_network_devices()... I have connected a system
>> to eth0 using
>> cross cable and another eth1 to the LAN .
>>
>>
>> (LAN bcoz sytem r far )
>>     sys1 --> cross cable -->[(eth0) Sys2 (eth1)]-->
>> LAN <--> sys3
>>   (10.168.12.169)    (10.168.12.170) ||
>> (10.168.12.171)    (10.168.12.172)
>>
>>
>>
>>   i want my system to sys1 ping to sys3 , it is not
>> happeneing ...
>>
>>   sys1 is pinging to eth0 ..
>>   sys1 is not pinging to eth1 ..   here it shows '
>> host unreachable '
>>
>>   sys3 is not pinging to eth1 .... it transmists
>> packet ,nothing comes on
>> the screen I  kept transmitting 40 packets..
>>
>>   this messsage is apperaing in the redboot
>>            " arp: 10.168.12.169 is on eth0 but got
>> reply from 0x0017aa34
>> on eth1 "
>>   and also " arp: 10.168.12.172 is on eth0 but got
>> reply from 0x0017b334
>> on eth1 "
>> 	   "  arp: 10.168.12.106 is on eth0 but got reply
>> from 0x0017b334 on eth1 "
>>         mostly the messages of arp is from sys1 ()
>>
>>
>>
>>   my doubt -> why the sys2(eth1)(ip 10.168.12.171)
>> is not responding to
>> sys3 (10.168.12.172)
>>
>>
>>        is it bocoz i have set for both eth0 & 1 same
>> gateway ....
>>
>>         is there any routing protocol to be enabled
>> to pass packet through
>> one eth0 to eth1 another..
>>
>>   I also enabled the chek box in the INET .. "
>> multicast routing support "
>> but it showed me error
>>     when building library....
>>
>>     so what is the routing protocol in ecos and
>> where is it to be woken ..
>>      can any one get me a solution........
>>
>>
>>     thanks
>>
>>
>> --
>> Before posting, please read the FAQ:
>> http://ecos.sourceware.org/fom/ecos
>> and search the list archive:
>> http://ecos.sourceware.org/ml/ecos-discuss
>>
>>
>
>
>
> __________________________________
> Yahoo! Mail Mobile
> Take Yahoo! Mail with you! Check email on your mobile phone.
> http://mobile.yahoo.com/learn/mail
>


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-05-18  9:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-05-17  7:14 [ECOS] eCos- i386-network problem( routing ) Matt Jerdonek
2005-05-17 10:38 ` rpai
2005-05-17 13:46   ` [ECOS] eCos-arm-network problem Raja Mallik
2005-05-18 10:56 ` [ECOS] i386-network problem( routing ) rpai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).