diff --git a/examples/client.cc b/examples/client.cc index f4035b0f0..6221d66d8 100644 --- a/examples/client.cc +++ b/examples/client.cc @@ -1184,8 +1184,7 @@ int Client::change_local_addr() { if (config.nat_rebinding) { ngtcp2_addr addr; ngtcp2_conn_set_local_addr( - conn_, - ngtcp2_addr_init(&addr, &local_addr.su.sa, local_addr.len, nullptr)); + conn_, ngtcp2_addr_init(&addr, &local_addr.su.sa, local_addr.len)); } else { auto path = ngtcp2_path{{local_addr.len, &local_addr.su.sa}, {remote_addr.len, &remote_addr.su.sa}}; diff --git a/examples/h09client.cc b/examples/h09client.cc index 9d2a01e1b..c3ba77139 100644 --- a/examples/h09client.cc +++ b/examples/h09client.cc @@ -1129,8 +1129,7 @@ int Client::change_local_addr() { if (config.nat_rebinding) { ngtcp2_addr addr; ngtcp2_conn_set_local_addr( - conn_, - ngtcp2_addr_init(&addr, &local_addr.su.sa, local_addr.len, nullptr)); + conn_, ngtcp2_addr_init(&addr, &local_addr.su.sa, local_addr.len)); } else { auto path = ngtcp2_path{{local_addr.len, &local_addr.su.sa}, {remote_addr.len, &remote_addr.su.sa}}; diff --git a/examples/h09server.cc b/examples/h09server.cc index ae7992704..c457a05a3 100644 --- a/examples/h09server.cc +++ b/examples/h09server.cc @@ -854,9 +854,9 @@ int Handler::init(const Endpoint &ep, const Address &local_addr, } auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_server_new(&conn_, dcid, &scid_, &path, version, &callbacks, &settings, ¶ms, nullptr, this); @@ -890,9 +890,9 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr, const ngtcp2_pkt_info *pi, uint8_t *data, size_t datalen) { auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data, datalen, util::timestamp(loop_)); @@ -1044,10 +1044,10 @@ int Handler::write_streams() { if (nwrite == 0) { if (bufpos - buf.data()) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data(), max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data(), + max_pktlen_); reset_idle_timer(); } // We are congestion limited. @@ -1062,12 +1062,12 @@ int Handler::write_streams() { prev_ecn = pi.ecn; } else if (!ngtcp2_path_eq(&prev_path.path, &path.path) || prev_ecn != pi.ecn) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data() - nwrite, max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data() - nwrite, + max_pktlen_); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, bufpos - nwrite, nwrite, max_pktlen_); reset_idle_timer(); @@ -1076,7 +1076,7 @@ int Handler::write_streams() { } if (++pktcnt == max_pktcnt || static_cast(nwrite) < max_pktlen_) { - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), max_pktlen_); reset_idle_timer(); @@ -1086,7 +1086,7 @@ int Handler::write_streams() { #else // !NGTCP2_ENABLE_UDP_GSO reset_idle_timer(); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), 0); if (++pktcnt == max_pktcnt) { @@ -1185,10 +1185,9 @@ int Handler::send_conn_close() { auto path = ngtcp2_conn_get_path(conn_); - return server_->send_packet(*static_cast(path->local.user_data), - path->local, path->remote, /* ecn = */ 0, - conn_closebuf_->rpos(), conn_closebuf_->size(), - 0); + return server_->send_packet( + *static_cast(path->user_data), path->local, path->remote, + /* ecn = */ 0, conn_closebuf_->rpos(), conn_closebuf_->size(), 0); } void Handler::schedule_retransmit() { diff --git a/examples/perfserver.cc b/examples/perfserver.cc index 161288756..9de3e2e4f 100644 --- a/examples/perfserver.cc +++ b/examples/perfserver.cc @@ -590,9 +590,9 @@ int Handler::init(const Endpoint &ep, const Address &local_addr, } auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_server_new(&conn_, dcid, &scid_, &path, version, &callbacks, &settings, ¶ms, nullptr, this); @@ -626,9 +626,9 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr, const ngtcp2_pkt_info *pi, uint8_t *data, size_t datalen) { auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data, datalen, util::timestamp(loop_)); @@ -789,10 +789,10 @@ int Handler::write_streams() { if (nwrite == 0) { if (bufpos - buf.data()) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data(), max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data(), + max_pktlen_); reset_idle_timer(); } // We are congestion limited. @@ -807,12 +807,12 @@ int Handler::write_streams() { prev_ecn = pi.ecn; } else if (!ngtcp2_path_eq(&prev_path.path, &path.path) || prev_ecn != pi.ecn) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data() - nwrite, max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data() - nwrite, + max_pktlen_); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, bufpos - nwrite, nwrite, max_pktlen_); reset_idle_timer(); @@ -821,7 +821,7 @@ int Handler::write_streams() { } if (++pktcnt == max_pktcnt || static_cast(nwrite) < max_pktlen_) { - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), max_pktlen_); reset_idle_timer(); @@ -831,7 +831,7 @@ int Handler::write_streams() { #else // !NGTCP2_ENABLE_UDP_GSO reset_idle_timer(); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), 0); if (++pktcnt == max_pktcnt) { @@ -930,10 +930,9 @@ int Handler::send_conn_close() { auto path = ngtcp2_conn_get_path(conn_); - return server_->send_packet(*static_cast(path->local.user_data), - path->local, path->remote, - /* ecn = */ 0, conn_closebuf_->rpos(), - conn_closebuf_->size(), 0); + return server_->send_packet( + *static_cast(path->user_data), path->local, path->remote, + /* ecn = */ 0, conn_closebuf_->rpos(), conn_closebuf_->size(), 0); } void Handler::schedule_retransmit() { diff --git a/examples/server.cc b/examples/server.cc index 5bdafa15e..c9bb9ed3a 100644 --- a/examples/server.cc +++ b/examples/server.cc @@ -1575,9 +1575,9 @@ int Handler::init(const Endpoint &ep, const Address &local_addr, } auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_server_new(&conn_, dcid, &scid_, &path, version, &callbacks, &settings, ¶ms, nullptr, this); @@ -1611,9 +1611,9 @@ int Handler::feed_data(const Endpoint &ep, const Address &local_addr, const ngtcp2_pkt_info *pi, uint8_t *data, size_t datalen) { auto path = - ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa), - const_cast(&ep)}, - {salen, const_cast(sa)}}; + ngtcp2_path{{local_addr.len, const_cast(&local_addr.su.sa)}, + {salen, const_cast(sa)}, + const_cast(&ep)}; if (auto rv = ngtcp2_conn_read_pkt(conn_, &path, pi, data, datalen, util::timestamp(loop_)); @@ -1796,10 +1796,10 @@ int Handler::write_streams() { if (nwrite == 0) { if (bufpos - buf.data()) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data(), max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data(), + max_pktlen_); reset_idle_timer(); } // We are congestion limited. @@ -1814,12 +1814,12 @@ int Handler::write_streams() { prev_ecn = pi.ecn; } else if (!ngtcp2_path_eq(&prev_path.path, &path.path) || prev_ecn != pi.ecn) { - server_->send_packet( - *static_cast(prev_path.path.local.user_data), - prev_path.path.local, prev_path.path.remote, prev_ecn, buf.data(), - bufpos - buf.data() - nwrite, max_pktlen_); + server_->send_packet(*static_cast(prev_path.path.user_data), + prev_path.path.local, prev_path.path.remote, + prev_ecn, buf.data(), bufpos - buf.data() - nwrite, + max_pktlen_); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, bufpos - nwrite, nwrite, max_pktlen_); @@ -1829,7 +1829,7 @@ int Handler::write_streams() { } if (++pktcnt == max_pktcnt || static_cast(nwrite) < max_pktlen_) { - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), max_pktlen_); reset_idle_timer(); @@ -1839,7 +1839,7 @@ int Handler::write_streams() { #else // !NGTCP2_ENABLE_UDP_GSO reset_idle_timer(); - server_->send_packet(*static_cast(path.path.local.user_data), + server_->send_packet(*static_cast(path.path.user_data), path.path.local, path.path.remote, pi.ecn, buf.data(), bufpos - buf.data(), 0); if (++pktcnt == max_pktcnt) { @@ -1938,10 +1938,9 @@ int Handler::send_conn_close() { auto path = ngtcp2_conn_get_path(conn_); - return server_->send_packet(*static_cast(path->local.user_data), - path->local, path->remote, - /* ecn = */ 0, conn_closebuf_->rpos(), - conn_closebuf_->size(), 0); + return server_->send_packet( + *static_cast(path->user_data), path->local, path->remote, + /* ecn = */ 0, conn_closebuf_->rpos(), conn_closebuf_->size(), 0); } void Handler::schedule_retransmit() { diff --git a/lib/includes/ngtcp2/ngtcp2.h b/lib/includes/ngtcp2/ngtcp2.h index 2e0555187..d97cb0ca4 100644 --- a/lib/includes/ngtcp2/ngtcp2.h +++ b/lib/includes/ngtcp2/ngtcp2.h @@ -1864,11 +1864,6 @@ typedef struct ngtcp2_addr { * address. It must not be ``NULL``. */ struct sockaddr *addr; - /** - * :member:`user_data` is an arbitrary data and opaque to the - * library. - */ - void *user_data; } ngtcp2_addr; /** @@ -1886,6 +1881,11 @@ typedef struct ngtcp2_path { * :member:`remote` is the address of remote endpoint. */ ngtcp2_addr remote; + /** + * :member:`user_data` is an arbitrary data and opaque to the + * library. + */ + void *user_data; } ngtcp2_path; /** @@ -4626,7 +4626,7 @@ NGTCP2_EXTERN uint64_t ngtcp2_err_infer_quic_transport_error_code(int liberr); */ NGTCP2_EXTERN ngtcp2_addr *ngtcp2_addr_init(ngtcp2_addr *dest, const struct sockaddr *addr, - size_t addrlen, void *user_data); + size_t addrlen); /** * @function @@ -4637,10 +4637,9 @@ NGTCP2_EXTERN ngtcp2_addr *ngtcp2_addr_init(ngtcp2_addr *dest, NGTCP2_EXTERN void ngtcp2_path_storage_init(ngtcp2_path_storage *ps, const struct sockaddr *local_addr, size_t local_addrlen, - void *local_user_data, const struct sockaddr *remote_addr, size_t remote_addrlen, - void *remote_user_data); + void *user_data); /** * @function diff --git a/lib/ngtcp2_addr.c b/lib/ngtcp2_addr.c index 22af219a9..27197a694 100644 --- a/lib/ngtcp2_addr.c +++ b/lib/ngtcp2_addr.c @@ -40,10 +40,9 @@ #endif ngtcp2_addr *ngtcp2_addr_init(ngtcp2_addr *dest, const struct sockaddr *addr, - size_t addrlen, void *user_data) { + size_t addrlen) { dest->addrlen = addrlen; dest->addr = (struct sockaddr *)addr; - dest->user_data = user_data; return dest; } @@ -52,7 +51,6 @@ void ngtcp2_addr_copy(ngtcp2_addr *dest, const ngtcp2_addr *src) { if (src->addrlen) { memcpy(dest->addr, src->addr, src->addrlen); } - dest->user_data = src->user_data; } void ngtcp2_addr_copy_byte(ngtcp2_addr *dest, const struct sockaddr *addr, diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c index 38fef38e0..54ee5f2c5 100644 --- a/lib/ngtcp2_conn.c +++ b/lib/ngtcp2_conn.c @@ -7049,7 +7049,7 @@ static int conn_select_preferred_addr(ngtcp2_conn *conn) { ngtcp2_pv *pv; ngtcp2_dcid *dcid; - ngtcp2_addr_init(&addr, (struct sockaddr *)&buf, 0, NULL); + ngtcp2_addr_init(&addr, (struct sockaddr *)&buf, 0); if (ngtcp2_ringbuf_len(&conn->dcid.unused) == 0) { return 0; diff --git a/lib/ngtcp2_path.c b/lib/ngtcp2_path.c index 3f35f28ef..7a51e4da5 100644 --- a/lib/ngtcp2_path.c +++ b/lib/ngtcp2_path.c @@ -37,6 +37,7 @@ void ngtcp2_path_init(ngtcp2_path *path, const ngtcp2_addr *local, void ngtcp2_path_copy(ngtcp2_path *dest, const ngtcp2_path *src) { ngtcp2_addr_copy(&dest->local, &src->local); ngtcp2_addr_copy(&dest->remote, &src->remote); + dest->user_data = src->user_data; } int ngtcp2_path_eq(const ngtcp2_path *a, const ngtcp2_path *b) { @@ -46,29 +47,31 @@ int ngtcp2_path_eq(const ngtcp2_path *a, const ngtcp2_path *b) { void ngtcp2_path_storage_init(ngtcp2_path_storage *ps, const struct sockaddr *local_addr, - size_t local_addrlen, void *local_user_data, + size_t local_addrlen, const struct sockaddr *remote_addr, - size_t remote_addrlen, void *remote_user_data) { + size_t remote_addrlen, void *user_data) { ngtcp2_addr_init(&ps->path.local, (const struct sockaddr *)&ps->local_addrbuf, - 0, local_user_data); + 0); ngtcp2_addr_init(&ps->path.remote, - (const struct sockaddr *)&ps->remote_addrbuf, 0, - remote_user_data); + (const struct sockaddr *)&ps->remote_addrbuf, 0); ngtcp2_addr_copy_byte(&ps->path.local, local_addr, local_addrlen); ngtcp2_addr_copy_byte(&ps->path.remote, remote_addr, remote_addrlen); + + ps->path.user_data = user_data; } void ngtcp2_path_storage_init2(ngtcp2_path_storage *ps, const ngtcp2_path *path) { ngtcp2_path_storage_init(ps, path->local.addr, path->local.addrlen, - path->local.user_data, path->remote.addr, - path->remote.addrlen, path->remote.user_data); + path->remote.addr, path->remote.addrlen, + path->user_data); } void ngtcp2_path_storage_zero(ngtcp2_path_storage *ps) { ngtcp2_addr_init(&ps->path.local, (const struct sockaddr *)&ps->local_addrbuf, - 0, NULL); + 0); ngtcp2_addr_init(&ps->path.remote, - (const struct sockaddr *)&ps->remote_addrbuf, 0, NULL); + (const struct sockaddr *)&ps->remote_addrbuf, 0); + ps->path.user_data = NULL; } diff --git a/tests/ngtcp2_test_helper.c b/tests/ngtcp2_test_helper.c index 2fc5402a4..3d67ae138 100644 --- a/tests/ngtcp2_test_helper.c +++ b/tests/ngtcp2_test_helper.c @@ -496,6 +496,6 @@ void path_init(ngtcp2_path_storage *path, uint32_t local_addr, addr_init(&la, local_addr, local_port); addr_init(&ra, remote_addr, remote_port); - ngtcp2_path_storage_init(path, (struct sockaddr *)&la, sizeof(la), NULL, + ngtcp2_path_storage_init(path, (struct sockaddr *)&la, sizeof(la), (struct sockaddr *)&ra, sizeof(ra), NULL); }