Feed for discussion Technology in project Networking.Posts for Technologypost122443: How to mount lsm module to io-pkt by mount()Vic One(deleted)http://community.qnx.com/sf/go/post1224432023-11-29T09:16:30Z2023-11-29T09:16:30ZHi, I have a question.
According to the page:
https://www.qnx.com/developers/docs/7.0.0/index.html#com.qnx.doc.neutrino.resmgr/topic/messages_mount_function.html
it seems like I could mount .so file (for packet filtering) to io-pkt by mount() function.
I can mount my lsm.so to io-pkt by mount utility (as the following command):
mount -T io-pkt /lib/dll/lsm-pf-test.so
but I don't know how to pass the parameters to mount() function.
Any suggestion? Thanks.Vic One(deleted)2023-11-29T09:16:30Zpost122360: Re: A guest of hypervisor, how to get the physical status of ethernet interface?Nick Reillyhttp://community.qnx.com/sf/go/post1223602023-08-09T18:23:41Z2023-08-09T18:23:41ZI think you are going to have to code your own solution, I haven't seen a generic solution.Nick Reilly2023-08-09T18:23:41Zpost122359: Re: A guest of hypervisor, how to get the physical status of ethernet interface?zhaio kll(deleted)http://community.qnx.com/sf/go/post1223592023-08-09T15:47:11Z2023-08-09T15:47:11ZThanks for your answer.
In my system, host need use the network interface, so can’t set up pass-through device, is there any other solution?zhaio kll(deleted)2023-08-09T15:47:11Zpost122358: Re: A guest of hypervisor, how to get the physical status of ethernet interface?Nick Reillyhttp://community.qnx.com/sf/go/post1223582023-08-09T15:08:57Z2023-08-09T15:08:57ZThe guest virtual interface is just reporting its connection to the host virtual interface. The host physical interface is a completely separate interface and you would need to use some other unrelated mechanism to report its state to the guest.
If the host physical interface is only used by this guest and not by the host or any other guests, then you could do a passthrough of the hardware.Nick Reilly2023-08-09T15:08:57Zpost122357: A guest of hypervisor, how to get the physical status of ethernet interface?zhaio kll(deleted)http://community.qnx.com/sf/go/post1223572023-08-09T02:01:26Z2023-08-09T02:01:26ZHi all:
I creat a hepervisor, and guest is andriod OS. When I unpulged network cable, the virtual network interface of guest is still carrier. I want to know guest how to get the physical status of network interface. Or, host (QNX OS) how get the physical status of network interface through interrupt or blocking instead of polling, I think that is also feasible for the host to notify the guest.
Thanks in advance!
Zhao Hengyizhaio kll(deleted)2023-08-09T02:01:26Zpost122155: Making Ethernet interface up/down from io-pktPrasanth Ohttp://community.qnx.com/sf/go/post1221552023-03-02T13:44:14Z2023-03-02T13:44:14ZIn my application, in a specific scenario, I need to put the tsec0 interface down, and should make tsec1 up. This part should be executed from QNX 'iopkt' TCP/IP stack subsystem. I tried calling the below command from there...
system ("ifconfig tsec0 down");
But when I ran this program, the device got restarted with the following message "SpvAbort SpvTaskTimeout task UDP".
Later I searched for options through 'ioctl 'command. But I didn't get any direct options. Instead I saw few options to delete/add interface addresses. I tried with the below one to remove the IPI from tsec0 interface.
qnw_iface_list[0].if_net->if_ioctl (qnw_iface_list[0].if_net, SIOCDIFADDR, (caddr_t)&ifmr);
But this one also didn't help. Even though the command got executed, didn't find any change in device behavior. I was still able to ping tsec0.
Here I need the guidance on how to make the ethernet interface down/up programmatically from 'iopkt' subsystem. I am pretty new to QNX world, so pls bear with me on the trivial questions.Prasanth O2023-03-02T13:44:14Zpost122037: Re: dhcpd not quite workingThomas Sosinskihttp://community.qnx.com/sf/go/post1220372022-12-19T18:21:57Z2022-12-19T18:21:57ZThank you Ivo Kostadinov. That did help!Thomas Sosinski2022-12-19T18:21:57Zpost121715: Re: Malloc check failedOhad Oz(deleted)http://community.qnx.com/sf/go/post1217152022-02-09T10:30:07Z2022-02-09T10:30:07Zhave you identified the root cause of this issue? I face it too.
it is inconsistent and the code dump doesn't point to the error.Ohad Oz(deleted)2022-02-09T10:30:07Zpost121600: Re: RE: broadcast using 255.255.255.255 actually sends 192.168.0.255Zavvio Mok(deleted)http://community.qnx.com/sf/go/post1216002021-09-24T20:10:17Z2021-09-24T20:10:17ZThank you for the post.
Using SO_BINDTODEVICE option to bind socket to network interface is proved to be necessary to bypass QNX's broadcast limitation.
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, "en0", sizeof("en0"));
setsockopt (sock, SOL_SOCKET, SO_BINDTODEVICE, (char *)&ifr, sizeof ifr)
Also had to explicitly add a route for 255.255.255.255 to QNX's current IP address, and thus its current network interface's up-link, e.g. "route add 255.255.255.255 <current IP address>".
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
fec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:10:ea:92:79:d7
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.168.250.100 netmask 0xffffff00 broadcast 192.168.250.255
# route show
Routing tables
Internet:
Destination Gateway Flags
localhost.localdom 127.0.0.1 UH
192.168.250.0/24 link#2 U
192.168.250.100 00:10:ea:92:79:d7 UHL
255.255.255.255 192.168.250.100 UGHZavvio Mok(deleted)2021-09-24T20:10:17Zpost121418: Re: telnet and ftp not working after mount root directory( / ) to QNX6 fssong shizhehttp://community.qnx.com/sf/go/post1214182021-05-18T02:03:31Z2021-05-18T02:03:31ZThanks very much, it is working well after add mntperms option.song shizhe2021-05-18T02:03:31Zpost121416: Re: telnet and ftp not working after mount root directory( / ) to QNX6 fsRoger Macleanhttp://community.qnx.com/sf/go/post1214162021-05-17T12:09:58Z2021-05-17T12:09:58ZPAM, which is used for authenticating users, requires that all directories leading up to the directories containing its config files and modules are owned by root and do not have group or other write permissions.
When you mount another file system at /, it will likely be making / group writable. To fix this you need to mount the file system with the option mntperms=755.Roger Maclean2021-05-17T12:09:58Zpost121413: telnet and ftp not working after mount root directory( / ) to QNX6 fssong shizhehttp://community.qnx.com/sf/go/post1214132021-05-17T08:03:54Z2021-05-17T08:03:54Zsoftware: QNX 7.1
before, root directory( / ) is mount on ifs by default, telnet and ftp is working well.
when i mount a EMPTY qnx6 fs on /, just like
mount -t qnx6 /dev/emmc0t179 /
after that, all files on original ifs are already exist, everything seems same as before.
but when i telnet to my board, there is an error message on my termial:
QNX Neutrino (localhost) (ttyp0)
login: root
Login incorrect
and i already tried restart inetd, there are some output on inetd debug messages:
# inetd -d
ADD : telnet proto=tcp, wait.max=0.40, user:group=root: builtin=0 server=/usr/sbin/telnetd policy=
registered /usr/sbin/telnetd on 4
ADD : ftp proto=tcp, wait.max=0.40, user:group=root: builtin=0 server=/usr/sbin/ftpd policy=
registered /usr/sbin/ftpd on 5
someone wants telnet
accept, ctrl 3
204822 execl /usr/sbin/telnetd
ftp is same , i got similar result.
does anyone can help? thanks.
Regardssong shizhe2021-05-17T08:03:54Zpost120904: Re: Multiple LAN cannot work concurrentlyUna Springer(deleted)http://community.qnx.com/sf/go/post1209042020-08-24T17:16:26Z2020-08-24T17:16:26Z> Man you just have to configure the routers again as i know. Nothing extremly
> hard or anything like that. I see you guys trying to show off all of your
> brains and knowledge aquired at the programming courses. Or maybe i am just
> too stupid in this domain as i left programming in like 2 or 3 years. :D . I
> do remember when i was going for a cisco programming course, at the exam we
> had some questions that i couldn't find anything in my head. Before the exam i
> entered the [url=https://www.spotoclub.com/]spotoclub.com[/url] site to find all the possible answers, so it is
> nothing surprising that i couldn't obtain anything with programming.
Ohh, and i thought i was the only one to do so!Una Springer(deleted)2020-08-24T17:16:26Zpost120882: Re: Multiple LAN cannot work concurrentlyVirginia Berry(deleted)http://community.qnx.com/sf/go/post1208822020-08-06T19:42:35Z2020-08-06T19:42:35ZMan you just have to configure the routers again as i know. Nothing extremly hard or anything like that. I see you guys trying to show off all of your brains and knowledge aquired at the programming courses. Or maybe i am just too stupid in this domain as i left programming in like 2 or 3 years. :D . I do remember when i was going for a cisco programming course, at the exam we had some questions that i couldn't find anything in my head. Before the exam i entered the spotoclub.com site to find all the possible answers, so it is nothing surprising that i couldn't obtain anything with programming.Virginia Berry(deleted)2020-08-06T19:42:35Zpost120881: Re: Multiple LAN cannot work concurrentlyUna Springer(deleted)http://community.qnx.com/sf/go/post1208812020-08-06T19:15:09Z2020-08-06T19:15:09ZI get a pretty similar issue, i do not know why actually, but pretty usual i have to manualy aply the static ip, and even then it might not work.Una Springer(deleted)2020-08-06T19:15:09Zpost120879: Re: Multiple LAN cannot work concurrentlyUna Springer(deleted)http://community.qnx.com/sf/go/post1208792020-08-06T00:29:20Z2020-08-06T00:29:20ZOh man, how stupid was i, i had exactly the same issue and it is actually so easy to make it work, thank you man, sorry for being 5 years late :DUna Springer(deleted)2020-08-06T00:29:20Zpost119884: Re: ipsec requirementsJared Roundyhttp://community.qnx.com/sf/go/post1198842019-09-09T15:05:34Z2019-09-09T15:05:34ZI was not starting the ipsec option. I am doing that and see
Sep 09 09:11:42 5 14 0 initializing IPsec... done
Sep 09 09:11:42 5 14 0 IPsec: Initialized Security Association Processing.
So thanks for that help.
I am still seeing the same issues as before though (errno 22 and 247). Any other ideas? I can switch my code to QNX 7 to see if I have any more messages from sloginfo, but that may not be completed until later in the week.Jared Roundy2019-09-09T15:05:34Zpost119883: Re: ipsec requirementsDean Denterhttp://community.qnx.com/sf/go/post1198832019-09-09T12:03:47Z2019-09-09T12:03:47ZDid you start io-pkt with the ipsec option?
io-pkt-v6-hc -d<driver> -ptcpip ipsec
Also, check for any errors in the slog output (in 7.0: "slog2info -biopkt,io_pkt_v6_hc")Dean Denter2019-09-09T12:03:47Zpost119882: ipsec requirementsJared Roundyhttp://community.qnx.com/sf/go/post1198822019-09-06T22:55:39Z2019-09-06T22:55:39ZI am trying to create a UDPv6 connection using ipsec. Is there more infrastructure I need to start up for ipsec other then the network stack (io-pkt-v6-hc)? Do I need to add any specific options to startup of the stack?
I am getting errno 22 from the setsocketopt() call with the following code
const char* outPolicyText = "out ipsec esp/transport//require";
ipsec_policy_t outPolicy = ipsec_set_policy(outPolicyText, strlen(outPolicyText));
if (setsockopt(mySocketHandle, IPPROTO_IP, IP_IPSEC_POLICY, outPolicy, ipsec_get_policylen(outPolicy))) {
zError("setsockopt Error for outPolicy %d %s", errno, ipsec_strerror());
} else {
zError("setsockopt Success for outPolicy");
}
free(outPolicy);
I get errno 247 from the socket() call with the following call
int pfSocket = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
I am running io-pkt-v6-hc on 6.5.0SP1. I can switch to 6.6 or 7.0 if that makes a difference.
ThanksJared Roundy2019-09-06T22:55:39Zpost119799: Re: Does Slinger webserver supports these featuresShivaji T(deleted)http://community.qnx.com/sf/go/post1197992019-07-30T21:13:38Z2019-07-30T21:13:38ZCan soem tell what is best suited webserver in QNX, if we need to use for new projects?Shivaji T(deleted)2019-07-30T21:13:38Zpost119797: Re: Does Slinger webserver supports these featuresNick Reillyhttp://community.qnx.com/sf/go/post1197972019-07-30T20:27:42Z2019-07-30T20:27:42Zslinger hasn't received any updates in a long time and has been removed from newer versions of QNX. You shouldn't be using it on any new projects.Nick Reilly2019-07-30T20:27:42Zpost119796: Does Slinger webserver supports these featuresRajesh Jarang(deleted)http://community.qnx.com/sf/go/post1197962019-07-30T18:31:37Z2019-07-30T18:31:37ZDoes Slinger Webserver (SDP 6.5.0 SP1) supports following features?
* WebSockets
* FastCGI
* Redirect/ReWriteRajesh Jarang(deleted)2019-07-30T18:31:37Zpost119709: Re: dhcpd not quite workingIvo Kostadinovhttp://community.qnx.com/sf/go/post1197092019-05-22T02:55:24Z2019-05-22T02:55:24ZReplying as I ran into this problem 8 years later ...
Trying to keep dhcpd.leases in /tmp won't work as it is using the RAM filesystem. Put on any other filesystem however will work. Reason is found in the QNX documentation:
"Note that /dev/shmem isn't actually a filesystem. It's a window onto the shared memory names that happens to have some filesystem-like characteristics."
I finally got my dhcpd.leases working from RAM using ramdrive formatted as FAT:
devb-ram ram nodinit,cache=512k disk name=hd@10
waitfor /dev/hd10
fdisk /dev/hd10 add -t 6
mount -e /dev/hd10
waitfor /dev/hd10t6
mkdosfs /dev/hd10t6
mount -t dos /dev/hd10t6 /root
mkdir /root/leasesdb
touch /root/leasesdb/dhcpd.leases
chmod a+rw /root/leasesdb/dhcpd.leases
dhcpd -lf /root/leasesdb/dhcpd.leases ural0
Hope this saves some time to the next guyIvo Kostadinov2019-05-22T02:55:24Zpost119705: Re: DHCP inform not sentJohn Efstathiadeshttp://community.qnx.com/sf/go/post1197052019-05-14T16:14:03Z2019-05-14T16:14:03ZTo answer my own question:
The dhclient use a packet filter to listen to replies from the DHCP server. The network driver must therefore include support for packet filtering in the receive path. My driver did not so dhclient was not seeing any messages from the DHCP server.
Added the following code:
#if NBPFILTER > 0
/* Pass this up to any BPF listeners. */
if (ifp->if_bpf) {
bpf_mtap(ifp->if_bpf, m);
}
#endif
to the receive path fixed the problem.
This is mentioned briefly in the chapter Packet Filtering in the Core Networking with io-pkt User's Guide.John Efstathiades2019-05-14T16:14:03Zpost119702: DHCP inform not sentJohn Efstathiadeshttp://community.qnx.com/sf/go/post1197022019-05-10T17:37:27Z2019-05-10T17:37:27ZHello,
I am having a problem with DHCP on a specific interface. The stack sends out a DHCP Discover message and then receives a DHCP Offer from the DHCP server but I don't see a DHCP Request sent out.
If I run DHCP client in foreground with verbose output I see that it does not think the DHCP Offer has been received. I have instrumented the network driver and verified the DHCP Offer packet is received and is consistent with the data shown in Wireshark. This packet is passed to the stack.
Is there any other stack or DHCP client logging I can use to determine why it is ignoring the DHCP Offer message?
I am using the default QNX 7 SDP DHCP client configuration files.
Thanks,
JohnJohn Efstathiades2019-05-10T17:37:27Zpost119436: Re: ARP Request in qnx7Nick Reillyhttp://community.qnx.com/sf/go/post1194362019-01-22T15:23:22Z2019-01-22T15:23:22ZI don't have sample code handy for this exact scenario. Google returns some hits, but I haven't tried them. If you need more support I would suggest getting in touch with your QNX support person.Nick Reilly2019-01-22T15:23:22Zpost119435: Re: ARP Request in qnx7Jack Yu(deleted)http://community.qnx.com/sf/go/post1194352019-01-22T15:06:36Z2019-01-22T15:06:36ZHi Nick,
Thank you! Do you have any example code for that by any chance?Jack Yu(deleted)2019-01-22T15:06:36Zpost119423: Re: ARP Request in qnx7Nick Reillyhttp://community.qnx.com/sf/go/post1194232019-01-18T15:52:48Z2019-01-18T15:52:48ZI would recommend using the BPF API. There are plenty of examples around on the Internet of how to send a packet with BPF.Nick Reilly2019-01-18T15:52:48Zpost119422: ARP Request in qnx7Jack Yu(deleted)http://community.qnx.com/sf/go/post1194222019-01-18T15:46:53Z2019-01-18T15:46:53ZI am working on a function to sending arp request using network socket library in QNX7 invironment. It requires to send a broadcast ARP message (FF:FF:FF:FF:FF:FF MAC address) and receive a response from the destination with it MAC address. Does anyone have experience how to achieve this? Is there any code example? Thanks!Jack Yu(deleted)2019-01-18T15:46:53Zpost118874: QNX 6.5.0 - apparent (weird) route cachingMiguel Valerohttp://community.qnx.com/sf/go/post1188742018-06-13T21:25:22Z2018-06-13T21:25:22ZUsing this in our system:
kern.osrelease = 6.5.0
kern.version = 2012/06/20-13:49:31EDT
If the io-pkt gets an ICMP request to a host for which there is no specific route, the packet is sent to the default gateway. So far so good. But, when the route for the relevant subnet for that host is later added to the route table, ICMP requests keep on being routed to the default gateway.
Once we enter this situation, the only way we have so far found for getting rid of this undesired caching is to remove and reinstall the default route, which is not a very nice thing to do.
First we thought this was due to the fast forwarding feature, but we realized by code reading that ICMP is not supposed to create IP flows. Further, we tried, while in the "error" situation, sending ICMP requests with different TOS values, but all requests got still routed to the default gateway.
We also tried disabling the fast forwarding altogether (hopefully), by setting net.inet.ip.maxflows = 0. The behavior did not change.
Is there anyone that can explain why this behavior and how to overcome it?
Thanks.Miguel Valero2018-06-13T21:25:22Zpost118461: Re: QNX 6.5.0 Fast RetransmissionRobert Murrellhttp://community.qnx.com/sf/go/post1184612018-01-24T22:38:59Z2018-01-24T22:38:59ZI don't know if my previous attempt succeeded because the files were large. Here are smaller traces.
File "events_delayed_start_01-23_1_rec_3043.pcapng" Wireshart trace. Filter on ip.addr==172.23.165.253. Record 3043 is where the problem starts.
FIle "events_delayed_start_01-23_1_sp4_rec_520.pcap" is the tcpdump from 172.23.165.253. Record 520 is the packet that was lost.Robert Murrell2018-01-24T22:38:59Zpost118453: Re: QNX 6.5.0 Fast RetransmissionNick Reillyhttp://community.qnx.com/sf/go/post1184532018-01-24T21:44:48Z2018-01-24T21:44:48ZFast retransmission is supported. It is triggered by a 3 duplicate ACKs being received. If your application isn't sending enough data that there are 3 more segments in flight after the lost segment to trigger the 3 duplicate ACKs then that would be why you are not seeing the fast retransmission.
Do you have a wireshark trace showing the 3 duplicate ACKs?Nick Reilly2018-01-24T21:44:48Zpost118450: Re: QNX 6.5.0 Fast RetransmissionRobert Murrellhttp://community.qnx.com/sf/go/post1184502018-01-24T18:23:51Z2018-01-24T18:23:51ZI ran sysclt -a on the troubled unit and here are the results. Of particular note are "net.inet.tcp.sack.enable = 1" and "net.inet.tcp.congctl.selected = newreno". If my reading is correct, Fast Retransmission is enabled and the packet loss should be detected.
kern.ostype = QNX
kern.osrelease = 6.5.0
kern.version = 2010/07/09-14:44:03EDT
kern.hostname = localhost
kern.clockrate: tick = 8403, hz = 119
kern.mbuf.msize = 256
kern.mbuf.mclbytes = 2048
kern.mbuf.nmbclusters = 8192
kern.mbuf.mblowat = 16
kern.mbuf.mcllowat = 8
kern.sbmax = 262144
net.inet.ip.forwarding = 0
net.inet.ip.redirect = 1
net.inet.ip.ttl = 64
net.inet.ip.forwsrcrt = 1
net.inet.ip.directed-broadcast = 0
net.inet.ip.allowsrcrt = 1
net.inet.ip.subnetsarelocal = 1
net.inet.ip.mtudisc = 1
net.inet.ip.anonportmin = 49152
net.inet.ip.anonportmax = 65535
net.inet.ip.mtudisctimeout = 600
net.inet.ip.maxflows = 256
net.inet.ip.hostzerobroadcast = 1
net.inet.ip.lowportmin = 600
net.inet.ip.lowportmax = 1023
net.inet.ip.maxfragpackets = 200
net.inet.ip.grettl = 0
net.inet.ip.checkinterface = 0
net.inet.ip.ifq.len = 0
net.inet.ip.ifq.maxlen = 256
net.inet.ip.ifq.drops = 0
net.inet.ip.random_id = 0
net.inet.ip.do_loopback_cksum = 0
net.inet.icmp.maskrepl = 0
net.inet.icmp.returndatabytes = 8
net.inet.icmp.errppslimit = 100
net.inet.icmp.rediraccept = 1
net.inet.icmp.redirtimeout = 600
net.inet.icmp.tstamprepl = 1
net.inet.tcp.rfc1323 = 1
net.inet.tcp.sendspace = 22528
net.inet.tcp.recvspace = 32768
net.inet.tcp.mssdflt = 536
net.inet.tcp.syn_cache_limit = 10255
net.inet.tcp.syn_bucket_limit = 105
net.inet.tcp.init_win = 0
net.inet.tcp.mss_ifmtu = 0
net.inet.tcp.sack.enable = 1
net.inet.tcp.sack.maxholes = 32
net.inet.tcp.sack.globalmaxholes = 1024
net.inet.tcp.sack.globalholes = 0
net.inet.tcp.win_scale = 1
net.inet.tcp.timestamps = 1
net.inet.tcp.compat_42 = 0
net.inet.tcp.cwm = 0
net.inet.tcp.cwm_burstsize = 4
net.inet.tcp.ack_on_push = 0
net.inet.tcp.keepidle = 14400
net.inet.tcp.keepintvl = 1
net.inet.tcp.keepcnt = 20
net.inet.tcp.slowhz = 2
net.inet.tcp.log_refused = 0
net.inet.tcp.init_win_local = 4
net.inet.tcp.rstppslimit = 100
net.inet.tcp.delack_ticks = 23
net.inet.tcp.hiwat_adjust = 1
net.inet.tcp.do_loopback_cksum = 0
net.inet.tcp.congctl.available = reno newreno
net.inet.tcp.congctl.selected = newreno
net.inet.tcp.ecn.enable = 0
net.inet.tcp.ecn.maxretries = 1
net.inet.tcp.iss_hash = 0
net.inet.tcp.abc.enable = 1
net.inet.tcp.abc.aggressive = 1
net.inet.udp.checksum = 1
net.inet.udp.sendspace = 9216
net.inet.udp.recvspace = 41600
net.inet.udp.do_loopback_cksum = 0
net.inet.arp.prune = 300
net.inet.arp.keep = 1118
net.inet.arp.down = 20
net.inet.arp.refresh = 300
net.bpf.maxbufsize = 1048576
hw.machine = x86pc
hw.machine_arch = x86
hw.alignbytes = 3
qnx.kern.enmap = 1
qnx.net.inet.tcp.hiwat_adjust = 1Robert Murrell2018-01-24T18:23:51Zpost118448: QNX 6.5.0 Fast RetransmissionRobert Murrellhttp://community.qnx.com/sf/go/post1184482018-01-24T14:39:11Z2018-01-24T14:39:11ZWe are using QNX 6.5.0 base install (not SR1). We can configure our products in a leader/follower (master/slave has been declared politically incorrect) setup where multiple units are interconnected and communicate to each other via TCP. We normally experience an acceptable up to 300 ms command/response times with this setup. However, we occasionally lose a packet from one of the followers. When this happens, there is a 1.5 second or longer delay before TCP retransmits. I have confirmed the packet loss by simultaneously monitoring the internal traffic using tcpdump and the output traffic with Wireshark. The actual packet loss seems to be an incompatibility between the card we are using and our internal switch. I am working with our vendor to find a solution.
I have a question about io-pkt-v4, which we are using. RFC2581, TCP Congestion Control, Secion 3.2 describes TCP Fast Retransmissions, which should alleviate this problem. I'm guessing that io-pkt-v4 does not support this RFC. We have avoided upgrading to SR1 due to the amount of regression testing of our product with such a change. Is RFC2581 supported in later releases of io-pkt-v4?Robert Murrell2018-01-24T14:39:11Zpost118160: Re: SSH mux'd connections don't workDavid Alessiohttp://community.qnx.com/sf/go/post1181602017-10-30T22:36:19Z2017-10-30T22:36:19ZThis issue has come up for me again. Has the fixed been pushed to io-pkt?
Thanks,
-davidDavid Alessio2017-10-30T22:36:19Zpost117687: Re: Radius client and Syslog clientNick Reillyhttp://community.qnx.com/sf/go/post1176872017-05-01T14:26:56Z2017-05-01T14:26:56ZFor radius support with PAM in SDP7 we use FreeBSD's libradius.
For syslog support make sure you are running syslogd and that your messages are going to syslogd and not to sloginfo.
Regards,
Nick.Nick Reilly2017-05-01T14:26:56Zpost117686: Radius client and Syslog clientFrederic Paolucci(deleted)http://community.qnx.com/sf/go/post1176862017-04-28T15:44:03Z2017-04-28T15:44:03ZHello,
I need to do 2 things on my QNX 6.5 (ARM9) product:
* Implement a Radius client (in order to communicate with a Radius server - ie FreeRadius on Windows)
* Implement a Syslog client (in order to communicate with a Syslog server - ie Kiwi on Windows)
For Radius client, I could not find any QNX implementation; looks like "Mocana" company had a Radius client available, but it seems this company stopped maintaining that library.
So, I could not find any other Radius Client QNX implementation.
For Syslog client, default QNX syslog implementation does not match my needs, because if can only write a message on system log, whereas I want to write messages on a remote server.
So, I could not find any other Syslog client implementation.
For now, my only way to implement Radius client and Syslog client on QNX is to download Linux source code, and try to compile it on QNX. But it may be a nightmare...
Do you have any better proposal?
Thanks,
FredericFrederic Paolucci(deleted)2017-04-28T15:44:03Zpost116409: Re: I want to control network card bufferNick Reillyhttp://community.qnx.com/sf/go/post1164092016-06-13T12:56:24Z2016-06-13T12:56:24ZYou can use pf to configure an ALTQ for default traffic with a bandwidth slightly less than the actual link. This means that the packets will build up in the ALTQ buffer rather than in the network card Tx descriptors. You can then send your traffic via a separate higher priority ALTQ.
Note that 250us is a very tight requirement, the default tick in QNX is 1ms.Nick Reilly2016-06-13T12:56:24Zpost116407: I want to control network card bufferi b(deleted)http://community.qnx.com/sf/go/post1164072016-06-12T01:23:52Z2016-06-12T01:23:52ZI want to control the card buffer send messages, because I need to send once every 250 microseconds, can anyone give me a demo?i b(deleted)2016-06-12T01:23:52Zpost116297: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162972016-05-17T17:34:18Z2016-05-17T17:34:18ZSorry, no. It expired 5 years ago.Robert Murrell2016-05-17T17:34:18Zpost116296: Re: QNX 6.5.0 io-pkt-v4 crashNick Reillyhttp://community.qnx.com/sf/go/post1162962016-05-17T17:05:57Z2016-05-17T17:05:57ZHad a quick look at the code and I see something suspicious, I think if we get a legitimate ARP request while we are probing with ARP then we may believe that is another host with that address.
Do you have a support contract in place to raise this issue through?Nick Reilly2016-05-17T17:05:57Zpost116295: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162952016-05-17T14:28:12Z2016-05-17T14:28:12ZNick,
I don't know about the Cisco device. It is managed by our IT department and locked somewhere in a dark room.
We are using the base release QNX 6.5.0 dhcp.client. Can you confirm that the latest dhcp.client does not do this?Robert Murrell2016-05-17T14:28:12Zpost116294: Re: QNX 6.5.0 io-pkt-v4 crashNick Reillyhttp://community.qnx.com/sf/go/post1162942016-05-17T13:49:03Z2016-05-17T13:49:03ZWhen given an address dhcp.client will send ARP requests to validate that the address is not in use before using it. You can see the first ARP at row 4 in the CSV, note that it sends an ARP broadcast. What's interesting is row 18, the Cisco sends a directed ARP to the device and the device replies. I suspect this is getting picked up as an ARP reply from someone else and causing dhcp.client to believe that someone else has the address already.
1) Is proxy ARP enabled on the Cisco device?
2) Are you up to date on your version of dhcp.client?Nick Reilly2016-05-17T13:49:03Zpost116293: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162932016-05-17T13:23:17Z2016-05-17T13:23:17ZI looked a little closer at the Wireshark traces at the lease renewal and have found something odd. I've attached a partial Wireshark trace as a CSV file. The first line shows 'AdlinkTe_0e:b0:e5' renewing its lease. This is our device running QNX 6.5.0 dhcp.client. The second line shows the DCHP server ACKing the request. The last line shows our device issuing a DHCP Decline on the renewal. Shortly after, it issues a DHCP Request.
This is likely the root cause of our problem. Why did dhcp.client issue DHCP Decline?Robert Murrell2016-05-17T13:23:17Zpost116270: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162702016-05-11T14:29:23Z2016-05-11T14:29:23ZThanks, Nick. I never new of this "feature" of the DHCP protocol. Our vendor is looking into the devn-vortex driver crash, and we can switch from the devnp-i82544 driver to the latest devnp-e1000 driver. We can also restrict the use of our devices to have infinite leases or static IP addresses.
One last question, though. If dhcp.client gets the same address that it had been using, will it do anything to disrupt open TCP connections? Our devices run a proprietary protocol server. When an external device connects, it keeps the socket open indefinitely exchanging information. We are seeing this connection broken sometimes when the renewal address is the same as the original lease address.Robert Murrell2016-05-11T14:29:23Zpost116268: Re: QNX 6.5.0 io-pkt-v4 crashNick Reillyhttp://community.qnx.com/sf/go/post1162682016-05-11T13:13:16Z2016-05-11T13:13:16Zdhcp.client will renew the lease at the time specified in the options if the server provides it. If the server doesn't provide a renewal time option then it will use half of the lease time as the renewal time.
Doing renewal shouldn't crash your driver.
Regards,
Nick.Nick Reilly2016-05-11T13:13:16Zpost116267: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162672016-05-11T12:56:15Z2016-05-11T12:56:15ZI found the root cause of the crashing. After a day or so of normal running, dhcp.client will spontaneously request a new address. Most times, the server will reassign the same address. Sometimes the application layers will not detect a problem. Other times they will detect a socket error but reconnect. Other times the server will assign a new address and the application layer will disconnect and remain so until manually reconfigured. A very few times, the ethernet card driver will generate a segmentation fault and crash io-pkt-v4.
Our DHCP server provides leases for 24 hours. It periodically send ARP requests to see what addresses are still being used and will reserve that address even if the lease has expired. I am using Wireshark to monitor all activity through a hub (not a switch). I see normal communications right up to the point of the DHCP request.
So, under what conditions will dhcp.client spontaneously request a new address?
P.S. I want to thank everone for being responsive concerning this older product.Robert Murrell2016-05-11T12:56:15Zpost116236: Re: QNX 6.5.0 io-pkt-v4 crashHugh Brownhttp://community.qnx.com/sf/go/post1162362016-05-06T12:40:42Z2016-05-06T12:40:42ZI can¹t make any sense from the core file, but why are you using the
devnp-i82544.so driver? This driver has been replaced by the
devnp-e1000.so driver. You can find the e1000 driver here:
devnp-e1000.so
<http://community.qnx.com/sf/frs/do/downloadFile/projects.bsp/frs.network_d
river_updates.latest_io_pkt_network_drivers_0/frs134039?dl=1>
On 2016-05-05, 2:35 PM, "Robert Murrell" <community-noreply@qnx.com> wrote:
>We had another io-pkt-v4 crash, this time on a port with the
>devnp-i82544.so driver. I use gdb backtrace command and get the
>following:
>
>#0 0x08085844 in segv_handler ()
>#1 <signal handler called>
>#2 0xb034bcfb in _resmgr_detach_id () from
>C:/QNX650/target/qnx6/x86/lib/libc.so.3
>#3 0xb0335a52 in resmgr_detach () from
>C:/QNX650/target/qnx6/x86/lib/libc.so.3
>#4 0x00000000 in ?? ()
>
>I'm not sure what to make of this info, or if I'm using gdb correctly.
>Any insight as to the cause of the crash? Core file is attached.
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post116231
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2016-05-06T12:40:42Zpost116231: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162312016-05-05T18:35:02Z2016-05-05T18:35:02ZWe had another io-pkt-v4 crash, this time on a port with the devnp-i82544.so driver. I use gdb backtrace command and get the following:
#0 0x08085844 in segv_handler ()
#1 <signal handler called>
#2 0xb034bcfb in _resmgr_detach_id () from C:/QNX650/target/qnx6/x86/lib/libc.so.3
#3 0xb0335a52 in resmgr_detach () from C:/QNX650/target/qnx6/x86/lib/libc.so.3
#4 0x00000000 in ?? ()
I'm not sure what to make of this info, or if I'm using gdb correctly. Any insight as to the cause of the crash? Core file is attached.Robert Murrell2016-05-05T18:35:02Zpost116206: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162062016-05-03T19:59:46Z2016-05-03T19:59:46ZThank you for this very good information. We have the source code to the devn-vortex driver and I'll be able to pin it down.Robert Murrell2016-05-03T19:59:46Zpost116205: Re: QNX 6.5.0 io-pkt-v4 crashNick Reillyhttp://community.qnx.com/sf/go/post1162052016-05-03T19:55:27Z2016-05-03T19:55:27ZIt's a crash in the devn-vortex.so driver when handling a request to add a multicast address. Here's a sanitised backtrace:
#0 segv_handler
#1 0xb031a32d in ?? ()
#2 0xb820e370 in ?? ()
#3 0xb820bbcf in ?? ()
#4 0xb8205297 in shim_filter
#5 0xb8202887 in shim_ioctl
#6 0x08072273 in in_addmulti
I don't think the devn-vortex.so is a QNX driver so you will have to contact the supplier of it for support with that. To help with decoding, devn-vortex.so is loaded in at 0xb8209000 so you should be able to objdump it and work out where it is crashing.Nick Reilly2016-05-03T19:55:27Zpost116204: Re: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162042016-05-03T19:03:34Z2016-05-03T19:03:34ZI don't know how to get the backtrace info, but here is the core file.Robert Murrell2016-05-03T19:03:34Zpost116202: Re: QNX 6.5.0 io-pkt-v4 crashNick Reillyhttp://community.qnx.com/sf/go/post1162022016-05-03T17:50:10Z2016-05-03T17:50:10ZCan you get the backtrace from the corefile?Nick Reilly2016-05-03T17:50:10Zpost116201: QNX 6.5.0 io-pkt-v4 crashRobert Murrellhttp://community.qnx.com/sf/go/post1162012016-05-03T17:37:48Z2016-05-03T17:37:48ZWe are using the base 6.5.0 (not SR1) on an x86. Occasionally, io-pkt-v4 will crash. I've managed to capture slogger output and a .core file of the crash. The crash happens after one and three days of operation. We are reluctant to upgrade to SR1 unless it will fix the problem. An upgrade will require a lot of regression testing and revalidation and we would like to avoid this. Here is the details of the crash. If this is a known issue please let me know how to avoid it.
Slogger details:
Apr 23 18:21:39 5 21 0 run fault pid 20491 tid 2 signal 11 code 1 ip 0x8085844 proc/boot/io-pkt-v4
/qpm/bin/io-pkt-v4.core:
processor=X86 num_cpus=1
cpu 1 cpu=586 name=Vortex86 SoC 586 F5M2S2 speed=800
flags=0xc000001f FPU MMU CPUID RDTSC INVLPG WP BSWAP
cyc/sec=800223700 tod_adj=1461272031260566669 nsec=163668191934739 inc=999847
boot=2580547226 epoch=1970 intr=0
rate=838095345 scale=-15 load=1193
MACHINE="x86pc" HOSTNAME="localhost"
pid=20491 parent=1 child=0 pgrp=20491 sid=1
flags=0x003210 umask=0 base_addr=0x8048000 init_stack=0x8047ea0
ruid=0 euid=0 suid=0 rgid=0 egid=0 sgid=0
ign=0000000006800000 queue=ff00000000010000 pending=0000000000000000
fds=5 threads=2 timers=1 chans=19
canstub=0xb0320680 sigstub=0xb031a30c
thread 1
ip=0xb033e262 sp=0x8047dcc stkbase=0x7fc7000 stksize=528384
state=SIGWAITINFO flags=80000000 last_cpu=1 timeout=00000000
pri=21 realpri=21 policy=RR
thread 2 SIGNALLED-SIGSEGV code=1 MAPERR refaddr=0 fltno=11
ip=0x8085844 sp=0x7fa1528 stkbase=0x7fa6000 stksize=135168
state=STOPPED flags=84000000 last_cpu=1 timeout=00000000
pri=14 realpri=14 policy=RRRobert Murrell2016-05-03T17:37:48Zpost116111: Examining packet filter in/out chain from within a hookpeter graham(deleted)http://community.qnx.com/sf/go/post1161112016-04-15T17:24:42Z2016-04-15T17:24:42ZTo help diagnose a difficult-to-reproduce issue with an io-pkt filter I've built, I've made a filter that attaches both to the head and tail of the input and output filter queues. It also walks the filter chain when added (via the pfil_entry function), and it seems to list all the filters correctly. For each incoming packet, the filter is called twice: once from the head of the filter chain, and once from the tail. The filter I'm trying to troubleshoot is one that wraps our own IPSec implementation. So, for incoming packets, I expect to see an AH header on one side of the filter chain, but not on the other. And this is what I observe:
Apr 15 09:26:13 localhost io-pkt-v4-hc: QUEUE_HEAD:QNX_DEBUG_output_hook BEGIN
Apr 15 09:26:12 localhost io-pkt-v4-hc: Src: 192.168.3.54 Dst: 226.0.0.1 If: en0 Proto: IPPROTO_AH Len: 160 ID: 19955 Sum: 50520
Apr 15 09:26:12 localhost io-pkt-v4-hc: QUEUE_HEAD:QNX_DEBUG_input_hook END
(IPSec filter is called in here)
Apr 15 09:26:12 localhost io-pkt-v4-hc: QUEUE_TAIL:QNX_DEBUG_input_hook BEGIN
Apr 15 09:26:12 localhost io-pkt-v4-hc: Src: 192.168.3.54 Dst: 226.0.0.1 If: en0 Proto: IPPROTO_UDP Len: 136 ID: 19955 Sum: 50578
Apr 15 09:26:12 localhost io-pkt-v4-hc: QUEUE_TAIL:QNX_DEBUG_input_hook END
You can see the incoming packet has an AH header, and after IPSec handles the packet, it's just the UDP packet that was wrapped by the AH header. So far, so good. But outgoing packets don't seem to behave this way:
Apr 15 09:26:13 localhost io-pkt-v4-hc: QUEUE_HEAD:QNX_DEBUG_output_hook BEGIN
Apr 15 09:26:13 localhost io-pkt-v4-hc: Src: 192.168.2.21 Dst: 226.0.0.1 If: en0 Proto: IPPROTO_UDP Len: 54 ID: 63543 Sum: 8200
Apr 15 09:26:13 localhost io-pkt-v4-hc: QUEUE_HEAD:QNX_DEBUG_output_hook END
(IPSec filter is called in here)
Apr 15 09:26:13 localhost io-pkt-v4-hc: QUEUE_TAIL:QNX_DEBUG_output_hook BEGIN
Apr 15 09:26:13 localhost io-pkt-v4-hc: Src: 192.168.2.21 Dst: 226.0.0.1 If: en0 Proto: IPPROTO_UDP Len: 54 ID: 63543 Sum: 8200
Apr 15 09:26:13 localhost io-pkt-v4-hc: QUEUE_TAIL:QNX_DEBUG_output_hook END
Both the filter on the head and tail of the output hook chain show there's no AH header. However, a tcpdump locally and on a remote computer show the AH header is present. Is outgoing traffic handled fundamentally different than the input? I know the IPSec filter is working, but I don't see the changes it makes from other filters in the output chain.peter graham(deleted)2016-04-15T17:24:42Zpost116109: Re: I want to capture packets.Nick Reillyhttp://community.qnx.com/sf/go/post1161092016-04-14T12:40:55Z2016-04-14T12:40:55ZThere is also libpcap in QNX. In QNX libpcap is a wrapper on to the BPF layer so that can be used as well.Nick Reilly2016-04-14T12:40:55Zpost116105: I want to capture packets.i b(deleted)http://community.qnx.com/sf/go/post1161052016-04-14T03:31:37Z2016-04-14T03:31:37ZI want to capture packets. There libpcap under Linux, qnx how to achieve?i b(deleted)2016-04-14T03:31:37Zpost116015: How to set write no replay?i b(deleted)http://community.qnx.com/sf/go/post1160152016-03-24T02:59:00Z2016-03-24T02:59:00ZMy code :
wbpffd = open( bbuf, O_WRONLY|O_NONBLOCK); fcntl(wbpffd,F_SETFL,O_NONBLOCK);
rc = write( wbpffd, framePtr, frameLen);
write will some times Reply,how can I do remove Reply?i b(deleted)2016-03-24T02:59:00Zpost115758: Re: How to access target with sshNick Reillyhttp://community.qnx.com/sf/go/post1157582016-02-17T14:25:36Z2016-02-17T14:25:36ZMake a procmgr symbolic link for /etc/ssh to a writeable filesystem, even to /dev/shmem if you have nothing else.Nick Reilly2016-02-17T14:25:36Zpost115751: Re: How to access target with sshWenbin Fuhttp://community.qnx.com/sf/go/post1157512016-02-17T00:40:25Z2016-02-17T00:40:25Zsorry, I did not get sshd running successfully in target actually. sshd try to get key from /etc/ssh when i run sshd, but as you know, IFS image is read-only file system, I was not allow to run ssh-keygen to generate key in /etc/ssh by running ssh-keygen.
do you have any idea on it?
thanks
- wenbinWenbin Fu2016-02-17T00:40:25Zpost115747: RE: How to access target with sshRoger Macleanhttp://community.qnx.com/sf/go/post1157472016-02-16T13:54:42Z2016-02-16T13:54:42ZI assume you have sshd running on the target and that you are able to connect to it manually. If so the problem is quite likely that the environment is wrong for any command Qt Creator tries to use. To fix it you'll have to ensure that sshd's configuration includes:
PermitUserEnvironment yes
and then configure /root/.ssh/environment to have the appropriate environment for Qt Creator (most likely missing things like PATH and LD_LIBRARY_PATH).
When I ran into this a year or so ago I connected to the target using ssh and ran:
env >/root/.ssh/environment
________________________________________
From: Wenbin Fu [community-noreply@qnx.com]
Sent: Tuesday, February 16, 2016 3:48 AM
To: technology-networking
Subject: How to access target with ssh
we are using qt-creator to write application based on QT, but qt-creator failed to connect to target via ssh.
to support ssh to access target, what configuration should be done in target?
thanks
- wenbin
_______________________________________________
Technology
http://community.qnx.com/sf/go/post115741
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comRoger Maclean2016-02-16T13:54:42Zpost115741: How to access target with sshWenbin Fuhttp://community.qnx.com/sf/go/post1157412016-02-16T08:48:25Z2016-02-16T08:48:25Zwe are using qt-creator to write application based on QT, but qt-creator failed to connect to target via ssh.
to support ssh to access target, what configuration should be done in target?
thanks
- wenbinWenbin Fu2016-02-16T08:48:25Zpost115393: Re: I want to send the data link layer packetsNick Reillyhttp://community.qnx.com/sf/go/post1153932016-01-04T14:57:33Z2016-01-04T14:57:33ZYou can't send raw Ethernet frames via a socket interface in QNX, only raw IP packets.
To send raw Ethernet frames the easiest and best documented method is to use the BPF interface. If a higher performance is required it is possible to write a custom lsm or use lsm-nraw.so, but these are more complicated and should only be considered if BPF doesn't provide what you need.Nick Reilly2016-01-04T14:57:33Zpost115390: Re: Ethernet mutlicastNick Reillyhttp://community.qnx.com/sf/go/post1153902016-01-04T13:28:57Z2016-01-04T13:28:57ZWe do not have support for goose and gsse from IEC61850. You will need to either write your own or engage with a 3rd party.Nick Reilly2016-01-04T13:28:57Zpost115389: Re: Ethernet mutlicastTim shu(deleted)http://community.qnx.com/sf/go/post1153892016-01-04T06:07:10Z2016-01-04T06:07:10ZI alse need in in goose and gsse in IEC61850 protocol stack.Please tell me some demos.Thanks!Tim shu(deleted)2016-01-04T06:07:10Zpost115383: I want to send the data link layer packetsTim shu(deleted)http://community.qnx.com/sf/go/post1153832015-12-31T01:23:13Z2015-12-31T01:23:13ZHi,I want to write an application to run under QNX version 6.5.That application need to send the data link layer packets.I can't find socket (PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) .I had used PF_LINK instead,but it can't work.How can I send the data link layer packets?Tim shu(deleted)2015-12-31T01:23:13Zpost115332: Profiling an io-pkt filter?peter graham(deleted)http://community.qnx.com/sf/go/post1153322015-12-16T16:18:19Z2015-12-16T16:18:19ZSo far, we've done all our debugging over serial, since debugging over TCP/IP with qconn has been problematic with a packet filter. I'd really like to take advantage of some of the memory analysis tools, but I can't think of a good workaround. Does anyone have tips for using some of the IDE features over serial?peter graham(deleted)2015-12-16T16:18:19Zpost115138: Re: Troubleshooting changes to packet with io-pktSean Boudreau(deleted)http://community.qnx.com/sf/go/post1151382015-11-27T21:49:04Z2015-11-27T21:49:04ZCheck out 'netstat -pip', 'netstat -p icmp'. Did you update the checksum?
Sent from my BlackBerry 10 smartphone on the Rogers network.
Original Message
From: peter graham
Sent: Friday, November 27, 2015 4:22 PM
To: technology-networking
Reply To: technology-networking@community.qnx.com
Subject: Troubleshooting changes to packet with io-pkt
I have a packet filter which modifies some incoming packet data, but that packet doesn't seem to then make its way through to lower layers. For example, if I bypass the logic in my input hook, and send a ping, I see the input and output hook triggered correctly. However, once I process the incoming packet, there is no outgoing reply. Is there any way to debug what goes on after my filter is finished, or see what system calls it makes after that to determine where the process seems to go awry?
_______________________________________________
Technology
http://community.qnx.com/sf/go/post115137
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2015-11-27T21:49:04Zpost115137: Troubleshooting changes to packet with io-pktpeter graham(deleted)http://community.qnx.com/sf/go/post1151372015-11-27T21:22:34Z2015-11-27T21:22:34ZI have a packet filter which modifies some incoming packet data, but that packet doesn't seem to then make its way through to lower layers. For example, if I bypass the logic in my input hook, and send a ping, I see the input and output hook triggered correctly. However, once I process the incoming packet, there is no outgoing reply. Is there any way to debug what goes on after my filter is finished, or see what system calls it makes after that to determine where the process seems to go awry?peter graham(deleted)2015-11-27T21:22:34Zpost115104: Re: Multiple LAN cannot work concurrentlyNick Reillyhttp://community.qnx.com/sf/go/post1151042015-11-24T13:42:46Z2015-11-24T13:42:46ZThat's not going to work. Each network adaptor needs to be attached to a different network. You are receiving the ARP error messages because io-pkt is receiving an ARP response on one interface for a network that it thinks is attached to a different interface.
What are you trying to achieve by plugging two network adaptors in to the same interface? If you are looking for redundancy then the correct way to configure this is to create a bridge running STP with both interfaces as members in the bridge, and then connect to a managed switch that also runs STP. The STP will cause traffic to pass over one link and be blocked on the other. If the link passing traffic fails then STP will automatically switch to the other link.
If you are instead looking for increased throughput then the correct way would be to use LACP to a managed switch that supports LACP. Unfortunately io-pkt doesn't support LACP at this time although it is a question we occasionally get asked about. Please contact your support representative if you are interested in LACP support.Nick Reilly2015-11-24T13:42:46Zpost115101: Multiple LAN cannot work concurrentlyMarcus Liang(deleted)http://community.qnx.com/sf/go/post1151012015-11-24T10:29:02Z2015-11-24T10:29:02ZHi
I have a device with two LAN ports, LAN1 is Intel 82579LM and LAN2 is Intel 82574. After update the driver(devnp-e1000.so and enum file), both LAN can be found through ifconfig which are wm0 and wm1.
However, the LAN ports cannot work concurrently, if both LAN are connected to Ethernet cable with dhcp setting, both LAN can get IP but only LAN1 can be ping by remote device, LAN2 cannot be ping. Meanwhile, the system log would keep showing "d6:fe:7e:f5:d8:db on wm1 tried to write ARP info 176.14.15.254 on wm0".
If I change it to static IP with different subnet, both ports can be ping but the "<some MAC> on wm1 tried to write ARP info <some IP> on wm0" still shows up.
What should I do to solve this problem?
Thanks for help.Marcus Liang(deleted)2015-11-24T10:29:02Zpost114209: Re: Questions about SNMP on QNX6.4.0 io-pktNaresh Kumar(deleted)http://community.qnx.com/sf/go/post1142092015-08-05T03:17:36Z2015-08-05T03:17:36ZHello David,
Now a days I am struggling to configure the SNMP agent on the QNX 6.5.
QNX SNMP daemon is not exposing the Host Resource group data. The configuration (/etc/mib.txt) file contains all the required information.
The snmpget utility says – There is no such variable name in the MIB. But MIB contains this information.
Do you have any experience in SNMP implementation on QNX 6.5?
Regards,
NareshNaresh Kumar(deleted)2015-08-05T03:17:36Zpost114055: io-char S/W buffer overrun errorSimon Barrett(deleted)http://community.qnx.com/sf/go/post1140552015-07-02T10:37:55Z2015-07-02T10:37:55ZHi,
I've been seeing "io-char: S/W buffer overrun error on " in my slog, can anyone tell me where its coming from?
I'm using QNX 6.4, I've looked at the source for devc-ser8250 and there are similar format messages i.e. starting with
io-char but this exact message.
The application is sending data between serial ports.
Thanks.Simon Barrett(deleted)2015-07-02T10:37:55Zpost113626: Re: SO_OVERFLOWED optionShinji Inotsumehttp://community.qnx.com/sf/go/post1136262015-03-30T10:24:39Z2015-03-30T10:24:39ZThanks!
ShinjiShinji Inotsume2015-03-30T10:24:39Zpost113622: Re: SO_OVERFLOWED optionNick Reillyhttp://community.qnx.com/sf/go/post1136222015-03-27T14:57:59Z2015-03-27T14:57:59ZThanks!
Nick.
On 15-03-27 10:57 AM, Sean Boudreau wrote:
>
> The send on the AF_LOCAL socket turns it around and
> appends it to the connected socket's recv buffer
> so it also a drop due to a full recv buffer in that
> case as well.
>
> On Fri, Mar 27, 2015 at 10:38:13AM -0400, Nick Reilly wrote:
>> unp_output() increments sb_overflowed as well so isn't it also output
>> ENOBUFS? I missed the ones in udp4_sendup() and udp6_sendup() so agree
>> it will be drops on Rx but I think it does Tx drops as well.
>>
>> Regards,
>> Nick.
>>
>>
>> On 15-03-27 09:15 AM, Sean Boudreau wrote:
>>>
>>> it returns the number of packets that were dropped
>>> on the socket due to a full recv buffer.
>>>
>>> On Fri, Mar 27, 2015 at 05:12:37AM -0400, Shinji Inotsume wrote:
>>>> Does the SO_OVERFLOWED option of getsockopt() work correctly?
>>>>
>>>> /usr/include/sys/socket.h defines SO_OVERFLOWED option.
>>>> However SO_OVERFLOWED option does not documented in getsockopt() of Library Reference.
>>>> Also does not documented in NetBSB man page.
>>>>
>>>> What does getsockopt() return if work correctly?
>>>>
>>>> Thanks,
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>>
>>>> Technology
>>>> http://community.qnx.com/sf/go/post113615
>>>> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>>
>>> Technology
>>> http://community.qnx.com/sf/go/post113618
>>> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>>>
>>
>>
>>
>>
>> _______________________________________________
>>
>> Technology
>> http://community.qnx.com/sf/go/post113620
>> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post113621
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>Nick Reilly2015-03-27T14:57:59Zpost113621: Re: SO_OVERFLOWED optionSean Boudreau(deleted)http://community.qnx.com/sf/go/post1136212015-03-27T14:57:07Z2015-03-27T14:57:07ZThe send on the AF_LOCAL socket turns it around and
appends it to the connected socket's recv buffer
so it also a drop due to a full recv buffer in that
case as well.
On Fri, Mar 27, 2015 at 10:38:13AM -0400, Nick Reilly wrote:
> unp_output() increments sb_overflowed as well so isn't it also output
> ENOBUFS? I missed the ones in udp4_sendup() and udp6_sendup() so agree
> it will be drops on Rx but I think it does Tx drops as well.
>
> Regards,
> Nick.
>
>
> On 15-03-27 09:15 AM, Sean Boudreau wrote:
> >
> > it returns the number of packets that were dropped
> > on the socket due to a full recv buffer.
> >
> > On Fri, Mar 27, 2015 at 05:12:37AM -0400, Shinji Inotsume wrote:
> >> Does the SO_OVERFLOWED option of getsockopt() work correctly?
> >>
> >> /usr/include/sys/socket.h defines SO_OVERFLOWED option.
> >> However SO_OVERFLOWED option does not documented in getsockopt() of Library Reference.
> >> Also does not documented in NetBSB man page.
> >>
> >> What does getsockopt() return if work correctly?
> >>
> >> Thanks,
> >>
> >>
> >>
> >> _______________________________________________
> >>
> >> Technology
> >> http://community.qnx.com/sf/go/post113615
> >> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
> >
> >
> >
> >
> > _______________________________________________
> >
> > Technology
> > http://community.qnx.com/sf/go/post113618
> > To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
> >
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post113620
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2015-03-27T14:57:07Zpost113620: Re: SO_OVERFLOWED optionNick Reillyhttp://community.qnx.com/sf/go/post1136202015-03-27T14:38:14Z2015-03-27T14:38:14Zunp_output() increments sb_overflowed as well so isn't it also output
ENOBUFS? I missed the ones in udp4_sendup() and udp6_sendup() so agree
it will be drops on Rx but I think it does Tx drops as well.
Regards,
Nick.
On 15-03-27 09:15 AM, Sean Boudreau wrote:
>
> it returns the number of packets that were dropped
> on the socket due to a full recv buffer.
>
> On Fri, Mar 27, 2015 at 05:12:37AM -0400, Shinji Inotsume wrote:
>> Does the SO_OVERFLOWED option of getsockopt() work correctly?
>>
>> /usr/include/sys/socket.h defines SO_OVERFLOWED option.
>> However SO_OVERFLOWED option does not documented in getsockopt() of Library Reference.
>> Also does not documented in NetBSB man page.
>>
>> What does getsockopt() return if work correctly?
>>
>> Thanks,
>>
>>
>>
>> _______________________________________________
>>
>> Technology
>> http://community.qnx.com/sf/go/post113615
>> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post113618
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.com
>Nick Reilly2015-03-27T14:38:14Zpost113618: Re: SO_OVERFLOWED optionSean Boudreau(deleted)http://community.qnx.com/sf/go/post1136182015-03-27T13:15:55Z2015-03-27T13:15:55Zit returns the number of packets that were dropped
on the socket due to a full recv buffer.
On Fri, Mar 27, 2015 at 05:12:37AM -0400, Shinji Inotsume wrote:
> Does the SO_OVERFLOWED option of getsockopt() work correctly?
>
> /usr/include/sys/socket.h defines SO_OVERFLOWED option.
> However SO_OVERFLOWED option does not documented in getsockopt() of Library Reference.
> Also does not documented in NetBSB man page.
>
> What does getsockopt() return if work correctly?
>
> Thanks,
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post113615
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2015-03-27T13:15:55Zpost113617: Re: SO_OVERFLOWED optionNick Reillyhttp://community.qnx.com/sf/go/post1136172015-03-27T12:59:26Z2015-03-27T12:59:26ZIt should return the number of packets dropped from the socket during output due to full socket buffers (ENOBUFS would be returned to the application). The code looks good but I haven't verified that it actually works.Nick Reilly2015-03-27T12:59:26Zpost113615: SO_OVERFLOWED optionShinji Inotsumehttp://community.qnx.com/sf/go/post1136152015-03-27T09:12:37Z2015-03-27T09:12:37ZDoes the SO_OVERFLOWED option of getsockopt() work correctly?
/usr/include/sys/socket.h defines SO_OVERFLOWED option.
However SO_OVERFLOWED option does not documented in getsockopt() of Library Reference.
Also does not documented in NetBSB man page.
What does getsockopt() return if work correctly?
Thanks,Shinji Inotsume2015-03-27T09:12:37Zpost113587: Re: SSH mux'd connections don't workSean Boudreau(deleted)http://community.qnx.com/sf/go/post1135872015-03-23T13:31:03Z2015-03-23T13:31:03ZI'll try to look at this shortly and add link support for
AF_LOCAL sockets to io-pkt.
On Fri, Mar 20, 2015 at 07:13:01PM -0400, David Alessio wrote:
> Hello,
>
> On a QNX machine, logged in as root ($HOME is /root), suppose I have the following file:
> /root/.ssh/config
> with the following contents:
> Host *
> ControlPath ~/.ssh/master-%l-%r@%h:%p
> ControlMaster auto
>
> I should be able to establish an initial connection to a remote host such that subsequent connections are mux'd through the existing connection (and don't need to go through the CPU-intensive authentication dance).
>
> After recompiling and debugging openssh, it seems there are two issues:
> 1) OpenSSH temporally creates (in mux.c) a socket file with a random string that's later hard-linked to a persistent fname and the original then unlinked (deleted). This fails with the error message akin to:
> ln: xxx and yyy are on different file systems -
> Can't create hard link. Use ln -s or make a copy.
>
> I'm guessing, that the socket file is managed by pipe whereas the ln (in C: link()) is attempting to create a hard link between pipe's pseudo FS and the underlying QNX4/6/NFS FS which fails for obvious reasons.
>
> 2) Having hacked OpenSSH/mux.c to "fix" the above issue, it seems that there's some inherent pathname length limit to the socket filename of 32. This is strange since sizeof(address.sun_path) is 104 where address is:
> struct sockaddr_un address;
>
> So, my question is two fold:
>
> 1) why is it that "funky" things happen when socket file pathnames exceed 32 byte?
> and
> 2) what's the best way to "fix" pipe (is it pipe?) so that it handles hard links? This is IMHO important because several open source packages assume they can create hard links to socket files (and use this method to atomically create the socket file).
>
> Cheers,
> -david
>
>
>
>
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post113579
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2015-03-23T13:31:03Zpost113579: SSH mux'd connections don't workDavid Alessio(deleted)http://community.qnx.com/sf/go/post1135792015-03-20T23:13:01Z2015-03-20T23:13:01ZHello,
On a QNX machine, logged in as root ($HOME is /root), suppose I have the following file:
/root/.ssh/config
with the following contents:
Host *
ControlPath ~/.ssh/master-%l-%r@%h:%p
ControlMaster auto
I should be able to establish an initial connection to a remote host such that subsequent connections are mux'd through the existing connection (and don't need to go through the CPU-intensive authentication dance).
After recompiling and debugging openssh, it seems there are two issues:
1) OpenSSH temporally creates (in mux.c) a socket file with a random string that's later hard-linked to a persistent fname and the original then unlinked (deleted). This fails with the error message akin to:
ln: xxx and yyy are on different file systems -
Can't create hard link. Use ln -s or make a copy.
I'm guessing, that the socket file is managed by pipe whereas the ln (in C: link()) is attempting to create a hard link between pipe's pseudo FS and the underlying QNX4/6/NFS FS which fails for obvious reasons.
2) Having hacked OpenSSH/mux.c to "fix" the above issue, it seems that there's some inherent pathname length limit to the socket filename of 32. This is strange since sizeof(address.sun_path) is 104 where address is:
struct sockaddr_un address;
So, my question is two fold:
1) why is it that "funky" things happen when socket file pathnames exceed 32 byte?
and
2) what's the best way to "fix" pipe (is it pipe?) so that it handles hard links? This is IMHO important because several open source packages assume they can create hard links to socket files (and use this method to atomically create the socket file).
Cheers,
-davidDavid Alessio(deleted)2015-03-20T23:13:01Zpost113571: QNX Wireless Framework 1.0Krishnankutty Plachikkattle(deleted)http://community.qnx.com/sf/go/post1135712015-03-19T07:18:01Z2015-03-19T07:18:01ZHello,
I have heard about the QWF 1.0 (QNX wireless framework) expected to release by mid of 2015. How can I get more information about this product ? Is there any way to get a beta version trying out on SDP 6.6?
QNX portal description looks nice. I am considering this framework to enable LTE feature in our infotainment product.
Any documentation about the devices supported and limitations will help...
thanks in advance.Krishnankutty Plachikkattle(deleted)2015-03-19T07:18:01Zpost113514: Re: packet forwarding between 2 network interfaceNick Reillyhttp://community.qnx.com/sf/go/post1135142015-03-06T16:13:49Z2015-03-06T16:13:49ZPackets from the QNX machine will use 172.16.1.2 as the source address by default as that is the closest IP. Packets from the 10.10.1.128/25 will not have their source address changed.Nick Reilly2015-03-06T16:13:49Zpost113506: packet forwarding between 2 network interfaceGuosheng JIN(deleted)http://community.qnx.com/sf/go/post1135062015-03-06T01:08:48Z2015-03-06T01:08:48ZI have 2 network interfaces on my QNX target board, one is for ethernet interface with ip 10.10.1.220. The other one is modem interface with iP 172.16.1.2, which is a bridge to remote terminal, with modem interface IP of 172.16.1.1 and ethernet interface ip of 10.10.1.10.
So the communicaion is like this
10.10.1.220 -172.16.1.2 ...............bridge.................172.16.1.1-10.10.1.10
And by the way, 10.10.1.220 has subnet mask of 255.255.255.128 so that 10.10.1.10 ip does not fall under the same subnet
The remote terminal is a working system and my QNX target board needs to establish socket communication to remote terminal IP 10.10.1.10.
So I need to configure in my QNX to allow ethernet packet to be forwarded through modem interface. I know it can be done if I setup routing table like route -add 10.10.1.220 172.16.1.1. But such routing rule causes SOURCE IP in socket packets to be replaced (to modem interface ip).
So my question is, how I might configure QNX such that ip packet from it's ethernent interface may be forwarded without having SOURCE IP being replaced?Guosheng JIN(deleted)2015-03-06T01:08:48Zpost113304: Get process stateGervot Olivier(deleted)http://community.qnx.com/sf/go/post1133042015-02-12T09:50:54Z2015-02-12T09:50:54ZHi
I would like to get processes states (like pidin)
My Momentix version doesn't include sys/psinfo.h so i can't use the psinfo() function
I wrote some code :
sprintf( buffer, "/proc/%d/as", pid );
fd = open( buffer, O_RDONLY ) ;
procfs_status my_status;
memset(&my_status, 0x0, sizeof (my_status));
status = devctl( fd, DCMD_PROC_STATUS, &my_status, sizeof(my_status), NULL);
For any process my_status.state is 0 which mean STATE_DEAD
what is the problem ?
Thank
OlivierGervot Olivier(deleted)2015-02-12T09:50:54Zpost113031: Shared memoryGervot Olivier(deleted)http://community.qnx.com/sf/go/post1130312015-01-22T16:11:30Z2015-01-22T16:11:30ZI create shared memory with some code like this
p->fd = shm_open( p->path, O_CREAT | O_RDWR , (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH));
p->busData = (BusData *) mmap( NULL, sizeof(BusData), PROT_READ | PROT_WRITE, MAP_SHARED, p->fd, 0)
Is it possible to allocate shared memory with an area having the rights read/write and an area having the rights read-only?
Thank
OlivierGervot Olivier(deleted)2015-01-22T16:11:30Zpost112859: RE: malloc failure for std::stringJoel Pilon(deleted)http://community.qnx.com/sf/go/post1128592015-01-07T17:48:32Z2015-01-07T17:48:32ZIt's likely heap corruption, you could inspect you code's use of pointers and ensure nothing is witting out of bounds or writing to a freed memory.
If it's not reproducible with debug, you can try more light weight instrumentation, perhaps creating malloc/free/calloc wrapper.
-Joel
________________________________________
From: atish bhowmick [community-noreply@qnx.com]
Sent: Wednesday, January 07, 2015 12:27 PM
To: technology-networking
Subject: malloc failure for std::string
I am getting a random crash with the following error :
Malloc Check Failed: :/builds/660_SDP/svn/lib/c/alloc/band.c:492
I am using Momentics 5.0 & Qnx 6.6 .
from the core dump (given below ) I can see that malloc is failing is for std::string objects & operations which I am using in my code . I have run the exe in debug mode with memory analysis tooladded from Momentics IDE. I also enabled all the memory error check options in memory analysis tool tab. But in all these debug runs no crash occurs in the scenario .Also the memory analysis view doesnt show any memory problems with the exe after several runs.
However when i execute the same code in non debug mode or debug mode without memory analysis tool , I get the same memory allocation crash . It occurs randomly at different places in the code where I am doing std::string operations for which memory allocations are required . Below is a call stack :
SignalKill() at 0xb034cf5d
raise() at 0xb0336348
__malloc_panic_str() at 0xb033020a
__malloc_panic() at 0xb03302ed
_band_get_aligned() at 0xb032ea19
_band_get() at 0xb032ebeb
__malloc_lock.constprop.2() at 0xb0332c00
malloc() at 0xb033289b
operator new() at 0xb825f7ca
std::_Allocate<char>() at xmemory0:18 0x8052df4
std::allocator<char>::allocate() at xmemory0:741 0x8052ca9
std::_Wrap_alloc<std::allocator<char> >::allocate() at xmemory0:1,067 0x80529ae
std::string::_Copy() at xstring:2,310 0x8051dde
std::string::_Grow() at xstring:2,341 0x80515a1
std::string::append() at xstring:1,171 0x8050de7
std::string::append() at xstring:1,182 0x805013b
std::string::operator+=() at xstring:1,124 0x8060d16
QNXCommonUtils::readLineBuffered() at QNXCommonUtils.cpp:158 0x806ab4d
SystemConfig::readIniFileInMem() at SystemConfig.cpp:461 0x80562cb
SystemConfig::mergeNVPData() at SystemConfig.cpp:2,176 0x805d86e
SystemConfig::updateIniFile() at SystemConfig.cpp:938 0x8057e73
SystemConfig::UpdateAllIni() at SystemConfig.cpp:866 0x8057b6e
CQNXUpgradeManager::processIPSPolicyUpdate() at CQNXUpgradeManager.cpp:501 0x807ae6f
CQNXUpgradeManager::applyThePackage() at CQNXUpgradeManager.cpp:896 0x807cc73
CQNXUpgradeManager::run() at CQNXUpgradeManager.cpp:1,377 0x807f258
Thread<CQNXUpgradeManager>::ThreadFunc() at Thread.h:59 0x8051330
Any pointers wud be very helpful to find the root cause of malloc failure .
_______________________________________________
Technology
http://community.qnx.com/sf/go/post112857
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comJoel Pilon(deleted)2015-01-07T17:48:32Zpost112857: malloc failure for std::stringatish bhowmick(deleted)http://community.qnx.com/sf/go/post1128572015-01-07T17:27:15Z2015-01-07T17:27:15ZI am getting a random crash with the following error :
Malloc Check Failed: :/builds/660_SDP/svn/lib/c/alloc/band.c:492
I am using Momentics 5.0 & Qnx 6.6 .
from the core dump (given below ) I can see that malloc is failing is for std::string objects & operations which I am using in my code . I have run the exe in debug mode with memory analysis tooladded from Momentics IDE. I also enabled all the memory error check options in memory analysis tool tab. But in all these debug runs no crash occurs in the scenario .Also the memory analysis view doesnt show any memory problems with the exe after several runs.
However when i execute the same code in non debug mode or debug mode without memory analysis tool , I get the same memory allocation crash . It occurs randomly at different places in the code where I am doing std::string operations for which memory allocations are required . Below is a call stack :
SignalKill() at 0xb034cf5d
raise() at 0xb0336348
__malloc_panic_str() at 0xb033020a
__malloc_panic() at 0xb03302ed
_band_get_aligned() at 0xb032ea19
_band_get() at 0xb032ebeb
__malloc_lock.constprop.2() at 0xb0332c00
malloc() at 0xb033289b
operator new() at 0xb825f7ca
std::_Allocate<char>() at xmemory0:18 0x8052df4
std::allocator<char>::allocate() at xmemory0:741 0x8052ca9
std::_Wrap_alloc<std::allocator<char> >::allocate() at xmemory0:1,067 0x80529ae
std::string::_Copy() at xstring:2,310 0x8051dde
std::string::_Grow() at xstring:2,341 0x80515a1
std::string::append() at xstring:1,171 0x8050de7
std::string::append() at xstring:1,182 0x805013b
std::string::operator+=() at xstring:1,124 0x8060d16
QNXCommonUtils::readLineBuffered() at QNXCommonUtils.cpp:158 0x806ab4d
SystemConfig::readIniFileInMem() at SystemConfig.cpp:461 0x80562cb
SystemConfig::mergeNVPData() at SystemConfig.cpp:2,176 0x805d86e
SystemConfig::updateIniFile() at SystemConfig.cpp:938 0x8057e73
SystemConfig::UpdateAllIni() at SystemConfig.cpp:866 0x8057b6e
CQNXUpgradeManager::processIPSPolicyUpdate() at CQNXUpgradeManager.cpp:501 0x807ae6f
CQNXUpgradeManager::applyThePackage() at CQNXUpgradeManager.cpp:896 0x807cc73
CQNXUpgradeManager::run() at CQNXUpgradeManager.cpp:1,377 0x807f258
Thread<CQNXUpgradeManager>::ThreadFunc() at Thread.h:59 0x8051330
Any pointers wud be very helpful to find the root cause of malloc failure .atish bhowmick(deleted)2015-01-07T17:27:15Zpost112851: Re: Malloc check failedatish bhowmick(deleted)http://community.qnx.com/sf/go/post1128512015-01-07T11:47:21Z2015-01-07T11:47:21ZI tried to run the exe in debug mode with memory analysis tool added from Momentics IDE. I also enabled all the memory check options in memory analysis tool tab. But in all these debug runs no crash occurs in the scenario .Also the memory analysis view doesnt show any memory problems with the exe after several runs.
When i execute the same code in non debug mode or debug mode without memory analysis tool , I get the same memory allocation crash . It occurs randomly at different places in the code where I am doing std::string operations for which memory allocations are required . Below is a call stack :
SignalKill() at 0xb034cf5d
raise() at 0xb0336348
__malloc_panic_str() at 0xb033020a
__malloc_panic() at 0xb03302ed
_band_get_aligned() at 0xb032ea19
_band_get() at 0xb032ebeb
__malloc_lock.constprop.2() at 0xb0332c00
malloc() at 0xb033289b
operator new() at 0xb825f7ca
std::_Allocate<char>() at xmemory0:18 0x8052df4
std::allocator<char>::allocate() at xmemory0:741 0x8052ca9
std::_Wrap_alloc<std::allocator<char> >::allocate() at xmemory0:1,067 0x80529ae
std::string::_Copy() at xstring:2,310 0x8051dde
std::string::_Grow() at xstring:2,341 0x80515a1
std::string::append() at xstring:1,171 0x8050de7
std::string::append() at xstring:1,182 0x805013b
std::string::operator+=() at xstring:1,124 0x8060d16
QNXCommonUtils::readLineBuffered() at QNXCommonUtils.cpp:158 0x806ab4d
SystemConfig::readIniFileInMem() at SystemConfig.cpp:461 0x80562cb
SystemConfig::mergeNVPData() at SystemConfig.cpp:2,176 0x805d86e
SystemConfig::updateIniFile() at SystemConfig.cpp:938 0x8057e73
SystemConfig::UpdateAllIni() at SystemConfig.cpp:866 0x8057b6e
CQNXUpgradeManager::processIPSPolicyUpdate() at CQNXUpgradeManager.cpp:501 0x807ae6f
CQNXUpgradeManager::applyThePackage() at CQNXUpgradeManager.cpp:896 0x807cc73
CQNXUpgradeManager::run() at CQNXUpgradeManager.cpp:1,377 0x807f258
Thread<CQNXUpgradeManager>::ThreadFunc() at Thread.h:59 0x8051330
Any pointers wud be very helpful to find the root cause of malloc failure .atish bhowmick(deleted)2015-01-07T11:47:21Zpost112839: Re: Malloc check failedatish bhowmick(deleted)http://community.qnx.com/sf/go/post1128392015-01-06T16:18:08Z2015-01-06T16:18:08Z> Also when I run the exe in debug mode in Momentics IDE with memory analysis tool added to its
> debug configuration , no crash / memory error occurs . What may be the reason
> of this ?atish bhowmick(deleted)2015-01-06T16:18:08Zpost112838: Re: Malloc check failedatish bhowmick(deleted)http://community.qnx.com/sf/go/post1128382015-01-06T16:17:51Z2015-01-06T16:17:51ZAlso when I run the exe in debug mode with memory analysis tool added to its debug configuration , no crash / memory error occurs . What may be the reason of this ?atish bhowmick(deleted)2015-01-06T16:17:51Zpost112836: Re: Malloc check failedNick Reillyhttp://community.qnx.com/sf/go/post1128362015-01-06T14:06:59Z2015-01-06T14:06:59ZIt's not fragmentation, it's that when it got a chunk of memory the memory was corrupt. You will need to check your code carefully, static analysis tools can help. Also take a look at:
http://www.qnx.com/developers/docs/660/index.jsp?topic=%2Fcom.qnx.doc.neutrino.prog%2Ftopic%2Fhat.htmlNick Reilly2015-01-06T14:06:59Zpost112835: Malloc check failedatish bhowmick(deleted)http://community.qnx.com/sf/go/post1128352015-01-06T11:23:49Z2015-01-06T11:23:49ZI am getting a random crash with the following error :
Malloc Check Failed: :/builds/660_SDP/svn/lib/c/alloc/band.c:492
I am using Momentics 5.0 & Qnx 6.6 .
from the core dump I can see that malloc is failing is for std::string objects & operations which I am using in my code .
Is this purely a memory fragmentation which is very unlikely since the application doesn't show any leak & crash occurs also after it has been running for a short time ? or some sort of memory corruption ?
Momentics memory analysis tool doesn't show up anything .
any pointers wud be helpful ? looking for points to investigate ?atish bhowmick(deleted)2015-01-06T11:23:49Zpost112415: Re: io-pkt pfil hook memory leakatish bhowmick(deleted)http://community.qnx.com/sf/go/post1124152014-11-24T09:30:13Z2014-11-24T09:30:13Zthanks a lot Nick .
I am able to build the lsm now as a kernel module and I c no more leaks in the io-pkt when the filter blocks traffic .atish bhowmick(deleted)2014-11-24T09:30:13Zpost112405: Re: io-pkt pfil hook memory leakNick Reillyhttp://community.qnx.com/sf/go/post1124052014-11-21T13:58:40Z2014-11-21T13:58:40ZYou should be building an lsm with -D_KERNEL -EL -shared -DVARIANT_dll
Make sure you have a proper recursive QNX make file structure setup i.e. lsm-name/x86/dll with common.mk in lsm-name. addvariant should create this structure.Nick Reilly2014-11-21T13:58:40Zpost112400: Re: io-pkt pfil hook memory leakatish bhowmick(deleted)http://community.qnx.com/sf/go/post1124002014-11-21T06:45:54Z2014-11-21T06:45:54ZAlso at compile time I get implicit declaration for m_freem() although I have included mbuf.h , but I havent defined _KERNEL since that throws up a lot of other errors . I also get similar warnings for the pfil_get_head & pfil_add_hook calls but they still work at runtime unlike this m_freem() call which crashes due to unresolved symbol when the packet drop code gets hit inside the pfil hook.
What am I doing wrong ?atish bhowmick(deleted)2014-11-21T06:45:54Zpost112399: Re: io-pkt pfil hook memory leakatish bhowmick(deleted)http://community.qnx.com/sf/go/post1123992014-11-21T06:07:50Z2014-11-21T06:07:50ZHey Nick,
Thanks for the reply .
I introduced the m_freem(struct mbuf* ) call but I get an unresolved symbol as runtime .
I am building my pfil.so and mounting it inside io-pkt . Do I need to link to any other lib/dll/.so to use this api in my pfil hooks .
Also there is another similar api m_free(struct mbuf *) , can i use any of the two ?atish bhowmick(deleted)2014-11-21T06:07:50Zpost112389: Re: io-pkt pfil hook memory leakNick Reillyhttp://community.qnx.com/sf/go/post1123892014-11-20T16:10:00Z2014-11-20T16:10:00ZTo avoid a memory leak on egress if dropping the packet you need to:
m_freem(packet_buf);
*m = NULL;
return 1;Nick Reilly2014-11-20T16:10:00Zpost112370: io-pkt pfil hook memory leakatish bhowmick(deleted)http://community.qnx.com/sf/go/post1123702014-11-19T06:26:39Z2014-11-19T06:26:39ZI have written a packet filter shared library using the pfil interface which I am mounting inside io-pkt-v4-hc : mount -T io-pkt /home/libPacketfilter.so
I have a outbound_hook which registers to the pfil interface and blocks any traffic on outbound port 80 to stop any http traffic . I am testing this with a script which repeatedly does http traffic by using the command : curl www.google.com . I see if my filter keeps on blocking the http traffic by returning value 1 back to io-pkt asking it to drop the packet , io-pkt memory constantly keeps on increasing ( heap memory information shown on the Momentics IDE) .
If however packets are allowed , there is no memory leak . I am using the devn-pcnet.so driver to launch io-pkt-v4-hc on a Qnx 6.6 x86 Vm .
Here is how my outgoing hook looks like :
struct pfil_head *pfh_inet = NULL;
pfh_inet = pfil_head_get(PFIL_TYPE_AF, AF_INET);
pfil_add_hook(output_hook, NULL, PFIL_OUT | PFIL_WAITOK,pfh_inet);
static int output_hook(void *arg, struct mbuf **m,
struct ifnet *ifp, int dir)
{
int block = 0; // don't block by default
in_bytes += (*m)->m_len;
struct mbuf* packet_buf = (*m);
if(parse_mbuf(packet_buf,&outbound))
{
if(outbound.portremote == 80)
block = 1;
}
return block; // 0 means allow, 1 means block
}
I see that if i keep on blocking any tcp traffic such at http , io-pkt heap memory constantly rises .
If after processing the packet filter hook returns back 0 to io-pkt to allow the packet , no memory leak occurs.
Is there any memory clean up required when I return back any non zero value from the pfil hook to io-pkt since I am asking io-pkt to drop the packet . Any help would be helpful .atish bhowmick(deleted)2014-11-19T06:26:39Zpost112223: Re: tcpip : blown stack handling 0x102Sean Boudreau(deleted)http://community.qnx.com/sf/go/post1122232014-10-29T14:49:51Z2014-10-29T14:49:51ZThe stack layout won't be exactly the same on the two architectures.
You may also just be lucky on x86 and not flip the majic bits on
this particular test. Running with the stackguard option may
fault on both.
On Wed, Oct 29, 2014 at 10:46:57AM -0400, atish bhowmick wrote:
> Thats the strange part ... the same code executes fine with default stacksize=4k on x86 .
> But it causes stack blow up on ARM with same default stacksize .
>
> So I thought may b default stacksize on x86 is bigger than ARM .
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post112221
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2014-10-29T14:49:51Zpost112221: Re: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1122212014-10-29T14:46:57Z2014-10-29T14:46:57ZThats the strange part ... the same code executes fine with default stacksize=4k on x86 .
But it causes stack blow up on ARM with same default stacksize .
So I thought may b default stacksize on x86 is bigger than ARM .atish bhowmick(deleted)2014-10-29T14:46:57Zpost112220: Re: tcpip : blown stack handling 0x102Sean Boudreau(deleted)http://community.qnx.com/sf/go/post1122202014-10-29T13:57:50Z2014-10-29T13:57:50ZOn Wed, Oct 29, 2014 at 09:50:54AM -0400, atish bhowmick wrote:
> I get this crash only on ARM platform , no such crash on x86 . Is the default io-pkt stacksize different for these platforms ?
No.
>
> when i launched io-pkt on ARM with stacksize=16k , crash didnt occur .
As expected. You're using too much stack. You should try to keep the
stacksize option as low as possible since this value gets multiplied
by the number of coroutines (pseudo-threads) in use.
You should run io-pkt under the debugger and look at stack usage. Look at the 'call
__stackavail()' command in gdb.Sean Boudreau(deleted)2014-10-29T13:57:50Zpost112219: Re: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1122192014-10-29T13:50:54Z2014-10-29T13:50:54ZI get this crash only on ARM platform , no such crash on x86 . Is the default io-pkt stacksize different for these platforms ?
when i launched io-pkt on ARM with stacksize=16k , crash didnt occur .atish bhowmick(deleted)2014-10-29T13:50:54Zpost112217: Re: tcpip : blown stack handling 0x102Nick Reillyhttp://community.qnx.com/sf/go/post1122172014-10-29T12:50:11Z2014-10-29T12:50:11ZThat's the point at which it is exceeding the stack limit. Take a backtrace of the core file and then look through your functions in that backtrace for what their stack usage is.Nick Reilly2014-10-29T12:50:11Zpost112214: Re: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1122142014-10-29T06:26:57Z2014-10-29T06:26:57Zincreasing the stacksize is solving the crash .
I also tried by introducing the stackguard option . As expected crash occurs much earlier rather than waiting for the end of hook . I get the following :
Process 565260 (io-pkt-v4-hc) terminated SIGSEGV code=2 fltno=11 ip=01077124(/usr/lib/ldqnx.so.2@difftime+0x1ac4) mapaddr=000771
24. ref=07f98fec
What can I conclude from this ?atish bhowmick(deleted)2014-10-29T06:26:57Zpost112193: Re: tcpip : blown stack handling 0x102Nick Reillyhttp://community.qnx.com/sf/go/post1121932014-10-28T14:03:24Z2014-10-28T14:03:24ZYes, you are using too much stack space. If you are hooked in through the pfil_ether_hook then that thread will have started down in the driver Rx routine as well.
I strongly recommend using the stackguard option to get it to fault at the point it overruns the stack. Without that it is overrunning the stack and then only getting caught when that pseudo-thread returns.Nick Reilly2014-10-28T14:03:24Zpost112192: Re: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1121922014-10-28T13:57:58Z2014-10-28T13:57:58ZI have tried increasing the stacksize but no success . I dont understand how this stack blowup is related to blocking / dropping of a packet through pfil hooks. It only happens if I block a response packet to incoming ssh connection request .I dont get any crash for blocking outgoing ssh connections. I have faced similar stack blowup issues before & fixed my code (allocate lesser memory on stack) . Does this crash also mean I am using too much stack space in my pfil hook code?atish bhowmick(deleted)2014-10-28T13:57:58Zpost112191: Re: tcpip : blown stack handling 0x102Nick Reillyhttp://community.qnx.com/sf/go/post1121912014-10-28T12:49:58Z2014-10-28T12:49:58ZAs the message says, you have blown the pseudo-thread stack. See the use message for io-pkt under the -p tcpip option
stacksize=X - X is the size of each thread's stack in bytes.
- Default is 4096.
stackguard - Introduce a guard page between each thread's stack to
aid in debugging "blown stack handling" panics. This will
cause a SIGSEGV at the point of stack overrun rather than
at the end of the operation.
- N.B. If stacksize is not a multiple of the system page
size then this option will increase the stacksize until
it is. A message will be logged to slogger in this case
advising of the new size. This increase in stacksize may
change the issue being debugged.Nick Reilly2014-10-28T12:49:58Zpost112190: Re: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1121902014-10-28T11:58:54Z2014-10-28T11:58:54Zalso crash doesnt occur when i try to ssh out of the box and it gets blocked / dropped since all outgoing is blocked .atish bhowmick(deleted)2014-10-28T11:58:54Zpost112189: tcpip : blown stack handling 0x102atish bhowmick(deleted)http://community.qnx.com/sf/go/post1121892014-10-28T11:38:55Z2014-10-28T11:38:55ZPlatform : qnx 6.6
I have written a io-pkt pfil library which can be configured to block some incoming & outgoing connections based on its attribute (source / remote IP & port nos.)
I am getting a io-pkt crash(stack blown up) in a specific scenario :
Allow incoming ssh on port 22 (local port) , but block all outgoing connections . So in this case sshd on qnx is unable to respond back to the incoming request .In that case the ssh connection wont get established as expected but io-pkt crashes immediately when this packet is dropped .
Jan 02 04:34:54 1 14 0 tcpip: blown stack handling 0x102. See "stacks
ize" option.
What can be the probable cause of this issue ? If sshd is not running or no incoming ssh request is made , crash doesn't occur . If the response is allowed no crash occurs.
Any help would be useful .atish bhowmick(deleted)2014-10-28T11:38:55Zpost111503: Re: System hangs with "initSocket -247" message on the consoleDavide Ancrihttp://community.qnx.com/sf/go/post1115032014-08-20T08:26:52Z2014-08-20T08:26:52Zthanks a lot, Nick!
yours are very useful infos, I'll give a deeper view to my driver code.
I also suspect there is a potential problem which has not been triggered until now due to different timings.
I'm back in the office today after my holidays, so I'll need some time to jump again into this investigation... however I'll be back here for any other doubt, if any.
thanks again
DavideDavide Ancri2014-08-20T08:26:52Zpost111314: Re: System hangs with "initSocket -247" message on the consoleNick Reillyhttp://community.qnx.com/sf/go/post1113142014-08-05T13:35:09Z2014-08-05T13:35:09ZI think the "initSocket -247" message is coming from slinger - do you have slinger running and do you try to restart it if it fails? Errno 247 is EAFNOSUPPORT. Unfortunately slinger does a number of operations in initSocket() so we cannot tell which has gone wrong. I suspect though that this is just a secondary affect of the problem within io-pkt itself caused by the driver.
We try to maintain forwards compatibility on the driver API and I don't recall any changes that would break a 6.4.1 devnp driver from working on a 6.5.0 io-pkt. It may be that there was always an underlying problem in the driver and a change in the timing or similar may be causing the issue to get hit more frequently, this could also explain the variance with respect to io-pkt version and driver stripped or with symbols.
With io-pkt running at priority 21 by default, if it starts spinning on the CPU then the rest of the system can appear unresponsive. You can try lowering the thread priorities on io-pkt with -P for the main thread and -p tcpip rx_prio= for the receive threads, but note that the driver may register interrupt threads at any priority that is not affected by these parameters.
One area we have seen in a lot of drivers is that if callout_init() gets called again (e.g. from the driver's init function which gets called multiple times) after a callout has been started with callout_msec() then that can cause io-pkt to spin. I would set up any callouts through callout_init() in the attach function and then leave it alone apart from scheduling with callout_msec() and stopping it with callout_stop().Nick Reilly2014-08-05T13:35:09Zpost111286: System hangs with "initSocket -247" message on the consoleDavide Ancrihttp://community.qnx.com/sf/go/post1112862014-08-01T15:49:45Z2014-08-01T15:49:45Zhello all
I have a x86 platform running qnx 6.5.0:
$ uname -a
QNX myLSU 6.5.0 2012/06/20-13:50:45EDT x86pc x86
and io-pkt-v6-hc variant of io-pkt.
I need to mount/unmount several times a custom "devnp_" network driver into io-pkt (not a real hardware device driver, it will register a set of virtual interfaces for intercepting/injecting software-produced packets).
This has always worked fine (and still it does) under 6.4.1 qnx version.
Under qnx 6.5.0, I often get a system hang when mounting the devnp_ module into io-pkt: platform becomes unreachable via networking (ping does not get responses), and the local USB keyboard/console is not responding. Local monitor reports one or more messages saying:
initSocket -247
I noticed that often the same message appears on the console when I want to shutdown the system (shutdown -b), probably when the io-pkt process is killed.
The hang is not systematic, but it seems to me that it happens more often with io-pkt-v6-hc than with io-pkt-v4, and also more often with my devnp_ module left symbol-unstripped than when I strips symbols out of it ! (does it make any sense??)
So, my first question is: what does "initSocket -247" means and what should I start investigating on?
Is there some incompatibilities in network drivers binaries compiled under 6.4.1 devel env, when mounted against qnx 6.5.0 io-pkt targets?
thanks
DavideDavide Ancri2014-08-01T15:49:45Zpost111033: pf.confmarco spinetti(deleted)http://community.qnx.com/sf/go/post1110332014-07-11T12:19:50Z2014-07-11T12:19:50ZHi all,
I have a problem in my system with qnx 6.4.
My system has more interfaces:
en5 = this is connected to my router (192.168.0.1) which gives it the ip 192.168.0.100
uap0 = wireless interfaces which has ip 192.168.1.X
The wireless interface can be work only in ap mode and not client mode.
I can connect my phone to uap0 and it gives me the ip 192.168.1.100
I'd like to be able to route wireless traffic to interface en5 to be able to go to internet with my phone.
I suppose that I have to work with nat rules but I have a problem because actually it doesn't work.
In my system the variable
net.inet.ip.forwarding=1
and my pf.conf is the following:
[code]
int_if = "en5"
icmp_types = "echoreq"
broadcast_add = "255.255.255.255/32"
# scrub
scrub in all no-df
# outgoing connections on MOST must not exceed 968 segmentsize (MTU 1008 total)
scrub out on mam0 max-mss 968
# Skip all PF filtering on lo0
set skip on lo0
### NAT/redirection rules
### table name has to be used in SW to alter table
table <natRangeTable> { 192.168.1.0/24, 10.0.0.101 }
nat on ppp0 from <natRangeTable> to any -> (ppp0)
nat on en5 from <natRangeTable> to any -> (en5)
nat on uap0 from 192.168.1.0/24 to any -> (en5)
# DNS redirect rules
rdr-anchor dnsRedirect1
rdr-anchor dnsRedirect2
rdr-anchor dnsRedirect3
rdr-anchor dnsRedirect4
### filter rules
pass out keep state
pass in quick on mam0 keep state
pass in quick on mep0 keep state
pass in quick on mhp0 keep state
pass quick on uap0 from 192.168.1.0/24 to 192.168.1.1
pass in quick on uap0 keep state
pass in quick on $int_if keep state
#block in on uap0
block in quick on uap0 from any to (mam0:network)
block in quick on uap0 from any to (mhp0:network)
block in quick on uap0 from any to (ppp0)
#block in quick on uap0 from any to (en5:network)
# pass through DHCP from WLAN to DHCP server
pass in quick on uap0 proto udp from any port bootpc to $broadcast_add port bootps keep state
pass in quick on uap0 to $broadcast_add keep state
# pass in SSDP messages (out is not blocked)
pass in quick on uap0 proto udp from any to 239.255.255.250 port 1900 keep state
# let our http server on 8100 for UPnP be reachable
pass in quick on uap0 proto tcp from any to any port 8100 keep state
pass in quick on uap0 from any to 224.0.0.0/4 keep state
pass in quick on uap0 proto udp to (uap0) port 49152:65535
# use external traffic from WLAN as trigger for dial-up
anchor dialUpTrigger
pass in quick inet proto icmp all icmp-type $icmp_types keep state
[/code]
and my ifconfid is the following:
[code]
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=100<PROMISC> mtu 33192
mam0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1008
address: 00:00:00:00:01:00
inet 10.0.0.100 netmask 0xffffff00 broadcast 10.0.0.255
mhp0: flags=842<BROADCAST,RUNNING,SIMPLEX> mtu 1500
address: 00:00:00:00:01:00
en5: flags=80008a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST,SHIM> mtu 1500
address: 00:80:c8:3c:77:7e
media: Ethernet 10baseT full-duplex
status: active
inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
uap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:1c:d7:25:20:89
media: <unknown type> autoselect
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
link 00:00:00:00:00:00
[/code]
The output of pfctls -s all is:
[code]
TRANSLATION RULES:
nat on ppp0 from <natRangeTable> to any -> (ppp0) round-robin
nat on en5 from <natRangeTable> to any -> (en5) round-robin
rdr-anchor "dnsRedirect1" all
rdr-anchor "dnsRedirect2" all
rdr-anchor "dnsRedirect3" all
rdr-anchor "dnsRedirect4" all
FILTER RULES:
scrub in all no-df fragment reassemble
scrub out on mam0 all max-mss 968 fragment reassemble
pass out all keep state
pass in quick on mam0 all keep state
pass in quick on mep0 all keep state
pass in quick on mhp0 all keep state
pass in quick on en5 all keep state
block drop in on uap0 all
block drop in quick on uap0 from any to (mam0:network)
block drop in quick on uap0 from any to (mhp0:network)
block drop in quick on uap0 from any to (ppp0)
block drop in quick on uap0 from any to (en5:network)
pass in quick on uap0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootp keep state
pass in quick on uap0 inet from any to 255.255.255.255 keep state
pass in quick on uap0 inet proto udp from any to 239.255.255.250 port = 1900 keep state
pass in quick on uap0 proto tcp from any to any port = 8100 keep state
pass in quick on uap0 inet from any to 224.0.0.0/4 keep state
pass in quick on uap0 proto udp from any to (uap0) port 49152:65535
anchor "dialUpTrigger" all
pass in quick inet proto icmp all icmp-type echoreq keep state
No queue in use
STATES:
self tcp 127.0.0.1:65515 -> 127.0.0.1:4444 ESTABLISHED:ESTABLISHED
self tcp 192.168.0.100:65486 -> 173.194.35.7:80 TIME_WAIT:TIME_WAIT
INFO:
Status: Enabled for 0 days 00:19:48 Debug: Urgent
Hostid: 0xc7e39f50
State Table Total Rate
current entries 2
searches 15019 12.6/s
inserts 169 0.1/s
removals 167 0.1/s
Counters
match 213 0.2/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 0 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 0 states
adaptive.end 0 states
src.track 0s
LIMITS:
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
TABLES:
natRangeTable
OS FINGERPRINTS:
345 fingerprints loaded
[/code]
Can someone help me and tell me how to solve the problem?
Thanksmarco spinetti(deleted)2014-07-11T12:19:50Zpost110962: Re: QNX network buffer sizeAlex Murray(deleted)http://community.qnx.com/sf/go/post1109622014-07-08T01:09:55Z2014-07-08T01:09:55ZDid you ever resolve this? I am having a similar issue trying to use pcap_inject or pcap_sendpacket under QNX 6.6.0?Alex Murray(deleted)2014-07-08T01:09:55Zpost110921: Re: net.cfg in 6.6.0Garry Bleasdalehttp://community.qnx.com/sf/go/post1109212014-07-03T08:31:50Z2014-07-03T08:31:50ZCheers Nick!
- GarryGarry Bleasdale2014-07-03T08:31:50Zpost110912: Re: net.cfg in 6.6.0Nick Reillyhttp://community.qnx.com/sf/go/post1109122014-07-02T18:04:14Z2014-07-02T18:04:14ZHi Garry,
I think that net.cfg.sample file is just a left over. netmanager is not just deprecated in 6.6.0, it is obsolete and removed from 6.6.0. In the removal I believe we missed the net.cfg.sample file.
Regards,
Nick.Nick Reilly2014-07-02T18:04:14Zpost110911: net.cfg in 6.6.0Garry Bleasdalehttp://community.qnx.com/sf/go/post1109112014-07-02T15:46:52Z2014-07-02T15:46:52ZHi,
We have deprecated netmanager in 6.6.0, but we still provide a 'sample' net.cfg in /etc.
We have a customer asking if it is still possible to work with net.cfg in 6.6.0, and if so how?
Thanks,
GarryGarry Bleasdale2014-07-02T15:46:52Zpost110795: Re: OS tick granularity affecting outgoing TCP messages?Sean Boudreau(deleted)http://community.qnx.com/sf/go/post1107952014-06-20T17:57:00Z2014-06-20T17:57:00ZThe internal tick isn't 7.5 ms. You should take a pcap and
ensure the tcp window isn't closed. If so you're limited
by acks from the other end.
On Fri, Jun 20, 2014 at 01:41:38PM -0400, J Sinton wrote:
> Hi Nick,
>
> Thank you for confirming there is something else at play. That makes sense.
>
> I have to simulate GPS devices that provide TCP data at 200Hz, and the spacing of messages is significant (they cannot be clumped). I may have to send up to three or four TCP messages within one 5mS window. The control of the individual message position within the window ideally would also be controllable down to say 50uS or so, but that may not be critical in this instance.
>
> I guess while TCP makes no timing guarantees, in practice if the rest of the environment is controlled then most of the time people can get away with assuming there will be an 'acceptable' amount of delay and jitter. I think in this case the vendor expects both to be under 100uS.
>
> What options do I have to work around the tick time?
>
> I had wondered about bypassing the stack and using pcap or bpf. I already use pcap for UDP, and whatever the io tick time is must be at a higher level than the pcap UDP goes in, since it is not affected, so I could send and receive raw TCP frames too and manage the TCP session from the application, but that is a huge pain. Much easier would be something I could reconfigure in the driver. And maybe second to that would be a custom driver, but I'm guessing that the tick is in the IP stack rather than the driver, so that might not help.
>
> What would you recommend?
>
> Many thanks,
>
> John
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110794
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2014-06-20T17:57:00Zpost110794: Re: OS tick granularity affecting outgoing TCP messages?J Sinton(deleted)http://community.qnx.com/sf/go/post1107942014-06-20T17:41:38Z2014-06-20T17:41:38ZHi Nick,
Thank you for confirming there is something else at play. That makes sense.
I have to simulate GPS devices that provide TCP data at 200Hz, and the spacing of messages is significant (they cannot be clumped). I may have to send up to three or four TCP messages within one 5mS window. The control of the individual message position within the window ideally would also be controllable down to say 50uS or so, but that may not be critical in this instance.
I guess while TCP makes no timing guarantees, in practice if the rest of the environment is controlled then most of the time people can get away with assuming there will be an 'acceptable' amount of delay and jitter. I think in this case the vendor expects both to be under 100uS.
What options do I have to work around the tick time?
I had wondered about bypassing the stack and using pcap or bpf. I already use pcap for UDP, and whatever the io tick time is must be at a higher level than the pcap UDP goes in, since it is not affected, so I could send and receive raw TCP frames too and manage the TCP session from the application, but that is a huge pain. Much easier would be something I could reconfigure in the driver. And maybe second to that would be a custom driver, but I'm guessing that the tick is in the IP stack rather than the driver, so that might not help.
What would you recommend?
Many thanks,
JohnJ Sinton(deleted)2014-06-20T17:41:38Zpost110793: Re: OS tick granularity affecting outgoing TCP messages?Nick Reillyhttp://community.qnx.com/sf/go/post1107932014-06-20T17:02:54Z2014-06-20T17:02:54ZYes, there is an internal timer tick in io-pkt that is not affected by ClockPeriod.
I don't understand the need for TCP to be sent at a particular time, TCP says nothing about when the data hits the wire, it is all about transferring the data reliably.Nick Reilly2014-06-20T17:02:54Zpost110792: OS tick granularity affecting outgoing TCP messages?J Sinton(deleted)http://community.qnx.com/sf/go/post1107922014-06-20T16:29:56Z2014-06-20T16:29:56ZHi,
I am developing some test code that needs to send a single TCP message from a thread every 5mS. Even in a tight while loop with no nanosleep, I am currently only able to send one TCP message from the test thread every 7.5mS.
I have seen this time crop up before. When the OS tick time was set to the default, timers and similar events had this granularity. I can already send UDP messages with fine-grain timing control down to hundreds or tens of microseconds, having used ClockPeriod to set 10uS. The hogs utility shows utilization less than 10% with everything else running on the box.
I have disabled Nagle with TCP_NODELAY (that did make a difference, since previously messages could be clustered around 7.5mS - now I get exactly one message per 7.5mS). I have tried both 'write' and 'send' functions (no difference).
I have elevated (doubled from default) the priority of the thread, used ClockPeriod within the thread itself (that should not be necessary as far as I understand it). Nothing else I do seems to have any impact on the minimum time.
My theory is that there is a 'tick' inside the TCP stack that is not reduced by a low value for ClockPeriod, but I have not found any additional TCP options that appear to control something like that.
Any ideas on what might be happening, and how to avoid it? Many thanks for any ideas, or additional questions that might help narrow down the possibilities.
Best regards,
John
Code
===
The sending code in the thread is pretty straightforward, as shown below. Note that even when nanosleep is used, no times below 7.5mS are possible. Two successive calls in the same loop also produce two messages 7.5mS apart, i.e. each call to 'send' or 'write' appears to block for 7.5mS.
signal(SIGPIPE, SIG_IGN); // If we don't choose to ignore the SIGPIPE error signal, we will never get the return fail from the write function (the whole program, not just the thread, will exit)
while( 1 != iShutdown )
{
struct sockaddr_in saddrServer;
memset( &saddrServer, 0, sizeof( saddrServer ));
saddrServer.sin_family = AF_INET;
saddrServer.sin_port = htons( APPLANIX_SERVER_PORT );
saddrServer.sin_addr.s_addr = INADDR_ANY;
int sktServer = -1;
sktServer = socket(AF_INET, SOCK_STREAM, 0);
if( 0 > sktServer )
{
printf("ERROR opening socket\n");
}
int iOptval = 1;
setsockopt( sktServer, SOL_SOCKET, SO_REUSEPORT, &iOptval, sizeof( iOptval )); // Allow port re-use so we don't get hung up waiting for ports to be released
setsockopt( sktServer, IPPROTO_TCP, TCP_NODELAY, &iOptval, sizeof( iOptval )); // Disable Nagle algorithm on output, otherwise messages will be delayed with spacing other than as specified
if( 0 > bind( sktServer, (struct sockaddr *) &saddrServer, sizeof( saddrServer )) )
{
fprintf( stderr, "Warning: %.40s: %d: Error on binding\n", __func__, __LINE__ );
}
listen( sktServer, 5 );
struct sockaddr_in saddrClient;
memset( &saddrClient, 0, sizeof( saddrClient ));
int sktClient = -1;
unsigned int uiClientAddrLength = sizeof(saddrClient);
fprintf( stdout, "Info: %.40s: %d: Attempting socket accept\n", __func__, __LINE__ );
sktClient = accept( sktServer, (struct sockaddr *) &saddrClient, &uiClientAddrLength);
if( sktClient < 0)
{
fprintf( stderr, "Warning: %.40s: %d: Error on accept\n", __func__, __LINE__ );
}
while( 1 != iShutdown )
{
int n = send( sktClient, &sTotalMsg, sizeof( sTotalMsg ), MSG_DONTROUTE );//MSG_DONTROUTE
//n = send( sktClient, &sTotalMsg, sizeof( sTotalMsg ), MSG_DONTROUTE );//MSG_DONTROUTE
//int n = write( sktClient, &sTotalMsg, sizeof( sTotalMsg ) );//MSG_DONTROUTE
if( 0 > n )
{
fprintf( stderr, "Warning: %.40s: %d: Could not write to socket any more, automatically restarting server\n", __func__, __LINE__ );
close( sktClient );
break;
}
sTime_t sTimeWait = { 0, 1000000 }; // This controls the sending interval for messages, normally 5mS for full speed, but often better to slow down for simulation.
//nanosleep( &sTimeWait, 0 ); // Note Nagle algorithm has to be disabled on socket for this to work at short time intervals.
}
}
Configuration
========
The version on the test box is QNX localhost 6.5.0 2010/07/09-14:44:03EDT x86pc x86
/home/swdev/SCU_CSCI/Communicator #nicinfo
fxp0:
INTEL 82558 Ethernet Controller
Physical Node ID ........................... 0019DB BB621E
Current Physical Node ID ................... 0019DB BB621E
Current Operation Rate ..................... 100.00 Mb/s full-duplex
Active Interface Type ...................... MII
Active PHY address ....................... 1
Maximum Transmittable data Unit ............ 1514
Maximum Receivable data Unit ............... 1514
Hardware Interrupt ......................... 0x5
I/O Aperture ............................... 0xef00 - 0xef3f
Memory Aperture ............................ 0xfdcff000 - 0xfdcfffff
ROM Aperture ............................... 0x80dbf6b07fa5a04
Promiscuous Mode ........................... On
Multicast Support .......................... Enabled
Packets Transmitted OK ..................... 240427
Bytes Transmitted OK ....................... 1057642863152
Broadcast Packets Transmitted OK ........... 1474
Multicast Packets Transmitted OK ........... 0
Memory Allocation Failures on Transmit ..... 0
Packets Received OK ........................ 1577
Bytes Received OK .......................... 16466284388
Broadcast Packets Received OK .............. 6017203
Multicast Packets Received OK .............. 3643479
Memory Allocation Failures on Receive ...... 0
Single Collisions on Transmit .............. 0
Multiple Collisions on Transmit ............ 0
Deferred Transmits ......................... 0
Late Collision on Transmit errors .......... 0
Transmits aborted (excessive collisions) ... 0
Transmit Underruns ......................... 0
No Carrier on Transmit ..................... 0
Receive Alignment errors ................... 0
Received packets with CRC errors ........... 0
Packets Dropped on receive ................. 0
Short packets .............................. 0
Total Frames experiencing Collison(s) ...... 0
/home/swdev/SCU_CSCI/Communicator #ifconfig -v
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
input: 21793713 packets, 18102059063 bytes
output: 21793713 packets, 18102059063 bytes
inet 127.0.0.1 netmask 0xff000000
fxp0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
address: 00:19:db:bb:62:1e
media: Ethernet autoselect (100baseTX full-duplex)
status: active
input: 199438745 packets, 16466567049 bytes, 9661145 multicasts
output: 7898758806 packets, 1061757361338 bytes
inet 192.168.1.6 netmask 0xffffff00 broadcast 192.168.1.255J Sinton(deleted)2014-06-20T16:29:56Zpost110625: Re: ipnat format documentationOlivier Robert(deleted)http://community.qnx.com/sf/go/post1106252014-06-06T18:58:58Z2014-06-06T18:58:58ZI finally found a definite answer in the following document :
Core Networking with io-pkt User’s Guide
www.qnx.com/download/download/23598/core_networking.pdf
It clearly invites the user to read the NetBSD documentation.
The exact version is not told, but it is said in numerous other QNX articles that the Networking Stack was taken from NetBSD 4.0
So here it is :
http://netbsd.gw.com/cgi-bin/man-cgi?ipnat.conf+5+NetBSD-4.0Olivier Robert(deleted)2014-06-06T18:58:58Zpost110548: ipnat format documentationOlivier Robert(deleted)http://community.qnx.com/sf/go/post1105482014-05-31T09:55:38Z2014-05-31T09:55:38ZI need to set up ipnat on QNX 6.3.2
I'm looking for the QNX documentation on the "ipnat format file".
Do you know where I could find it ?
I think it should be quite similar to this FreeBSD documentation :
http://www.freebsd.org/cgi/man.cgi?query=ipnat&sektion=5
Here is the documentation all I was able to find at this point :
- Tutorial on Firewall setting (http://www.qnx.com/developers/docs/6.3.2/neutrino/user_guide/security.html#Firewall)
- Configuration examples (http://www.qnx.com/developers/docs/6.3.2/neutrino/user_guide/examples.html#Firewalls)
- Manual page of the IPNat command line utility (http://www.qnx.com/developers/docs/6.3.2/neutrino/utilities/i/ipnat.html)Olivier Robert(deleted)2014-05-31T09:55:38Zpost110522: Re: Debugging io-pkt pfil library using Momentics IDEatish bhowmick(deleted)http://community.qnx.com/sf/go/post1105222014-05-29T09:38:54Z2014-05-29T09:38:54Zsorry i didn't comprehend what u said .For debugging an exe or library which that exe may load I have the source code of the program & library which I have coded and running on Qnx , in this case I dont have the source code of io-pkt , I only have the code of the pfil.so which I have written and mounting it into the io-pkt process . Now how do I attach the debugger to io-pkt process from the IDE and how do i hit the breakpoints in my pfil.so when i mount it inside io-pkt .atish bhowmick(deleted)2014-05-29T09:38:54Zpost110520: Re: Debugging io-pkt pfil library using Momentics IDEatish bhowmick(deleted)http://community.qnx.com/sf/go/post1105202014-05-29T08:29:33Z2014-05-29T08:29:33Zsorry i didn't comprehend what u said .For debugging an exe or library which that exe may load I have the source code of the program & library which I have coded and running on Qnx , in this case I dont have the source code of io-pkt , I only have the code of the pfil.so which I have written and mounting it into the io-pkt process . Now how do I attach the debugger to already running io-pkt process from the IDE , also how do i hit the breakpoints in my pfil.so when i mount it inside io-pkt .atish bhowmick(deleted)2014-05-29T08:29:33Zpost110506: Re: Debugging io-pkt pfil library using Momentics IDENick Reillyhttp://community.qnx.com/sf/go/post1105062014-05-28T13:34:30Z2014-05-28T13:34:30ZOne thing that may help would be to run 2 copies of io-pkt on two different interfaces.
The first copy is started normally and qconn is run. This is your debugging connection.
The second copy is started with additional options "-i 1 -p tcpip prefix=/alt". You then need to mount your driver and lsm with "-Tio-pkt1", and any other commands to talk to this io-pkt need to have "SOCK=/alt" in the environment. This is now your copy of io-pkt being debugged.Nick Reilly2014-05-28T13:34:30Zpost110505: Re: Debugging io-pkt pfil library using Momentics IDESean Boudreau(deleted)http://community.qnx.com/sf/go/post1105052014-05-28T13:29:46Z2014-05-28T13:29:46ZThere's nothing specific to io-pkt in this scenario. It's just
like debugging any other process remotely; however you normally
do that with the IDE.
-seanb
On Wed, May 28, 2014 at 04:53:59AM -0400, atish bhowmick wrote:
> I am developing a io-pkt pfil library . I am mounting the .so into the io-pkt stack using "mount -T io-pkt /home/libpacketfilter.so" .
>
> I am developing on Momentics IDE in a windows VM and it linked to a target QNX VM .
> I need to know how do I debug this library mounted in the io-pkt stack of the target Qnx Vm using Momentics IDE .
>
> If remote debugging using IDE isnt possible , do I need to use gdb on the target Qnx Vm directly , if so how ?
>
> Any pointers would be helpful .
>
> Thanks
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110501
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2014-05-28T13:29:46Zpost110501: Debugging io-pkt pfil library using Momentics IDEatish bhowmick(deleted)http://community.qnx.com/sf/go/post1105012014-05-28T08:53:59Z2014-05-28T08:53:59ZI am developing a io-pkt pfil library . I am mounting the .so into the io-pkt stack using "mount -T io-pkt /home/libpacketfilter.so" .
I am developing on Momentics IDE in a windows VM and it linked to a target QNX VM .
I need to know how do I debug this library mounted in the io-pkt stack of the target Qnx Vm using Momentics IDE .
If remote debugging using IDE isnt possible , do I need to use gdb on the target Qnx Vm directly , if so how ?
Any pointers would be helpful .
Thanksatish bhowmick(deleted)2014-05-28T08:53:59Zpost110291: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1102912014-05-13T09:25:41Z2014-05-13T09:25:41ZUnfortunately the problem is still there.
Adding the nat rules seems not to solve the problem.
Any help will be very appreciated.
Thanksmarco spinetti(deleted)2014-05-13T09:25:41Zpost110158: Process terminationatish bhowmick(deleted)http://community.qnx.com/sf/go/post1101582014-05-06T08:53:00Z2014-05-06T08:53:00ZHow can i detect the termination of any process ? Using procmgr_event_notify I am only able to detect daemon process termination using PROCMGR_EVENT_DAEMON_DEATH flag , but I am interested in getting notifications for termination of all processes on QNX system .
Any pointers would be helpful .atish bhowmick(deleted)2014-05-06T08:53:00Zpost110096: Re: Get absolute fulll path of running processColin Burgess(deleted)http://community.qnx.com/sf/go/post1100962014-04-30T12:57:54Z2014-04-30T12:57:54Z6.6 exposes /proc/<pid>/exename and /proc/<pid>/cmdline to simplify this.
On 2014-04-29 11:39 PM, atish bhowmick wrote:
> Ok thanks for your help , i made some progress with the info u provided .
> One more thing does 6.6 version contain more/added proc filesystem functionality where information such as cmdline arguments & full path ca be readiily extracted from /proc/pid/as file thru some devctl cmds or other api s like we do for pid & stack address on 6.5 .
>
> Pls let me know , in that case I wud go for 6.6 version .
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110088
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comColin Burgess(deleted)2014-04-30T12:57:54Zpost110088: Re: Get absolute fulll path of running processatish bhowmick(deleted)http://community.qnx.com/sf/go/post1100882014-04-30T03:39:14Z2014-04-30T03:39:14ZOk thanks for your help , i made some progress with the info u provided .
One more thing does 6.6 version contain more/added proc filesystem functionality where information such as cmdline arguments & full path ca be readiily extracted from /proc/pid/as file thru some devctl cmds or other api s like we do for pid & stack address on 6.5 .
Pls let me know , in that case I wud go for 6.6 version .atish bhowmick(deleted)2014-04-30T03:39:14Zpost110080: Re: Get absolute fulll path of running processColin Burgess(deleted)http://community.qnx.com/sf/go/post1100802014-04-29T12:43:02Z2014-04-29T12:43:02ZOn 2014-04-29 8:22 AM, atish bhowmick wrote:
> I wanted to clarify one more thing , the initial_stack which i read from the procfs_info structure using the devctl call , is that the value which needs to be used as offset during lseek .
Yes.
>
> lseek(fd,initial_stack,SEEK_SET); // OFFSET AS FILE TO initial stack
>
> // now read the as file
> read(fd,buf,stack size);
>
> now does buffer contain all the stack data which can be parsed for auxv ?
> Also how much size should i read to get the stack ?
The amount you must read will depend on the number of arguments, and the
number of environment variables on the stack.
You should be prepared to demand read more as you scan for the aux vector.
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110079
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comColin Burgess(deleted)2014-04-29T12:43:02Zpost110079: Re: Get absolute fulll path of running processatish bhowmick(deleted)http://community.qnx.com/sf/go/post1100792014-04-29T12:22:06Z2014-04-29T12:22:06ZI wanted to clarify one more thing , the initial_stack which i read from the procfs_info structure using the devctl call , is that the value which needs to be used as offset during lseek .
lseek(fd,initial_stack,SEEK_SET); // OFFSET AS FILE TO initial stack
// now read the as file
read(fd,buf,stack size);
now does buffer contain all the stack data which can be parsed for auxv ?
Also how much size should i read to get the stack ?atish bhowmick(deleted)2014-04-29T12:22:06Zpost110076: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100762014-04-29T08:44:39Z2014-04-29T08:44:39ZNick,
can you help me?
I have some problems to write what you suggested me.
I try to execute the command pfctl -s all I get this output:
TRANSLATION RULES:
nat on ppp0 from <natRangeTable> to any -> (ppp0) round-robin
nat on en5 from <natRangeTable> to any -> (en5) round-robin
rdr-anchor "dnsRedirect1" all
rdr-anchor "dnsRedirect2" all
rdr-anchor "dnsRedirect3" all
rdr-anchor "dnsRedirect4" all
FILTER RULES:
scrub in all no-df fragment reassemble
scrub out on mam0 all max-mss 968 fragment reassemble
pass out all keep state
pass in quick on mam0 all keep state
pass in quick on mep0 all keep state
pass in quick on mhp0 all keep state
pass in quick on en5 all keep state
block drop in on uap0 all
block drop in quick on uap0 from any to (mam0:network)
block drop in quick on uap0 from any to (mhp0:network)
block drop in quick on uap0 from any to (ppp0)
block drop in quick on uap0 from any to (en5:network)
pass in quick on uap0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootp keep state
pass in quick on uap0 inet from any to 255.255.255.255 keep state
pass in quick on uap0 inet proto udp from any to 239.255.255.250 port = 1900 keep state
pass in quick on uap0 proto tcp from any to any port = 8100 keep state
pass in quick on uap0 inet from any to 224.0.0.0/4 keep state
pass in quick on uap0 proto udp from any to (uap0) port 49152:65535
anchor "dialUpTrigger" all
pass in quick inet proto icmp all icmp-type echoreq keep state
No queue in use
STATES:
self tcp 127.0.0.1:65515 -> 127.0.0.1:4444 ESTABLISHED:ESTABLISHED
self tcp 192.168.0.100:65486 -> 173.194.35.7:80 TIME_WAIT:TIME_WAIT
...............
As I write you I have internet connection on en5 (192.168.0.100) and I'd like to nat the traffic from wireless uap0 to en5 (so wireless clients with ip 192.168.1.X can go to internet).
You suggested me to add this rule:
nat on uap0 from 192.168.1.0/24 to any -> (en5)
There are two problems:
1. I don't know which is the configuration file for pfctl (the file /etc/pf.conf) contains only comments). ho can I discover the current configuration file?
2. Where do I have to insert the new nat rule?
It seems to me that there is some rules which are in conflit con the new nat rule.
Thanksmarco spinetti(deleted)2014-04-29T08:44:39Zpost110064: Re: Get absolute fulll path of running processColin Burgess(deleted)http://community.qnx.com/sf/go/post1100642014-04-28T13:54:01Z2014-04-28T13:54:01ZJust read the stack using read() on /proc/<pid>/as, once past argc then
they are all char pointers until you hit the auxv array.
It may be useful to find it in a local process first, either in gdb or
printing out the values.
On 2014-04-28 9:32 AM, atish bhowmick wrote:
> yeah i m using 6.5 , when u say scan thru starting from initial_stack address , are the subsequent members contiguous memory locations , if not how do i parse them since they r not accessible via any devctl structures such as debug_process_info
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110062
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comColin Burgess(deleted)2014-04-28T13:54:01Zpost110063: Re: io-pkt-v6-hc.coremaurice gibbs(deleted)http://community.qnx.com/sf/go/post1100632014-04-28T13:42:58Z2014-04-28T13:42:58ZThanks for the analysis.maurice gibbs(deleted)2014-04-28T13:42:58Zpost110062: Re: Get absolute fulll path of running processatish bhowmick(deleted)http://community.qnx.com/sf/go/post1100622014-04-28T13:32:38Z2014-04-28T13:32:38Zyeah i m using 6.5 , when u say scan thru starting from initial_stack address , are the subsequent members contiguous memory locations , if not how do i parse them since they r not accessible via any devctl structures such as debug_process_infoatish bhowmick(deleted)2014-04-28T13:32:38Zpost110059: Re: Get absolute fulll path of running processColin Burgess(deleted)http://community.qnx.com/sf/go/post1100592014-04-28T12:59:53Z2014-04-28T12:59:53ZIs this on 6.5?
The fullpath of the executable is stored on the auxv array on the
stack. Basically if you start with the initial_stack value from the
process info,
then you can scan through...
argc
argv0
...
argvn
NULL
envp1
...
envpn
NULL
auxv
Then look for auxv[AT_EXEFILE]
On 2014-04-28 6:43 AM, atish bhowmick wrote:
> I am trying to extract the absolute full path of executing processes from the proc file system by reading the file the /proc/pid/as using devctl.
>
> struct dinfo_s {
> procfs_debuginfo info;
> char pathbuffer[PATH_MAX];
> };
> struct dinfo_s dinfo;
> sprintf( buffer, "/proc/%d/as", pid );
> if ((fd = open( buffer, O_RDONLY )) != NULL)
> {
> status = devctl( fd, DCMD_PROC_MAPDEBUG_BASE, &dinfo, sizeof(dinfo), NULL );
> printf("path %s \n", dinfo.info.path);
> }
>
> But the path info I get is the relative path which is dependent on the launchpoint of the process i.e if an exe is launched as ./app1 , its full path shows as ./app1 instead of its absolute path .
>
> How do I extract the absolute path of a running process ?
>
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post110057
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comColin Burgess(deleted)2014-04-28T12:59:53Zpost110057: Get absolute fulll path of running processatish bhowmick(deleted)http://community.qnx.com/sf/go/post1100572014-04-28T10:43:48Z2014-04-28T10:43:48ZI am trying to extract the absolute full path of executing processes from the proc file system by reading the file the /proc/pid/as using devctl.
struct dinfo_s {
procfs_debuginfo info;
char pathbuffer[PATH_MAX];
};
struct dinfo_s dinfo;
sprintf( buffer, "/proc/%d/as", pid );
if ((fd = open( buffer, O_RDONLY )) != NULL)
{
status = devctl( fd, DCMD_PROC_MAPDEBUG_BASE, &dinfo, sizeof(dinfo), NULL );
printf("path %s \n", dinfo.info.path);
}
But the path info I get is the relative path which is dependent on the launchpoint of the process i.e if an exe is launched as ./app1 , its full path shows as ./app1 instead of its absolute path .
How do I extract the absolute path of a running process ?atish bhowmick(deleted)2014-04-28T10:43:48Zpost110056: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100562014-04-28T07:50:56Z2014-04-28T07:50:56ZNick,
what happens if a wifi ip want to talk with one other wifi ip?
Does it make sense to add in pf.conf, before nat rule:
pass quick on wlan0 from 192.168.1.0/24 to 192.168.1.1
where 192.168.1.1 is the ip of wlan0?
Thanksmarco spinetti(deleted)2014-04-28T07:50:56Zpost110038: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100382014-04-24T20:59:00Z2014-04-24T20:59:00ZLast question: my pf.conf under /etc is actually empty.
If I insert the rule inside it, is it in the right position given my routing table (first post)?
Thanks very muchmarco spinetti(deleted)2014-04-24T20:59:00Zpost110036: Re: routing wireless traffic to lanNick Reillyhttp://community.qnx.com/sf/go/post1100362014-04-24T17:04:51Z2014-04-24T17:04:51ZYes:
nat on wlan0 from 192.168.1.0/24 to any -> (en0)Nick Reilly2014-04-24T17:04:51Zpost110034: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100342014-04-24T16:25:40Z2014-04-24T16:25:40Z> It should be your actual IP address on the LAN and not the gateway IP address
> but the rest is correct.
Ok my actual ip.
Can I insert en0 (lan) instead of my actual ip?marco spinetti(deleted)2014-04-24T16:25:40Zpost110031: Re: routing wireless traffic to lanNick Reillyhttp://community.qnx.com/sf/go/post1100312014-04-24T14:48:18Z2014-04-24T14:48:18ZIt should be your actual IP address on the LAN and not the gateway IP address but the rest is correct.Nick Reilly2014-04-24T14:48:18Zpost110030: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100302014-04-24T14:46:12Z2014-04-24T14:46:12ZThen I should insert in /etc/pf.conf the following rule:
nat on wlan0 from 192.168.1.0/24 to any -> 192.168.0.1
Is it correct?
My wifi clients has addresses 192.168.1.X and my gateway 8connected to internet is 192.168.0.1).
Thanksmarco spinetti(deleted)2014-04-24T14:46:12Zpost110029: Re: routing wireless traffic to lanNick Reillyhttp://community.qnx.com/sf/go/post1100292014-04-24T14:27:45Z2014-04-24T14:27:45ZYou are going to need to setup NAT. This is done in QNX through PF, see
http://www.qnx.com/developers/docs/660/index.jsp?topic=%2Fcom.qnx.doc.neutrino.utilities%2Ftopic%2Fp%2Fpf.conf.html especially the section beginning "Translation examples".Nick Reilly2014-04-24T14:27:45Zpost110028: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100282014-04-24T14:10:39Z2014-04-24T14:10:39ZToday I checked the variable net.inet.ip.forwarding and its value is 1:
net.inet.ip.forwarding=1
What else do I have to do to be my wifi clients able to browse internet (gateway 192.168.0.1)?
Thanksmarco spinetti(deleted)2014-04-24T14:10:39Zpost110009: Re: io-pkt-v6-hc.coreNick Reillyhttp://community.qnx.com/sf/go/post1100092014-04-23T20:24:32Z2014-04-23T20:24:32ZThis isn't an init time issue, it's whilst running data.
There was a TCP packet received that triggered the output of a TCP packet (e.g. received an ACK and send outstanding data, received data and sending a delayed ACK etc.). When going to send the packet the devn driver has requested memory from the shim layer and it crashed when trying to give that memory to the devn driver.
The memory it is handing back is something that has been previously freed, I would be suspicious that maybe what was put on the free list wasn't actually what was allocated before and maybe check the devn driver in detail.Nick Reilly2014-04-23T20:24:32Zpost110007: io-pkt-v6-hc.coremaurice gibbs(deleted)http://community.qnx.com/sf/go/post1100072014-04-23T20:06:07Z2014-04-23T20:06:07ZI am running io-pkt-v6-hc on a PPC460. A memory fault (core dump) was detected by my verification engineer on our board. I have run gdb on the corefile (no symbols). Can someone tell me if the trace information:
a. iis ndicative of a problem that happened while initializing io-pkt or the shim layer.
b. is a known problem with a knonw work-around or fix.
I'd also like to know the root cause of the problem if possible.
Thanks. Here is the gdb output:
moman@cesium:~/workspace/debug$
moman@cesium:~/workspace/debug$ ./ntoppc-gdb ./io-pkt-v6-hc ./io-pkt-v6-hc.core
GNU gdb 6.8 qnx-nto (rev. 347)
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu
--target=powerpc-unknown-nto-qnx6.4.0"...
(no debugging symbols found)
Reading symbols from /mnt/workspace/debug/libc.so.3...(no debugging symbols
found)...done.
Loaded symbols for libc.so.3
Reading symbols from /mnt/workspace/debug/devnp-shim.so...(no debugging symbols
found)...done.
Loaded symbols for devnp-shim.so
Reading symbols from /mnt/workspace/debug/devn-comm300-ep460c.so...(no
debugging symbols found)...done.
Loaded symbols for devn-comm300-ep460c.so
Program terminated with signal 11, Segmentation fault.
[New process 458782 thread 1]
[New process 458782 thread 2]
#0 0x480f4e9c in segv_handler ()
(gdb) bt
#0 0x480f4e9c in segv_handler ()
#1 <signal handler called>
#2 0xfe388ac8 in UseFreeEntry () from devnp-shim.so
#3 0xfe388d44 in MemchunkMalloc () from devnp-shim.so
#4 0xfe3883fc in ex_alloc () from devnp-shim.so
#5 0xfe3950a4 in ppc405_alloc_npkt () from devn-comm300-ep460c.so
#6 0xfe396820 in ppc405_send_packets () from devn-comm300-ep460c.so
#7 0xfe389f70 in shim_start () from devnp-shim.so
#8 0x4808cea8 in ifq_enqueue_wtp ()
#9 0x48097ffc in ether_output ()
#10 0x480da0dc in ip_output ()
#11 0x48127274 in tcp_output ()
#12 0x481255a0 in tcp_input ()
#13 0x480d32fc in ip_input ()
#14 0x480d339c in ip_intr ()
#15 0x4810ff44 in process_pkts ()
#16 0x4811086c in receive_loop_uni ()
#17 0x48102294 in thread_init ()
#18 0xfe3206b4 in timer_settime () from libc.so.3
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)maurice gibbs(deleted)2014-04-23T20:06:07Zpost110006: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1100062014-04-23T19:37:48Z2014-04-23T19:37:48Z> Are you sure you want to route or do you actually want to NAT?
>
> For routing you simply need to enable the sysctl for forwarding. For NAT you
> will need to load the PF lsm and setup the PF rules.
I'd like that my wireless clients (with ip 192.168.1.) went redirected to my link#5 which is connected to internet.
Should I do that with route or nat?
What exaclty do I have to set?marco spinetti(deleted)2014-04-23T19:37:48Zpost109998: Re: process identification inside io-pkt pfil hookNick Reillyhttp://community.qnx.com/sf/go/post1099982014-04-23T16:20:55Z2014-04-23T16:20:55ZThe short answer is that you cannot. None of the utilities like tcpdump or pf provide this capability.
About the only thing you can do is see who has file descriptors open to io-pkt (like the output of "pidin fds"), but that doesn't stop someone from hand crafting a packet, writing it to io-pkt and closing before you go and look. You would have to do kernel tracing and catch who is writing to io-pkt.Nick Reilly2014-04-23T16:20:55Zpost109989: Re: routing wireless traffic to lanNick Reillyhttp://community.qnx.com/sf/go/post1099892014-04-23T15:34:54Z2014-04-23T15:34:54ZAre you sure you want to route or do you actually want to NAT?
For routing you simply need to enable the sysctl for forwarding. For NAT you will need to load the PF lsm and setup the PF rules.Nick Reilly2014-04-23T15:34:54Zpost109974: Re: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1099742014-04-22T16:52:55Z2014-04-22T16:52:55Zcan someone help me?marco spinetti(deleted)2014-04-22T16:52:55Zpost109968: routing wireless traffic to lanmarco spinetti(deleted)http://community.qnx.com/sf/go/post1099682014-04-18T21:25:58Z2014-04-18T21:25:58ZHi have qnx 6.3.2
and I'd like to route the traffic from wlan to lan where I'm connected to internet.
Wlan range address is 192.168.1.X while lan is 192.168.0.X.
Gateway lan is 192.168.0.1.
Now I can the following routing table:
default 192.168.0.1 UG
10.0.0.0/24 link#3 U
10.0.0.255 link#3 UHL
127.0.0.1 127.0.0.1 UH
192.168.0.0/24 #ink#5 U
192.168.0.0/16 192.168.0.1 U
192.168.0.1 XX:xx:xx:xx:xx:xx UHL
192.168.1.0/24 link#6 U
192.168.1.1 yy:yy:yy:yy:yy:yy UHL
239:255:255:250/32 192.168.1.1 UG
Thanks verymuchmarco spinetti(deleted)2014-04-18T21:25:58Zpost109938: Re: Open TCP ports on terminationRobert Murrellhttp://community.qnx.com/sf/go/post1099382014-04-16T17:26:52Z2014-04-16T17:26:52ZAn Internet search on CLOSE_WAIT shows that there is no remedy for this condition. When QNX cleans up an abnormally-terminated process, it would be nice if it called shutdown() on any open sockets on behalf of the process.Robert Murrell2014-04-16T17:26:52Zpost109937: Re: Open TCP ports on terminationRobert Murrellhttp://community.qnx.com/sf/go/post1099372014-04-16T16:36:56Z2014-04-16T16:36:56ZI just noticed this. The ports are in CLOSE_WAIT, not TIME_WAIT, so SO_REUSEADDR does not apply. I did notice that the connections from the Ethernet cards do eventually time out, but the localhost ones are still present.Robert Murrell2014-04-16T16:36:56Zpost109936: Re: Open TCP ports on terminationRobert Murrellhttp://community.qnx.com/sf/go/post1099362014-04-16T15:11:43Z2014-04-16T15:11:43ZThanks for the quick reply. The setsockopt() function succeeds but does not help. netstat does show the port in the CLOSE_WAIT state.Robert Murrell2014-04-16T15:11:43Zpost109935: Re: Open TCP ports on terminationMate Szarvashttp://community.qnx.com/sf/go/post1099352014-04-16T12:53:40Z2014-04-16T12:53:40ZThe implementation returning EADDRINUSE is by design, you can learn about it by searching for TCP TIME_WAIT state; random hits:
http://hea-www.harvard.edu/~fine/Tech/addrinuse.html
http://www.microhowto.info/howto/listen_on_a_tcp_port_with_connections_in_the_time_wait_state.html
Code similar to the following may stop getting EADDRINUSE:
int yes = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
On Apr 16, 2014, at 9:36 PM, Robert Murrell <community-noreply@qnx.com<mailto:community-noreply@qnx.com>>
wrote:
I am developing under QNX 6.5.0 an embedded system with a minimal QNX install. Our application has a built in web server listening on port 80 (its in a blocking accept() call). If the program terminates, either by a SIGTERM or crash, a boot program will restart the program. When the program restarts, the bind() fails with EADDRINUSE. Whats more, when dhcp.client gets an IP address, it call a custom dhcp-up program I wrote. This program opens a socket, connects to http://localhost:80, and sends a specially crafted HTTP GET command to signal our application that it has an IP address. If this happens when the TCP port is in this busy condition. the connect() is successful and so is the send(). But the call to recv() blocks forever, locking up dhcp-up. I know I can make dhcp-up a little more robust to time out in this condition, but I did not expect the connect() to pass.
I was under the impression that QNX automatically cleans up after a terminated program by releasing all its allocated resources. Apparently this does not include in-use TCP ports. An internet search shows this to be a fairly common problem with TCP/IP stacks and there are various tools available to reset the stack. So my question is, does QNX have a mechanism to remedy this situation? I have tested killing io-pkt-v4, restarting it, and then remounting the Ethernet drivers. This works, but I would like to know if there is something a little more elegant to fix this.
_______________________________________________
Technology
http://community.qnx.com/sf/go/post109933
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comMate Szarvas2014-04-16T12:53:40Zpost109933: Open TCP ports on terminationRobert Murrellhttp://community.qnx.com/sf/go/post1099332014-04-16T12:36:16Z2014-04-16T12:36:16ZI am developing under QNX 6.5.0 an embedded system with a minimal QNX install. Our application has a built in web server listening on port 80 (its in a blocking accept() call). If the program terminates, either by a SIGTERM or crash, a boot program will restart the program. When the program restarts, the bind() fails with EADDRINUSE. Whats more, when dhcp.client gets an IP address, it call a custom dhcp-up program I wrote. This program opens a socket, connects to http://localhost:80, and sends a specially crafted HTTP GET command to signal our application that it has an IP address. If this happens when the TCP port is in this busy condition. the connect() is successful and so is the send(). But the call to recv() blocks forever, locking up dhcp-up. I know I can make dhcp-up a little more robust to time out in this condition, but I did not expect the connect() to pass.
I was under the impression that QNX automatically cleans up after a terminated program by releasing all its allocated resources. Apparently this does not include in-use TCP ports. An internet search shows this to be a fairly common problem with TCP/IP stacks and there are various tools available to reset the stack. So my question is, does QNX have a mechanism to remedy this situation? I have tested killing io-pkt-v4, restarting it, and then remounting the Ethernet drivers. This works, but I would like to know if there is something a little more elegant to fix this.Robert Murrell2014-04-16T12:36:16Zpost109865: Re: process identification inside io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1098652014-04-09T10:12:50Z2014-04-09T10:12:50ZDoes any of the native utilities on QNX such as tcpdump or the Packet Filter (pf) module (which acts like an ipfilter , firewall & NAT) capture and display the process id information with respect to a specific packet captured ? If they do how ?
Basically now that I have captured all the tcp/ip header info from the packet mbuf such as ip , port , I am trying to find a way to trace back this packet to the process/application who initiated the request .
TIA
Atishatish bhowmick(deleted)2014-04-09T10:12:50Zpost109844: Re: process identification inside io-pkt pfil hookNick Reillyhttp://community.qnx.com/sf/go/post1098442014-04-08T12:33:56Z2014-04-08T12:33:56ZYou can't tell which process is associated with the packet. The hooks are right down at a low layer in the network stack, way below where the socket and process mapping is available.Nick Reilly2014-04-08T12:33:56Zpost109839: process identification inside io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1098392014-04-08T08:47:56Z2014-04-08T08:47:56ZI have a packet filter implemented using the pfil interface which I am mounting into the io-pkt . In both the input and output hooks , how do I extract information with regards to process identification whoever is making this connection request ?
the hooks have signature : hook(void *arg, struct mbuf **m, struct ifnet *ifp, int dir)
how can i get the pid or any relevant process information about the process who is making the network calls which results in transmission of packet ?
Any information / sample code would be useful .
TIA
Atishatish bhowmick(deleted)2014-04-08T08:47:56Zpost109747: Re: VLAN frames transmission using packet filtersMuralidhar Duvvurihttp://community.qnx.com/sf/go/post1097472014-04-02T08:41:23Z2014-04-02T08:41:23ZCan you please post a template as to how I can add the VLAN tag as part of the payload? Or if there is some documentation which you can point to, that would be great.Muralidhar Duvvuri2014-04-02T08:41:23Zpost109692: how to intercept http packet using io-pkt pfilatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096922014-03-31T09:41:43Z2014-03-31T09:41:43ZI am trying to implement a pfil so which taps into any outgoing http packet . I have registered the outgoing hook to IP layer . In the out hook I am able to extract data (source & destination ip addr & port nos. using mtod from IP & TCP headers present in mbuf . I am able to intercept all the phrelay/qconn packets being exchanged . But I am not able to intercept any http packet when I invoke the browser and open any webpage . I dont get any trace in sloginfo with destination port as 80 which http uses .
Please provide any pointers as to whats required to intercept a http request packet in pfil .
Below is a code snippet for reference :
struct pfil_head *pfh_inet = pfil_head_get(PFIL_TYPE_AF, AF_INET);
pfil_add_hook(output_hook, NULL, PFIL_OUT | PFIL_WAITOK,pfh_inet);
static int output_hook(void *arg, struct mbuf **m,
struct ifnet *ifp, int dir)
{
out_bytes += (*m)->m_len;
struct mbuf* trav = (*m);
do{
short mbuf_type = trav->m_type;
int mbuf_length = 0;
mbuf_length = trav->m_len;
int mbuf_flags = trav->m_flags;
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() mbuf len:%d type:%d flags:%d",
mbuf_length,mbuf_type,mbuf_flags);
// found a packet header mbuf
if(M_PKTHDR == mbuf_flags && MT_HEADER == mbuf_type )
{
struct pkthdr pkthdr_data = trav->m_pkthdr;
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() packet hdr len:%d csumflags:%d csumdata:%u segsize:%u", pkthdr_data.len,pkthdr_data.csum_flags,pkthdr_data.csum_data,pkthdr_data.segsz);
}
// found a data packet mbuf but where is it ???
if(mbuf_length > 0 )
{
struct ip *ipheader = NULL;
ipheader = mtod(trav,struct ip *);
// lookout for TCP packets
if(ipheader && (IPPROTO_TCP == ipheader->ip_p))
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source ip : %d:%d:%d:%d",
(int)(ipheader->ip_src.s_addr&0xFF),
(int)((ipheader->ip_src.s_addr&0xFF00)>>8),
(int)((ipheader->ip_src.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_src.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() dest ip : %d:%d:%d:%d",
(int)(ipheader->ip_dst.s_addr&0xFF),
(int)((ipheader->ip_dst.s_addr&0xFF00)>>8),
(int)((ipheader->ip_dst.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_dst.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() version : %d hdrl : %d length : %d",
ipheader->ip_v,ipheader->ip_hl,ipheader->ip_len);
// offset to the tcp header which follows the ip header
struct tcphdr *tcpheader = NULL;
int iphdrsize = sizeof(struct ip);
tcpheader= (struct tcphdr *)((void *)ipheader + iphdrsize);
if(tcpheader)
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source port : %d dest port : %d",
ntohs(tcpheader->th_sport),ntohs(tcpheader->th_dport));
}
}
}
// go to next buf in chain
trav=trav->m_next;
}while(NULL != trav);
TIA
Atishatish bhowmick(deleted)2014-03-31T09:41:43Zpost109691: Re: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096912014-03-31T06:49:58Z2014-03-31T06:49:58ZHi Nick ,
I am able to extract data from IP & TCP headers .I am able to intercept all the phrelay/qconn packets being exchanged . But I am not able to intercept any http packet when I invoke the browser and open any webpage . Please provide any pointers as to whats required to intercept a http request packet .
Regards
Atishatish bhowmick(deleted)2014-03-31T06:49:58Zpost109664: Re: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096642014-03-28T11:26:54Z2014-03-28T11:26:54ZHey Nick ,
with the help of ur info now I am able to read the port nos. inside the tcp header . I am getting the port nos for qconn & phrelay Qnx services which are running but I am not getting the port no 80 corresponding to http request when I invoke the browser . Can u pls help if anything else needs to be done for http packets . Below is the code snippet which reads ip header & tcp header from mbuf in the outgoing hook :
if(mbuf_length > 0 )
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() i m databuffer");
struct ip *ipheader = NULL;
ipheader = mtod(trav,struct ip *);
// lookout for TCP packets
if(ipheader && (6 == ipheader->ip_p))
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source ip : %d:%d:%d:%d",
(int)(ipheader->ip_src.s_addr&0xFF),
(int)((ipheader->ip_src.s_addr&0xFF00)>>8),
(int)((ipheader->ip_src.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_src.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() dest ip : %d:%d:%d:%d",
(int)(ipheader->ip_dst.s_addr&0xFF),
(int)((ipheader->ip_dst.s_addr&0xFF00)>>8),
(int)((ipheader->ip_dst.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_dst.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() version : %d hdrl : %d length : %d",
ipheader->ip_v,ipheader->ip_hl,ipheader->ip_len);
// offset to the tcp header which follows the ip header
struct tcphdr *tcpheader = NULL;
//tcpheader = mtod(trav,struct tcphdr *);
int iphdrsize = sizeof(struct ip);
tcpheader= (struct tcphdr *)((void *)ipheader + iphdrsize);
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() ip header size : %d",iphdrsize);
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() ip header location : %p",(void *)ipheader);
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() tcp header location : %p",(void *)tcpheader);
if(tcpheader)
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source port : %04x dest port : %04x",
tcpheader->th_sport,tcpheader->th_dport);
}
}
}
TIA
Atishatish bhowmick(deleted)2014-03-28T11:26:54Zpost109629: Re: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096292014-03-27T11:48:42Z2014-03-27T11:48:42ZHey Nick ,
ur info helped a lot ... now I am able to read the IP header from mbuf & extract source & dest ip address from the structure . I also need to read the TCp header & read port numbers . I tried offesetting to TCp header from the IP header if the IP protocol value is 6 (TCP) & read port nos . but I am not sure I am getting proper values . I want to filter out any http requests by detecting the destination port no = 80 , but right now I am mever getting the value 80 after I invoke a http request using the browser . Below is the code snippet I have used ... any pointers as to what might be wrong wud b immensely helpful .
struct ip *ipheader = NULL;
ipheader = mtod(trav,struct ip *);
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() mtod done for ip");
// lookout for TCP packets
if(ipheader && (6 == ipheader->ip_p))
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source ip : %d:%d:%d:%d",
(int)(ipheader->ip_src.s_addr&0xFF),
(int)((ipheader->ip_src.s_addr&0xFF00)>>8),
(int)((ipheader->ip_src.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_src.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() dest ip : %d:%d:%d:%d",
(int)(ipheader->ip_dst.s_addr&0xFF),
(int)((ipheader->ip_dst.s_addr&0xFF00)>>8),
(int)((ipheader->ip_dst.s_addr&0xFF0000)>>16),
(int)((ipheader->ip_dst.s_addr&0xFF000000)>>24));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() version : %d hdrl : %d length : %d",
ipheader->ip_v,ipheader->ip_hl,ipheader->ip_len);
struct tcphdr *tcpheader = NULL;
tcpheader= (struct tcphdr *)(ipheader + (ipheader->ip_hl*4));
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() mtod done for tcp");
if(tcpheader)
{
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() source port : %04x dest port : %04x",
tcpheader->th_sport,
tcpheader->th_dport);
}
}
TIA
Atishatish bhowmick(deleted)2014-03-27T11:48:42Zpost109619: Re: io-pkt pfil hookNick Reillyhttp://community.qnx.com/sf/go/post1096192014-03-26T18:15:15Z2014-03-26T18:15:15ZForgot to mention, watch out that on output you may have a chain, always check (*m)->m_len before doing the mtod() to make sure you have enough data there.Nick Reilly2014-03-26T18:15:15Zpost109618: Re: io-pkt pfil hookNick Reillyhttp://community.qnx.com/sf/go/post1096182014-03-26T18:13:36Z2014-03-26T18:13:36ZThe mbuf contains the data on the wire, nothing to do with sockaddr. You need to do something like:
#include <netinet/ip.h>
struct ip *ip;
ip = mtod(*m, struct ip *);
Then you have the addresses in ip->ip_src, ip->ip_dst. The protocol in ip->ip_p will tell you what to cast the next bunch of bytes to in order to decode them.Nick Reilly2014-03-26T18:13:36Zpost109612: Re: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096122014-03-26T13:42:03Z2014-03-26T13:42:03ZI had some success in walking thru the mbufs constituting the packet with some code modifications . The 1st mbuf is the header foloowed by the data mbufs . I am able to traverse thru the mbufs and extract some info related to length of data & packet . But I cant figure out the location of the ip layer information inside the data mbufs . when I access some of the char sequence members of the mbuf such as MH_databuf & M_databuf using mtod I get some sequence of chars . Am I looking in the wrong place ?
Pls give me some pointers .
Below is the code of the hook for reference :
static int output_hook(void *arg, struct mbuf **m,
struct ifnet *ifp, int dir)
{
out_bytes += (*m)->m_len;
struct mbuf* trav = (*m);
do{
short mbuf_type = trav->m_type;
int mbuf_length = trav->m_len;
int mbuf_flags = trav->m_flags;
//char * mbuf_hdrdata = (*m)->m_data;
//struct mowner * mbuf_owner = (*m)->m_owner;
//char * mbuf_data = (*m)->m_dat;
//char *mdata = (char *)malloc(mbuf_length+1);
//strncpy(mdata,mbuf_hdrdata,mbuf_length);
//mdata[mbuf_length]='\0';
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() mbuf len:%d type:%d flags:%d",
mbuf_length,mbuf_type,mbuf_flags);
// found a packet header mbuf
if(M_PKTHDR == mbuf_flags)
{
struct pkthdr pkthdr_data = trav->m_pkthdr;
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() packet hdr len:%d csumflags:%d csumdata:%u segsize:%u",
pkthdr_data.len,pkthdr_data.csum_flags,pkthdr_data.csum_data,pkthdr_data.segsz);
struct ifnet *if_data = NULL;
if_data = pkthdr_data.rcvif;
if(if_data)
{
struct sockaddr *dest_sa = NULL;
int fam = -1;
int port = -1;
if(if_data->if_dl && if_data->if_dl->ifa_dstaddr)
{
dest_sa = if_data->if_dl->ifa_dstaddr;
if(dest_sa){
port = ntohs(((struct sockaddr_in*)dest_sa)->sin_port);
fam = ((struct sockaddr_in*)dest_sa)->sin_family;
}
}
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() socket info:%d %d",port,fam);
}
}
// found a data packet mbuf but where is it ???
else if(MT_DATA == mbuf_type )
{
//char databuffer[MLEN]= {0};
//strcpy(databuffer,trav->m_dat);
//char * databuffer = trav->m_dat;
//char *pdata = (char *)malloc(mbuf_length+1);
//strncpy(pdata,databuffer,mbuf_length);
//pdata[mbuf_length]='\0';
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),_SLOG_ERROR,
"in our output_hook() i m databuffer");
}
// go to next buf in chain
trav=trav->m_next;
}while(NULL != trav);
return 0; // 0 means allow, 1 means block
}atish bhowmick(deleted)2014-03-26T13:42:03Zpost109603: Re: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1096032014-03-25T12:44:59Z2014-03-25T12:44:59ZHey Nick ,
thnx for ur reply ... i tried few things on mbuf today but without any success .
I have registered my output_hook as :
pfh_inet = pfil_head_get(PFIL_TYPE_AF, AF_INET);
pfil_add_hook(output_hook, NULL, PFIL_OUT | PFIL_WAITOK,pfh_inet);
So I am expecting IP layer data in my mbuf . The only data structure containing struct sock_addr inside struct mbuf is pkthdr_data.rcvif of struct ifnet type . So i was trying to access this member to get port & ip information but its empty .
Also in my traversal i follow the next packet link but if i follow the next buffer link of same chain I get segmentation issues . Below is a code snippet of the hook function . Any pointers as to what I am doing wrong wud be very useful .
static int output_hook(void *arg, struct mbuf **m,
struct ifnet *ifp, int dir)
{
out_bytes += (*m)->m_len;
struct mbuf* trav = (*m);
do{
short mbuf_type = trav->m_type;
int mbuf_length = trav->m_len;
int mbuf_flags = trav->m_flags;
struct pkthdr pkthdr_data = trav->m_pkthdr;
struct ifnet *if_data = NULL;
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() mbuf len:%d type:%d flags:%d",
mbuf_length,mbuf_type,mbuf_flags);
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() packet hdr len:%d csumflags:%d csumdata:%u segsize:%u",
pkthdr_data.len,pkthdr_data.csum_flags,pkthdr_data.csum_data,pkthdr_data.segsz);
if_data = pkthdr_data.rcvif;
if(if_data)
{
struct sockaddr *dest_sa = NULL;
int fam = -1;
int port = -1;
if(if_data->if_dl && if_data->if_dl->ifa_dstaddr)
{
dest_sa = if_data->if_dl->ifa_dstaddr;
if(dest_sa){
port = ntohs(((struct sockaddr_in*)dest_sa)->sin_port);
fam = ((struct sockaddr_in*)dest_sa)->sin_family;
}
}
slogf( _SLOG_SETCODE(_SLOGC_TEST, 2),
_SLOG_ERROR,
"in our output_hook() socket info:%d %d",port,fam);
}
// go to next packet
trav=trav->m_nextpkt;
}while(NULL != trav);
return 0; // 0 means allow, 1 means block
}
TIA
Atishatish bhowmick(deleted)2014-03-25T12:44:59Zpost109587: Re: io-pkt pfil hookNick Reillyhttp://community.qnx.com/sf/go/post1095872014-03-24T13:50:56Z2014-03-24T13:50:56ZThe packet is a struct mbuf * located in *m. It is going to depend on the parameters you passed to pfil_add_hook() on whether you just have the IP layer or a full layer 2 packet (e.g. Ethernet layer). Also you need to watch out for whether you have the full packet in one mbuf or whether it is distributed along a chain of mbufs requiring you to walk the chain whilst traversing the packet.
Once you've got these things sorted out, you can just mtod() it and extract the fields directly.Nick Reilly2014-03-24T13:50:56Zpost109577: io-pkt pfil hookatish bhowmick(deleted)http://community.qnx.com/sf/go/post1095772014-03-24T11:49:01Z2014-03-24T11:49:01ZI have a packet filter implemented using the pfil interface which I am mounting into the io-pkt . In both the input and output hooks , how do I extract information such as source & destination ip-address , port no of the packets ?
the hooks have signature : hook(void *arg, struct mbuf **m, struct ifnet *ifp, int dir)
how can I get all the relevant packet data coming in / going out inside these hooks functions which are getting called ?
Any information / sample code would be useful .atish bhowmick(deleted)2014-03-24T11:49:01Zpost109003: Re: subscribing to Multicast ethernet addressesNick Reillyhttp://community.qnx.com/sf/go/post1090032014-02-24T14:16:55Z2014-02-24T14:16:55ZPlease see SIOCADDMULTI / SIOCDELMULTINick Reilly2014-02-24T14:16:55Zpost109002: subscribing to Multicast ethernet addressesMuralidhar Duvvurihttp://community.qnx.com/sf/go/post1090022014-02-24T14:09:33Z2014-02-24T14:09:33ZIs there some API where in I can subscribe to multicast ethernet addresses? I do not have mutlicast IP address and so cant do it using the IP_ADDMEMBERSHIP method.Muralidhar Duvvuri2014-02-24T14:09:33Zpost108939: RE: unable to mount packet filter LSM into io-pkt-v4-hcMario Charesthttp://community.qnx.com/sf/go/post1089392014-02-20T16:11:00Z2014-02-20T16:11:00ZThe boot process detects and mount the proper network driver. You can find out which one it is by doing pidin -P io-pkt-v4-hc mem. You`ll see the dll.
-----Message d'origine-----
De : Manoj Sati [mailto:community-noreply@qnx.com]
Envoyé : Thursday, February 20, 2014 11:03 AM
À : technology-networking
Objet : Re: unable to mount packet filter LSM into io-pkt-v4-hc
Ok, i did a "slay io-pkt-v4-hc" and then a /sbin/io-pkt-v4-hc -ptcpip, several things happen:
a) i lose connectivity with the Momentics IDE machine
b) i/f wm0 is again missing when i do a ifconfig
c) the browser on the QNX VM is unable to open any web site...
do i need to restart the VM?
ps: I did this - /sbin/io-pkt-v4-hc -ptcpip - because when the QNX boots up and i do a ps -ef | grep io-pkt-v4-hc, it shows me the argument for io-pkt-v4-hc as -ptcpip
_______________________________________________
Technology
http://community.qnx.com/sf/go/post108938
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comMario Charest2014-02-20T16:11:00Zpost108938: Re: unable to mount packet filter LSM into io-pkt-v4-hcManoj Sati(deleted)http://community.qnx.com/sf/go/post1089382014-02-20T16:02:32Z2014-02-20T16:02:32ZOk, i did a "slay io-pkt-v4-hc" and then a /sbin/io-pkt-v4-hc -ptcpip, several things happen:
a) i lose connectivity with the Momentics IDE machine
b) i/f wm0 is again missing when i do a ifconfig
c) the browser on the QNX VM is unable to open any web site...
do i need to restart the VM?
ps: I did this - /sbin/io-pkt-v4-hc -ptcpip - because when the QNX boots up and i do a ps -ef | grep io-pkt-v4-hc, it shows me the argument for io-pkt-v4-hc as -ptcpipManoj Sati(deleted)2014-02-20T16:02:32Zpost108937: Re: unable to mount packet filter LSM into io-pkt-v4-hcNick Reillyhttp://community.qnx.com/sf/go/post1089372014-02-20T15:50:09Z2014-02-20T15:50:09ZThere is no way to unmount an lsm from io-pkt, you will need to slay and restart.Nick Reilly2014-02-20T15:50:09Zpost108936: Re: unable to mount packet filter LSM into io-pkt-v4-hcManoj Sati(deleted)http://community.qnx.com/sf/go/post1089362014-02-20T15:48:00Z2014-02-20T15:48:00ZWow, that seems to have worked....thanks!
Any way to unmount my packet filter? do i have do a "slay io-pkt-v4-hc"?Manoj Sati(deleted)2014-02-20T15:48:00Zpost108931: Re: unable to mount packet filter LSM into io-pkt-v4-hcNick Reillyhttp://community.qnx.com/sf/go/post1089312014-02-20T14:39:55Z2014-02-20T14:39:55ZIf you already have an instance of io-pkt running, don't start another one without specifying the prefix option otherwise they will stomp on each other.
Your mount command should be
mount -T io-pkt /path/to/file/lsm-libSISIPSNetFilter.so
The examples of other lsm's that omit the path are where the lsm is already in /lib/dll. Also the type needs to be io-pkt regardless of which variant of io-pkt you are actually running. Keep an eye on slog messages by using sloginfo, io-pkt will report if it has problems with mounts there in more detail than the simple errno that it returns to mount.Nick Reilly2014-02-20T14:39:55Zpost108919: unable to mount packet filter LSM into io-pkt-v4-hcManoj Sati(deleted)http://community.qnx.com/sf/go/post1089192014-02-20T07:23:22Z2014-02-20T07:23:22ZSetup: QNX running on a VM (x86), Momentics IDE 4.7
intent: develop a packet filter that can let us inspect all in/out traffic and potentially reject some.
I have read the Packet Filtering chapter from the "Core Networking with io-pkt User's Guide for Neutrino 6.3.2 or later".pdf. I have taken the sample code provided in there and have written a LSM by creating a QNX C Project from Momentics with Type set to "Shared library". There is only one source file with the entry point defined as:
struct _iopkt_lsm_entry IOPKT_LSM_ENTRY_SYM(pfil) =
IOPKT_LSM_ENTRY_SYM_INIT(pfil_entry);
int pfil_entry(void *dll_hdl, struct _iopkt_self *iopkt, char *options)
{
struct pfil_head *pfh_inet;
printf("in the entry point of the packet filter module\n");
// saw this is another posting on Foundry 27, but this did not work for me
//pfh_inet = pfil_head_get(PFIL_TYPE_IFT, IFT_ETHER);
pfh_inet = pfil_head_get(PFIL_TYPE_AF, AF_INET);
if (pfh_inet == NULL) {
printf("could not get pfil_head_get()\n");
return ENOENT;
}
int ret = 0;
ret = pfil_add_hook(input_hook, NULL, PFIL_IN | PFIL_WAITOK, pfh_inet);
ret = pfil_add_hook(output_hook, NULL, PFIL_OUT | PFIL_WAITOK, pfh_inet);
pfh_inet = pfil_head_get(PFIL_TYPE_IFNET,0);
if (pfh_inet == NULL) {
return ESRCH;
}
pfil_add_hook(iface_hook, NULL, PFIL_IFNET, pfh_inet);
pfil_add_hook(ifacecfg_hook, NULL, PFIL_IFADDR, pfh_inet);
printf("Loaded pfil hooks - this time returning 1(one) from the hook function\n" );
return 0;
}
static int output_hook(void *arg, struct mbuf **m, struct ifnet *ifp, int dir)
{
out_bytes += (*m)->m_len;
return 1; // 0 means allow, 1 means block
}
functions input_hook(), iface_hook(), ifacecfg_hook(), deinit_module() omitted for brevity.
When I compile this, I get the following lines on the Console of the IDE:
make.exe[2]: Entering directory `C:/ide-4.7-workspace/SISIPSNetFilter/x86/so'
C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86 -c -Wc,-Wall -O -DNDEBUG -I. -IC:/ide-4.7-workspace/SISIPSNetFilter/x86/so -IC:/ide-4.7-workspace/SISIPSNetFilter/x86 -IC:/ide-4.7-workspace/SISIPSNetFilter -IC:/QNX650/target/qnx6/usr/include/io-pkt -IC:/QNX650/target/qnx6/usr/include -shared -DVARIANT_so -DBUILDENV_qss C:/ide-4.7-workspace/SISIPSNetFilter/SISIPSNetFilter.c
C:/QNX650/host/win32/x86/usr/bin/rm -f C:/ide-4.7-workspace/SISIPSNetFiler/x86/so/lsm-libSISIPSNetFilter.so
C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86 -shared -Wl,-hlsm-libSISIPSNetFilter.so.1 -oC:/ide-4.7-workspace/SISIPSNetFilter/x86/so/lsm-libSISIPSNetFilter.so SISIPSNetFilter.o -L . -L C:/QNX650/target/qnx6/x86/lib -L C:/QNX650/target/qnx6/x86/usr/lib -Wl,--rpath-link . -Wl,--rpath-link C:/QNX650/target/qnx6/x86/lib -Wl,--rpath-link C:/QNX650/target/qnx6/x86/usr/lib
C:/QNX650/host/win32/x86/usr/bin/rm -f C:/ide-4.7-workspace/SISIPSNetFilter/x86/so/lsm-libSISIPSNetFilterS.a
C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86 -a C:/ide-4.7-workspace/SISIPSNetFiler/x86/so/lsm-libSISIPSNetFilterS.a SISIPSNetFilter.o
C:\QNX650\host\win32\x86\usr\bin\ntox86-ar: creating C:/ide-4.7-workspace/SISIPSNetFilter/x86/so/lsm-libSISIPSNetFilterS.a
make.exe[2]: Leaving directory `C:/ide-4.7-workspace/SISIPSNetFiler/x86/so'
Once the LSM is ready, I copy it to the QNX target, and attempt to mount it to the io-pkt* stack
# mount -v -T io-pkt lsm-libSISIPSNetFilter.so
Parsed: mount from [lsm-libSISIPSNetFilter.so] mount on [NULL] type [io-pkt]
mount: Can't mount / (type io-pkt)
mount: Possible reason: No such device or address
# mount -v -T io-pkt-v4-hc lsm-libSISIPSNetFilter.so
Parsed: mount from [lsm-libSISIPSNetFilter.so] mount on [NULL] type [io-pkt-v4-hc]
mount: Can't mount / (type io-pkt-v4-hc)
mount: Possible reason: Invalid argument
When I launch an instance of io-pkt-v4-hc as below:
/sbin/io-pkt-v4-hc -p libSISIPSNetFilter
my prints() from the code get printed out:
In the entry point of the packet filter module
Loaded pfil hooks - this time returning 1(one) from the hook function
However, the outbound traffic is not always stopped. It works maybe 1 out of 10 times. Besides, when I do this, I also lose the wm0 interface because when I do an ifconfig, I do not see it any more:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
Only when I kill the newly started instance of io-pkt-v4-hc, do I see the wm0 interface back:
wm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
capabilities tx=3f<IP4CSUM,TCP4CSUM,UDP4CSUM,TCP6CSUM,UDP6CSUM,TSO4>
enabled=0
address: 00:50:56:91:1b:e2
media: Ethernet autoselect (1000baseT full-duplex)
status: active
inet 10.211.204.206 netmask 0xfffffe00 broadcast 10.211.205.255
Why does not my mount work? Is the sample code given in the Core Networking Guide incorrect? There was a posting (http://community.qnx.com/sf/discussion/do/listPosts/projects.networking/discussion.technology.topc24644?pageSize=-1#post_post107768) that talked about the docs for packet filtering to be a bit on the lighter side - when will these docs get better?
Thanks,
msManoj Sati(deleted)2014-02-20T07:23:22Zpost108867: Re: TCP_QUICKACK Equivalent?Nick Reillyhttp://community.qnx.com/sf/go/post1088672014-02-18T18:40:18Z2014-02-18T18:40:18ZIf you get in touch with your QNX sales or support people they should be able to provide you with the PSP.Nick Reilly2014-02-18T18:40:18Zpost108866: Re: TCP_QUICKACK Equivalent?Mark Dowdy(deleted)http://community.qnx.com/sf/go/post1088662014-02-18T18:36:30Z2014-02-18T18:36:30ZWhere would I find networking PSP 119. I've looked through the downloads and Googled it without success. Also, is it an official patch release? Thanks.Mark Dowdy(deleted)2014-02-18T18:36:30Zpost108856: Re: TCP_QUICKACK Equivalent?Nick Reillyhttp://community.qnx.com/sf/go/post1088562014-02-18T13:48:34Z2014-02-18T13:48:34ZUnfortunately we don't currently have anything on a per-socket basis, just those system wide sysctls.
Setting either of these shouldn't really affect the far end, the delayed ACK is more an optimisation for the data receiver. I've seen some transfers perform significantly better with ack on push - Windows XP sending over a lossy wireless link in particular.Nick Reilly2014-02-18T13:48:34Zpost108817: Re: TCP_QUICKACK Equivalent?Mark Dowdy(deleted)http://community.qnx.com/sf/go/post1088172014-02-14T22:48:30Z2014-02-14T22:48:30ZThanks. As tempted as I am to set net.inet.tcp.ack_on_push or clear qnx.net.inet.tcp.qnx_delack, I really only need this behavior on a couple of sockets connected to one particular device. I'd don't know what we'd be the "friendliest" device if I enabled this behavior system wide.Mark Dowdy(deleted)2014-02-14T22:48:30Zpost108801: Re: TCP_QUICKACK Equivalent?Nick Reillyhttp://community.qnx.com/sf/go/post1088012014-02-14T13:52:01Z2014-02-14T13:52:01ZBy default io-pkt does TCP delayed ACKs.
If you are running 6.5.0 SP1 with networking PSP 119 or later then there is a new sysctl:
qnx.net.inet.tcp.qnx_delack = 1
Clearing this to 0 will disable all delayed ACK behaviour.
Alternatively if the data being sent has the PUSH flag set then you can enable the following sysctl:
net.inet.tcp.ack_on_push = 0
Setting this to 1 will result in an ACK on every packet received with PUSH set.Nick Reilly2014-02-14T13:52:01Zpost108792: TCP_QUICKACK Equivalent?Mark Dowdy(deleted)http://community.qnx.com/sf/go/post1087922014-02-13T22:04:30Z2014-02-13T22:04:30ZDoes io-pkt have a TCP_QUICKACK equivalent to force ACKs to be sent immediately rather than delayed in normal TCP operation? I'm seeing delayed ACKs from a QNX box's communication with a small peripheral connected to our system. Thanks.Mark Dowdy(deleted)2014-02-13T22:04:30Zpost108716: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigNick Reillyhttp://community.qnx.com/sf/go/post1087162014-02-11T13:45:53Z2014-02-11T13:45:53ZAh sorry for the misunderstanding.
When it locks up, CTRL-Z the ifconfig and use dumper to grab a core of io-pkt. The backtrace usually has a good clue as to what is going on.Nick Reilly2014-02-11T13:45:53Zpost108715: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigClemens Fischerhttp://community.qnx.com/sf/go/post1087152014-02-11T13:43:41Z2014-02-11T13:43:41ZNo, I am loading a driver for a smsc chip which comes up as en0.
In addition I am loading a second self written driver via mount which comes up with a user defined three character string which I have defined.
The problem now is that when I load the self written driver via mount, assigning an ip with ifconfig fails. Ifconfig just does not return.
If I load my driver with io-pkt-v4, i.e. not mounting it, assigning an ip with ifconfig works fine.
> You say this is an io-pkt driver and yet it is coming up as en0, are you
> actually passing in "en" on the dev_attach() call? You need to pass in a
> string that is unique for your driver, typically a 2 or 3 letter abbreviation
> for the type of hardware your driver controls. The string "en" is used by the
> shim driver for io-net drivers running within io-pkt.Clemens Fischer2014-02-11T13:43:41Zpost108714: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigNick Reillyhttp://community.qnx.com/sf/go/post1087142014-02-11T13:31:57Z2014-02-11T13:31:57ZYou say this is an io-pkt driver and yet it is coming up as en0, are you actually passing in "en" on the dev_attach() call? You need to pass in a string that is unique for your driver, typically a 2 or 3 letter abbreviation for the type of hardware your driver controls. The string "en" is used by the shim driver for io-net drivers running within io-pkt.Nick Reilly2014-02-11T13:31:57Zpost108712: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigClemens Fischerhttp://community.qnx.com/sf/go/post1087122014-02-11T10:50:37Z2014-02-11T10:50:37ZI am still facing an issue with the mount version.
Mounting the driver works fine and the interface is visible with ifconfig.
As soon as I try to associate an IP-Address with the device, ifconfig hangs and does not return.
It also seems as if the other active ethernet connections are disconnected, as I can't connect to the target through qconn anymore.
I have tracked down the issue to the init function of the driver and this instruction:
ifp->if_flags_tx |= IFF_RUNNING;
I took this instruction from the speedo implementation. I assume it enables transmission?
When I remove this, mount works and I can assign an IP-address just fine, but I can't transmit any data.
When using a second io-pkt-v4 instance I don't face this issue.
Any ideas?
Regards,
Clemens
> I have chosen the mount version and it works fine.
> Thanks guys for the fast and helpful resonse.
>
> Regards,
> Clemens
>
> >
> > If you want them in the same io-pkt:
> >
> > # mount -T io-pkt /fullpath/to/your_driver.so
> >
> > Running two instances may be easier for debugging initially.
> >
> > On Wed, Feb 05, 2014 at 04:54:17PM +0000, Hugh Brown wrote:
> > > Are you running 2 instances of io-pkt? If so, then the second instance
> > > should be started with ³-ptcpip prefix=/alt² command line argument. To
> > > interact with the second instance of io-pkt, you need to prefix all
> > > commands with ³SOCK=/alt ifconfig Š² etc.
> > >
> > >
> > >
> > >
> > > On 2014/2/5, 11:47 AM, "Clemens Fischer" <community-noreply@qnx.com> wrote:
> > >
> > > >Hi,
> > > >
> > > >I am currently writing an ethernet driver which basically works fine.
> > > >Before loading my driver, I already have an smsc9500 ethernet driver
> > > >loaded which is displayed as en0 in ifconfig.
> > > >The problem is that as soon as I load my driver via io-pkt-v4, en0
> > > >disappears from ifconfig and my interface is shown instead.
> > > >The smsc driver is still working, but I just can't see it in ifconfig
> > > >anymore.
> > > >As soon as I kill io-pkt-v4 for the new driver, en0 appears again.
> > > >
> > > >Is there a kind of index or something else I am missing?
> > > >
> > > >Thanks,
> > > >Clemens
> > > >
> > > >
> > > >
> > > >_______________________________________________
> > > >
> > > >Technology
> > > >http://community.qnx.com/sf/go/post108616
> > > >To cancel your subscription to this discussion, please e-mail
> > > >technology-networking-unsubscribe@community.qnx.com
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > >
> > > Technology
> > > http://community.qnx.com/sf/go/post108618
> > > To cancel your subscription to this discussion, please e-mail technology-
> > networking-unsubscribe@community.qnx.com
>
>Clemens Fischer2014-02-11T10:50:37Zpost108698: Re: VLAN frames transmission using packet filtersNick Reillyhttp://community.qnx.com/sf/go/post1086982014-02-10T15:02:19Z2014-02-10T15:02:19ZIt's something I haven't looked in to, but if you want to go that way then I think you will need to have the VLAN stuff as part of the data payload rather than in the sockaddr.Nick Reilly2014-02-10T15:02:19Zpost108696: Re: VLAN frames transmission using packet filtersMuralidhar Duvvurihttp://community.qnx.com/sf/go/post1086962014-02-10T14:43:57Z2014-02-10T14:43:57ZI did not create a vlan pseudo interface. I'll try that now. However, from the QNX help, it seems to mention that creating the VLAN pseudo interface would fill in the VLAN header and insert it into the packet that is going out. Now, my application is itself creating the VLAN header and the Ethernet header and trying to pass the packet directly to the driver using the if_output call on a specific interface. In this sceanrio, is it still required to create a vlan pseudo interface and map it to the actual interface?Muralidhar Duvvuri2014-02-10T14:43:57Zpost108693: Re: VLAN frames transmission using packet filtersNick Reillyhttp://community.qnx.com/sf/go/post1086932014-02-10T13:23:49Z2014-02-10T13:23:49ZHave you tried actually creating a VLAN interface and configuring the VLAN ID field on it, and then doing a transmit on that?Nick Reilly2014-02-10T13:23:49Zpost108692: VLAN frames transmission using packet filtersMuralidhar Duvvurihttp://community.qnx.com/sf/go/post1086922014-02-10T10:00:47Z2014-02-10T10:00:47ZI am trying to transmit Ethernet frames with VLAN headers using the packet filter's if_output method. I set the sockaddr structure sa_data arguments to hold the destination ethernet address, source address, VLAN tag, VLAN flags and the next header type arguments. However, I do not see any packet being transmitted on the wire. If I transmit a frame without the VLAN fields, the transmission happens properly. Does it have to do to with the QNX stack not supporting VLAN frame transmission or the Ethernet driver? Any insight would be helpful.Muralidhar Duvvuri2014-02-10T10:00:47Zpost108660: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigClemens Fischerhttp://community.qnx.com/sf/go/post1086602014-02-07T09:54:55Z2014-02-07T09:54:55ZI have chosen the mount version and it works fine.
Thanks guys for the fast and helpful resonse.
Regards,
Clemens
>
> If you want them in the same io-pkt:
>
> # mount -T io-pkt /fullpath/to/your_driver.so
>
> Running two instances may be easier for debugging initially.
>
> On Wed, Feb 05, 2014 at 04:54:17PM +0000, Hugh Brown wrote:
> > Are you running 2 instances of io-pkt? If so, then the second instance
> > should be started with ³-ptcpip prefix=/alt² command line argument. To
> > interact with the second instance of io-pkt, you need to prefix all
> > commands with ³SOCK=/alt ifconfig Š² etc.
> >
> >
> >
> >
> > On 2014/2/5, 11:47 AM, "Clemens Fischer" <community-noreply@qnx.com> wrote:
> >
> > >Hi,
> > >
> > >I am currently writing an ethernet driver which basically works fine.
> > >Before loading my driver, I already have an smsc9500 ethernet driver
> > >loaded which is displayed as en0 in ifconfig.
> > >The problem is that as soon as I load my driver via io-pkt-v4, en0
> > >disappears from ifconfig and my interface is shown instead.
> > >The smsc driver is still working, but I just can't see it in ifconfig
> > >anymore.
> > >As soon as I kill io-pkt-v4 for the new driver, en0 appears again.
> > >
> > >Is there a kind of index or something else I am missing?
> > >
> > >Thanks,
> > >Clemens
> > >
> > >
> > >
> > >_______________________________________________
> > >
> > >Technology
> > >http://community.qnx.com/sf/go/post108616
> > >To cancel your subscription to this discussion, please e-mail
> > >technology-networking-unsubscribe@community.qnx.com
> >
> >
> >
> >
> >
> > _______________________________________________
> >
> > Technology
> > http://community.qnx.com/sf/go/post108618
> > To cancel your subscription to this discussion, please e-mail technology-
> networking-unsubscribe@community.qnx.comClemens Fischer2014-02-07T09:54:55Zpost108626: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigSean Boudreau(deleted)http://community.qnx.com/sf/go/post1086262014-02-05T19:58:47Z2014-02-05T19:58:47ZIf you want them in the same io-pkt:
# mount -T io-pkt /fullpath/to/your_driver.so
Running two instances may be easier for debugging initially.
On Wed, Feb 05, 2014 at 04:54:17PM +0000, Hugh Brown wrote:
> Are you running 2 instances of io-pkt? If so, then the second instance
> should be started with ³-ptcpip prefix=/alt² command line argument. To
> interact with the second instance of io-pkt, you need to prefix all
> commands with ³SOCK=/alt ifconfig Š² etc.
>
>
>
>
> On 2014/2/5, 11:47 AM, "Clemens Fischer" <community-noreply@qnx.com> wrote:
>
> >Hi,
> >
> >I am currently writing an ethernet driver which basically works fine.
> >Before loading my driver, I already have an smsc9500 ethernet driver
> >loaded which is displayed as en0 in ifconfig.
> >The problem is that as soon as I load my driver via io-pkt-v4, en0
> >disappears from ifconfig and my interface is shown instead.
> >The smsc driver is still working, but I just can't see it in ifconfig
> >anymore.
> >As soon as I kill io-pkt-v4 for the new driver, en0 appears again.
> >
> >Is there a kind of index or something else I am missing?
> >
> >Thanks,
> >Clemens
> >
> >
> >
> >_______________________________________________
> >
> >Technology
> >http://community.qnx.com/sf/go/post108616
> >To cancel your subscription to this discussion, please e-mail
> >technology-networking-unsubscribe@community.qnx.com
>
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post108618
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2014-02-05T19:58:47Zpost108621: Re: Ethernet mutlicastVeniamin Afanasev(deleted)http://community.qnx.com/sf/go/post1086212014-02-05T18:09:49Z2014-02-05T18:09:49ZI need in in goose and gsse in IEC61850 protocol stack
>
> Why are you interested in the mac layer? Is the usual rfc
> ipv[46] <-> ethernet conversion sufficient?
>
> On Wed, Feb 05, 2014 at 02:46:26AM -0500, Veniamin Afanasev wrote:
> > Hello! How can i take and send packets with ethernet multicast mac adress
> and send them to my programm or send them from my programm. packet format is:
> dst multicast mac adress+ src multicast mac adress + data + crc.
> > Thanks.
> >
> >
> >
> > _______________________________________________
> >
> > Technology
> > http://community.qnx.com/sf/go/post108604
> > To cancel your subscription to this discussion, please e-mail technology-
> networking-unsubscribe@community.qnx.comVeniamin Afanasev(deleted)2014-02-05T18:09:49Zpost108619: Re: Ethernet mutlicastSean Boudreau(deleted)http://community.qnx.com/sf/go/post1086192014-02-05T17:36:17Z2014-02-05T17:36:17ZWhy are you interested in the mac layer? Is the usual rfc
ipv[46] <-> ethernet conversion sufficient?
On Wed, Feb 05, 2014 at 02:46:26AM -0500, Veniamin Afanasev wrote:
> Hello! How can i take and send packets with ethernet multicast mac adress and send them to my programm or send them from my programm. packet format is: dst multicast mac adress+ src multicast mac adress + data + crc.
> Thanks.
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post108604
> To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2014-02-05T17:36:17Zpost108618: Re: my io-pkt-v4 driver overwrites the en0 interface in ifconfigHugh Brownhttp://community.qnx.com/sf/go/post1086182014-02-05T16:54:37Z2014-02-05T16:54:37ZAre you running 2 instances of io-pkt? If so, then the second instance
should be started with ³-ptcpip prefix=/alt² command line argument. To
interact with the second instance of io-pkt, you need to prefix all
commands with ³SOCK=/alt ifconfig Š² etc.
On 2014/2/5, 11:47 AM, "Clemens Fischer" <community-noreply@qnx.com> wrote:
>Hi,
>
>I am currently writing an ethernet driver which basically works fine.
>Before loading my driver, I already have an smsc9500 ethernet driver
>loaded which is displayed as en0 in ifconfig.
>The problem is that as soon as I load my driver via io-pkt-v4, en0
>disappears from ifconfig and my interface is shown instead.
>The smsc driver is still working, but I just can't see it in ifconfig
>anymore.
>As soon as I kill io-pkt-v4 for the new driver, en0 appears again.
>
>Is there a kind of index or something else I am missing?
>
>Thanks,
>Clemens
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post108616
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2014-02-05T16:54:37Zpost108617: Re: Ethernet mutlicastVeniamin Afanasev(deleted)http://community.qnx.com/sf/go/post1086172014-02-05T16:49:40Z2014-02-05T16:49:40ZThank Dennis for source codeVeniamin Afanasev(deleted)2014-02-05T16:49:40Zpost108616: my io-pkt-v4 driver overwrites the en0 interface in ifconfigClemens Fischerhttp://community.qnx.com/sf/go/post1086162014-02-05T16:47:43Z2014-02-05T16:47:43ZHi,
I am currently writing an ethernet driver which basically works fine.
Before loading my driver, I already have an smsc9500 ethernet driver loaded which is displayed as en0 in ifconfig.
The problem is that as soon as I load my driver via io-pkt-v4, en0 disappears from ifconfig and my interface is shown instead.
The smsc driver is still working, but I just can't see it in ifconfig anymore.
As soon as I kill io-pkt-v4 for the new driver, en0 appears again.
Is there a kind of index or something else I am missing?
Thanks,
ClemensClemens Fischer2014-02-05T16:47:43Zpost108615: Re: Ethernet mutlicastVeniamin Afanasev(deleted)http://community.qnx.com/sf/go/post1086152014-02-05T16:41:52Z2014-02-05T16:41:52ZThanks Nick. You are rigth about Ethertype. I will read about BFPVeniamin Afanasev(deleted)2014-02-05T16:41:52Zpost108612: Re: Ethernet mutlicastDennis Kelllyhttp://community.qnx.com/sf/go/post1086122014-02-05T15:03:50Z2014-02-05T15:03:50ZThis source shows how to send/receive arbitrary ethernet frames via bpf - also how to receive frames in promiscuous mode (when supported by driver). Perhaps it may help.Dennis Kellly2014-02-05T15:03:50Zpost108611: Re: Ethernet mutlicastNick Reillyhttp://community.qnx.com/sf/go/post1086112014-02-05T13:31:13Z2014-02-05T13:31:13ZProbably the easiest and best documented way is to use BPF to send and receive the packets. There is a little overhead with this method so if you are looking for higher performance there are other methods including writing your own protocol lsm, but this is more complicated and not recommended unless you need the performance.
Don't forget that the NIC will usually filter out the Ethernet multicast on Rx until you open a socket and do an SIOCADDMULTI ioctl.
Also in your description of the packet you left out the Ethertype. You will need to use one that identifies your traffic to avoid it being mis-identified by other devices on the network. Please see
http://standards.ieee.org/develop/regauth/ethertype/public.html
Regards,
Nick.Nick Reilly2014-02-05T13:31:13Zpost108604: Ethernet mutlicastVeniamin Afanasev(deleted)http://community.qnx.com/sf/go/post1086042014-02-05T07:46:26Z2014-02-05T07:46:26ZHello! How can i take and send packets with ethernet multicast mac adress and send them to my programm or send them from my programm. packet format is: dst multicast mac adress+ src multicast mac adress + data + crc.
Thanks.Veniamin Afanasev(deleted)2014-02-05T07:46:26Zpost107777: Re: Sample protocol LSM access and/or documentationNick Reillyhttp://community.qnx.com/sf/go/post1077772014-01-06T15:39:30Z2014-01-06T15:39:30ZHi Girish,
The complete networking source code is not available, but if you contact your sales representative they should be able to give you access to the lsm-nraw.so source code. Also note that one alternative would be to use the BPF api.
Unfortunately we don't have too much documentation available for writing lsms, it is on our list of things to improve.
In your lsm you can use pfil to receive Ethernet frames. The init would be something like:
{
struct pfil_head *ether_pfil_hook;
ether_pfil_hook = pfil_head_get(PFIL_TYPE_IFT, IFT_ETHER);
if (ether_pfil_hook == NULL) {
return ENOENT;
}
rc = pfil_add_hook(your_input_fn, your_input_arg, PFIL_IN, ether_pfil_hook);
return rc;
}
Now this will get called on every Ethernet packet received.
int your_input_fn (void *your_input_arg, struct mbuf **mp, struct ifnet
*ifp, int dir)
{
struct mbuf *m;
m = *mp;
if (packet of interest) {
handle_it();
m_freem(m);
*mp = NULL;
return 1;
} else {
/* Let io-pkt handle it */
return 0;
}
}
For transmit you can also do:
ifp->if_output(ifp, m, &edst, 0);
This has an mbuf in m and edst is a struct sockaddr with
edst.sa_family = AF_UNSPEC;
edst.sa_data = struct ether_header data
m should just be the data in the frame, no header.Nick Reilly2014-01-06T15:39:30Zpost107768: Sample protocol LSM access and/or documentationGirish Rayas(deleted)http://community.qnx.com/sf/go/post1077682014-01-03T07:06:42Z2014-01-03T07:06:42ZWe are working on an implementation where in a specific ether type packet 0x88DC (WSMP) needs to be handled on both transmit and receive path of network. These packets are delivered/originate directly from an application bypassing IP stack.
In order to do this we are looking into developing a protocol LSM (loadable shared module - a proto.so) and an associated resource manager. This protocol will link directly in to Ethernet layer of the stack.
We need help with sample LSM code and/or any documentation on writing LSM. Access to nraw sample source specified in source guide would be helpful. When I tried to access source using following link, it is failing with permission denied error. Please let me know how to proceed on this.
http://community.qnx.com/sf/scm/do/listRepositories/projects.networking/scm
Thanks
GirishGirish Rayas(deleted)2014-01-03T07:06:42Zpost107636: Re: UNKNOWN COMMAND as reply from wpa_ctrl_request(cntrl,"SCAN")Darshan Chivatehttp://community.qnx.com/sf/go/post1076362013-12-18T20:51:29Z2013-12-18T20:51:29ZHi Chris,
I tried with below command with g removed,it did not create wpa_supplicant in /var/run folder. Program failed to open interface, wpa_ctrl_open() returned NULL.
Cmd : wpa_supplicant_xxxxx /var/run/wpa_supplicant -Dxxxx -ista0 -ddt -C/var/run/wpa_supplicant &
Below command did create wpa_supplicant in var/run/ folder but now i am not able to open control interface. wpa_ctrl_open(“/var/run/wpa_supplicant”) returned NULL!!!!!!!
Cmd : wpa_supplicant_xxxxx -Dxxxx -ista0 -ddt -C/var/run/wpa_supplicant &
I tried to start command line tool (Wpa_cli_xxxxx) with above non global wpa_supplicant
I got error: Failed to connect to Non-global ctrl-ifname
Wpa_cli_xxxxx works with global interface that I created previously. I was able to scan as well as connect to AP through commands.
NOTE: xxxxx is third party name who supplied wpa_suppicant.
ThanksDarshan Chivate2013-12-18T20:51:29Zpost107632: Re: UNKNOWN COMMAND as reply from wpa_ctrl_request(cntrl,"SCAN")Chris Eltervooghttp://community.qnx.com/sf/go/post1076322013-12-18T17:53:35Z2013-12-18T17:53:35Zyes remove the -g
I generally specify -D -i -c along with -ddt for debugging
The only time I have used -g is for specifying a new p2p interface.Chris Eltervoog2013-12-18T17:53:35Zpost107631: Re: UNKNOWN COMMAND as reply from wpa_ctrl_request(cntrl,"SCAN")Darshan Chivatehttp://community.qnx.com/sf/go/post1076312013-12-18T16:56:58Z2013-12-18T16:56:58ZThanks Chris for reply,
I am opening global interface.
command i use to start supplicant:
wpa_supplicant_xxxxx -g/var/run/wpa_supplicant-global &
How to open a regular Interface?when i remove -g from above command it does not work(Help menu opens)
I don't see any option to open regular interface.
ThanksDarshan Chivate2013-12-18T16:56:58Zpost107627: Re: UNKNOWN COMMAND as reply from wpa_ctrl_request(cntrl,"SCAN")Chris Eltervooghttp://community.qnx.com/sf/go/post1076272013-12-18T16:37:00Z2013-12-18T16:37:00ZWhich interface you opened against? UNKNOWN_COMMAND means just that, but there are two parsing contexts, the regular control interface (which contains scan) and the global interface (which doesn't contain scan).
Have you tried just running with the command line tools?Chris Eltervoog2013-12-18T16:37:00Zpost107621: UNKNOWN COMMAND as reply from wpa_ctrl_request(cntrl,"SCAN")Darshan Chivatehttp://community.qnx.com/sf/go/post1076212013-12-17T21:46:32Z2013-12-17T21:46:32ZHi All,
I am new to QNX and WIFI. I am trying to open interface for wpa_supplicant and SCAN for APs.
I am able to open interface with wpa supplicant through wpa_ctrl_open("/var/run/wpa_supplicant") successfully.
I sent "PING" command to WPA supplicant using wpa_ctrl_request() I got PONG as reply(I assume WPA supplicant is up and parsing commands).
But when I sent "SCAN" command reply was "UNKNOWN COMMAND".
can any one suggest what might be the problem?
Thanks in advance
DarshanDarshan Chivate2013-12-17T21:46:32Zpost107094: RE: Problem using qnet over IPMario Charesthttp://community.qnx.com/sf/go/post1070942013-11-27T17:03:19Z2013-11-27T17:03:19ZCheck if the switch supports vlan, you could use that to isolate the networks
-----Message d'origine-----
De : Matthias Grafmueller [mailto:community-noreply@qnx.com]
Envoyé : Wednesday, November 27, 2013 6:51 AM
À : technology-networking
Objet : Problem using qnet over IP
Hi all,
I'm trying to gain qnet performance benefits regarding bandwidth, by using load balancing over two network interfaces per node but just one switch. Our setup is two nodes with two network interfaces each. The four network interfaces are all connected to one switch.
OS: QNX6.5.0.
If initializing qnet in default mode everything works fine, except for qnet recognizing that both links are connected to the same switch (as mentioned in the documentation).
I think this is shown in qnetstats: lr_inbound(): ignoring resolve packet on redundant l4 0.
Somewhere I read that this is not the case using qnet over IP.
However, when starting qnet over IP the whole system crashes.
What I'm doing is:
1. qnet default mode:
# io-pkt-v4-hc -p tcpip
# mount -T io-pkt -o mac=${NODEMAC} /proc/boot/devnp-mpc85xx.so # mount -T io-pkt -o bind=tsec0,bind=tsec2 /lib/dll/lsm-qnet.so
2. qnet over IP:
# io-pkt-v4-hc -p tcpip
# mount -T io-pkt -o mac=${NODEMAC} /proc/boot/devnp-mpc85xx.so # mount -T io-pkt -o bind=ip,resolve=dns /lib/dll/lsm-qnet.so
Name resolving seems to be working if testing with gethostbyname(). I am using etc/hosts.
Am I doing anything wrong here?
Thanks,
Matthias
_______________________________________________
Technology
http://community.qnx.com/sf/go/post107078
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comMario Charest2013-11-27T17:03:19Zpost107078: Problem using qnet over IPMatthias Grafmuellerhttp://community.qnx.com/sf/go/post1070782013-11-27T14:50:47Z2013-11-27T14:50:47ZHi all,
I'm trying to gain qnet performance benefits regarding bandwidth, by using load balancing over two network interfaces per node but just one switch. Our setup is two nodes with two network interfaces each. The four network interfaces are all connected to one switch.
OS: QNX6.5.0.
If initializing qnet in default mode everything works fine, except for qnet recognizing that both links are connected to the same switch (as mentioned in the documentation).
I think this is shown in qnetstats: lr_inbound(): ignoring resolve packet on redundant l4 0.
Somewhere I read that this is not the case using qnet over IP.
However, when starting qnet over IP the whole system crashes.
What I'm doing is:
1. qnet default mode:
# io-pkt-v4-hc -p tcpip
# mount -T io-pkt -o mac=${NODEMAC} /proc/boot/devnp-mpc85xx.so
# mount -T io-pkt -o bind=tsec0,bind=tsec2 /lib/dll/lsm-qnet.so
2. qnet over IP:
# io-pkt-v4-hc -p tcpip
# mount -T io-pkt -o mac=${NODEMAC} /proc/boot/devnp-mpc85xx.so
# mount -T io-pkt -o bind=ip,resolve=dns /lib/dll/lsm-qnet.so
Name resolving seems to be working if testing with gethostbyname(). I am using etc/hosts.
Am I doing anything wrong here?
Thanks,
MatthiasMatthias Grafmueller2013-11-27T14:50:47Zpost106680: How to Become a British Voice Over Artist.Sophia Brainhttp://community.qnx.com/sf/go/post1066802013-11-12T08:00:17Z2013-11-12T08:00:17ZCommercial voice over has to be convincing. This is again a different set of skills. Your voice should sound genuine and have some amount of believability in order for the viewers to watch the full commercial, let alone buy the product. Vanan Voice is a company providing voice over services and also transcription and translation service. For more details visit: http://vananvoice.com/Voice-Over-Services.phpSophia Brain2013-11-12T08:00:17Zpost106633: View PIDs and PortsCraig Freyman(deleted)http://community.qnx.com/sf/go/post1066332013-11-08T17:10:02Z2013-11-08T17:10:02ZCan anyone tell me how to view the PID running on a port?
QNX 6.5
Thanks!Craig Freyman(deleted)2013-11-08T17:10:02Zpost106317: Re: Setting up a device as RouterNick Reillyhttp://community.qnx.com/sf/go/post1063172013-10-28T15:08:40Z2013-10-28T15:08:40ZYou need to bring up en0 with "ifconfig en0 up". Interface en1 was brought up by the dhcp.client, but en0 is still down.Nick Reilly2013-10-28T15:08:40Zpost106316: Re: Setting up a device as RouterPraveen Jambur(deleted)http://community.qnx.com/sf/go/post1063162013-10-28T14:36:59Z2013-10-28T14:36:59Zyes acting as a bridge is what I am looking at and have tried too. That is why the promiscous mode is on. But I am not sure why the packets are not getting through?!
%%%%%%%%%%%%%%% START io-pkt %%%%%%%%%%%%%%%
# io-pkt-v4-hc -v -d ep93xx -d asix -t2 &
%%%%%%%%%%%%%%% configure bridge %%%%%%%%%%%%%%%
# ifconfig bridge0 create
# brconfig bridge0 add en1 add en0 up
# brconfig -a
bridge0: flags=41<UP,RUNNING>
Configuration:
priority 32768 hellotime 2 fwddelay 15 maxage 20
ipfilter disabled flags 0x0
Interfaces:
en0 flags=3<LEARNING,DISCOVER>
port 3 priority 128
en1 flags=3<LEARNING,DISCOVER>
port 2 priority 128
Address cache (max cache: 100, timeout: 1200):
%%%%%%%%%%%%%%% start dhcp client for en1 %%%%%%%%%%%%%%%
# dhcp.client -i en1 &
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
en1: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
address: 00:16:80:00:7a:d3
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.11.148.225 netmask 0xfffffe00 broadcast 10.11.149.255
en0: flags=80008902<BROADCAST,PROMISC,SIMPLEX,MULTICAST,SHIM> mtu 1500
address: 48:f8:b3:2b:20:d5
media: Ethernet 100baseTX full-duplex
status: active
bridge0: flags=41<UP,RUNNING> mtu 1500
#Praveen Jambur(deleted)2013-10-28T14:36:59Zpost106314: Re: Setting up a device as RouterNick Reillyhttp://community.qnx.com/sf/go/post1063142013-10-28T14:23:30Z2013-10-28T14:23:30ZThere are three different solutions and I'm not sure on which you need based on your post.
1) Act as a bridge. This means that the DHCP client on devices connected to en0 will get the configuration from the DHCP server on a device on en1. This is what I think you are looking for based on your comments. In this case you would "ifconfig bridge0 create" and then add in the two interfaces to the bridge and configure the bridge with "brconfig" commands.
2) Act as a router. In this case you would have two separate subnets on en0 and en1 and would forward IP packets between them. You would have to run your own DHCP server for devices on en0 and ensure that your en1 is known as the route to access the en0 subnet. In this case you would need to use "sysctl" to set "net.inet.ip.forwarding" to 1.
3) Act as a NAT router. This would require again setting up as a DHCP server for devices on en0, but by loading the pf module and configuring pf rules you would make the packets received on en0 look as if they were coming from you on en1 so the rest of the world doesn't need to know that en1 is the route to access the en0 subnet.Nick Reilly2013-10-28T14:23:30Zpost106312: Setting up a device as RouterPraveen Jambur(deleted)http://community.qnx.com/sf/go/post1063122013-10-28T14:06:32Z2013-10-28T14:06:32ZI have a device. This has 2 NIC on it. I have named them en0 and en1.
en1 is connected to network and I have a dhcp client running that can fetch address for this interface. en0 is connected another device that has a dhcp client. Sample output from ifconfig:
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
en1: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
address: 00:16:80:00:7a:d3
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.11.148.225 netmask 0xfffffe00 broadcast 10.11.149.255
en0: flags=80008902<BROADCAST,PROMISC,SIMPLEX,MULTICAST,SHIM> mtu 1500
address: 48:f8:b3:2b:20:d5
media: Ethernet 100baseTX full-duplex
status: active
What I want to do is make this device that has 2 interfaces to act as a router and route all the packets arrivinf at en0 to en1 and vice vers, so that for the device connected to en0 it should seem as if it is on the network on en1.
Note that the dhcp server is somewhere on the network connected to en1.
I also went through the concept of hub/switch. Is there a way to configure my device as a hub so that all the packets received on en0 are echoed on en1 and vice versa?
Am I missing anything concept wise?Praveen Jambur(deleted)2013-10-28T14:06:32Zpost106254: Re: pf.conf and NATDennis Kelllyhttp://community.qnx.com/sf/go/post1062542013-10-25T11:30:32Z2013-10-25T11:30:32ZHave you enabled with "pfctl -e" ?
I believe this forwards all traffic between two interfaces...
io-pkt-v4-hc -d speedo -d tigon3 -p tcpip forward -p pf-v4
sysctl -w net.inet.ip.forwarding=1
pfctl -A -f /etc/pf.conf
pfctl -e
with /etc/pf.conf as...
pass in quick all
pass out quick all
Of course you will want to adjust the rules...Dennis Kellly2013-10-25T11:30:32Zpost106239: Re: pf.conf and NATDavid Hillyardhttp://community.qnx.com/sf/go/post1062392013-10-24T22:14:50Z2013-10-24T22:14:50ZOne quick update. I did find a way to set IP fowarding with sysctl:
sysctl -w net.inet.ip.forwarding=1
However, I am still not getting packing to redirect out of the box.
> Mitchell,
>
> Can you post your solution for getting the packet forwarding resolved? I am
> trying a similar thing using pf to redirect a port to another machine. My
> redirect logic is working fine. I tested by redirecting a high port (4000) to
> localhost port 21 and verifying I could telnet to the box on port 4000.
>
> rdr pass on @int_if inet proto tcp from any to any port 4000 -? 127.0.0.1 port
> 21
>
> The problem I am running into is getting PF to forward my packet. I have tried
> to put a line in /etc/sysctl.conf
> net.inet.ip.forwarding=1
>
> But, like you, that does not work.
>
> When I enter the forward option through io-pkt-v4 (below) all of my interfaces
> disappear when I do an "ifconfig -a".
>
> # io-pkt-v4-hc -ptcpip forward
>
> Can someone please explain how to turn packet forwarding on correctly with QNX
> 6.5 and have it persist on reboot? Thanks!David Hillyard2013-10-24T22:14:50Zpost106238: Re: pf.conf and NATDavid Hillyardhttp://community.qnx.com/sf/go/post1062382013-10-24T21:48:55Z2013-10-24T21:48:55ZMitchell,
Can you post your solution for getting the packet forwarding resolved? I am trying a similar thing using pf to redirect a port to another machine. My redirect logic is working fine. I tested by redirecting a high port (4000) to localhost port 21 and verifying I could telnet to the box on port 4000.
rdr pass on @int_if inet proto tcp from any to any port 4000 -? 127.0.0.1 port 21
The problem I am running into is getting PF to forward my packet. I have tried to put a line in /etc/sysctl.conf
net.inet.ip.forwarding=1
But, like you, that does not work.
When I enter the forward option through io-pkt-v4 (below) all of my interfaces disappear when I do an "ifconfig -a".
# io-pkt-v4-hc -ptcpip forward
Can someone please explain how to turn packet forwarding on correctly with QNX 6.5 and have it persist on reboot? Thanks!David Hillyard2013-10-24T21:48:55Zpost105421: Re: Peer-to-peer connection (WiFi Direct)Seshhttp://community.qnx.com/sf/go/post1054212013-09-25T22:12:00Z2013-09-25T22:12:00ZHello all,
We are currently on the lookout for QNX drivers for WL127x/WL128x series of WiFi Modules. Based on you discussions it seems QNX already supplied these. I'd appreciate if you can direct me to the right person within QNX's WiFi Direct group.
Thanks,
SeshSesh2013-09-25T22:12:00Zpost103199: Re: ipv6 supportSean Boudreau(deleted)http://community.qnx.com/sf/go/post1031992013-07-15T21:49:33Z2013-07-15T21:49:33ZYou're probably using the wrong ping6 for your target platform: eg X86 on arm.
Sent from my BlackBerry 10 smartphone on the Rogers network.
From: N U
Sent: Monday, July 15, 2013 5:37 PM
To: technology-networking
Reply To: technology-networking@community.qnx.com
Subject: Re: ipv6 support
Thanks. You were right. the ethernet driver works with io-pkt-v6-hc as well
e.g.
323594 io-pkt-v6-hc -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737
I did some ifconfig and below the current configurations:
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
tsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
capabilities tx=0
enabled=0
address: 00:80:74:00:17:36
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.5.255.254 netmask 0xff000000 broadcast 10.255.255.255
inet6 fe80::280:74ff:fe00:1736%tsec0 prefixlen 64 scopeid 0x2
From a windows box on the same network as tsec0, I can "ping -6 " tsec0's ipv6 address with no problem.
e.g.
########## window 7 box #########
C:\>ipconfig
Windows IP Configuration
Ethernet adapter primary:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::44b:3298:d5a:20d6%12
IPv4 Address. . . . . . . . . . . : 10.4.0.6
Subnet Mask . . . . . . . . . . . : 255.254.0.0
Default Gateway . . . . . . . . . :
Tunnel adapter isatap.{F3F0BBA8-7676-4D16-859F-B82561836552}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
C:\>ping -6 fe80::280:74ff:fe00:1736
Pinging fe80::280:74ff:fe00:1736 with 32 bytes of data:
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Ping statistics for fe80::280:74ff:fe00:1736:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
############################################
Then I download the utility "ping6" (dated on 7/9/2010). However it does not work even
I ping6 any local ipv6 address of this QNX box, alway complaining of syntax error
e.g.
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
tsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
capabilities tx=0
enabled=0
address: 00:80:74:00:17:36
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.5.255.254 netmask 0xff000000 broadcast 10.255.255.255
inet6 fe80::280:74ff:fe00:1736%tsec0 prefixlen 64 scopeid 0x2
# ping6 ::1
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# ping6 fe80::1
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# ping6 fe80::280:74ff:fe00:1736
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# use ping6
ping6 -- Send ICMPv6 ECHO_REQUEST packets to network hosts
ping6 [-dfHnNqRvw] [-a addrtype] [-b bufsize] [-c count] [-h hoplimit]
[-I interface] [-i wait] [-l preload] [-p pattern] [-P policy]
[-S sourceaddr] [-s packetsize] [hops...] host
Options:
-a addrtype Generate ICMPv6 Node Information Node Address query. The
'addrtype' string is constructed from the following characters:
a - requests all of responder's unicast addresses
c - requests responder's IPv4 addresses
g - requests responder's global-scope addresses
s - requests responder's site-local addresses
l - requests responder's link-local addresses
A - requests responder's anycast addresses
-b bufsiz Set socket buffer size.
-c count Stop after sending (and receiving) 'count' ECHO_RESPONSE packets
.
-d Set the SO_DEBUG option on the socket being used.
-f Flood ping.
More (Y/n)?
#############
Any clue on it? How to use the ping6?
_______________________________________________
Technology
http://community.qnx.com/sf/go/post103198
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2013-07-15T21:49:33Zpost103198: Re: ipv6 supportN Uhttp://community.qnx.com/sf/go/post1031982013-07-15T21:37:01Z2013-07-15T21:37:01ZThanks. You were right. the ethernet driver works with io-pkt-v6-hc as well
e.g.
323594 io-pkt-v6-hc -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737
I did some ifconfig and below the current configurations:
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
tsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
capabilities tx=0
enabled=0
address: 00:80:74:00:17:36
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.5.255.254 netmask 0xff000000 broadcast 10.255.255.255
inet6 fe80::280:74ff:fe00:1736%tsec0 prefixlen 64 scopeid 0x2
From a windows box on the same network as tsec0, I can "ping -6 " tsec0's ipv6 address with no problem.
e.g.
########## window 7 box #########
C:\>ipconfig
Windows IP Configuration
Ethernet adapter primary:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::44b:3298:d5a:20d6%12
IPv4 Address. . . . . . . . . . . : 10.4.0.6
Subnet Mask . . . . . . . . . . . : 255.254.0.0
Default Gateway . . . . . . . . . :
Tunnel adapter isatap.{F3F0BBA8-7676-4D16-859F-B82561836552}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
C:\>ping -6 fe80::280:74ff:fe00:1736
Pinging fe80::280:74ff:fe00:1736 with 32 bytes of data:
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Reply from fe80::280:74ff:fe00:1736: time=1ms
Ping statistics for fe80::280:74ff:fe00:1736:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
############################################
Then I download the utility "ping6" (dated on 7/9/2010). However it does not work even
I ping6 any local ipv6 address of this QNX box, alway complaining of syntax error
e.g.
# ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
tsec0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
capabilities rx=7<IP4CSUM,TCP4CSUM,UDP4CSUM>
capabilities tx=0
enabled=0
address: 00:80:74:00:17:36
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 10.5.255.254 netmask 0xff000000 broadcast 10.255.255.255
inet6 fe80::280:74ff:fe00:1736%tsec0 prefixlen 64 scopeid 0x2
# ping6 ::1
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# ping6 fe80::1
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# ping6 fe80::280:74ff:fe00:1736
ping6[1]: syntax error: `$V^D^H4$RÖ^A4' unexpected
# use ping6
ping6 -- Send ICMPv6 ECHO_REQUEST packets to network hosts
ping6 [-dfHnNqRvw] [-a addrtype] [-b bufsize] [-c count] [-h hoplimit]
[-I interface] [-i wait] [-l preload] [-p pattern] [-P policy]
[-S sourceaddr] [-s packetsize] [hops...] host
Options:
-a addrtype Generate ICMPv6 Node Information Node Address query. The
'addrtype' string is constructed from the following characters:
a - requests all of responder's unicast addresses
c - requests responder's IPv4 addresses
g - requests responder's global-scope addresses
s - requests responder's site-local addresses
l - requests responder's link-local addresses
A - requests responder's anycast addresses
-b bufsiz Set socket buffer size.
-c count Stop after sending (and receiving) 'count' ECHO_RESPONSE packets
.
-d Set the SO_DEBUG option on the socket being used.
-f Flood ping.
More (Y/n)?
#############
Any clue on it? How to use the ping6?N U2013-07-15T21:37:01Zpost103081: Re: ipv6 supportSean Boudreau(deleted)http://community.qnx.com/sf/go/post1030812013-07-10T22:29:21Z2013-07-10T22:29:21ZThe same driver works.
Regards,
-seanb
Sent from my BlackBerry 10 smartphone on the Rogers network.
From: N U
Sent: Wednesday, July 10, 2013 5:46 PM
To: technology-networking
Reply To: technology-networking@community.qnx.com
Subject: ipv6 support
We are trying to provide ipv6 support on our device.
Currently io-pkt-v4 is running on our device. mpc85xx is the driver provided by QNX.
e.g.
io-pkt-v4 -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737
We have the binary io-pkt-v6-hc (dated on 7/9/2010) that can be downloaded to the device.
Would you please give some instructions about how to run and configure io-pkt-v6-hc?
(1) Does the same driver mpc85xx work with io-pkt-v6-hc? E.g.
Can we issue the same command such as
" io-pkt-v6-hc -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737"
(2) if not, anything else need to be downloaded and configured/linked?
Thanks in advance.
_______________________________________________
Technology
http://community.qnx.com/sf/go/post103080
To cancel your subscription to this discussion, please e-mail technology-networking-unsubscribe@community.qnx.comSean Boudreau(deleted)2013-07-10T22:29:21Zpost103080: ipv6 supportN Uhttp://community.qnx.com/sf/go/post1030802013-07-10T21:46:32Z2013-07-10T21:46:32ZWe are trying to provide ipv6 support on our device.
Currently io-pkt-v4 is running on our device. mpc85xx is the driver provided by QNX.
e.g.
io-pkt-v4 -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737
We have the binary io-pkt-v6-hc (dated on 7/9/2010) that can be downloaded to the device.
Would you please give some instructions about how to run and configure io-pkt-v6-hc?
(1) Does the same driver mpc85xx work with io-pkt-v6-hc? E.g.
Can we issue the same command such as
" io-pkt-v6-hc -d mpc85xx pci=0,phy_addr=1,mac=008074001736 -d mpc85xx pci=2,phy_addr=17,mac=008074001737"
(2) if not, anything else need to be downloaded and configured/linked?
Thanks in advance.N U2013-07-10T21:46:32Zpost102451: BottleneckMario Charesthttp://community.qnx.com/sf/go/post1024512013-06-19T18:04:47Z2013-06-19T18:04:47ZGood day,
Assume 5 slave computers, all doing a MsgSend, at exactly the same time. to a single application running on a server. Let`s says the messages are 1Meg.
How much simultaneous data will be seen by the network switch? Given the destination is a single thread will io-pkt handle the 5 transfers simultaneously, buffering the incoming data, or will it serialize it.Mario Charest2013-06-19T18:04:47Zpost102126: Re: RE: vlan tagNick Reillyhttp://community.qnx.com/sf/go/post1021262013-06-10T17:02:44Z2013-06-10T17:02:44ZYes, this was added post 6.5.0 SP1.
A PSP is a Priority Support Package, and this capability was added in PSP3078 (io-pkt) and PSP3079 (ifconfig). Later PSPs containing these binaries will also support this functionality so you should use the latest version.Nick Reilly2013-06-10T17:02:44Zpost102125: RE: vlan tagMario Charesthttp://community.qnx.com/sf/go/post1021252013-06-10T16:51:53Z2013-06-10T16:51:53Z> -----Message d'origine-----
> De : Nick Reilly [mailto:community-noreply@qnx.com]
> Envoyé : 10 juin 2013 12:46
> À : technology-networking
> Objet : Re: vlan tag
>
> Support for setting the PCP field was added in after the initial release of 6.5.0.
> If you are up to date on your PSPs, the use message on ifconfig should
> mention:
>
> vlanprio priority
> If the interface is a vlan(4) pseudo-interface, set the
> VLAN priority to priority. This is a number 0-7, used
> to create an 802.1Q VLAN header for packets sent from the
> vlan(4) interface.
Doesn`t seems to be in SP1.
What`s PSP?
Thanks!
>
>
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post102123
> To cancel your subscription to this discussion, please e-mail technology-
> networking-unsubscribe@community.qnx.comMario Charest2013-06-10T16:51:53Zpost102123: Re: vlan tagNick Reillyhttp://community.qnx.com/sf/go/post1021232013-06-10T16:46:02Z2013-06-10T16:46:02ZSupport for setting the PCP field was added in after the initial release of 6.5.0. If you are up to date on your PSPs, the use message on ifconfig should mention:
vlanprio priority
If the interface is a vlan(4) pseudo-interface, set the
VLAN priority to priority. This is a number 0-7, used
to create an 802.1Q VLAN header for packets sent from the
vlan(4) interface.Nick Reilly2013-06-10T16:46:02Zpost102121: vlan tagMario Charesthttp://community.qnx.com/sf/go/post1021212013-06-10T16:39:40Z2013-06-10T16:39:40ZThe QNX 6.4.0 doc says that the argument for ifconfig vlan is a 16 bit number but the 6.5.0 says it's a 12 bit number. Does that mean that with 6.5.0 it's not possible to set the PCP ( Priority Code Point )Mario Charest2013-06-10T16:39:40Zpost98532: Re: HTML form with SSI commandsRaymond Flach(deleted)http://community.qnx.com/sf/go/post985322013-01-12T21:32:39Z2013-01-12T21:32:39ZHas anyone ever figured this out? I am having the same issues. How do I set/get form values with SSI and qnxvar?Raymond Flach(deleted)2013-01-12T21:32:39Zpost97004: Re: dhcp.client IP request problemBoangoat Jarupanhttp://community.qnx.com/sf/go/post970042012-11-08T17:26:50Z2012-11-08T17:26:50ZPlease find the dump in the attachment. I filter out only DHCP packets due to the size of the original dump file. Also, please note that we use f8:7b:7a:40:89:c4 as the mac address for testing. The first DISCOVER packet starts at packet #11 and it is from our board. In this dump, there is no response from the server. We have tried many times; unfortunately, we can not get any response from the server.
I am also wondering whether this problem is related to relay agent for DHCP server. What do we need to do to check that possibility?
Thank you.Boangoat Jarupan2012-11-08T17:26:50Zpost97003: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post970032012-11-08T16:47:31Z2012-11-08T16:47:31ZYes, Wireshark traces will be fine.
On 2012-11-08 11:09 AM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>We use io-pkt-v4-hc on TI WL1283 chip. Below is the command we use to
>load the driver
>
># io-pkt-v4-hc -dti1283-sdc4430
>sdio=2,dmatx=47,dmarx=48,irq=1003,gpio=90,irq_gpio=3
>
>The dhcp.client does have a back-off timer and I see that the DHCP
>DISCOVER packet get rebroadcast. We have been running dhcp.client for
>multiple times. Unfortunately we are not be able to get the IP address.
>Most of the time, DISCOVER packets got ignore. We rarely received the
>OFFER packets back. On the other hand, other devices such as cell phone
>and laptop are able to obtain the IP addresses easily from our server.
>
>Unfortunately, we have trouble getting the trace result from tcpdump.
>This happens after we upgrade to CAR 2.0 alpha 5 platform. I posted the
>questions on CAR 2.0, but I received no response yet.
>http://community.qnx.com/sf/discussion/do/listPosts/projects.qnx_car_2/dis
>cussion.garmin_qnx_car_2.topc22641
>
>We currently capture packets from Wireshark. Would you be able to help us
>to get tcpdump to work? Or should I send you packet traces results from
>Wireshark? Thank you.
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96998
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-11-08T16:47:31Zpost96998: Re: dhcp.client IP request problemBoangoat Jarupanhttp://community.qnx.com/sf/go/post969982012-11-08T16:09:48Z2012-11-08T16:09:48ZWe use io-pkt-v4-hc on TI WL1283 chip. Below is the command we use to load the driver
# io-pkt-v4-hc -dti1283-sdc4430 sdio=2,dmatx=47,dmarx=48,irq=1003,gpio=90,irq_gpio=3
The dhcp.client does have a back-off timer and I see that the DHCP DISCOVER packet get rebroadcast. We have been running dhcp.client for multiple times. Unfortunately we are not be able to get the IP address. Most of the time, DISCOVER packets got ignore. We rarely received the OFFER packets back. On the other hand, other devices such as cell phone and laptop are able to obtain the IP addresses easily from our server.
Unfortunately, we have trouble getting the trace result from tcpdump. This happens after we upgrade to CAR 2.0 alpha 5 platform. I posted the questions on CAR 2.0, but I received no response yet.
http://community.qnx.com/sf/discussion/do/listPosts/projects.qnx_car_2/discussion.garmin_qnx_car_2.topc22641
We currently capture packets from Wireshark. Would you be able to help us to get tcpdump to work? Or should I send you packet traces results from Wireshark? Thank you.Boangoat Jarupan2012-11-08T16:09:48Zpost96994: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post969942012-11-08T15:24:04Z2012-11-08T15:24:04ZFurther to my last e-mail, we need to know what version of io-pkt you are
running as the old io-pkt sets the TTL to 1 but the 6.5.0 SP1 io-pkt sets
the TTL to 64.
On 2012-11-07 4:47 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>It seems like the server does not response to the DHCP DISCOVER packet
>from the client in "far" case. I have tried to capture the packets and
>found that the TTL in IP header is set to 1. Should we set this to higher
>value so that the DISCOVER packet could forward by relay agent? Are there
>anyway we can change this value using command line? Something like
>sysctl. Unfortunately, I tried net.inet.ip.ttl, but it returns 64.
>
># sysctl net.inet.ip.ttl
>net.inet.ip.ttl = 64
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96970
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-11-08T15:24:04Zpost96992: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post969922012-11-08T15:21:22Z2012-11-08T15:21:22ZApparently we do set the TTL to 1 as it is a broadcast packet. The fact
that you get a response to the first packet indicates that you are
communicating. Are you in a noisy WiFi environment? The dhcp.client does
have a back-off timer, so if you leave it running for a while, do you
eventually get an IP address?
On 2012-11-07 4:47 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>It seems like the server does not response to the DHCP DISCOVER packet
>from the client in "far" case. I have tried to capture the packets and
>found that the TTL in IP header is set to 1. Should we set this to higher
>value so that the DISCOVER packet could forward by relay agent? Are there
>anyway we can change this value using command line? Something like
>sysctl. Unfortunately, I tried net.inet.ip.ttl, but it returns 64.
>
># sysctl net.inet.ip.ttl
>net.inet.ip.ttl = 64
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96970
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-11-08T15:21:22Zpost96990: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post969902012-11-08T14:59:13Z2012-11-08T14:59:13ZWe would have to check versions, it should be going out as 64. That said,
if we are still dealing with a range issue, The TTL should be treated the
same in either case, unless we are talking about two different network
setups that are being connected to. It would still be good to see complete
packet traces as well, as it seemed like the DHCP discover was not being
ignored, it was just the 4 way handshake did not complete. The complete
packet trace would confirm this.
On 2012-11-07 4:47 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>It seems like the server does not response to the DHCP DISCOVER packet
>from the client in "far" case. I have tried to capture the packets and
>found that the TTL in IP header is set to 1. Should we set this to higher
>value so that the DISCOVER packet could forward by relay agent? Are there
>anyway we can change this value using command line? Something like
>sysctl. Unfortunately, I tried net.inet.ip.ttl, but it returns 64.
>
># sysctl net.inet.ip.ttl
>net.inet.ip.ttl = 64
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96970
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-11-08T14:59:13Zpost96970: Re: dhcp.client IP request problemBoangoat Jarupanhttp://community.qnx.com/sf/go/post969702012-11-07T21:47:04Z2012-11-07T21:47:04ZIt seems like the server does not response to the DHCP DISCOVER packet from the client in "far" case. I have tried to capture the packets and found that the TTL in IP header is set to 1. Should we set this to higher value so that the DISCOVER packet could forward by relay agent? Are there anyway we can change this value using command line? Something like sysctl. Unfortunately, I tried net.inet.ip.ttl, but it returns 64.
# sysctl net.inet.ip.ttl
net.inet.ip.ttl = 64Boangoat Jarupan2012-11-07T21:47:04Zpost96518: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post965182012-10-22T15:51:22Z2012-10-22T15:51:22ZPlease can you do the following:
It would be better if they dumped the entire frame so that we can see the
contents of the DHCP packets, but for the 'far' example, it is incomplete
as there is no DHCP ACK from the server if we got that far, as I can't see
what the client sent.
Client -> discover
Server -> offer
Client -> request
Server -> ACK
There is only one reply from the server, so it appears the ACK is missing,
so the protocol exchange was never completed. Whether the client is
sending the REQUEST after the server OFFER is unclear as not enough of the
frame length is captured.
The ARP exchange is a final sanity done by dhcp.client to verify the
address is not already in use. This happens after the server ACK, but
before the IP address is assigned to the interface.
At this point it looks like traffic is dropped in the far case. A packet
sniff on both the client and AP should give an idea of what each host is
able to see.
On 2012-10-04 5:51 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>wireless chip: TI WL1281Q
>
>We have problem getting IP address from AP using dhcp.client. Our board
>can successfully connect to the server using wpa_supplicant. After the
>connection, we run "dhcp.client" to obtain the IP address from the
>server. When the AP is far away (this is a main server with internet
>access), the station could not get the IP address to assign to the node.
>On the other hand, dpch.client works fine when the AP is closed to the
>node within a single hop and does not have the internet access.
>
>We include log info in the attachment (dhcp_dump.txt) with four different
>logs.
>
>1. TCPDUMP: connecting to AP_far
>2. Sloginfo: connecting to AP_far
>3. TCPDUMP: connecting to AP_near
>4. Sloginfo: connecting to AP_near
>
>The first two logs show the connection to far away from AP, and IP
>requests are fail. The first log shows that the station receives the IP
>address. However, when we run ifconfig command, the IP does not get
>assigned to the node. Sloginfo (2nd log) shows problem with cmdQueue_SM
>which we are not sure what is the implication of this error. Last two
>logs show successful IP request to local AP. In log 3, the arp is called
>after the IP is assigned. We are not sure why the arp command is not
>called when AP is far and have internet access. In log 4, the new
>connection information is shown in sloginfo.
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96045
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-10-22T15:51:22Zpost96470: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post964702012-10-19T15:49:14Z2012-10-19T15:49:14ZJust to let you know that I'm still waiting for a response from TI.
On 2012-10-04 5:51 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>wireless chip: TI WL1281Q
>
>We have problem getting IP address from AP using dhcp.client. Our board
>can successfully connect to the server using wpa_supplicant. After the
>connection, we run "dhcp.client" to obtain the IP address from the
>server. When the AP is far away (this is a main server with internet
>access), the station could not get the IP address to assign to the node.
>On the other hand, dpch.client works fine when the AP is closed to the
>node within a single hop and does not have the internet access.
>
>We include log info in the attachment (dhcp_dump.txt) with four different
>logs.
>
>1. TCPDUMP: connecting to AP_far
>2. Sloginfo: connecting to AP_far
>3. TCPDUMP: connecting to AP_near
>4. Sloginfo: connecting to AP_near
>
>The first two logs show the connection to far away from AP, and IP
>requests are fail. The first log shows that the station receives the IP
>address. However, when we run ifconfig command, the IP does not get
>assigned to the node. Sloginfo (2nd log) shows problem with cmdQueue_SM
>which we are not sure what is the implication of this error. Last two
>logs show successful IP request to local AP. In log 3, the arp is called
>after the IP is assigned. We are not sure why the arp command is not
>called when AP is far and have internet access. In log 4, the new
>connection information is shown in sloginfo.
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96045
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-10-19T15:49:14Zpost96059: Re: dhcp.client IP request problemHugh Brownhttp://community.qnx.com/sf/go/post960592012-10-05T14:49:07Z2012-10-05T14:49:07ZI have forwarded your query to TI.
On 2012-10-04 5:51 PM, "Boangoat Jarupan" <community-noreply@qnx.com>
wrote:
>wireless chip: TI WL1281Q
>
>We have problem getting IP address from AP using dhcp.client. Our board
>can successfully connect to the server using wpa_supplicant. After the
>connection, we run "dhcp.client" to obtain the IP address from the
>server. When the AP is far away (this is a main server with internet
>access), the station could not get the IP address to assign to the node.
>On the other hand, dpch.client works fine when the AP is closed to the
>node within a single hop and does not have the internet access.
>
>We include log info in the attachment (dhcp_dump.txt) with four different
>logs.
>
>1. TCPDUMP: connecting to AP_far
>2. Sloginfo: connecting to AP_far
>3. TCPDUMP: connecting to AP_near
>4. Sloginfo: connecting to AP_near
>
>The first two logs show the connection to far away from AP, and IP
>requests are fail. The first log shows that the station receives the IP
>address. However, when we run ifconfig command, the IP does not get
>assigned to the node. Sloginfo (2nd log) shows problem with cmdQueue_SM
>which we are not sure what is the implication of this error. Last two
>logs show successful IP request to local AP. In log 3, the arp is called
>after the IP is assigned. We are not sure why the arp command is not
>called when AP is far and have internet access. In log 4, the new
>connection information is shown in sloginfo.
>
>
>
>
>
>
>_______________________________________________
>
>Technology
>http://community.qnx.com/sf/go/post96045
>To cancel your subscription to this discussion, please e-mail
>technology-networking-unsubscribe@community.qnx.comHugh Brown2012-10-05T14:49:07Zpost96045: dhcp.client IP request problemBoangoat Jarupanhttp://community.qnx.com/sf/go/post960452012-10-04T21:51:42Z2012-10-04T21:51:42Zwireless chip: TI WL1281Q
We have problem getting IP address from AP using dhcp.client. Our board can successfully connect to the server using wpa_supplicant. After the connection, we run "dhcp.client" to obtain the IP address from the server. When the AP is far away (this is a main server with internet access), the station could not get the IP address to assign to the node. On the other hand, dpch.client works fine when the AP is closed to the node within a single hop and does not have the internet access.
We include log info in the attachment (dhcp_dump.txt) with four different logs.
1. TCPDUMP: connecting to AP_far
2. Sloginfo: connecting to AP_far
3. TCPDUMP: connecting to AP_near
4. Sloginfo: connecting to AP_near
The first two logs show the connection to far away from AP, and IP requests are fail. The first log shows that the station receives the IP address. However, when we run ifconfig command, the IP does not get assigned to the node. Sloginfo (2nd log) shows problem with cmdQueue_SM which we are not sure what is the implication of this error. Last two logs show successful IP request to local AP. In log 3, the arp is called after the IP is assigned. We are not sure why the arp command is not called when AP is far and have internet access. In log 4, the new connection information is shown in sloginfo.Boangoat Jarupan2012-10-04T21:51:42Zpost95755: RE: RE: Not real-time enoughMario Charesthttp://community.qnx.com/sf/go/post957552012-09-21T19:50:19Z2012-09-21T19:50:19Z> -----Message d'origine-----
> De : Nick Reilly [mailto:community-noreply@qnx.com]
> Envoyé : 21 septembre 2012 15:19
> À : technology-networking
> Objet : Re: RE: Not real-time enough
>
> I think unfortunately splitting in to two io-pkt stacks may be the best.
>
> As you are jumbos you're not going to get that many more packets in without
> hitting 27386.
27386???
> Adding a whole new API involving even more locking stuff on
> the sockbuf would likely be counter productive, you could always switch to
> TCP instead.
Can't, the sender is not under our control.
>
>
>
> _______________________________________________
>
> Technology
> http://community.qnx.com/sf/go/post95751
> To cancel your subscription to this discussion, please e-mail technology-
> networking-unsubscribe@community.qnx.comMario Charest2012-09-21T19:50:19Z