static void PrintSpans (const cc65_spaninfo* S) /* Output a list of spans */ { unsigned I; const cc65_spandata* D; /* Segments */ for (I = 0, D = S->data; I < S->count; ++I, ++D) { PrintId (D->span_id, 7); PrintAddr (D->span_start, 8); PrintAddr (D->span_end, 9); PrintId (D->segment_id, 7); PrintId (D->type_id, 6); PrintNumber (D->line_count, 6, 7); PrintNumber (D->scope_count, 7, 0); NewLine (); } }
/*--------------------------------------------------------------------*/ void DumpPacket(char *buffer, int len) { struct ip_packet *ip=(void*)buffer; printf("-------------------------------------------------\n"); dump(buffer, len); PrintAddr("Destination EtherID=", ip->hw_header.dst_eth, eETH_ADDR); PrintAddr(", Source EtherID=", ip->hw_header.src_eth, eETH_ADDR); printf("\nIPv%d: header-len=%d, type=%d, packet-size=%d, ID=%d\n", ip->version, ip->header_len*4, ip->serve_type, ntohs(ip->packet_len), ntohs(ip->ID)); printf("frag=%c, more=%c, offset=%d, TTL=%d, protocol=%s\n", (ip->dont_frag? 'N': 'Y'), (ip->more_frags? 'N': 'Y'), ip->frag_offset, ip->time_to_live, GetProtocol(ip->protocol)); printf("checksum=%d, ", ntohs(ip->hdr_chksum)); PrintAddr("source=", ip->IPv4_src, eIP_ADDR); PrintAddr(", destination=", ip->IPv4_dst, eIP_ADDR); printf("\n"); fflush(stdout); }
void MainWidget::PrintMacAddr(const QString &arg) const { bool ok=false; uint64_t mac; mac=arg.toULongLong(&ok,16); if(ok) { if((mac&0xFFFFFFFF0000ull)==0x01005e000000ull) { // Stereo if((mac&0x00000000FF00ull)==0xFF00) { PrintSpecialChannel(mac&0xFF); } else { PrintAddr(mac&0xFFFF,MainWidget::Stereo); } } if((mac&0xFFFFFFFF0000ull)==0x01005e010000ull) { // Backfeed PrintAddr(mac&0xFFFF,MainWidget::Backfeed); } if((mac&0xFFFFFFFF0000ull)==0x01005e040000ull) { // Surround PrintAddr(mac&0x7FFF,MainWidget::Surround); } } }
static void PrintSegments (const cc65_segmentinfo* S) /* Output a list of segments */ { unsigned I; const cc65_segmentdata* D; /* Segments */ for (I = 0, D = S->data; I < S->count; ++I, ++D) { PrintId (D->segment_id, 8); Print ("%-16s", D->segment_name); PrintAddr (D->segment_start, 9); PrintSize (D->segment_size, 7); Print ("%-16s", D->output_name? D->output_name : ""); PrintSize (D->output_offs, 6); NewLine (); } }
void MainWidget::PrintAddr(const QString &arg) const { // // Address ranges taken from "Intro to LiveWire v2.1.1", pp 113-114 // unsigned src; bool ok; QStringList f0; unsigned octets[4]; uint32_t addr; // // Are we a stream ID? // if(arg.length()==8) { addr=arg.toUInt(&ok,16); if(ok) { if((addr&0xffff0000)==0xefc00000) { if((addr&0x0000ff00)==0xff00) { PrintSpecialChannel(addr&0xff); } else { PrintAddr(addr&0xffff,MainWidget::Stereo); } } if((addr&0xffff0000)==0xefc40000) { PrintAddr(addr&0xffff,MainWidget::Backfeed); } if((addr&0xffff0000)==0xefc10000) { PrintAddr(addr&0x7fff,MainWidget::Surround); } } } // // Are we a MAC address? // if(arg.length()==12) { PrintMacAddr(arg); } f0=arg.split(":"); if(f0.size()==6) { PrintMacAddr(f0.join("")); } f0=arg.split("-"); if(f0.size()==6) { PrintMacAddr(f0.join("")); } // // Are we a source number? // src=arg.toUInt(&ok); if((ok)&&(src>0)&&(src<32768)) { PrintAddr(src); } // // Are we an IP address? // f0=arg.split("."); if(f0.size()==4) { for(int i=0;i<4;i++) { octets[i]=f0[i].toUInt(&ok); if((!ok)||(octets[i]>255)) { fprintf(stderr,"lwaddr: invalid argument\n"); exit(256); } } if(octets[0]==239) { if((octets[1]==192)&&(octets[2]<128)) { PrintAddr(256*octets[2]+octets[3],MainWidget::Stereo); } if((octets[1]==193)&&(octets[2]<128)) { PrintAddr(256*octets[2]+octets[3],MainWidget::Backfeed); } if((octets[1]==196)&&(octets[2]>=128)) { PrintAddr(256*(octets[2]-128)+octets[3],MainWidget::Surround); } if((octets[1]==192)&&(octets[2]=255)) { PrintSpecialChannel(octets[3]); } } } fprintf(stderr,"lwaddr: invalid argument\n"); exit(256); }
MainWidget::MainWidget(QWidget *parent) : QMainWindow(parent) { lw_port=0; bool ok=false; // // Process Arguments // lw_colorize=true; lw_mode=SetMode(); CmdSwitch *cmd=new CmdSwitch(qApp->argc(),qApp->argv(),"lwmon",LWMON_USAGE); if(cmd->keys()==0) { fprintf(stderr,"%s\n",LWMON_USAGE); exit(256); } for(unsigned i=0;i<cmd->keys()-1;i++) { if(cmd->key(i)=="--color") { if((cmd->value(i).toLower()=="off")|| (cmd->value(i).toLower()=="no")|| (cmd->value(i).toLower()=="false")) { lw_colorize=false; cmd->setProcessed(i,true); } if((cmd->value(i).toLower()=="on")|| (cmd->value(i).toLower()=="yes")|| (cmd->value(i).toLower()=="true")) { lw_colorize=true; cmd->setProcessed(i,true); } if(!cmd->processed(i)) { fprintf(stderr,"lwmon: invalid argument to --color switch\n"); exit(256); } } if(cmd->key(i)=="--mode") { if(cmd->value(i).toLower()=="lwcp") { lw_mode=MainWidget::Lwcp; cmd->setProcessed(i,true); } if(cmd->value(i).toLower()=="lwrp") { lw_mode=MainWidget::Lwrp; cmd->setProcessed(i,true); } if(cmd->value(i).toLower()=="lwaddr") { lw_mode=MainWidget::Lwaddr; cmd->setProcessed(i,true); } if(!cmd->processed(i)) { fprintf(stderr,"lwmon: invalid \"--mode\" argument"); exit(256); } } if(cmd->key(i)=="--port") { lw_port=cmd->value(i).toUInt(&ok); if(!ok) { fprintf(stderr,"lwmon: invalid port argument\n"); exit(256); } cmd->setProcessed(i,true); } if(!cmd->processed(i)) { fprintf(stderr,"lwmon: invalid argument \"%s\"\n", (const char *)cmd->key(i).toUtf8()); exit(256); } } // // Set Mode Defaults // switch(lw_mode) { case MainWidget::Lwcp: if(lw_port==0) { lw_port=LWMON_LWCP_DEFAULT_PORT; } setWindowTitle(tr("LWCP Monitor")); if(CheckSettingsDirectory()) { lw_history_path=lw_settings_dir->path()+"/"+LWMON_LWCP_HISTORY_FILE; } break; case MainWidget::Lwrp: if(lw_port==0) { lw_port=LWMON_LWRP_DEFAULT_PORT; } setWindowTitle(tr("LWRP Monitor")); if(CheckSettingsDirectory()) { lw_history_path=lw_settings_dir->path()+"/"+LWMON_LWRP_HISTORY_FILE; } break; case MainWidget::Lwaddr: PrintAddr(cmd->key(cmd->keys()-1)); break; } // // Process Connection Arguments // lw_hostname=cmd->key(cmd->keys()-1); // // UI Elements // lw_text=new QTextEdit(this); lw_text->setReadOnly(true); lw_text->setFocusPolicy(Qt::NoFocus); lw_edit=new LineEdit(this); connect(lw_edit,SIGNAL(returnPressed()),this,SLOT(editReturnPressedData())); lw_edit->loadHistory(lw_history_path); lw_status_frame_widget=new QLabel(this); lw_status_frame_widget->setFrameStyle(QFrame::Box|QFrame::Raised); lw_status_widget=new StatusWidget(this); lw_status_widget->setStatus(StatusWidget::Connecting); lw_button=new QPushButton(tr("&Clear"),this); lw_button->setFocusPolicy(Qt::NoFocus); connect(lw_button,SIGNAL(clicked()),lw_text,SLOT(clear())); // // Socket // lw_tcp_socket=new QTcpSocket(this); connect(lw_tcp_socket,SIGNAL(connected()),this,SLOT(tcpConnectedData())); connect(lw_tcp_socket,SIGNAL(disconnected()), this,SLOT(tcpDisconnectedData())); connect(lw_tcp_socket,SIGNAL(readyRead()),this,SLOT(tcpReadyReadData())); connect(lw_tcp_socket,SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(tcpErrorData(QAbstractSocket::SocketError))); lw_tcp_socket->connectToHost(lw_hostname,lw_port); setMinimumSize(sizeHint()); }