int cisco_out_ap_timesync(struct cw_ElemHandler * eh, struct cw_ElemHandlerParams * params, uint8_t * dst) { cw_set_dword(dst+10 , time(NULL)); cw_set_byte(dst+10 + 4, 0); return 5 + cw_put_elem_vendor_hdr(dst, eh->vendor , eh->id, 5); }
int cw_out_generic(struct conn *conn, struct cw_action_out *a, uint8_t * dst) // ,struct mbag_item * item) { /* Get the item to put */ struct mbag_item *item = NULL; if (a->get) { item = a->get(conn, a); } /* Size for msg elem header depends on vendor specific payload */ int start = a->vendor_id ? 10 : 4; int len; if (!item) { const char *vendor=""; if ( a->vendor_id ) { vendor=cw_strvendor(a->vendor_id); } if (a->mand) { cw_log(LOG_ERR, "Can't put mandatory element %s%d - (%s) into %s. No value found.", vendor, a->elem_id, cw_strelemp(conn->actions, a->elem_id) , cw_strmsg(a->msg_id) ); } else{ cw_dbg(DBG_WARN,"No output for element %s%d -(%s) in %s. Item %s not found.", vendor, a->elem_id, cw_strelemp(conn->actions, a->elem_id) , cw_strmsg(a->msg_id),a->item_id); } return 0; } else { len = cw_put_item(dst + start, item); } if (a->vendor_id) return len + cw_put_elem_vendor_hdr(dst, a->vendor_id, a->elem_id, len); return len + cw_put_elem_hdr(dst, a->elem_id, len); }
int cisco_out_lw_path_mtu(struct cw_ElemHandler * eh, struct cw_ElemHandlerParams * params, uint8_t * dst) { char key[CW_KTV_MAX_KEY_LEN]; int len,max; sprintf(key,"%s/%s",eh->key,"len"); len = cw_ktv_get_word(params->conn->local_cfg,key,0); if (len == 0) return 0; sprintf(key,"%s/%s",eh->key,"max"); max = cw_ktv_get_word(params->conn->local_cfg,key,0); lw_set_word(dst+16,max); lw_set_word(dst+16+2,len); memset(dst+16+4,0,len-4); /* put the lwap elem header */ lw_set_dword(dst + 10, eh->vendor); lw_set_word(dst + 14, eh->id); return len + 6 + cw_put_elem_vendor_hdr(dst, eh->vendor, CISCO_ELEM_SPAM_VENDOR_SPECIFIC, len+6); }