1/*
2* Copyright (c) Bull S.A.  2007 All Rights Reserved.
3*
4* This program is free software; you can redistribute it and/or modify it
5* under the terms of version 2 of the GNU General Public License as
6* published by the Free Software Foundation.
7*
8* This program is distributed in the hope that it would be useful, but
9* WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11*
12* Further, this software is distributed without any warranty that it is
13* free of the rightful claim of any third person regarding infringement
14* or the like.  Any license provided herein, whether implied or
15* otherwise, applies only to this software file.  Patent licenses, if
16* any, provided herein do not apply to combinations of this program with
17* other software, or any other product whatsoever.
18*
19* You should have received a copy of the GNU General Public License along
20* with this program; if not, write the Free Software Foundation, Inc.,
21* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22*
23* History:
24* Created by: Cyril Lacabanne (Cyril.Lacabanne@bull.net)
25*
26*/
27
28#include <stdlib.h>
29#include <stdio.h>
30#include <rpc/rpc.h>
31#include <netinet/in.h>
32#include <rpc/pmap_clnt.h>
33#include <netdb.h>
34
35//Standard define
36#define PROCNUM 1
37#define VERSNUM 1
38
39int main(int argn, char *argc[])
40{
41	//Program parameters : argc[1] : HostName or Host IP
42	//                                         argc[2] : Server Program Number
43	//                                         other arguments depend on test case
44
45	//run_mode can switch into stand alone program or program launch by shell script
46	//1 : stand alone, debug mode, more screen information
47	//0 : launch by shell script as test case, only one printf -> result status
48	int run_mode = 0;
49	int test_status = 1;	//Default test result set to FAILED
50	int progNum = atoi(argc[2]);
51	u_int getPort;
52	struct hostent *hp = NULL;
53	struct sockaddr_in sin;
54
55	//Initialization
56	if ((hp = gethostbyname(argc[1])) == NULL) {
57		fprintf(stderr, "gethostbyname failed\n");
58		exit(1);
59	}
60	sin.sin_family = AF_INET;
61	sin.sin_addr.s_addr = *(u_int *) hp->h_addr;
62
63	getPort = pmap_getport(&sin, progNum, VERSNUM, IPPROTO_UDP);
64
65	if (run_mode) {
66		printf("Port got. %u\n", getPort);
67		printf("Addr. %u\n", sin.sin_addr.s_addr);
68	}
69
70	test_status = (getPort == 0);
71
72	//This last printf gives the result status to the tests suite
73	//normally should be 0: test has passed or 1: test has failed
74	printf("%d\n", test_status);
75
76	return test_status;
77}
78