Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Arne Øslebø
mapi
Commits
864ce0d5
Commit
864ce0d5
authored
Sep 26, 2006
by
Stig Venaas
Browse files
added IPv6 tos and flow anon
git-svn-id:
file:///home/svn/mapi/trunk@905
8d5bb341-7cf1-0310-8cf6-ba355fef3186
parent
069b836d
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/anonflib/anonymization.h
View file @
864ce0d5
...
...
@@ -271,7 +271,10 @@ typedef enum {
END_FIELD_DEFS
,
GAUSSIAN
,
UNIFORM
UNIFORM
,
FLOW
/* IPv6 header field, should not be here, but may break compatibility
* if not at the end */
}
anonymizationDefs
;
#define MAX_PIPELINE 50
...
...
src/anonflib/anonymize.c
View file @
864ce0d5
...
...
@@ -75,7 +75,7 @@ int can_field_be_applied_to_protocol(int protocol,int field) {
switch
(
protocol
)
{
case
IP
:
if
(
field
<
PAYLOAD
||
field
>
FRAGMENT_OFFSET
)
if
(
(
field
<
PAYLOAD
||
field
>
FRAGMENT_OFFSET
)
&&
field
!=
FLOW
)
return
0
;
break
;
case
TCP
:
...
...
@@ -345,7 +345,8 @@ static int anonymize_instance(mapidflib_function_instance_t *instance,
}
//field shouldn't be special enumeration like BASE_FTP_DEFS
if
((
field_description
<=
BASE_FIELD_DEFS
||
field_description
>=
END_FIELD_DEFS
)
if
(((
field_description
<=
BASE_FIELD_DEFS
||
field_description
>=
END_FIELD_DEFS
)
&&
field_description
!=
FLOW
)
||
field_description
==
BASE_FTP_DEFS
||
field_description
==
END_FTP_DEFS
||
field_description
==
BASE_HTTP_DEFS
...
...
@@ -575,6 +576,32 @@ void anonymize_field(int protocol, int field, int function,mapipacket *packet,st
header_pointer
=
field_pointer
;
len
=
header_len
=
packet
->
ipdsize
;
break
;
case
TOS
:
{
/* not on byte boundary, so need to copy value into
* our own variable, and copy result back again */
unsigned
char
ttl
;
unsigned
char
*
flow
=
(
unsigned
char
*
)
&
packet
->
ip6h
->
ip6_flow
;
ttl
=
(
flow
[
0
]
<<
4
)
+
(
flow
[
1
]
>>
4
);
apply_function_to_field
(
function
,
protocol
,
field
,
&
ttl
,
1
,
header_pointer
,
header_len
,
packet
,
params
);
flow
[
0
]
=
(
flow
[
0
]
&
0xf0
)
|
(
ttl
>>
4
);
flow
[
1
]
=
(
flow
[
1
]
&
0xf
)
|
(
ttl
<<
4
);
return
;
}
case
FLOW
:
{
/* not on byte boundary, so need to copy value into
* our own variable, and copy result back again
* last 20 bits are the flow label */
unsigned
int
flow
=
ntohl
(
packet
->
ip6h
->
ip6_flow
)
&
0xfffff
;
apply_function_to_field
(
function
,
protocol
,
field
,
(
unsigned
char
*
)
&
flow
,
4
,
header_pointer
,
header_len
,
packet
,
params
);
/* hopefully ok to ignore top 12 bits of anon result */
packet
->
ip6h
->
ip6_flow
=
htonl
((
packet
->
ip6h
->
ip6_flow
&
0xfff00000
)
|
(
flow
&
0xfffff
));
return
;
}
case
TTL
:
field_pointer
=
(
unsigned
char
*
)
&
packet
->
ip6h
->
ip6_hlim
;
len
=
1
;
...
...
src/anonflib/names.c
View file @
864ce0d5
...
...
@@ -161,6 +161,7 @@ char *anonnames[] = {
"END_FIELD_DEFS"
,
"GAUSSIAN"
,
"UNIFORM"
,
"FLOW"
,
/* ipv6 flowlabel, should not be last, but may break compatibility if not */
NULL
};
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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