MES3.0はLinuxの下位互換性であり、MES3.0のユーザープログラムは原則としてLinuxでも同じソースコードで動作します。
以下、MES3.0で動作確認されたLinuxとソースコード互換のゲートウェイ設定の例です。
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <net/route.h>
int main(int argc, char **argv) {
int sk, ret;
struct rtentry stuRTEntry;
struct sockaddr_in stcAddr;
sk = socket(AF_INET, SOCK_DGRAM, 0);
memset(&stuRTEntry, 0x00, sizeof(stuRTEntry));
stcAddr.sin_family = AF_INET;
stcAddr.sin_port = 0;
stcAddr.sin_addr.s_addr = inet_addr(argv[1]);
memcpy(&stuRTEntry.rt_gateway, (char*)&stcAddr, sizeof(stcAddr));
stuRTEntry.rt_dev = "ne0";
stuRTEntry.rt_metric = 100;
stuRTEntry.rt_flags = (RTF_UP | RTF_GATEWAY);
stcAddr.sin_addr.s_addr = INADDR_ANY;
memcpy(&stuRTEntry.rt_dst, (char*)&stcAddr, sizeof(stcAddr));
memcpy(&stuRTEntry.rt_genmask, (char*)&stcAddr, sizeof(stcAddr));
ret = ioctl(sk, SIOCADDRT, &stuRTEntry);
// ret = ioctl(sk, SIOCDELRT, &stuRTEntry);
if(ret == -1) printf("Route error\n");
close(sk);
return 0;
}