Hello,
Thanks for working on it :)
Thomas Huth, on Tue 16 Feb 2016 09:47:38 +0100, wrote:
> -static int tftp_session_allocate(Slirp *slirp, struct tftp_t *tp)
> +static int tftp_session_allocate(struct sockaddr_storage *srcsas, Slirp
> *slirp,
> + struct tftp_t *tp)
slirp is usually the first parameter, it'd probably be better to keep
this habit.
> -static int tftp_session_find(Slirp *slirp, struct tftp_t *tp)
> +static int tftp_session_find(struct sockaddr_storage *srcsas, Slirp *slirp,
> + struct tftp_t *tp)
ditto.
> +static void tftp_udp_output(struct tftp_session *spt, struct mbuf *m,
> + struct tftp_t *recv_tp)
> +{
> + if (spt->client_addr.ss_family == AF_INET6) {
> + struct sockaddr_in6 sa6, da6;
> +
> + memcpy(&sa6.sin6_addr, spt->slirp->vhost_addr6.s6_addr, 16);
Why not simply sa6.sin6_addr = spt->slirp->vhost_addr6?
The compiler will optimize the structure assignment as an inline copy or
memcpy call as appropriate.
> + sa6.sin6_port = recv_tp->udp.uh_dport;
> + memcpy(&da6.sin6_addr,
> + &((struct sockaddr_in6 *)&spt->client_addr)->sin6_addr, 16);
ditto.
Otherwise the patch looks particularly good :)
Samuel