×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Hi All

I finally got my getHost SQL function working. Here are the details:



C Source code:

/*********************************/

/* Get host name for passed IP */

/********************************/

#include </netdb.h>

#include <sys/param.h>

#include <netinet/in.h>

#include <stdlib.h>

#include <stdio.h>

#include <sqludf.h>

#include <arpa/inet.h>

#include <sys/socket.h>

#define HEX00 '\x00'

void SQL_API_FN hostname

(char *input,

char *output,

SQLUDF_TRAIL_ARGS_ALL) {

int rc;

struct in_addr internet_address;

struct hostent hst_ent;

struct hostent_data hst_ent_data;

char dotted_decimal_address [16];

char host_name [MAXHOSTNAMELEN];

strcpy(dotted_decimal_address, input);

memset(&hst_ent_data,HEX00,sizeof(struct hostent_data));

internet_address.s_addr=inet_addr(dotted_decimal_address);

if ((rc=gethostbyaddr_r((char *) &internet_address,

sizeof(struct in_addr), AF_INET,

&hst_ent, &hst_ent_data)) == -1) {

strcpy(output,input);

}

else {

(void) memcpy((void *) host_name,

(void *) hst_ent.h_name,

MAXHOSTNAMELEN);

strcpy(output,host_name);

}




Here is the compile command:


CRTCMOD MODULE(QGPL/GPLCM04)

SRCFILE(QGPL/QCSRC)

OUTPUT(*print)

DBGVIEW(*LIST)






Here is the create service program command:


CRTSRVPGM SRVPGM(QGPL/GPLCM04) EXPORT(*ALL)





Here is the CREATE FUNCTION SQL statement:


CREATE FUNCTION qgpl/gethost (


ip varchar(15) )

RETURNS varchar(132)

LANGUAGE c

external name 'QGPL/GPLCM04(hostname)'

DETERMINISTIC

PARAMETER STYLE DB2SQL

RETURNS NULL ON NULL INPUT

NO EXTERNAL ACTION

fenced


Here is the statement I use it in STRSQL:


select gethost(ip) from gplpfa10



It works nicely.


Thanx to all who helped, PLA








This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.