diff --git a/app-misc/irtrans-irclient/ChangeLog b/app-misc/irtrans-irclient/ChangeLog index 30e8eca9..468d94f1 100644 --- a/app-misc/irtrans-irclient/ChangeLog +++ b/app-misc/irtrans-irclient/ChangeLog @@ -2,6 +2,11 @@ # Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ + 06 Aug 2008; Mario Fetka + +files/irclient-5.11.04-ip_assign-1.patch, + irtrans-irclient-5.11.04.ebuild: + add ip_assign + 02 Aug 2008; Mario Fetka ++, -irtrans-irclient-5.11.08.ebuild, -irtrans-irclient-5.11.10.ebuild: Drop old diff --git a/app-misc/irtrans-irclient/Manifest b/app-misc/irtrans-irclient/Manifest index cc6c6609..8d7e57ef 100644 --- a/app-misc/irtrans-irclient/Manifest +++ b/app-misc/irtrans-irclient/Manifest @@ -1,11 +1,12 @@ +AUX irclient-5.11.04-ip_assign-1.patch 16659 RMD160 966bb00cb17ab61156509848d6ab22735a083def SHA1 43097f77796360d3c3a459df1ac93a4f7026e17e SHA256 a2042618e026f1f5dff8ab0566d2dc1e0f8626e9ba7ff26afc56b358b317dbd9 AUX irtrans-irclient-5.9.01-missing-include.diff 363 RMD160 fff180d91331e6a0b1939e320a5ee7854bae2de6 SHA1 6a0b103619a802ceb541cee15d8436ac32e995b0 SHA256 48753faa1661c2519dc55fcb95da93319e36cebdc5ea48ece4f633b36fdcc288 AUX irtrans-irclient-5.9.04-missing-include.diff 363 RMD160 6cd48a93958f35454d17aaedce43bc1d95ad2cb6 SHA1 2a6a4230c1a2c754c0ffc29c4aabe727897cc054 SHA256 e74521300f5a6795232fa6465226cc0c261305eb2ea55f944f3911dd1e958d4d DIST irclient-src-5.11.04.tar.gz 44123 RMD160 d756a3655b82085430e26e194271ddc1504e2844 SHA1 e8b9bcaa74bcbc01ed92552d77e9902c01b7ff16 SHA256 9e31bbdfdfd883e91c15b50c1916b93c8db680ad07a4e48006afe8e2ad8de4f9 DIST irserver-src-5.9.04.tar.gz 143574 RMD160 acea7223dea66d8be97e716d0a1aa2f128f98176 SHA1 d3f6687785bab24abb5cd5019ef5d6892ced7b1f SHA256 9f3877d6c8fcc67b5198bb05c2ffab24116121c09124f744eb9d795e925485a9 DIST irserver-src-5.9.07.tar.gz 143809 RMD160 747eeb70f5f869f689517250bcfd75fe0af1d924 SHA1 49210d5adebba6852439cfb4e640434303b0a83f SHA256 2416be01cc7f2bc32fc71407d503c1c285987d32e0dab905921c639d2fd79702 -EBUILD irtrans-irclient-5.11.04.ebuild 1053 RMD160 081f12efa0ee1eb9ee64ed61fe098952456174ac SHA1 afeb292e32d3ac6cb2d363d6aab2269dbfa4cfd6 SHA256 6601872b750e8915c070610733bb3c2fb246d26d6455f22307bbe5471d8ef030 +EBUILD irtrans-irclient-5.11.04.ebuild 1527 RMD160 3736455a857915d833fc327078408fc83960d324 SHA1 36b73282b8a2aea36a766f490a3a49b85ddef5db SHA256 2a80964493da1e447f8ad37d37ecdd1f80890a9d592030607f5bef4586ca08d1 EBUILD irtrans-irclient-5.9.04.ebuild 853 RMD160 21e44943249aa1ae36822b10b2f174ecd7db4105 SHA1 1d5663b011858016945b2d30f4848c6707f16cea SHA256 0f6a4cad7da18eb91fffbff0435e6498b6c4cafbb2fe75c0e816662724c1dd92 EBUILD irtrans-irclient-5.9.07-r1.ebuild 967 RMD160 dea515aae740779ae462880430e629eaf08224a4 SHA1 0dd219b329773c0fe49d5708f00f2c19cbf9fccb SHA256 c483c1644d2b6882114b15173ee4f93b3273c48418f3be5ff1fc013add49e791 EBUILD irtrans-irclient-5.9.07.ebuild 836 RMD160 e8f9affd0ffbbc19aa15e921058a08d33035d8cc SHA1 e44e487e62c2e9ec8d1c22542034fd491967fa1c SHA256 623be9defbe24609c81d60b71699fdf3e95bf5af3ae233997339ce1b73bbe64c -MISC ChangeLog 1379 RMD160 d24b7fa0c11f7a28d1588237baa9309203870551 SHA1 10a3c1110559aedb636bc565258555e628b4f945 SHA256 1d3944d78e4d32891b6ce139a04ad35a127e2c6a67d72520ed6b891ad274a9b8 +MISC ChangeLog 1527 RMD160 d10541f0e0a5aa126c66a580aef527e560be3b9d SHA1 d1e4e39aa61c126e2484e07b6b057a4b69822189 SHA256 e48769b3308741bdec560742350759430da48c913475931b07f3bc067e8db039 MISC metadata.xml 170 RMD160 645927a396fdc21cdeb089fe42c5397332420ea6 SHA1 ac7f48a14fec325926f9ce1be8fbf1f311b4f2e4 SHA256 d797a2ec6f9dc516c9f9c1a758ee87ad3e8c43101b5dc76c2f872d5bd4639b42 diff --git a/app-misc/irtrans-irclient/files/irclient-5.11.04-ip_assign-1.patch b/app-misc/irtrans-irclient/files/irclient-5.11.04-ip_assign-1.patch new file mode 100644 index 00000000..43977e07 --- /dev/null +++ b/app-misc/irtrans-irclient/files/irclient-5.11.04-ip_assign-1.patch @@ -0,0 +1,662 @@ +Submitted By: Mario Fetka (mario dot fetka at gmail dot com) +Date: 2008-08-06 +Initial Package Version: 5.11.04 +Origin: http://irtrans.de irserver package 5.09.07 +Upstream Status: unknown +Description: readd ip_assign to the irclient package + +diff -Naur irclient-5.11.04.orig/ip_assign.c irclient-5.11.04/ip_assign.c +--- irclient-5.11.04.orig/ip_assign.c 1970-01-01 00:00:00.000000000 +0000 ++++ irclient-5.11.04/ip_assign.c 2007-08-19 21:03:25.000000000 +0000 +@@ -0,0 +1,601 @@ ++/* ++ * Copyright (c) 2007, IRTrans GmbH ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * * Neither the name of IRTrans GmbH nor the ++ * names of its contributors may be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY IRTrans GmbH ``AS IS'' AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL IRTrans GmbH BE LIABLE FOR ANY ++ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++ ++ ++#ifdef WIN32 ++ ++#include ++#include ++ ++#else ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++ ++typedef int SOCKET; ++typedef void* WSAEVENT; ++#define closesocket close ++#endif ++ ++#include ++ ++typedef unsigned char byte; ++ ++#ifdef WIN32 ++typedef unsigned int uint; ++typedef unsigned short ushort; ++#endif ++ ++typedef struct { ++ byte op; ++ byte htype; ++ byte hlen; ++ byte hops; ++ uint xid; ++ ushort secs; ++ ushort flags; ++ uint client_ip; ++ uint own_ip; ++ uint server_ip; ++ uint relay_ip; ++ byte client_mac[16]; ++ byte server_name[64]; ++ byte file[128]; ++ byte opt_header[13]; ++ byte options[299]; ++} DHCP_REQUEST; ++ ++ ++typedef struct { ++ uint ip; ++ uint netmask; ++ uint gateway; ++ char password[30]; ++ byte dhcp_flag; ++} IP_PARAM; ++ ++typedef struct { ++ uint ip; ++ byte mac[6]; ++ char firmware[10]; ++ char ir_firmware[10]; ++ byte dhcp_flag; ++} DEVICE_ENTRY; ++ ++ ++ ++#ifdef WIN32 ++WSAEVENT IrtLanEvent; ++#endif ++ ++ ++SOCKET snd_socket[32],rcv_socket; ++ ++int open_sockets (uint ip[],int cnt); ++void new_devicequery (byte msg,uint srvadr,DHCP_REQUEST *req); ++void new_dhcpset (byte msg,uint srvadr,byte mac[],char password[],DHCP_REQUEST *req); ++void new_ipset (byte msg,uint srvadr,byte mac[],uint ip,uint nm,uint gw,char password[],DHCP_REQUEST *req); ++void SendQuery (uint ips[],int cnt); ++int ReadDevices (DEVICE_ENTRY *dev,int cnt); ++int StoreDevice (DEVICE_ENTRY *dev,DHCP_REQUEST *req); ++void read_ip_parameter (IP_PARAM *ip); ++void SetIP (uint ips[],int cnt,DEVICE_ENTRY *dev,IP_PARAM *ip); ++int GetOwnIP (uint ips[]); ++int GetInterfaces (uint ips[]); ++ ++ ++int main (int argc,char *argv[]) ++ ++{ ++ int res,i,choice; ++ char nm[100]; ++ struct in_addr iadr; ++ IP_PARAM ip; ++ DEVICE_ENTRY irtrans[256]; ++ int device_count; ++ uint ip_adr[32]; ++ int ip_count = 0; ++ ++ ++#ifdef WIN32 ++ int err; ++ WORD wVersionRequired; ++ WSADATA wsaData; ++ wVersionRequired = MAKEWORD(2,2); ++ err = WSAStartup(wVersionRequired, &wsaData); ++ if (err != 0) return (1); ++#endif ++ ++ argc++; ++ for (;--argc > 2;argv++) { // Process all Command Line Arguments ++ if (!strcmp (argv[1],"-interface")) { ++ argc--; ++ argv++; ++ ip_adr[0] = inet_addr (argv[1]); ++ ip_count = 1; ++ continue; ++ } ++ ++ } ++ ++ ++ if (!ip_count) { ++ ip_count = GetOwnIP (ip_adr); ++ } ++ ++ for (i=0;i < ip_count;i++) { ++ iadr.s_addr = ip_adr[i]; ++ if (!i) printf ("\nOwn Interfaces / IPs: %s\n",inet_ntoa(iadr)); ++ else printf (" %s\n",inet_ntoa(iadr)); ++ } ++ ++ printf ("\n"); ++ res = open_sockets (ip_adr,ip_count); ++ ++ ++ if (res) { ++ printf ("Open socket error: %d [%d]\n",res,errno); ++ perror (NULL); ++ exit (-1); ++ } ++ ++ while (1) { ++ SendQuery (ip_adr,ip_count); ++ ++ memset (irtrans,0,sizeof (irtrans)); ++ device_count = ReadDevices (irtrans,ip_count); ++ ++ if (!device_count) { ++ printf ("No IRTrans Ethernet device(s) found\n"); ++ exit (0); ++ } ++ ++ ++ printf ("\n%2d IRTrans Ethernet device(s) found:\n",device_count); ++ printf ("----------------------------------------------------------------\n"); ++ ++ for (i=0;i < device_count;i++) { ++ iadr.s_addr = irtrans[i].ip; ++ ++ if (irtrans[i].dhcp_flag == 1) strcpy (nm,"DHCP"); ++ else nm[0] = 0; ++ printf ("%2d %02x-%02x-%02x-%02x-%02x-%02x %-15s %s %8s %s\n",i+1,irtrans[i].mac[0],irtrans[i].mac[1],irtrans[i].mac[2], ++ irtrans[i].mac[3],irtrans[i].mac[4],irtrans[i].mac[5],inet_ntoa(iadr),irtrans[i].firmware,irtrans[i].ir_firmware,nm); ++ } ++ printf ("----------------------------------------------------------------\n"); ++ ++ ++ printf ("Please select device to use (0 = Exit) "); ++ fflush (stdout); ++ do { ++ fgets (nm,sizeof (nm),stdin); ++ choice = atoi (nm); ++ } while (nm[0] < '0'); ++ ++ if (!choice) exit (0); ++ ++ read_ip_parameter (&ip); ++ ++ SetIP (ip_adr,ip_count,irtrans + choice-1,&ip); ++ } ++ ++ ++ return (0); ++} ++ ++ ++int GetOwnIP (uint ips[]) ++{ ++ char nm[100]; ++ int count = 0; ++ ++#ifdef WIN32 ++ struct hostent *host; ++ ++ gethostname (nm,100); ++ ++ host = gethostbyname (nm); ++ ++ while (host->h_addr_list[count]) { ++ if (host->h_addr_list[count][0] != 127) break; ++ } ++ ips[0] = *((uint *)host->h_addr_list[count]); ++ count = 1; ++#else ++ count = GetInterfaces (ips); ++#endif ++ return (count); ++} ++ ++ ++#ifndef WIN32 ++int GetInterfaces (uint ips[]) ++{ ++ int i,j,cnt; ++ FILE *fp; ++ char *pnt,ln[256]; ++ struct sockaddr_in *sinp; ++ struct ifreq ifr; ++ int s; /* Socket */ ++ char local_ip_addr[16]; ++ ++ fp = fopen ("/proc/net/dev","r"); ++ if (!fp) return (0); ++ s = socket(AF_INET, SOCK_DGRAM, 0); ++ ++ cnt = 0; ++ pnt = fgets (ln,sizeof (ln),fp); ++ while (pnt) { ++ i = 0; ++ while (ln[i] == ' ') i++; ++ if (!memcmp (ln+i,"eth",3)) { ++ j = i; ++ while ((ln[j] >= '0' && ln[j] <= '9') || (ln[j] >= 'a' && ln[j] <= 'z') || (ln[j] >= 'A' && ln[j] <= 'Z')) j++; ++ ln[j] = 0; ++ memset (&ifr,0,sizeof (ifr)); ++ strcpy(ifr.ifr_name, ln+i); ++ ioctl(s, SIOCGIFADDR, &ifr); ++ sinp = (struct sockaddr_in*)&ifr.ifr_addr; ++ ips[cnt++] = sinp->sin_addr.s_addr; ++ } ++ pnt = fgets (ln,sizeof (ln),fp); ++ } ++ ++ close (s); ++ fclose (fp); ++ ++ return (cnt); ++} ++#endif ++ ++ ++void SetIP (uint server_ip[],int cnt,DEVICE_ENTRY *dev,IP_PARAM *ip) ++{ ++ int i; ++ DHCP_REQUEST req; ++ ++ for (i=0;i < cnt;i++) { ++ if (ip->dhcp_flag) new_dhcpset (190,server_ip[i],dev->mac,ip->password,&req); ++ ++ else new_ipset (189,server_ip[i],dev->mac,ip->ip,ip->netmask,ip->gateway,ip->password,&req); ++ ++ send (snd_socket[i],(char *)&req,sizeof (DHCP_REQUEST),0); ++ } ++} ++ ++void read_ip_parameter (IP_PARAM *ip) ++{ ++ char nm[100]; ++ ++ memset (ip,0,sizeof (IP_PARAM)); ++ ++ printf ("\n\nConfigure device for DHCP (Y/N) ? "); ++ fflush (stdout); ++ fgets (nm,sizeof (nm),stdin); ++ printf ("\n"); ++ ++ if (*nm == 'Y' || *nm == 'y') ip->dhcp_flag = 1; ++ else { ++ do { ++ printf ("\nEnter IP Address: "); ++ fflush (stdout); ++ fgets (nm,sizeof (nm),stdin); ++ ip->ip = inet_addr (nm); ++ } while (ip->ip == INADDR_NONE); ++ do { ++ printf ("\nEnter Netmask : "); ++ fflush (stdout); ++ fgets (nm,sizeof (nm),stdin); ++ ip->netmask = inet_addr (nm); ++ } while (ip->netmask == INADDR_NONE); ++ do { ++ printf ("\nDefault Gateway : "); ++ fflush (stdout); ++ fgets (nm,sizeof (nm),stdin); ++ ip->gateway = inet_addr (nm); ++ } while (ip->gateway == INADDR_NONE); ++ } ++ ++ printf ("\n\nEnter device password: "); ++ fflush (stdout); ++ fgets (ip->password,8,stdin); ++ ++ printf ("\n"); ++} ++ ++void SendQuery (uint ip_adr[],int cnt) ++{ ++ int i; ++ DHCP_REQUEST req; ++ ++ for (i=0;i < cnt;i++) { ++ new_devicequery (187,ip_adr[i],&req); ++ send (snd_socket[i],(char *)&req,sizeof (DHCP_REQUEST),0); ++ } ++} ++ ++ ++int ReadDevices (DEVICE_ENTRY *dev,int ipcnt) ++{ ++ int i; ++ DHCP_REQUEST req; ++ int res,cnt = 0; ++ ++#ifndef WIN32 ++ fd_set events; ++ int maxfd,wait; ++ struct timeval tv; ++#endif ++ ++#ifdef WIN32 ++ IrtLanEvent = WSACreateEvent (); ++ WSAEventSelect (rcv_socket, IrtLanEvent,FD_READ); ++#endif ++ ++ while (1) { ++ ++#ifdef WIN32 ++ res = WaitForSingleObject (IrtLanEvent,5000); ++ if (res == WAIT_TIMEOUT) break; ++ ResetEvent (IrtLanEvent); ++ ++#else ++ ++ FD_ZERO (&events); ++ ++ FD_SET (rcv_socket,&events); ++ maxfd = rcv_socket + 1; ++ ++ tv.tv_sec = 1; ++ tv.tv_usec = 0; ++ ++ wait = select (maxfd,&events,NULL,NULL,&tv); ++ if (!wait) break; ++#endif ++ res = recv (rcv_socket,(char *)&req,sizeof (req),0); ++ cnt += StoreDevice (dev + cnt,&req); ++ i = 0; ++ while (i < (cnt - 1)) { ++ if (!memcmp (dev[i].mac,dev[cnt-1].mac,6)) break; ++ i++; ++ } ++ if (i < (cnt - 1)) cnt--; ++ ++ } ++ return (cnt); ++} ++ ++ ++int StoreDevice (DEVICE_ENTRY *dev,DHCP_REQUEST *req) ++{ ++ if (req -> op != 1) return (0); ++ ++ if (req -> opt_header[0] != 99 || req -> opt_header[1] != 130 || req -> opt_header[2] != 83 || req -> opt_header[3] != 99) return (0); ++ if (req -> opt_header[4] != 53 || req -> opt_header[5] != 1 || req -> opt_header[6] != 188 || req -> opt_header[7] != 0xe9) return (0); ++ ++ if (req -> opt_header[9] != 0x78 || req -> opt_header[10] != 0xa3 || req -> opt_header[11] != 0x8b || req -> opt_header[12] != 0x84) return (0); ++ ++ ++ if (req -> client_mac[0] != 0 || req -> client_mac[1] != 0x50 || req -> client_mac[2] != 0xC2 || ++ req -> client_mac[3] != 0x52 || (req -> client_mac[4] & 0xf0) != 0x70) return (0); ++ ++ ++ dev->ip = req -> client_ip; ++ memcpy (dev->mac,req -> client_mac,6); ++ dev->dhcp_flag = req->options[0]; ++ memcpy (dev->firmware,req->options+1,8); ++ if (req -> opt_header[8] == 23) memcpy (dev->ir_firmware,req->options+9,8); ++ ++ return (1); ++} ++ ++ ++void new_dhcpset (byte msg,uint srvadr,byte mac[],char password[],DHCP_REQUEST *req) ++{ ++ int i,pos; ++ ++ memset (req,0,sizeof (DHCP_REQUEST)); ++ ++ req->op = 2; ++ req->htype = 1; ++ req->hlen = 6; ++ req->hops = 0; ++ req->xid = htonl(0xaabbccdd); ++ req->secs = 0; ++ req->flags = htons (0x8000); ++ req->server_ip = srvadr; ++ memcpy (req->client_mac,mac,6); ++ ++ req->opt_header[0] = 99; ++ req->opt_header[1] = 130; ++ req->opt_header[2] = 83; ++ req->opt_header[3] = 99; ++ req->opt_header[4] = 53; ++ req->opt_header[5] = 1; ++ req->opt_header[6] = msg; ++ req->opt_header[7] = 233; ++ req->opt_header[8] = 4; ++ req->opt_header[9] = 0xac; ++ req->opt_header[10] = 0x75; ++ req->opt_header[11] = 0x20; ++ req->opt_header[12] = 0xbf; ++ ++ pos = 0; ++ req->options[pos++] = 234; ++ req->options[pos++] = strlen (password) + 1; ++ ++ for (i=0;i < (int)strlen (password);i++) req->options[pos++] = password[i]; ++ req->options[pos++] = 0; ++ req->options[pos++] = 255; ++} ++ ++void new_ipset (byte msg,uint srvadr,byte mac[],uint ip,uint nm,uint gw,char password[],DHCP_REQUEST *req) ++{ ++ int i,pos; ++ ++ memset (req,0,sizeof (DHCP_REQUEST)); ++ ++ req->op = 2; ++ req->htype = 1; ++ req->hlen = 6; ++ req->hops = 0; ++ req->xid = htonl(0xaabbccdd); ++ req->secs = 0; ++ req->flags = htons (0x8000); ++ req->server_ip = srvadr; ++ req->own_ip = ip; ++ memcpy (req->client_mac,mac,6); ++ ++ req->opt_header[0] = 99; ++ req->opt_header[1] = 130; ++ req->opt_header[2] = 83; ++ req->opt_header[3] = 99; ++ req->opt_header[4] = 53; ++ req->opt_header[5] = 1; ++ req->opt_header[6] = msg; ++ req->opt_header[7] = 233; ++ req->opt_header[8] = 4; ++ req->opt_header[9] = 0xac; ++ req->opt_header[10] = 0x75; ++ req->opt_header[11] = 0x20; ++ req->opt_header[12] = 0xbf; ++ ++ pos = 0; ++ req->options[pos++] = 1; // Subnetmask ++ req->options[pos++] = 4; ++ memcpy (req->options+pos,&nm,4); ++ pos += 4; ++ ++ req->options[pos++] = 3; // Default Gateway ++ req->options[pos++] = 4; ++ memcpy (req->options+pos,&gw,4); ++ pos += 4; ++ ++ req->options[pos++] = 234; ++ req->options[pos++] = strlen (password) + 1; ++ ++ for (i=0;i < (int)strlen (password);i++) req->options[pos++] = password[i]; ++ req->options[pos++] = 0; ++ req->options[pos++] = 255; ++ ++} ++ ++void new_devicequery (byte msg,uint srvadr,DHCP_REQUEST *req) ++{ ++ memset (req,0,sizeof (DHCP_REQUEST)); ++ ++ req->op = 2; ++ req->htype = 1; ++ req->hlen = 6; ++ req->hops = 0; ++ req->xid = htonl(0xaabbccdd); ++ req->secs = 0; ++ req->flags = htons (0x8000); ++ req->server_ip = srvadr; ++ req->client_mac[0] = 0xff; ++ req->client_mac[1] = 0xff; ++ req->client_mac[2] = 0xff; ++ req->client_mac[3] = 0xff; ++ req->client_mac[4] = 0xff; ++ req->client_mac[5] = 0xff; ++ ++ req->opt_header[0] = 99; ++ req->opt_header[1] = 130; ++ req->opt_header[2] = 83; ++ req->opt_header[3] = 99; ++ req->opt_header[4] = 53; ++ req->opt_header[5] = 1; ++ req->opt_header[6] = msg; ++ req->opt_header[7] = 233; ++ req->opt_header[8] = 4; ++ req->opt_header[9] = 0x78; ++ req->opt_header[10] = 0xa3; ++ req->opt_header[11] = 0x8b; ++ req->opt_header[12] = 0x84; ++ ++ req->options[0] = 255; ++} ++ ++int open_sockets (uint ip[],int cnt) ++{ ++ int res,i; ++ struct sockaddr_in iadr; ++ struct sockaddr_in serv_addr; ++ ++ rcv_socket = socket (PF_INET,SOCK_DGRAM,0); ++ if (rcv_socket < 0) return (2); ++ ++ memset (&serv_addr,0,sizeof (serv_addr)); ++ serv_addr.sin_family = AF_INET; ++ serv_addr.sin_addr.s_addr = INADDR_ANY; ++ serv_addr.sin_port = htons (67); ++ ++ res = bind (rcv_socket,(struct sockaddr *)&serv_addr,sizeof (serv_addr)); ++ if (res) return (3); ++ ++ ++ for (i=0;i < cnt;i++) { ++ snd_socket[i] = socket (PF_INET,SOCK_DGRAM,0); ++ if (snd_socket[i] < 0) return (4); ++ res = 1; ++ setsockopt (snd_socket[i],SOL_SOCKET,SO_BROADCAST,(char *)&res,sizeof (int)); ++ ++ ++#ifndef WIN32 ++ memset (&serv_addr,0,sizeof (serv_addr)); ++ serv_addr.sin_family = AF_INET; ++ serv_addr.sin_addr.s_addr = ip[i]; ++ serv_addr.sin_port = 0; ++ ++ res = bind (snd_socket[i],(struct sockaddr *)&serv_addr,sizeof (serv_addr)); ++ if (res) return (6); ++#endif ++ ++ memset (&iadr,0,sizeof (struct sockaddr)); ++ iadr.sin_family = AF_INET; ++ iadr.sin_addr.s_addr = INADDR_BROADCAST; ++ iadr.sin_port = htons (68); ++ ++ if (connect (snd_socket[i],(struct sockaddr *)&iadr,sizeof (struct sockaddr_in)) < 0) return (5); ++ } ++ ++ return (0); ++} ++ +diff -Naur irclient-5.11.04.orig/makefile irclient-5.11.04/makefile +--- irclient-5.11.04.orig/makefile 2008-08-06 20:11:16.000000000 +0000 ++++ irclient-5.11.04/makefile 2008-08-06 20:27:31.000000000 +0000 +@@ -15,6 +15,11 @@ + OBJS64 = $(patsubst %,$(ODIR64)/%,$(_OBJS)) + OBJSARM = $(patsubst %,$(ODIRARM)/%,$(_OBJS)) + ++_OBJS_IP = ip_assign.o ++OBJS_IP = $(patsubst %,$(ODIR)/%,$(_OBJS_IP)) ++OBJS64_IP = $(patsubst %,$(ODIR64)/%,$(_OBJS_IP)) ++OBJSARM_IP = $(patsubst %,$(ODIRARM)/%,$(_OBJS_IP)) ++ + + irclient: $(OBJS) + $(CC) $(CFLAGS) $(OBJS) -m32 -o irclient $(LDFLAGS) +@@ -26,15 +31,29 @@ + $(CC) $(CFLAGS) $(OBJSARM) -o irclient $(LDFLAGS) + + +-all: irclient irclient64 ++ip_assign: $(OBJS_IP) ++ $(CC) $(CFLAGS) $(OBJS_IP) -m32 -o ip_assign $(LDFLAGS) ++ ++ip_assign64: $(OBJS64_IP) ++ $(CC) $(CFLAGS) -DX64 $(OBJS64_IP) -m64 -o ip_assign64 $(LDFLAGS) ++ ++ip_assign_arm: $(OBJSARM_IP) ++ $(CC) $(CFLAGS) $(OBJSARM_IP) -o ip_assign $(LDFLAGS) + +-arm: irclient_arm ++ ++all: irclient irclient64 ip_assign ip_assign64 ++ ++arm: irclient_arm ip_assign_arm + + + clean: +- -rm $(OBJS) +- -rm $(OBJS64) +- -rm $(OBJSARM) ++ -rm -f $(OBJS) ++ -rm -f $(OBJS64) ++ -rm -f $(OBJSARM) ++ ++ -rm -f $(OBJS_IP) ++ -rm -f $(OBJS64_IP) ++ -rm -f $(OBJSARM_IP) + + + $(ODIR)/%.o: %.c flash.h errcode.h network.h remote.h makefile diff --git a/app-misc/irtrans-irclient/irtrans-irclient-5.11.04.ebuild b/app-misc/irtrans-irclient/irtrans-irclient-5.11.04.ebuild index 47b22f96..b4f2e9c0 100644 --- a/app-misc/irtrans-irclient/irtrans-irclient-5.11.04.ebuild +++ b/app-misc/irtrans-irclient/irtrans-irclient-5.11.04.ebuild @@ -17,6 +17,13 @@ IUSE="" DEPEND="virtual/libc" +src_unpack() { + unpack ${A} + cd "${WORKDIR}" + + epatch "${FILESDIR}/${PN}"-5.11.04-ip_assign-1.patch +} + src_compile() { append-flags -DLINUX @@ -24,27 +31,34 @@ src_compile() { # Set sane defaults (arm target has no -D flags added) irbuild=irclient_arm irclient=irclient + ipbuild=ip_assign_arm + ip_assign=ip_assign # change variable by need if use x86 ; then irbuild=irclient + ipbuild=ip_assign elif use amd64 ; then irbuild=irclient64 irclient=irclient64 - elif use arm ; then - irbuild=irclient_arm + ipbuild=ip_assign64 + ip_assign=ip_assign64 fi # Some output for bugreport einfo "CFLAGS=\"${CFLAGS}\"" - einfo "Build Target=\"${irbuild}\"" - einfo "Build Binary=\"${irclient}\"" + einfo "Build client Target=\"${irbuild}\"" + einfo "Build cleint Binary=\"${irclient}\"" + einfo "Build ip_assign Target=\"${ipbuild}\"" + einfo "Build ip_assign Binary=\"${ip_assign}\"" # Build emake CXX="$(tc-getCXX)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" "${irbuild}" || die "emake irclient failed" + emake CXX="$(tc-getCXX)" CC="$(tc-getCC)" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" "${ipbuild}" || die "emake ip_assign failed" } src_install() { newbin "${WORKDIR}/${irclient}" irclient + newbin "${WORKDIR}/${ip_assign}" ip_assign }