[Gelistirici] Ağ aygıtlarının device_id özelliği

Gürer Özen gurer at pardus.org.tr
25 Ağu 2009 Sal 10:13:24 EEST


On Tuesday 25 August 2009 09:59:31 Ozan Çağlayan wrote:

> pardus/netutils.py'de, bir arayüze ait UID belirleyen bir metod var
> ancak bu metod çok acayip bir şekilde yapıyor bu işi:

Oradaki amaç aletin hangi porta takılırsa takılsın bulunmasını sağlamak. 
Ayrıca bunun kernel değişimlerinden etkilenmemesini sağlamak. Malesef /sys 
dizini içerikleri ve isimlendirmeleri minor sürümlerde bile çok sık bir 
şekilde değişiyor. O yüzden kendimiz bir ID oluşturuyoruz.

Formatı da devicetipi:devicebilgileri şeklinde. Yani : dan sonraki kısımda 
vendor ve product olacak falan diye bir şey yok. Tip olarak logic: mantıksal 
arayüzler için. Mesela lo0 falan gibi şeyler. Dolayısıyla sadece ismi var. 
PCI ve USB için vendor/product ID leri var, böylece bus'ı tarayıp farklı 
porttan takılan USB kartları falan bulabiliyoruz. Ayrıca ismi de gene var. Bu 
da aynı vendor/product karttan iki tane takılırsa ayırmamıza yarıyor :)

ra0 ın gerçek bir aygıtı varsa, ilgili kod bunu detect edip modalias'ı bulacak 
bi şekle getirilebilir.

> 2. link gittiğinde ifplugd betiği /etc/ifplugd.action ra0 down diye
> çağırılıyor. Kod profilleri gezerken device_id özelliğini '_''den
> bölüyor oysa bizim id sadece logic:ra0. Interface down edilmiyor.

O kod yanlış o zaman. Belirttiğim gibi Çomar'daki ID vendor ve product içermek 
zorunda değil. Epey zaman oldu ama hatırladığım kadarıyla Çomar API içinde 
aygıtı ID'ye, ID'yi de aygıta çeviren fonksiyonlar vardı, ve her yerde 
bunları kullanmak lazım.

> Bir aygıtın bus'ını almanın çok daha kolay bir yolu vardır elbet ama
> henüz bulamadım. Bunun için modalias'a dayanmamak gerekir diye
> düşünüyorum, bu senaryoda çünkü modalias alt dizinde yer alıyor.

Malesef /sys den bilgi çıkarmak hiç basit olmuyor.



Gelistirici mesaj listesiyle ilgili daha fazla bilgi