46 char *getMyFQN(
const char *&myDom,
bool &myFQN,
const char *&myErr)
50 const char *dnsName, *domP;
51 char *theName[2] = {0}, *theDom[2] = {0}, *theIPA[2] = {0}, hName[1025];
61 if ((dnsName = getenv(
"XRDNET_IDENTITY")))
63 && !(myDom = index(dnsName,
'.'))) myDom =
"";
65 char* tmp = strdup(dnsName);
73 if (gethostname(hName,
sizeof(hName)))
74 {myErr =
XrdSysE2T(errno); myDom = 0;
return 0;}
75 hnLen = strlen(hName);
81 {myDom =
"";
return strdup(hName);}
88 while((ifNow = ifList))
89 {
int i = (ifNow->sval[1] ? 1 : 0);
91 if (i >= 0 && theName[i] == 0 && !theAddr.
Set(ifNow->
text, 0)
92 && (dnsName = theAddr.
Name(0,&myErr)) && (domP = index(dnsName,
'.')))
93 {
int n = domP - dnsName;
94 if (n == hnLen && !strncmp(hName, dnsName, n))
95 {theName[i] = strdup(dnsName);
96 theDom[i] = theName[i] + n;
98 if (theIPA[i]) free(theIPA[i]);
99 theIPA[i] = strdup(ifNow->
text);
102 ifList = ifList->
next;
108 if (myErr == 0) myErr =
"no error";
113 {
if (theName[1]) free(theName[1]);
129 if ((myErr = theAddr.
Set(hName,0))) dnsName = 0;
130 else dnsName = theAddr.
Name(0, &myErr);
135 {theName[0] = strdup(dnsName);
136 if (!(myDom = index(theName[0],
'.'))) myDom =
"";
146 {
if (theIPA[1]) free(theIPA[1]);
149 if (theIPA[1])
return theIPA[1];
154 theName[0] = strdup(hName);
155 myDom = theName[0] + hnLen;
168 const char *XrdNetIdentity::DNS_Domain;
169 const char *XrdNetIdentity::DNS_Error;
170 char *XrdNetIdentity::DNS_FQN = getMyFQN(DNS_Domain, FQN_DNS, DNS_Error);
171 bool XrdNetIdentity::FQN_DNS;
179 if (eText) *eText = DNS_Error;
189 if (eText) *eText = DNS_Error;
199 if (DNS_FQN) free(DNS_FQN);
200 DNS_FQN = strdup(fqn);
201 if (!(DNS_Domain = index(DNS_FQN,
'.'))) DNS_Domain =
"";
const char * XrdSysE2T(int errcode)
static bool isHostName(const char *name)
const char * Name(const char *eName=0, const char **eText=0)
const char * Set(const char *hSpec, int pNum=PortInSpec)
static int GetIF(XrdOucTList **ifList, const char **eText=0)
static void SetFQN(const char *fqn)
static const char * Domain(const char **eText=0)
static const char * FQN(const char **etext=0)
static void toLower(char *str)