Source: ktctool/ktctool.h


Annotated List
Files
Globals
Hierarchy
Index
/***************************************************************************
                          ktctool.h  -  description
                             -------------------
    begin                : Fri Feb 1 2002
    copyright            : (C) 2002 by Vairo Raja
    email                : vairo@math.ut.ee
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KTCTOOL_H
#define KTCTOOL_H

#ifdef HAVE_CONFIG_H
#include 
#endif

#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 

/** for Listview class */
#include 
#include 
#include 
#include 
#include 
#include 
#include 


/** QoS Tree objects */
class Folder : public QObject
{
    Q_OBJECT

public:
    Folder( Folder *parent, const QString &name );
    ~Folder()
    {}

    QString folderName() { return fName; }

protected:
    QString fName;

};


/** Ktctool is the base class of the project */
class Ktctool : public KMainWindow
{
  Q_OBJECT

  protected:
  /** setup functions */
  void startUp();
  void setupMenuBar();
  void setupStatusBar();
  void setupKtctoolWidget();
  void setupKtctoolWidget2();
  void setupConnect();

  public:
    /** construtor */
    Ktctool(QWidget* parent=0, const char *name=0);
    /** destructor */
    ~Ktctool();
    
  void closeEvent (QCloseEvent *);
  void addFilter(QString);  
  void addQdisc(QString);
  void addClass(QString);    
  void setInfo(QString);
   
  /** defines some processes */
  KProcess addshaperqdisc;
  KProcess addshaperclass;
  KProcess addshaperfilter;
  KProcess delshaperqdisc;
  KProcess delshaperclass;
  KProcess delshaperfilter;
  KProcess showqdisc;
  KProcess showclass;
  KProcess showfilter;
  KProcess showip;
  KProcess tccommand;
  KProcess tcexist;  // if object exists already
  KProcess editlog;
  KProcess filteradd;  // if filter was added
  KProcess filteradd2;  // if filter was added
      
 class Tcobjects
    {        
    public:
        Tcobjects( QString& dev, QString& type, QString& id) { d=dev; t=type; i=id; }
        Tcobjects( QString& dev, QString& type, QString& id, QString& info) { d=dev; t=type; i=id; inf=info; }
        QString     dev() const          { return d; }
        QString     type() const         { return t; }
        QString     id() const           { return i; }
        QString     info() const         { return inf; }
        void        setfolder(Folder *f1){ f = f1; }     // remember parent when making QoS Tree
        Folder      *folder()            { return f; }
        Folder      *f;
        
    private:
        QString     d;
        QString     t;
        QString     i;
        QString     inf;
    };


  QPtrList listall;
  QPtrList listinfo;
  QPtrList subqdiscs;
  QStrList devices;
  QStrList listclasses;
  
  const char *shaperdelinterfaceChoice;
                          
public slots:
  void slotHelp();
  void slotExit();
  void slotEnable();
  void slotEnableFilter();
  void slotEnableFilter1();  
  void slotEnableFilter2();    
  void slotLog();
  void slotReset();
  void startRefresh();
  void slotmantc();
  void slotmancbq();
  void slotmanpfifo();
  void slotmanpfifof();
  void slotmanprio();
  void slotmanred();
  void slotmansfq();
  void slotmantbf();  
  void links();
  void addLog(KProcess &);
  void tabChanged(QWidget *);
      
  /** traffic shaper functions */
  void trafficShaper();
  void startshaperRules();
  void deleteShaper();
  void ingressShaper();  
  void delshaperRules();
  void startdeleteShaper();
  void shaperinterfaceActivated(int);
  void shaperdelinterfaceActivated(int);
  void shapermonitorinterfaceActivated(int);
  void shaperfilterinterfaceActivated(int);
  void shaperfilterrouteActivated(int);
  void shaperfilteru32Activated(int);
  void shaperfilterTCIActivated(int);
  void shaperfilterpolactionActivated(int);
  void shaperfilterIdActivated(int);  
  void dsmarkinterfaceActivated(int);
  void pfifointerfaceActivated(int);
  void pfifobfifoActivated(int);
  void priointerfaceActivated(int);
  void redinterfaceActivated(int);
  void sfqinterfaceActivated(int);
  void tbfinterfaceActivated(int);
  void shaperQdisc();
  void shaperClass();
  void startClassChange();  
  void shaperfilterFw();
  void shaperfilterRoute();
  void shaperfilterU32();
  void shaperfilterTCI();  
  void trafficFilter();
  void startfilterShaper();
  void startfilterRules();
  void dsmarkShaper();
  void startdsmarkQdisc();
  void dsmarkQdisc();  
  void pfifoShaper();
  void startpfifoQdisc();
  void startpfifoQdiscChange();
  void pfifoQdisc();
  void prioShaper();
  void startprioQdisc();
  void startprioQdiscChange();
  void prioQdisc();
  void redShaper();
  void startredQdisc();
  void startredQdiscChange();
  void redQdisc();
  void sfqShaper();
  void startsfqQdisc();
  void sfqQdisc();
  void tbfShaper();
  void starttbfQdisc();
  void starttbfQdiscChange();
  void tbfQdisc();
  void startingressQdisc();
  void createIngress();
  
