diff options
Diffstat (limited to 'src/stun/stun.hrl')
-rw-r--r-- | src/stun/stun.hrl | 88 |
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). + |