XRootD
Loading...
Searching...
No Matches
XrdNetPMark.cc
Go to the documentation of this file.
1
/******************************************************************************/
2
/* */
3
/* X r d N e t P M a r k . c c */
4
/* */
5
/* (c) 2022 by the Board of Trustees of the Leland Stanford, Jr., University */
6
/* All Rights Reserved */
7
/* Produced by Andrew Hanushevsky for Stanford University under contract */
8
/* DE-AC02-76-SFO0515 with the Department of Energy */
9
/* */
10
/* This file is part of the XRootD software suite. */
11
/* */
12
/* XRootD is free software: you can redistribute it and/or modify it under */
13
/* the terms of the GNU Lesser General Public License as published by the */
14
/* Free Software Foundation, either version 3 of the License, or (at your */
15
/* option) any later version. */
16
/* */
17
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
18
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
19
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
20
/* License for more details. */
21
/* */
22
/* You should have received a copy of the GNU Lesser General Public License */
23
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
24
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
25
/* */
26
/* The copyright holder's institutional names and contributor's names may not */
27
/* be used to endorse or promote products derived from this software without */
28
/* specific prior written permission of the institution or contributor. */
29
/******************************************************************************/
30
31
#include <stdlib.h>
32
#include <string.h>
33
34
#include "
XrdNet/XrdNetPMark.hh
"
35
36
/******************************************************************************/
37
/* g e t E A */
38
/******************************************************************************/
39
40
bool
XrdNetPMark::getEA
(
const
char
*cgi,
int
&ecode,
int
&acode)
41
{
42
43
ecode = acode = 0;
44
// If we have cgi, see if we can extract rge codes from there
45
//
46
if
(cgi) {
47
const
char
*stP = strstr(cgi,
"scitag.flow="
);
48
if
(stP) {
49
char
*eol;
50
int
eacode = strtol(stP + 12, &eol, 10);
51
if
(*eol ==
'&'
|| *eol == 0) {
52
if
(eacode >=
XrdNetPMark::minTotID
&& eacode <=
XrdNetPMark::maxTotID
) {
53
ecode = eacode >>
XrdNetPMark::btsActID
;
54
acode = eacode &
XrdNetPMark::mskActID
;
55
}
56
// According to the specification, if the provided scitag.flow has an incorrect value
57
// the packets will be marked with a scitag = 0
58
return
true
;
59
}
60
}
61
}
62
63
// No go
64
//
65
return
false
;
66
}
XrdNetPMark.hh
XrdNetPMark::minTotID
static const int minTotID
Definition
XrdNetPMark.hh:83
XrdNetPMark::getEA
static bool getEA(const char *cgi, int &ecode, int &acode)
Definition
XrdNetPMark.cc:40
XrdNetPMark::btsActID
static const int btsActID
Definition
XrdNetPMark.hh:88
XrdNetPMark::maxTotID
static const int maxTotID
Definition
XrdNetPMark.hh:84
XrdNetPMark::mskActID
static const int mskActID
Definition
XrdNetPMark.hh:89
XrdNet
XrdNetPMark.cc
Generated by
1.13.2