This file is indexed.

/etc/netscript/qos.conf is in netscript-2.4 5.5.3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
##############################################################################
# QoS/Fair queuing functions
###############################################################################

QOS_MODULES="sch_sfq sch_red sch_gred sch_cbq cls_fw"

echoMark () {
        local IFS='_'
	set -- $1
	echo $1
}

echoRate () {
	local IFS='_'
	set -- $1
	echo $2
}

echoAddParm () {
	local IFS='_'
	set -- $1
	shift 2
	echo "$@" 
}

ip_QoSppp () {
	
	# establish esistence of ppp Iface
	if ! echo $1 | grep '^ppp' > /dev/null 2>&1 ; then 
		return 0
	fi
	! [ -f /var/run/${1}.pid ] && return 0
	if ! kill -0 `cat /var/run/${1}.pid` > /dev/null 2>&1 ; then
		return 0
	fi

	# Get Unit number
	PPP_UNIT=`echo $1 | sed 's/^ppp\(.*\)$/\1/'`

	# Transform variables
	eval "$1"_HNDL1=$(( $PPP_UNIT + 8000 ))
	eval "$1"_HNDL2=$(( $PPP_UNIT + 9000 ))
	eval "$1"_FAIRQ=${ppp_FAIRQ:-}
	eval "$1"_BNDWIDTH=${ppp_BNDWIDTH:-}
	eval "$1"_PXMTU=${ppp_PXMTU:-}
	eval "$1"_CARATE=${ppp_CARATE:-}
	eval "$1"_IARATE=${ppp_IARATE:-}
	eval "$1"_IABURST=${ppp_IABURST:-}

	return 0
}

ip_QoSclear () {
        [ -x /sbin/tc ] \
                && qt tc qdisc del dev $1 root
        return 0
}
 
ip_QoS () {
	local IF_NODASH=`echo "$1" | sed -e 's/\-/_/g'`

        # Set some vaiables
        eval local HNDL1=\${"${IF_NODASH}"_HNDL1:-""}
        eval local HNDL2=\${"${IF_NODASH}"_HNDL2:-""}
        eval local FAIRQ=\${"${IF_NODASH}"_FAIRQ:-""}
        eval local BNDWIDTH=\${"${IF_NODASH}"_BNDWIDTH:-""}
        eval local PXMTU=\${"${IF_NODASH}"_PXMTU:-""}
        eval local CARATE=\${"${IF_NODASH}"_CARATE:-""}
        eval local IARATE=\${"${IF_NODASH}"_IARATE:-""}
        eval local IABURST=\${"${IF_NODASH}"_IABURST:-""}
	eval local SPQUEUE=\${"${IF_NODASH}"_SPQUEUE:-""}
	eval local PEAKRATE=\${"${IF_NODASH}"_PEAKRATE:-"$BNDWIDTH"}
	eval local BULKRATE=\${"${IF_NODASH}"_BULKRATE:-"$CARATE"}

        if [ ! -x /sbin/tc ]; then
                return 1
        fi

        if [ "$FAIRQ" != "YES" -a "$FAIRQ" != "Yes" -a "$FAIRQ" != "yes" ]
        then
                return 1
        fi

	if [ -z "$BNDWIDTH" -o -z "$IABURST" -o -z "$IARATE" \
		-o -z "$PXMTU" -o -z "$CARATE" ]; then
		tc qdisc replace dev $1 root sfq
                return 0
        fi

	local IF_INDEX=`ip link | grep $1 | sed -e "s/^\([0-9]\+\): $1.*$/\1/"`
	
	if [ -z "$HNDL1" ]; then
		HNDL1=$(( $IF_INDEX * 10 + 1001 )) 
	fi
	
	if [ -z "$HNDL2" ]; then
		HNDL2=$(( $IF_INDEX * 10 + 1002 )) 
	fi
	
	# Attach CBQ  to device
        tc qdisc add dev $1 root handle $HNDL1: cbq \
                bandwidth $BNDWIDTH allot 1514 \
                avpkt 1000
	# Set up classes
        # Root class
	tc class add dev $1 parent $HNDL1:0 classid :1 est 1sec 8sec \
		cbq bandwidth $BNDWIDTH rate $PEAKRATE \
		allot $PXMTU avpkt 1000 bounded
	# Bulk class
	tc class add dev $1 parent $HNDL1:1 classid :2 est 1sec 8sec \
                cbq bandwidth $BNDWIDTH rate $CARATE \
                allot $PXMTU avpkt 1000 bounded prio 6 \
                split $HNDL1:0 defmap ff7f
        # Interactive class
        tc class add dev $1 parent $HNDL1:1 classid :3 est 2sec 16sec \
                cbq bandwidth $BNDWIDTH rate $IARATE maxburst $IABURST \
                allot $PXMTU avpkt 1000 bounded isolated \
                prio 2 split $HNDL1:0 defmap 80
        # Priority class
        tc class add dev $1 parent $HNDL1:1 classid :4 est 1sec 8sec \
                cbq bandwidth $BNDWIDTH rate $PEAKRATE \
                allot $PXMTU avpkt 1000 bounded prio 1

	# Attach queue disciplines
        tc qdisc add dev $1 parent $HNDL1:3 sfq perturb 15
        tc qdisc add dev $1 parent $HNDL1:4 pfifo
        # Add filters
        tc filter add dev $1 parent $HNDL1:0 protocol ip \
        	priority 50 handle $MRK_CRIT fw classid $HNDL1:4
	tc filter add dev $1 parent $HNDL1:0 protocol ip \
                priority 60 handle $MRK_IA fw classid $HNDL1:3
	
	# Set up bulk queue
	tc qdisc add dev $1 parent $HNDL1:2 handle $HNDL2: cbq \
		bandwidth $CARATE allot 1514 avpkt 1000
	tc class add dev $1 parent $HNDL2:0 classid :1 est 1sec 8sec \
		cbq bandwidth $CARATE rate $BULKRATE \
		allot $PXMTU avpkt 1000 prio 6 \
		split $HNDL2:0 defmap ffff
	tc qdisc add dev $1 parent $HNDL2:1 sfq perturb 15
	# tc qdisc add dev $1 parent $HNDL2:1 red min 10000 max 30000 limit 75000 avpkt 1000 burst 16 ecn probability 0.02 bandwidth $CARATE
	# Build special queueing
	local ID=2
	for QUEUE in $SPQUEUE; do
		local BOUNDED=`echoAddParm $QUEUE`
		# Add class and queue
        	tc class add dev $1 parent $HNDL2:0 classid :$ID \
	                est 1sec 8sec cbq bandwidth $BNDWIDTH \
			rate `echoRate $QUEUE` allot $PXMTU \
			$BOUNDED prio 6 \
			avpkt 1000
		tc qdisc add dev $1 parent $HNDL2:$ID sfq perturb 15
		#tc qdisc add dev $1 parent $HNDL2:$ID red ecn min 10000 max 30000 limit 75000 avpkt 1000 burst 16 ecn probability 0.02 bandwidth $BNDWIDTH
		# Add the filter
		tc filter add dev $1 parent $HNDL2:0 protocol ip \
			priority 70 handle `echoMark $QUEUE` fw \
			classid $HNDL2:$ID
		ID=$(($ID+1))
	done

        return 0
}

###############################################################################
# End
###############################################################################