1 /* 2 * Copyright 2003, 2004, 2004 Porchdog Software. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without modification, 5 * are permitted provided that the following conditions are met: 6 * 7 * 1. Redistributions of source code must retain the above copyright notice, 8 * this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * this list of conditions and the following disclaimer in the documentation 11 * and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 * IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 17 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 18 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 21 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 22 * OF THE POSSIBILITY OF SUCH DAMAGE. 23 * 24 * The views and conclusions contained in the software and documentation are those 25 * of the authors and should not be interpreted as representing official policies, 26 * either expressed or implied, of Porchdog Software. 27 */ 28 29 #include <howl.h> 30 #include <salt/debug.h> 31 #include <stdio.h> 32 33 34 static sw_result HOWL_API 35 query_record_reply( 36 sw_discovery session, 37 sw_discovery_oid oid, 38 sw_discovery_query_record_status status, 39 sw_uint32 interface_index, 40 sw_const_string fullname, 41 sw_uint16 rrtype, 42 sw_uint16 rrclass, 43 sw_uint16 rrdatalen, 44 sw_const_octets rrdata, 45 sw_uint32 ttl, 46 sw_opaque extra) 47 { 48 sw_ipv4_address address; 49 50 fprintf(stderr, "interface index = 0x%x, fullname is %s\n", interface_index, fullname); 51 52 if ((rrtype == 1) && (rrclass == 1)) 53 { 54 sw_ipv4_address address; 55 sw_char name[16]; 56 57 sw_ipv4_address_init_from_saddr(&address, *(sw_saddr*) rrdata); 58 59 fprintf(stderr, "address is %s\n", sw_ipv4_address_name(address, name, sizeof(name))); 60 } 61 62 return SW_OKAY; 63 } 64 65 66 67 #if defined(WIN32) 68 int __cdecl 69 #else 70 int 71 #endif 72 main( 73 int argc, 74 char ** argv) 75 { 76 sw_discovery discovery; 77 sw_discovery_oid oid; 78 sw_result err; 79 80 err = sw_discovery_init(&discovery); 81 sw_check_okay(err, exit); 82 83 if (argc != 4) 84 { 85 fprintf(stderr, "usage: mDNSBrowse <name> <rrtype> <rrclass>\n"); 86 return -1; 87 } 88 89 err = sw_discovery_query_record(discovery, 0, 0, argv[1], atoi(argv[2]), atoi(argv[3]), query_record_reply, NULL, &oid); 90 sw_check_okay(err, exit); 91 92 err = sw_discovery_run(discovery); 93 sw_check_okay(err, exit); 94 95 exit: 96 97 return err; 98 } 99