[The views expressed on this website/blog are mine alone and do not necessarily reflect the views of my employer.]
Thursday, August 24, 2006
Reliance Broadband
Reliance is offering 1000 kbps with 1 GB limit on download for 600 rs rental per month.
Its nice, they give a telephone too with free rental. Call charges are as applicable.
Wednesday, August 16, 2006
Bought new Motorola SLVR L7
So far so good, but today I found a problem with camera. Its gets picture with red patches.
I called up Motorola service center Redington at Somajiguda.
Went there and gave a written complaint. They say it may take three days to get the spare unit.Hope they will call me back.
Thursday, August 10, 2006
Moved into new apartment
So I lost internet connection for the moment and busy with shifting.
So back from today
Wednesday, August 02, 2006
Influencing Satisfaction - Control to care not to question the dare
To some extent I want to criticise too, thus some parts of this writing may infer conniption. So please read those parts with a pinch of salt.
I would like to start by citing a known case then the intended case.
Listed companies distribute lot of printed material along with dividend. Companies draft such material with an intention to influence the share holders to deal with prevailing business situation. Here the key is to bring the shareholders under their influence.
Here is the intended case. Employee’s performance is measured as confidential subject. Same goes with Team’s performance, Group’s performance and Business Unit’s performance. But organization’s performance is declared and published. How can an employee relate to million dollar balance sheet? Agreed it gives some fun in discussing about it at coffee table, but seldom influences an individual.
When an employee feels dissatisfied about increment, management convinces by saying that everyone was treated fairly so there is nothing they can do about it. But basis for that fairness will remain a mystery for that employee. And those who express negative feelings are marked as inconsiderate and immature to account for the situation. I know it goes on case to case basis but just hold it for the sake of criticism.
Here is the point of discussion. In first place, why leave the scope to feel dissatisfied and later expect them not to react about it. I guess it’s because of the fact that they were not prepared to deal with the situation. Are there any measures taken to influence the satisfaction level on salary hike. If no, why not. If yes, did they yield benefits so as to influence the majority. And what about improvements.
In traditional businesses performance is quite apparent. But that is not the case in coding workshops (software organizations). Employees seldom get to know about billing, capital expenditure, assets, salary budget etc... Many such details are masked from them. Here the key is to give them a feeling that they are not ‘completely’ masked. It is not too difficult to do this with a presentation. Content may not be descriptive but just need to make some sense.
To conclude following few points can be looked on in this regard.
1) “Prepare/Influence” an employee at every level - as an individual, as part of team, as part of group and as part of business unit to deal with the situation.
2) Discuss about salary budget on “qualitative” figures. Analyze it by performance of groups and teams. Present figures from previous years.
If management got content employees got caliber, they are not dumb they can understand basics of economics.
3) Prepare printed material to publish results at each level. Also handover that material along with hike letter.
4) Help those employees who express difficulty in understanding the content, if needed provide them with further reading material
5) Allow employees to express their dissatisfaction. Privacy is desired about salary but not about satisfaction. Conduct YES/NO kind of satisfaction survey. Publish the result of survey and guide employees to go with majority. If dissatisfaction leads, act on it and substantiate with “Industry Survey”.
Further we get to see mails stating “such acts are not acceptable and disciplinary action can be taken”. I guess every now and then one need not explicitly announce that they are capable of taking disciplinary actions. Just mention that relevant document (like Employee Hand Book) is modified and employees are expected to go through those sections.
Control to care not to question the dare...
Monday, July 24, 2006
Electronic filing of tax returns
April is the time to declare the investments for next year. So based on previous year experiences we tend to improve it. But changes in Union budget leave us with lot of confusion. Then we need reviews on budget from finance gurus to make an optimum investment declaration.
End of June is the time for mails, to float around, about tax returns. This exercise is compulsory. Normally organization calls an agency for this sake. Those babus offer this service for hefty price. By Aug 15 we get acknowledged returns. We are expected to keep these papers carefully. Then there won’t be any activity till next Jan.
Year after year we do this job in almost similar manner. I didn't see any change in this process in last seven years. Taxes are for building nation. But lot us got concerns about proper utilization of funds raised from taxes. What I understand is most of the time this money goes to repay the loans we take from worldwide banks. I don’t think we are in a position to plan to do anything with our own money. Surveys reveal that only 10+ % of population pays tax.
There are several kinds of taxes that we pay. But the bulk out of them is income tax.
Take the case of Municipal Corporation or Road Transport Authority. We can pay property tax online as well Road tax. They streamlined their process so much that tax payer need not face bureaucratic hierarchy in their offices.
But what is lacking with income tax department (ITD)? I have following queries
1) ITD operates on much much higher volumes still they are unable to streamline the process. Do they lack money? Of course NO
2) Unlike customers of RTO department majority of tax payers are well educated and can take benefit of advanced means to file tax returns. But still why ITD can’t improve the process of filing returns?
3) Why can’t Income Tax Act be in colloquial language or even in plain English?
Why so much of legal nomenclature? So many inter links within sections?
4) When can we file returns ourselves online and can see the process of the file online?
5) Do we hold PAN card for IT department’s sake or for the sake of a loans from banks? What is the information that a tax payer can access with PAN? If it is mere a number for ITD reference but to be maintained by tax payer
6) There are penalties for those who evade tax, but what are the incentives for regular tax payers? Just because very few people pay taxes we cant expect anything of this sort.
7) Why not the whole process tax-payer friendly?
I think even before expecting our governments to do something productive out of funds collected from taxes, we should ensure that they provide hassle free means to pay it.
Friday, July 21, 2006
getting bits
Please can someone share some gyan about why it happens so..
Thursday, July 20, 2006
is blog a page 3 on webspace
Government's order to block blogspot and other sites triggered some adverse views. Its unfortunate but heat of the moment played role there. This incident exposed bloggers across geographical sections of this nation. Well I could never ever convince anybody what I get by scribbling rubbish that goes in my mind onto a webspace. However it might be, so far it didn't harm anyone so I guess there is nothing wrong here...
Back
Actually one of the reasons is time and content. I do update my desklog regularly. But that is internal to office. I am using logahead for that on apache web server. So I have one or other thing to put on every week or so. Similary I scribble about some tech bits on sriharshavardhan.blogspot.com. As such I am not hitting keys explicitly.
Here goes another attempt to restart... Probable reason being, now i can insert images here...
Monday, July 03, 2006
Maximum threads per process – where is the bottleneck??
There is a tool for this compliance test from OPCFoundation.org. By default tool tries to test using 10 servers, 10 groups per server and 10 items per group kind of configuration.
But the test case asked for compliance with 100 servers each with 10 groups or 10 servers each with 100 groups. Though the first case doesn’t appeal much, second case definitely does. But this IO server failed to cope up with that kind of load and started crashing after adding around 70 odd servers. Kind soul who logged the bug actually gave me all scripts so that I could recreate the condition at ease.
Suggestions came from many circles to check for resource usage. Isn’t that obvious!!!
A process which is so excessively hungry dies while eating itself. So the idea led to capture memory and thread consumption. All that I could observe is 1980 odd threads and sad demise. So it was not difficult guess to think of magical limit of 2048 as limit on number of threads per process.
Now I started hitting google to substantiate the limit I observed. Google gave me a page from Microsoft site. So here is what Microsoft got to explain about the limit.
Windows operating System allocates one mega bytes of memory as default stack size per thread. So in this case 2048 threads swallowed 2 Gigabytes of memory. Unfortunately that is the limit on user space virtual memory allocation per process. As 4 GB is max per process 2GB goes on user side and remaining 2 GB goes to kernel side.
Isn’t an MB of memory per thread too much!!!!!!
Posix threads can address this situation with stacksize member of pthread_attr_t. But there is catch here too, if you don’t specify this parameter, pthread library tries to assign it with operating system’s default. And Another member of pthread_attr_t is guardsize which has a default value of size of a page (4KB).
Thursday, April 20, 2006
Scitilla SciTE

