Lines Matching defs:ddp
73 u_long ddp_sendspace = DDP_MAXSZ; /* Max ddp size + 1 (ddp_type) */
82 at_sockaddr(struct ddpcb *ddp, struct sockaddr_at *addr)
85 *addr = ddp->ddp_lsat;
89 at_pcbsetaddr(struct ddpcb *ddp, struct sockaddr_at *sat)
95 if (ddp->ddp_lsat.sat_port != ATADDR_ANYPORT) { /* shouldn't be bound */
146 ddp->ddp_lsat = *sat;
160 ddp->ddp_lsat.sat_port = sat->sat_port;
161 ddp_ports[sat->sat_port - 1] = ddp;
174 ddp->ddp_pnext = ddp_ports[sat->sat_port - 1];
175 ddp_ports[sat->sat_port - 1] = ddp;
176 if (ddp->ddp_pnext)
177 ddp->ddp_pnext->ddp_pprev = ddp;
184 at_pcbconnect(struct ddpcb *ddp, struct sockaddr_at *sat)
205 if (ddp->ddp_lsat.sat_port == ATADDR_ANYPORT) {
208 hintnet = ddp->ddp_lsat.sat_addr.s_net;
210 ro = &ddp->ddp_route;
269 ddp->ddp_fsat = *sat;
270 if (ddp->ddp_lsat.sat_port == ATADDR_ANYPORT)
271 return at_pcbsetaddr(ddp, NULL);
276 at_pcbdisconnect(struct ddpcb *ddp)
278 ddp->ddp_fsat.sat_addr.s_net = ATADDR_ANYNET;
279 ddp->ddp_fsat.sat_addr.s_node = ATADDR_ANYNODE;
280 ddp->ddp_fsat.sat_port = ATADDR_ANYPORT;
286 struct ddpcb *ddp;
300 ddp = kmem_zalloc(sizeof(*ddp), KM_SLEEP);
301 ddp->ddp_lsat.sat_port = ATADDR_ANYPORT;
303 ddp->ddp_next = ddpcb;
304 ddp->ddp_prev = NULL;
305 ddp->ddp_pprev = NULL;
306 ddp->ddp_pnext = NULL;
308 ddpcb->ddp_prev = ddp;
310 ddpcb = ddp;
312 ddp->ddp_socket = so;
313 so->so_pcb = ddp;
320 struct ddpcb *ddp = sotoddpcb(so);
328 /* remove ddp from ddp_ports list */
329 if (ddp->ddp_lsat.sat_port != ATADDR_ANYPORT &&
330 ddp_ports[ddp->ddp_lsat.sat_port - 1] != NULL) {
331 if (ddp->ddp_pprev != NULL) {
332 ddp->ddp_pprev->ddp_pnext = ddp->ddp_pnext;
334 ddp_ports[ddp->ddp_lsat.sat_port - 1] = ddp->ddp_pnext;
336 if (ddp->ddp_pnext != NULL) {
337 ddp->ddp_pnext->ddp_pprev = ddp->ddp_pprev;
340 rtcache_free(&ddp->ddp_route);
341 if (ddp->ddp_prev) {
342 ddp->ddp_prev->ddp_next = ddp->ddp_next;
344 ddpcb = ddp->ddp_next;
346 if (ddp->ddp_next) {
347 ddp->ddp_next->ddp_prev = ddp->ddp_prev;
349 kmem_free(ddp, sizeof(*ddp));
380 struct ddpcb *ddp = sotoddpcb(so);
384 KASSERT(ddp != NULL);
387 if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
389 error = at_pcbconnect(ddp, (struct sockaddr_at *)nam);
407 struct ddpcb *ddp = sotoddpcb(so);
410 KASSERT(ddp != NULL);
412 if (ddp->ddp_fsat.sat_addr.s_node == ATADDR_ANYNODE)
415 at_pcbdisconnect(ddp);
493 struct ddpcb *ddp = sotoddpcb(so);
498 KASSERT(ddp != NULL);
501 if (ddp->ddp_fsat.sat_port != ATADDR_ANYPORT)
504 error = at_pcbconnect(ddp, (struct sockaddr_at *)nam);
510 if (ddp->ddp_fsat.sat_port == ATADDR_ANYPORT)
514 error = ddp_output(m, ddp);
517 at_pcbdisconnect(ddp);
558 struct ddpcb *ddp;
570 for (ddp = ddp_ports[to->sat_port - 1]; ddp; ddp = ddp->ddp_pnext) {
574 if (to->sat_addr.s_net == ddp->ddp_lsat.sat_addr.s_net &&
575 to->sat_addr.s_node == ddp->ddp_lsat.sat_addr.s_node) {
581 to->sat_addr.s_net == ddp->ddp_lsat.sat_addr.s_net) &&
582 ddp->ddp_lsat.sat_addr.s_net == AA_SAT(aa)->sat_addr.s_net) {
588 ntohs(ddp->ddp_lsat.sat_addr.s_net) >=
590 ntohs(ddp->ddp_lsat.sat_addr.s_net) <=
595 return (ddp);
599 * Initialize all the ddp & appletalk stuff
620 PR_WRAP_USRREQS(ddp)
671 * Sysctl for DDP variables.
673 SYSCTL_SETUP(sysctl_net_atalk_ddp_setup, "sysctl net.atalk.ddp subtree setup")
683 CTLTYPE_NODE, "ddp",
684 SYSCTL_DESCR("DDP related settings"),
691 SYSCTL_DESCR("DDP statistics"),