diff options
Diffstat (limited to 'Semestr 4/sieci/pracownia2/router/router.c')
-rw-r--r-- | Semestr 4/sieci/pracownia2/router/router.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/Semestr 4/sieci/pracownia2/router/router.c b/Semestr 4/sieci/pracownia2/router/router.c index f68a6a3..031ead8 100644 --- a/Semestr 4/sieci/pracownia2/router/router.c +++ b/Semestr 4/sieci/pracownia2/router/router.c @@ -7,18 +7,13 @@ #include <stdint.h> #include <stdlib.h> #include <unistd.h> -#include "router_addr.h" +#include "network_addr.h" #include "utils.h" -#define SERVER_PORT 54321 -#define TURN_LEN_S 5 -#define TURN_LEN_MS (1000 * TURN_LEN_S) -#define TURN_LEN_US (1000000 * TURN_LEN_S) - -uint16_t read_configuration(struct router_addr** networks) { +uint16_t read_configuration(struct network_addr** networks) { uint16_t n; scanf("%hd", &n); - *networks = malloc(n * sizeof(struct router_addr)); + *networks = malloc(n * sizeof(struct network_addr)); for (int i = 0; i < n; i++) { char addr[20]; char _dist[10]; @@ -30,7 +25,7 @@ uint16_t read_configuration(struct router_addr** networks) { return n; } -void listen_for_routers(int sockfd, int timeout, int networks_number, struct router_addr *netowrks) { +void listen_for_routers(int sockfd, int timeout, int networks_number, struct network_addr *netowrks) { printf("Listening for %dms.\n", timeout); while (poll_socket_modify_timeout(sockfd, &timeout)) { printf("Poll returned, remaining timeout: %dms.\n", timeout); @@ -40,12 +35,6 @@ void listen_for_routers(int sockfd, int timeout, int networks_number, struct rou } int send_distance_vector(int sockfd, struct in_addr network) { - struct sockaddr_in network_address; - bzero (&network_address, sizeof(network_address)); - network_address.sin_family = AF_INET; - network_address.sin_port = htons(SERVER_PORT); - network_address.sin_addr = network; - char* message = "Hello server! My name is S1\n"; ssize_t message_len = strlen(message); int result; @@ -53,12 +42,12 @@ int send_distance_vector(int sockfd, struct in_addr network) { char addr[20]; inet_ntop(AF_INET, &network, addr, sizeof(addr)); printf("Sending datagram to %s\n", addr); - if ((result = sendto(sockfd, message, message_len, 0, (struct sockaddr*) &network_address, sizeof(network_address))) != message_len) { + if ((result = send_message(sockfd, message, message_len, network)) != message_len) { fprintf(stderr, "sendto error: %s\n", strerror(errno)); } } -void propagate_distance_vector(int sockfd, int networks_number, struct router_addr *networks) { +void propagate_distance_vector(int sockfd, int networks_number, struct network_addr *networks) { printf("Propagating distance vector\n"); for (int i = 0; i < networks_number; i++) { struct in_addr broadcast_address = get_broadcast_address(networks[i]); @@ -67,7 +56,7 @@ void propagate_distance_vector(int sockfd, int networks_number, struct router_ad printf("Distance vector propagated.\n\n"); } -void router_loop(int sockfd, int networks_number, struct router_addr *networks) { +void router_loop(int sockfd, int networks_number, struct network_addr *networks) { printf("Starting the router loop...\n"); for (;;) { listen_for_routers(sockfd, TURN_LEN_MS, networks_number, networks); @@ -76,7 +65,7 @@ void router_loop(int sockfd, int networks_number, struct router_addr *networks) } int main() { - struct router_addr* networks; + struct network_addr* networks; int n = read_configuration(&networks); for (int i = 0; i < n; i++) { pretty_print(networks[i]); |