00001
00002
00003
00004
00005
00006 #ifdef _MSC_VER
00007 # pragma warning(disable:4101)
00008 # pragma warning(disable:4065)
00009 #endif
00010
00011 #include <iostream>
00012 #include <sstream>
00013 #include "EtherCtrl_m.h"
00014
00015
00016 template<typename T> std::ostream& operator<<(std::ostream& out,const T&) {return out;}
00017
00018 EXECUTE_ON_STARTUP(EtherMessageKind,
00019 cEnum *e = findEnum("EtherMessageKind");
00020 if (!e) enums.instance()->add(e = new cEnum("EtherMessageKind"));
00021 e->insert(JAM_SIGNAL, "JAM_SIGNAL");
00022 e->insert(ETH_FRAME, "ETH_FRAME");
00023 e->insert(ETH_PAUSE, "ETH_PAUSE");
00024 e->insert(ETHCTRL_DATA, "ETHCTRL_DATA");
00025 e->insert(ETHCTRL_REGISTER_DSAP, "ETHCTRL_REGISTER_DSAP");
00026 e->insert(ETHCTRL_DEREGISTER_DSAP, "ETHCTRL_DEREGISTER_DSAP");
00027 e->insert(ETHCTRL_SENDPAUSE, "ETHCTRL_SENDPAUSE");
00028 );
00029
00030 EXECUTE_ON_STARTUP(EtherType,
00031 cEnum *e = findEnum("EtherType");
00032 if (!e) enums.instance()->add(e = new cEnum("EtherType"));
00033 e->insert(ETHERTYPE_IP, "ETHERTYPE_IP");
00034 e->insert(ETHERTYPE_ARP, "ETHERTYPE_ARP");
00035 e->insert(ETHERTYPE_RARP, "ETHERTYPE_RARP");
00036 );
00037
00038 EXECUTE_ON_STARTUP(SAPCode,
00039 cEnum *e = findEnum("SAPCode");
00040 if (!e) enums.instance()->add(e = new cEnum("SAPCode"));
00041 e->insert(SAP_IBM_SNA, "SAP_IBM_SNA");
00042 e->insert(SAP_IP, "SAP_IP");
00043 e->insert(SAP_3COM, "SAP_3COM");
00044 e->insert(SAP_SNAP, "SAP_SNAP");
00045 e->insert(SAP_BANYAN, "SAP_BANYAN");
00046 e->insert(SAP_NOVELL_IPX, "SAP_NOVELL_IPX");
00047 e->insert(SAP_LAN_MANAGER, "SAP_LAN_MANAGER");
00048 e->insert(SAP_CLNS, "SAP_CLNS");
00049 );
00050
00051 EtherCtrl::EtherCtrl() : cPolymorphic()
00052 {
00053 unsigned int i;
00054 this->etherType_var = 0;
00055 this->ssap_var = 0;
00056 this->dsap_var = 0;
00057 this->pauseUnits_var = 0;
00058 }
00059
00060 EtherCtrl::EtherCtrl(const EtherCtrl& other) : cPolymorphic()
00061 {
00062 unsigned int i;
00063 operator=(other);
00064 }
00065
00066 EtherCtrl::~EtherCtrl()
00067 {
00068 unsigned int i;
00069 }
00070
00071 EtherCtrl& EtherCtrl::operator=(const EtherCtrl& other)
00072 {
00073 if (this==&other) return *this;
00074 unsigned int i;
00075 cPolymorphic::operator=(other);
00076 this->src_var = other.src_var;
00077 this->dest_var = other.dest_var;
00078 this->etherType_var = other.etherType_var;
00079 this->ssap_var = other.ssap_var;
00080 this->dsap_var = other.dsap_var;
00081 this->pauseUnits_var = other.pauseUnits_var;
00082 return *this;
00083 }
00084
00085 MACAddress& EtherCtrl::getSrc()
00086 {
00087 return src_var;
00088 }
00089
00090 void EtherCtrl::setSrc(const MACAddress& src_var)
00091 {
00092 this->src_var = src_var;
00093 }
00094
00095 MACAddress& EtherCtrl::getDest()
00096 {
00097 return dest_var;
00098 }
00099
00100 void EtherCtrl::setDest(const MACAddress& dest_var)
00101 {
00102 this->dest_var = dest_var;
00103 }
00104
00105 int EtherCtrl::getEtherType() const
00106 {
00107 return etherType_var;
00108 }
00109
00110 void EtherCtrl::setEtherType(int etherType_var)
00111 {
00112 this->etherType_var = etherType_var;
00113 }
00114
00115 int EtherCtrl::getSsap() const
00116 {
00117 return ssap_var;
00118 }
00119
00120 void EtherCtrl::setSsap(int ssap_var)
00121 {
00122 this->ssap_var = ssap_var;
00123 }
00124
00125 int EtherCtrl::getDsap() const
00126 {
00127 return dsap_var;
00128 }
00129
00130 void EtherCtrl::setDsap(int dsap_var)
00131 {
00132 this->dsap_var = dsap_var;
00133 }
00134
00135 int EtherCtrl::getPauseUnits() const
00136 {
00137 return pauseUnits_var;
00138 }
00139
00140 void EtherCtrl::setPauseUnits(int pauseUnits_var)
00141 {
00142 this->pauseUnits_var = pauseUnits_var;
00143 }
00144
00145 class EtherCtrlDescriptor : public cStructDescriptor
00146 {
00147 public:
00148 EtherCtrlDescriptor(void *p=NULL);
00149 virtual ~EtherCtrlDescriptor();
00150 EtherCtrlDescriptor& operator=(const EtherCtrlDescriptor& other);
00151 virtual cObject *dup() const {return new EtherCtrlDescriptor(*this);}
00152
00153 virtual int getFieldCount();
00154 virtual const char *getFieldName(int field);
00155 virtual int getFieldType(int field);
00156 virtual const char *getFieldTypeString(int field);
00157 virtual const char *getFieldEnumName(int field);
00158 virtual int getArraySize(int field);
00159
00160 virtual bool getFieldAsString(int field, int i, char *resultbuf, int bufsize);
00161 virtual bool setFieldAsString(int field, int i, const char *value);
00162
00163 virtual const char *getFieldStructName(int field);
00164 virtual void *getFieldStructPointer(int field, int i);
00165 virtual sFieldWrapper *getFieldWrapper(int field, int i);
00166 };
00167
00168 Register_Class(EtherCtrlDescriptor);
00169
00170 EtherCtrlDescriptor::EtherCtrlDescriptor(void *p) : cStructDescriptor(p)
00171 {
00172 }
00173
00174 EtherCtrlDescriptor::~EtherCtrlDescriptor()
00175 {
00176 }
00177
00178 int EtherCtrlDescriptor::getFieldCount()
00179 {
00180 return 6;
00181 }
00182
00183 int EtherCtrlDescriptor::getFieldType(int field)
00184 {
00185 switch (field) {
00186 case 0: return FT_STRUCT;
00187 case 1: return FT_STRUCT;
00188 case 2: return FT_BASIC;
00189 case 3: return FT_BASIC;
00190 case 4: return FT_BASIC;
00191 case 5: return FT_BASIC;
00192 default: return FT_INVALID;
00193 }
00194 }
00195
00196 const char *EtherCtrlDescriptor::getFieldName(int field)
00197 {
00198 switch (field) {
00199 case 0: return "src";
00200 case 1: return "dest";
00201 case 2: return "etherType";
00202 case 3: return "ssap";
00203 case 4: return "dsap";
00204 case 5: return "pauseUnits";
00205 default: return NULL;
00206 }
00207 }
00208
00209 const char *EtherCtrlDescriptor::getFieldTypeString(int field)
00210 {
00211 switch (field) {
00212 case 0: return "MACAddress";
00213 case 1: return "MACAddress";
00214 case 2: return "int";
00215 case 3: return "int";
00216 case 4: return "int";
00217 case 5: return "int";
00218 default: return NULL;
00219 }
00220 }
00221
00222 const char *EtherCtrlDescriptor::getFieldEnumName(int field)
00223 {
00224 switch (field) {
00225 default: return NULL;
00226 }
00227 }
00228
00229 int EtherCtrlDescriptor::getArraySize(int field)
00230 {
00231 EtherCtrl *pp = (EtherCtrl *)p;
00232 switch (field) {
00233 default: return 0;
00234 }
00235 }
00236
00237 bool EtherCtrlDescriptor::getFieldAsString(int field, int i, char *resultbuf, int bufsize)
00238 {
00239 EtherCtrl *pp = (EtherCtrl *)p;
00240 switch (field) {
00241 case 0: {std::stringstream out; out << pp->getSrc(); opp_strprettytrunc(resultbuf,out.str().c_str(),bufsize-1); return true;}
00242 case 1: {std::stringstream out; out << pp->getDest(); opp_strprettytrunc(resultbuf,out.str().c_str(),bufsize-1); return true;}
00243 case 2: long2string(pp->getEtherType(),resultbuf,bufsize); return true;
00244 case 3: long2string(pp->getSsap(),resultbuf,bufsize); return true;
00245 case 4: long2string(pp->getDsap(),resultbuf,bufsize); return true;
00246 case 5: long2string(pp->getPauseUnits(),resultbuf,bufsize); return true;
00247 default: return false;
00248 }
00249 }
00250
00251 bool EtherCtrlDescriptor::setFieldAsString(int field, int i, const char *value)
00252 {
00253 EtherCtrl *pp = (EtherCtrl *)p;
00254 switch (field) {
00255 case 0: return false;
00256 case 1: return false;
00257 case 2: pp->setEtherType(string2long(value)); return true;
00258 case 3: pp->setSsap(string2long(value)); return true;
00259 case 4: pp->setDsap(string2long(value)); return true;
00260 case 5: pp->setPauseUnits(string2long(value)); return true;
00261 default: return false;
00262 }
00263 }
00264
00265 const char *EtherCtrlDescriptor::getFieldStructName(int field)
00266 {
00267 switch (field) {
00268 case 0: return "MACAddress"; break;
00269 case 1: return "MACAddress"; break;
00270 default: return NULL;
00271 }
00272 }
00273
00274 void *EtherCtrlDescriptor::getFieldStructPointer(int field, int i)
00275 {
00276 EtherCtrl *pp = (EtherCtrl *)p;
00277 switch (field) {
00278 case 0: return (void *)&pp->getSrc(); break;
00279 case 1: return (void *)&pp->getDest(); break;
00280 default: return NULL;
00281 }
00282 }
00283
00284 sFieldWrapper *EtherCtrlDescriptor::getFieldWrapper(int field, int i)
00285 {
00286 return NULL;
00287 }
00288