Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
belle-sip
Commits
2d248018
Commit
2d248018
authored
Jun 28, 2016
by
Ghislain MARY
Browse files
Moved belle_sip_address_remove_v4_mapping() to bctoolbox.
parent
7c2ca893
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/belle-sip/resolver.h
View file @
2d248018
...
...
@@ -99,12 +99,6 @@ BELLESIP_EXPORT void belle_sip_resolver_context_cancel(belle_sip_resolver_contex
**/
BELLESIP_EXPORT
void
belle_sip_get_src_addr_for
(
const
struct
sockaddr
*
dest
,
socklen_t
destlen
,
struct
sockaddr
*
src
,
socklen_t
*
srclen
,
int
local_port
);
/**
* This function will transform a V4 to V6 mapped address to a pure V4 and write it into result, or will just copy it otherwise.
* The memory for v6 and result may be the same, in which case processing is done in place or no copy is done.
* The pointer to result must have sufficient storage, typically a struct sockaddr_storage.
**/
BELLESIP_EXPORT
void
belle_sip_address_remove_v4_mapping
(
const
struct
sockaddr
*
v6
,
struct
sockaddr
*
result
,
socklen_t
*
result_len
);
BELLE_SIP_END_DECLS
...
...
src/belle_sip_resolver.c
View file @
2d248018
...
...
@@ -1144,32 +1144,3 @@ fail:
}
if
(
sock
!=
(
belle_sip_socket_t
)
-
1
)
close_socket
(
sock
);
}
#ifndef IN6_GET_ADDR_V4MAPPED
#define IN6_GET_ADDR_V4MAPPED(sin6_addr) *(unsigned int*)((unsigned char*)(sin6_addr)+12)
#endif
void
belle_sip_address_remove_v4_mapping
(
const
struct
sockaddr
*
v6
,
struct
sockaddr
*
result
,
socklen_t
*
result_len
){
if
(
v6
->
sa_family
==
AF_INET6
){
struct
sockaddr_in6
*
in6
=
(
struct
sockaddr_in6
*
)
v6
;
if
(
IN6_IS_ADDR_V4MAPPED
(
&
in6
->
sin6_addr
)){
struct
sockaddr_in
*
in
=
(
struct
sockaddr_in
*
)
result
;
result
->
sa_family
=
AF_INET
;
in
->
sin_addr
.
s_addr
=
IN6_GET_ADDR_V4MAPPED
(
&
in6
->
sin6_addr
);
in
->
sin_port
=
in6
->
sin6_port
;
*
result_len
=
sizeof
(
struct
sockaddr_in
);
}
else
{
if
(
v6
!=
result
)
memcpy
(
result
,
v6
,
sizeof
(
struct
sockaddr_in6
));
*
result_len
=
sizeof
(
struct
sockaddr_in6
);
}
}
else
{
*
result_len
=
sizeof
(
struct
sockaddr_in
);
if
(
v6
!=
result
)
memcpy
(
result
,
v6
,
sizeof
(
struct
sockaddr_in
));
}
}
src/channel.c
View file @
2d248018
...
...
@@ -147,7 +147,7 @@ static void fix_incoming_via(belle_sip_request_t *msg, const struct addrinfo* or
belle_sip_warning
(
"cannot fix via for message [%p], probably a test"
,
msg
);
return
;
}
b
elle_sip_
addr
ess
_remove_v4_mapping
(
origin
->
ai_addr
,
(
struct
sockaddr
*
)
&
saddr
,
&
slen
);
b
ctbx_sock
addr_remove_v4_mapping
(
origin
->
ai_addr
,
(
struct
sockaddr
*
)
&
saddr
,
&
slen
);
err
=
getnameinfo
((
struct
sockaddr
*
)
&
saddr
,
slen
,
received
,
sizeof
(
received
),
rport
,
sizeof
(
rport
),
NI_NUMERICHOST
|
NI_NUMERICSERV
);
if
(
err
!=
0
){
...
...
@@ -1346,7 +1346,7 @@ void belle_sip_channel_set_ready(belle_sip_channel_t *obj, const struct sockaddr
socklen_t
slen2
=
sizeof
(
saddr
);
int
err
;
b
elle_sip_
addr
ess
_remove_v4_mapping
(
addr
,(
struct
sockaddr
*
)
&
saddr
,
&
slen2
);
b
ctbx_sock
addr_remove_v4_mapping
(
addr
,(
struct
sockaddr
*
)
&
saddr
,
&
slen2
);
err
=
getnameinfo
((
struct
sockaddr
*
)
&
saddr
,
slen2
,
name
,
sizeof
(
name
),
serv
,
sizeof
(
serv
),
NI_NUMERICHOST
|
NI_NUMERICSERV
);
if
(
err
!=
0
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment