Dear Martin,
Thanks a lot. It did the job. I have the network interfaces on both sides. Nevertheless I can not ping one another. The strange thing is the ping request clearly does invoke any of the net_device_ops:
static const struct net_device_ops l4shmnet_netdev_ops = { .ndo_open = l4x_l4shmc_open, .ndo_start_xmit = l4x_l4shmc_xmit_frame, .ndo_stop = l4x_l4shmc_close, .ndo_change_mtu = l4x_l4shmc_change_mtu, .ndo_get_stats = l4x_l4shmc_get_stats,
};
I put in all these functions some printk's and I can not see it once the ping starts.
I also did with -I option like: ping 192.168.1.2 -I eth0 but still no success. Do You have any idea?
Best Regards,
Hi,
Am 07.02.2014 15:22, schrieb Ajith Whowe:
- Dear Adam,
*>>* Thank You very much for the response. Do You mean that the l4shmnet can be used as a communication channel between two (or more ?) instances of l4linux over TCP/IP? * Yes, never tried with more, but two instances are working fine.
- By the way, how should then the start scripts seem? Would it be again like a client - server type interaction between both instances? For instance would it work with the following set up and would I see for example a ping request and response of each side?
* The l4shmnet negotiates client and server automatically.
l4shmnet needs some namespace to find the other side:
- local my_channel = l:new_channel(); + local test_l4shm = l:create_namespace({test_l4shm = "shmns_1"});
- local linux_caps1 = {
*>* log = L4.Env.log:m("rws"); *>* vbus = io_caps.linux_bus1, *>* rtc = rtc_caps.rtc, *>* rom = L4.Env.rom, * - myL4shm = my_channel:svr(), + test_l4shm = test_l4shm:mode("rw");
- };
*>>* l:start( *>* { *>* caps = linux_caps1, *>* }, *>* "rom/vmlinuz1 mem=512M console=ttyLv0 l4shmnet.add=test_l4shm,macpart=01 ramdisk=rom/ramdisk1 root=1:0 ramdisk_size=5000 l4x_rd=rom/ramdisk1 init=/sbin/init"); *>>>* local linux_caps2 = { *>* log = L4.Env.log:m("r"); *>* vbus = io_caps.linux_bus1, *>* rtc = rtc_caps.rtc, *>* rom = L4.Env.rom, * - myL4shm = my_channel, + test_l4shm = test_l4shm:mode("rw");
- };
*>>* l:start( *>* { *>* caps = linux_caps2, *>* }, *>* "rom/vmlinuz2 mem=512M console=ttyLv0 l4shmnet.add=test_l4shm,macpart=02 ramdisk=rom/ramdisk2 root=1:0 ramdisk_size=5000 l4x_rd=rom/ramdisk2 init=/sbin/init"); *> Do not forget to enable CONFIG_L4_NET_L4SHM
Martin
Hi Ajith,
Am 07.02.2014 17:58, schrieb Ajith Whowe:
Dear Martin,
Thanks a lot. It did the job. I have the network interfaces on both sides. Nevertheless I can not ping one another. The strange thing is the ping request clearly does invoke any of the net_device_ops:
static const struct net_device_ops l4shmnet_netdev_ops = { .ndo_open = l4x_l4shmc_open, .ndo_start_xmit = l4x_l4shmc_xmit_frame, .ndo_stop = l4x_l4shmc_close, .ndo_change_mtu = l4x_l4shmc_change_mtu, .ndo_get_stats = l4x_l4shmc_get_stats,
};
I put in all these functions some printk's and I can not see it once the ping starts.
I also did with -I option like: ping 192.168.1.2 -I eth0 but still no success. Do You have any idea?
If none of the functions are called, the packet get not through the IP stack. Can you post the IP configuration (ip addr show and ip link show) of of both partitions?
Martin
l4-hackers@os.inf.tu-dresden.de