l->rx.owner = l;
l->rx.iocb = proto->default_iocb;
l->rx.fd = fd;
+
memcpy(&l->rx.addr, ss, sizeof(*ss));
+ if (proto->fam.set_port)
+ proto->fam.set_port(&l->rx.addr, port);
+
MT_LIST_INIT(&l->wait_queue);
listener_set_state(l, LI_INIT);
return;
listener_set_state(listener, LI_ASSIGNED);
listener->rx.proto = &proto_tcpv4;
- ((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
LIST_ADDQ(&proto_tcpv4.receivers, &listener->rx.proto_list);
proto_tcpv4.nb_receivers++;
}
return;
listener_set_state(listener, LI_ASSIGNED);
listener->rx.proto = &proto_tcpv6;
- ((struct sockaddr_in6 *)(&listener->rx.addr))->sin6_port = htons(port);
LIST_ADDQ(&proto_tcpv6.receivers, &listener->rx.proto_list);
proto_tcpv6.nb_receivers++;
}
return;
listener_set_state(listener, LI_ASSIGNED);
listener->rx.proto = &proto_udp4;
- ((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
LIST_ADDQ(&proto_udp4.receivers, &listener->rx.proto_list);
proto_udp4.nb_receivers++;
}
return;
listener_set_state(listener, LI_ASSIGNED);
listener->rx.proto = &proto_udp6;
- ((struct sockaddr_in6 *)(&listener->rx.addr))->sin6_port = htons(port);
LIST_ADDQ(&proto_udp6.receivers, &listener->rx.proto_list);
proto_udp6.nb_receivers++;
}