Lines Matching refs:rqp
99 static void nbns_rq_done(struct nbns_rq *rqp);
100 static int nbns_rq_getrr(struct nbns_rq *rqp, struct nbns_rr *rrp);
101 static int nbns_rq_prepare(struct nbns_rq *rqp);
102 static int nbns_rq(struct nbns_rq *rqp);
182 struct nbns_rq *rqp; in nbns_resolvename() local
190 error = nbns_rq_create(NBNS_OPCODE_QUERY, ctx, &rqp); in nbns_resolvename()
202 rqp->nr_nmflags = NBNS_NMFLAG_RD; in nbns_resolvename()
203 rqp->nr_qdname = &nn; in nbns_resolvename()
204 rqp->nr_qdtype = NBNS_QUESTION_TYPE_NB; in nbns_resolvename()
205 rqp->nr_qdclass = NBNS_QUESTION_CLASS_IN; in nbns_resolvename()
206 rqp->nr_qdcount = 1; in nbns_resolvename()
207 rqp->nr_maxretry = 5; in nbns_resolvename()
209 error = nbns_rq_prepare(rqp); in nbns_resolvename()
211 nbns_rq_done(rqp); in nbns_resolvename()
216 error = nbns_rq(rqp); in nbns_resolvename()
219 if ((rqp->nr_rpnmflags & NBNS_NMFLAG_AA) == 0) { in nbns_resolvename()
228 error = nbns_rq_getrr(rqp, &rr); in nbns_resolvename()
231 error = nbns_rq_getrr(rqp, &rr); in nbns_resolvename()
234 bcopy(rr.rr_data, &rqp->nr_dest, 4); in nbns_resolvename()
237 if (rqp->nr_rpancount == 0) { in nbns_resolvename()
241 error = nbns_rq_getrr(rqp, &rr); in nbns_resolvename()
256 ctx->nb_lastns = rqp->nr_sender; in nbns_resolvename()
259 nbns_rq_done(rqp); in nbns_resolvename()
270 struct nbns_rq *rqp; in nbns_getnodestatus() local
279 error = nbns_rq_create(NBNS_OPCODE_QUERY, ctx, &rqp); in nbns_getnodestatus()
286 rqp->nr_nmflags = 0; in nbns_getnodestatus()
287 rqp->nr_qdname = &nn; in nbns_getnodestatus()
288 rqp->nr_qdtype = NBNS_QUESTION_TYPE_NBSTAT; in nbns_getnodestatus()
289 rqp->nr_qdclass = NBNS_QUESTION_CLASS_IN; in nbns_getnodestatus()
290 rqp->nr_qdcount = 1; in nbns_getnodestatus()
291 rqp->nr_maxretry = 2; in nbns_getnodestatus()
293 rqp->nr_dest = *targethost; in nbns_getnodestatus()
294 error = nbns_rq_prepare(rqp); in nbns_getnodestatus()
296 nbns_rq_done(rqp); in nbns_getnodestatus()
304 error = nbns_rq(rqp); in nbns_getnodestatus()
307 if (rqp->nr_rpancount == 0) { in nbns_getnodestatus()
311 error = nbns_rq_getrr(rqp, &rr); in nbns_getnodestatus()
360 ctx->nb_lastns = rqp->nr_sender; in nbns_getnodestatus()
363 nbns_rq_done(rqp); in nbns_getnodestatus()
370 struct nbns_rq *rqp; in nbns_rq_create() local
376 rqp = malloc(sizeof (*rqp)); in nbns_rq_create()
377 if (rqp == NULL) in nbns_rq_create()
379 bzero(rqp, sizeof (*rqp)); in nbns_rq_create()
380 error = mb_init_sz(&rqp->nr_rq, NBDG_MAXSIZE); in nbns_rq_create()
382 free(rqp); in nbns_rq_create()
385 rqp->nr_opcode = opcode; in nbns_rq_create()
386 rqp->nr_nbd = ctx; in nbns_rq_create()
387 rqp->nr_trnid = trnid++; in nbns_rq_create()
388 *rqpp = rqp; in nbns_rq_create()
393 nbns_rq_done(struct nbns_rq *rqp) in nbns_rq_done() argument
395 if (rqp == NULL) in nbns_rq_done()
397 if (rqp->nr_fd >= 0) in nbns_rq_done()
398 close(rqp->nr_fd); in nbns_rq_done()
399 mb_done(&rqp->nr_rq); in nbns_rq_done()
400 mb_done(&rqp->nr_rp); in nbns_rq_done()
401 if (rqp->nr_if) in nbns_rq_done()
402 free(rqp->nr_if); in nbns_rq_done()
403 free(rqp); in nbns_rq_done()
411 nbns_rq_getrr(struct nbns_rq *rqp, struct nbns_rr *rrp) in nbns_rq_getrr() argument
413 struct mbdata *mbp = &rqp->nr_rp; in nbns_rq_getrr()
436 nbns_rq_prepare(struct nbns_rq *rqp) in nbns_rq_prepare() argument
438 struct nb_ctx *ctx = rqp->nr_nbd; in nbns_rq_prepare()
439 struct mbdata *mbp = &rqp->nr_rq; in nbns_rq_prepare()
443 error = mb_init_sz(&rqp->nr_rp, NBDG_MAXSIZE); in nbns_rq_prepare()
451 mb_put_uint16be(mbp, rqp->nr_trnid); in nbns_rq_prepare()
452 ofr = ((rqp->nr_opcode & 0x1F) << 11) | in nbns_rq_prepare()
453 ((rqp->nr_nmflags & 0x7F) << 4); /* rcode=0 */ in nbns_rq_prepare()
455 mb_put_uint16be(mbp, rqp->nr_qdcount); in nbns_rq_prepare()
456 mb_put_uint16be(mbp, rqp->nr_ancount); in nbns_rq_prepare()
457 mb_put_uint16be(mbp, rqp->nr_nscount); in nbns_rq_prepare()
458 error = mb_put_uint16be(mbp, rqp->nr_arcount); in nbns_rq_prepare()
459 if (rqp->nr_qdcount) { in nbns_rq_prepare()
460 if (rqp->nr_qdcount > 1) in nbns_rq_prepare()
462 (void) nb_name_encode(mbp, rqp->nr_qdname); in nbns_rq_prepare()
463 mb_put_uint16be(mbp, rqp->nr_qdtype); in nbns_rq_prepare()
464 error = mb_put_uint16be(mbp, rqp->nr_qdclass); in nbns_rq_prepare()
477 nbns_rq_recv(struct nbns_rq *rqp) in nbns_rq_recv() argument
479 struct mbdata *mbp = &rqp->nr_rp; in nbns_rq_recv()
484 int s = rqp->nr_fd; in nbns_rq_recv()
492 tv.tv_sec = rqp->nr_nbd->nb_timo; in nbns_rq_recv()
508 rqp->nr_sender = sender; in nbns_rq_recv()
513 nbns_rq_opensocket(struct nbns_rq *rqp) in nbns_rq_opensocket() argument
517 struct nb_ctx *ctx = rqp->nr_nbd; in nbns_rq_opensocket()
519 s = rqp->nr_fd = socket(AF_INET, SOCK_DGRAM, 0); in nbns_rq_opensocket()
539 nbns_rq_send(struct nbns_rq *rqp, in_addr_t ina) in nbns_rq_send() argument
542 struct mbdata *mbp = &rqp->nr_rq; in nbns_rq_send()
543 int s = rqp->nr_fd; in nbns_rq_send()
556 nmflags = rqp->nr_nmflags | NBNS_NMFLAG_BCAST; in nbns_rq_send()
559 ofr = ((rqp->nr_opcode & 0x1F) << 11) | in nbns_rq_send()
581 nbns_rq(struct nbns_rq *rqp) in nbns_rq() argument
583 struct nb_ctx *ctx = rqp->nr_nbd; in nbns_rq()
584 struct mbdata *mbp = &rqp->nr_rq; in nbns_rq()
588 error = nbns_rq_opensocket(rqp); in nbns_rq()
592 maxretry = rqp->nr_maxretry; in nbns_rq()
599 if (rqp->nr_dest.s_addr) { in nbns_rq()
600 error = nbns_rq_send(rqp, rqp->nr_dest.s_addr); in nbns_rq()
604 0, error, inet_ntoa(rqp->nr_dest)); in nbns_rq()
610 error = nbns_rq_send(rqp, ctx->nb_wins1); in nbns_rq()
619 error = nbns_rq_send(rqp, ctx->nb_wins2); in nbns_rq()
634 error = nbns_rq_send(rqp, INADDR_BROADCAST); in nbns_rq()
646 error = nbns_rq_recv(rqp); in nbns_rq()
656 mbp = &rqp->nr_rp; in nbns_rq()
660 if (rpid != rqp->nr_trnid) in nbns_rq()
668 rqp->nr_rpnmflags = (ofr >> 4) & 0x7F; in nbns_rq()
669 rqp->nr_rprcode = ofr & 0xf; in nbns_rq()
670 if (rqp->nr_rprcode) in nbns_rq()
671 return (NBERROR(rqp->nr_rprcode)); in nbns_rq()
673 md_get_uint16be(mbp, &rqp->nr_rpancount); in nbns_rq()
674 md_get_uint16be(mbp, &rqp->nr_rpnscount); in nbns_rq()
675 md_get_uint16be(mbp, &rqp->nr_rparcount); in nbns_rq()