Andrei provided a replacement for the pattern matching algorithm.
It has been applied but the old version is still there and can be
activated with a #define
The KFW_AFS_get_cred() routine does not use the "instance" parameter
so removed it.
We now strictly prefer exact case matches. This does incur a
performance penalty because we can no longer be satisfied with an
inexact matches in cache (we make an extra trip to the server to make
sure there aren't any exact matches or pick up the extra match if
there is one). Of course, the name lookup cache is now case
sensitive.
* cm_dnlc.c : case sensitive name lookup cache
* cm_vnodeops.{c,h} : changes to cm_Lookup to first look for exact matches,
failing which, look for inexact matches. Also, only put a name in
the name lookup cache iff it exactly matches something on the server.
* smb.c : look for exact matches first.
* smb3.c : as above. Also T2 Search is used by the SMB client to resolve
filenames. Respond accordingly.
and:
* added new CM_ERROR_AMBIGUOUS_FILENAME mapped to ERROR_POTENTIAL_FILE_FOUND
This error is not yet used but is intended for situations in which an
AFS volume contains two files which differ only by case "Foo" and "FOO"
and the user says "DEL foo". Since we do not have an exact match by case
the existing code deletes one of the two files at random. In the future
we want to return an error.
ipaddrchg.[ch]: contains the ip address change monitor thread functionality
which was previously in afskfw.[ch] but which is now a
library in src/WINNT/afsd
Migrate KFW functionality from src/WINNT/client_creds/afskfw* into a
a new library to be shared by afslogon.dll, afscreds.exe
Add KFW support to afslogon.dll
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Migrate KFW functionality from src/WINNT/client_creds/afskfw* into a
a new library to be shared by afslogon.dll, afscreds.exe
Move IP Address Change Monitor into new source files.
Add smbname support to the KFW set token functionality in afscreds.exe
fun with a profiler: afs_RemoveVCB accounts for 20% of the total AFS
client CPU utilization, even under a moderate vcache turnover rate of
less than 10 new vcache's per second.
introduce a hash on the afs_cbr objects to speed this up. if you are
seeing your AFS client being CPU-bound, e.g. on your web server, you
may want to try this.
1) Does not delete server config data on uninstall
2) If an upgrade or a re-install with existing server config data, will not auto-start the Server Configuration Wizard.
3) Checks for RPC keys on install. (I believe you only need one because not all of the keys are required for AFS to work. However, it might require TCP or UDP based RPC)
Still to do:
1) Server data should be destroyed if user answers "No" to "Do you want to keep your existing configuration data?"
2) If installing when existing server configuration data is present, populate the client cell to be the contents of the "ThisCell" file.
Cleanup the makefile to remove unnecessary defaultlib restrictions
Remove the DST fix added to address Rodney's bug with the timezone being
off by an hour on files one hour after the time change. Still need to
identify the real cause.
Finally fix once and for all the afsd_service.exe shutdown error.
The ServiceHandler must be declared with the WINAPI calling convention
because it returns a value.
. osi_cred now uses struct group_info
. the big kernel lock has been moved from the fs generic code
for some of the operations in 2.6
. 2.6 now just uses iput() and hooks the appropriate routines
. the dummy inode list handling should be clearer
when determining whether or not the ticket len is too long for the
receiver to accept we want to compare against the actual ticket length
and not MAXKTCTICKETLEN which is what is used when sizeof(ktc_ticketAnswer)
is used for comparison.
Modify buffer allocation to support tokens up to MAXPIOCTLTOKENLEN
(3*sizeof(afs_int32)+MAXKTCTICKETLEN+sizeof(struct ClearToken)+MAXKTCREALMLEN)
in length.
MIT's aklog.exe imported into the OpenAFS for Windows distribution
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
If afscreds.exe you can now obtain credentials for cell "foo.com" with
credentials from "user@BAR.COM" when specifying a password. This is a
first step since if there are already valid credentials for "user@BAR.COM"
the password should not be requested. That would allow you to obtain
tokens for multiple cells with the same kerberos tgt.
Rodney found in his logs "Event Object Already Exists fid_t" messages.
This lead to another location in the code where problem mutex usage
was missing. In this case, multiple fid_t structs were created with the
same fid number.
Who at IBM was stupid enough to believe it is acceptable to
pass a va_args variable into a function without initializing
it with va_start()? Why would you ever bother to do otherwise?
* fix uninitialized return variables in smb.c and smb3.c
* open the osi_log file as early as possible in afsd_init.c
* create an argv to use for non-service executions
* add support for \\afs\.cellname for rw volumes
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Do not use IsKerberosLogon() it does not always report the right value.
Comment out the code which deletes the server configuration files
on AFS Server uninstall. We need to do this to protect existing
volumes if the product must be uninstalled and reinstalled
krb5_des_decrypt() does not initialize the return value to 1, failure,
therefore it returns random success (0) values when ticket types of
DES-CBC-MD5 or DES-CBC-MD4 are used because we do not have checksum
functions for those types.
feeling like an idiot. the original test compared the size of the
ticket field in the ktc_token struct allocated by the app which might
be smaller than the size of the field defined in the library
When processing pioctl() operations, properly perform the test of
the ticket size to the ktc.ticket field. The field is of fixed
size MAXKTCTICKETLEN and not some value which is adjusted based
upon the content of the message.
Corrections to the libadmin interface for the Windows Server Configurator
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Use lanahelper.lib for the server configurator as well
In order to support the large ticket sizes produced by Microsoft
Active Directory and allow the use of raw Kerberos 5 tickets as tokens
increase the size of MAXKTCTICKETLEN and MAXKRB5TICKETLEN to 4096
from 344 and 1024 respectively.
Do not enforce the funky 8dot3 pattern matching rule that the first "."
is special when using long file names. (you must use "*.*" and not "*")
Instead only enforce it when performing 8dot3 searches.
Renumber and re-organize all of the String Table entries
to adhere to the rules specified for dynamically loading
them with the tools in WINNT/talocale. All numbers must
be sequential. Each block must begin on a mod 16 == 0
value.
====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
Make remove-vnop-denies-unlink-on-mtpt-20040325 more likely to work,
and don't forget to afs_PutFakeStat() while we're at it. After we
call afs_EvalFakeStat(), there's no way that mvstat can be 1 -- either
the object wasn't a mountpoint and it'll be mvstat 0, or EvalFakeStat
will evaluate it and it'll be mvstat 2.