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