1

I have made a Linux program that sends UDP packets to a lighting controller. This works under both Ubuntu and Mac OS X. I configured an ethernet port to have a static IP address (with the correct netmask). The ethernet cable pugs straight from the controller device into the Pi.

The app runs on the Pi but I get a 'permission denied' error when trying to open a UDP socket. I edited the dhcpcd.conf file as per these instructions, so I am now able to ping the box and open its web interface in browser; yet I still get the error.

My settings are:

interface eth0
static ip_address=10.0.1.10/24
static routers=10.0.1.1
static domain_name_servers=10.0.1.1

The device's IP is 10.0.1.101, so I have also tried setting those routers and domain_name_servers, to that; but that didn't work either. Is there some additional network configuration I should try that includes specifying the netmask or something?

Any advice is appreciated!

EDIT - It turns out that this only happens when trying to connect to the broadcast IP (10.0.1.255), the other IP works fine. I do need to be able to broadcast though so still looking for a solution...

9
  • it could be selinux Commented Feb 29, 2016 at 6:05
  • I don't know why you want static address, but it might work if you used a consistent network setting.
    – Milliways
    Commented Feb 29, 2016 at 6:25
  • 1
    Don't expect other people to bother spending much time contemplating someone else's problem if that someone else A) Cannot bother to post the code that produced the error, B) Cannot bother to include the literal text of the error.
    – goldilocks
    Commented Feb 29, 2016 at 8:47
  • @Rui F Ribeiro - I am using a vanilla raspbian install so selinux shouldn't an issue, no?
    – naychrist
    Commented Feb 29, 2016 at 9:20
  • @Milliways - I need a static address as the device has a fixed IP I need to talk to - not sure what you mean by 'consistent network setting'
    – naychrist
    Commented Feb 29, 2016 at 9:22

2 Answers 2

1

Static addresses have nothing to do with it. Sending to a broadcast address is a privileged operation. You either need to be root, or you need to have the CAP_NET_ADMIN (and hopefully some day the CAP_NET_BROADCAST) capability.

1
  • thanks, didn't even think to try running it as root! the boxes are installed somewhere for a couple more weeks but will try and test this when I get them back.
    – naychrist
    Commented Jun 7, 2016 at 0:21
0

Are you sure about your network mask ? IP addresses starting between 0 and 127 should be associated to class A IP networks, with a network mask of /8 or 255.0.0.0.

In this case, your broadcast address would be 10.255.255.255, I guess.

4
  • 1
    10.0.1.10/24 is a legitimate IP address/subnet mask. The subnets have just been made smaller, that is all. I have worked at many multinationals where this is used. Commented Mar 7, 2016 at 11:06
  • the device I am talking to is configured for a network mask of 255.255.255.0, which an ifconfig reveals to be true also on my Pi. So I normally use a broadcast IP of 10.0.1.255, which also shows up when running ifconfig on the Pi. I have never used dhcpcd.conf before but seems like this is behaving correctly.
    – naychrist
    Commented Mar 8, 2016 at 22:31
  • @Greenonline : I never said it was technically invalid.
    – Moonchild
    Commented Mar 9, 2016 at 10:22
  • 1
    network "classes" have not been an issue since the early 90s.
    – JayEye
    Commented Jun 5, 2016 at 19:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.