ifconfig에 대해서 질문합니다.

카푸리의 이미지

명령행에서 ifconfig eth0 192.168.1.15 up을
코드로 짜려고 합니다.

어떻게 해야 할지 모르겠네요.

고수님들에 조언을 듣습니다.

paperplane의 이미지

#include <stdlib.h>

system ("ifconfig eth0 192.168.1.15 up");

wariua의 이미지

혹은

#include <unistd.h>

if (fork() == 0)
    execl("/sbin/ifconfig", "ifconfig", "eth0", "192.168.1.15", "up", NULL);

혹은 ifconfig 소스...

$PWD `date`

comgineer의 이미지

개발하던 장비에서 라이브러리로 사용하기 위해 만들었던 것입니다. 참고하세요

#define SET_MASK        (0x01)
#define CLR_MASK        (0x02)
int
apn_set_inet(const unsigned int cmd, const char *ifn, const char *args)
{
        struct ifreq ifr;
        struct sockaddr_in sai;
        unsigned short selector = 0, flags = 0;
        unsigned int mask = 0;
        char host[128];
        int fd = -1;

        if (!(cmd & (APN_INET_SET_IPADDR | APN_INET_SET_NETMASK |
                     APN_INET_SET_BROADCAST | APN_INET_SET_PROMISC |
                     APN_INET_SET_IFFUP)))
                return -1;

        DEBUG("%s (cmd:%d,args:%s)\n",
                ifn, cmd, (args != NULL) ? args : "NULL");

        memset((char *)&ifr, 0, sizeof (struct ifreq));
        safe_strncpy(ifr.ifr_name, ifn, IFNAMSIZ);

        sai.sin_family = AF_INET;
        sai.sin_port = 0;
        if ((args != NULL) && !(cmd & APN_INET_SET_FLAGS)) {
                safe_strncpy(host, args, sizeof(host));
                if (inet_aton(host, &sai.sin_addr) == 0)
                        return -1;
        } else
                sai.sin_addr.s_addr = INADDR_ANY;

        switch(cmd) {
        case APN_INET_SET_IPADDR:
                selector = SIOCSIFADDR;
                memcpy((char *)&ifr.ifr_addr, (char *)&sai,
                        sizeof(struct sockaddr));
                break;
        case APN_INET_SET_NETMASK:
                selector = SIOCSIFNETMASK;
                memcpy((char *)&ifr.ifr_netmask, (char *)&sai,
                        sizeof(struct sockaddr));
                break;
        case APN_INET_SET_BROADCAST:
                selector = SIOCSIFBRDADDR;
                memcpy((char *)&ifr.ifr_broadaddr, (char *)&sai,
                        sizeof(struct sockaddr));
                break;
        case APN_INET_SET_PROMISC:
                selector = SIOCGIFFLAGS;
                flags = IFF_PROMISC;
                if (!strcmp(args, "on") || !strcmp(args, "yes")
                    || !strcmp(args, "1"))
                        mask = SET_MASK;
                else
                        mask = CLR_MASK;
                break;
        case APN_INET_SET_IFFUP:
                selector = SIOCGIFFLAGS;
                flags = (IFF_UP | IFF_RUNNING);
                if (!strcmp(args, "on") || !strcmp(args, "yes")
                    || !strcmp(args, "up"))
                        mask = SET_MASK;
                else
                        mask = CLR_MASK;
                break;
        default:
                break;
        }

        fd = socket(AF_INET, SOCK_DGRAM, 0);
        if (ioctl(fd, selector, &ifr) < 0)
                return -1;

        if (mask) {
                if (mask & SET_MASK)
                        ifr.ifr_flags |= flags;
                else
                        ifr.ifr_flags &= ~flags;

                if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) {
                        close(fd);
                        return -1;
                }
        }

        DEBUG("success!!\n");
        close(fd);
        return 0;
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.