On Fri, Sep 02, 2022 at 10:46:12PM +0200, Alexander Bluhm wrote:
> On Fri, Sep 02, 2022 at 06:01:20PM +0300, Vitaliy Makkoveev wrote:
> > We always call in6_setpeeraddr() and never call in_setpeeraddr() fro the
> > inet6 case.
> 
> Should we do it the other way around?
> 
> By pushing the inet6 case into the callee allows less switches in
> the callers.  Instead of adding in6_sockaddr() and in6_peeraddr(),
> just call the generic in_...() version.  The difference is only in
> in_setsockaddr() and in_setpeeraddr().  They can call the specific
> in6_...() implementation.  This reduces code in upper layers.
> 
> I did somethin like this a while ago and I think the code in the
> caller got cleaner.  Of course this trick only works as long as
> in_...() and in6_...() have the same parameters.
> 
> bluhm

This follows the pru_control direction, where we use different
in_control() and in6_control(), but they internals are absolutely the
same, except mrt{,6}_ioctl() and in{,6}_ioctl(), but they also have the
same parameters.

Personally I prefer the direction, where we have different handlers,
because inet and inet6 are different protocols, and I don't like to mix
them. Also I like the guenther@ proposition to split unix(4) sockets
dgram handlers, because this simplifies the code by removing not
reachable "default:" cases.

Reply via email to