]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Socket closing has its dedicated function
authorMaria Matejka <mq@ucw.cz>
Thu, 20 Apr 2023 19:06:42 +0000 (21:06 +0200)
committerMaria Matejka <mq@ucw.cz>
Sat, 22 Apr 2023 18:48:42 +0000 (20:48 +0200)
13 files changed:
lib/socket.h
nest/cli.c
proto/babel/packets.c
proto/bfd/bfd.c
proto/bfd/packets.c
proto/bgp/bgp.c
proto/ospf/iface.c
proto/radv/packets.c
proto/rip/packets.c
proto/rip/rip.c
proto/rpki/transport.c
sysdep/bsd/krt-sock.c
sysdep/unix/io.c

index 4b1695818a9eccc212040c5c49d8b20bb9c3b0d0..6225977b91ae68b9f1b13bde818932e521da15d0 100644 (file)
@@ -88,6 +88,7 @@ sock *sock_new(pool *);                       /* Allocate new socket */
 
 int sk_open(sock *, struct birdloop *);                /* Open socket */
 void sk_reloop(sock *, struct birdloop *);     /* Move socket to another loop. Both loops must be locked. */
+static inline void sk_close(sock *s) { rfree(&s->r); } /* Explicitly close socket */
 
 int sk_rx_ready(sock *s);
 _Bool sk_tx_pending(sock *s);
index 1debfccf0e72c93643c5f1af465f9e6c8fe6cc2f..39a3eef757b794a2321029093bb252c8e5ccf6fb 100644 (file)
@@ -417,7 +417,7 @@ cli_free(cli *c)
 
   if (defer)
   {
-    rfree(c->sock);
+    sk_close(c->sock);
     c->sock = NULL;
   }
   else
index d26ee5c6819246fbe462979fad7285a0ea3ea194..47d065cda468c0e1fbbabb7f0b20aa2e3f937b7b 100644 (file)
@@ -1680,7 +1680,7 @@ babel_open_socket(struct babel_iface *ifa)
 
 err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return 0;
 }
 
index c88c1cb27f4265c9ceaff03c0b1528388bf71fc5..ddbc4948484ba29a9057b10a52932de24375a2a1 100644 (file)
@@ -604,10 +604,10 @@ bfd_free_iface(struct bfd_iface *ifa)
     return;
 
   if (ifa->sk)
-    rfree(ifa->sk);
+    sk_close(ifa->sk);
 
   if (ifa->rx)
-    rfree(ifa->rx);
+    sk_close(ifa->rx);
 
   rem_node(&ifa->n);
   mb_free(ifa);
index a22f223bebb16fd3df1db51489647fd8760bc63d..fa8c328f9a79b38a05025fdc78e7c532c0979f17 100644 (file)
@@ -439,7 +439,7 @@ bfd_open_rx_sk(struct bfd_proto *p, int multihop, int af)
 
  err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return NULL;
 }
 
@@ -470,7 +470,7 @@ bfd_open_rx_sk_bound(struct bfd_proto *p, ip_addr local, struct iface *ifa)
 
  err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return NULL;
 }
 
@@ -501,6 +501,6 @@ bfd_open_tx_sk(struct bfd_proto *p, ip_addr local, struct iface *ifa)
 
  err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return NULL;
 }
