witam.
do tej pory zmiany prędkości wiązały się z ręczną edycją pliku z prędkościami. plik ten ma postać:
IP:DOWNMIN:DOWNMAX:UPMIN:UPMAX
spłodziłem zapytanie pobierające prędkości z bazy i zapisujące je do pliku.
SELECT lower(nn.name) as Nazwa,inet_ntoa(nn.ipaddr) as adres, z.downrate AS downloadmin, z.downceil AS downloadmax, z.uprate AS uploadmin, z.upceil AS uploadmax FROM nodes nn
LEFT JOIN (
SELECT n.id, MIN(n.name) AS name,SUM(t.downrate) AS downrate, SUM(t.downceil) AS downceil, SUM(t.uprate) AS uprate, SUM(t.upceil) AS upceil
FROM nodeassignments na
JOIN assignments a ON (na.assignmentid = a.id)
JOIN tariffs t ON (a.tariffid = t.id)
JOIN nodes n ON (na.nodeid = n.id)
JOIN (
SELECT assignmentid, COUNT(*) AS cnt
FROM nodeassignments
GROUP BY assignmentid
) o ON (o.assignmentid = na.assignmentid)
WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0)
AND (a.dateto > unix_timestamp() OR a.dateto = 0)
AND a.suspended = 0
GROUP BY n.id
) z ON z.name = nn.name
WHERE (nn.ipaddr BETWEEN inet_aton('x.x.x.x) and inet_aton('x.x.x.y')
ORDER BY ipaddr
prędkości ładnie mi lądują do pliku. z tym, że mam pewien problem. jeden z klientów, firma ma przydzielone 5 adresów x/29. jak to pisałem ręcznie to poprostu w pliku miałem wpis:
x.x.x.112/29 gdzie skrypt tc rozpoznawał mi adres z maską, robił jedną klasę dla tej sieci i adresy z tej sieci wrzucał do tej klasy. w sumie ta sieć miała jedną, współdzieloną prędkość.
w tej chwili pobierając w ten sposób prędkości z bazy nie wyszczególniam tej sieci i klient ma na każdy host prędkość gdzie w sumie jest to 5xpredkość.
jak rozwiązać ten problem, że jeśli klient ma x komputerów należących do "jednej" sieci to w wyniku było /29?
z góry dzięki za sugestie.
--
Pozdrawiam
Marcin / nicraM