opt
/
kaspersky
/
kav4fs
/
src
/
kernel
/
module.freebsd
➕ New
📤 Upload
✎ Editing:
interface.c
← Back
/* * This source file is a part of a Kaspersky Antivirus Monitor. * Copyright (C) Kaspersky Lab, 1997-2010 * See License.txt for details * */ #include "module.h" #if defined (__FreeBSD_version) && __FreeBSD_version >= 500000 #if __FreeBSD_version >= 500003 static int kavinfo_open (struct cdev * dev, int oflags, int devtype, struct thread *thr); static int kavinfo_close (struct cdev * dev, int fflag, int devtype, struct thread *thr); static int kavinfo_read (struct cdev * dev, struct uio *uio, int ioflag); #else static int kavinfo_open (dev_t dev, int oflags, int devtype, struct thread *thr); static int kavinfo_close (dev_t dev, int fflag, int devtype, struct thread *thr); static int kavinfo_read (dev_t dev, struct uio *uio, int ioflag); #endif struct cdevsw dev_kavinfo = { #if __FreeBSD_version >= 500003 .d_version = D_VERSION, .d_flags = 0, #endif .d_open = kavinfo_open, .d_close = kavinfo_close, .d_read = kavinfo_read, #if __FreeBSD_version < 500003 .d_write = nowrite, .d_ioctl = noioctl, .d_poll = nopoll, .d_mmap = nommap, .d_strategy = nostrategy, .d_dump = nodump, .d_kqfilter = NULL, #endif .d_name = "KAVPROC", #if __FreeBSD_version < 600003 .d_maj = KAVMON_DEVICE_MAJOR, #endif #if __FreeBSD_version < 501000 .d_psize = nopsize, .d_flags = 0 #endif }; #elif defined (__FreeBSD_version) && __FreeBSD_version >= 400006 static int kavinfo_open (dev_t dev, int oflags, int devtype, struct proc *p); static int kavinfo_close (dev_t dev, int fflag, int devtype, struct proc *p); static int kavinfo_read (dev_t dev, struct uio *uio, int ioflag); struct cdevsw dev_kavinfo = { kavinfo_open, kavinfo_close, kavinfo_read, nowrite, noioctl, nopoll, nommap, nostrategy, "KAVPROC", KAVMON_DEVICE_MAJOR, nodump, nopsize, D_TTY, -1 }; #else struct cdevsw dev_kavinfo = { kavinfo_open, kavinfo_close, kavinfo_read, nowrite, noioctl, nostop, nullreset, nodevtotty, nopoll, nommap, NULL, "KAVPROC", NULL, -1 }; #endif static int monitor_minor; #if defined (__FreeBSD_version) && __FreeBSD_version >= 500000 static struct cdev * kavdev_monitor, * kavdev_info; #else static dev_t kavdev_monitor, kavdev_exploit, kavdev_info; #endif static char * monitor_info, *pinfo; int Monitor_interface_init (void) { Monitor_cache_init(); Monitor_module_init(); Monitor_queue_init(); monitor_minor = 1; #if defined (__FreeBSD_version) && __FreeBSD_version >= 400006 #if defined (__FreeBSD_version) && __FreeBSD_version >= 600000 monitor_minor = KAVMON_DEVICE_MAJOR+1; kavdev_info = make_dev (&dev_kavinfo, KAVMON_DEVICE_MAJOR, UID_ROOT, GID_WHEEL, 0644, "kavproc"); kavdev_monitor = make_dev (&dev_kavmonitor, monitor_minor, UID_ROOT, GID_WHEEL, 0644, "kav4fs_oas"); monitor_minor = dev2unit(kavdev_monitor); #else kavdev_info = make_dev (&dev_kavinfo, 0, UID_ROOT, GID_WHEEL, 0644, "kavproc"); kavdev_monitor = make_dev (&dev_kavmonitor, monitor_minor, UID_ROOT, GID_WHEEL, 0644, "kav4fs_oas"); #endif #else kavdev_info = makedev (KAVMON_DEVICE_MAJOR, 0); cdevsw_add (&kavdev_info, &dev_kavinfo, NULL); kavdev_monitor = makedev (KAVMON_DEVICE_MAJOR, monitor_minor); cdevsw_add (&kavdev_monitor, &dev_kavmonitor, NULL); #endif monitor_info = MEM_ALLOC(PAGE_SIZE); Monitor_intercept_init(); return 0; } int Monitor_interface_cleanup(void) { Monitor_intercept_deinit(); Monitor_cache_finit(); /* cdevsw_remove (&dev_kavmonitor); */ /* cdevsw_remove (&dev_kavexploit); */ #if defined (__FreeBSD_version) && __FreeBSD_version >= 400006 destroy_dev (kavdev_monitor); destroy_dev (kavdev_info); #endif MEM_FREE(monitor_info); return 0; } #if defined (__FreeBSD_version) && __FreeBSD_version < 500000 int kavinfo_open (dev_t dev, int oflags, int devtype, struct proc *p) #else #if __FreeBSD_version >= 500003 int kavinfo_open (struct cdev * dev, int oflags, int devtype, struct thread *thr) #else int kavinfo_open (dev_t dev, int oflags, int devtype, struct thread *thr) #endif #endif { #if defined (__FreeBSD_version) && __FreeBSD_version >= 600000 sprintf(monitor_info,"%d \n%d %d %d\n \n", FS_PROTOCOL_VERSION,0,monitor_minor,monitor_started); #else sprintf(monitor_info,"%d \n%d %d %d\n \n", FS_PROTOCOL_VERSION,KAVMON_DEVICE_MAJOR,monitor_minor,monitor_started); #endif pinfo = monitor_info; return 0; } #if defined (__FreeBSD_version) && __FreeBSD_version < 500000 int kavinfo_close (dev_t dev, int fflag, int devtype, struct proc *p) #else #if __FreeBSD_version >= 500003 int kavinfo_close (struct cdev * dev, int fflag, int devtype, struct thread *thr) #else int kavinfo_close (dev_t dev, int fflag, int devtype, struct thread *thr) #endif #endif { return 0; } #if defined (__FreeBSD_version) && __FreeBSD_version >= 500003 int kavinfo_read (struct cdev * dev, struct uio *uio, int ioflag) #else int kavinfo_read (dev_t dev, struct uio *uio, int ioflag) #endif { int len; len = strlen(pinfo); if (len > uio->uio_resid) len = uio->uio_resid; if (len < 0) len = 0; if ( uiomove((char *)pinfo,len,uio)){ return EFAULT; } pinfo+=len; return 0; }
💾 Save Changes
Cancel
📤 Upload File
×
Select File
Upload
Cancel
➕ Create New
×
Type
📄 File
📁 Folder
Name
Create
Cancel
✎ Rename Item
×
Current Name
New Name
Rename
Cancel
🔐 Change Permissions
×
Target File
Permission (e.g., 0755, 0644)
0755
0644
0777
Apply
Cancel