Amir писал(а):
Наверное стоит нам такую вешь добавить стандартно.
Давно пора, еще со времен dialup

Amir писал(а):
я думал, что на cisco можно настроить чтобы в Calling-Station-Id приходил хоть MAC, хотя IP-адрес.
Проблема с цисками в том, что далеко не на всех IOS это можно настроить (на сколько помню с 99% гарантией это настраивается только в IOS с поддержкой ISG). Там где можно настроить - МАС почти со 100% вероятностью прилетит в формате:
Код:
cisco-avpair=client-mac-address=0102.0304.0506
В некоторых IOS можно сказать "unformatted" тогда МАС прилетит так:
Код:
cisco-avpair=client-mac-address=010203040506
Или "ietf", тогда МАС будет таким (либо двоеточия либо тире - точно не помню уже):
Код:
cisco-avpair=client-mac-address=01:02:03:04:05:06
Но если 2-й или 3-й варианты далеко не факт, то сам формат сообщения с 1-м вариантом всяко будет, если циска умеет слать 31-й атрибут и если включить отправку VSA.
Амир, если все же решишь запилить стандартно, то не забудь про тех у кого эрики - там МАС прилетает так:
Код:
Mac-Addr=01-02-03-04-05-06
Это 145-й атрибут:
Код:
<attribute name="Mac-Addr" type="string" code="145" />
При чем скорее всего Calling-Station-Id придется принудительно заменять, т.к. в зависимости от настроек там может быть всякое, например у меня сейчас на dialup работает такое:
Код:
/**
1. Берем VLAN ID из атрибута Calling-Station-Id и вставляем его в атрибут NAS-Port-Id
2. Берем МАС адрес пользователя из атрибута Mac-Addr и вставлем его в атрибут Calling-Station-Id
*/
macAddr = request.getVendorAttributes(2352, 145);
if (request.hasAttribute(31))
{
String value = request.getStringAttribute(31);
if (value != null)
{
request.setStringAttribute(87, value.split("#")[2]);
}
if (macAddr != null)
{
value = macAddr.get(0).getStringValue();
if (value != null)
{
request.setStringAttribute(31, value.replace("-", ""));
}
}
}