  void trafficShaperMonitor();
  void startqdiscMonitor();
  void startclassMonitor();
  void startfilterMonitor();
  void startMonitorProcess();
  void startclassShaper();  
  void shaperMonitor(KProcess *, char *, int);
  void shaperCommand(KProcess *, char *, int);
  void shaperExist(KProcess *, char *, int);
  void filterExist(KProcess *, char *, int);
  void startexistShaper(QString, QString, QString);
  void shaperExistfinish();
  void tcStatistics();   // checkboxes
  void tcDetails();
  void tcRaw();
  void tcIngress2();
  void setBounded();
  void setIsolated();
  void setdsmarkTc();
    
private:
  QListBox *messageLog;  
  QListBox *shapermonBox;
  QPopupMenu *file;
  QPopupMenu *info;  
  QPopupMenu *help;
  KMenuBar *menubar;
  KStatusBar *statusbar;
  QWidget *mainWidget;
  QWidget *shaperLinks;   
  QTabWidget* TabWidget2;  
  QWidget* tab;   
  QTabWidget* tab_two;
  QWidget* tab_three;
  QWidget* tab_four;
  QWidget* tab_five;  
  QWidget* tab_1;
  QWidget* tab_2;
  QWidget* tab_3;
  QWidget* tab_4;
  QWidget* tab_5;
  QWidget* tab_6;
  QWidget* tab_7;
  QBoxLayout *top2;
  QGridLayout *grid2;
  QWidget *treeWidget;
  QPushButton *btnfilter;
    
  QStrList delobjects;
  QString tcfilter;
  QString tcaction;
  QString tcexistid;
  QString startfunction;
    
  QComboBox *shaperinterface;  
  QComboBox *shapermoninterface;
  QComboBox *shaperfilterinterface;
  QComboBox *shaperfilterroute;
  QComboBox *shaperfilteru32;
  QComboBox *shaperfiltertcfall;  
  QComboBox *shaperfilterpolaction;
  QComboBox *shaperfilterclassId;  
  QComboBox *shaperdelinterface;
  QComboBox *dsmarkinterface;
  QComboBox *pfifointerface;
  QComboBox *pfifobfifo;
  QComboBox *priointerface;
  QComboBox *redinterface;
  QComboBox *sfqinterface;
  QComboBox *tbfinterface;
  
  QCheckBox *tcs;
  QCheckBox *tcd;
  QCheckBox *tcr;
  QCheckBox *tcingress;
  QCheckBox *shaperclassBounded;
  QCheckBox *shaperclassIsolated;
  QCheckBox *dsmarkTcindex;
     
