From 1e9bb89764deac450cf13d99872086e4691b316f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Wed, 4 Apr 2018 08:58:10 +0000 Subject: [PATCH] Code cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrien Gallouët --- mud.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/mud.c b/mud.c index b412bf8..3dc3f73 100644 --- a/mud.c +++ b/mud.c @@ -1171,6 +1171,20 @@ mud_compute_rtt(const uint64_t rtt, const uint64_t new_rtt) return rtt ? (new_rtt + UINT64_C(7) * rtt) >> 3 : new_rtt; } +static void +mud_ss_from_packet(struct sockaddr_storage *ss, struct mud_packet *pkt) +{ + if (memcmp(pkt->hdr.addr.v6, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12)) { + ss->ss_family = AF_INET6; + memcpy(&((struct sockaddr_in6 *)ss)->sin6_addr, pkt->hdr.addr.v6, 16); + memcpy(&((struct sockaddr_in6 *)ss)->sin6_port, pkt->hdr.addr.port, 2); + } else { + ss->ss_family = AF_INET; + memcpy(&((struct sockaddr_in *)ss)->sin_addr, pkt->hdr.addr.v4, 4); + memcpy(&((struct sockaddr_in *)ss)->sin_port, pkt->hdr.addr.port, 2); + } +} + static void mud_packet_recv(struct mud *mud, struct mud_path *path, uint64_t now, uint64_t sent, @@ -1181,19 +1195,7 @@ mud_packet_recv(struct mud *mud, struct mud_path *path, memcpy(path->kiss, packet->hdr.kiss, sizeof(path->kiss)); memcpy(mud->remote.kiss, packet->hdr.kiss, sizeof(mud->remote.kiss)); - if (memcmp(packet->hdr.addr.v6, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12)) { - path->r_addr.ss_family = AF_INET6; - memcpy(&((struct sockaddr_in6 *)&path->r_addr)->sin6_addr, - packet->hdr.addr.v6, 16); - memcpy(&((struct sockaddr_in6 *)&path->r_addr)->sin6_port, - packet->hdr.addr.port, 2); - } else { - path->r_addr.ss_family = AF_INET; - memcpy(&((struct sockaddr_in *)&path->r_addr)->sin_addr, - packet->hdr.addr.v4, 4); - memcpy(&((struct sockaddr_in *)&path->r_addr)->sin_port, - packet->hdr.addr.port, 2); - } + mud_ss_from_packet(&path->r_addr, packet); if (!mud->peer.set) mud_kiss_path(mud, mud->remote.kiss);