diff options
author | Michael Brown | 2007-05-19 22:14:18 +0200 |
---|---|---|
committer | Michael Brown | 2007-05-19 22:14:18 +0200 |
commit | 5e25a89e7473827f81703038c650c0bb6fce7186 (patch) | |
tree | 78bd526d30b835745f33998a849de581b6c67809 /src/core/open.c | |
parent | Rename pkbpad.c to iobpad.c (diff) | |
download | ipxe-5e25a89e7473827f81703038c650c0bb6fce7186.tar.gz ipxe-5e25a89e7473827f81703038c650c0bb6fce7186.tar.xz ipxe-5e25a89e7473827f81703038c650c0bb6fce7186.zip |
Add local address to socket openers.
Diffstat (limited to 'src/core/open.c')
-rw-r--r-- | src/core/open.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/core/open.c b/src/core/open.c index af01b2b4..284d00a9 100644 --- a/src/core/open.c +++ b/src/core/open.c @@ -77,9 +77,13 @@ int xfer_open_uri ( struct xfer_interface *xfer, const char *uri_string ) { * @v xfer Data transfer interface * @v domain Communication domain (e.g. PF_INET) * @v type Communication semantics (e.g. SOCK_STREAM) + * @v peer Peer socket address + * @v local Local socket address, or NULL + * @ret rc Return status code */ int xfer_open_socket ( struct xfer_interface *xfer, - int domain, int type, struct sockaddr *sa ) { + int domain, int type, struct sockaddr *peer, + struct sockaddr *local ) { struct socket_opener *opener; DBGC ( xfer, "XFER %p opening (%s,%s) socket\n", xfer, @@ -88,7 +92,7 @@ int xfer_open_socket ( struct xfer_interface *xfer, for ( opener = socket_openers; opener < socket_openers_end; opener++ ){ if ( ( opener->domain == domain ) && ( opener->type == type ) ) { - return opener->open ( xfer, sa ); + return opener->open ( xfer, peer, local ); } } @@ -115,9 +119,10 @@ int xfer_vopen ( struct xfer_interface *xfer, int type, va_list args ) { case LOCATION_SOCKET: { int domain = va_arg ( args, int ); int type = va_arg ( args, int ); - struct sockaddr *sa = va_arg ( args, struct sockaddr * ); + struct sockaddr *peer = va_arg ( args, struct sockaddr * ); + struct sockaddr *local = va_arg ( args, struct sockaddr * ); - return xfer_open_socket ( xfer, domain, type, sa ); } + return xfer_open_socket ( xfer, domain, type, peer, local ); } default: DBGC ( xfer, "XFER %p attempted to open unsupported location " "type %d\n", xfer, type ); |