On Thu, Aug 10, 2017 at 11:04:10AM -0400, Jeremie Courreges-Anglas wrote: > On Thu, Aug 10 2017, Florian Obser <flor...@openbsd.org> wrote: > > On Tue, Aug 08, 2017 at 11:08:14AM +0200, Jeremie Courreges-Anglas wrote: > >> > >> So rtadvd has this complex code that tries to parse multiple routing > >> messages, when it actually reads only one message at a time from the > >> routing socket. The diff below attempts to acknowledge this and tries > >> to be as mechanical as possible, variable renaming/gc'ing can happen > >> later. Better use cvs diff -b to review this diff. > >> > >> Thoughts? ok? > > > > I like the get_next_msg -> validate_msg part. > > > > I'm not sure about rtsock_cb, I think we have to deal with getting > > multiple messages. slaacd has idiomatic code for that, forgot where > > I stole that from. (route_receive in frontend.c). > > When I first asked why rtadvd contained that code, (iirc) Claudio > pointed out that route(4) sockets use PR_ATOMIC, thus you can only get > a single message per read(2) call. Handling multiple messages makes > sense when you're parsing a dump you got from the kernel (ioctl, > sysctl...).
thanks for the explanation. OK florian@ I shall simplify slaacd(8) then... > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE > -- I'm not entirely sure you are real.