%{ /* * logeventfs.fist: logs the individual filesystem events to syslog * logevent portions are: * Copyright 2003 William Stearns * fistgen code copyright Erez Zadok and the fistgen team * logevent and fistgen portions are both released under the GPL * Hooking in functions other than lookup requires a patch to fistgen-0.0.6.1 */ %} debug off; %% //---------- create ---------- /* precall and postcall added - hooked on l24. */ /* test with "touch {newfile}". */ //%op:create:precall { // printk("logeventfs: create:precall\n"); //} %op:create:postcall { printk("logeventfs: create: file %s\n", name); } //---------- getattr ---------- /* wrapfs_getattr is not enabled in the linux24 template at all, but precall and postcall added anyways. */ /* test with "". */ //%op:getattr:precall { // printk("logeventfs: getattr:precall\n"); //} //%op:getattr:postcall { // printk("logeventfs: getattr: file %s\n", name); //} //---------- lstat ---------- /* Does this exist? */ /* test with "". */ //%op:lstat:precall { // printk("logeventfs: lstat:precall\n"); //} //%op:lstat:postcall { // printk("logeventfs: lstat: file %s\n", name); //} //---------- stat ---------- /* Does this exist? */ /* test with "". */ //%op:stat:precall { // printk("logeventfs: stat:precall\n"); //} //%op:stat:postcall { // printk("logeventfs: stat: file %s\n", name); //} //---------- link ---------- /* precall and postcall added - hooked on l24. */ /* test with "ln -f {file} {newname}". */ //%op:link:precall { // printk("logeventfs: link:precall\n"); //} %op:link:postcall { printk("logeventfs: link: file %s\n", name); } //---------- lookup ---------- /* Always had precall and postcall - hooked on l24. */ /* test with "stat {nonexistant_file}". */ // %op:lookup:precall { // printk("logeventfs: lookup:precall\n"); // } %op:lookup:postcall { printk("logeventfs: lookup: object %s\n", name); } //---------- mkdir ---------- /* precall and postcall added - hooked on l24. */ /* test with "mkdir {dir}". */ //%op:mkdir:precall { // printk("logeventfs: mkdir:precall\n"); //} %op:mkdir:postcall { printk("logeventfs: mkdir: directory %s\n", name); } //---------- read ---------- /* precall and postcall added - hooked on l24. */ /* test with "cat {file}". */ //%op:read:precall { // printk("logeventfs: read:precall\n"); //} %op:read:postcall { printk("logeventfs: read: file %s\n", name); } //---------- readdir ---------- /* precall and postcall added - hooked on l24. */ /* test with "ls -al {dir}". */ //%op:readdir:precall { // printk("logeventfs: readdir:precall\n"); //} %op:readdir:postcall { printk("logeventfs: readdir: directory %s\n", name); } //---------- readlink ---------- /* precall and postcall added - hooked on l24. */ /* test with "ls -al {dir_with_a_symlink}". */ //%op:readlink:precall { // printk("logeventfs: readlink:precall\n"); //} %op:readlink:postcall { printk("logeventfs: readlink: link %s\n", name); } //---------- rename ---------- /* precall and postcall added - hooked on l24. */ /* test with "mv {file} {newname}". */ //%op:rename:precall { // printk("logeventfs: rename:precall\n"); //} %op:rename:postcall { /* printk("logeventfs: rename: from %s/%s to %s/%s\n", $fromdir, $from, $todir, $to); */ printk("logeventfs: rename: from %s\n", name); } //---------- rmdir ---------- /* precall and postcall added - hooked on l24. */ /* test with "rmdir {empty_dir}". */ //%op:rmdir:precall { // printk("logeventfs: rmdir:precall\n"); //} %op:rmdir:postcall { printk("logeventfs: rmdir: directory %s\n", name); } //---------- setattr ---------- /* precall and postcall added - hooked on l24. */ /* test with "touch". */ //%op:setattr:precall { // printk("logeventfs: setattr:precall\n"); //} %op:setattr:postcall { printk("logeventfs: setattr: file %s\n", name); } //---------- statfs ---------- /* precall and postcall added in both attach.c and super.c - hooked on l24. */ /* test with "df" */ //%op:statfs:precall { // printk("logeventfs: statfs:precall\n"); //} %op:statfs:postcall { printk("logeventfs: statfs:\n"); } //---------- symlink ---------- /* precall and postcall added - hooked on l24. */ /* test with "ln -s {file} {newname}". */ //%op:symlink:precall { // printk("logeventfs: symlink:precall\n"); //} %op:symlink:postcall { printk("logeventfs: symlink: symlink %s\n", name); } //---------- unlink ---------- /* precall and postcall added - hooked on l24. */ /* test with "rm -f {file}". */ //%op:unlink:precall { // printk("logeventfs: unlink:precall\n"); //} %op:unlink:postcall { printk("logeventfs: unlink: file %s\n", name); } //---------- write ---------- /* precall and postcall added - hooked on l24. */ /* test with "echo hi >{file}". */ //%op:write:precall { // printk("logeventfs: write:precall\n"); //} %op:write:postcall { printk("logeventfs: write: file %s\n", name); } %%