aboutsummaryrefslogtreecommitdiff
path: root/Semestr 4/sieci/pracownia2/router/dist_vector.h
blob: cd1a995fde90f4b53fddcc100216923e41b4ff45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef DIST_VECTOR_H
#define DIST_VECTOR_H

#include "linked_list.h"
#include "network_addr.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;
  router_addr         via_ip;
  uint8_t             reachable;
};

/* 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_distance_vector(list_t *distance_vector, struct vector_item new_item);

#endif