  QLineEdit *shaperglobalBand;
  QLineEdit *shaperrateBand;
  QLineEdit *shaperqdiscHandle;
  QLineEdit *shaperqdiscParent;
  QLineEdit *shaperparentHandle;
  QLineEdit *shaperclassAllot;
  QLineEdit *shaperclassId;
  QLineEdit *shaperclassWeight;
  QLineEdit *shaperclassPrio;
  QLineEdit *shaperclassMaxburst;
  QLineEdit *shaperclassMinburst;
  QLineEdit *shaperclassSplit;
  QLineEdit *shaperclassDefmap;
  QLineEdit *shaperAvpkt;
  QLineEdit *shaperMpu;
  QLineEdit *shaperCell;
  QLineEdit *shaperEwma;
  QLineEdit *shaperfilterprotocol;
  QLineEdit *shaperfilterprio;
  QLineEdit *shaperfilterhandle;
  QLineEdit *shaperfilterroutenr;
  QLineEdit *shaperfilterU32match;
  QLineEdit *shaperfiltertchash;
  QLineEdit *shaperfiltertcmask;
  QLineEdit *shaperfiltertcshift;
  QLineEdit *shaperfilterpolrate;
  QLineEdit *shaperfilterpolburst;
  QLineEdit *shaperfilterpolmtu;
  QLineEdit *shaperfilterpolpeakrate;
  QLineEdit *shaperfilterpolavrate;
  QLineEdit *dsmarkqdiscHandle;
  QLineEdit *dsmarkIndices;
  QLineEdit *dsmarkDefaultIndex;
  QLineEdit *pfifoqdiscHandle;
  QLineEdit *pfifoqdiscParent;
  QLineEdit *pfifoNumber;
  QLineEdit *prioqdiscHandle;
  QLineEdit *priobands;
  QLineEdit *priomap;
  QLineEdit *redqdiscHandle;
  QLineEdit *redqdiscParent;
  QLineEdit *redglobalBand;
  QLineEdit *redMin;
  QLineEdit *redMax;
  QLineEdit *redAvpkt;
  QLineEdit *redLimit;
  QLineEdit *redBurst;
  QLineEdit *redProbability;
  QLineEdit *sfqqdiscHandle;
  QLineEdit *sfqqdiscParent;
  QLineEdit *sfqPerturb;
  QLineEdit *sfqQuantum;
  QLineEdit *tbfqdiscHandle;
  QLineEdit *tbfqdiscParent;
  QLineEdit *tbfRate;
  QLineEdit *tbfLimit;
  QLineEdit *tbfBurst;
  QLineEdit *tbfPeakrate;
  QLineEdit *tbfLatency;
  QLineEdit *tbfMtu;
  
  const char *shaperinterfaceChoice;  
  const char *shapermonitorinterfaceChoice;
  const char *shaperfilterinterfaceChoice;
  const char *shaperfilterrouteChoice;
  const char *shaperfilteru32Choice;
  const char *shaperfiltertcChoice;  
  const char *shaperfilteractionChoice;
  const char *shaperfilterIdChoice;  
  const char *dsmarkinterfaceChoice;
  const char *pfifointerfaceChoice;
  const char *pfifobfifoChoice;
  const char *priointerfaceChoice;
  const char *redinterfaceChoice;
  const char *sfqinterfaceChoice;
  const char *tbfinterfaceChoice;

  QString installdir;  // directory where installed files are
  uint tcdev;     // device number
  uint x;         // used when starting
//  uint xdelete;   used when starting (startdeleteShaper 2x)
  uint filtercount; // how many filters
  uint filtercount2; // how many filters  
  int qdisc_exec;
  int class_exec;
  int tcs_exec;
  int tcd_exec;
  int tcr_exec;
  int tcingress_exec;
  int route_exec;
  int u32_exec;
  int tci_exec;  
  int bounded;
  int isolated;
  int dsmarktcindex;

};


/** QoS Tree objects */
class FolderListItem : public QListViewItem
{
public:
    FolderListItem( QListView *parent, Folder *f );
    FolderListItem( FolderListItem *parent, Folder *f );

    void insertSubFolders( const QObjectList *lst );
    QString makeShort( QString);
    
    Folder *folder() { return myFolder; }

protected:
    Folder *myFolder;

    QPixmap bluep;
    QPixmap redp;
    QPixmap goldp;

};


/** QoS Tree window */
class ListViews : public QSplitter
{
    Q_OBJECT

public:
    ListViews( QWidget *parent = 0, const char *name = 0, Ktctool *ktctool2 = 0);
    ~ListViews()
    {}

    KProcess ffilter;   // ingress filters
    
public slots:
    void slotAddQdisccbq();
    void slotAddQdiscdsmark();
    void slotAddQdiscpfifo();
    void slotAddQdiscprio();
    void slotAddQdiscred();
    void slotAddQdiscsfq();    
    void slotAddQdisctbf();
    void slotAddQdiscingress();    
    void slotAddFilter();
    void slotAddClass();       
    void slotChange();
    void slotDelete();
    void findfilter2(KProcess *, char*, int);
        
protected:

    void initFolders(Folder *);
    void setupFolders();
    void findsub(QString *, Folder *, QString *);
    void findfilter(Folder *, QString *);
    
    QListView *folders;
    QPopupMenu *menu;
    Ktctool *ktctoolview;
    QString info;
    QStrList devices;
    QString ingressdevice;
    
    QPtrList lstFolders;
    QPtrList listinfo2;   // info from Ktctool
    QPtrList subqdiscs2;  // info from Ktctool

protected slots:
    void slotRMB( QListViewItem*, const QPoint &, int );

};

#endif

Generated by: root on dhcp-1745-109 on Sun May 25 16:54:23 2003, using kdoc 2.0a54.