提交 7d1d48a2 编写于 作者: M Matt Caswell

Add a BIO_ADDR_clear function

Adds a new function BIO_ADDR_clear to reset a BIO_ADDR back to an
unitialised state, and to set the family to AF_UNSPEC.
Reviewed-by: NViktor Dukhovni <viktor@openssl.org>
上级 0d4fb843
...@@ -76,6 +76,7 @@ ...@@ -76,6 +76,7 @@
BIO_ADDR *BIO_ADDR_new(void) BIO_ADDR *BIO_ADDR_new(void)
{ {
BIO_ADDR *ret = (BIO_ADDR *)OPENSSL_zalloc(sizeof(BIO_ADDR)); BIO_ADDR *ret = (BIO_ADDR *)OPENSSL_zalloc(sizeof(BIO_ADDR));
ret->sa.sa_family = AF_UNSPEC;
return ret; return ret;
} }
...@@ -84,6 +85,12 @@ void BIO_ADDR_free(BIO_ADDR *ap) ...@@ -84,6 +85,12 @@ void BIO_ADDR_free(BIO_ADDR *ap)
OPENSSL_free(ap); OPENSSL_free(ap);
} }
void BIO_ADDR_clear(BIO_ADDR *ap)
{
memset(ap, 0, sizeof(*ap));
ap->sa.sa_family = AF_UNSPEC;
}
/* /*
* BIO_ADDR_make - non-public routine to fill a BIO_ADDR with the contents * BIO_ADDR_make - non-public routine to fill a BIO_ADDR with the contents
* of a struct sockaddr. * of a struct sockaddr.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
=head1 NAME =head1 NAME
BIO_ADDR, BIO_ADDR_new, BIO_ADDR_free, BIO_ADDR_rawmake, BIO_ADDR, BIO_ADDR_new, BIO_ADDR_clear, BIO_ADDR_free, BIO_ADDR_rawmake,
BIO_ADDR_family, BIO_ADDR_rawaddress, BIO_ADDR_rawport, BIO_ADDR_family, BIO_ADDR_rawaddress, BIO_ADDR_rawport,
BIO_ADDR_hostname_string, BIO_ADDR_service_string, BIO_ADDR_hostname_string, BIO_ADDR_service_string,
BIO_ADDR_path_string - BIO_ADDR routines BIO_ADDR_path_string - BIO_ADDR routines
...@@ -16,6 +16,7 @@ BIO_ADDR_path_string - BIO_ADDR routines ...@@ -16,6 +16,7 @@ BIO_ADDR_path_string - BIO_ADDR routines
BIO_ADDR *BIO_ADDR_new(void); BIO_ADDR *BIO_ADDR_new(void);
void BIO_ADDR_free(BIO_ADDR *); void BIO_ADDR_free(BIO_ADDR *);
void BIO_ADDR_clear(BIO_ADDR *ap);
int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, int BIO_ADDR_rawmake(BIO_ADDR *ap, int family,
const void *where, size_t wherelen, unsigned short port); const void *where, size_t wherelen, unsigned short port);
int BIO_ADDR_family(const BIO_ADDR *ap); int BIO_ADDR_family(const BIO_ADDR *ap);
...@@ -38,6 +39,9 @@ BIO_accept_ex(). ...@@ -38,6 +39,9 @@ BIO_accept_ex().
BIO_ADDR_free() frees a B<BIO_ADDR> created with BIO_ADDR_new(). BIO_ADDR_free() frees a B<BIO_ADDR> created with BIO_ADDR_new().
BIO_ADDR_clear() clears any data held within the provided B<BIO_ADDR> and sets
it back to an uninitialised state.
BIO_ADDR_rawmake() takes a protocol B<family>, an byte array of BIO_ADDR_rawmake() takes a protocol B<family>, an byte array of
size B<wherelen> with an address in network byte order pointed at size B<wherelen> with an address in network byte order pointed at
by B<where> and a port number in network byte order in B<port> (except by B<where> and a port number in network byte order in B<port> (except
...@@ -50,7 +54,8 @@ I<Read on about the addresses in L</RAW ADDRESSES> below>. ...@@ -50,7 +54,8 @@ I<Read on about the addresses in L</RAW ADDRESSES> below>.
BIO_ADDR_family() returns the protocol family of the given BIO_ADDR_family() returns the protocol family of the given
B<BIO_ADDR>. The possible non-error results are one of the B<BIO_ADDR>. The possible non-error results are one of the
constants AF_INET, AF_INET6 and AF_UNIX. constants AF_INET, AF_INET6 and AF_UNIX. It will also return AF_UNSPEC if the
BIO_ADDR has not been initialised.
BIO_ADDR_rawaddress() will write the raw address of the given BIO_ADDR_rawaddress() will write the raw address of the given
B<BIO_ADDR> in the area pointed at by B<p> if B<p> is non-NULL, B<BIO_ADDR> in the area pointed at by B<p> if B<p> is non-NULL,
......
...@@ -713,6 +713,7 @@ BIO_ADDR *BIO_ADDR_new(void); ...@@ -713,6 +713,7 @@ BIO_ADDR *BIO_ADDR_new(void);
int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, int BIO_ADDR_rawmake(BIO_ADDR *ap, int family,
const void *where, size_t wherelen, unsigned short port); const void *where, size_t wherelen, unsigned short port);
void BIO_ADDR_free(BIO_ADDR *); void BIO_ADDR_free(BIO_ADDR *);
void BIO_ADDR_clear(BIO_ADDR *ap);
int BIO_ADDR_family(const BIO_ADDR *ap); int BIO_ADDR_family(const BIO_ADDR *ap);
int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l);
unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册