• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/mdnsd/dns.h

  1 /*
  2  * Copyright (C) 2014 John Crispin <blogic@openwrt.org>
  3  *
  4  * This program is free software; you can redistribute it and/or modify
  5  * it under the terms of the GNU Lesser General Public License version 2.1
  6  * as published by the Free Software Foundation
  7  *
  8  * This program is distributed in the hope that it will be useful,
  9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 11  * GNU General Public License for more details.
 12  */
 13 
 14 #ifndef _DNS_H__
 15 #define _DNS_H__
 16 
 17 #include <stdint.h>
 18 #include <arpa/inet.h>
 19 
 20 #define FLAG_RESPONSE           0x8000
 21 #define FLAG_AUTHORATIVE        0x0400
 22 
 23 #define TYPE_A                  0x0001
 24 #define TYPE_PTR                0x000C
 25 #define TYPE_TXT                0x0010
 26 #define TYPE_AAAA               0x001c
 27 #define TYPE_SRV                0x0021
 28 #define TYPE_ANY                0x00ff
 29 
 30 #define IS_COMPRESSED(x)        ((x & 0xc0) == 0xc0)
 31 
 32 #define MCAST_ADDR              "224.0.0.251"
 33 #define MCAST_ADDR6             "ff02::fb"
 34 #define MCAST_PORT              5353
 35 
 36 #define CLASS_FLUSH             0x8000
 37 #define CLASS_UNICAST           0x8000
 38 #define CLASS_IN                0x0001
 39 
 40 #define MAX_NAME_LEN            8096
 41 #define MAX_DATA_LEN            8096
 42 
 43 #define C_DNS_SD                "_services._dns-sd._udp.local"
 44 
 45 struct dns_header {
 46         uint16_t id;
 47         uint16_t flags;
 48         uint16_t questions;
 49         uint16_t answers;
 50         uint16_t authority;
 51         uint16_t additional;
 52 } __attribute__((packed));
 53 
 54 struct dns_srv_data {
 55         uint16_t priority;
 56         uint16_t weight;
 57         uint16_t port;
 58 } __attribute__((packed));
 59 
 60 struct dns_answer {
 61         uint16_t type;
 62         uint16_t class;
 63         uint32_t ttl;
 64         uint16_t rdlength;
 65 } __attribute__((packed));
 66 
 67 struct dns_question {
 68         uint16_t type;
 69         uint16_t class;
 70 } __attribute__((packed));
 71 
 72 struct interface;
 73 extern int cfg_proto;
 74 extern int cfg_no_subnet;
 75 
 76 void dns_send_question(struct interface *iface, struct sockaddr *to,
 77                        const char *question, int type, int multicast);
 78 void dns_init_answer(void);
 79 void dns_add_answer(int type, const uint8_t *rdata, uint16_t rdlength, int ttl);
 80 void dns_send_answer(struct interface *iface, struct sockaddr *to, const char *answer);
 81 void dns_reply_a(struct interface *iface, struct sockaddr *to, int ttl, const char *hostname);
 82 void dns_reply_a_additional(struct interface *iface, struct sockaddr *to, int ttl);
 83 const char* dns_type_string(uint16_t type);
 84 void dns_handle_packet(struct interface *iface, struct sockaddr *s, uint16_t port, uint8_t *buf, int len);
 85 
 86 #endif
 87 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt