Hi, On do, 05 dec 2019 14:55:53 -0600, Elenita Hinds wrote: > Hi all, > > I am hoping to re-use the can-utils' jacd as default Address Claiming > daemon but runs into some issues: > > (1) " err(0, <string>, ...) " is called in several places, even though > looking at the code logic, there is no error and the program should be > able to continue. The program exits because err() never returns. > For example: commit 791b6de7 introduced the problem. it replaced all error(x, y, sss) calls with err(y, sss) but it should have become warn(y, sss) when x=0. Feel free to fix that. > (2) The socket is configured to also set the SO_BINDTODEVICE option. > In our system, this requires the program to have root permissions to > run but we'd rather not do this for security reasons. Is this option > required? What are the side-effects if this option is not set? Can it > be made optional such that the program does not exit if the > setsockoption(SO_BINDTODEVICE) call fails (seems to work without it)? It appears on first sight that SO_BINDTODEVICE isn't strictly necessary since bind() will have sockaddr_can.can_ifindex set anyway. In that case, rather then ignore the result, remove the call to SO_BINDTODEVICE completely. > > (3) The claimed address is only saved to a file when the program > terminates. What is the reason for this? Can it not be saved after > one is claimed already so that another process can read it real-time > if needed? That should not be necessary. At time of writing jacd, you could consult 'ip addr show can0' to find out. I'm not sure what option remained to find it. I believe you can, from another program, bind() with the same name, and then getsockname() will return the complete sockaddr_can with SA filled in. > Also, in cases of a program crash or a power outage, the > claimed address is still saved. That is a true remark. Given a power outage (the program never crashes :-) ), and looking at the code, +10 years later, I would now write to a temp file, and rename() the file to make it an atomic operation. Doing that regularly, or upon change, would be an improvement. Kurt > > > Thanks in advance, > Elenita