[Lunar-commits] CVS: moonbase/zbeta/openafs-devel/etc
openafs-CellServDB, NONE, 1.1 openafs-SuidCells, NONE,
1.1 openafs-afsmodname, NONE, 1.1 openafs-cacheinfo, NONE, 1.1
Jerry Lundström
prox at lunar-linux.org
Wed Nov 17 15:41:00 UTC 2004
- Previous message: [Lunar-commits] CVS: moonbase/zbeta/openafs-devel BUILD, NONE,
1.1 DEPENDS, NONE, 1.1 DETAILS, NONE, 1.1 POST_INSTALL, NONE, 1.1
- Next message: [Lunar-commits]
CVS: moonbase/zbeta/openafs-driver-devel BUILD, NONE,
1.1 DEPENDS, NONE, 1.1 DETAILS, NONE, 1.1 POST_INSTALL, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/cvs/lunar/moonbase/zbeta/openafs-devel/etc
In directory espresso.foo-projects.org:/tmp/cvs-serv19518/openafs-devel/etc
Added Files:
openafs-CellServDB openafs-SuidCells openafs-afsmodname
openafs-cacheinfo
Log Message:
added developer version of openafs, this works on both 2.4 and 2.6
--- NEW FILE: openafs-CellServDB ---
>grand.central.org #GCO Public CellServDB 26 Feb 2003
18.7.14.88 #grand-opening.mit.edu
128.2.191.224 #penn.central.org
>wu-wien.ac.at #University of Economics, Vienna, Austria
137.208.3.33 #afsdb1.wu-wien.ac.at
137.208.7.4 #afsdb2.wu-wien.ac.at
137.208.7.7 #afsdb3.wu-wien.ac.at
>cern.ch #European Laboratory for Particle Physics, Geneva
137.138.128.148 #afsdb1.cern.ch
137.138.246.50 #afsdb3.cern.ch
137.138.246.51 #afsdb2.cern.ch
>ams.cern.ch #AMS Experiment
137.138.206.77 #pcamsf2.cern.ch
137.138.206.123 #pcamsf4.cern.ch
>ethz.ch #Swiss Federal Inst. of Tech. - Zurich, Switzerland
129.132.97.19 #amalthea.ethz.ch
129.132.97.27 #nethzafs-001.ethz.ch
129.132.115.3 #himalia.ethz.ch
129.132.115.37 #nethzafs-005.ethz.ch
129.132.115.38 #nethzafs-006.ethz.ch
>psi.ch #Paul Scherrer Institut - Villigen, Switzerland
129.129.16.10 #afs1.psi.ch
129.129.16.11 #afs2.psi.ch
>extundo.com #Simon Josefsson's cell
195.42.214.241 #slipsten.extundo.com
>mekinok.com #Mekinok, Inc.
4.36.43.98 #loggerhead.mekinok.com
>sodre.cx #Sodre.cx
128.8.140.165 #greed.sodre.cx
>desy.de #Deutsches Elektronen-Synchrotron
131.169.40.62 #vayu.desy.de
131.169.244.60 #solar00.desy.de
>gppc.de #GPP Chemnitz mbH
213.187.92.33 #gpp1.gppc.de
213.187.92.34 #paulchen.gppc.de
213.187.92.35 #lotus.gppc.de
>ifh.de #DESY Zeuthen
141.34.22.10 #romulus.ifh.de
141.34.22.11 #remus.ifh.de
141.34.22.29 #hekate.ifh.de
>lrz-muenchen.de #Leibniz-Rechenzentrum Muenchen
129.187.10.36 #afs1.lrz-muenchen.de
129.187.14.10 #afs3.lrz-muenchen.de
129.187.14.12 #afs2.lrz-muenchen.de
>ipp-garching.mpg.de #Institut fuer Plasmaphysik
130.183.9.5 #afs-db1.rzg.mpg.de
130.183.100.10 #afs-db2.aug.ipp-garching.mpg.de
130.183.100.23 #afs-db3.aug.ipp-garching.mpg.de
>tu-chemnitz.de #Technische Universitaet Chemnitz, Germany
134.109.2.1 #zuse.hrz.tu-chemnitz.de
134.109.2.15 #phoenix.hrz.tu-chemnitz.de
134.109.200.7 #aetius.hrz.tu-chemnitz.de
>uni-bonn.de #Cell name
131.220.14.198 #work15-eth.rhrz.uni-bonn.de
131.220.14.203 #node03-en2.rhrz.uni-bonn.de
131.220.14.205 #node05.rhrz.uni-bonn.de
>uni-freiburg.de #Albert-Ludwigs-Universitat Freiburg
132.230.6.235 #sv6.ruf.uni-freiburg.de
132.230.6.236 #sv7.ruf.uni-freiburg.de
132.230.6.237 #sv8.ruf.uni-freiburg.de
>uni-hohenheim.de #University of Hohenheim
144.41.2.2 #rs13.serv.uni-hohenheim.de
144.41.2.3 #rs14.serv.uni-hohenheim.de
144.41.2.4 #rs15.serv.uni-hohenheim.de
>meteo.uni-koeln.de #Univ. of Cologne - Inst. for Geophysics & Meteorology
134.95.144.22 #afs1.meteo.uni-koeln.de
134.95.144.24 #afs2.meteo.uni-koeln.de
>rrz.uni-koeln.de #University of Cologne - Reg Comp Center
134.95.19.3 #afsdb1.rrz.uni-koeln.de
134.95.19.30 #fileserv3.rrz.uni-koeln.de
134.95.67.97 #afs.thp.uni-koeln.de
134.95.140.190 #rzkbserv.rrz.uni-koeln.de
>physik.uni-mainz.de #institute of physics, university Mainz, Germany
134.93.130.93 #hardy.physik.uni-mainz.de
>uni-mannheim.de #Uni Mannheim (Rechenzentrum)
134.155.50.165 #afsdbx.uni-mannheim.de
134.155.50.166 #afsdby.uni-mannheim.de
134.155.50.167 #afsdbz.uni-mannheim.de
>andrew.cmu.edu #Carnegie Mellon University - Computing Services
128.2.10.2 #vice2.fs.andrew.cmu.edu
128.2.10.7 #vice7.fs.andrew.cmu.edu
128.2.10.11 #vice11.fs.andrew.cmu.edu
128.2.10.12 #vice12.fs.andrew.cmu.edu
128.2.10.28 #vice28.fs.andrew.cmu.edu
>club.cc.cmu.edu #Carnegie Mellon University Computer Club
128.2.4.131 #yttrium.club.cc.cmu.edu
128.2.4.132 #zirconium.club.cc.cmu.edu
>chem.cmu.edu #Carnegie Mellon University - Chemistry Dept.
128.2.40.134 #afs.chem.cmu.edu
>cs.cmu.edu #Carnegie Mellon University - School of Comp. Sci.
128.2.206.130 #cucumber.srv.cs.cmu.edu
128.2.222.199 #papaya.srv.cs.cmu.edu
128.2.242.86 #lemon.srv.cs.cmu.edu
>ece.cmu.edu #Carnegie Mellon University - Elec. Comp. Eng. Dept.
128.2.129.7 #porok.ece.cmu.edu
128.2.129.8 #vicio.ece.cmu.edu
128.2.129.9 #e-xing.ece.cmu.edu
128.2.136.109 #last.ece.cmu.edu
>msc.cornell.edu #Cornell University Materials Science Center
128.84.231.242 #miranda.ccmr.cornell.edu
128.84.241.35 #co.ccmr.cornell.edu
128.84.249.78 #dax.ccmr.cornell.edu
>iastate.edu #Iowa State University
129.186.1.243 #afsdb-1.iastate.edu
129.186.6.243 #afsdb-2.iastate.edu
129.186.142.243 #afsdb-3.iastate.edu
>athena.mit.edu #MIT/Athena cell
18.7.1.66 #paris.mit.edu.
18.145.0.25 #agamemnon.mit.edu.
18.158.0.37 #prill.mit.edu.
>dev.mit.edu #MIT/IS Development cell
18.7.1.70 #wham.mit.edu.
18.7.15.89 #rattle.mit.edu.
18.7.15.93 #hum.mit.edu.
>net.mit.edu #MIT/Network Group cell
18.7.7.73 #gracie.mit.edu
18.7.21.95 #george.mit.edu
>sipb.mit.edu #MIT/SIPB cell
18.181.0.19 #reynelda.mit.edu.
18.181.0.22 #rosebud.mit.edu.
18.181.0.23 #ronald-ann.mit.edu.
>msu.edu #Michigan State University Main Cell
35.9.7.10 #afsdb0.cl.msu.edu
>nd.edu #University of Notre Dame
129.74.223.17 #john.helios.nd.edu
129.74.223.33 #lizardo.helios.nd.edu
129.74.223.65 #buckaroo.helios.nd.edu
>pitt.edu #University of Pittsburgh
136.142.8.15 #afs09.srv.cis.pitt.edu
136.142.8.20 #afs10.srv.cis.pitt.edu
136.142.8.21 #afs11.srv.cis.pitt.edu
>psc.edu #PSC (Pittsburgh Supercomputing Center)
128.182.59.182 #shaggy.psc.edu
128.182.66.184 #velma.psc.edu
128.182.66.185 #daphne.psc.edu
>rose-hulman.edu #Rose-Hulman Institute of Technology
137.112.7.11 #afs1.rose-hulman.edu
137.112.7.12 #afs2.rose-hulman.edu
137.112.7.13 #afs3.rose-hulman.edu
>cs.rose-hulman.edu #Rose-Hulman CS Department
137.112.40.10 #galaxy.cs.rose-hulman.edu
>rpi.edu #Rensselaer Polytechnic Institute
128.113.22.11 #saul.server.rpi.edu
128.113.22.12 #joab.server.rpi.edu
128.113.22.13 #korah.server.rpi.edu
128.113.22.14 #achan.server.rpi.edu
>hep.sc.edu #University of South Carolina, Dept. of Physics
129.252.78.77 #cpeven.physics.sc.edu
>ir.stanford.edu #Stanford University
171.64.7.222 #afsdb1.stanford.edu
171.64.7.234 #afsdb2.stanford.edu
171.64.7.246 #afsdb3.stanford.edu
>slac.stanford.edu #Stanford Linear Accelerator Center
134.79.18.25 #afsdb1.slac.stanford.edu
134.79.18.26 #afsdb2.slac.stanford.edu
134.79.18.27 #afsdb3.slac.stanford.edu
>cats.ucsc.edu #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
128.114.129.14 #elan.ucsc.edu
128.114.129.15 #ichabod.ucsc.edu
128.114.129.18 #maneki.ucsc.edu
>ncsa.uiuc.edu #University of Illinois
141.142.3.5 #congo.ncsa.uiuc.edu
141.142.3.8 #nile.ncsa.uiuc.edu
141.142.230.19 #jinx.ncsa.uiuc.edu
>umbc.edu #University of Maryland, Baltimore County
130.85.1.13 #db2.afs.umbc.edu
130.85.6.33 #db1.afs.umbc.edu
130.85.60.12 #db3.afs.umbc.edu
>glue.umd.edu #University of Maryland - Project Glue
128.8.10.44 #tin.umd.edu
128.8.10.126 #iron.umd.edu
128.8.70.10 #copper.umd.edu
>wam.umd.edu #University of Maryland Network WAM Project
128.8.70.9 #csc-srv.wam.umd.edu
128.8.73.9 #pg2-srv.wam.umd.edu
129.2.128.54 #avw-srv.wam.umd.edu
>umich.edu #University of Michigan - Campus
141.211.1.32 #fear.ifs.umich.edu
141.211.1.33 #surprise.ifs.umich.edu
141.211.1.34 #ruthless.ifs.umich.edu
>atlas.umich.edu #ATLAS group cell in physics at University of Michigan
141.211.43.102 #linat02.grid.umich.edu
141.211.43.106 #linat06.grid.umich.edu
141.211.43.109 #atgrid.grid.umich.edu
>citi.umich.edu #University of Michigan - CITI
141.211.92.144 #babble.citi.umich.edu
>lsa.umich.edu #University of Michigan - College of LS&A
141.211.54.132 #curtis.admin.lsa.umich.edu
141.211.61.23 #zee.admin.lsa.umich.edu
141.211.68.15 #marshall.lsa.umich.edu
>math.lsa.umich.edu #University of Michigan - Math Department
141.211.61.40 #ike.math.lsa.umich.edu
141.211.61.41 #clark.math.lsa.umich.edu
141.211.61.42 #nimitz.math.lsa.umich.edu
>umr.edu #University of Missouri - Rolla
131.151.1.59 #afsdb1.umr.edu
131.151.1.70 #afsdb3.umr.edu
131.151.1.146 #afsdb2.umr.edu
>eng.utah.edu #University of Utah - Engineering
155.99.222.40 #afs1.eng.utah.edu
155.99.222.41 #afs2.eng.utah.edu
>cs.uwm.edu #University of Wisconsin--Milwaukee
129.89.38.124 #solomons.cs.uwm.edu
>cs.wisc.edu #Univ. of Wisconsin-Madison, Computer Sciences Dept.
128.105.132.14 #timon.cs.wisc.edu
128.105.132.15 #pumbaa.cs.wisc.edu
128.105.132.16 #zazu.cs.wisc.edu
>hep.wisc.edu #University of Wisconsin -- High Energy Physics
128.104.28.219 #anise.physics.wisc.edu
>ifca.unican.es #Instituto de Fisica de Cantabria (IFCA), Santander, Spain
193.144.209.20 #gridwall.ifca.unican.es
>biocenter.helsinki.fi #University of Helsinki, Institute of Biotechnology
128.214.58.174 #afsdb1.biocenter.helsinki.fi
128.214.88.114 #afsdb2.biocenter.helsinki.fi
>dapnia.saclay.cea.fr #CEA DAPNIA
132.166.32.7 #dphrsg.saclay.cea.fr
132.166.32.12 #dphrsl.saclay.cea.fr
>in2p3.fr #IN2P3 production cell
134.158.232.11 #ccafsdb1.in2p3.fr
134.158.232.12 #ccafsdb2.in2p3.fr
134.158.232.13 #ccafsdb3.in2p3.fr
>anl.gov #Argonne National Laboratory
146.137.96.33 #arteus.ctd.anl.gov
146.137.162.88 #agamemnon.ctd.anl.gov
146.137.194.80 #antenor.ctd.anl.gov
>usatlas.bnl.gov #US Atlas Tier 1 Facility at BNL
130.199.48.32 #aafs01.usatlas.bnl.gov
130.199.48.33 #aafs02.usatlas.bnl.gov
130.199.48.34 #aafs03.usatlas.bnl.gov
>fnal.gov #Fermi National Acclerator Laboratory
131.225.68.1 #fsus01.fnal.gov
131.225.68.4 #fsus03.fnal.gov
131.225.68.14 #fsus04.fnal.gov
>nersc.gov #National Energy Research Supercomputer Center
128.55.128.250 #mars.nersc.gov
128.55.128.252 #alfred.nersc.gov
128.55.128.254 #lurch.nersc.gov
>caspur.it #CASPUR Inter-University Computing Consortium, Rome
193.204.5.45 #pomodoro.caspur.it
193.204.5.46 #banana.caspur.it
193.204.5.50 #maslo.caspur.it
>fusione.it #Assoz. FUSIONE/Euratom, ENEA, Frascati-Italy
192.107.90.2 #fusafs1.frascati.enea.it
192.107.90.3 #fusafs2.frascati.enea.it
192.107.90.4 #fusafs3.frascati.enea.it
>infn.it #Istituto Nazionale di Fisica Nucleare (INFN), Italia
131.154.1.7 #afscnaf.infn.it
141.108.3.252 #afsrm1.roma1.infn.it
192.84.134.75 #afsna.na.infn.it
>kloe.infn.it #INFN, KLOE experiment at Laboratori di Frascati
192.135.25.111 #kloeafs1.lnf.infn.it
192.135.25.112 #kloeafs2.lnf.infn.it
>le.infn.it #INFN, Sezione di Lecce
192.84.152.40 #afs01.le.infn.it
192.84.152.148 #afs02.le.infn.it
>lnf.infn.it #INFN, Laboratori Nazionali di Frascati
193.206.84.121 #afs1.lnf.infn.it
193.206.84.123 #afs3.lnf.infn.it
>lngs.infn.it #INFN, Laboratori Nazionali di Gran Sasso
192.84.135.21 #rsgs05.lngs.infn.it
>pi.infn.it #INFN, Sezione di Pisa
192.84.133.7 #aix.pi.infn.it
192.84.133.50 #aix1.pi.infn.it
>psm.it #Progetto San Marco, Universita' di Roma-1
151.100.1.65 #atlante.psm.uniroma1.it
>ictp.trieste.it #The Abdus Salam International Centre for Theoretical Physics (IC
140.105.16.8 #fs1.ictp.trieste.it
140.105.16.9 #fs2.ictp.trieste.it
>dis.uniroma1.it #Universita' La Sapienza, Dept. of Inf. and Sys.
151.100.5.21 #peano.dis.uniroma1.it
>dsi.uniroma1.it #Universita' La Sapienza, Dept. of Computer Science
151.100.17.2 #afscinfo.dsi.uniroma1.it
>ing.uniroma1.it #Universita' La Sapienza, Fac. Ingeneria
151.100.39.30 #delta.ing.uniroma1.it
151.100.85.209 #beta.ing.uniroma1.it
>vn.uniroma3.it #University of Rome 3, Area Vasca Navale
193.204.161.136 #alfa.dia.uniroma3.it
193.204.161.137 #beta.dia.uniroma3.it
193.204.161.138 #gamma.dia.uniroma3.it
>italia #Italian Public AFS Cell
193.204.5.9 #afs.caspur.it
>cmf.nrl.navy.mil #Naval Research Lab - CCS
134.207.10.68 #picard.cmf.nrl.navy.mil
134.207.10.69 #riker.cmf.nrl.navy.mil
134.207.10.70 #kirk.cmf.nrl.navy.mil
>lcp.nrl.navy.mil #Naval Research Lab - Lab for Computational Physics
132.250.114.2 #afs1.lcp.nrl.navy.mil
132.250.114.4 #afs2.lcp.nrl.navy.mil
132.250.114.6 #afs3.lcp.nrl.navy.mil
>es.net #Energy Sciences Net
198.128.3.21 #fs1.es.net
198.128.3.22 #fs2.es.net
198.128.3.23 #fs3.es.net
>slackers.net #The Slackers' Network
63.201.48.27 #alexandria.slackers.net
>nikhef.nl #The Dutch National Institute for High Energy Physics
192.16.185.26 #afs1.nikhef.nl
192.16.185.27 #afs2.nikhef.nl
>1ts.org #KCR/private Karl Ramm, Cambridge, MA
4.36.43.102 #dol-guldur.1ts.org
>bazquux.org #Baz Quux Organization
66.207.142.196 #baxquux.org
>coed.org #Adam Pennington's Cell
66.93.61.184 #vice1.coed.org
128.2.121.5 #vice3.coed.org
>dementia.org #Dementia Unlimited
128.2.12.45 #alycia.dementia.org
128.2.120.216 #meredith.dementia.org
>nimlabs.org #Nimlabs, Ink. Cell.
18.238.1.103 #olfin.nimlabs.org
18.238.1.105 #caerbanog.nimlabs.org
>nomh.org #nomh.org
205.201.8.44 #gamma.nomh.org
>oc7.org #The OC7 Project
128.2.6.107 #vice3.oc7.org
128.2.122.140 #vice2.oc7.org
>openafs.org #OpenAFS Project
128.2.13.199 #new-virtue.openafs.org
128.2.121.218 #virtue.openafs.org
130.237.48.87 #andrew.e.kth.se
130.237.48.107 #onyx.e.kth.se
>rhic #Relativistic Heavy Ion Collider
130.199.6.51 #rafs03.rcf.bnl.gov
130.199.6.52 #rafs02.rcf.bnl.gov
130.199.6.69 #rafs01.rcf.bnl.gov
>e.kth.se #Royal Institute of Technology, Elektro
130.237.48.7 #anden.e.kth.se
130.237.48.8 #sonen.e.kth.se
130.237.48.244 #fadern.e.kth.se
>hallf.kth.se #Royal Institute of Technology, HALLF
130.237.24.141 #rasmus13.hallf.kth.se
130.237.24.152 #rasmus3.hallf.kth.se
>isk.kth.se #Royal Institute of Technology, ISK
130.237.202.12 #afsdb2.isk.kth.se
130.237.206.13 #afsdb1.isk.kth.se
130.237.209.141 #afsdb3.isk.kth.se
>it.kth.se #Royal Institute of Technology, IT
130.237.212.15 #ptah.it.kth.se
130.237.212.16 #toth.it.kth.se
130.237.215.7 #isis.it.kth.se
>md.kth.se #Royal Institute of Technology, MMK
130.237.57.68 #trinity.md.kth.se
130.237.57.72 #morpheus.md.kth.se
130.237.67.230 #neo.speech.kth.se
>mech.kth.se #Royal Institute of Technology, MECH
130.237.233.142 #matterhorn.mech.kth.se
130.237.233.143 #castor.mech.kth.se
130.237.233.144 #pollux.mech.kth.se
>nada.kth.se #Royal Institute of Technology, NADA
130.237.222.20 #kosmos.nada.kth.se
130.237.223.12 #sputnik.nada.kth.se
130.237.224.78 #mir.nada.kth.se
130.237.227.23 #gagarin.nada.kth.se
130.237.228.28 #laika.nada.kth.se
>pdc.kth.se #Royal Institute of Technology, PDC
130.237.232.29 #crab.pdc.kth.se
130.237.232.112 #anna.pdc.kth.se
130.237.232.114 #hokkigai.pdc.kth.se
>stacken.kth.se #Stacken Computer Club
130.237.234.3 #milko.stacken.kth.se
130.237.234.43 #hot.stacken.kth.se
130.237.237.230 #fishburger.stacken.kth.se
>physto.se #Physics department Stockholm University
130.237.205.36 #sysafs1.physto.se
130.237.205.72 #sysafs2.physto.se
>sanchin.se #Sanchin Consulting AB, Sweden
192.195.148.10 #sesan.sanchin.se
>su.se #Stockholm University
130.237.162.81 #afsdb1.su.se
130.237.162.82 #afsdb2.su.se
>phy.bris.ac.uk #Bristol University - phyics
137.222.58.9 #afs1.phy.bris.ac.uk
>hep.man.ac.uk #Manchester HEP
194.36.2.3 #afs1.hep.man.ac.uk
>rl.ac.uk #Rutherford Appleton Lab, England
130.246.12.45 #isabel.cc.rl.ac.uk
130.246.15.135 #tinkerbel.cc.rl.ac.uk
130.246.183.164 #wallace.cc.rl.ac.uk
--- NEW FILE: openafs-SuidCells ---
--- NEW FILE: openafs-afsmodname ---
#!/usr/bin/perl
# afsmodname - return the name of the AFS module to load
# usage: afsmodname [path]
# THIS SCRIPT IS UNDER SOURCE CONTROL!
# The master copy is /afs/cs/misc/openafs/src/client-support/afsmodname
use Getopt::Std;
use strict;
use vars qw($modbase $VERSION @TrySyms @AddSyms $Prefix);
use vars qw($DEBUG $Mode $OutFile %SymCache);
$VERSION = '$Revision: 1.1 $';
$VERSION =~ s/^\$[a-z]*:?\s*(\S*)\s*\$$/$1/i;
$VERSION = 'testing' unless $VERSION;
$modbase = '/usr/vice/etc/modload';
@TrySyms = qw(__iget iget __iget4 iget4);
@AddSyms = qw(sock_create);
$Prefix = 'libafs';
sub vcmp {
my (@a, @b, @aa, @bb);
my ($i, $ii);
@a = split /-/, $a;
@b = split /-/, $b;
foreach $i (0 .. ((@a > @b) ? $#b : $#a)) {
@aa = split /\./, $a[$i];
@bb = split /\./, $b[$i];
foreach $ii (0 .. ((@aa > @bb) ? $#bb : $#aa)) {
return $aa[$ii] <=> $bb[$ii] if $aa[$ii] <=> $bb[$ii]
&& $aa[$ii] =~ /^\d+$/
&& $bb[$ii] =~ /^\d+$/;
return $aa[$ii] cmp $bb[$ii] if $aa[$ii] cmp $bb[$ii];
}
return @aa <=> @bb if @aa <=> @bb;
}
return @a <=> @b;
}
sub parse_symbol ($) {
my($symbol) = @_;
if ($symbol =~ /^(.*)_R((?:smp)?(?:2gig)?_?[0-9a-f]{8})$/) {
($1, $2);
} else {
($symbol, '--none--');
}
}
sub get_ksym ($) {
my($req_sym) = @_;
my($addr, $symbol, $module, $version, @answer);
if (exists($SymCache{$req_sym})) {
print STDERR "get_ksym($req_sym) [cached]\n" if $DEBUG > 1;
return $SymCache{$req_sym};
}
print STDERR "get_ksym($req_sym)" if $DEBUG;
$SymCache{$req_sym} = undef;
open(KSYMS, '/proc/ksyms') or die "open /proc/ksyms: $!\n";
while (<KSYMS>) {
if (/^(\w+)\s+(\w+)\s+\[(.*)\]/) {
($addr, $symbol, $module) = ($1, $2, $3)
} elsif (/^(\w+)\s+(\w+)/) {
($addr, $symbol, $module) = ($1, $2, 'KERNEL')
} else { next }
($symbol, $version) = parse_symbol($symbol);
if ($symbol eq $req_sym) {
$SymCache{$req_sym} = [$addr, $version, $module];
print STDERR " => [addr=$addr, vers=$version, mod=$module]\n" if $DEBUG;
last;
}
}
close(KSYMS);
print STDERR " => not found\n" if $DEBUG && !defined($SymCache{$req_sym});
$SymCache{$req_sym};
}
sub get_modsyms ($) {
my($modpath) = @_;
my($symbol, $version, $V);
$V = {};
open(NM, "nm $modpath|") or die "nm $modpath: $!\n";
while (<NM>) {
chomp;
next unless /^\s+U\s+/;
($symbol, $version) = parse_symbol($');
$$V{$symbol} = $version unless $version eq '--none--';
}
close(NM);
$V;
}
sub get_hdrsyms ($) {
my($srcpath) = @_;
my($moddir, @hdrs, $h);
my($symbol, $version, $V);
$moddir = "$srcpath/include/linux/modules";
opendir(HDRS, $moddir) or die "$moddir: $!\n";
@hdrs = readdir(HDRS);
closedir(HDRS);
$V = {};
foreach $h (@hdrs) {
next unless $h =~ /\.ver$/;
open(HDR, "$moddir/$h") or die "$moddir/$h: $!\n";
while (<HDR>) {
chomp;
next unless /#define __ver_(\S+)\s+(\S+)/;
$$V{$1} = $2;
}
close(HDR);
}
$V;
}
sub get_cputype () {
my($cputype, $family, $vendor, $model);
open(CPUINFO, '/proc/cpuinfo') or die "open /proc/cpuinfo: $!\n";
while (<CPUINFO>) {
if (/^cpu\s*\:\s*(\S+)/) { $cputype = $1 }
elsif (/^cpu family\s*:\s*(\S+)/) { $family = $1 }
elsif (/^vendor_id\s*:\s*(\S+)/) { $vendor = $1 }
elsif (/^model\s*:\s*(\S+)/) { $model = $1 }
}
close(CPUINFO);
if ($vendor eq 'GenuineIntel') { $vendor = 'intel' }
elsif ($vendor eq 'AuthenticAMD') { $vendor = 'amd' }
$cputype = "${family}86" if !defined($cputype);
[$cputype, $vendor, $model];
}
sub table_lookup ($@) {
my($cpu, @paths) = @_;
my($path, $symbol, $version, $mincpu, @mincpu, $module, $info, @supp);
my($prev_module); # last module line we saw
my($match_module); # last matching module
my($prev_match); # true if last module matches so far
foreach $path (@paths) {
next unless -f $path;
$prev_match = 0;
open(TABLE, $path) or die "open $path: $!\n";
while (<TABLE>) {
# Skip comments
next if (/^\#/ || /^\s*$/);
# Check supplemental requirements
if (/^\s*\>/) {
@supp = split;
foreach (@supp) {
if (/([^=]*)=([^=]*)/) {
($symbol, $version) = ($1, $2);
$info = get_ksym($symbol);
$prev_match = 0 if !$info || $version ne $$info[1];
}
}
next;
}
# This is a new module, so all supplemental requirements for the
# previous module have been processed. If they all passed, then
# the previous module is a matching module.
$match_module = $prev_module if $prev_match;
# Parse the line and remember the module name
($symbol, $version, $mincpu, $module) = split;
$prev_module = $module;
$prev_match = 0;
if ($DEBUG) {
print STDERR "Try $module ($symbol=$version)",
($mincpu ne '-') ? " mincpu = $mincpu" : "",
"\n";
}
# Check mincpu requirement
if ($mincpu ne '-') {
@mincpu = split(/\./, $mincpu);
if ($mincpu[0] ne '' && $mincpu[0] > $$cpu[0]) { # min family
print STDERR " mincpu failed: $mincpu[0] > $$cpu[0]\n" if $DEBUG;
next;
}
if ($mincpu[1] ne '' && $mincpu[1] ne $$cpu[1]) { # exact vendor
print STDERR " mincpu failed: $mincpu[1] != $$cpu[1]\n" if $DEBUG;
next;
}
if ($mincpu[2] ne '' && $mincpu[2] > $$cpu[2]) { # min model
print STDERR " mincpu failed: $mincpu[2] > $$cpu[2]\n" if $DEBUG;
next;
}
}
# Check primary symbol requirement
$info = get_ksym($symbol);
next unless $info;
next unless $version eq $$info[1];
# OK; it's a match so far. There may still be some supplemental
# requirements that we need to check.
$prev_match = 1;
}
close(TABLE);
$match_module = $prev_module if $prev_match;
}
$match_module;
}
sub dump_versions ($) {
my($cpu) = @_;
my($version);
print STDERR "CPU Type: ", join('.', @$cpu), "\n";
chomp($version = `uname -rv`);
print STDERR "Linux version: $version\n";
if (open(RHR, "/etc/redhat-release")) {
chomp($version = <RHR>);
print STDERR "RedHat release: $version\n";
}
}
sub dump_syms (@) {
my(@syms) = @_;
my($sym, $info);
print STDERR "Symbol versions:\n";
foreach $sym (@syms) {
$info = get_ksym($sym);
printf STDERR " %-10s %s\n", $sym, $$info[1] if $info;
}
}
sub gen_table (@) {
my(@modules) = @_;
my($module, $modname, $V, $sym, $count, @add);
print <<'EOF';
# This file describes the available AFS kernel modules and what kernel
# versions they work with. Each line matches against some kernel symbol
# version, and specifies a module which may be used with kernels containing
# that version of the specified symbol. Only lines which match the
# currently-running kernel are considered.
#
# In addition, each line may specify a minimum CPU model on which the module
# will work. If this value is present, the actual CPU model must be greater
# than or equal to the version specified; otherwise, the module is assumed
# to work on any CPU.
#
# The last match found will be used.
#
# Symbol Version MinCPU Module
#======= ============ ====== ====================
EOF
foreach $module (sort vcmp @modules) {
($modname = $module) =~ s/.*\///;
$modname =~ s/^$Prefix[-.](.*)\.o$/$1/;
$V = get_modsyms($module);
$count = 0;
foreach $sym (@TrySyms) {
next unless exists $$V{$sym};
$count++;
printf "%-8s %-12s %-6s %s\n", $sym, $$V{$sym}, '-', $modname;
last;
}
if (!$count) {
print STDERR "Unable to find a suitable symbol reference in $modname!\n";
next;
}
@add = ();
foreach $sym (@AddSyms) {
next unless exists $$V{$sym};
push(@add, "$sym=$$V{$sym}");
}
print "> ", join(' ', @add), "\n" if @add;
}
}
sub scan_kernels (@) {
my(@kernels) = @_;
my($kernel, $kpath, $kname, $V);
eval <<"EOF";
format =
@<<<<<<<<<<<<<<<<<<<<<<<< @{[' @<<<<<<<<<<<' x scalar(@TrySyms)]}
\$kname, @{[join(',', map(q/$$V{'/ . $_ . q/'}/, @TrySyms))]}
.
EOF
$kname = 'Kernel';
$V = { map(($_ => $_), @TrySyms) };
write;
$kname = '=========================';
$V = { map(($_ => '============'), @TrySyms) };
write;
foreach $kernel (@kernels) {
if (-d "$kernel/src/include/linux/modules") { $kpath = "$kernel/src" }
elsif (-d "$kernel/include/linux/modules") { $kpath = $kernel }
else { next }
($kname = $kpath) =~ s#/src$##;
$kname =~ s/.*\///;
$V = get_hdrsyms($kpath);
write;
}
}
sub symcompare ($$) {
my($module, $kernel) = @_;
my($ksyms, $msyms, $sym, $kvers, $mvers, $info);
eval <<'EOF';
format =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<< @<<<<<<<<<<<
$sym, $kvers, $mvers
.
EOF
if (defined($kernel)) { $ksyms = get_hdrsyms($kernel) }
$msyms = get_modsyms($module);
print "Symbol Kernel Module\n";
print "============================== ============ ============\n";
foreach (keys %$msyms) {
$sym = $_;
$mvers = $$msyms{$sym};
if (defined($kernel)) {
$kvers = $$ksyms{$sym};
} else {
$info = get_ksym($sym);
$kvers = $$info[1];
}
next if $kvers eq $mvers;
write;
}
}
sub usage (;@) {
print STDERR "$00: ", @_, "\n" if @_;
print STDERR <<"EOF";
usage: $00 [opts] [modbase] (find module)
$00 [opts] -g modules ... (make table)
$00 [opts] -k kernels ... (scan kernels)
$00 [opts] -c module [kernel] (check module)
$00 -h (print help)
$00 -v (print version)
options:
-d enable debugging output
-f outfile set output file (default stdout)
-P prefix set module name prefix (default $Prefix)
-S syms... symbols to try for -x, -k (default @TrySyms)
-A syms... additional symbols to check for -x (default @AddSyms)
Module lists for -S and -A may be space- or comma-separated.
For backward-compatibility, -g is a synonym for -x.
EOF
exit(0);
}
sub parse_opts () {
my(%opts);
($00 = $0) =~ s/.*\///;
getopts('dckgxf:hvP:S:A:', \%opts) or usage('invalid option(s)');
usage() if $opts{'h'};
if ($opts{'v'}) {
print "afsmodname $VERSION\n";
exit(0);
}
$opts{'g'} = 1 if $opts{'x'};
if ($opts{'g'} + $opts{'k'} + $opts{'c'} > 1) {
usage("At most one of -g, -k, -c can be used\n");
}
$DEBUG++ if exists $opts{'d'};
$Mode = 'g' if exists $opts{'g'};
$Mode = 'k' if exists $opts{'k'};
$Mode = 'c' if exists $opts{'c'};
usage("Too many arguments") if !$Mode && @ARGV > 1;
usage("Too many arguments") if $Mode eq 'c' && @ARGV > 2;
usage("Module name required") if $Mode eq 'c' && !@ARGV;
$OutFile = $opts{'f'} if exists $opts{'f'};
$Prefix = $opts{'p'} if exists $opts{'P'};
@TrySyms = split(/[, ]+/, $opts{'S'}) if exists $opts{'S'};
@AddSyms = split(/[, ]+/, $opts{'A'}) if exists $opts{'A'};
}
## MAIN PROGRAM
my($cpu, $module);
parse_opts();
if ($Mode) {
if ($OutFile) {
open(STDOUT, ">$OutFile") or die "$OutFile: $!\n";
}
if ($Mode eq 'g') { gen_table(@ARGV) }
if ($Mode eq 'k') { scan_kernels(@ARGV) }
if ($Mode eq 'c') { symcompare($ARGV[0], $ARGV[1]) }
exit(0);
}
$modbase = $ARGV[0] if @ARGV;
$cpu = get_cputype();
$module = table_lookup($cpu, "$modbase/SymTable", "$modbase/SymTable.local");
if ($module) {
print "$Prefix-$module.o";
exit(0);
}
print STDERR <<'EOF';
Hmm... I can't seem to find an AFS kernel module suitable for your Linux
kernel. That means you will need to build or obtain a suitable module.
The following information may be of some use in obtaining assistance:
EOF
dump_versions($cpu);
dump_syms(sort (@TrySyms, keys %SymCache));
exit(1);
--- NEW FILE: openafs-cacheinfo ---
/afs:/usr/vice/cache:100000
- Previous message: [Lunar-commits] CVS: moonbase/zbeta/openafs-devel BUILD, NONE,
1.1 DEPENDS, NONE, 1.1 DETAILS, NONE, 1.1 POST_INSTALL, NONE, 1.1
- Next message: [Lunar-commits]
CVS: moonbase/zbeta/openafs-driver-devel BUILD, NONE,
1.1 DEPENDS, NONE, 1.1 DETAILS, NONE, 1.1 POST_INSTALL, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Lunar-commits
mailing list