So I want to build avahi for linux arm device, but currently my kernel doesn't support ipv6.
Is it possible if I want disable ipv6 feature on avahi? What ./configure command argument do I need?
Also I will provide more information if you need.
Thank you.
I looked inside the configure file in the avahi source-code, but I didn't find something that related to IPv6.
I solved my problem with building another toolchain that support IPv6. It was successfully build the avahi, but maybe I need disable IPv6 in avahi-daemon.conf instead because my kernel doesn't support IPv6.
Thank you.
Update:
I was successfully running avahi-daemon binary to publish a service. If I set use-ipv6 in avahi-daemon.conf to yes, it will still running, but I am getting this message:
socket() failed: Address family not supported by protocol
Failed to create IPv6 socket, proceeding in IPv4 only mode
socket() failed: Address family not supported by protocol
So I will set use-ipv6 to no instead, and of course the message disappear.
Related
I'm using KGDBoE to for debugging Linux kernel.
KGDBoE start a server at a certain udp port, I can easily connect to the server running on the embedded target using gdb via command line.
Now I want to use Eclipse IDE to make gdb debugging more interactive.
Problem is that I can't find option to use UDP port for gdb connection in Eclipse Attach Application Debug launch.
Anyone has idea how to accomplish that.
Making things simpler, I want to use UDP connection rather than TCP to connect to the GDBserver running on my embedded board. Its's very straightforward using GDB CLI but I want to use Eclipse for that.
Thanks
I have a sample Chrome packaged app which uses the Chrome sockets API to perform DNS service discovery. The heavy lifting is borrowed from the example here:
https://github.com/GoogleChrome/chrome-app-samples/tree/master/mdns-browser
I just use service names such as _pdl-datastream._tcp.local (instead of the default of _services._dns-sd._udp.local).
On both my Ubuntu and Windows setups (Chrome 25.0.1364.172), the app can successfully find my network printer; I can list its IP address and service instance name. However, it fails in Chrome OS on my Samsung Chromebook (Chrome 25.0.1364.173); nothing is found.
Any idea what the problem might be? Is this a known issue?
You should check if it's the default firewall. On a Chromebook by default I believe all incoming connections are blocked. If you're running in dev mode you can do the following to allow all incoming udp traffic to test whether this is the problem:
Press Ctrl+Alt+T to bring up a terminal window and type the following
shell
sudo iptables -I INPUT -p udp -j ACCEPT
Yes, Chromebooks default to a restrictive firewall. However, if the incoming packet matches an outgoing one, the incoming packet should be permitted. Here's the list of firewall rules.
According to the bug report created by Haw-Bin, this is verified as fixed since end of 2013.
I am using Linux SCTP Stack. Currently on the same Linux machine I need to deploy a process which uses non OS SCTP STACK. (i.e. it opens a RAW socket and then handles transport level message on its own).
When SCTP Init comes Linux gives the packet to both processes.
Can this be avoided?
I don't want Linux SCTP to handle message which are not used by it. (used by other Non OS SCTP Stack)
Is this possible?
More generally when faced with this kind of issue there are three options:
1) Stop the Linux SCTP module from being loaded at boot time (Note: it cant be unloaded at run time) and just use the non-OS implementation.
2) Some how preconfigure each SCTP implementation to know which associations it owns and to ignore messages for others.
3) Port the non-OS system to use the Linux implementation.
Any actively supported Linux system using SCTP is going to have issues if it does not offer the third option.
Note: If you are using the Dialogic Non-OS SCTP implementation on Linux then you can easily switch to using their OS wrapped version 'SCTPN'.
Regards
This may not be an option, but having the non-lksctp process use UDP tunnelling of SCTP works very well for us. The (commercial) stack we use is configurable for SCTP over UDP, or SCTP over IP (with raw sockets, like you).
We are developing a RPC system with client in ubuntu system and server in Solaris system.
Currently we are struck at this error: "RPC: Unknown Protocol"
can some one help us with this?
Change "visible" to "tcp" in clnt_create() call.
Run your program with strace to see if you are missing any critical files. In my case, it made me realize that I was missing libnss_files and libnss_dns libraries, and the problem went away once I added them.
I need to store persistent reference to third party device on an arbitrary IP network where the IP address of the devices may be static or randomly assigned by DHCP. I don't control the devices on the network and I can't rely on DNS and other ad-hoc networking protocols existing or working with the devices.
So I have been instructed to investigate using hardware addresses and ARP. This will work but I don't want to duplicate code. The kernel must manage an ARP table. On Windows you can access it using GetIpNetTable etc.
I am hoping there is an API to answer these two questions:
How do I translate from IP to MAC address? (ARP)
How do I translate from MAC to IP address? (InARP)
If not then I may have to do it more manually:
How do I read the kernel's ARP table?
How do I add an entry if I have the determined a mapping myself?
/proc/net/arp
K
ARP tables tend to be fairly local and short-lived. If you examine the protocol, the real MAC addresses are generally only provided when the given IP address is in the local subnet.
Otherwise, the packet is forwarded to the local router, which is then responsible for forwarding it.
If you do "arp -g" on Windows or "arp -a" on UNIX, you'll see the table, but I don't think it will do you any good, due to the reasons mentioned above. That command and
That's really what DNS is for but, as you say, it may not be an option for you.
You may well have to write your own 'ARP' database at your application level.
As for ARP:
You could use system("/usr/bin/arp -option_of_choice"); and parse the output, but that's an ugly hack. -- Not my recommendation.
Take a look at /usr/include/linux/sockios.h -- At the SIOCGARP, SIOCDARP, and SIOCSARP details. Those are ioctls that you can perform to manage the ARP table on linux. Of course, you'll have to perform these ioctls on a socket fd.
Here's some examples: SIOCGARP examples
I'm sure you can find many other examples in several other languages as well. As I'm assuming that you're using C.
As for RARP:
A quote from the linux rarp manpage:
" This program is obsolete. From version 2.3, the Linux kernel no longer
contains RARP support. For a replacement RARP daemon, see ftp://ftp.demen-
tia.org/pub/net-tools"
So you'll have to install rarpd on the target system.