Home | History | Annotate | Download | only in samples
      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