Перейти к содержимому
Калькуляторы

Доработка pppd + rp pppoe, вопрос к программерам

Очень-очень требуется получать в биллинге интерфейс с которого пришёл клиент на NAS (у нас это влан на кампусный узел), тот самый что виден как nic-Х при запуске pppd,

перерыл инет, нет патча реализующего это.

 

Если кто-то имеет наработки по данному вопросу прошу отозваться в личку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Очень-очень требуется получать в биллинге интерфейс с которого пришёл клиент на NAS (у нас это влан на кампусный узел), тот самый что виден как nic-Х при запуске pppd,

перерыл инет, нет патча реализующего это.

 

Если кто-то имеет наработки по данному вопросу прошу отозваться в личку.

патч, который в МАС-адрес клиента добавляет имя интерфейса

затем этот адрес передается в качестве remotenumber и ipparam pppd.

 

--- rp-pppoe-3.10/src/pppoe-server.c    2008-06-30 20:00:43.000000000 +0600
+++ rp-pppoe-3.10-my/src/pppoe-server.c 2009-05-02 16:16:55.000000000 +0600
@@ -1746,6 +1746,16 @@
     argv[c++] = "novj";
     argv[c++] = "novjccomp";
     argv[c++] = "default-asyncmap";
+
+    snprintf(buffer, SMALLBUF, "%s:%02x:%02x:%02x:%02x:%02x:%02x",
+             session->ethif->name,
+             session->eth[0], session->eth[1], session->eth[2],
+             session->eth[3], session->eth[4], session->eth[5]);
+    argv[c++] = "ipparam";
+    argv[c++] = strdup(buffer);
+    argv[c++] = "remotenumber";
+    argv[c++] = strdup(buffer);
+
     if (Synchronous) {
        argv[c++] = "sync";
     }
@@ -1832,6 +1842,16 @@
     argv[c++] = "novj";
     argv[c++] = "novjccomp";
     argv[c++] = "default-asyncmap";
+
+    snprintf(buffer, SMALLBUF, "%s:%02x:%02x:%02x:%02x:%02x:%02x",
+             session->ethif->name,
+             session->eth[0], session->eth[1], session->eth[2],
+             session->eth[3], session->eth[4], session->eth[5]);
+    argv[c++] = "ipparam";
+    argv[c++] = strdup(buffer);
+    argv[c++] = "remotenumber";
+    argv[c++] = strdup(buffer);
+
     if (PassUnitOptionToPPPD) {
        argv[c++] = "unit";
        sprintf(buffer, "%u", (unsigned int) (ntohs(session->sess) - 1 - SessOffset));

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, но каким образом мне передать эти данные на радиус биллинга?

 

radius.c

if (*remote_number) {
        rc_avpair_add(&send, PW_CALLING_STATION_ID, remote_number, 0,
                       VENDOR_NONE);
    } else if (ipparam)
        rc_avpair_add(&send, PW_CALLING_STATION_ID, ipparam, 0, VENDOR_NONE);

 

PW_CALLING_STATION_ID у меня уходит, с ipparam не могу разобраться.

Изменено пользователем disappointed

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

  rc_avpair_add(&send, PW_CALLING_STATION_ID, remote_number, 0,
                       VENDOR_NONE);

вот, как раз этим передается в атрибуте Calling-Station-Id то, что изначально из командной строки попадает из параметра remotenumber.

 

а ipparam обычно используется в скриптах ip-up, ip-down, куда он передается 6-ым параметром.

 

так что ловите радиусом Calling-Station-Id.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так что ловите радиусом Calling-Station-Id.

Не получаю в этом аттрибуте, там обычный мак, ищу косяк и не вижу его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так что ловите радиусом Calling-Station-Id.
Не получаю в этом аттрибуте, там обычный мак, ищу косяк и не вижу его.

ну не разберёшься, пиши в аську.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.