Example #1
0
	def get_ieee_qcn(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				 flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		rpg_enable = array.array('B')
		rpg_enable.fromstring(ieee[DCB_ATTR_IEEE_QCN].str()[:8])
		a = array.array('I')
		a.fromstring(ieee[DCB_ATTR_IEEE_QCN].str()[8:])

		lst_params = self.__parse_array(a,8)

		rppp_max_rps = lst_params[0]
		rpg_time_reset = lst_params[1]
		rpg_byte_reset = lst_params[2]
		rpg_threshold = lst_params[3]
		rpg_max_rate = lst_params[4]
		rpg_ai_rate = lst_params[5]
		rpg_hai_rate = lst_params[6]
		rpg_gd = lst_params[7]
		rpg_min_dec_fac = lst_params[8]
		rpg_min_rate = lst_params[9]
		cndd_state_machine = lst_params[10]

		return rpg_enable, rppp_max_rps, rpg_time_reset, rpg_byte_reset, rpg_threshold, rpg_max_rate, rpg_ai_rate, rpg_hai_rate, rpg_gd, rpg_min_dec_fac, rpg_min_rate, cndd_state_machine
Example #2
0
    def get_ieee_qcn(self):
        a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
        m = DcbNlMessage(type=RTM_GETDCB,
                         cmd=DCB_CMD_IEEE_GET,
                         flags=NLM_F_REQUEST,
                         attrs=[a])
        m.send(self.conn)
        m = DcbNlMessage.recv(self.conn)

        ieee = m.attrs[DCB_ATTR_IEEE].nested()

        rpg_enable = array.array('B')
        rpg_enable.fromstring(ieee[DCB_ATTR_IEEE_QCN].str()[:8])
        a = array.array('I')
        a.fromstring(ieee[DCB_ATTR_IEEE_QCN].str()[8:])

        lst_params = self.__parse_array(a, 8)

        rppp_max_rps = lst_params[0]
        rpg_time_reset = lst_params[1]
        rpg_byte_reset = lst_params[2]
        rpg_threshold = lst_params[3]
        rpg_max_rate = lst_params[4]
        rpg_ai_rate = lst_params[5]
        rpg_hai_rate = lst_params[6]
        rpg_gd = lst_params[7]
        rpg_min_dec_fac = lst_params[8]
        rpg_min_rate = lst_params[9]
        cndd_state_machine = lst_params[10]

        return rpg_enable, rppp_max_rps, rpg_time_reset, rpg_byte_reset, rpg_threshold, rpg_max_rate, rpg_ai_rate, rpg_hai_rate, rpg_gd, rpg_min_dec_fac, rpg_min_rate, cndd_state_machine
Example #3
0
    def get_ieee_qcnstats(self):
        a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
        m = DcbNlMessage(type=RTM_GETDCB,
                         cmd=DCB_CMD_IEEE_GET,
                         flags=NLM_F_REQUEST,
                         attrs=[a])
        m.send(self.conn)
        m = DcbNlMessage.recv(self.conn)

        ieee = m.attrs[DCB_ATTR_IEEE].nested()

        rppp_rp_centiseconds = struct.unpack_from(
            "QQQQQQQQ", ieee[DCB_ATTR_IEEE_QCN_STATS].str(), 0)
        a = array.array('I')
        a.fromstring(ieee[DCB_ATTR_IEEE_QCN_STATS].str()[64:])

        lst_statistics = self.__parse_array(a, 8)

        rppp_created_rps = lst_statistics[0]
        ignored_cnm = lst_statistics[1]
        estimated_total_rate = lst_statistics[2]
        cnms_handled_successfully = lst_statistics[3]
        min_total_limiters_rate = lst_statistics[4]
        max_total_limiters_rate = lst_statistics[5]

        return rppp_rp_centiseconds, rppp_created_rps, ignored_cnm, estimated_total_rate, cnms_handled_successfully, min_total_limiters_rate, max_total_limiters_rate
	def get_ieee_pfc(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		a = array.array('B')
		a.fromstring(ieee[DCB_ATTR_IEEE_PFC].str()[0:])

		return a[1]
Example #5
0
	def get_ieee_pfc_delay(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		a = array.array('B')
		a.fromstring(ieee[DCB_ATTR_IEEE_PFC].str()[0:])

		return a[4] + (a[5] << 8)
Example #6
0
    def set_ieee_ets(self, _prio_tc, _tsa, _tc_bw):
        willing = 0
        ets_cap = 0
        cbs = 0
        tc_rx_bw = array.array('B', '\0' * 8)
        tc_reco_bw = array.array('B', '\0' * 8)
        tc_reco_tsa = array.array('B', '\0' * 8)
        reco_prio_tc = array.array('B', '\0' * 8)

        tc_tc_bw = array.array('B', '\0' * 8)
        tc_tsa = array.array('B', '\0' * 8)
        prio_tc = array.array('B', '\0' * 8)

        for up in range(len(_prio_tc)):
            prio_tc[up] = _prio_tc[up]
        for tc in range(len(_tsa)):
            tc_tsa[tc] = _tsa[tc]
        for tc in range(len(_tc_bw)):
            tc_tc_bw[tc] = _tc_bw[tc]

        ets = struct.pack("BBB", willing, ets_cap, cbs) + (
            tc_tc_bw + tc_rx_bw + tc_tsa + prio_tc + tc_reco_bw + tc_reco_tsa +
            reco_prio_tc).tostring()

        intf = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
        ieee_ets = StrAttr(DCB_ATTR_IEEE_ETS, ets)
        ieee = Nested(DCB_ATTR_IEEE, [ieee_ets])

        m = DcbNlMessage(type=RTM_GETDCB,
                         cmd=DCB_CMD_IEEE_SET,
                         flags=NLM_F_REQUEST,
                         attrs=[intf, ieee])
        m.send(self.conn)
        m = DcbNlMessage.recv(self.conn)
        self.check_err(m, DCB_ATTR_IEEE)
Example #7
0
 def get_family_id(self, family):
     a = NulStrAttr(CTRL_ATTR_FAMILY_NAME, family)
     m = GeNlMessage(GENL_ID_CTRL, CTRL_CMD_GETFAMILY,
                     flags=NLM_F_REQUEST, attrs=[a])
     m.send(self.conn)
     m = GeNlMessage.recv(self.conn)
     return m.attrs[CTRL_ATTR_FAMILY_ID].u16()
Example #8
0
	def get_dcbx(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_GDCBX,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		return m.attrs[DCB_ATTR_DCBX].u8()
Example #9
0
    def set_ieee_pfc(self, _pfc_en, _delay):
        pfc_cap = 8
        mbc = 0

        requests = array.array('B', '\0' * 64)
        indications = array.array('B', '\0' * 64)

        #netlink packet is 64bit alignment
        pads = array.array('B', '\0' * 3)

        #delay is 16bit value
        pfc = struct.pack(
            "BBBBBB", pfc_cap, _pfc_en, mbc, 0, _delay & 0xFF,
            _delay >> 8) + (requests + indications + pads).tostring()

        intf = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
        ieee_pfc = StrAttr(DCB_ATTR_IEEE_PFC, pfc)
        ieee = Nested(DCB_ATTR_IEEE, [ieee_pfc])

        m = DcbNlMessage(type=RTM_GETDCB,
                         cmd=DCB_CMD_IEEE_SET,
                         flags=NLM_F_REQUEST,
                         attrs=[intf, ieee])
        m.send(self.conn)
        m = DcbNlMessage.recv(self.conn)
        self.check_err(m, DCB_ATTR_IEEE)
Example #10
0
	def set_dcb_state(self, state):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		state_attr = U8Attr(DCB_ATTR_STATE, state)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_SSTATE,
				flags=NLM_F_REQUEST, attrs=[a, state_attr])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_STATE)
Example #11
0
	def set_dcbx(self, mode):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		mode_attr = U8Attr(DCB_ATTR_DCBX , mode)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_SDCBX,
				flags=NLM_F_REQUEST, attrs=[a, mode_attr])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_DCBX)
	def get_ieee_ets(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		willing, ets_cap, cbs = struct.unpack_from("BBB", ieee[DCB_ATTR_IEEE_ETS].str(), 0)

		a = array.array('B')
		a.fromstring(ieee[DCB_ATTR_IEEE_ETS].str()[3:])

		f = lambda A, n=8: [A[i:i+n] for i in range(0, len(A), n)]

		tc_tc_bw, tc_rx_bw, tc_tsa, prio_tc, tc_reco_bw, tc_reco_tsa, reco_prio_tc = f(a,8)

		return prio_tc, tc_tsa, tc_tc_bw
Example #13
0
	def get_ieee_ets(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		willing, ets_cap, cbs = struct.unpack_from("BBB", ieee[DCB_ATTR_IEEE_ETS].str(), 0)

		a = array.array('B')
		a.fromstring(ieee[DCB_ATTR_IEEE_ETS].str()[3:])

		f = lambda A, n=8: [A[i:i+n] for i in range(0, len(A), n)]

		tc_tc_bw, tc_rx_bw, tc_tsa, prio_tc, tc_reco_bw, tc_reco_tsa, reco_prio_tc = f(a,8)

		return prio_tc, tc_tsa, tc_tc_bw
Example #14
0
	def del_ieee_app(self, selector, priority, protocol):
		dcb_app        = struct.pack("BBH", selector, priority, protocol)
		intf           = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		ieee_app = StrAttr(DCB_ATTR_IEEE_APP, dcb_app)
		ieee_app_table = Nested(DCB_ATTR_IEEE_APP_TABLE, [ieee_app]);
		ieee           = Nested(DCB_ATTR_IEEE, [ieee_app_table]);

		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_DEL,
				flags=NLM_F_REQUEST, attrs=[intf, ieee])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_IEEE)
