Lines Matching refs:in6p

167 udp6_output(in6p, m, addr6, control, p)
168 struct in6pcb *in6p;
194 flowadv = (in6p->inp_socket->so_state & SS_ISCONNECTED) ? 1 : 0;
196 if (flowadv && INP_WAIT_FOR_IF_FEEDBACK(in6p)) {
201 if (in6p->inp_flags & INP_BOUND_IF) {
202 ip6oa.ip6oa_boundif = in6p->inp_boundifp->if_index;
205 if (in6p->inp_flags & INP_NO_IFT_CELLULAR)
215 optp = in6p->in6p_outputopts;
234 if (!IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_faddr)) {
248 if ((in6p->in6p_flags & IN6P_IPV6_V6ONLY)) {
266 if (in6_embedscope(&sin6->sin6_addr, sin6, in6p, NULL,
274 in6p, &in6p->in6p_route, NULL, &storage,
277 laddr = &in6p->in6p_laddr; /* XXX */
283 if (in6p->in6p_lport == 0 &&
284 (error = in6_pcbsetport(laddr, in6p, p, 0)) != 0)
287 if (IN6_IS_ADDR_UNSPECIFIED(&in6p->in6p_faddr)) {
291 if (IN6_IS_ADDR_V4MAPPED(&in6p->in6p_faddr)) {
292 if ((in6p->in6p_flags & IN6P_IPV6_V6ONLY)) {
307 laddr = &in6p->in6p_laddr;
308 faddr = &in6p->in6p_faddr;
309 fport = in6p->in6p_fport;
312 if (in6p->inp_flowhash == 0)
313 in6p->inp_flowhash = inp_calc_flowhash(in6p);
332 udp6->uh_sport = in6p->in6p_lport; /* lport is always set in the PCB */
343 ip6->ip6_flow = in6p->in6p_flowinfo & IPV6_FLOWINFO_MASK;
350 ip6->ip6_hlim = in6_selecthlim(in6p,
351 in6p->in6p_route.ro_rt ?
352 in6p->in6p_route.ro_rt->rt_ifp : NULL);
368 if (ipsec_bypass == 0 && ipsec_setsocket(m, in6p->in6p_socket) != 0) {
373 m->m_pkthdr.socket_id = get_socket_id(in6p->in6p_socket);
375 set_packet_service_class(m, in6p->in6p_socket, msc, PKT_SCF_IPV6);
377 m->m_pkthdr.m_flowhash = in6p->inp_flowhash;
382 im6o = in6p->in6p_moptions;
388 in6p->in6p_last_outifp = im6o->im6o_multicast_ifp;
393 in6p->inp_sndinprog_cnt++;
395 error = ip6_output(m, optp, &in6p->in6p_route,
402 locked_add_64(&in6p->inp_stat->txpackets, 1);
403 locked_add_64(&in6p->inp_stat->txbytes, ulen);
412 inp_set_fc_state(in6p, adv->code);
415 VERIFY(in6p->inp_sndinprog_cnt > 0);
416 if ( --in6p->inp_sndinprog_cnt == 0)
417 in6p->inp_flags &= ~(INP_FC_FEEDBACK);
419 if (in6p->in6p_route.ro_rt != NULL) {
420 struct rtentry *rt = in6p->in6p_route.ro_rt;
424 in6p->in6p_socket == NULL ||
425 !(in6p->in6p_socket->so_state & SS_ISCONNECTED)) {
433 rtfree(in6p->in6p_route.ro_rt);
434 in6p->in6p_route.ro_rt = NULL;
442 (outif = rt->rt_ifp) != in6p->in6p_last_outifp)
443 in6p->in6p_last_outifp = outif;