-
-const struct ether_addr nullMac={.ether_addr_octet={0, 0, 0, 0, 0, 0}};
+// ----------------------------
+int trim (char *txt, int start) {
+
+ char *p, c;
+
+
+ if ( txt==NULL ) {
+ return 0;
+ }
+
+ //for (p=txt; *p!=0; p++);
+ p=txt+start;
+ for (p--; p>=txt && ( (c=*p)==' ' || c=='\n' ); *p--=0);
+
+
+ return p-txt+1;
+
+}
memset(nh, 0, sizeof(struct ng_header));
- nh->unk1=1;
+ nh->version=1;
nh->code=code;
memcpy(nh->client_mac, client_mac, ETH_ALEN);
bool validateNgHeader (const struct ng_header *nh, char code, const struct ether_addr *client_mac, const struct ether_addr *switch_mac, unsigned int seqnum) {
- if ( nh->unk1!=1 ) {
+ if ( nh->version!=1 ) {
return false;
}
return false;
}
+ if ( nh->unk1!=0 ) {
+ return false;
+ }
+
if ( *(unsigned short*)nh->unk2!=0 ) {
return false;
}
return false;
}
+ if ( memcmp(nh->proto_id, "NSDP", 4)!=0 ) {
+ return false;
+ }
+
if ( *(unsigned int*)nh->unk3!=0 ) {
return false;
}
short *v=malloc(sizeof(short));
- *v=value;
+ *v=htons(value);
return newAttr(attr, sizeof(short), v);
-// ---------------------------------------------------------------------------------------------------------------
-void extractPacketAttributes (struct ng_packet *np, unsigned short *error, unsigned short *attr_error, List *attr) {
+// --------------------------------------------------------------------------------------------------------------
+void extractPacketAttributes (struct ng_packet *np, unsigned char *error, unsigned short *attr_error, List *attr) {
struct attr *at;
- if ( error!=NULL ) *error=ntohs(np->nh->error);
+ if ( error!=NULL ) *error=np->nh->error;
if ( attr_error!=NULL ) *attr_error=ntohs(np->nh->attr);
while ( getPacketTotalSize(np)<np->maxlen ) {
memset(sa, 0, sizeof(struct swi_attr));
- // FIXME: mutex lock ?
-
for (ln=l->first; ln!=NULL; ln=ln->next) {
at=ln->data;
case ATTR_PRODUCT:
len=min(at->size, PRODUCT_SIZE);
memcpy(sa->product, at->data, len);
- //trim(sa->product, len); // FIXME
+ trim(sa->product, len);
break;
case ATTR_NAME:
len=min(at->size, NAME_SIZE);
memcpy(sa->name, at->data, len);
- //trim(sa->name, len); // FIXME
+ trim(sa->name, len);
break;
case ATTR_MAC: