git: network - Move socket from netmsg ext to netmsg header, add port to socket

Aggelos Economopoulos aoiko at cc.ece.ntua.gr
Wed Dec 9 17:13:26 PST 2009


Matthew Dillon wrote:
> :...
> :if (taop->tao_mssopt != 0 && taop->tao_mssopt < maxopd)
> :        maxopd = taop->tao_mssopt;
> :
> :Looks like it could be moved in rt_metrics too, but I haven't thought
> :this through yet.
> :
> :Opinions?
> :
> :Thanks,
> :Aggelos
> 
>     Hmm.  The problem with moving it to rt_metrics is that tao_mssopt
>     is going to wind up being assigned by nearly every single tcp
>     connection via tcp_mss(), and not just from ICMP-based MTU discovery.

tao_mssopt is not currently set from MTU discovery. It is only set in
tcp_mss(), i.e. it is already being set by every tcp connection. The
only place where it's used IS in the MTU discovery code that I pasted
above. So moving it to rt_metrics implies no functional change.

>     I'm not sure how rt_metrics works but if it allocates space for
>     all the metrics we could wind up making the route table bigger
>     instead of smaller.

The metrics are part of the rt_entry structure and I noticed that the
TAO information is already stored there:

#define rmx_taop(rt)    ((struct rmxp_tao *)(rt).rmx_filler)

So what I did is:
-       u_long  rmx_filler[4];  /* will be used for T/TCP later */
+       u_short rmx_mssopt;     /* peer's cached MSS */
+       u_long  rmx_filler[3];  /* for future expansion */

BTW, an easy way to shrink the route table is to get rid of the
rmx_filler field, though that would change the size of the whole struct
rtentry (I'm not sure what code depends on that, but a full
buildworld/buildkernel should be enough).

Aggelos





More information about the Commits mailing list