Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kv-distributed
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
BHAVESHKUMAR SHYAMSUNDAR YADAV
kv-distributed
Commits
553aa5b9
Commit
553aa5b9
authored
Nov 24, 2019
by
Bhavesh Yadav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved hash function and added nodetoId function
parent
0b9c16f2
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
23 deletions
+42
-23
server/chord.c
server/chord.c
+11
-13
server/hash.c
server/hash.c
+31
-10
No files found.
server/chord.c
View file @
553aa5b9
...
@@ -11,28 +11,26 @@
...
@@ -11,28 +11,26 @@
#include <openssl/md5.h>
#include <openssl/md5.h>
#define MAXLOCATIONS 32
#define MAXLOCATIONS 32
#define MAXIDVALUE 65536
int
keyToId
(
char
*
key
){
int
keyToId
(
char
*
key
){
unsigned
char
digest
[
16
];
unsigned
char
digest
[
16
];
MD5_CTX
context
;
MD5_CTX
context
;
unsigned
intHashValue
;
unsigned
char
*
hexVal
;
MD5_Init
(
&
context
);
MD5_Init
(
&
context
);
MD5_Update
(
&
context
,
key
,
strlen
(
key
));
MD5_Update
(
&
context
,
key
,
strlen
(
key
));
MD5_Final
(
digest
,
&
context
);
MD5_Final
(
digest
,
&
context
);
hexVal
=
malloc
(
sizeof
(
char
));
int
intHashValue
;
int
twoDigits
;
int
first8bits
=
digest
[
0
];
for
(
int
i
=
0
;
i
<
2
;
i
++
){
first8bits
=
first8bits
<<
8
;
sprintf
(
hexVal
+
i
,
"%02X"
,
digest
[
i
]);
intHashValue
=
first8bits
+
digest
[
1
];
sscanf
(
hexVal
+
i
,
"%x"
,
&
twoDigits
);
intHashValue
=
intHashValue
*
1000
+
twoDigits
;
// The two digits can also have 3 numerical digits hence *1000
}
return
intHashValue
;
return
intHashValue
;
}
}
int
nodeToId
(
char
ip
[],
int
port
){
int
nodeToId
(
struct
sockaddr_in
*
socketAddr
){
//To be filled
char
*
ip
;
int
id
=
1
;
char
port
[
6
];
int
portNumber
=
socketAddr
->
sin_port
;
ip
=
inet_ntoa
(
socketAddr
->
sin_addr
);
int
id
=
(
keyToId
(
ip
)
+
portNumber
)
%
(
MAXIDVALUE
);
return
id
;
return
id
;
}
}
...
...
server/hash.c
View file @
553aa5b9
...
@@ -19,18 +19,39 @@ int keyToId(char * key){
...
@@ -19,18 +19,39 @@ int keyToId(char * key){
MD5_Init
(
&
context
);
MD5_Init
(
&
context
);
MD5_Update
(
&
context
,
key
,
strlen
(
key
));
MD5_Update
(
&
context
,
key
,
strlen
(
key
));
MD5_Final
(
digest
,
&
context
);
MD5_Final
(
digest
,
&
context
);
unsigned
intHashValue
;
int
intHashValue
;
unsigned
char
*
hexVal
;
int
first8bits
=
digest
[
0
];
hexVal
=
malloc
(
sizeof
(
char
));
first8bits
=
first8bits
<<
8
;
int
TwoDigits
;
intHashValue
=
first8bits
+
digest
[
1
];
for
(
int
i
=
0
;
i
<
2
;
i
++
){
return
intHashValue
;
sprintf
(
hexVal
+
i
,
"%02X"
,
digest
[
i
]);
}
sscanf
(
hexVal
+
i
,
"%x"
,
&
TwoDigits
);
intHashValue
=
intHashValue
*
1000
+
TwoDigits
;
int
nodeToId
(
struct
sockaddr_in
*
socketAddr
){
}
char
*
ip
;
printf
(
"%d
\n
"
,
intHashValue
);
char
port
[
6
];
int
portNumber
=
socketAddr
->
sin_port
;
ip
=
inet_ntoa
(
socketAddr
->
sin_addr
);
int
id
=
(
keyToId
(
ip
)
+
portNumber
)
%
(
65536
);
return
id
;
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
main
(
int
argc
,
char
*
argv
[])
{
int
sockfd
;
struct
sockaddr_in
servaddr
;
// Creating socket file descriptor
if
(
(
sockfd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
))
<
0
)
{
perror
(
"socket creation failed"
);
exit
(
EXIT_FAILURE
);
}
memset
(
&
servaddr
,
0
,
sizeof
(
servaddr
));
// Filling server information
servaddr
.
sin_family
=
AF_INET
;
servaddr
.
sin_port
=
htons
(
8080
);
servaddr
.
sin_addr
.
s_addr
=
inet_addr
(
"190.11.11.10"
);
nodeToId
(
&
servaddr
);
keyToId
(
argv
[
1
]);
keyToId
(
argv
[
1
]);
}
}
\ No newline at end of file
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