Annotation of nono/host/netdriver.h, revision 1.1.1.11

1.1       root        1: //
                      2: // nono
1.1.1.3   root        3: // Copyright (C) 2020 nono project
                      4: // Licensed under nono-license.txt
1.1       root        5: //
                      6: 
1.1.1.9   root        7: //
                      8: // ホストネットワークのドライバ (基本クラス)
                      9: //
                     10: 
1.1       root       11: #pragma once
                     12: 
1.1.1.9   root       13: #include "driver.h"
                     14: #include "autofd.h"
                     15: 
                     16: class NetPacket;
1.1       root       17: 
1.1.1.9   root       18: class NetDriver : public Driver
1.1       root       19: {
1.1.1.9   root       20:        using inherited = Driver;
1.1       root       21: 
1.1.1.9   root       22:  protected:
                     23:        NetDriver(HostDevice *hostdev_, const char *drivername_);
1.1.1.8   root       24:  public:
1.1.1.10  root       25:        ~NetDriver() override;
1.1       root       26: 
1.1.1.9   root       27:        // パケットを外部から受信する。
                     28:        // VM に送り込むパケットがなければ負数(NODATA)を返す。
                     29:        // VM に送り込むパケットがあれば p に書き戻して、ドライバ側のバッファに
                     30:        // 残っているパケット数 (といっても 0 か 1以上) を返す。
                     31:        virtual int Read(NetPacket *p) = 0;
1.1       root       32: 
1.1.1.9   root       33:        // パケットを外部に送信する。
                     34:        virtual void Write(const void *buf, int buflen) = 0;
1.1.1.8   root       35: 
1.1.1.7   root       36:  protected:
1.1.1.9   root       37:        // ifup/ifdown スクリプト実行
                     38:        bool Run_ifup();
                     39:        bool Run_ifdown();
1.1       root       40: 
1.1.1.8   root       41:        std::string ifname {};          // (あれば)作成したインタフェース名
1.1       root       42: 
                     43:        // デバイスディスクリプタ。
                     44:        // ディスクリプタを持つというのは共通なのでディスクリプタはここに置くが
                     45:        // これを Open(), Close() するのはあくまで継承側の仕事で、こちらでは
1.1.1.11! root       46:        // 初期化と IsOpen() だけ受け持つ。ちょっと責任分界点が気持ち悪いけど。
1.1.1.9   root       47:        autofd fd {};
1.1       root       48: 
                     49:  private:
                     50:        bool RunScript(const char *filename);
                     51: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.