Skip to content

Commit

Permalink
[mux]: Fix mark_dhcp_packet (#9373)
Browse files Browse the repository at this point in the history
- Consolidate the two [Service] sections by moving the ExecStartPre line for mark_dhcp_packet.py to the first section and removing the second.
- Make the mark_dhcp_packet.py file executable
- Also clean up mark_dhcp_packet.py
    - Remove unused imports
    - Fix spacing and line lengths to conform to PEP8
Signed-off-by: Lawrence Lee <lawlee@microsoft.com>
  • Loading branch information
theasianpianist authored Nov 29, 2021
1 parent 858f430 commit 6e1a477
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
11 changes: 1 addition & 10 deletions files/build_templates/mux.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,11 @@ StartLimitBurst=3
[Service]
User={{ sonicadmin_user }}
ExecStartPre=/usr/local/bin/write_standby.py
ExecStartPre=/usr/bin/{{docker_container_name}}.sh start
ExecStart=/usr/bin/{{docker_container_name}}.sh wait
ExecStop=/usr/bin/{{docker_container_name}}.sh stop
ExecStopPost=/usr/local/bin/write_standby.py
Restart=always
RestartSec=30

[Service]
User={{ sonicadmin_user }}
ExecStartPre=/usr/local/bin/mark_dhcp_packet.py
ExecStartPre=/usr/bin/{{docker_container_name}}.sh start
ExecStart=/usr/bin/{{docker_container_name}}.sh wait
ExecStop=/usr/bin/{{docker_container_name}}.sh stop
ExecStopPost=/usr/local/bin/mark_dhcp_packet.py
ExecStopPost=/usr/local/bin/write_standby.py
Restart=always
RestartSec=30

Expand Down
22 changes: 15 additions & 7 deletions files/scripts/mark_dhcp_packet.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
#!/usr/bin/env python3

import os
import subprocess
import sys
import time

from sonic_py_common import logger
from swsscommon import swsscommon

log = logger.Logger('mark_dhcp_packet')


class MarkDhcpPacket(object):
"""
Class used to configure dhcp packet mark in ebtables
Expand Down Expand Up @@ -38,7 +36,9 @@ def state_db(self):
Initializes the connector during the first call
"""
if self.state_db_connector is None:
self.state_db_connector = swsscommon.SonicV2Connector(host='127.0.0.1')
self.state_db_connector = swsscommon.SonicV2Connector(
host='127.0.0.1'
)
self.state_db_connector.connect(self.state_db_connector.STATE_DB)

return self.state_db_connector
Expand All @@ -51,7 +51,8 @@ def is_dualtor(self):
localhost_key = self.config_db.get_keys('DEVICE_METADATA')[0]
metadata = self.config_db.get_entry('DEVICE_METADATA', localhost_key)

return 'subtype' in metadata and 'dualtor' in metadata['subtype'].lower()
return 'subtype' in metadata and \
'dualtor' in metadata['subtype'].lower()

def get_mux_intfs(self):
"""
Expand Down Expand Up @@ -82,10 +83,16 @@ def clear_dhcp_packet_marks(self):
self.run_command("sudo ebtables -F INPUT")

def apply_mark_in_ebtables(self, intf, mark):
self.run_command("sudo ebtables -A INPUT -i {} -j mark --mark-set {}".format(intf, mark))
self.run_command("sudo ebtables -A INPUT -i {} -j mark --mark-set {}"
.format(intf, mark))

def update_mark_in_state_db(self, intf, mark):
self.state_db.set(self.state_db.STATE_DB, 'DHCP_PACKET_MARK|' + intf, 'mark', mark)
self.state_db.set(
self.state_db.STATE_DB,
'DHCP_PACKET_MARK|' + intf,
'mark',
mark
)

def apply_marks(self):
"""
Expand All @@ -103,6 +110,7 @@ def apply_marks(self):

log.log_info("Finish marking dhcp packets in ebtables.")


if __name__ == '__main__':
mark_dhcp_packet = MarkDhcpPacket()
mark_dhcp_packet.apply_marks()

0 comments on commit 6e1a477

Please sign in to comment.