X-Git-Url: https://git.saurik.com/apple/network_cmds.git/blobdiff_plain/89c4ed635a5aba9241e12e796c7e5025879d0e77..f1dee6ae4f09d06db1e14c8be5091eb1b0d7347b:/mptcp_client/conn_lib.c?ds=sidebyside diff --git a/mptcp_client/conn_lib.c b/mptcp_client/conn_lib.c index f808fc2..1c83915 100644 --- a/mptcp_client/conn_lib.c +++ b/mptcp_client/conn_lib.c @@ -49,38 +49,38 @@ copyassocids(int s, sae_associd_t **aidpp, uint32_t *cnt) struct so_aidreq aidr; sae_associd_t *buf; int err; - + if (aidpp == NULL || cnt == NULL) { errno = EINVAL; return (-1); } *aidpp = NULL; *cnt = 0; - + bzero(&aidr, sizeof (aidr)); - + err = ioctl(s, SIOCGASSOCIDS, &aidr); if (err != 0) return (-1); - + /* none, just return */ if (aidr.sar_cnt == 0) return (0); - + buf = calloc(aidr.sar_cnt, sizeof (sae_associd_t)); if (buf == NULL) return (-1); - + aidr.sar_aidp = buf; err = ioctl(s, SIOCGASSOCIDS, &aidr); if (err != 0) { free(buf); return (-1); } - + *aidpp = buf; *cnt = aidr.sar_cnt; - + return (0); } @@ -96,39 +96,39 @@ copyconnids(int s, sae_associd_t aid, sae_connid_t **cidp, uint32_t *cnt) struct so_cidreq cidr; sae_connid_t *buf; int err; - + if (cidp == NULL || cnt == NULL) { errno = EINVAL; return (-1); } *cidp = NULL; *cnt = 0; - + bzero(&cidr, sizeof (cidr)); - + cidr.scr_aid = aid; err = ioctl(s, SIOCGCONNIDS, &cidr); if (err != 0) return (-1); - + /* none, just return */ if (cidr.scr_cnt == 0) return (0); - + buf = calloc(cidr.scr_cnt, sizeof (sae_connid_t)); if (buf == NULL) return (-1); - + cidr.scr_cidp = buf; err = ioctl(s, SIOCGCONNIDS, &cidr); if (err != 0) { free(buf); return (-1); } - + *cidp = buf; *cnt = cidr.scr_cnt; - + return (0); } @@ -144,19 +144,19 @@ copyconninfo(int s, sae_connid_t cid, conninfo_t **cfop) struct sockaddr *src = NULL, *dst = NULL, *aux = NULL; struct so_cinforeq scir; conninfo_t *buf = NULL; - + if (cfop == NULL) { errno = EINVAL; goto error; } *cfop = NULL; - + bzero(&scir, sizeof (scir)); - + scir.scir_cid = cid; if (ioctl(s, SIOCGCONNINFO, &scir) != 0) goto error; - + if (scir.scir_src_len != 0) { src = calloc(1, scir.scir_src_len); if (src == NULL) @@ -175,14 +175,14 @@ copyconninfo(int s, sae_connid_t cid, conninfo_t **cfop) goto error; scir.scir_aux_data = aux; } - + if (ioctl(s, SIOCGCONNINFO, &scir) != 0) goto error; - + buf = calloc(1, sizeof (*buf)); if (buf == NULL) goto error; - + // When we query for the length using the first ioctl call above, the kernel // tells us the length of the aux structure so we know how much to allocate // memory. There may not be any aux data, which will be indicated by the aux @@ -192,7 +192,7 @@ copyconninfo(int s, sae_connid_t cid, conninfo_t **cfop) aux = NULL; scir.scir_aux_data = NULL; } - + buf->ci_flags = scir.scir_flags; buf->ci_ifindex = scir.scir_ifindex; buf->ci_src = src; @@ -201,9 +201,9 @@ copyconninfo(int s, sae_connid_t cid, conninfo_t **cfop) buf->ci_aux_type = scir.scir_aux_type; buf->ci_aux_data = aux; *cfop = (conninfo_t*)buf; - + return (0); - + error: if (src != NULL) free(src); @@ -213,7 +213,7 @@ error: free(aux); if (buf != NULL) free(buf); - + return (-1); } @@ -222,12 +222,12 @@ freeconninfo(conninfo_t *cfo) { if (cfo->ci_src != NULL) free(cfo->ci_src); - + if (cfo->ci_dst != NULL) free(cfo->ci_dst); - + if (cfo->ci_aux_data != NULL) free(cfo->ci_aux_data); - + free(cfo); }