From Fedora Project Wiki
< Networking | Ideas
(Created page with "== Some ideas for name resolution in linux distributions == === Resolve an address for connect() or sendto() === Input parameters (network layer): * host (IP address or som...") |
|||
Line 1: | Line 1: | ||
== Some ideas for name resolution in linux distributions == | == Some ideas for name resolution in linux distributions == | ||
=== Resolve a host name to a list of network layer addresses === | |||
Input parameters: | |||
* host | |||
* family | |||
Output parameters: | |||
* List of sockaddr pointers (zero ports, zero protocols, etc) | |||
* Canonical name (why?) | |||
Unfortunately, gethostbyname() has been deprecated and getaddrinfo() is not a good alternative. | |||
=== Resolve a service name to a port number === | |||
Input parameters: | |||
* service | |||
* protocol (socktype?) | |||
Output parameter: | |||
* port | |||
* protocol | |||
=== Resolve an address for connect() or sendto() === | === Resolve an address for connect() or sendto() === | ||
Line 33: | Line 59: | ||
* List of sockaddr pointers (zero ports, zero protocols, etc) | * List of sockaddr pointers (zero ports, zero protocols, etc) | ||
* Canonical name (why?) | * Canonical name (why?) | ||
=== How name resolution API should work === | |||
* *gethostinfo (name, family=0, flags=0) → list of sockaddr, canonical name | |||
* *getservinfo (name, protocol=0, ?socktype=0) → port, protocol, ?socktype | |||
* *getconninfo (host, service, family, socktype, protocol, flags) → list of sockaddr, ?socktype, ?protocol, canonical name |
Revision as of 14:01, 21 December 2012
Some ideas for name resolution in linux distributions
Resolve a host name to a list of network layer addresses
Input parameters:
- host
- family
Output parameters:
- List of sockaddr pointers (zero ports, zero protocols, etc)
- Canonical name (why?)
Unfortunately, gethostbyname() has been deprecated and getaddrinfo() is not a good alternative.
Resolve a service name to a port number
Input parameters:
- service
- protocol (socktype?)
Output parameter:
- port
- protocol
Resolve an address for connect() or sendto()
Input parameters (network layer):
- host (IP address or some sort of host name)
- family (to implement -4 and -6 switches)
Input parameters (transport layer):
- socktype
- protocol
- service (TCP/UDP port number or service name)
- whether to use SRV records
Output parameters:
- List of sockaddr pointers
- Canonical name (why?)
- socktype
- protocol
Resolve an address for IP ACLs
Input parameters:
- host
- family
Output parameters:
- List of sockaddr pointers (zero ports, zero protocols, etc)
- Canonical name (why?)
How name resolution API should work
- *gethostinfo (name, family=0, flags=0) → list of sockaddr, canonical name
- *getservinfo (name, protocol=0, ?socktype=0) → port, protocol, ?socktype
- *getconninfo (host, service, family, socktype, protocol, flags) → list of sockaddr, ?socktype, ?protocol, canonical name