Сбросить количество пакетов - PullRequest
0 голосов
/ 13 марта 2019

Я выполняю этот скрипт, где acl запускается после 300 пакетов, а пакеты блокируются с 10.0.0.1 по 10.0.0.2. Потом жду 10 сек и снова разрешу трафик с 10.0.0.1 до 10.0.0.2. Но проблема в том, что счетчик не сбрасывается, он все еще равен 300. Могу ли я сбросить этот счет, скажем, ноль, чтобы трафик был разрешен с 10.0.0.1 до 10.0.0.2.

import requests
import time
from requests.auth import HTTPBasicAuth


ONOS_REST_API = "http://172.17.0.2:8181/onos/v1"
ONOS_USER = "onos"
ONOS_PASSWORD = "rocks"

SWITCH = "of%3A0000000000000001"
SWITCH_PORT = "1"
PACKET_RESET = 100 # substract this to atual stats
PACKET_TO_TRIGGER_ACL = 400
counter= 1

def get_packet_count():
my_url = "%s/statistics/ports/%s/%s" % (ONOS_REST_API, SWITCH, SWITCH_PORT)
print my_url
req = requests.get(my_url, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
print req.text, req.status_code
return req.json()["statistics"][0]["ports"][0]["packetsReceived"]-PACKET_RESET


def set_acl():

requests.post("%s/acl/rules" % (ONOS_REST_API), json={"srcIp":"10.0.0.1/32", "dstIp":"10.0.0.2/32", "action": "deny"}, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
    counter= 0


def set_allowacl():

requests.post("%s/acl/rules" % (ONOS_REST_API), json={"srcIp":"10.0.0.1/32", "dstIp":"10.0.0.2/32", "action": "allow"}, auth=HTTPBasicAuth(ONOS_USER, ONOS_PASSWORD))
    counter= 1


if __name__ == "__main__":

while True:

    # Check port packet count
    packets = get_packet_count()        
    print("Counter= ",counter)
    if packets >= PACKET_TO_TRIGGER_ACL:
        #if(counter==1):
         set_acl()
         time.sleep(10)
         set_allowacl()
    time.sleep(1)     
...