aboutsummaryrefslogtreecommitdiff
path: root/Semestr 4/sieci/pracownia2/router/dist_vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'Semestr 4/sieci/pracownia2/router/dist_vector.c')
-rw-r--r--Semestr 4/sieci/pracownia2/router/dist_vector.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/Semestr 4/sieci/pracownia2/router/dist_vector.c b/Semestr 4/sieci/pracownia2/router/dist_vector.c
index f1c8c67..15ad851 100644
--- a/Semestr 4/sieci/pracownia2/router/dist_vector.c
+++ b/Semestr 4/sieci/pracownia2/router/dist_vector.c
@@ -1,5 +1,7 @@
#include "dist_vector.h"
#include <stdio.h>
+#include <time.h>
+#include <string.h>
bool is_connected_directly(struct vector_item item) {
return item.is_connected_directly;
@@ -60,10 +62,8 @@ void update_dv_new_item(list_t *distance_vector, struct vector_item new_item) {
current->distance = INFINITY_DIST;
current->reachable = 0;
}
- } else if (new_item.distance < INFINITY_DIST) {
- if (current->distance >= INFINITY_DIST) {
- current->distance = new_item.distance;
- }
+ } else {
+ current->distance = new_item.distance;
current->reachable = 0;
}
}
@@ -73,13 +73,21 @@ void update_dv_new_item(list_t *distance_vector, struct vector_item new_item) {
iterate(distance_vector);
}
- if (new_entry) {
+ if (new_entry && new_item.reachable < INFINITY_DIST) {
insert(distance_vector, &new_item, sizeof(new_item));
}
}
void print_dv(list_t *distance_vector) {
- printf("Distance vector:\n");
+ time_t rawtime;
+ struct tm * timeinfo;
+
+ time ( &rawtime );
+ timeinfo = localtime ( &rawtime );
+ char t[100];
+ strcpy(t, asctime(timeinfo));
+ t[strlen(t) - 1] = 0;
+ printf("Distance vector [%s]:\n", t);
reset(distance_vector);
while (distance_vector->it != NULL) {
char addr[20], via_addr[20];