Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libnice
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
libnice
Commits
1b76e28f
Commit
1b76e28f
authored
Jul 30, 2008
by
Youness Alaoui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding the ability to change the XOR value for the XOR-MAPPED-ADDRESS
parent
77ff1d20
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
50 additions
and
7 deletions
+50
-7
stun/stunmessage.c
stun/stunmessage.c
+35
-2
stun/stunmessage.h
stun/stunmessage.h
+8
-0
stun/utils.c
stun/utils.c
+5
-4
stun/utils.h
stun/utils.h
+2
-1
No files found.
stun/stunmessage.c
View file @
1b76e28f
...
...
@@ -266,7 +266,19 @@ stun_message_find_xor_addr (const StunMessage *msg, stun_attr_type_t type,
if
(
val
)
return
val
;
return
stun_xor_address
(
msg
,
addr
,
*
addrlen
);
return
stun_xor_address
(
msg
,
addr
,
*
addrlen
,
STUN_MAGIC_COOKIE
);
}
int
stun_message_find_xor_addr_full
(
const
StunMessage
*
msg
,
stun_attr_type_t
type
,
struct
sockaddr
*
restrict
addr
,
socklen_t
*
restrict
addrlen
,
uint32_t
magic_cookie
)
{
int
val
=
stun_message_find_addr
(
msg
,
type
,
addr
,
addrlen
);
if
(
val
)
return
val
;
return
stun_xor_address
(
msg
,
addr
,
*
addrlen
,
magic_cookie
);
}
int
stun_message_find_error
(
const
StunMessage
*
msg
,
int
*
restrict
code
)
...
...
@@ -444,7 +456,28 @@ int stun_message_append_xor_addr (StunMessage *msg, stun_attr_type_t type,
addrlen
=
sizeof
(
xor
);
memcpy
(
&
xor
,
addr
,
addrlen
);
val
=
stun_xor_address
(
msg
,
(
struct
sockaddr
*
)
&
xor
,
addrlen
);
val
=
stun_xor_address
(
msg
,
(
struct
sockaddr
*
)
&
xor
,
addrlen
,
STUN_MAGIC_COOKIE
);
if
(
val
)
return
val
;
return
stun_message_append_addr
(
msg
,
type
,
(
struct
sockaddr
*
)
&
xor
,
addrlen
);
}
int
stun_message_append_xor_addr_full
(
StunMessage
*
msg
,
stun_attr_type_t
type
,
const
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
,
uint32_t
magic_cookie
)
{
int
val
;
/* Must be big enough to hold any supported address: */
struct
sockaddr_storage
xor
;
if
(
addrlen
>
sizeof
(
xor
))
addrlen
=
sizeof
(
xor
);
memcpy
(
&
xor
,
addr
,
addrlen
);
val
=
stun_xor_address
(
msg
,
(
struct
sockaddr
*
)
&
xor
,
addrlen
,
magic_cookie
);
if
(
val
)
return
val
;
...
...
stun/stunmessage.h
View file @
1b76e28f
...
...
@@ -317,6 +317,10 @@ int stun_message_find_addr (const StunMessage *msg, stun_attr_type_t type,
int
stun_message_find_xor_addr
(
const
StunMessage
*
msg
,
stun_attr_type_t
type
,
struct
sockaddr
*
restrict
addr
,
socklen_t
*
restrict
addrlen
);
int
stun_message_find_xor_addr_full
(
const
StunMessage
*
msg
,
stun_attr_type_t
type
,
struct
sockaddr
*
restrict
addr
,
socklen_t
*
restrict
addrlen
,
uint32_t
magic_cookie
);
int
stun_message_find_error
(
const
StunMessage
*
msg
,
int
*
restrict
code
);
...
...
@@ -396,6 +400,10 @@ int stun_message_append_addr (StunMessage * msg, stun_attr_type_t type,
int
stun_message_append_xor_addr
(
StunMessage
*
msg
,
stun_attr_type_t
type
,
const
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
);
int
stun_message_append_xor_addr_full
(
StunMessage
*
msg
,
stun_attr_type_t
type
,
const
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
,
uint32_t
magic_cookie
);
/**
* Appends an ERROR-CODE attribute.
* @param msg STUN message buffer
...
...
stun/utils.c
View file @
1b76e28f
...
...
@@ -149,7 +149,8 @@ void stun_debug_bytes (const void *data, size_t len)
}
int
stun_xor_address
(
const
StunMessage
*
msg
,
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
)
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
,
uint32_t
magic_cookie
)
{
switch
(
addr
->
sa_family
)
{
...
...
@@ -159,8 +160,8 @@ int stun_xor_address (const StunMessage *msg,
if
(
addrlen
<
sizeof
(
*
ip4
))
return
EINVAL
;
ip4
->
sin_port
^=
htons
(
STUN_MAGIC_COOKIE
>>
16
);
ip4
->
sin_addr
.
s_addr
^=
htonl
(
STUN_MAGIC_COOKIE
);
ip4
->
sin_port
^=
htons
(
magic_cookie
>>
16
);
ip4
->
sin_addr
.
s_addr
^=
htonl
(
magic_cookie
);
return
0
;
}
...
...
@@ -172,7 +173,7 @@ int stun_xor_address (const StunMessage *msg,
if
(
addrlen
<
sizeof
(
*
ip6
))
return
EINVAL
;
ip6
->
sin6_port
^=
htons
(
STUN_MAGIC_COOKIE
>>
16
);
ip6
->
sin6_port
^=
htons
(
magic_cookie
>>
16
);
for
(
i
=
0
;
i
<
16
;
i
++
)
ip6
->
sin6_addr
.
s6_addr
[
i
]
^=
msg
->
buffer
[
4
+
i
];
return
0
;
...
...
stun/utils.h
View file @
1b76e28f
...
...
@@ -63,7 +63,8 @@ void stun_debug (const char *fmt, ...);
void
stun_debug_bytes
(
const
void
*
data
,
size_t
len
);
int
stun_xor_address
(
const
StunMessage
*
msg
,
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
);
struct
sockaddr
*
restrict
addr
,
socklen_t
addrlen
,
uint32_t
magic_cookie
);
int
stun_memcmp
(
const
StunMessage
*
msg
,
stun_attr_type_t
type
,
const
void
*
data
,
size_t
len
);
...
...
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