aboutsummaryrefslogtreecommitdiff
path: root/src/stun/stun.hrl
diff options
context:
space:
mode:
Diffstat (limited to 'src/stun/stun.hrl')
-rw-r--r--src/stun/stun.hrl88
1 files changed, 49 insertions, 39 deletions
diff --git a/src/stun/stun.hrl b/src/stun/stun.hrl
index bd25c67f9..251cf83cc 100644
--- a/src/stun/stun.hrl
+++ b/src/stun/stun.hrl
@@ -28,51 +28,61 @@
%% I know, this is terrible. Refer to 'STUN Message Structure' of
%% RFC5389 to understand this.
-define(STUN_METHOD(Type),
- ((Type band 16#3e00) bsr 2) bor
- ((Type band 16#e0) bsr 1) bor (Type band 16#f)).
+ Type band 15872 bsr 2 bor (Type band 224 bsr 1) bor
+ Type band 15).
+
-define(STUN_CLASS(Type),
- ((Type band 16#100) bsr 7) bor
- ((Type band 16#10) bsr 4)).
+ Type band 256 bsr 7 bor (Type band 16 bsr 4)).
+
-define(STUN_TYPE(C, M),
- (((M band 16#f80) bsl 2)
- bor ((M band 16#70) bsl 1)
- bor (M band 16#f) )
- bor (((C band 16#2) bsl 7) bor ((C band 16#1) bsl 4))).
+%% Comprehension-required range (0x0000-0x7FFF)
+%% Comprehension-optional range (0x8000-0xFFFF)
+ M band 3968 bsl 2 bor (M band 112 bsl 1) bor M band 15
+ bor (C band 2 bsl 7 bor (C band 1 bsl 4))).
--define(is_required(A), (A =< 16#7fff)).
+-define(is_required(A), A =< 32767).
--define(STUN_METHOD_BINDING, 16#001).
+-define(STUN_METHOD_BINDING, 1).
-%% Comprehension-required range (0x0000-0x7FFF)
--define(STUN_ATTR_MAPPED_ADDRESS, 16#0001).
--define(STUN_ATTR_USERNAME, 16#0006).
--define(STUN_ATTR_MESSAGE_INTEGRITY, 16#0008).
--define(STUN_ATTR_ERROR_CODE, 16#0009).
--define(STUN_ATTR_UNKNOWN_ATTRIBUTES, 16#000a).
--define(STUN_ATTR_REALM, 16#0014).
--define(STUN_ATTR_NONCE, 16#0015).
--define(STUN_ATTR_XOR_MAPPED_ADDRESS, 16#0020).
+-define(STUN_ATTR_MAPPED_ADDRESS, 1).
-%% Comprehension-optional range (0x8000-0xFFFF)
--define(STUN_ATTR_SOFTWARE, 16#8022).
--define(STUN_ATTR_ALTERNATE_SERVER, 16#8023).
--define(STUN_ATTR_FINGERPRINT, 16#8028).
-
--record(stun, {class,
- method,
- magic = ?STUN_MAGIC,
- trid,
- unsupported = [],
- 'SOFTWARE',
- 'ALTERNATE-SERVER',
- 'MAPPED-ADDRESS',
- 'XOR-MAPPED-ADDRESS',
- 'USERNAME',
- 'REALM',
- 'NONCE',
- 'MESSAGE-INTEGRITY',
- 'ERROR-CODE',
- 'UNKNOWN-ATTRIBUTES' = []}).
+-define(STUN_ATTR_USERNAME, 6).
+
+-define(STUN_ATTR_MESSAGE_INTEGRITY, 8).
+
+-define(STUN_ATTR_ERROR_CODE, 9).
+
+-define(STUN_ATTR_UNKNOWN_ATTRIBUTES, 10).
+
+-define(STUN_ATTR_REALM, 20).
+
+-define(STUN_ATTR_NONCE, 21).
+
+-define(STUN_ATTR_XOR_MAPPED_ADDRESS, 32).
+
+-define(STUN_ATTR_SOFTWARE, 32802).
+
+-define(STUN_ATTR_ALTERNATE_SERVER, 32803).
+
+-define(STUN_ATTR_FINGERPRINT, 32808).
+
+-record(stun,
+ {class = request :: request | response | error | indication,
+ method = ?STUN_METHOD_BINDING :: non_neg_integer(),
+ magic = ?STUN_MAGIC :: non_neg_integer(),
+ trid = 0 :: non_neg_integer() ,
+ unsupported = [] :: [non_neg_integer()],
+ 'SOFTWARE',
+ 'ALTERNATE-SERVER',
+ 'MAPPED-ADDRESS',
+ 'XOR-MAPPED-ADDRESS',
+ 'USERNAME',
+ 'REALM',
+ 'NONCE',
+ 'MESSAGE-INTEGRITY',
+ 'ERROR-CODE',
+ 'UNKNOWN-ATTRIBUTES' = []}).
%% Workarounds.
%%-define(NO_PADDING, true).
+