Exemple #1
0
def main(sys_args: List[str] = sys.argv[1:]) -> NoReturn:
    args = parse_args(sys_args)
    defs.init(args)

    global logger
    logger = get_logger()

    ebphd = EBPHDaemon(args)

    if args.operation == "start":
        try:
            ebphd.start_daemon()
        except Exception as e:
            logger.error('Unable to start daemon', exc_info=e)
            sys.exit(-1)
    elif args.operation == "stop":
        try:
            ebphd.stop_daemon()
        except Exception as e:
            logger.error('Unable to stop daemon', exc_info=e)
            sys.exit(-1)
    elif args.operation == "restart":
        try:
            ebphd.restart_daemon()
        except Exception as e:
            logger.error('Unable to restart daemon', exc_info=e)
            sys.exit(-1)
    elif args.nodaemon:
        ebphd.loop_forever()
Exemple #2
0
    2020-Jul-13  William Findlay  Created this.
"""

import os
import sys
from pprint import pformat
import ctypes as ct
from enum import IntEnum, IntFlag, unique, auto
from typing import List, Dict

from bcc import BPF

from ebph.logger import get_logger
from ebph import defs

logger = get_logger()


def calculate_profile_magic() -> int:
    """
    Calculate the magic number that corresponds to ebpH profiles.
    """
    from hashlib import sha256
    from ebph.version import __version__

    # take x.x part of version
    version = '.'.join(__version__.split('.')[:2]).encode('ascii')

    return int(sha256(version).hexdigest(), 16) & 0xFFFF_FFFF_FFFF_FFFF