[ 
https://issues.apache.org/jira/browse/TS-320?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alan M. Carroll reassigned TS-320:
----------------------------------

    Assignee: Alan M. Carroll

> Do some cleanup on Connection::fast_connect and Connection::bind_connect
> ------------------------------------------------------------------------
>
>                 Key: TS-320
>                 URL: https://issues.apache.org/jira/browse/TS-320
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Cleanup
>    Affects Versions: 2.0.0a
>            Reporter: Alan M. Carroll
>            Assignee: Alan M. Carroll
>            Priority: Minor
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> Action Plan:
> Unify bind_connect, fast_connect.
> 1. Split out the binding of the target address in to a new method
> Connection::bind_target(target_ip, target_port);
> This simply copies to the target IP address and port to Connection::sa. As 
> far as I can tell this is the only thing the calls to bind_connection from 
> IPC.cc do. We can then change those calls to direct calls to bind_target. 
> Then we should be able to eliminate all the bool flags on bind_connect which 
> aren't used elsewhere.
> 2. Remove the my_ip argument from bind_connect. Use spoof_ip in NetVCOptions 
> instead. At this point the signatures for fast_connect and bind_connect are 
> now identical.
> 3. Add support for the IP_TRANSPARENT sock opt provided by TPROXY in to 
> NetVCOptions, either as a separate flag or (better) merged in to 
> NetVCOptions::sockopt_flags. This would mean that spoof_ip is treated as a 
> local address (i.e., an address already assigned to an interface on the local 
> system) if not set, or as an arbitrary address requiring TPROXY support if 
> set. If we conditionally define the mask as IP_TRANSPARENT or 0 depending on 
> TPROXY availability we should be able to limit conditional compilation to 
> that location (as the check will always fail if IP_TRANSPARENT is not 
> available).
> 4. Move SO_REUSEADDR to NetVCOptions::sockopt_flags. This is set in 
> bind_connect but not fast_connect.
> 5. Put an TCP vs. UDP flag in NetVCOptions. This would follow from the code, 
> but as far as I can tell this is never used. It is passed in from the ICP 
> logic but, because that also sets the "no bind" flag, it doesn't get invoked. 
> It may be that bind_connect should just be implicitly TCP.
> 6. Verify that NetVCOptions default constructed values are such that 
> bind_connect with a default constructed NetVCOptions does the same thing that 
> fast_connect does.
> 7. Add an option (in the signature or in NetVCOptions) to handle the epoll 
> support. AFAICT this is done in all cases where either fast_connect or 
> bind_connect is called other than IPC (which we have already removed) so we 
> could hard wire it. Comments in the code indicated this is already considered 
> a problem.
> After all of this, we can replace all invocations of fast_connect with 
> bind_connect with no change in functionality.
> Note: This is in preparation for working on TS-291.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to