Lines Matching full:packet
2 * packet.c
4 * dns packet implementation
41 ldns_pkt_id(const ldns_pkt *packet) in ldns_pkt_id() argument
43 return packet->_header->_id; in ldns_pkt_id()
47 ldns_pkt_qr(const ldns_pkt *packet) in ldns_pkt_qr() argument
49 return packet->_header->_qr; in ldns_pkt_qr()
53 ldns_pkt_aa(const ldns_pkt *packet) in ldns_pkt_aa() argument
55 return packet->_header->_aa; in ldns_pkt_aa()
59 ldns_pkt_tc(const ldns_pkt *packet) in ldns_pkt_tc() argument
61 return packet->_header->_tc; in ldns_pkt_tc()
65 ldns_pkt_rd(const ldns_pkt *packet) in ldns_pkt_rd() argument
67 return packet->_header->_rd; in ldns_pkt_rd()
71 ldns_pkt_cd(const ldns_pkt *packet) in ldns_pkt_cd() argument
73 return packet->_header->_cd; in ldns_pkt_cd()
77 ldns_pkt_ra(const ldns_pkt *packet) in ldns_pkt_ra() argument
79 return packet->_header->_ra; in ldns_pkt_ra()
83 ldns_pkt_ad(const ldns_pkt *packet) in ldns_pkt_ad() argument
85 return packet->_header->_ad; in ldns_pkt_ad()
89 ldns_pkt_get_opcode(const ldns_pkt *packet) in ldns_pkt_get_opcode() argument
91 return packet->_header->_opcode; in ldns_pkt_get_opcode()
95 ldns_pkt_get_rcode(const ldns_pkt *packet) in ldns_pkt_get_rcode() argument
97 return packet->_header->_rcode; in ldns_pkt_get_rcode()
101 ldns_pkt_qdcount(const ldns_pkt *packet) in ldns_pkt_qdcount() argument
103 return packet->_header->_qdcount; in ldns_pkt_qdcount()
107 ldns_pkt_ancount(const ldns_pkt *packet) in ldns_pkt_ancount() argument
109 return packet->_header->_ancount; in ldns_pkt_ancount()
113 ldns_pkt_nscount(const ldns_pkt *packet) in ldns_pkt_nscount() argument
115 return packet->_header->_nscount; in ldns_pkt_nscount()
119 ldns_pkt_arcount(const ldns_pkt *packet) in ldns_pkt_arcount() argument
121 return packet->_header->_arcount; in ldns_pkt_arcount()
125 ldns_pkt_question(const ldns_pkt *packet) in ldns_pkt_question() argument
127 return packet->_question; in ldns_pkt_question()
131 ldns_pkt_answer(const ldns_pkt *packet) in ldns_pkt_answer() argument
133 return packet->_answer; in ldns_pkt_answer()
137 ldns_pkt_authority(const ldns_pkt *packet) in ldns_pkt_authority() argument
139 return packet->_authority; in ldns_pkt_authority()
143 ldns_pkt_additional(const ldns_pkt *packet) in ldns_pkt_additional() argument
145 return packet->_additional; in ldns_pkt_additional()
150 ldns_pkt_all(const ldns_pkt *packet) in ldns_pkt_all() argument
155 ldns_pkt_question(packet), in ldns_pkt_all()
156 ldns_pkt_answer(packet)); in ldns_pkt_all()
159 ldns_pkt_authority(packet)); in ldns_pkt_all()
163 ldns_pkt_additional(packet)); in ldns_pkt_all()
169 ldns_pkt_all_noquestion(const ldns_pkt *packet) in ldns_pkt_all_noquestion() argument
174 ldns_pkt_answer(packet), in ldns_pkt_all_noquestion()
175 ldns_pkt_authority(packet)); in ldns_pkt_all_noquestion()
177 ldns_pkt_additional(packet)); in ldns_pkt_all_noquestion()
184 ldns_pkt_size(const ldns_pkt *packet) in ldns_pkt_size() argument
186 return packet->_size; in ldns_pkt_size()
190 ldns_pkt_querytime(const ldns_pkt *packet) in ldns_pkt_querytime() argument
192 return packet->_querytime; in ldns_pkt_querytime()
196 ldns_pkt_answerfrom(const ldns_pkt *packet) in ldns_pkt_answerfrom() argument
198 return packet->_answerfrom; in ldns_pkt_answerfrom()
202 ldns_pkt_timestamp(const ldns_pkt *packet) in ldns_pkt_timestamp() argument
204 return packet->timestamp; in ldns_pkt_timestamp()
208 ldns_pkt_edns_udp_size(const ldns_pkt *packet) in ldns_pkt_edns_udp_size() argument
210 return packet->_edns_udp_size; in ldns_pkt_edns_udp_size()
214 ldns_pkt_edns_extended_rcode(const ldns_pkt *packet) in ldns_pkt_edns_extended_rcode() argument
216 return packet->_edns_extended_rcode; in ldns_pkt_edns_extended_rcode()
220 ldns_pkt_edns_version(const ldns_pkt *packet) in ldns_pkt_edns_version() argument
222 return packet->_edns_version; in ldns_pkt_edns_version()
226 ldns_pkt_edns_z(const ldns_pkt *packet) in ldns_pkt_edns_z() argument
228 return packet->_edns_z; in ldns_pkt_edns_z()
232 ldns_pkt_edns_do(const ldns_pkt *packet) in ldns_pkt_edns_do() argument
234 return (packet->_edns_z & LDNS_EDNS_MASK_DO_BIT); in ldns_pkt_edns_do()
238 ldns_pkt_set_edns_do(ldns_pkt *packet, bool value) in ldns_pkt_set_edns_do() argument
241 packet->_edns_z = packet->_edns_z | LDNS_EDNS_MASK_DO_BIT; in ldns_pkt_set_edns_do()
243 packet->_edns_z = packet->_edns_z & ~LDNS_EDNS_MASK_DO_BIT; in ldns_pkt_set_edns_do()
248 ldns_pkt_edns_unassigned(const ldns_pkt *packet) in ldns_pkt_edns_unassigned() argument
250 return (packet->_edns_z & LDNS_EDNS_MASK_UNASSIGNED); in ldns_pkt_edns_unassigned()
254 ldns_pkt_set_edns_unassigned(ldns_pkt *packet, uint16_t value) in ldns_pkt_set_edns_unassigned() argument
256 packet->_edns_z = (packet->_edns_z & ~LDNS_EDNS_MASK_UNASSIGNED) in ldns_pkt_set_edns_unassigned()
261 ldns_pkt_edns_data(const ldns_pkt *packet) in ldns_pkt_edns_data() argument
263 return packet->_edns_data; in ldns_pkt_edns_data()
268 ldns_pkt_rr_list_by_name(const ldns_pkt *packet, in ldns_pkt_rr_list_by_name() argument
276 if (!packet) { in ldns_pkt_rr_list_by_name()
280 rrs = ldns_pkt_get_section_clone(packet, sec); in ldns_pkt_rr_list_by_name()
305 ldns_pkt_rr_list_by_type(const ldns_pkt *packet, in ldns_pkt_rr_list_by_type() argument
313 if(!packet) { in ldns_pkt_rr_list_by_type()
317 rrs = ldns_pkt_get_section_clone(packet, sec); in ldns_pkt_rr_list_by_type()
341 ldns_pkt_rr_list_by_name_and_type(const ldns_pkt *packet, in ldns_pkt_rr_list_by_name_and_type() argument
351 if(!packet) { in ldns_pkt_rr_list_by_name_and_type()
355 rrs = ldns_pkt_get_section_clone(packet, sec); in ldns_pkt_rr_list_by_name_and_type()
405 ldns_pkt_section_count(const ldns_pkt *packet, ldns_pkt_section s) in ldns_pkt_section_count() argument
409 return ldns_pkt_qdcount(packet); in ldns_pkt_section_count()
411 return ldns_pkt_ancount(packet); in ldns_pkt_section_count()
413 return ldns_pkt_nscount(packet); in ldns_pkt_section_count()
415 return ldns_pkt_arcount(packet); in ldns_pkt_section_count()
417 return ldns_pkt_qdcount(packet) + in ldns_pkt_section_count()
418 ldns_pkt_ancount(packet) + in ldns_pkt_section_count()
419 ldns_pkt_nscount(packet) + in ldns_pkt_section_count()
420 ldns_pkt_arcount(packet); in ldns_pkt_section_count()
422 return ldns_pkt_ancount(packet) + in ldns_pkt_section_count()
423 ldns_pkt_nscount(packet) + in ldns_pkt_section_count()
424 ldns_pkt_arcount(packet); in ldns_pkt_section_count()
445 ldns_pkt_get_section_clone(const ldns_pkt *packet, ldns_pkt_section s) in ldns_pkt_get_section_clone() argument
449 return ldns_rr_list_clone(ldns_pkt_question(packet)); in ldns_pkt_get_section_clone()
451 return ldns_rr_list_clone(ldns_pkt_answer(packet)); in ldns_pkt_get_section_clone()
453 return ldns_rr_list_clone(ldns_pkt_authority(packet)); in ldns_pkt_get_section_clone()
455 return ldns_rr_list_clone(ldns_pkt_additional(packet)); in ldns_pkt_get_section_clone()
458 return ldns_pkt_all(packet); in ldns_pkt_get_section_clone()
460 return ldns_pkt_all_noquestion(packet); in ldns_pkt_get_section_clone()
472 ldns_pkt_set_id(ldns_pkt *packet, uint16_t id) in ldns_pkt_set_id() argument
474 packet->_header->_id = id; in ldns_pkt_set_id()
478 ldns_pkt_set_random_id(ldns_pkt *packet) in ldns_pkt_set_random_id() argument
481 ldns_pkt_set_id(packet, rid); in ldns_pkt_set_random_id()
486 ldns_pkt_set_qr(ldns_pkt *packet, bool qr) in ldns_pkt_set_qr() argument
488 packet->_header->_qr = qr; in ldns_pkt_set_qr()
492 ldns_pkt_set_aa(ldns_pkt *packet, bool aa) in ldns_pkt_set_aa() argument
494 packet->_header->_aa = aa; in ldns_pkt_set_aa()
498 ldns_pkt_set_tc(ldns_pkt *packet, bool tc) in ldns_pkt_set_tc() argument
500 packet->_header->_tc = tc; in ldns_pkt_set_tc()
504 ldns_pkt_set_rd(ldns_pkt *packet, bool rd) in ldns_pkt_set_rd() argument
506 packet->_header->_rd = rd; in ldns_pkt_set_rd()
534 ldns_pkt_set_cd(ldns_pkt *packet, bool cd) in ldns_pkt_set_cd() argument
536 packet->_header->_cd = cd; in ldns_pkt_set_cd()
540 ldns_pkt_set_ra(ldns_pkt *packet, bool ra) in ldns_pkt_set_ra() argument
542 packet->_header->_ra = ra; in ldns_pkt_set_ra()
546 ldns_pkt_set_ad(ldns_pkt *packet, bool ad) in ldns_pkt_set_ad() argument
548 packet->_header->_ad = ad; in ldns_pkt_set_ad()
552 ldns_pkt_set_opcode(ldns_pkt *packet, ldns_pkt_opcode opcode) in ldns_pkt_set_opcode() argument
554 packet->_header->_opcode = opcode; in ldns_pkt_set_opcode()
558 ldns_pkt_set_rcode(ldns_pkt *packet, uint8_t rcode) in ldns_pkt_set_rcode() argument
560 packet->_header->_rcode = rcode; in ldns_pkt_set_rcode()
564 ldns_pkt_set_qdcount(ldns_pkt *packet, uint16_t qdcount) in ldns_pkt_set_qdcount() argument
566 packet->_header->_qdcount = qdcount; in ldns_pkt_set_qdcount()
570 ldns_pkt_set_ancount(ldns_pkt *packet, uint16_t ancount) in ldns_pkt_set_ancount() argument
572 packet->_header->_ancount = ancount; in ldns_pkt_set_ancount()
576 ldns_pkt_set_nscount(ldns_pkt *packet, uint16_t nscount) in ldns_pkt_set_nscount() argument
578 packet->_header->_nscount = nscount; in ldns_pkt_set_nscount()
582 ldns_pkt_set_arcount(ldns_pkt *packet, uint16_t arcount) in ldns_pkt_set_arcount() argument
584 packet->_header->_arcount = arcount; in ldns_pkt_set_arcount()
588 ldns_pkt_set_querytime(ldns_pkt *packet, uint32_t time) in ldns_pkt_set_querytime() argument
590 packet->_querytime = time; in ldns_pkt_set_querytime()
594 ldns_pkt_set_answerfrom(ldns_pkt *packet, ldns_rdf *answerfrom) in ldns_pkt_set_answerfrom() argument
596 packet->_answerfrom = answerfrom; in ldns_pkt_set_answerfrom()
600 ldns_pkt_set_timestamp(ldns_pkt *packet, struct timeval timeval) in ldns_pkt_set_timestamp() argument
602 packet->timestamp.tv_sec = timeval.tv_sec; in ldns_pkt_set_timestamp()
603 packet->timestamp.tv_usec = timeval.tv_usec; in ldns_pkt_set_timestamp()
607 ldns_pkt_set_size(ldns_pkt *packet, size_t s) in ldns_pkt_set_size() argument
609 packet->_size = s; in ldns_pkt_set_size()
613 ldns_pkt_set_edns_udp_size(ldns_pkt *packet, uint16_t s) in ldns_pkt_set_edns_udp_size() argument
615 packet->_edns_udp_size = s; in ldns_pkt_set_edns_udp_size()
619 ldns_pkt_set_edns_extended_rcode(ldns_pkt *packet, uint8_t c) in ldns_pkt_set_edns_extended_rcode() argument
621 packet->_edns_extended_rcode = c; in ldns_pkt_set_edns_extended_rcode()
625 ldns_pkt_set_edns_version(ldns_pkt *packet, uint8_t v) in ldns_pkt_set_edns_version() argument
627 packet->_edns_version = v; in ldns_pkt_set_edns_version()
631 ldns_pkt_set_edns_z(ldns_pkt *packet, uint16_t z) in ldns_pkt_set_edns_z() argument
633 packet->_edns_z = z; in ldns_pkt_set_edns_z()
637 ldns_pkt_set_edns_data(ldns_pkt *packet, ldns_rdf *data) in ldns_pkt_set_edns_data() argument
639 packet->_edns_data = data; in ldns_pkt_set_edns_data()
643 ldns_pkt_set_edns_option_list(ldns_pkt *packet, ldns_edns_option_list *list) in ldns_pkt_set_edns_option_list() argument
645 if (packet->_edns_list) in ldns_pkt_set_edns_option_list()
646 ldns_edns_option_list_deep_free(packet->_edns_list); in ldns_pkt_set_edns_option_list()
647 packet->_edns_list = list; in ldns_pkt_set_edns_option_list()
652 ldns_pkt_set_section_count(ldns_pkt *packet, ldns_pkt_section s, uint16_t count) in ldns_pkt_set_section_count() argument
656 ldns_pkt_set_qdcount(packet, count); in ldns_pkt_set_section_count()
659 ldns_pkt_set_ancount(packet, count); in ldns_pkt_set_section_count()
662 ldns_pkt_set_nscount(packet, count); in ldns_pkt_set_section_count()
665 ldns_pkt_set_arcount(packet, count); in ldns_pkt_set_section_count()
679 ldns_pkt_push_rr(ldns_pkt *packet, ldns_pkt_section section, ldns_rr *rr) in ldns_pkt_push_rr() argument
683 if (!ldns_rr_list_push_rr(ldns_pkt_question(packet), rr)) { in ldns_pkt_push_rr()
686 ldns_pkt_set_qdcount(packet, ldns_pkt_qdcount(packet) + 1); in ldns_pkt_push_rr()
689 if (!ldns_rr_list_push_rr(ldns_pkt_answer(packet), rr)) { in ldns_pkt_push_rr()
692 ldns_pkt_set_ancount(packet, ldns_pkt_ancount(packet) + 1); in ldns_pkt_push_rr()
695 if (!ldns_rr_list_push_rr(ldns_pkt_authority(packet), rr)) { in ldns_pkt_push_rr()
698 ldns_pkt_set_nscount(packet, ldns_pkt_nscount(packet) + 1); in ldns_pkt_push_rr()
701 if (!ldns_rr_list_push_rr(ldns_pkt_additional(packet), rr)) { in ldns_pkt_push_rr()
704 ldns_pkt_set_arcount(packet, ldns_pkt_arcount(packet) + 1); in ldns_pkt_push_rr()
822 ldns_pkt_edns_get_option_list(ldns_pkt *packet) in ldns_pkt_edns_get_option_list() argument
825 if (packet->_edns_list != NULL) in ldns_pkt_edns_get_option_list()
826 return packet->_edns_list; in ldns_pkt_edns_get_option_list()
829 * packet->_edns_data in ldns_pkt_edns_get_option_list()
831 if (!ldns_pkt_edns_data(packet)) in ldns_pkt_edns_get_option_list()
834 return ( packet->_edns_list in ldns_pkt_edns_get_option_list()
835 = pkt_edns_data2edns_option_list(ldns_pkt_edns_data(packet))); in ldns_pkt_edns_get_option_list()
844 ldns_pkt *packet; in ldns_pkt_new() local
845 packet = LDNS_MALLOC(ldns_pkt); in ldns_pkt_new()
846 if (!packet) { in ldns_pkt_new()
850 packet->_header = LDNS_MALLOC(ldns_hdr); in ldns_pkt_new()
851 if (!packet->_header) { in ldns_pkt_new()
852 LDNS_FREE(packet); in ldns_pkt_new()
856 packet->_question = ldns_rr_list_new(); in ldns_pkt_new()
857 packet->_answer = ldns_rr_list_new(); in ldns_pkt_new()
858 packet->_authority = ldns_rr_list_new(); in ldns_pkt_new()
859 packet->_additional = ldns_rr_list_new(); in ldns_pkt_new()
862 ldns_pkt_set_qr(packet, false); in ldns_pkt_new()
863 ldns_pkt_set_aa(packet, false); in ldns_pkt_new()
864 ldns_pkt_set_tc(packet, false); in ldns_pkt_new()
865 ldns_pkt_set_rd(packet, false); in ldns_pkt_new()
866 ldns_pkt_set_ra(packet, false); in ldns_pkt_new()
867 ldns_pkt_set_ad(packet, false); in ldns_pkt_new()
868 ldns_pkt_set_cd(packet, false); in ldns_pkt_new()
870 ldns_pkt_set_opcode(packet, LDNS_PACKET_QUERY); in ldns_pkt_new()
871 ldns_pkt_set_rcode(packet, 0); in ldns_pkt_new()
872 ldns_pkt_set_id(packet, 0); in ldns_pkt_new()
873 ldns_pkt_set_size(packet, 0); in ldns_pkt_new()
874 ldns_pkt_set_querytime(packet, 0); in ldns_pkt_new()
875 memset(&packet->timestamp, 0, sizeof(packet->timestamp)); in ldns_pkt_new()
876 ldns_pkt_set_answerfrom(packet, NULL); in ldns_pkt_new()
877 ldns_pkt_set_section_count(packet, LDNS_SECTION_QUESTION, 0); in ldns_pkt_new()
878 ldns_pkt_set_section_count(packet, LDNS_SECTION_ANSWER, 0); in ldns_pkt_new()
879 ldns_pkt_set_section_count(packet, LDNS_SECTION_AUTHORITY, 0); in ldns_pkt_new()
880 ldns_pkt_set_section_count(packet, LDNS_SECTION_ADDITIONAL, 0); in ldns_pkt_new()
882 ldns_pkt_set_edns_udp_size(packet, 0); in ldns_pkt_new()
883 ldns_pkt_set_edns_extended_rcode(packet, 0); in ldns_pkt_new()
884 ldns_pkt_set_edns_version(packet, 0); in ldns_pkt_new()
885 ldns_pkt_set_edns_z(packet, 0); in ldns_pkt_new()
886 ldns_pkt_set_edns_data(packet, NULL); in ldns_pkt_new()
887 packet->_edns_list = NULL; in ldns_pkt_new()
888 packet->_edns_present = false; in ldns_pkt_new()
890 ldns_pkt_set_tsig(packet, NULL); in ldns_pkt_new()
892 return packet; in ldns_pkt_new()
896 ldns_pkt_free(ldns_pkt *packet) in ldns_pkt_free() argument
898 if (packet) { in ldns_pkt_free()
899 LDNS_FREE(packet->_header); in ldns_pkt_free()
900 ldns_rr_list_deep_free(packet->_question); in ldns_pkt_free()
901 ldns_rr_list_deep_free(packet->_answer); in ldns_pkt_free()
902 ldns_rr_list_deep_free(packet->_authority); in ldns_pkt_free()
903 ldns_rr_list_deep_free(packet->_additional); in ldns_pkt_free()
904 ldns_rr_free(packet->_tsig_rr); in ldns_pkt_free()
905 ldns_rdf_deep_free(packet->_edns_data); in ldns_pkt_free()
906 ldns_edns_option_list_deep_free(packet->_edns_list); in ldns_pkt_free()
907 ldns_rdf_deep_free(packet->_answerfrom); in ldns_pkt_free()
908 LDNS_FREE(packet); in ldns_pkt_free()
913 ldns_pkt_set_flags(ldns_pkt *packet, uint16_t flags) in ldns_pkt_set_flags() argument
915 if (!packet) { in ldns_pkt_set_flags()
919 ldns_pkt_set_qr(packet, true); in ldns_pkt_set_flags()
922 ldns_pkt_set_aa(packet, true); in ldns_pkt_set_flags()
925 ldns_pkt_set_rd(packet, true); in ldns_pkt_set_flags()
928 ldns_pkt_set_tc(packet, true); in ldns_pkt_set_flags()
931 ldns_pkt_set_cd(packet, true); in ldns_pkt_set_flags()
934 ldns_pkt_set_ra(packet, true); in ldns_pkt_set_flags()
937 ldns_pkt_set_ad(packet, true); in ldns_pkt_set_flags()
1026 ldns_pkt *packet; in ldns_pkt_query_new_frm_str_internal() local
1030 packet = ldns_pkt_new(); in ldns_pkt_query_new_frm_str_internal()
1031 if (!packet) { in ldns_pkt_query_new_frm_str_internal()
1035 if (!ldns_pkt_set_flags(packet, flags)) { in ldns_pkt_query_new_frm_str_internal()
1036 ldns_pkt_free(packet); in ldns_pkt_query_new_frm_str_internal()
1042 ldns_pkt_free(packet); in ldns_pkt_query_new_frm_str_internal()
1059 ldns_pkt_push_rr(packet, LDNS_SECTION_QUESTION, question_rr); in ldns_pkt_query_new_frm_str_internal()
1062 ldns_pkt_free(packet); in ldns_pkt_query_new_frm_str_internal()
1067 ldns_pkt_push_rr(packet, LDNS_SECTION_AUTHORITY, authsoa_rr); in ldns_pkt_query_new_frm_str_internal()
1070 packet->_tsig_rr = NULL; in ldns_pkt_query_new_frm_str_internal()
1071 ldns_pkt_set_answerfrom(packet, NULL); in ldns_pkt_query_new_frm_str_internal()
1073 *p = packet; in ldns_pkt_query_new_frm_str_internal()
1076 ldns_pkt_free(packet); in ldns_pkt_query_new_frm_str_internal()
1109 ldns_pkt *packet; in ldns_pkt_query_new_internal() local
1112 packet = ldns_pkt_new(); in ldns_pkt_query_new_internal()
1113 if (!packet) { in ldns_pkt_query_new_internal()
1117 if (!ldns_pkt_set_flags(packet, flags)) { in ldns_pkt_query_new_internal()
1123 ldns_pkt_free(packet); in ldns_pkt_query_new_internal()
1138 ldns_pkt_push_rr(packet, LDNS_SECTION_QUESTION, question_rr); in ldns_pkt_query_new_internal()
1141 ldns_pkt_push_rr(packet, LDNS_SECTION_AUTHORITY, authsoa_rr); in ldns_pkt_query_new_internal()
1144 packet->_tsig_rr = NULL; in ldns_pkt_query_new_internal()
1145 return packet; in ldns_pkt_query_new_internal()
1208 /* if we cannot determine the packet type, we say it's an in ldns_pkt_reply_type()