329{
330 char appInfo[128], clIP[INET6_ADDRSTRLEN+2], svIP[INET6_ADDRSTRLEN+2];
331 int clPort, svPort;
332 char clType, svType;
333 bool fdok = false, odok = false;
334
335
336
338 else snprintf(appInfo,
sizeof(appInfo),ffApp,
sizeof(appInfo)-20,
appName);
339
340
341
343
344
345
346
347
348
350 if (clPort < 0)
351 {
eDest->
Emsg(
"PMarkFF", clPort,
"get peer information.");
352 return false;
353 }
354
356 if (svPort < 0)
357 {
eDest->
Emsg(
"PMarkFF", clPort,
"get self information.");
358 return false;
359 }
360
361
362
364
365
366
368 {
const XrdNetSockAddr *urSad = addr.
NetAddr();
369 if (!urSad)
eDest->
Emsg(
"PMarkFF",
"unable to get origin address.");
370 else {char buff[1024];
371 mySad = new XrdNetSockAddr;
372 memcpy(mySad, urSad, sizeof(XrdNetSockAddr));
373 mySad->v4.sin_port = htons(
static_cast<uint16_t
>(
ffPortO));
374 snprintf(buff,
sizeof(buff),
"%s:%d", clIP,
ffPortO);
375 oDest = strdup(buff);
376 odok = true;
377 }
378 }
379
380
381
382 if (!fdok && !odok) return false;
383
384
385
386
387 char utcBuff[40], bseg0[512];
388 int len0 = snprintf(bseg0,
sizeof(bseg0), ffFmt0,
myHostName,
389 getUTC(utcBuff, sizeof(utcBuff)));
390 if (len0 >= (int)sizeof(bseg0))
391 {
eDest->
Emsg(
"PMarkFF",
"invalid json; bseg0 truncated.");
392 return false;
393 }
394
395 ffHdr = strdup(bseg0);
396
397 char bseg1[256];
398 int len1 = snprintf(bseg1,
sizeof(bseg1), ffFmt1,
eCode,
aCode, appInfo);
399 if (len1 >= (int)sizeof(bseg1))
400 {
eDest->
Emsg(
"PMarkFF",
"invalid json; bseg1 truncated.");
401 return false;
402 }
403
404
405
406
407
408
409 char bseg2[256];
410 int len2;
412 {len2 = snprintf(bseg2, sizeof(bseg2), ffFmt2,
413 clType, clIP, svIP, clPort, svPort);
414 } else {
415 len2 = snprintf(bseg2, sizeof(bseg2), ffFmt2,
416 clType, svIP, clIP, svPort, clPort);
417 }
418 if (len2 >= (int)sizeof(bseg2))
419 {
eDest->
Emsg(
"PMarkFF",
"invalid json; cl bseg2 truncated.");
420 return false;
421 }
422
423 ffTailsz = len1 + len2;
424 ffTail = (char *)malloc(ffTailsz + 1);
425 strcpy(ffTail, bseg1);
426 strcpy(ffTail+len1, bseg2);
427
428
429
430 fdOK = fdok;
431 odOK = odok;
432 return Emit("start", utcBuff, "");
433}
static XrdSysError eDest(0,"crypto_")
const XrdNetSockAddr * NetAddr()
static int GetSokInfo(int fd, char *theAddr, int theALen, char &theType)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)