aboutsummaryrefslogtreecommitdiff
path: root/semestr-4/sieci/pracownia2/router/dist_vector.h
diff options
context:
space:
mode:
authorFranciszek Malinka <franciszek.malinka@gmail.com>2021-10-05 21:49:54 +0200
committerFranciszek Malinka <franciszek.malinka@gmail.com>2021-10-05 21:49:54 +0200
commitc5fcf7179a83ef65c86c6a4a390029149e518649 (patch)
treed29ffc5b86a0d257453cedcf87d91a13d8bf3b0d /semestr-4/sieci/pracownia2/router/dist_vector.h
parentf8a88b6a4aba1f66d04711a9330eaba49a50c463 (diff)
Duzy commit ze smieciami
Diffstat (limited to 'semestr-4/sieci/pracownia2/router/dist_vector.h')
-rw-r--r--semestr-4/sieci/pracownia2/router/dist_vector.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/semestr-4/sieci/pracownia2/router/dist_vector.h b/semestr-4/sieci/pracownia2/router/dist_vector.h
new file mode 100644
index 0000000..14159b4
--- /dev/null
+++ b/semestr-4/sieci/pracownia2/router/dist_vector.h
@@ -0,0 +1,36 @@
+#ifndef DIST_VECTOR_H
+#define DIST_VECTOR_H
+
+#include "linked_list.h"
+#include "network_addr.h"
+#include "config.h"
+
+/* Item of the distance vector.
+ * If <<reachable>> is set to 0, then it means that the network is reachable.
+ * If <<reachable>> has positive value, then it indicates that the network was
+ * unreachable for <<reachable>> turns.
+ */
+struct vector_item {
+ struct network_addr network;
+ struct in_addr via_ip;
+ uint16_t distance;
+ uint8_t reachable;
+ bool is_connected_directly;
+};
+
+/* Initis distance vector with given neighbours array. */
+void init_dv(list_t *dv, int n_cnt, struct network_addr *neighbours);
+
+/* Returns true if given distance vector item is connected directly, false otherwise. */
+bool is_connected_directly(struct vector_item item);
+
+/* Updates the distance vector. */
+void update_dv_new_item(list_t *distance_vector, struct vector_item new_item);
+
+/* Updates reachabilities. */
+void update_dv_reachability(list_t *distance_vector);
+
+/* Print distance vector. */
+void print_dv(list_t *distance_vector);
+
+#endif \ No newline at end of file