1fb81684fSAxel Dörfler /* 2293ed4feSAxel Dörfler * Copyright 2006-2008, Haiku, Inc. All Rights Reserved. 3fb81684fSAxel Dörfler * Distributed under the terms of the MIT License. 4fb81684fSAxel Dörfler * 5fb81684fSAxel Dörfler * Authors: 6fb81684fSAxel Dörfler * Axel Dörfler, axeld@pinc-software.de 7fb81684fSAxel Dörfler */ 8fb81684fSAxel Dörfler #ifndef AUTOCONFIG_LOOPER_H 9fb81684fSAxel Dörfler #define AUTOCONFIG_LOOPER_H 10fb81684fSAxel Dörfler 11fb81684fSAxel Dörfler 12fb81684fSAxel Dörfler #include <Looper.h> 13fb81684fSAxel Dörfler #include <Messenger.h> 14fb81684fSAxel Dörfler #include <String.h> 15*8a9d5e34SRene Gollent #include <netinet6/in6.h> 16fb81684fSAxel Dörfler 17293ed4feSAxel Dörfler class AutoconfigClient; 18fb81684fSAxel Dörfler 19fb81684fSAxel Dörfler class AutoconfigLooper : public BLooper { 20fb81684fSAxel Dörfler public: 21293ed4feSAxel Dörfler AutoconfigLooper(BMessenger target, 22293ed4feSAxel Dörfler const char* device); 23fb81684fSAxel Dörfler virtual ~AutoconfigLooper(); 24fb81684fSAxel Dörfler 25fb81684fSAxel Dörfler virtual void MessageReceived(BMessage* message); 26fb81684fSAxel Dörfler 27fb81684fSAxel Dörfler BMessenger Target() const { return fTarget; } 28fb81684fSAxel Dörfler 29fb81684fSAxel Dörfler private: 30293ed4feSAxel Dörfler void _RemoveClient(); 31*8a9d5e34SRene Gollent void _ConfigureIPv4(); 32*8a9d5e34SRene Gollent void _ConfigureIPv6LinkLocal(bool add); 33*8a9d5e34SRene Gollent bool _AddIPv6LinkLocal(int socket, const in6_addr &); 34*8a9d5e34SRene Gollent void _RemoveIPv6LinkLocal(int socket, const in6_addr &); 35fb81684fSAxel Dörfler void _ReadyToRun(); 36fb81684fSAxel Dörfler 37fb81684fSAxel Dörfler BMessenger fTarget; 38fb81684fSAxel Dörfler BString fDevice; 39293ed4feSAxel Dörfler AutoconfigClient* fCurrentClient; 40*8a9d5e34SRene Gollent uint8 fCurrentMac[6]; 41fb81684fSAxel Dörfler }; 42fb81684fSAxel Dörfler 43fb81684fSAxel Dörfler #endif // AUTOCONFIG_LOOPER_H 44