index cda0eb8dc8307b98408b8aae0cd7436db8389a21..0525d50238972badea28069a7e38b8c159242603 100644 (file)
@@ -294,7 +294,7 @@ bgp_listen_create(void *_ UNUSED)
       {
        sk_log_error(sk, p->p.name);
        log(L_ERR "%s: Cannot open listening socket", p->p.name);
-       rfree(sk);
+       sk_close(sk);
        UNLOCK_DOMAIN(rtable, bgp_listen_domain);
 
        bgp_initiate_disable(p, BEM_NO_SOCKET);
@@ -335,7 +335,7 @@ bgp_listen_create(void *_ UNUSED)
   WALK_LIST_DELSAFE(bs, nxt, bgp_sockets)
     if (EMPTY_LIST(bs->requests))
     {
-      rfree(bs->sk);
+      sk_close(bs->sk);
       rem_node(&bs->n);
       mb_free(bs);
     }
@@ -465,7 +465,7 @@ bgp_close_conn(struct bgp_conn *conn)
   rfree(conn->tx_ev);
   conn->tx_ev = NULL;
 
-  rfree(conn->sk);
+  sk_close(conn->sk);
   conn->sk = NULL;
 
   mb_free(conn->local_caps);
@@ -1336,7 +1336,7 @@ bgp_incoming_connection(sock *sk, uint dummy UNUSED)
   {
     log(L_WARN "BGP: Unexpected connect from unknown address %I%J (port %d)",
        sk->daddr, ipa_is_link_local(sk->daddr) ? sk->iface : NULL, sk->dport);
-    rfree(sk);
+    sk_close(sk);
     return 0;
   }
 
@@ -1370,7 +1370,7 @@ bgp_incoming_connection(sock *sk, uint dummy UNUSED)
 
   if (!acc)
   {
-    rfree(sk);
+    sk_close(sk);
     goto leave;
   }
 
@@ -1410,7 +1410,7 @@ bgp_incoming_connection(sock *sk, uint dummy UNUSED)
 err:
   sk_log_error(sk, p->p.name);
   log(L_ERR "%s: Incoming connection aborted", p->p.name);
-  rfree(sk);
+  sk_close(sk);
 
 leave:
   birdloop_leave(p->p.loop);
index 0aa7fa00338065601ddeb2b25c70fe341e44150d..37f642d1eb798620e1ee52b76d8d7d04713e9f34 100644 (file)
@@ -173,7 +173,7 @@ ospf_sk_open(struct ospf_iface *ifa)
 
  err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return 0;
 }
 
@@ -234,7 +234,7 @@ ospf_open_vlink_sk(struct ospf_proto *p)
  err:
   sk_log_error(sk, p->p.name);
   log(L_ERR "%s: Cannot open virtual link socket", p->p.name);
-  rfree(sk);
+  sk_close(sk);
 }
 
 static void
index c6b565d288d5df69e7ce08e186e5eb2b745f7fbb..d1d8663ff2f53607e0a1cc9ca1c5370848715804 100644 (file)
@@ -511,7 +511,7 @@ radv_sk_open(struct radv_iface *ifa)
 
  err:
   sk_log_error(sk, ifa->ra->p.name);
-  rfree(sk);
+  sk_close(sk);
   return 0;
 }
 
index fecdf896c2dd6c0b7f8ba5240defc59c9ef66f25..70108ac35b6ea32e45ec261f0a86009b1da2429c 100644 (file)
@@ -1040,6 +1040,6 @@ rip_open_socket(struct rip_iface *ifa)
 
 err:
   sk_log_error(sk, p->p.name);
-  rfree(sk);
+  sk_close(sk);
   return 0;
 }
index d15177da1dad346e8b58740d994ab44c20550e66..dded05c713687b724cad52730d2b3b5cbc7b524e 100644 (file)
@@ -750,7 +750,7 @@ rip_remove_iface(struct rip_proto *p, struct rip_iface *ifa)
 
   rem_node(NODE ifa);
 
-  rfree(ifa->sk);
+  sk_close(ifa->sk);
   rfree(ifa->lock);
   rfree(ifa->timer);
 
index 81bd6dd8d3c747a137e26883ae721d2685c0ffd4..8c6dcc11f68128c96548b167ffc6a4dde8debd16 100644 (file)
@@ -120,7 +120,7 @@ rpki_tr_close(struct rpki_tr_sock *tr)
 
   if (tr->sk)
   {
-    rfree(tr->sk);
+    sk_close(tr->sk);
     tr->sk = NULL;
   }
 }
index 094268b75195680b2ae827cbdc8726c2a5a45228..6bf756ffdcf064f56466f693065cc9efbc00a5aa 100644 (file)
@@ -1118,7 +1118,7 @@ krt_sock_close_shared(void)
 
   if (!krt_sock_count)
   {
-    rfree(krt_sock);
+    sk_close(krt_sock);
     krt_sock = NULL;
   }
 }
@@ -1181,7 +1181,7 @@ krt_sys_shutdown(struct krt_proto *p)
 {
   krt_table_cf[(KRT_CF->sys.table_id)/32][!!(p->af == AF_INET6)] &= ~(1 << ((KRT_CF->sys.table_id)%32));
 
-  rfree(p->sys.sk);
+  sk_close(p->sys.sk);
   p->sys.sk = NULL;
 
   krt_buffer_release(&p->p);
index 88d187a4f6cc17934b56ae163fd223995327bf96..40a6f114e01b96b1f825b0fe6480837393435491 100644 (file)
@@ -1081,7 +1081,7 @@ sk_passive_connected(sock *s, int type)
     /* FIXME: handle it better in rfree() */
     close(t->fd);
     t->fd = -1;
-    rfree(t);
+    sk_close(t);
     return 1;
   }