I was using notepad++ on windows since long time, but I never bothered to look into what was behind it.
Just today I came to know about scintilla.org.
Downloded SciTE for linux with GTK+ support. I am on Gentoo 2006.0.First thought of looking for an ebuild, then relaised that is too much to expect.
Installation is damn simple. I didn't compile just tried binary version. Copied SciTE to /usr/local/bin and all properties files to /use/share/scite/
Experimented with cpp and py files. Ofcourse python integration would be netive thingi for this.
I happened to modify cpp.properties file to take ./ infront of executable file name.
Joined scintella intereset group. My first post to that group is
"bash like shell expects ./ before executable to run.cpp.propeties file line 283 need to be modified to like thiscommand.go.$(file.patterns.cplusplus)=./$(FileName)"
SciTE on windows.
This time I downloaded source and built using VC7 nmake.
Its quite simple just downloaded source of SciTE. SciTe source code includes Scitilla source also.
Built Scintilla library using nmake -f scintilla.mak from "scite168\scintilla\win32" directory,then scite use nmake -f scite.mak from scite168\scite\win32 directory.
Some hickups with setting the environment with vsvars32.bat in C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools directory. I was getting errors like nmake is not a recognised command.
Then I checked batch file, this file doesn't add anything to registry, it sets environemnt on current console.So the environement is valid for that console only.
I use cygwin on windows. SciTE can be used to build and execute. These options are present under Tools menu. Inorder to use gcc compiler, i added c:\cygwin\bin directory to path environment variable.
I just tested a simple cpp file. All works well. I am going to use SciTE till I find it inferior to anything else.
SciTE for windows
Its quite simple just download source of SciTE. SciTe source code includes Scitilla source also.
First build Scintilla library using nmake -f scintilla.mak from "scite168\scintilla\win32" directory.
And to build scite use nmake -f scite.mak from scite168\scite\win32 directory.
Make sure that you set the environment with vsvars32.bat in C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools directory. This is important, otherwise you may get an error that nmake is not a recognised command. And this batch file doesn't add anything to registry, it sets environemnt on current console. So run this batch file and then call these nmake commands from same console.
Then I use cygwin on windows. SciTE can be used to build and execute. These options are present under Tools menu. Inorder to use gcc compiler, you may need to add c:\cygwin\bin directory to path. Ofcourse you need to have gcc installed in cygwin environment.
I just tested a simple cpp file. All works well. I am going to use SciTE till I find a better choice.
SciTE Scitilla.org
Just today I came to know about scintilla.org.
Downloded SciTE for linux using GTK+. I am Gentoo 2006.0. First thought of looking for an ebuild, then relaised that is too much to expect.
Installation is damn simple. I didn't compile just tried binary version. Copied SciTE to /usr/local/bin and all properties files to /use/share/scite/
Experimented with cpp and py files. Ofcourse python integration would be netive thingi for this.
I happened to modify cpp.properties file to take ./ infront of executable file name.
Joined scintella intereset group.
My first post to that group is
"bash like shell expects ./ before executable to run.
cpp.propeties file line 283 need to be modified to like this
command.go.$(file.patterns.cplusplus)=./$(FileName)"
Let me see what comes back
Friday, March 24, 2006
Unified Extensible Firmware Interface
Forum released their UEFI 2 Specification a couple of months back. OK why I am writing about this now is because of Microsoft’s press release about Vista will not support EFI in initial phase. So I just want to focus some light on this subject.
The basic sequence that goes in booting a PC is, power on, load BIOS and then boot loaded and then Operating system. This is what we learned and experimented around since years. First time when you though of upgrading your BIOS, you would have got a doubt whether my PC supports BIOS upgrade though flash update or do I need to replace those funny chips. To go a bit deeper, what is BIOS doing on your box?
As you can think of every processor by virtue of hardware design can jump to particular location when it is powered on. It is not as simple as jumping, but to keep things simple just make an assumption of such feature. Then it got to find out some instructions there to run your computer. These instructions are important to build an environment where in various different components of your computer can be controlled. By then some fixed locations of your RAM are holding pointers to various device controls. So as a programmer that is your environment, schedule your tasks to leverage on this environment. But such a sophisticated program (typically operating system) consumes more footprint, which your BIOS chip doesn’t have. So BIOS need a position to jump into some location which has huge memory to feed in further instructions of operating system. Such a location is typically a mass storage device or hard disk or even a network interface card. Thus BIOS provides options to boot from floppy (this for traditional support only, can do much because of 1.44 MB limitation), cd-rom, hard disk, network, and even some new BIOS chips can understand USB flash sticks also. Mean basically BIOS need to understand how to initialize these devices and keep a place holder in RAM, so that when OS boots up it can utilize these placeholders either to reinitialize or use then to control devices.
Then what is boot loader? Now when you select hard disk option, there is some tricky thing here. There can be many hard disks and there can be many operating systems on these hard disks. BIOS solve this problem by assuming a fixed location on first hard disk which is called Master Boot Record (MBR) of your hard disk. MBR is a 512 byte block which points to operating selected. But for the operating system to boot up it requires some pre built binaries at specified location. Means kernel code will have idea about a file system that you are going to mount as root. It is this root file system that holds various small programs that help kernel initialize hardware and keep pointers.
All is good then why we need a change from BIOS? Of course the primary reason is aging. BIOS is developed in pre-historic times. Earlier it is used only to initialize and bootstrap the operating system. Later OS can reinitialize the interfaces again. But in recent times this phenomenon changed. The dependency on BIOS increased again due to advent of ACPI and hot plug stuff. This called for layered BIOS architecture.
Also BIOS, being a binary code, is specific to processor architecture. Mean different versions of BIOS are needed to boot different architecture families. To overcome this problem a byte coded BIOS is needed.
Then plug in support should be possible for BIOS. Right now additional boot options can be provided using BIOS boot specification API. And BIOS options are stored on CMOS which is a non volatile memory in addition to BIOS EEPROM. This complicated the stuff to customize the boot environment. That called for a modular architecture.
Open source community attempted to build Linux BIOS to overcome limitations of BIOS. But this is more of subject of hardware manufacturers than software. So a strong initiative from Intel kind of companies is envisaged. Thus came out EFI.
So what this can do so special is explained in much of technical terms in UEFI_2_Specification.pdf. I am going through this now. And want to write some simplistic gist out of this soon.
Thursday, March 09, 2006
My Gentoo 2006.0
Till that week end I couldn’t download the package. Now there is a special installer cum live cd for x86 architecture. I thought I will not have much fun this time. But actually I got lot more fun compared with last two years.
As I don’t have laptop with cd writer now, I happened to take help of internet café to burn the iso image. But unfortunately that CD didn’t work for me. CD got a sector error when it is about to start gdm. So nothing was moving after that white screen. I couldn’t believe it first time and tried couple of more times to conclude that it is problem with CD only.
Then thought of booting the from hard drive or USB hard disk. But my machine got old USB(1.1) stuff and even the USB drive is not bootable.
So I thought of using existing gentoo installation’s boot partition (32MB) to hold kernel and initrd binarirs. Then I thought I can point the root at some other ext3 partition. I don’t remember much but that didn’t work quite well. It was always ending up with loop path error. Only thing I could guess is to keep image file on same partition where kernel and initrd are located. By then my enthusiasm is slightly down. And I decided to try alternate methods to do the same exercise.
First I want to increase boot partition size, I am not aware how to do that online. So I thought I can quickly re install gentoo 2005 with increased boot partition. Something I missed even that didn’t work out. And while doing it during midnight I screwed up my MBR. So I couldn’t even boot to XP. Then I took help of Windows 2003 evaluation CD.
I tried to install Win20003 Server on hard disk where my Linux was there. So I get a clean slate on that front and also that fixes my MBR also. Anyway I don’t have key for Win2003 Server, but I know it does over write MBR the moment you select the partition to install Windows. All this exercise took whole night.
And by morning I thought I would Grub for NT. Created just one ext2 partition and took help of grub for NT. After tweaking hear and there in grub configuration file finally I could boot the cd image from hard disk. Rest of the details I will post with the screen shots of my gentoo 2006.0. I am thinking of using crossover office and work on gentoo 2006.0 for quite some time now. Let me hope gentoo supports me.
Friday, February 24, 2006
Windows XP DNS Cache problem
The problem is about DNS cache. When ever you visit a site from a browser or try to ping a hostname from command line, XP looks for “A (Host) Record” of that hostname in its DNS Cache.
DNS Cache can be accessed from command prompt using following command
C:\>ipconfig /displaydns
Here I listed typical entries. One of type CNAME and another of type A (Host) Record
www.math.harvard.edu
----------------------------------------
Record Name . . . . . : www.math.harvard.edu
Record Type . . . . . : 5
Time To Live . . . . : 9015
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : math.harvard.edu
stuff.techwhack.com
----------------------------------------
Record Name . . . . . : stuff.techwhack.com
Record Type . . . . . : 1
Time To Live . . . . : 4399
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 70.87.95.34
XP has its own algorithm to add items into cache. It normally adds records based on “Time To Live” parameter or based on frequency of access. If TTL is very small it doesn’t make any sense to add it to cache even though it is frequently accessed.
The problem I faced is with expired A (Host) Record entry in DNS cache. I have a domain account with Yahoo and hosting account with znetindia. I changed nameserver settings in my yahoo domain account to point to my new name server provided by znet. I left “A (Host) Records”, CNAME Records and MX Records as they were in Yahoo. I have new entries for them at my new nameserver with znet.
When I try to access my page say with the request http://sriharsha.net/ or http://www.sriharsha.net/ sometimes it takes me to my old starter webpage with Yahoo.
I got following of solutions to get around with this problem.
check for entries in DNS cache, if there are expired entries then consider flushing DNS cache by following command
"C:\ipconfig /flushdns"
If there are no entries in DNS cache try adding an entries at the end of
“c:\WINDOWS\system32\drivers\etc\hosts” file
70.85.149.228 sriharsha.net
70.85.17.215 mail.sriharsha.net
Try to ping your domain and check IP address. Based on that change your “A (Host) Records” and CNAME records in domain control panel
Also consider adding following two entries to registry key
HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Services\Dnscache\Parameters
Block XP from adding unresolved or failed (Negative) entries to cache
DWORD: MaxNegativeCacheTtl
Value: 0
Force XP to keep valid (Positive) entries only for specified time. This will be useful if your ISP/Domain registrar updates DNS entries more frequently than your XP DWORD:
MaxCacheTtl
Value: 14400
Wednesday, February 15, 2006
What is in IBM's new P6
So following is the update that ISA published about IBM's P6
For years, chipmakers have improved computer performance by shrinking the size of transistors, squeezing more of them into smaller spaces, and ratcheting up the speed at which they process instructions. Recently, the benefits have diminished as the chips’ power requirements and temperatures have risen.
To get around the problem, the industry has resorted to building two or more computing engines known as "cores" on a single chip and throttling back the clock speed to prevent a silicon meltdown. As a result, performance does increase, but it does not double, even with two computing cores.
IBM claims its upcoming Power6, which is multicore and designed for higher-end servers running the Unix operating system, was crafted from the ground up to run fast without major losses in power efficiency.
Power6 is expected to run somewhere between four and five gigahertz.
Can someone focus on it and post what is special with IBM's P6
Tuesday, January 24, 2006
Industrial Controllers
Many a times we debated on 96 MHz big endian processor and the operating system, Linux which we chose for this project.
Many players in the market still use a typical board with a 100 MHz processor.
Of course with industry standard compliance list like EMC, ESD, RF, Surge, Power etc. and stringent temperature (-40 to +70 degrees Celsius) and relative humidity requirements. And most importantly the heat dissipation factor which may cause the need of a fan.
What is that operating system which can meet all demands of a real-time controller.
Currently industry uses VXWorks, Nucleus PLUS, VRTX and recently some flavors of Linux like Monta Vista, RT-Linux. Of course there are so many proprietary custom made operating systems.
How do we boot the board? Traditionally it is done using TFTP boot. A TFTP server runs on a work station and is expected to be ON while the controllers are booting up. And applications are built to take the complete image while comprised of kernel, control engine, custom network stacks, process control applications etc.
Some controllers use on board flash to store boot code and kernel and basic services to receive and execute control applications. Recent hardware designs are done considering more on board flash, typically ranging from 4 MB to 64 MB. These boards got more RAM also, typically in the range of 16MB to 128MB.
Apart from this external compact flash interfaces are adding storage options to controller.
Hi speed compact flashes or micro drives can be added as per requirement. However the disadvantage here is number of read/write cycles and kind of hardware interface (parallel/PCMCIA etc.).
And newer boards are coming up with 100 Mega bits per seconds Ethernet controllers.
Of course it is needed because all most all IO networks of today got Ethernet variants.
With the addition/enhancements of these peripherals the CPU performance demands are increasing dramatically. More storage options and high speed Ethernet access added new challenges like bulk data management and faster memory access. More and more functional requirements are now met on controllers itself using embedded web servers, embedded databases and time synchronization modules.
But are these CPU’s, with their resources being managed by RTOS, capable enough to meet the real time demands without effecting basic operations like IO scanning, control execution and hardware monitoring tasks?
Recently the demand for thin but service rich operating systems is growing. Security is one more aspect that adds heavy computing routines to basic operating tasks list. Firewalls are part of controller design now. Embedded databases and NFS partitions are commonly used by many controllers for non critical storage purposes.
Advanced power management, online upgrade and Ethernet based mirroring demands more computing resources out of modern controllers.
I would like to do some detailed study on this. Are there any good links for this.
Saturday, September 03, 2005
Modbus TCP simulator
Thought of doing something quickly using VB6. Then ended up with limitaion of good threading library. Then thought of doing in VB.Net. Coded using MsFlexGrid controls. Found them looking very nice. All working fine for 15 minutes. Suddenly there is a red cross across the Grid. After 10 minutes another grid got the same. Then observed Microsoft already accepted that bug and I need to hunt for a patch to fix it. Left that option too.
Then thought of doing in VC6 using MFC Dialog. Another problem, I want to simulate 64 AI, 64 AO, 64 DO and 64 DI. So thought of using text boxes for AI and AO and CheckBoxes for DI and DO. Another limitation, I cant have more than 255 controls on a Dialog box. As all frames are inherited from Dialog boxes no option left.
Then decided to use VB UI and VC library. I am more biased towards pthread library (ftp://sources.redhat.com/pub/pthreads-win32) than Windows. Just decided to use Win API instead of going through big loop of ATL and COM stuff.
Interesting I got good working Simulator. Its not complete but easy to enhance.
I have VB6 application which essentially has code to export handles of controls to vc library.
Nice Coding practice for byte packing
My intention to find out healthiness of Target with minimum overhead. Instead of trying to call connect i want to use ICMP protocols like ping. While doing that i thought why cant I do event ARP. Then started looking for some sample code for ARP.
I found Blacky Room at fdin. He got simple codes for lower level Ethernet Protocols. Ofcourse the site is in Japanese language. But can access code samples.
One good thing i liked at these code samples is the way packing of bytes is done before calling send. In the following function , buffer is a character array. And eth and arp are just pointers.
Iinitially these pointers are just addressed to respective positions. Then as members are filled buffer is ready.
Normally i do other way around. First i update structures and then assign to each byte of buffer like buf[0] = arp->arp_hrd.
But this method essentially eliminates second copy and more secure.
int send_arprequest(int sock, struct dev *dev, struct addr *src, struct addr *dst)
{
struct sockaddr_ll sll;
struct ether_header *eth;
struct ether_arp *arp;
char buf[sizeof(struct ether_header) + sizeof(struct ether_arp)];
memset(&sll, 0, sizeof(sll));
sll.sll_family = PF_PACKET;
sll.sll_ifindex = dev->index;
sll.sll_halen = ETH_ALEN;
memcpy(&sll.sll_addr, dst->mac, ETH_ALEN);
memset(buf, 0, sizeof(buf));
eth = (struct ether_header *)buf;
arp = (struct ether_arp *)((char *)eth + sizeof(struct ether_header));
/* arp header */
arp->arp_hrd = htons(ARPHRD_ETHER);
arp->arp_pro = htons(ETH_P_IP);
arp->arp_hln = ETH_ALEN;
arp->arp_pln = IP_LEN;
arp->arp_op = htons(ARPOP_REQUEST);
memcpy(arp->arp_sha, src->mac, ETH_ALEN);
memcpy(arp->arp_spa, &(src->ip), IP_LEN);
memset(arp->arp_tha, 0, ETH_ALEN);
memcpy(arp->arp_tpa, &(dst->ip), IP_LEN);
/* ether_header */
memcpy(eth->ether_shost, src->mac, ETH_ALEN);
memcpy(eth->ether_dhost, dst->mac, ETH_ALEN);
eth->ether_type = htons(ETH_P_ARP);
/* send to arp request packet */
return sendto(sock, buf, sizeof(buf), 0, (struct sockaddr *)&sll, sizeof(sll));
}