rendered paste body#include <stdio.h>
unsigned be(unsigned i) {
return (i>>24) | ((i&255)<<24) | ((i>>8) & 0xff00) | (i<<8 & 0xff0000);
}
/*
#define RPCROUTER_CTRL_CMD_DATA 1
#define RPCROUTER_CTRL_CMD_HELLO 2
#define RPCROUTER_CTRL_CMD_BYE 3
#define RPCROUTER_CTRL_CMD_NEW_SERVER 4
#define RPCROUTER_CTRL_CMD_REMOVE_SERVER 5
#define RPCROUTER_CTRL_CMD_REMOVE_CLIENT 6
#define RPCROUTER_CTRL_CMD_RESUME_TX 7
#define RPCROUTER_CTRL_CMD_EXIT 8
#define RPCROUTER_DEFAULT_RX_QUOTA 5
union rr_control_msg {
uint32_t cmd;
struct {
uint32_t cmd;
uint32_t prog;
uint32_t vers;
uint32_t pid;
uint32_t cid;
} srv;
struct {
uint32_t cmd;
uint32_t pid;
uint32_t cid;
} cli;
};
struct rr_header {
uint32_t version;
uint32_t type;
uint32_t src_pid;
uint32_t src_cid;
uint32_t confirm_rx;
uint32_t size;
uint32_t dst_pid;
uint32_t dst_cid;
};
*/
unsigned smem[0x00100000/4];
int dumprpc(int s) {
unsigned mid=-1,len,i,type;
while(s<0x36460/4+0x2000/4 && smem[s+1]) {
type=smem[s+1];
printf("type:%d src:%x,%x dst:%x,%x conf:%d\n",smem[s+1],smem[s+2],smem[s+3],smem[s+6],smem[s+7],smem[s+4]);
len=smem[s+5]/4;
if(type==1)
for(i=0;i<len;i++)
printf("%x ",be(smem[s+i+8]));
else
for(i=0;i<len;i++)
printf("%x ",(smem[s+i+8]));
puts("");
s=s+len+8;
}
}
int main(int argc, char *argv[]) {
FILE *fin=fopen(argv[1],"rb");
fread(smem,1,0x00100000,fin);
printf("\nSend\n");
dumprpc(0x10198/4+5);
printf("\nReceive\n");
dumprpc(0x121ac/4+5);
}