Example #15
0
	def set_dcb_buffer(self, _prio2buffer, _buffer_size):
		dcb_buffer = _prio2buffer.tostring() + _buffer_size.tostring()

		intf = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		dcb_buffer_str = StrAttr(DCB_ATTR_DCB_BUFFER, dcb_buffer)
		ieee = Nested(DCB_ATTR_IEEE, [dcb_buffer_str]);

		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_SET,
				flags=NLM_F_REQUEST, attrs=[intf, ieee])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_IEEE)
Example #16
0
	def set_ieee_qcn(self, _qcn):

		qcn = _qcn[0].tostring() + (_qcn[1] + _qcn[2] + _qcn[3] + _qcn[4] + _qcn[5] + _qcn[6] + _qcn[7] + _qcn[8] + _qcn[9] + _qcn[10] + _qcn[11]).tostring()

		intf = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		ieee_qcn = StrAttr(DCB_ATTR_IEEE_QCN, qcn)
		ieee = Nested(DCB_ATTR_IEEE, [ieee_qcn]);

		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_SET,
				 flags=NLM_F_REQUEST, attrs=[intf, ieee])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_IEEE)
Example #17
0
	def get_ieee_maxrate(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee_nested = m.attrs[DCB_ATTR_IEEE]

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		tc_maxrate = struct.unpack_from("QQQQQQQQ",ieee[DCB_ATTR_IEEE_MAXRATE].str(), 0);

		return tc_maxrate
Example #18
0
	def get_ieee_qcnstats(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				 flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		rppp_rp_centiseconds = struct.unpack_from("QQQQQQQQ",ieee[DCB_ATTR_IEEE_QCN_STATS].str(), 0);
		a = array.array('I')
		a.fromstring(ieee[DCB_ATTR_IEEE_QCN_STATS].str()[64:])

		lst_statistics = self.__parse_array(a,8)

		rppp_created_rps = lst_statistics[0]
		ignored_cnm = lst_statistics[1]
		estimated_total_rate = lst_statistics[2]
		cnms_handled_successfully = lst_statistics[3]
		min_total_limiters_rate = lst_statistics[4]
		max_total_limiters_rate = lst_statistics[5]

		return rppp_rp_centiseconds, rppp_created_rps, ignored_cnm, estimated_total_rate, cnms_handled_successfully, min_total_limiters_rate, max_total_limiters_rate
Example #19
0
	def get_ieee_dcb_buffer(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()

		prio2buffer = array.array('B')
		prio2buffer.fromstring(ieee[DCB_ATTR_DCB_BUFFER].str()[:8])
		buffer_size = array.array('I')
		buffer_size.fromstring(ieee[DCB_ATTR_DCB_BUFFER].str()[8:])

		return prio2buffer, buffer_size
Example #20
0
	def get_ieee_app_table(self):
		a = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_GET,
				flags=NLM_F_REQUEST, attrs=[a])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)

		ieee = m.attrs[DCB_ATTR_IEEE].nested()
		ieee_app_table = ieee[DCB_ATTR_IEEE_APP_TABLE]

		attrs = ieee_app_table.get_app_table()
		appTable = DcbAppTable()
		for i in range(len(attrs)):
			selector, priority, protocol  = struct.unpack('BBH', attrs[i].data)
			appTable.apps[i] = DcbApp(selector, priority, protocol)

		return appTable
Example #21
0
	def set_ieee_maxrate(self, _tc_maxrate):
		tc_maxrate = struct.pack("QQQQQQQQ",
					 _tc_maxrate[0],
					 _tc_maxrate[1],
					 _tc_maxrate[2],
					 _tc_maxrate[3],
					 _tc_maxrate[4],
					 _tc_maxrate[5],
					 _tc_maxrate[6],
					 _tc_maxrate[7],
		)

		intf = NulStrAttr(DCB_ATTR_IFNAME, self.intf)
		ieee_maxrate = StrAttr(DCB_ATTR_IEEE_MAXRATE, tc_maxrate)
		ieee = Nested(DCB_ATTR_IEEE, [ieee_maxrate]);

		m = DcbNlMessage(type = RTM_GETDCB, cmd = DCB_CMD_IEEE_SET,
				flags=NLM_F_REQUEST, attrs=[intf, ieee])
		m.send(self.conn)
		m = DcbNlMessage.recv(self.conn)
		self.check_err(m, DCB_ATTR_IEEE)