[uri] Generalise tftp_uri() to pxe_uri()

Merge the functionality of parse_next_server_and_filename() and
tftp_uri() into a single pxe_uri(), which takes a server address
(IPv4/IPv6/none) and a filename, and produces a URI using the rule:

 - if the filename is a hierarchical absolute URI (i.e. includes a
   scheme such as "http://" or "tftp://") then use that URI and ignore
   the server address,

 - otherwise, if the server address is recognised (according to
   sa_family) then construct a TFTP URI based on the server address,
   port, and filename

 - otherwise fail.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2015-08-26 22:35:42 +01:00
parent be51713474
commit 53d2d9e3c3
5 changed files with 158 additions and 116 deletions

View File

@@ -206,8 +206,8 @@ extern char * resolve_path ( const char *base_path,
const char *relative_path );
extern struct uri * resolve_uri ( const struct uri *base_uri,
struct uri *relative_uri );
extern struct uri * tftp_uri ( struct in_addr next_server, unsigned int port,
const char *filename );
extern struct uri * pxe_uri ( struct sockaddr *sa_server,
const char *filename );
extern void churi ( struct uri *uri );
#endif /* _IPXE_URI_H */